((typeof exports !== "undefined" && exports !== null) ? exports : this)["Viz"] = function(src, format) {
  var Module = {};
  Module["return"] = "";
  Module["print"] = function(text) {
    Module["return"] += text + "\n";
  }
// Note: Some Emscripten settings will significantly limit the speed of the generated code.
// Note: Some Emscripten settings may limit the speed of the generated code.
try {
  this['Module'] = Module;
} catch(e) {
  this['Module'] = Module = {};
}
// The environment setup code below is customized to use Module.
// *** Environment setup code ***
var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
var ENVIRONMENT_IS_WEB = typeof window === 'object';
var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if (ENVIRONMENT_IS_NODE) {
  // Expose functionality in the same simple way that the shells work
  // Note that we pollute the global namespace here, otherwise we break in node
  Module['print'] = function(x) {
    process['stdout'].write(x + '\n');
  };
  Module['printErr'] = function(x) {
    process['stderr'].write(x + '\n');
  };
  var nodeFS = require('fs');
  var nodePath = require('path');
  Module['read'] = function(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(filename) { return Module['read'](filename, true) };
  Module['load'] = function(f) {
    globalEval(read(f));
  };
  if (!Module['arguments']) {
    Module['arguments'] = process['argv'].slice(2);
  }
}
if (ENVIRONMENT_IS_SHELL) {
  Module['print'] = print;
  if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
  Module['read'] = read;
  Module['readBinary'] = function(f) {
    return read(f, 'binary');
  };
  if (!Module['arguments']) {
    if (typeof scriptArgs != 'undefined') {
      Module['arguments'] = scriptArgs;
    } else if (typeof arguments != 'undefined') {
      Module['arguments'] = arguments;
    }
  }
}
if (ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER) {
  if (!Module['print']) {
    Module['print'] = function(x) {
      console.log(x);
    };
  }
  if (!Module['printErr']) {
    Module['printErr'] = function(x) {
      console.log(x);
    };
  }
}
if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
  Module['read'] = function(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, false);
    xhr.send(null);
    return xhr.responseText;
  };
  if (!Module['arguments']) {
    if (typeof arguments != 'undefined') {
      Module['arguments'] = arguments;
    }
  }
}
if (ENVIRONMENT_IS_WORKER) {
  // 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
    }));
  }
  Module['load'] = importScripts;
}
if (!ENVIRONMENT_IS_WORKER && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_SHELL) {
  // 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'] == 'undefined' && Module['read']) {
  Module['load'] = function(f) {
    globalEval(Module['read'](f));
  };
}
if (!Module['print']) {
  Module['print'] = function(){};
}
if (!Module['printErr']) {
  Module['printErr'] = Module['print'];
}
if (!Module['arguments']) {
  Module['arguments'] = [];
}
// *** Environment setup code ***
// Closure helpers
Module.print = Module['print'];
Module.printErr = Module['printErr'];
// Callbacks
if (!Module['preRun']) Module['preRun'] = [];
if (!Module['postRun']) Module['postRun'] = [];
// === Auto-generated preamble library stuff ===
//========================================
// Runtime code shared with compiler
//========================================
var Runtime = {
  stackSave: function () {
    return STACKTOP;
  },
  stackRestore: function (stackTop) {
    STACKTOP = stackTop;
  },
  forceAlign: function (target, quantum) {
    quantum = quantum || 4;
    if (quantum == 1) return target;
    if (isNumber(target) && isNumber(quantum)) {
      return Math.ceil(target/quantum)*quantum;
    } else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
      var logg = log2(quantum);
      return '((((' +target + ')+' + (quantum-1) + ')>>' + logg + ')<<' + logg + ')';
    }
    return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
  },
  isNumberType: function (type) {
    return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
  },
  isPointerType: function isPointerType(type) {
  return type[type.length-1] == '*';
},
  isStructType: function isStructType(type) {
  if (isPointerType(type)) return false;
  if (/^\[\d+\ x\ (.*)\]/.test(type)) return true; // [15 x ?] blocks. Like structs
  if (/<?{ ?[^}]* ?}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types
  // See comment in isStructPointerType()
  return type[0] == '%';
},
  INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0},
  FLOAT_TYPES: {"float":0,"double":0},
  or64: function (x, y) {
    var l = (x | 0) | (y | 0);
    var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
    return l + h;
  },
  and64: function (x, y) {
    var l = (x | 0) & (y | 0);
    var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
    return l + h;
  },
  xor64: function (x, y) {
    var l = (x | 0) ^ (y | 0);
    var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
    return l + h;
  },
  getNativeTypeSize: function (type, quantumSize) {
    if (Runtime.QUANTUM_SIZE == 1) return 1;
    var size = {
      '%i1': 1,
      '%i8': 1,
      '%i16': 2,
      '%i32': 4,
      '%i64': 8,
      "%float": 4,
      "%double": 8
    }['%'+type]; // add '%' since float and double confuse Closure compiler as keys, and also spidermonkey as a compiler will remove 's from '_i8' etc
    if (!size) {
      if (type.charAt(type.length-1) == '*') {
        size = Runtime.QUANTUM_SIZE; // A pointer
      } else if (type[0] == 'i') {
        var bits = parseInt(type.substr(1));
        assert(bits % 8 == 0);
        size = bits/8;
      }
    }
    return size;
  },
  getNativeFieldSize: function (type) {
    return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
  },
  dedup: function dedup(items, ident) {
  var seen = {};
  if (ident) {
    return items.filter(function(item) {
      if (seen[item[ident]]) return false;
      seen[item[ident]] = true;
      return true;
    });
  } else {
    return items.filter(function(item) {
      if (seen[item]) return false;
      seen[item] = true;
      return true;
    });
  }
},
  set: function set() {
  var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;
  var ret = {};
  for (var i = 0; i < args.length; i++) {
    ret[args[i]] = 0;
  }
  return ret;
},
  STACK_ALIGN: 8,
  getAlignSize: function (type, size, vararg) {
    // we align i64s and doubles on 64-bit boundaries, unlike x86
    if (type == 'i64' || type == 'double' || vararg) 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);
  },
  calculateStructAlignment: function calculateStructAlignment(type) {
    type.flatSize = 0;
    type.alignSize = 0;
    var diffs = [];
    var prev = -1;
    type.flatIndexes = type.fields.map(function(field) {
      var size, alignSize;
      if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
        size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.
        alignSize = Runtime.getAlignSize(field, size);
      } else if (Runtime.isStructType(field)) {
        size = Types.types[field].flatSize;
        alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
      } else if (field[0] == 'b') {
        // bN, large number field, like a [N x i8]
        size = field.substr(1)|0;
        alignSize = 1;
      } else {
        throw 'Unclear type in struct: ' + field + ', in ' + type.name_ + ' :: ' + dump(Types.types[type.name_]);
      }
      if (type.packed) alignSize = 1;
      type.alignSize = Math.max(type.alignSize, alignSize);
      var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory
      type.flatSize = curr + size;
      if (prev >= 0) {
        diffs.push(curr-prev);
      }
      prev = curr;
      return curr;
    });
    type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
    if (diffs.length == 0) {
      type.flatFactor = type.flatSize;
    } else if (Runtime.dedup(diffs).length == 1) {
      type.flatFactor = diffs[0];
    }
    type.needsFlattening = (type.flatFactor != 1);
    return type.flatIndexes;
  },
  generateStructInfo: function (struct, typeName, offset) {
    var type, alignment;
    if (typeName) {
      offset = offset || 0;
      type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
      if (!type) return null;
      if (type.fields.length != struct.length) {
        printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
        return null;
      }
      alignment = type.flatIndexes;
    } else {
      var type = { fields: struct.map(function(item) { return item[0] }) };
      alignment = Runtime.calculateStructAlignment(type);
    }
    var ret = {
      __size__: type.flatSize
    };
    if (typeName) {
      struct.forEach(function(item, i) {
        if (typeof item === 'string') {
          ret[item] = alignment[i] + offset;
        } else {
          // embedded struct
          var key;
          for (var k in item) key = k;
          ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
        }
      });
    } else {
      struct.forEach(function(item, i) {
        ret[item[1]] = alignment[i];
      });
    }
    return ret;
  },
  dynCall: function (sig, ptr, args) {
    if (args && args.length) {
      if (!args.splice) args = Array.prototype.slice.call(args);
      args.splice(0, 0, ptr);
      return Module['dynCall_' + sig].apply(null, args);
    } else {
      return Module['dynCall_' + sig].call(null, ptr);
    }
  },
  functionPointers: [],
  addFunction: function (func) {
    for (var i = 0; i < Runtime.functionPointers.length; i++) {
      if (!Runtime.functionPointers[i]) {
        Runtime.functionPointers[i] = func;
        return 2 + 2*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[func]) {
      Runtime.funcWrappers[func] = function() {
        return Runtime.dynCall(sig, func, arguments);
      };
    }
    return Runtime.funcWrappers[func];
  },
  UTF8Processor: function () {
    var buffer = [];
    var needed = 0;
    this.processCChar = function (code) {
      code = code & 0xff;
      if (needed) {
        buffer.push(code);
        needed--;
      }
      if (buffer.length == 0) {
        if (code < 128) return String.fromCharCode(code);
        buffer.push(code);
        if (code > 191 && code < 224) {
          needed = 1;
        } else {
          needed = 2;
        }
        return '';
      }
      if (needed > 0) return '';
      var c1 = buffer[0];
      var c2 = buffer[1];
      var c3 = buffer[2];
      var ret;
      if (c1 > 191 && c1 < 224) {
        ret = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
      } else {
        ret = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
      }
      buffer.length = 0;
      return ret;
    }
    this.processJSString = function(string) {
      string = unescape(encodeURIComponent(string));
      var ret = [];
      for (var i = 0; i < string.length; i++) {
        ret.push(string.charCodeAt(i));
      }
      return ret;
    }
  },
  stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = ((((STACKTOP)+7)>>3)<<3); return ret; },
  staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = ((((STATICTOP)+7)>>3)<<3); return ret; },
  dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = ((((DYNAMICTOP)+7)>>3)<<3); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
  alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); 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
}
//========================================
// Runtime essentials
//========================================
var __THREW__ = 0; // Used in checking for thrown exceptions.
var ABORT = false;
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;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function abort(text) {
  Module.print(text + ':\n' + (new Error).stack);
  ABORT = true;
  throw "Assertion: " + text;
}
function assert(condition, text) {
  if (!condition) {
    abort('Assertion failed: ' + text);
  }
}
var globalScope = this;
// C calling interface. A convenient way to call C functions (in C files, or
// defined with extern "C").
//
// Note: LLVM optimizations can inline and remove functions, after which you will not be
//       able to call them. Closure can also do so. To avoid that, add your function to
//       the exports using something like
//
//         -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]'
//
// @param ident      The name of the C function (note that C++ functions will be name-mangled - use extern "C")
// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and
//                   'array' for JavaScript arrays and typed arrays).
// @param argTypes   An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType,
//                   except that 'array' is not possible (there is no way for us to know the length of the array)
// @param args       An array of the arguments to the function, as native JS values (as in returnType)
//                   Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).
// @return           The return value, as a native JS value (as in returnType)
function ccall(ident, returnType, argTypes, args) {
  return ccallFunc(getCFunc(ident), returnType, argTypes, args);
}
Module["ccall"] = ccall;
// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
function getCFunc(ident) {
  try {
    var func = globalScope['Module']['_' + ident]; // closure exported function
    if (!func) func = eval('_' + ident); // explicit lookup
  } catch(e) {
  }
  assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
  return func;
}
// Internal function that does a C call using a function, not an identifier
function ccallFunc(func, returnType, argTypes, args) {
  var stack = 0;
  function toC(value, type) {
    if (type == 'string') {
      if (value === null || value === undefined || value === 0) return 0; // null string
      if (!stack) stack = Runtime.stackSave();
      var ret = Runtime.stackAlloc(value.length+1);
      writeStringToMemory(value, ret);
      return ret;
    } else if (type == 'array') {
      if (!stack) stack = Runtime.stackSave();
      var ret = Runtime.stackAlloc(value.length);
      writeArrayToMemory(value, ret);
      return ret;
    }
    return value;
  }
  function fromC(value, type) {
    if (type == 'string') {
      return Pointer_stringify(value);
    }
    assert(type != 'array');
    return value;
  }
  var i = 0;
  var cArgs = args ? args.map(function(arg) {
    return toC(arg, argTypes[i++]);
  }) : [];
  var ret = fromC(func.apply(null, cArgs), returnType);
  if (stack) Runtime.stackRestore(stack);
  return ret;
}
// Returns a native JS wrapper for a C function. This is similar to ccall, but
// returns a function you can call repeatedly in a normal way. For example:
//
//   var my_function = cwrap('my_c_function', 'number', ['number', 'number']);
//   alert(my_function(5, 22));
//   alert(my_function(99, 12));
//
function cwrap(ident, returnType, argTypes) {
  var func = getCFunc(ident);
  return function() {
    return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
  }
}
Module["cwrap"] = cwrap;
// Sets a value in memory in a dynamic way at run-time. Uses the
// type data. This is the same as makeSetValue, except that
// makeSetValue is done at compile-time and generates the needed
// code then, whereas this function picks the right code at
// run-time.
// Note that setValue and getValue only do *aligned* writes and reads!
// Note that ccall uses JS types as for defining types, while setValue and
// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation
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)]=value; break;
      case 'i8': HEAP8[(ptr)]=value; break;
      case 'i16': HEAP16[((ptr)>>1)]=value; break;
      case 'i32': HEAP32[((ptr)>>2)]=value; break;
      case 'i64': (tempI64 = [value>>>0,Math.min(Math.floor((value)/(+(4294967296))), (+(4294967295)))>>>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;
// Parallel to 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)];
      case 'i8': return HEAP8[(ptr)];
      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') {
    HEAPU8.set(new Uint8Array(slab), ret);
    return ret;
  }
  var i = 0, type, typeSize, previousType;
  while (i < size) {
    var curr = slab[i];
    if (typeof curr === 'function') {
      curr = Runtime.getFunctionIndex(curr);
    }
    type = singleType || types[i];
    if (type === 0) {
      i++;
      continue;
    }
    if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
    setValue(ret+i, curr, type);
    // no need to look up size unless type changes, so cache it
    if (previousType !== type) {
      typeSize = Runtime.getNativeTypeSize(type);
      previousType = type;
    }
    i += typeSize;
  }
  return ret;
}
Module['allocate'] = allocate;
function Pointer_stringify(ptr, /* optional */ length) {
  // Find the length, and check for UTF while doing so
  var hasUtf = false;
  var t;
  var i = 0;
  while (1) {
    t = HEAPU8[(((ptr)+(i))|0)];
    if (t >= 128) hasUtf = true;
    else if (t == 0 && !length) break;
    i++;
    if (length && i == length) break;
  }
  if (!length) length = i;
  var ret = '';
  if (!hasUtf) {
    var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
    var curr;
    while (length > 0) {
      curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
      ret = ret ? ret + curr : curr;
      ptr += MAX_CHUNK;
      length -= MAX_CHUNK;
    }
    return ret;
  }
  var utf8 = new Runtime.UTF8Processor();
  for (i = 0; i < length; i++) {
    t = HEAPU8[(((ptr)+(i))|0)];
    ret += utf8.processCChar(t);
  }
  return ret;
}
Module['Pointer_stringify'] = Pointer_stringify;
// Memory management
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
  return ((x+4095)>>12)<<12;
}
var HEAP;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
function enlargeMemory() {
  abort('Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, or (2) set Module.TOTAL_MEMORY before the program runs.');
}
var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;
var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
// Initialize the runtime's memory
// check for full engine support (use string 'subarray' to avoid closure compiler confusion)
assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
       'Cannot fallback to non-typed array case: Code is too specialized');
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
// Endianness check (note: assumes compiler arch was little-endian)
HEAP32[0] = 255;
assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
Module['HEAP'] = HEAP;
Module['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 __ATINIT__ = []; // functions called during startup
var __ATMAIN__ = []; // functions called when main() is to be run
var __ATEXIT__ = []; // functions called during shutdown
var runtimeInitialized = false;
function ensureInitRuntime() {
  if (runtimeInitialized) return;
  runtimeInitialized = true;
  callRuntimeCallbacks(__ATINIT__);
}
function preMain() {
  callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
  callRuntimeCallbacks(__ATEXIT__);
}
// Tools
// This processes a JS string into a C-line array of numbers, 0-terminated.
// For LLVM-originating strings, see parser.js:parseLLVMString function
function intArrayFromString(stringy, dontAddNull, length /* optional */) {
  var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
  if (length) {
    ret.length = length;
  }
  if (!dontAddNull) {
    ret.push(0);
  }
  return ret;
}
Module['intArrayFromString'] = intArrayFromString;
function intArrayToString(array) {
  var ret = [];
  for (var i = 0; i < array.length; i++) {
    var chr = array[i];
    if (chr > 0xFF) {
      chr &= 0xFF;
    }
    ret.push(String.fromCharCode(chr));
  }
  return ret.join('');
}
Module['intArrayToString'] = intArrayToString;
// Write a Javascript array to somewhere in the heap
function writeStringToMemory(string, buffer, dontAddNull) {
  var array = intArrayFromString(string, dontAddNull);
  var i = 0;
  while (i < array.length) {
    var chr = array[i];
    HEAP8[(((buffer)+(i))|0)]=chr
    i = i + 1;
  }
}
Module['writeStringToMemory'] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
  for (var i = 0; i < array.length; i++) {
    HEAP8[(((buffer)+(i))|0)]=array[i];
  }
}
Module['writeArrayToMemory'] = writeArrayToMemory;
function unSign(value, bits, ignore, sig) {
  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, sig) {
  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;
}
if (!Math.imul) Math.imul = function(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;
};
// 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 runDependencyTracking = {};
var calledInit = false, calledRun = false;
var runDependencyWatcher = null;
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() {
        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)');
        }
      }, 6000);
    }
  } 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 run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
    if (!calledRun && shouldRunNow) run();
  }
}
Module['removeRunDependency'] = removeRunDependency;
Module["preloadedImages"] = {}; // maps url to image data
Module["preloadedAudios"] = {}; // maps url to audio data
function addPreRun(func) {
  if (!Module['preRun']) Module['preRun'] = [];
  else if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
  Module['preRun'].push(func);
}
var awaitingMemoryInitializer = false;
function loadMemoryInitializer(filename) {
  function applyData(data) {
    HEAPU8.set(data, STATIC_BASE);
    runPostSets();
  }
  // always do this asynchronously, to keep shell and web as similar as possible
  addPreRun(function() {
    if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
      applyData(Module['readBinary'](filename));
    } else {
      Browser.asyncLoad(filename, function(data) {
        applyData(data);
      }, function(data) {
        throw 'could not load memory initializer ' + filename;
      });
    }
  });
  awaitingMemoryInitializer = false;
}
// === Body ===
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 168584;
var _stdout;
var _stderr;
var _stdout = _stdout=allocate([0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);
var _stderr = _stderr=allocate([0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);
/* 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,40,1,0,0,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,1,0,0,0,0,0,0,36,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,2,0,0,0,0,0,0,134,1,0,0,196,1,0,0,166,1,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,0,0,0,232,0,0,0,248,0,0,0,8,1,0,0,24,1,0,0,40,1,0,0,56,1,0,0,72,1,0,0,232,0,0,0,232,0,0,0,40,1,0,0,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,119,2,0,200,104,2,0,232,91,2,0,136,77,2,0,200,65,2,0,240,54,2,0,32,43,2,0,88,29,2,0,152,18,2,0,40,9,2,0,32,1,2,0,88,250,1,0,56,241,1,0,120,231,1,0,168,223,1,0,40,219,1,0,174,0,0,0,0,0,0,0,188,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,1,0,0,76,1,0,0,0,0,0,0,0,0,0,0,254,1,0,0,0,0,0,0,202,0,0,0,34,1,0,0,90,0,0,0,204,0,0,0,8,0,0,0,0,0,0,0,100,0,0,0,116,0,0,0,92,0,0,0,146,0,0,0,158,2,0,0,98,2,0,0,204,1,0,0,78,0,0,0,2,2,0,0,28,1,0,0,46,0,0,0,146,1,0,0,210,0,0,0,108,0,0,0,26,0,0,0,94,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,0,0,0,0,0,0,0,0,0,1,1,64,0,0,0,250,1,0,0,210,1,0,0,98,1,0,0,178,0,0,0,210,1,0,0,226,0,0,0,228,0,0,0,236,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,112,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,1,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,1,0,0,0,0,0,0,62,2,0,0,58,2,0,0,188,1,0,0,230,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,37,117,2,154,8,27,218,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,44,212,154,230,29,167,234,63,106,222,113,138,142,228,232,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,93,220,70,3,120,11,226,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,93,220,70,3,120,11,226,63,93,220,70,3,120,11,226,63,93,220,70,3,120,11,226,63,13,113,172,139,219,104,220,63,100,93,220,70,3,120,237,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,181,21,251,203,238,201,225,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,196,66,173,105,222,113,236,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,181,21,251,203,238,201,225,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,181,21,251,203,238,201,225,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,134,56,214,197,109,52,238,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,166,10,70,37,117,2,222,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,106,222,113,138,142,228,232,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,244,108,86,125,174,182,222,63,17,54,60,189,82,150,201,63,244,108,86,125,174,182,222,63,59,1,77,132,13,79,225,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,62,232,217,172,250,92,197,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,130,115,70,148,246,6,199,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,7,240,22,72,80,252,220,63,162,180,55,248,194,100,214,63,88,168,53,205,59,78,213,63,13,113,172,139,219,104,220,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,196,66,173,105,222,113,236,63,0,0,0,0,0,0,208,63,127,217,61,121,88,168,209,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,196,66,173,105,222,113,236,63,19,242,65,207,102,213,211,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,16,122,54,171,62,87,229,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,16,219,1,0,58,0,0,0,96,186,1,0,56,1,0,0,32,184,1,0,126,1,0,0,8,127,1,0,194,0,0,0,64,182,1,0,104,0,0,0,8,180,1,0,150,0,0,0,16,205,1,0,146,2,0,0,208,176,1,0,8,1,0,0,120,175,1,0,160,2,0,0,200,173,1,0,202,1,0,0,40,172,1,0,76,0,0,0,248,170,1,0,150,2,0,0,112,125,1,0,182,1,0,0,184,166,1,0,246,0,0,0,56,165,1,0,6,0,0,0,72,163,1,0,6,0,0,0,240,161,1,0,216,0,0,0,112,160,1,0,90,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,192,244,1,0,232,203,1,0,56,183,1,0,0,166,1,0,160,150,1,0,64,134,1,0,48,118,1,0,232,104,1,0,248,122,2,0,248,108,2,0,48,95,2,0,240,81,2,0,40,69,2,0,32,58,2,0,32,46,2,0,64,32,2,0,136,21,2,0,40,12,2,0,56,3,2,0,240,251,1,0,232,243,1,0,240,233,1,0,8,226,1,0,224,219,1,0,184,217,1,0,248,214,1,0,64,212,1,0,48,210,1,0,0,208,1,0,208,205,1,0,168,203,1,0,40,201,1,0,232,198,1,0,232,196,1,0,56,195,1,0,56,193,1,0,48,191,1,0,248,188,1,0,48,187,1,0,32,185,1,0,16,183,1,0,248,180,1,0,40,179,1,0,120,177,1,0,248,175,1,0,72,174,1,0,176,172,1,0,104,171,1,0,8,170,1,0,80,167,1,0,232,165,1,0,248,163,1,0,104,162,1,0,24,161,1,0,136,159,1,0,16,158,1,0,176,156,1,0,72,155,1,0,248,153,1,0,8,152,1,0,144,150,1,0,160,148,1,0,64,147,1,0,200,145,1,0,112,144,1,0,176,142,1,0,16,141,1,0,224,138,1,0,120,137,1,0,104,135,1,0,24,134,1,0,80,132,1,0,240,130,1,0,32,129,1,0,128,127,1,0,16,126,1,0,48,124,1,0,232,122,1,0,16,121,1,0,64,119,1,0,24,118,1,0,136,116,1,0,64,115,1,0,16,114,1,0,216,112,1,0,112,111,1,0,64,110,1,0,192,108,1,0,136,107,1,0,240,105,1,0,184,104,1,0,192,102,1,0,112,101,1,0,64,100,1,0,224,98,1,0,184,97,1,0,144,96,1,0,72,95,1,0,56,125,2,0,216,123,2,0,208,122,2,0,240,120,2,0,136,119,2,0,96,118,2,0,24,117,2,0,224,115,2,0,176,114,2,0,104,113,2,0,224,111,2,0,72,110,2,0,192,108,2,0,8,107,2,0,128,105,2,0,16,104,2,0,120,102,2,0,56,101,2,0,64,100,2,0,8,99,2,0,192,97,2,0,40,96,2,0,248,94,2,0,144,93,2,0,88,92,2,0,8,91,2,0,224,89,2,0,176,88,2,0,64,87,2,0,184,85,2,0,152,84,2,0,8,83,2,0,184,81,2,0,200,79,2,0,80,78,2,0,224,76,2,0,88,75,2,0,104,74,2,0,80,73,2,0,8,72,2,0,240,70,2,0,224,69,2,0,0,69,2,0,88,67,2,0,128,66,2,0,64,65,2,0,56,64,2,0,40,63,2,0,48,62,2,0,0,0,0,0,114,0,0,0,0,0,0,0,232,0,0,0,140,1,0,0,158,1,0,0,118,0,0,0,244,0,0,0,252,0,0,0,50,0,0,0,212,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,0,0,0,232,1,0,0,212,0,0,0,238,1,0,0,24,0,0,0,94,2,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,198,1,0,0,90,2,0,0,154,1,0,0,128,2,0,0,126,2,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,0,0,0,0,54,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,1,0,0,226,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,114,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,176,193,0,0,0,0,0,0,0,0,0,0,0,0,0,88,1,0,0,16,0,0,0,1,0,0,0,0,0,0,0,0,16,0,2,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,176,193,0,0,0,0,0,0,0,0,0,0,0,16,64,16,13,0,0,147,0,0,0,1,0,0,0,0,0,0,0,0,32,3,2,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,144,195,0,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,16,0,0,0,0,0,0,0,0,0,0,0,0,16,64,80,64,0,0,8,0,0,0,1,0,0,0,0,0,0,0,0,32,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,66,0,0,0,148,1,0,0,56,2,0,0,70,2,0,0,92,2,0,0,122,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,135,1,0,8,119,1,0,200,105,1,0,176,123,2,0,24,110,2,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,102,1,0,0,142,0,0,0,52,0,0,0,0,0,0,0,136,2,0,0,0,0,0,0,6,1,0,0,36,0,0,0,136,1,0,0,222,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,1,0,0,2,0,0,0,130,1,0,0,4,1,0,0,234,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,1,0,0,0,0,0,0,116,2,0,0,158,0,0,0,172,0,0,0,218,0,0,0,170,2,0,0,42,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,108,2,0,48,110,2,0,168,252,1,0,136,206,1,0,136,185,1,0,104,168,1,0,112,152,1,0,248,135,1,0,136,206,1,0,128,119,1,0,56,106,1,0,136,206,1,0,16,124,2,0,184,110,2,0,128,96,2,0,88,83,2,0,32,70,2,0,40,59,2,0,136,47,2,0,104,33,2,0,192,22,2,0,88,13,2,0,0,4,2,0,224,252,1,0,72,245,1,0,16,235,1,0,8,227,1,0,24,220,1,0,8,218,1,0,48,215,1,0,120,212,1,0,96,210,1,0,96,208,1,0,152,206,1,0,136,206,1,0,8,204,1,0,96,201,1,0,48,199,1,0,64,197,1,0,136,206,1,0,120,195,1,0,96,193,1,0,176,190,1,0,192,188,1,0,152,206,1,0,136,206,1,0,0,187,1,0,208,184,1,0,192,182,1,0,152,180,1,0,192,178,1,0,16,177,1,0,208,175,1,0,16,174,1,0,136,172,1,0,64,171,1,0,136,206,1,0,216,169,1,0,24,167,1,0,176,165,1,0,192,163,1,0,48,162,1,0,136,206,1,0,208,160,1,0,96,159,1,0,240,157,1,0,144,156,1,0,32,155,1,0,216,153,1,0,240,151,1,0,104,150,1,0,128,148,1,0,240,146,1,0,168,145,1,0,88,144,1,0,152,206,1,0,136,206,1,0,144,142,1,0,240,140,1,0,184,138,1,0,104,33,2,0,136,206,1,0,56,137,1,0,24,136,1,0,248,133,1,0,40,132,1,0,216,130,1,0,0,129,1,0,96,127,1,0,184,125,1,0,16,124,1,0,200,122,1,0,104,33,2,0,136,206,1,0,208,120,1,0,16,119,1,0,248,117,1,0,104,116,1,0,24,115,1,0,248,113,1,0,192,112,1,0,96,111,1,0,152,206,1,0,136,206,1,0,48,110,1,0,176,108,1,0,120,107,1,0,224,105,1,0,168,104,1,0,168,102,1,0,96,101,1,0,48,100,1,0,208,98,1,0,160,97,1,0,128,96,1,0,152,206,1,0,136,206,1,0,40,95,1,0,32,125,2,0,136,206,1,0,200,123,2,0,160,122,2,0,224,120,2,0,144,119,2,0,104,118,2,0,40,117,2,0,232,115,2,0,192,114,2,0,112,113,2,0,136,206,1,0,240,111,2,0,136,206,1,0,96,110,2,0,32,109,2,0,64,107,2,0,144,105,2,0,32,104,2,0,160,102,2,0,152,206,1,0,136,206,1,0,64,101,2,0,136,206,1,0,72,100,2,0,24,99,2,0,200,97,2,0,56,96,2,0,8,95,2,0,184,93,2,0,112,92,2,0,104,33,2,0,136,206,1,0,16,91,2,0,136,206,1,0,240,89,2,0,248,88,2,0,80,87,2,0,248,85,2,0,160,84,2,0,24,83,2,0,200,81,2,0,136,206,1,0,248,79,2,0,96,78,2,0,232,76,2,0,216,75,2,0,120,74,2,0,88,73,2,0,16,72,2,0,248,70,2,0,136,206,1,0,240,69,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,64,0,0,0,0,0,0,89,64,0,0,0,0,0,136,195,64,0,0,0,0,132,215,151,65,0,128,224,55,121,195,65,67,23,110,5,181,181,184,147,70,245,249,63,233,3,79,56,77,50,29,48,249,72,119,130,90,60,191,115,127,221,79,21,117,40,116,1,0,96,102,1,0,152,120,2,0,0,0,0,0,0,0,0,0,4,0,0,0,216,106,2,0,0,0,0,0,0,0,0,0,88,93,2,0,96,102,1,0,152,120,2,0,0,0,0,0,160,79,2,0,5,0,0,0,216,106,2,0,0,0,0,0,40,67,2,0,64,56,2,0,96,102,1,0,96,44,2,0,0,0,0,0,0,0,0,0,6,0,0,0,216,106,2,0,176,30,2,0,0,0,0,0,200,19,2,0,96,102,1,0,96,44,2,0,0,0,0,0,160,79,2,0,7,0,0,0,216,106,2,0,176,30,2,0,40,67,2,0,120,10,2,0,224,1,2,0,96,44,2,0,0,0,0,0,0,0,0,0,10,0,0,0,32,251,1,0,176,30,2,0,0,0,0,0,96,242,1,0,224,1,2,0,96,44,2,0,0,0,0,0,40,67,2,0,11,0,0,0,32,251,1,0,176,30,2,0,40,67,2,0,80,232,1,0,224,1,2,0,152,224,1,0,0,0,0,0,0,0,0,0,8,0,0,0,32,251,1,0,0,0,0,0,0,0,0,0,96,219,1,0,224,1,2,0,152,224,1,0,0,0,0,0,40,67,2,0,9,0,0,0,32,251,1,0,0,0,0,0,40,67,2,0,0,217,1,0,0,217,1,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,80,214,1,0,0,0,0,0,0,0,0,0,200,211,1,0,0,217,1,0,176,30,2,0,0,0,0,0,0,0,0,0,14,0,0,0,80,214,1,0,176,30,2,0,0,0,0,0,168,209,1,0,0,217,1,0,176,30,2,0,0,0,0,0,160,79,2,0,15,0,0,0,80,214,1,0,176,30,2,0,40,67,2,0,152,207,1,0,0,217,1,0,0,0,0,0,0,0,0,0,160,79,2,0,13,0,0,0,80,214,1,0,0,0,0,0,40,67,2,0,72,205,1,0,72,205,1,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,216,106,2,0,0,0,0,0,0,0,0,0,32,203,1,0,72,205,1,0,176,30,2,0,0,0,0,0,0,0,0,0,18,0,0,0,216,106,2,0,176,30,2,0,0,0,0,0,160,200,1,0,72,205,1,0,176,30,2,0,0,0,0,0,160,79,2,0,19,0,0,0,216,106,2,0,176,30,2,0,40,67,2,0,136,198,1,0,72,205,1,0,0,0,0,0,152,196,1,0,0,0,0,0,20,0,0,0,216,106,2,0,0,0,0,0,0,0,0,0,208,194,1,0,72,205,1,0,176,30,2,0,152,196,1,0,0,0,0,0,22,0,0,0,216,106,2,0,176,30,2,0,0,0,0,0,176,192,1,0,72,205,1,0,176,30,2,0,152,196,1,0,160,79,2,0,23,0,0,0,216,106,2,0,176,30,2,0,40,67,2,0,96,190,1,0,72,205,1,0,0,0,0,0,152,196,1,0,160,79,2,0,21,0,0,0,216,106,2,0,0,0,0,0,40,67,2,0,88,188,1,0,72,205,1,0,0,0,0,0,0,0,0,0,160,79,2,0,17,0,0,0,216,106,2,0,0,0,0,0,40,67,2,0,168,186,1,0,80,184,1,0,176,30,2,0,0,0,0,0,0,0,0,0,26,0,0,0,32,251,1,0,176,30,2,0,0,0,0,0,160,182,1,0,80,184,1,0,176,30,2,0,0,0,0,0,40,67,2,0,27,0,0,0,32,251,1,0,176,30,2,0,40,67,2,0,96,180,1,0,80,184,1,0,0,0,0,0,0,0,0,0,40,67,2,0,25,0,0,0,32,251,1,0,0,0,0,0,40,67,2,0,152,178,1,0,80,184,1,0,8,177,1,0,0,0,0,0,0,0,0,0,24,0,0,0,32,251,1,0,0,0,0,0,0,0,0,0,192,175,1,0,248,173,1,0,176,30,2,0,0,0,0,0,0,0,0,0,30,0,0,0,32,251,1,0,176,30,2,0,0,0,0,0,112,172,1,0,248,173,1,0,176,30,2,0,0,0,0,0,40,67,2,0,31,0,0,0,32,251,1,0,176,30,2,0,40,67,2,0,48,171,1,0,248,173,1,0,0,0,0,0,0,0,0,0,40,67,2,0,29,0,0,0,32,251,1,0,0,0,0,0,40,67,2,0,200,169,1,0,248,173,1,0,8,177,1,0,0,0,0,0,0,0,0,0,28,0,0,0,32,251,1,0,0,0,0,0,0,0,0,0,240,166,1,0,240,166,1,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,168,165,1,0,0,0,0,0,0,0,0,0,144,163,1,0,32,162,1,0,176,30,2,0,0,0,0,0,0,0,0,0,2,0,0,0,32,251,1,0,176,30,2,0,0,0,0,0,184,160,1,0,32,162,1,0,176,30,2,0,0,0,0,0,40,67,2,0,3,0,0,0,32,251,1,0,176,30,2,0,40,67,2,0,80,159,1,0,32,162,1,0,0,0,0,0,0,0,0,0,40,67,2,0,1,0,0,0,32,251,1,0,0,0,0,0,40,67,2,0,224,157,1,0,32,162,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,251,1,0,0,0,0,0,0,0,0,0,96,156,1,0,0,155,1,0,192,153,1,0,0,0,0,0,40,67,2,0,33,0,0,0,32,251,1,0,0,0,0,0,40,67,2,0,176,151,1,0,72,150,1,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,168,165,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,1,0,0,144,0,0,0,164,1,0,0,208,1,0,0,138,0,0,0,242,1,0,0,152,143,1,0,192,141,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,144,0,0,0,164,1,0,0,130,2,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,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,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,153,153,153,153,153,217,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,227,63,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,128,102,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,128,102,64,154,153,153,153,153,153,217,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,128,102,64,123,20,174,71,225,122,228,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,20,174,71,225,122,228,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,211,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,128,70,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,128,70,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,7,2,0,32,0,2,0,208,248,1,0,88,239,1,0,24,230,1,0,176,222,1,0,216,218,1,0,88,216,1,0,128,213,1,0,56,211,1,0,8,209,1,0,48,207,1,0,184,204,1,0,120,202,1,0,8,200,1,0,40,198,1,0,32,196,1,0,64,194,1,0,8,192,1,0,192,189,1,0,232,187,1,0,0,0,0,0,2,3,4,5,6,7,8,0,0,9,10,11,12,13,14,15,16,17,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,23,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,4,254,255,255,135,254,255,255,7,0,0,0,0,0,0,0,0,255,255,127,255,255,255,127,255,255,255,255,255,255,255,243,127,254,253,255,255,255,255,255,127,255,255,255,255,255,255,255,255,15,224,255,255,255,255,49,252,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,1,0,248,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,215,255,255,251,255,255,255,255,127,127,84,253,255,15,0,254,223,255,255,255,255,255,255,255,255,254,223,255,255,255,255,3,0,255,255,255,255,255,255,159,25,255,255,255,207,63,3,0,0,0,0,0,0,254,255,255,255,127,2,254,255,255,255,127,0,0,0,0,0,0,0,0,0,255,255,255,7,7,0,0,0,0,0,254,255,255,7,254,7,0,0,0,0,254,255,255,255,255,255,255,255,255,124,255,127,47,0,96,0,0,0,224,255,255,255,255,255,255,35,0,0,0,255,3,0,0,0,224,159,249,255,255,253,197,3,0,0,0,176,3,0,3,0,224,135,249,255,255,253,109,3,0,0,0,94,0,0,28,0,224,175,251,255,255,253,237,35,0,0,0,0,1,0,0,0,224,159,249,255,255,253,205,35,0,0,0,176,3,0,0,0,224,199,61,214,24,199,191,3,0,0,0,0,0,0,0,0,224,223,253,255,255,253,239,3,0,0,0,0,3,0,0,0,224,223,253,255,255,253,239,3,0,0,0,64,3,0,0,0,224,223,253,255,255,253,255,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,255,127,13,0,63,0,0,0,0,0,0,0,150,37,240,254,174,108,13,32,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,254,255,255,255,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,63,0,255,255,255,255,127,0,237,218,7,0,0,0,0,80,1,80,49,130,171,98,44,0,0,0,0,64,0,201,128,245,7,0,0,0,0,8,1,2,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,255,255,255,255,255,255,255,255,255,255,255,3,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,64,76,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,254,3,0,0,254,255,255,255,255,255,255,255,255,255,31,0,254,255,255,255,255,255,255,255,255,255,255,7].concat([224,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,255,7,254,255,255,135,254,255,255,7,0,0,0,0,0,0,128,0,255,255,127,255,255,255,127,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,1,0,248,3,0,3,0,0,0,0,0,255,255,255,255,255,255,255,255,63,0,0,0,3,0,0,0,192,215,255,255,251,255,255,255,255,127,127,84,253,255,15,0,254,223,255,255,255,255,255,255,255,255,254,223,255,255,255,255,123,0,255,255,255,255,255,255,159,25,255,255,255,207,63,3,0,0,0,0,0,0,254,255,255,255,127,2,254,255,255,255,127,0,254,255,251,255,255,187,22,0,255,255,255,7,7,0,0,0,0,0,254,255,255,7,255,255,7,0,255,3,255,255,255,255,255,255,255,255,255,124,255,127,239,255,255,61,255,3,238,255,255,255,255,255,255,243,255,63,30,255,207,255,0,0,238,159,249,255,255,253,197,211,159,57,128,176,207,255,3,0,228,135,249,255,255,253,109,211,135,57,0,94,192,255,31,0,238,175,251,255,255,253,237,243,191,59,0,0,193,255,0,0,238,159,249,255,255,253,205,243,143,57,192,176,195,255,0,0,236,199,61,214,24,199,191,195,199,61,128,0,128,255,0,0,238,223,253,255,255,253,239,195,223,61,96,0,195,255,0,0,236,223,253,255,255,253,239,195,223,61,96,64,195,255,0,0,236,223,253,255,255,253,255,195,207,61,128,0,195,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,255,127,255,7,255,127,255,3,0,0,0,0,150,37,240,254,174,108,255,59,95,63,255,3,0,0,0,0,0,0,0,3,255,3,160,194,255,254,255,255,255,3,254,255,223,15,191,254,255,63,254,2,0,0,0,0,0,0,0,0,0,0,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,31,2,0,0,0,160,0,0,0,254,255,62,0,254,255,255,255,255,255,255,255,255,255,31,102,254,255,255,255,255,255,255,255,255,255,255,119,25,3,26,27,28,29,30,0,0,31,32,33,34,35,36,37,16,17,0,0,0,0,0,0,0,0,0,0,0,0,18,19,38,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,23,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,46,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,0,0,118,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,2,0,0,0,0,0,0,20,2,0,0,8,2,0,0,184,0,0,0,152,0,0,0,96,1,0,0,106,1,0,0,162,1,0,0,214,0,0,0,32,2,0,0,48,1,0,0,132,1,0,0,54,2,0,0,16,0,0,0,224,0,0,0,240,1,0,0,190,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,22,28,28,28,28,28,28,28,28,28,28,22,28,26,28,28,22,28,28,28,28,28,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,116,0,0,0,92,0,0,0,146,0,0,0,158,2,0,0,98,2,0,0,204,1,0,0,78,0,0,0,2,2,0,0,28,1,0,0,46,0,0,0,146,1,0,0,210,0,0,0,108,0,0,0,72,0,0,0,214,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,22,28,28,28,28,28,28,28,28,28,28,22,28,26,28,28,22,28,28,28,28,28,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,252,1,0,8,0,0,0,3,0,0,0,232,244,1,0,160,234,1,0,11,0,0,0,6,0,0,0,144,226,1,0,8,220,1,0,2,0,0,0,1,0,0,0,248,217,1,0,32,215,1,0,4,0,0,0,2,0,0,0,104,212,1,0,80,210,1,0,4,0,0,0,4,0,0,0,80,208,1,0,128,206,1,0,5,0,0,0,5,0,0,0,248,203,1,0,80,201,1,0,4,0,0,0,7,0,0,0,32,199,1,0,8,197,1,0,5,0,0,0,9,0,0,0,104,195,1,0,1,208,209,210,211,212,213,214,215,216,217,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,116,0,0,0,92,0,0,0,146,0,0,0,158,2,0,0,98,2,0,0,204,1,0,0,78,0,0,0,2,2,0,0,28,1,0,0,46,0,0,0,146,1,0,0,210,0,0,0,108,0,0,0,26,0,0,0,94,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,0,0,0,0,0,0,0,0,0,1,1,64,0,0,0,250,1,0,0,210,1,0,0,98,1,0,0,178,0,0,0,210,1,0,0,226,0,0,0,228,0,0,0,236,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,66,1,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,109,108,61,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,88,77,76,47,49,57,57,56,47,110,97,109,101,115,112,97,99,101,0,0,0,0,0,0,0,0,136,249,1,0,222,0,0,0,104,240,1,0,70,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,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,0,0,23,16,17,18,19,30,36,38,40,42,44,45,1,27,23,23,23,23,2,28,29,36,38,40,42,47,48,30,203,30,4,30,46,30,83,30,30,5,6,77,78,49,4,7,8,9,10,11,12,5,6,46,72,49,52,7,8,9,10,11,12,66,217,55,66,70,58,72,75,4,23,16,17,18,19,4,85,52,37,39,41,43,5,6,88,90,91,92,7,8,9,10,11,12,4,79,57,55,51,54,71,5,6,80,76,84,0,7,8,9,10,11,12,4,60,0,0,58,0,0,5,6,0,0,0,0,7,8,9,10,11,12,4,0,0,0,0,61,0,5,6,0,0,0,0,7,8,9,10,11,12,4,0,0,0,0,0,63,5,6,0,0,0,4,7,8,9,10,11,12,5,6,0,0,0,0,7,8,9,10,11,12,0,0,0,2,3,3,1,1,2,1,1,1,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,0,6,1,3,3,3,3,1,0,1,2,0,4,1,2,0,4,0,4,0,4,0,3,2,1,0,0,0,0,0,0,0,0,31,32,32,32,33,34,34,35,35,35,35,35,35,35,35,36,37,38,39,40,41,42,43,44,45,46,47,48,48,49,49,51,50,52,52,52,52,52,53,53,54,54,56,55,57,57,59,58,60,58,61,58,62,58,63,63,0,0,0,0,0,0,0,245,245,23,246,247,255,61,0,60,1,55,2,71,245,245,245,245,245,254,62,245,31,34,245,33,245,245,32,245,245,245,245,245,0,0,0,0,0,0,0,11,0,245,255,151,0,13,0,245,255,245,255,16,0,245,255,245,255,245,255,245,255,245,255,245,255,12,0,151,0,245,255,151,0,151,0,151,0,151,0,151,0,151,0,245,255,39,0,245,255,17,0,3,0,245,255,245,255,245,255,245,255,151,0,151,0,151,0,151,0,20,0,30,0,42,0,63,0,40,0,82,0,48,0,101,0,50,0,120,0,139,0,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,245,255,59,0,245,255,56,0,245,255,43,0,57,0,245,255,18,0,28,0,245,255,20,0,245,255,245,255,72,0,245,255,245,255,74,0,245,255,245,255,245,255,245,255,75,0,76,0,245,255,77,0,245,255,245,255,245,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3,13,14,15,31,50,32,53,33,56,34,59,20,62,21,64,22,35,24,65,25,26,67,68,69,73,74,87,86,89,81,82,0,0,0,0,0,0,0,0,4,40,0,30,29,0,16,18,20,22,24,26,0,5,7,40,40,40,40,0,0,9,8,34,0,0,1,28,2,6,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,31,3,32,17,10,35,19,11,36,21,13,38,23,12,37,25,14,27,15,0,43,0,41,0,40,42,40,0,45,39,33,56,0,49,47,0,51,44,46,55,0,0,54,0,50,48,52,0,0,0,2,2,2,2,2,14,16,17,18,19,20,21,1,0,16,17,18,19,7,3,8,31,32,33,34,8,23,36,10,38,12,40,12,42,6,44,45,19,20,21,22,11,12,25,26,27,28,29,30,19,20,12,24,11,14,25,26,27,28,29,30,5,23,15,5,9,16,24,70,12,72,72,72,72,72,12,4,14,16,17,18,19,19,20,10,10,10,10,25,26,27,28,29,30,12,72,41,15,37,39,67,19,20,72,70,73,255,25,26,27,28,29,30,12,43,255,255,16,255,255,19,20,255,255,255,255,25,26,27,28,29,30,12,255,255,255,255,17,255,19,20,255,255,255,255,25,26,27,28,29,30,12,255,255,255,255,255,18,19,20,255,255,255,12,25,26,27,28,29,30,19,20,255,255,255,255,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,114,1,0,1,0,0,0,152,1,0,0,32,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,181,1,0,1,0,0,0,224,3,0,0,64,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,253,1,0,1,0,0,0,96,15,0,0,96,17,0,0,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,69,2,0,1,0,0,0,112,18,0,0,128,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,80,135,1,0,1,0,0,0,24,44,0,0,160,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,1,0,1,0,0,0,112,64,0,0,192,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,201,1,0,1,0,0,0,168,79,0,0,224,17,0,0,4,0,0,0,64,181,1,0,1,0,0,0,40,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,208,1,0,120,89,1,0,16,208,1,0,248,88,1,0,15,0,0,0,56,151,1,0,1,0,0,0,0,79,0,0,0,0,0,0,16,0,0,0,176,46,2,0,1,0,0,0,0,79,0,0,0,0,0,0,17,0,0,0,232,217,1,0,1,0,0,0,0,79,0,0,0,0,0,0,17,0,0,0,80,195,1,0,1,0,0,0,0,79,0,0,0,0,0,0,17,0,0,0,24,176,1,0,1,0,0,0,0,79,0,0,0,0,0,0,19,0,0,0,168,159,1,0,1,0,0,0,32,79,0,0,0,0,0,0,20,0,0,0,152,144,1,0,1,0,0,0,32,79,0,0,0,0,0,0,21,0,0,0,176,127,1,0,1,0,0,0,32,79,0,0,0,0,0,0,21,0,0,0,16,113,1,0,1,0,0,0,32,79,0,0,0,0,0,0,21,0,0,0,32,99,1,0,1,0,0,0,32,79,0,0,0,0,0,0,22,0,0,0,112,117,2,0,1,0,0,0,240,78,0,0,0,0,0,0,23,0,0,0,8,103,2,0,1,0,0,0,240,78,0,0,0,0,0,0,24,0,0,0,56,90,2,0,1,0,0,0,240,78,0,0,0,0,0,0,24,0,0,0,168,75,2,0,1,0,0,0,240,78,0,0,0,0,0,0,24,0,0,0,112,64,2,0,1,0,0,0,240,78,0,0,0,0,0,0,25,0,0,0,128,53,2,0,1,0,0,0,16,79,0,0,0,0,0,0,25,0,0,0,136,41,2,0,1,0,0,0,16,79,0,0,0,0,0,0,25,0,0,0,168,27,2,0,1,0,0,0,16,79,0,0,0,0,0,0,25,0,0,0,120,17,2,0,1,0,0,0,16,79,0,0,0,0,0,0,26,0,0,0,112,7,2,0,1,0,0,0,8,79,0,0,0,0,0,0,10,0,0,0,40,0,2,0,1,0,0,0,24,79,0,0,0,0,0,0,11,0,0,0,224,248,1,0,1,0,0,0,24,79,0,0,0,0,0,0,12,0,0,0,112,239,1,0,1,0,0,0,24,79,0,0,0,0,0,0,12,0,0,0,32,230,1,0,1,0,0,0,24,79,0,0,0,0,0,0,12,0,0,0,184,222,1,0,1,0,0,0,24,79,0,0,0,0,0,0,14,0,0,0,224,218,1,0,1,0,0,0,24,79,0,0,0,0,0,0,14,0,0,0,96,216,1,0,1,0,0,0,24,79,0,0,0,0,0,0,13,0,0,0,136,213,1,0,1,0,0,0,24,79,0,0,0,0,0,0,5,0,0,0,64,211,1,0,1,0,0,0,24,79,0,0,0,0,0,0,6,0,0,0,16,209,1,0,1,0,0,0,24,79,0,0,0,0,0,0,7,0,0,0,56,207,1,0,1,0,0,0,24,79,0,0,0,0,0,0,7,0,0,0,192,204,1,0,1,0,0,0,24,79,0,0,0,0,0,0,7,0,0,0,128,202,1,0,1,0,0,0,24,79,0,0,0,0,0,0,9,0,0,0,16,200,1,0,1,0,0,0,24,79,0,0,0,0,0,0,9,0,0,0,48,198,1,0,1,0,0,0,24,79,0,0,0,0,0,0,8,0,0,0,40,196,1,0,1,0,0,0,24,79,0,0,0,0,0,0,0,0,0,0,72,194,1,0,1,0,0,0,232,78,0,0,0,0,0,0,1,0,0,0,16,192,1,0,1,0,0,0,232,78,0,0,0,0,0,0,2,0,0,0,200,189,1,0,1,0,0,0,232,78,0,0,0,0,0,0,2,0,0,0,240,187,1,0,1,0,0,0,232,78,0,0,0,0,0,0,2,0,0,0,64,186,1,0,1,0,0,0,232,78,0,0,0,0,0,0,4,0,0,0,8,184,1,0,1,0,0,0,232,78,0,0,0,0,0,0,4,0,0,0,32,182,1,0,1,0,0,0,232,78,0,0,0,0,0,0,3,0,0,0,232,179,1,0,1,0,0,0,232,78,0,0,0,0,0,0,18,0,0,0,64,178,1,0,1,0,0,0,0,79,0,0,0,0,0,0,27,0,0,0,184,176,1,0,1,0,0,0,248,78,0,0,0,0,0,0,28,0,0,0,96,175,1,0,1,0,0,0,248,78,0,0,0,0,0,0,29,0,0,0,168,173,1,0,1,0,0,0,248,78,0,0,0,0,0,0,29,0,0,0,16,172,1,0,1,0,0,0,248,78,0,0,0,0,0,0,29,0,0,0,224,170,1,0,1,0,0,0,248,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,84,2,0,0,0,0,0,160,79,0,0,152,79,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,48,193,1,0,200,1,0,0,144,73,2,0,76,2,0,0,152,228,1,0,76,2,0,0,120,199,1,0,162,2,0,0,88,179,1,0,162,2,0,0,144,162,1,0,10,0,0,0,232,146,1,0,10,0,0,0,176,130,1,0,180,0,0,0,232,114,1,0,180,0,0,0,32,101,1,0,40,0,0,0,40,119,2,0,40,0,0,0,8,105,2,0,156,0,0,0,200,91,2,0,156,0,0,0,128,81,2,0,86,1,0,0,0,0,0,0,240,100,1,0,1,0,0,0,0,0,0,0,144,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,67,2,0,1,0,0,0,0,0,0,0,200,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,96,2,0,1,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,67,2,0,1,0,0,0,0,0,0,0,56,81,0,0,1,0,0,0,136,66,2,0,1,0,0,0,0,0,0,0,56,81,0,0,2,0,0,0,72,65,2,0,1,0,0,0,0,0,0,0,24,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,240,29,2,0,1,0,0,0,0,0,0,0,112,81,0,0,2,0,0,0,192,213,1,0,1,0,0,0,0,0,0,0,168,81,0,0,0,0,0,0,32,192,1,0,1,0,0,0,0,0,0,0,168,81,0,0,3,0,0,0,136,173,1,0,1,0,0,0,0,0,0,0,168,81,0,0,0,0,0,0,80,157,1,0,1,0,0,0,0,0,0,0,112,81,0,0,3,0,0,0,128,141,1,0,1,0,0,0,0,0,0,0,112,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,75,2,0,1,0,0,0,0,0,0,0,224,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,164,1,0,1,0,0,0,0,0,0,0,80,82,0,0,0,0,0,0,232,148,1,0,1,0,0,0,0,0,0,0,80,82,0,0,1,0,0,0,152,132,1,0,1,0,0,0,0,0,0,0,136,82,0,0,2,0,0,0,208,116,1,0,1,0,0,0,0,0,0,0,80,82,0,0,3,0,0,0,32,103,1,0,1,0,0,0,0,0,0,0,80,82,0,0,4,0,0,0,72,121,2,0,1,0,0,0,0,0,0,0,80,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,208,0,0,0,22,2,0,0,166,2,0,0,48,2,0,0,2,1,0,0,114,2,0,0,154,2,0,0,174,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,207,1,0,192,205,1,0,160,203,1,0,0,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,100,0,0,0,32,201,1,0,224,198,1,0,224,196,1,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,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,176,139,2,0,72,139,2,0,24,139,2,0,64,139,2,0,48,139,2,0,32,139,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,205,1,0,104,2,0,0,168,202,1,0,140,2,0,0,40,200,1,0,60,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,228,1,0,112,199,1,0,80,179,1,0,136,162,1,0,224,146,1,0,168,130,1,0,224,114,1,0,24,101,1,0,0,0,0,0,0,0,0,0,14,2,0,0,144,1,0,0,0,0,0,0,0,0,0,0,84,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,2,0,0,148,2,0,0,82,1,0,0,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,1,0,0,82,2,0,0,224,1,0,0,156,2,0,0,32,0,0,0,30,2,0,0,108,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,2,0,0,126,0,0,0,164,1,0,0,60,0,0,0,0,0,0,0,38,0,0,0,80,191,1,0,198,0,0,0,24,189,1,0,193,0,0,0,80,187,1,0,194,0,0,0,152,185,1,0,192,0,0,0,64,183,1,0,145,3,0,0,32,181,1,0,197,0,0,0,72,179,1,0,195,0,0,0,152,177,1,0,196,0,0,0,48,176,1,0,146,3,0,0,128,174,1,0,199,0,0,0,224,172,1,0,167,3,0,0,144,171,1,0,33,32,0,0,40,170,1,0,148,3,0,0,112,168,1,0,208,0,0,0,32,166,1,0,201,0,0,0,32,164,1,0,202,0,0,0,168,162,1,0,200,0,0,0,88,161,1,0,149,3,0,0,192,159,1,0,151,3,0,0,56,158,1,0,203,0,0,0,216,156,1,0,147,3,0,0,120,155,1,0,205,0,0,0,56,154,1,0,206,0,0,0,144,152,1,0,204,0,0,0,184,150,1,0,153,3,0,0,192,148,1,0,207,0,0,0,104,147,1,0,154,3,0,0,240,145,1,0,155,3,0,0,176,144,1,0,156,3,0,0,248,142,1,0,209,0,0,0,64,141,1,0,157,3,0,0,8,139,1,0,82,1,0,0,168,137,1,0,211,0,0,0,16,136,1,0,212,0,0,0,88,134,1,0,210,0,0,0,120,132,1,0,169,3,0,0,32,131,1,0,159,3,0,0,88,129,1,0,216,0,0,0,208,127,1,0,213,0,0,0,64,126,1,0,214,0,0,0,112,124,1,0,166,3,0,0,16,123,1,0,160,3,0,0,56,121,1,0,51,32,0,0,192,119,1,0,168,3,0,0,72,118,1,0,161,3,0,0,176,116,1,0,96,1,0,0,104,115,1,0,163,3,0,0,72,114,1,0,222,0,0,0,40,113,1,0,164,3,0,0,152,111,1,0,152,3,0,0,104,110,1,0,218,0,0,0,248,108,1,0,219,0,0,0,184,107,1,0,217,0,0,0,88,106,1,0,165,3,0,0,240,104,1,0,220,0,0,0,240,102,1,0,158,3,0,0,160,101,1,0,221,0,0,0,136,100,1,0,120,1,0,0,40,99,1,0,150,3,0,0,232,97,1,0,225,0,0,0,200,96,1,0,226,0,0,0,120,95,1,0,180,0,0,0,104,125,2,0,230,0,0,0,56,124,2,0,224,0,0,0,8,123,2,0,53,33,0,0,24,121,2,0,177,3,0,0,184,119,2,0,38,0,0,0,168,118,2,0,39,34,0,0,144,117,2,0,32,34,0,0,16,116,2,0,229,0,0,0,232,114,2,0,72,34,0,0,152,113,2,0,227,0,0,0,56,112,2,0,228,0,0,0,200,110,2,0,30,32,0,0,8,109,2,0,178,3,0,0,120,107,2,0,166,0,0,0,72,106,2,0,34,32,0,0,160,104,2,0,41,34,0,0,80,103,2,0,231,0,0,0,240,101,2,0,184,0,0,0,176,100,2,0,162,0,0,0,160,99,2,0,199,3,0,0,80,98,2,0,198,2,0,0,176,96,2,0,99,38,0,0,128,95,2,0,69,34,0,0,40,94,2,0,169,0,0,0,248,92,2,0,181,33,0,0,112,91,2,0,42,34,0,0,128,90,2,0,164,0,0,0,56,89,2,0,211,33,0,0,224,87,2,0,32,32,0,0,104,86,2,0,147,33,0,0,40,85,2,0,176,0,0,0,224,83,2,0,180,3,0,0,96,82,2,0,102,38,0,0,184,80,2,0,247,0,0,0,32,79,2,0,233,0,0,0,120,76,2,0,234,0,0,0,48,76,2,0,232,0,0,0,216,74,2,0,5,34,0,0,216,73,2,0,3,32,0,0,120,72,2,0,2,32,0,0,64,71,2,0,181,3,0,0,112,70,2,0,97,34,0,0,104,69,2,0,183,3,0,0,232,67,2,0,240,0,0,0,208,66,2,0,235,0,0,0,176,65,2,0,172,32,0,0,192,64,2,0,3,34,0,0,192,63,2,0,146,1,0,0,176,62,2,0,0,34,0,0,80,61,2,0,189,0,0,0,96,60,2,0,188,0,0,0,144,59,2,0,190,0,0,0,112,58,2,0,68,32,0,0,8,57,2,0,179,3,0,0,232,55,2,0,101,34,0,0,216,54,2,0,62,0,0,0,216,53,2,0,212,33,0,0,200,52,2,0,148,33,0,0,232,51,2,0,101,38,0,0,248,50,2,0,38,32,0,0,72,49,2,0,237,0,0,0,72,48,2,0,238,0,0,0,128,46,2,0,161,0,0,0,72,45,2,0,236,0,0,0,0,44,2,0,17,33,0,0,8,43,2,0,30,34,0,0,248,41,2,0,43,34,0,0,232,40,2,0,185,3,0,0,224,39,2,0,191,0,0,0,248,38,2,0,8,34,0,0,160,34,2,0,239,0,0,0,200,33,2,0,186,3,0,0,144,32,2,0,208,33,0,0,128,31,2,0,187,3,0,0,80,30,2,0,41,35,0,0,64,29,2,0,171,0,0,0,88,28,2,0,144,33,0,0,32,27,2,0,8,35,0,0,64,26,2,0,28,32,0,0,88,25,2,0,100,34,0,0,24,24,2,0,10,35,0,0,32,23,2,0,23,34,0,0,16,22,2,0,202,37,0,0,184,20,2,0,14,32,0,0,120,19,2,0,57,32,0,0,128,18,2,0,24,32,0,0,200,17,2,0,60,0,0,0,8,17,2,0,175,0,0,0,56,16,2,0,20,32,0,0,72,15,2,0,181,0,0,0,112,14,2,0,183,0,0,0,184,13,2,0,18,34,0,0,168,12,2,0,188,3,0,0,136,11,2,0,7,34,0,0,32,10,2,0,160,0,0,0,32,9,2,0,19,32,0,0,224,7,2,0,96,34,0,0,240,6,2,0,11,34,0,0,40,6,2,0,172,0,0,0,128,5,2,0,9,34,0,0,224,4,2,0,132,34,0,0,80,4,2,0,241,0,0,0,136,3,2,0,189,3,0,0,192,2,2,0,243,0,0,0,192,1,2,0,244,0,0,0,24,1,2,0,83,1,0,0,112,0,2,0,242,0,0,0,208,255,1,0,62,32,0,0,72,255,1,0,201,3,0,0,136,254,1,0,191,3,0,0,224,253,1,0,149,34,0,0,64,253,1,0,40,34,0,0,72,252,1,0,170,0,0,0,168,251,1,0,186,0,0,0,0,251,1,0,248,0,0,0,80,250,1,0,245,0,0,0,80,249,1,0,151,34,0,0,160,248,1,0,246,0,0,0,248,247,1,0,182,0,0,0,72,247,1,0,2,34,0,0,136,246,1,0,48,32,0,0,200,245,1,0,165,34,0,0,96,244,1,0,198,3,0,0,104,243,1,0,192,3,0,0,40,242,1,0,214,3,0,0,48,241,1,0,177,0,0,0,216,239,1,0,163,0,0,0,248,238,1,0,50,32,0,0,0,238,1,0,15,34,0,0,96,237,1,0,29,34,0,0,120,236,1,0,200,3,0,0,144,235,1,0,34,0,0,0,72,234,1,0,210,33,0,0,24,233,1,0,26,34,0,0,24,232,1,0,42,35,0,0,112,231,1,0,187,0,0,0,144,230,1,0,146,33,0,0,208,229,1,0,9,35,0,0,88,229,1,0,29,32,0,0,224,228,1,0,28,33,0,0,8,228,1,0,174,0,0,0,120,227,1,0,11,35,0,0,80,226,1,0,193,3,0,0,104,225,1,0,15,32,0,0,112,224,1,0,58,32,0,0,192,223,1,0,25,32,0,0,144,222,1,0,26,32,0,0,104,222,1,0,97,1,0,0,160,221,1,0,197,34,0,0,32,221,1,0,167,0,0,0,120,220,1,0,173,0,0,0,96,220,1,0,195,3,0,0,0,220,1,0,194,3,0,0,192,219,1,0,60,34,0,0,88,219,1,0,96,38,0,0,48,219,1,0,130,34,0,0,8,219,1,0,134,34,0,0,208,218,1,0,17,34,0,0,176,218,1,0,131,34,0,0,136,218,1,0,185,0,0,0,104,218,1,0,178,0,0,0,80,218,1,0,179,0,0,0,224,217,1,0,135,34,0,0,88,217,1,0,223,0,0,0,248,216,1,0,196,3,0,0,208,216,1,0,52,34,0,0,160,216,1,0,184,3,0,0,64,216,1,0,209,3,0,0,8,216,1,0,9,32,0,0,224,215,1,0,254,0,0,0,144,215,1,0,220,2,0,0,120,215,1,0,215,0,0,0,24,215,1,0,34,33,0,0,168,214,1,0,209,33,0,0,72,214,1,0,250,0,0,0,232,213,1,0,145,33,0,0,176,213,1,0,251,0,0,0,120,213,1,0,249,0,0,0,80,213,1,0,168,0,0,0,40,213,1,0,210,3,0,0,8,213,1,0,197,3,0,0,176,212,1,0,252,0,0,0,96,212,1,0,24,33,0,0,16,212,1,0,190,3,0,0,192,211,1,0,253,0,0,0,160,211,1,0,165,0,0,0,88,211,1,0,255,0,0,0,32,211,1,0,182,3,0,0,0,211,1,0,13,32,0,0,216,210,1,0,12,32,0,0,186,0,0,0,0,0,0,0,10,1,0,0,0,0,0,0,164,0,0,0,0,0,0,0,44,2,0,0,0,0,0,0,118,1,0,0,0,0,0,0,44,1,0,0,0,0,0,0,160,1,0,0,0,0,0,0,140,0,0,0,0,0,0,0,64,46,0,0,136,79,1,0,16,2,0,0,176,77,1,0,176,77,1,0,200,44,0,0,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,78,2,0,0,28,0,0,0,0,0,0,0,0,0,0,0,40,1,0,0,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
.concat([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,79,84,65,84,73,79,78,40,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,78,77,84,79,75,69,78,83,0,0,0,0,0,0,0,0,78,77,84,79,75,69,78,0,73,68,82,69,70,83,0,0,73,68,82,69,70,0,0,0,73,68,0,0,0,0,0,0,69,78,84,73,84,89,0,0,69,78,84,73,84,73,69,83,0,0,0,0,0,0,0,0,67,68,65,84,65,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,96,0,0,0,0,0,0,0,0,0,0,0,0,0,66,64,0,0,0,0,0,0,66,64,0,0,0,0,0,32,131,64,0,0,0,0,0,192,136,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,2,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,150,64,0,0,0,0,0,128,150,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,64,0,0,0,0,0,0,66,64,0,0,0,0,0,32,131,64,0,0,0,0,0,192,136,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,153,1,0,224,150,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,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,212,1,0,85,93,201,127,201,127,255,0,104,191,1,0,187,45,212,190,174,212,255,0,232,172,1,0,20,119,253,253,192,134,255,0,224,156,1,0,85,93,201,127,201,127,255,0,72,141,1,0,187,45,212,190,174,212,255,0,120,124,1,0,20,119,253,253,192,134,255,0,128,110,1,0,42,102,255,255,255,153,255,0,224,96,1,0,85,93,201,127,201,127,255,0,0,115,2,0,187,45,212,190,174,212,255,0,128,100,2,0,20,119,253,253,192,134,255,0,176,87,2,0,42,102,255,255,255,153,255,0,168,73,2,0,151,173,176,56,108,176,255,0,112,62,2,0,85,93,201,127,201,127,255,0,168,51,2,0,187,45,212,190,174,212,255,0,160,39,2,0,20,119,253,253,192,134,255,0,0,26,2,0,42,102,255,255,255,153,255,0,248,15,2,0,151,173,176,56,108,176,255,0,216,5,2,0,232,252,240,240,2,127,255,0,16,255,1,0,85,93,201,127,201,127,255,0,192,247,1,0,187,45,212,190,174,212,255,0,192,237,1,0,20,119,253,253,192,134,255,0,32,229,1,0,42,102,255,255,255,153,255,0,96,221,1,0,151,173,176,56,108,176,255,0,144,218,1,0,232,252,240,240,2,127,255,0,232,215,1,0,17,224,191,191,91,23,255,0,48,213,1,0,85,93,201,127,201,127,255,0,224,210,1,0,187,45,212,190,174,212,255,0,192,208,1,0,20,119,253,253,192,134,255,0,240,206,1,0,42,102,255,255,255,153,255,0,120,204,1,0,151,173,176,56,108,176,255,0,8,202,1,0,232,252,240,240,2,127,255,0,200,199,1,0,17,224,191,191,91,23,255,0,224,197,1,0,0,0,102,102,102,102,255,0,232,195,1,0,147,25,247,222,235,247,255,0,248,193,1,0,142,75,225,158,202,225,255,0,168,191,1,0,145,188,189,49,130,189,255,0,128,189,1,0,159,16,255,239,243,255,255,0,168,187,1,0,143,46,231,189,215,231,255,0,248,185,1,0,143,127,214,107,174,214,255,0,144,183,1,0,147,208,181,33,113,181,255,0,136,181,1,0,159,16,255,239,243,255,255,0,176,179,1,0,143,46,231,189,215,231,255,0,0,178,1,0,143,127,214,107,174,214,255,0,128,176,1,0,145,188,189,49,130,189,255,0,0,175,1,0,149,241,156,8,81,156,255,0,56,173,1,0,159,16,255,239,243,255,255,0,216,171,1,0,148,43,239,198,219,239,255,0,112,170,1,0,142,75,225,158,202,225,255,0,216,168,1,0,143,127,214,107,174,214,255,0,96,166,1,0,145,188,189,49,130,189,255,0,136,164,1,0,149,241,156,8,81,156,255,0,232,162,1,0,159,16,255,239,243,255,255,0,152,161,1,0,148,43,239,198,219,239,255,0,24,160,1,0,142,75,225,158,202,225,255,0,176,158,1,0,143,127,214,107,174,214,255,0,64,157,1,0,144,169,198,66,146,198,255,0,192,155,1,0,147,208,181,33,113,181,255,0,136,154,1,0,151,241,148,8,69,148,255,0,24,153,1,0,148,8,255,247,251,255,255,0,16,151,1,0,147,25,247,222,235,247,255,0,56,149,1,0,148,43,239,198,219,239,255,0,176,147,1,0,142,75,225,158,202,225,255,0,64,146,1,0,143,127,214,107,174,214,255,0,240,144,1,0,144,169,198,66,146,198,255,0,112,143,1,0,147,208,181,33,113,181,255,0,160,141,1,0,151,241,148,8,69,148,255,0,32,140,1,0,148,8,255,247,251,255,255,0,240,137,1,0,147,25,247,222,235,247,255,0,144,136,1,0,148,43,239,198,219,239,255,0,160,134,1,0,142,75,225,158,202,225,255,0,224,132,1,0,143,127,214,107,174,214,255,0,96,131,1,0,144,169,198,66,146,198,255,0,152,129,1,0,147,208,181,33,113,181,255,0,24,128,1,0,149,241,156,8,81,156,255,0,184,126,1,0,152,235,107,8,48,107,255,0,192,124,1,0,23,239,84,84,48,5,255,0,104,123,1,0,119,255,60,0,60,48,255,0,168,121,1,0,23,236,140,140,81,10,255,0,56,120,1,0,24,194,191,191,129,45,255,0,136,118,1,0,29,112,223,223,194,125,255,0,56,117,1,0,30,52,246,246,232,195,255,0,216,115,1,0,121,38,234,199,234,229,255,0,136,114,1,0,120,95,205,128,205,193,255,0,112,113,1,0,124,165,151,53,151,143,255,0,32,112,1,0,124,252,102,1,102,94,255,0,208,110,1,0,23,239,84,84,48,5,255,0,104,109,1,0,124,252,102,1,102,94,255,0,24,108,1,0,119,255,60,0,60,48,255,0,176,106,1,0,23,236,140,140,81,10,255,0,64,105,1,0,24,194,191,191,129,45,255,0,176,103,1,0,29,112,223,223,194,125,255,0,0,102,1,0,30,52,246,246,232,195,255,0,208,100,1,0,0,0,245,245,245,245,255,0,112,99,1,0,121,38,234,199,234,229,255,0,88,98,1,0,120,95,205,128,205,193,255,0,32,97,1,0,124,165,151,53,151,143,255,0,240,95,1,0,28,135,216,216,179,101,255,0,144,94,1,0,0,0,245,245,245,245,255,0,144,124,2,0,123,127,180,90,180,172,255,0,72,123,2,0,21,215,166,166,97,26,255,0,184,121,2,0,29,112,223,223,194,125,255,0,24,120,2,0,120,95,205,128,205,193,255,0,232,118,2,0,121,253,133,1,133,113,255,0,208,117,2,0,21,215,166,166,97,26,255,0,120,116,2,0,29,112,223,223,194,125,255,0,56,115,2,0,0,0,245,245,245,245,255,0,232,113,2,0,120,95,205,128,205,193,255,0,168,112,2,0,121,253,133,1,133,113,255,0,96,111,2,0,23,236,140,140,81,10,255,0,128,109,2,0,28,135,216,216,179,101,255,0,216,107,2,0,30,52,246,246,232,195,255,0,80,106,2,0,121,38,234,199,234,229,255,0,168,104,2,0,123,127,180,90,180,172,255,0,88,103,2,0,124,252,102,1,102,94,255,0,248,101,2,0,23,236,140,140,81,10,255,0,184,100,2,0,28,135,216,216,179,101,255,0,168,99,2,0,30,52,246,246,232,195,255,0,96,98,2,0,0,0,245,245,245,245,255,0,32,97,2,0,121,38,234,199,234,229,255,0,136,95,2,0,123,127,180,90,180,172,255,0,72,94,2,0,124,252,102,1,102,94,255,0,0,93,2,0,23,236,140,140,81,10,255,0,184,91,2,0,24,194,191,191,129,45,255,0,136,90,2,0,29,112,223,223,194,125,255,0,64,89,2,0,30,52,246,246,232,195,255,0,232,87,2,0,121,38,234,199,234,229,255,0,112,86,2,0,120,95,205,128,205,193,255,0,56,85,2,0,124,165,151,53,151,143,255,0,232,83,2,0,124,252,102,1,102,94,255,0,104,82,2,0,23,236,140,140,81,10,255,0,192,80,2,0,24,194,191,191,129,45,255,0,40,79,2,0,29,112,223,223,194,125,255,0,104,77,2,0,30,52,246,246,232,195,255,0,56,76,2,0,0,0,245,245,245,245,255,0,224,74,2,0,121,38,234,199,234,229,255,0,224,73,2,0,120,95,205,128,205,193,255,0,128,72,2,0,124,165,151,53,151,143,255,0,80,71,2,0,124,252,102,1,102,94,255,0,120,70,2,0,135,20,249,229,245,249,255,0,112,69,2,0,117,74,216,153,216,201,255,0,248,67,2,0,103,185,162,44,162,95,255,0,216,66,2,0,136,14,251,237,248,251,255,0,184,65,2,0,127,54,226,178,226,226,255,0,200,64,2,0,113,120,194,102,194,164,255,0,200,63,2,0,98,190,139,35,139,69,255,0,184,62,2,0,136,14,251,237,248,251,255,0,88,61,2,0,127,54,226,178,226,226,255,0,112,60,2,0,113,120,194,102,194,164,255,0,152,59,2,0,103,185,162,44,162,95,255,0,120,58,2,0,102,255,109,0,109,44,255,0,16,57,2,0,136,14,251,237,248,251,255,0,240,55,2,0,119,34,236,204,236,230,255,0,224,54,2,0,117,74,216,153,216,201,255,0,224,53,2,0,113,120,194,102,194,164,255,0,208,52,2,0,103,185,162,44,162,95,255,0,240,51,2,0,102,255,109,0,109,44,255,0,0,51,2,0,136,14,251,237,248,251,255,0,96,49,2,0,119,34,236,204,236,230,255,0,80,48,2,0,117,74,216,153,216,201,255,0,136,46,2,0,113,120,194,102,194,164,255,0,80,45,2,0,105,159,174,65,174,118,255,0,8,44,2,0,98,190,139,35,139,69,255,0,16,43,2,0,102,255,88,0,88,36,255,0,0,42,2,0,134,6,253,247,252,253,255,0,240,40,2,0,135,20,249,229,245,249,255,0,232,39,2,0,119,34,236,204,236,230,255,0,0,39,2,0,117,74,216,153,216,201,255,0,176,34,2,0,113,120,194,102,194,164,255,0,208,33,2,0,105,159,174,65,174,118,255,0,152,32,2,0,98,190,139,35,139,69,255,0,136,31,2,0,102,255,88,0,88,36,255,0,88,30,2,0,134,6,253,247,252,253,255,0,72,29,2,0,135,20,249,229,245,249,255,0,96,28,2,0,119,34,236,204,236,230,255,0,40,27,2,0,117,74,216,153,216,201,255,0,72,26,2,0,113,120,194,102,194,164,255,0,96,25,2,0,105,159,174,65,174,118,255,0,40,24,2,0,98,190,139,35,139,69,255,0,40,23,2,0,102,255,109,0,109,44,255,0,24,22,2,0,101,255,68,0,68,27,255,0,192,20,2,0,144,20,244,224,236,244,255,0,128,19,2,0,148,70,218,158,188,218,255,0,136,18,2,0,196,123,167,136,86,167,255,0,208,17,2,0,136,14,251,237,248,251,255,0,16,17,2,0,146,53,227,179,205,227,255,0,64,16,2,0,162,74,198,140,150,198,255,0,80,15,2,0,202,149,157,136,65,157,255,0,128,14,2,0,136,14,251,237,248,251,255,0,192,13,2,0,146,53,227,179,205,227,255,0,176,12,2,0,162,74,198,140,150,198,255,0,144,11,2,0,196,123,167,136,86,167,255,0,40,10,2,0,214,225,129,129,15,124,255,0,240,9,2,0,136,14,251,237,248,251,255,0,240,8,2,0,148,43,230,191,211,230,255,0,176,7,2,0,148,70,218,158,188,218,255,0,192,6,2,0,162,74,198,140,150,198,255,0,248,5,2,0,196,123,167,136,86,167,255,0,96,5,2,0,214,225,129,129,15,124,255,0,192,4,2,0,136,14,251,237,248,251,255,0,48,4,2,0,148,43,230,191,211,230,255,0,104,3,2,0,148,70,218,158,188,218,255,0,152,2,2,0,162,74,198,140,150,198,255,0,152,1,2,0,190,100,177,140,107,177,255,0,248,0,2,0,202,149,157,136,65,157,255,0,80,0,2,0,213,252,110,110,1,107,255,0,176,255,1,0,134,6,253,247,252,253,255,0,40,255,1,0,144,20,244,224,236,244,255,0,96,254,1,0,148,43,230,191,211,230,255,0,184,253,1,0,148,70,218,158,188,218,255,0,32,253,1,0,162,74,198,140,150,198,255,0,40,252,1,0,190,100,177,140,107,177,255,0,128,251,1,0,202,149,157,136,65,157,255,0,224,250,1,0,213,252,110,110,1,107,255,0,48,250,1,0,134,6,253,247,252,253,255,0,48,249,1,0,144,20,244,224,236,244,255,0,128,248,1,0,148,43,230,191,211,230,255,0,216,247,1,0,148,70,218,158,188,218,255,0,40,247,1,0,162,74,198,140,150,198,255,0,88,246,1,0,190,100,177,140,107,177,255,0,168,245,1,0,202,149,157,136,65,157,255,0,120,244,1,0,214,225,129,129,15,124,255,0,48,243,1,0,213,255,77,77,0,75,255,0,248,241,1,0,114,211,158,27,158,119,255,0,192,240,1,0,18,252,217,217,95,2,255,0,168,239,1,0,173,95,179,117,112,179,255,0,200,238,1,0,114,211,158,27,158,119,255,0,216,237,1,0,18,252,217,217,95,2,255,0,64,237,1,0,173,95,179,117,112,179,255,0,72,236,1,0,233,209,231,231,41,138,255,0,96,235,1,0,114,211,158,27,158,119,255,0,24,234,1,0,18,252,217,217,95,2,255,0,232,232,1,0,173,95,179,117,112,179,255,0,240,231,1,0,233,209,231,231,41,138,255,0,64,231,1,0,62,208,166,102,166,30,255,0,88,230,1,0,114,211,158,27,158,119,255,0,176,229,1,0,18,252,217,217,95,2,255,0,56,229,1,0,173,95,179,117,112,179,255,0,176,228,1,0,233,209,231,231,41,138,255,0,224,227,1,0,62,208,166,102,166,30,255,0,72,227,1,0,31,252,230,230,171,2,255,0,48,226,1,0,114,211,158,27,158,119,255,0,48,225,1,0,18,252,217,217,95,2,255,0,80,224,1,0,173,95,179,117,112,179,255,0,136,223,1,0,233,209,231,231,41,138,255,0,248,222,1,0,62,208,166,102,166,30,255,0,56,222,1,0,31,252,230,230,171,2,255,0,128,221,1,0,27,210,166,166,118,29,255,0,0,221,1,0,114,211,158,27,158,119,255,0,104,220,1,0,18,252,217,217,95,2,255,0,64,220,1,0,173,95,179,117,112,179,255,0,240,219,1,0,233,209,231,231,41,138,255,0,160,219,1,0,62,208,166,102,166,30,255,0,72,219,1,0,31,252,230,230,171,2,255,0,24,219,1,0,27,210,166,166,118,29,255,0,248,218,1,0,0,0,102,102,102,102,255,0,192,218,1,0,76,25,243,224,243,219,255,0,160,218,1,0,95,61,221,168,221,181,255,0,120,218,1,0,140,170,202,67,162,202,255,0,88,218,1,0,65,17,249,240,249,232,255,0,48,218,1,0,87,46,228,186,228,188,255,0,200,217,1,0,123,101,204,123,204,196,255,0,64,217,1,0,141,197,190,43,140,190,255,0,232,216,1,0,65,17,249,240,249,232,255,0,176,216,1,0,87,46,228,186,228,188,255,0,144,216,1,0,123,101,204,123,204,196,255,0,48,216,1,0,140,170,202,67,162,202,255,0,248,215,1,0,145,243,172,8,104,172,255,0,184,215,1,0,65,17,249,240,249,232,255,0,128,215,1,0,77,41,235,204,235,197,255,0,80,215,1,0,95,61,221,168,221,181,255,0,8,215,1,0,123,101,204,123,204,196,255,0,144,214,1,0,140,170,202,67,162,202,255,0,56,214,1,0,145,243,172,8,104,172,255,0,208,213,1,0,65,17,249,240,249,232,255,0,160,213,1,0,77,41,235,204,235,197,255,0,104,213,1,0,95,61,221,168,221,181,255,0,64,213,1,0,123,101,204,123,204,196,255,0,24,213,1,0,137,160,211,78,179,211,255,0,224,212,1,0,141,197,190,43,140,190,255,0,152,212,1,0,147,242,158,8,88,158,255,0,80,212,1,0,60,12,252,247,252,240,255,0,248,211,1,0,76,25,243,224,243,219,255,0,176,211,1,0,77,41,235,204,235,197,255,0,104,211,1,0,95,61,221,168,221,181,255,0,72,211,1,0,123,101,204,123,204,196,255,0,16,211,1,0,137,160,211,78,179,211,255,0,240,210,1,0,141,197,190,43,140,190,255,0,200,210,1,0,147,242,158,8,88,158,255,0,160,210,1,0,60,12,252,247,252,240,255,0,136,210,1,0,76,25,243,224,243,219,255,0,64,210,1,0,77,41,235,204,235,197,255,0,224,209,1,0,95,61,221,168,221,181,255,0,152,209,1,0,123,101,204,123,204,196,255,0,80,209,1,0,137,160,211,78,179,211,255,0,24,209,1,0,141,197,190,43,140,190,255,0,232,208,1,0,145,243,172,8,104,172,255,0,208,208,1,0,150,239,129,8,64,129,255,0,176,208,1,0,74,21,245,229,245,224,255,0,136,208,1,0,80,72,217,161,217,155,255,0,112,208,1,0,98,178,163,49,163,84,255,0,24,208,1,0,73,15,248,237,248,233,255,0,224,207,1,0,78,54,228,186,228,179,255,0,136,207,1,0,86,104,196,116,196,118,255,0,112,207,1,0,98,190,139,35,139,69,255,0,72,207,1,0,73,15,248,237,248,233,255,0,24,207,1,0,78,54,228,186,228,179,255,0,0,207,1,0,86,104,196,116,196,118,255,0,224,206,1,0,98,178,163,49,163,84,255,0,200,206,1,0,102,255,109,0,109,44,255,0,176,206,1,0,73,15,248,237,248,233,255,0,232,205,1,0,77,44,233,199,233,192,255,0,152,205,1,0,80,72,217,161,217,155,255,0,56,205,1,0,86,104,196,116,196,118,255,0,32,205,1,0,98,178,163,49,163,84,255,0,0,205,1,0,102,255,109,0,109,44,255,0,160,204,1,0,73,15,248,237,248,233,255,0,136,204,1,0,77,44,233,199,233,192,255,0,104,204,1,0,80,72,217,161,217,155,255,0,80,204,1,0,86,104,196,116,196,118,255,0,64,204,1,0,96,158,171,65,171,93,255,0,216,203,1,0,98,190,139,35,139,69,255,0,88,203,1,0,108,255,90,0,90,50,255,0,16,203,1,0,72,7,252,247,252,245,255,0,240,202,1,0,74,21,245,229,245,224,255,0,152,202,1,0,77,44,233,199,233,192,255,0,88,202,1,0,80,72,217,161,217,155,255,0,24,202,1,0,86,104,196,116,196,118,255,0,248,201,1,0,96,158,171,65,171,93,255,0,184,201,1,0,98,190,139,35,139,69,255,0,152,201,1,0,108,255,90,0,90,50,255,0,64,201,1,0,72,7,252,247,252,245,255,0,240,200,1,0,74,21,245,229,245,224,255,0,144,200,1,0,77,44,233,199,233,192,255,0,64,200,1,0,80,72,217,161,217,155,255,0,24,200,1,0,86,104,196,116,196,118,255,0,248,199,1,0,96,158,171,65,171,93,255,0,216,199,1,0,98,190,139,35,139,69,255,0,184,199,1,0,102,255,109,0,109,44,255,0,128,199,1,0,101,255,68,0,68,27,255,0,96,199,1,0,0,0,240,240,240,240,255,0,240,198,1,0,0,0,189,189,189,189,255,0,200,198,1,0,0,0,99,99,99,99,255,0,120,198,1,0,0,0,247,247,247,247,255,0,96,198,1,0,0,0,204,204,204,204,255,0,56,198,1,0,0,0,150,150,150,150,255,0,24,198,1,0,0,0,82,82,82,82,255,0,240,197,1,0,0,0,247,247,247,247,255,0,208,197,1,0,0,0,204,204,204,204,255,0,160,197,1,0,0,0,150,150,150,150,255,0,136,197,1,0,0,0,99,99,99,99,255,0,248,196,1,0,0,0,37,37,37,37,255,0,200,196,1,0,0,0,247,247,247,247,255,0,136,196,1,0,0,0,217,217,217,217,255,0,104,196,1,0,0,0,189,189,189,189,255,0,48,196,1,0,0,0,150,150,150,150,255,0,16,196,1,0,0,0,99,99,99,99,255,0,248,195,1,0,0,0,37,37,37,37,255,0,216,195,1,0,0,0,247,247,247,247,255,0,176,195,1,0,0,0,217,217,217,217,255,0,160,195,1,0,0,0,189,189,189,189,255,0,88,195,1,0,0,0,150,150,150,150,255,0,24,195,1,0,0,0,115,115,115,115,255,0,192,194,1,0,0,0,82,82,82,82,255,0,160,194,1,0,0,0,37,37,37,37,255,0,88,194,1,0,0,0,255,255,255,255,255,0,48,194,1,0,0,0,240,240,240,240,255,0,8,194,1,0,0,0,217,217,217,217,255,0,232,193,1,0,0,0,189,189,189,189,255,0,136,193,1,0,0,0,150,150,150,150,255,0,120,193,1,0,0,0,115,115,115,115,255,0,72,193,1,0,0,0,82,82,82,82,255,0,240,192,1,0,0,0,37,37,37,37,255,0,160,192,1,0,0,0,255,255,255,255,255,0,128,192,1,0,0,0,240,240,240,240,255,0,48,192,1,0,0,0,217,217,217,217,255,0,248,191,1,0,0,0,189,189,189,189,255,0,216,191,1,0,0,0,150,150,150,150,255,0,152,191,1,0,0,0,115,115,115,115,255,0,120,191,1,0,0,0,82,82,82,82,255,0,88,191,1,0,0,0,37,37,37,37,255,0,64,191,1,0,0,0,0,0,0,0,255,0,224,190,1,0,21,48,254,254,230,206,255,0,80,190,1,0,19,147,253,253,174,107,255,0,8,190,1,0,14,240,230,230,85,13,255,0,216,189,1,0,19,32,254,254,237,222,255,0,176,189,1,0,20,120,253,253,190,133,255,0,144,189,1,0,17,194,253,253,141,60,255,0,112,189,1,0,13,253,217,217,71,1,255,0,48,189,1,0,19,32,254,254,237,222,255,0,32,189,1,0,20,120,253,253,190,133,255,0,8,189,1,0,17,194,253,253,141,60,255,0,208,188,1,0,14,240,230,230,85,13,255,0,72,188,1,0,13,250,166,166,54,3,255,0,48,188,1,0,19,32,254,254,237,222,255,0,0,188,1,0,21,91,253,253,208,162,255,0,216,187,1,0,19,147,253,253,174,107,255,0,184,187,1,0,17,194,253,253,141,60,255,0,152,187,1,0,14,240,230,230,85,13,255,0,104,187,1,0,13,250,166,166,54,3,255,0,88,187,1,0,19,32,254,254,237,222,255,0,64,187,1,0,21,91,253,253,208,162,255,0,16,187,1,0,19,147,253,253,174,107,255,0,152,186,1,0,17,194,253,253,141,60,255,0,128,186,1,0,16,234,241,241,105,19,255,0,80,186,1,0,13,253,217,217,72,1,255,0,40,186,1,0,12,247,140,140,45,4,255,0,8,186,1,0,21,20,255,255,245,235,255,0,232,185,1,0,21,48,254,254,230,206,255,0,184,185,1,0,21,91,253,253,208,162,255,0,160,185,1,0,19,147,253,253,174,107,255,0,72,185,1,0,17,194,253,253,141,60,255,0,248,184,1,0,16,234,241,241,105,19,255,0,64,184,1,0,13,253,217,217,72,1,255,0,48,184,1,0,12,247,140,140,45,4,255,0,16,184,1,0,21,20,255,255,245,235,255,0,248,183,1,0,21,48,254,254,230,206,255,0,160,183,1,0,21,91,253,253,208,162,255,0,128,183,1,0,19,147,253,253,174,107,255,0,88,183,1,0,17,194,253,253,141,60,255,0,72,183,1,0,16,234,241,241,105,19,255,0,40,183,1,0,13,253,217,217,72,1,255,0,0,183,1,0,13,250,166,166,54,3,255,0,120,182,1,0,12,246,127,127,39,4,255,0,104,182,1,0,25,54,254,254,232,200,255,0,48,182,1,0,19,121,253,253,187,132,255,0,8,182,1,0,5,197,227,227,74,51,255,0,152,181,1,0,26,37,254,254,240,217,255,0,120,181,1,0,24,115,253,253,204,138,255,0,72,181,1,0,13,164,252,252,141,89,255,0,40,181,1,0,3,218,215,215,48,31,255,0,16,181,1,0,26,37,254,254,240,217,255,0,232,180,1,0,24,115,253,253,204,138,255,0,80,180,1,0,13,164,252,252,141,89,255,0,56,180,1,0,5,197,227,227,74,51,255,0,248,179,1,0,0,255,179,179,0,0,255,0,216,179,1,0,26,37,254,254,240,217,255,0,192,179,1,0,24,95,253,253,212,158,255,0,160,179,1,0,19,121,253,253,187,132,255,0,120,179,1,0,13,164,252,252,141,89,255,0,104,179,1,0,5,197,227,227,74,51,255,0,56,179,1,0,0,255,179,179,0,0,255,0,24,179,1,0,26,37,254,254,240,217,255,0,136,178,1,0,24,95,253,253,212,158,255,0,120,178,1,0,19,121,253,253,187,132,255,0,72,178,1,0,13,164,252,252,141,89,255,0,48,178,1,0,7,178,239,239,101,72,255,0,16,178,1,0,3,218,215,215,48,31,255,0,240,177,1,0,0,255,153,153,0,0,255,0,200,177,1,0,24,18,255,255,247,236,255,0,184,177,1,0,25,54,254,254,232,200,255,0,136,177,1,0,24,95,253,253,212,158,255,0,104,177,1,0,19,121,253,253,187,132,255,0,248,176,1,0,13,164,252,252,141,89,255,0,232,176,1,0,7,178,239,239,101,72,255,0,192,176,1,0,3,218,215,215,48,31,255,0,168,176,1,0,0,255,153,153,0,0,255,0,144,176,1,0,24,18,255,255,247,236,255,0,112,176,1,0,25,54,254,254,232,200,255,0,72,176,1,0,24,95,253,253,212,158,255,0,56,176,1,0,19,121,253,253,187,132,255,0,32,176,1,0,13,164,252,252,141,89,255,0,232,175,1,0,7,178,239,239,101,72,255,0,176,175,1,0,3,218,215,215,48,31,255,0,152,175,1,0,0,255,179,179,0,0,255,0,104,175,1,0,0,255,127,127,0,0,255,0,80,175,1,0,142,68,227,166,206,227,255,0,16,175,1,0,190,153,154,106,61,154,255,0,240,174,1,0,144,211,180,31,120,180,255,0,160,174,1,0,65,97,223,178,223,138,255,0,144,174,1,0,82,184,160,51,160,44,255,0,112,174,1,0,0,99,251,251,154,153,255,0,40,174,1,0,254,225,227,227,26,28,255,0,232,173,1,0,23,143,253,253,191,111,255,0,216,173,1,0,21,255,255,255,127,0,255,0,184,173,1,0,198,42,214,202,178,214,255,0,152,173,1,0,142,68,227,166,206,227,255,0,72,173,1,0,190,153,154,106,61,154,255,0,40,173,1,0,42,102,255,255,255,153,255,0,8,173,1,0,144,211,180,31,120,180,255,0,248,172,1,0,65,97,223,178,223,138,255,0,208,172,1,0,82,184,160,51,160,44,255,0,160,172,1,0,0,99,251,251,154,153,255,0,96,172,1,0,254,225,227,227,26,28,255,0,80,172,1,0,23,143,253,253,191,111,255,0,24,172,1,0,21,255,255,255,127,0,255,0,0,172,1,0,198,42,214,202,178,214,255,0,232,171,1,0,142,68,227,166,206,227,255,0,200,171,1,0,190,153,154,106,61,154,255,0,168,171,1,0,42,102,255,255,255,153,255,0,152,171,1,0,15,197,177,177,89,40,255,0,128,171,1,0,144,211,180,31,120,180,255,0,88,171,1,0,65,97,223,178,223,138,255,0,32,171,1,0,82,184,160,51,160,44,255,0,16,171,1,0,0,99,251,251,154,153,255,0,232,170,1,0,254,225,227,227,26,28,255,0,208,170,1,0,23,143,253,253,191,111,255,0,128,170,1,0,21,255,255,255,127,0,255,0,96,170,1,0,198,42,214,202,178,214,255,0,64,170,1,0,142,68,227,166,206,227,255,0,48,170,1,0,144,211,180,31,120,180,255,0,24,170,1,0,65,97,223,178,223,138,255,0,248,169,1,0,142,68,227,166,206,227,255,0,184,169,1,0,144,211,180,31,120,180,255,0,168,169,1,0,65,97,223,178,223,138,255,0,136,169,1,0,82,184,160,51,160,44,255,0,24,169,1,0,142,68,227,166,206,227,255,0,232,168,1,0,144,211,180,31,120,180,255,0,200,168,1,0,65,97,223,178,223,138,255,0,168,168,1,0,82,184,160,51,160,44,255,0,144,168,1,0,0,99,251,251,154,153,255,0,184,167,1,0,142,68,227,166,206,227,255,0,64,167,1,0,144,211,180,31,120,180,255,0,224,166,1,0,65,97,223,178,223,138,255,0,208,166,1,0,82,184,160,51,160,44,255,0,168,166,1,0,0,99,251,251,154,153,255,0,144,166,1,0,254,225,227,227,26,28,255,0,120,166,1,0,142,68,227,166,206,227,255,0,80,166,1,0,144,211,180,31,120,180,255,0,56,166,1,0,65,97,223,178,223,138,255,0,40,166,1,0,82,184,160,51,160,44,255,0,16,166,1,0,0,99,251,251,154,153,255,0,216,165,1,0,254,225,227,227,26,28,255,0,152,165,1,0,23,143,253,253,191,111,255,0,72,165,1,0,142,68,227,166,206,227,255,0,24,165,1,0,144,211,180,31,120,180,255,0,232,164,1,0,65,97,223,178,223,138,255,0,168,164,1,0,82,184,160,51,160,44,255,0,120,164,1,0,0,99,251,251,154,153,255,0,80,164,1,0,254,225,227,227,26,28,255,0,40,164,1,0,23,143,253,253,191,111,255,0,16,164,1,0,21,255,255,255,127,0,255,0,232,163,1,0,142,68,227,166,206,227,255,0,128,163,1,0,144,211,180,31,120,180,255,0,88,163,1,0,65,97,223,178,223,138,255,0,56,163,1,0,82,184,160,51,160,44,255,0,24,163,1,0,0,99,251,251,154,153,255,0,248,162,1,0,254,225,227,227,26,28,255,0,216,162,1,0,23,143,253,253,191,111,255,0,192,162,1,0,21,255,255,255,127,0,255,0,176,162,1,0,198,42,214,202,178,214,255,0,152,162,1,0,3,78,251,251,180,174,255,0,88,162,1,0,146,53,227,179,205,227,255,0,16,162,1,0,77,41,235,204,235,197,255,0,0,162,1,0,3,78,251,251,180,174,255,0,224,161,1,0,146,53,227,179,205,227,255,0,200,161,1,0,77,41,235,204,235,197,255,0,168,161,1,0,202,27,228,222,203,228,255,0,136,161,1,0,3,78,251,251,180,174,255,0,112,161,1,0,146,53,227,179,205,227,255,0,96,161,1,0,77,41,235,204,235,197,255,0,72,161,1,0,202,27,228,222,203,228,255,0,8,161,1,0,24,88,254,254,217,166,255,0,168,160,1,0,3,78,251,251,180,174,255,0,152,160,1,0,146,53,227,179,205,227,255,0,96,160,1,0,77,41,235,204,235,197,255,0,64,160,1,0,202,27,228,222,203,228,255,0,40,160,1,0,24,88,254,254,217,166,255,0,8,160,1,0,42,50,255,255,255,204,255,0,240,159,1,0,3,78,251,251,180,174,255,0,224,159,1,0,146,53,227,179,205,227,255,0,176,159,1,0,77,41,235,204,235,197,255,0,120,159,1,0,202,27,228,222,203,228,255,0,64,159,1,0,24,88,254,254,217,166,255,0,48,159,1,0,42,50,255,255,255,204,255,0,16,159,1,0,28,44,229,229,216,189,255,0,248,158,1,0,3,78,251,251,180,174,255,0,192,158,1,0,146,53,227,179,205,227,255,0,160,158,1,0,77,41,235,204,235,197,255,0,88,158,1,0,202,27,228,222,203,228,255,0,72,158,1,0,24,88,254,254,217,166,255,0,40,158,1,0,42,50,255,255,255,204,255,0,0,158,1,0,28,44,229,229,216,189,255,0,208,157,1,0,233,35,253,253,218,236,255,0,192,157,1,0,3,78,251,251,180,174,255,0,144,157,1,0,146,53,227,179,205,227,255,0,120,157,1,0,77,41,235,204,235,197,255,0,96,157,1,0,202,27,228,222,203,228,255,0,48,157,1,0,24,88,254,254,217,166,255,0,16,157,1,0,42,50,255,255,255,204,255,0,240,156,1,0,28,44,229,229,216,189,255,0,200,156,1,0,233,35,253,253,218,236,255,0,160,156,1,0,0,0,242,242,242,242,255,0,128,156,1,0,108,53,226,179,226,205,255,0,80,156,1,0,17,81,253,253,205,172,255,0,40,156,1,0,155,31,232,203,213,232,255,0,232,155,1,0,108,53,226,179,226,205,255,0,208,155,1,0,17,81,253,253,205,172,255,0,176,155,1,0,155,31,232,203,213,232,255,0,144,155,1,0,228,43,244,244,202,228,255,0,128,155,1,0,108,53,226,179,226,205,255,0,104,155,1,0,17,81,253,253,205,172,255,0,56,155,1,0,155,31,232,203,213,232,255,0,16,155,1,0,228,43,244,244,202,228,255,0,240,154,1,0,56,45,245,230,245,201,255,0,208,154,1,0,108,53,226,179,226,205,255,0,176,154,1,0,17,81,253,253,205,172,255,0,152,154,1,0,155,31,232,203,213,232,255,0,120,154,1,0,228,43,244,244,202,228,255,0,80,154,1,0,56,45,245,230,245,201,255,0,64,154,1,0,35,81,255,255,242,174,255,0,40,154,1,0,108,53,226,179,226,205,255,0,232,153,1,0,17,81,253,253,205,172,255,0,200,153,1,0,155,31,232,203,213,232,255,0,176,153,1,0,228,43,244,244,202,228,255,0,112,153,1,0,56,45,245,230,245,201,255,0,64,153,1,0,35,81,255,255,242,174,255,0,40,153,1,0,25,39,241,241,226,204,255,0,8,153,1,0,108,53,226,179,226,205,255,0,184,152,1,0,17,81,253,253,205,172,255,0,152,152,1,0,155,31,232,203,213,232,255,0,88,152,1,0,228,43,244,244,202,228,255,0,248,151,1,0,56,45,245,230,245,201,255,0,192,151,1,0,35,81,255,255,242,174,255,0,160,151,1,0,25,39,241,241,226,204,255,0,96,151,1,0,0,0,204,204,204,204,255,0,64,151,1,0,230,253,142,142,1,82,255,0,32,151,1,0,77,191,100,39,100,25,255,0,240,150,1,0,230,220,197,197,27,125,255,0,208,150,1,0,232,118,222,222,119,174,255,0,192,150,1,0])
.concat([229,62,241,241,182,218,255,0,168,150,1,0,233,29,253,253,224,239,255,0,128,150,1,0,59,38,245,230,245,208,255,0,88,150,1,0,61,103,225,184,225,134,255,0,56,150,1,0,63,166,188,127,188,65,255,0,176,149,1,0,68,197,146,77,146,33,255,0,128,149,1,0,230,253,142,142,1,82,255,0,72,149,1,0,68,197,146,77,146,33,255,0,40,149,1,0,77,191,100,39,100,25,255,0,240,148,1,0,230,220,197,197,27,125,255,0,200,148,1,0,232,118,222,222,119,174,255,0,176,148,1,0,229,62,241,241,182,218,255,0,144,148,1,0,233,29,253,253,224,239,255,0,96,148,1,0,0,0,247,247,247,247,255,0,56,148,1,0,59,38,245,230,245,208,255,0,248,147,1,0,61,103,225,184,225,134,255,0,224,147,1,0,63,166,188,127,188,65,255,0,192,147,1,0,231,76,233,233,163,201,255,0,160,147,1,0,0,0,247,247,247,247,255,0,128,147,1,0,63,129,215,161,215,106,255,0,112,147,1,0,228,220,208,208,28,139,255,0,88,147,1,0,229,62,241,241,182,218,255,0,48,147,1,0,61,103,225,184,225,134,255,0,192,146,1,0,72,198,172,77,172,38,255,0,176,146,1,0,228,220,208,208,28,139,255,0,136,146,1,0,229,62,241,241,182,218,255,0,112,146,1,0,0,0,247,247,247,247,255,0,80,146,1,0,61,103,225,184,225,134,255,0,48,146,1,0,72,198,172,77,172,38,255,0,8,146,1,0,230,220,197,197,27,125,255,0,248,145,1,0,231,76,233,233,163,201,255,0,224,145,1,0,233,29,253,253,224,239,255,0,184,145,1,0,59,38,245,230,245,208,255,0,136,145,1,0,63,129,215,161,215,106,255,0,120,145,1,0,68,197,146,77,146,33,255,0,56,145,1,0,230,220,197,197,27,125,255,0,24,145,1,0,231,76,233,233,163,201,255,0,0,145,1,0,233,29,253,253,224,239,255,0,224,144,1,0,0,0,247,247,247,247,255,0,200,144,1,0,59,38,245,230,245,208,255,0,184,144,1,0,63,129,215,161,215,106,255,0,160,144,1,0,68,197,146,77,146,33,255,0,96,144,1,0,230,220,197,197,27,125,255,0,72,144,1,0,232,118,222,222,119,174,255,0,56,144,1,0,229,62,241,241,182,218,255,0,208,143,1,0,233,29,253,253,224,239,255,0,160,143,1,0,59,38,245,230,245,208,255,0,128,143,1,0,61,103,225,184,225,134,255,0,96,143,1,0,63,166,188,127,188,65,255,0,72,143,1,0,68,197,146,77,146,33,255,0,8,143,1,0,230,220,197,197,27,125,255,0,208,142,1,0,232,118,222,222,119,174,255,0,160,142,1,0,229,62,241,241,182,218,255,0,128,142,1,0,233,29,253,253,224,239,255,0,112,142,1,0,0,0,247,247,247,247,255,0,248,141,1,0,59,38,245,230,245,208,255,0,200,141,1,0,61,103,225,184,225,134,255,0,176,141,1,0,63,166,188,127,188,65,255,0,144,141,1,0,68,197,146,77,146,33,255,0,104,141,1,0,206,255,75,64,0,75,255,0,88,141,1,0,101,255,68,0,68,27,255,0,48,141,1,0,206,173,131,118,42,131,255,0,0,141,1,0,199,87,171,153,112,171,255,0,224,140,1,0,199,51,207,194,165,207,255,0,208,140,1,0,210,21,232,231,212,232,255,0,128,140,1,0,76,30,240,217,240,211,255,0,80,140,1,0,80,68,219,166,219,160,255,0,48,140,1,0,88,123,174,90,174,97,255,0,56,139,1,0,97,197,120,27,120,55,255,0,32,139,1,0,206,255,75,64,0,75,255,0,16,139,1,0,97,197,120,27,120,55,255,0,248,138,1,0,101,255,68,0,68,27,255,0,208,138,1,0,206,173,131,118,42,131,255,0,144,138,1,0,199,87,171,153,112,171,255,0,128,138,1,0,199,51,207,194,165,207,255,0,72,138,1,0,210,21,232,231,212,232,255,0,24,138,1,0,0,0,247,247,247,247,255,0,0,138,1,0,76,30,240,217,240,211,255,0,224,137,1,0,80,68,219,166,219,160,255,0,192,137,1,0,88,123,174,90,174,97,255,0,176,137,1,0,196,70,195,175,141,195,255,0,152,137,1,0,0,0,247,247,247,247,255,0,104,137,1,0,82,90,191,127,191,123,255,0,40,137,1,0,201,168,148,123,50,148,255,0,24,137,1,0,199,51,207,194,165,207,255,0,224,136,1,0,80,68,219,166,219,160,255,0,200,136,1,0,102,255,136,0,136,55,255,0,160,136,1,0,201,168,148,123,50,148,255,0,112,136,1,0,199,51,207,194,165,207,255,0,80,136,1,0,0,0,247,247,247,247,255,0,56,136,1,0,80,68,219,166,219,160,255,0,232,135,1,0,102,255,136,0,136,55,255,0,88,135,1,0,206,173,131,118,42,131,255,0,56,135,1,0,196,70,195,175,141,195,255,0,40,135,1,0,210,21,232,231,212,232,255,0,0,135,1,0,76,30,240,217,240,211,255,0,200,134,1,0,82,90,191,127,191,123,255,0,176,134,1,0,97,197,120,27,120,55,255,0,144,134,1,0,206,173,131,118,42,131,255,0,112,134,1,0,196,70,195,175,141,195,255,0,96,134,1,0,210,21,232,231,212,232,255,0,72,134,1,0,0,0,247,247,247,247,255,0,8,134,1,0,76,30,240,217,240,211,255,0,232,133,1,0,82,90,191,127,191,123,255,0,216,133,1,0,97,197,120,27,120,55,255,0,96,133,1,0,206,173,131,118,42,131,255,0,40,133,1,0,199,87,171,153,112,171,255,0,240,132,1,0,199,51,207,194,165,207,255,0,208,132,1,0,210,21,232,231,212,232,255,0,168,132,1,0,76,30,240,217,240,211,255,0,128,132,1,0,80,68,219,166,219,160,255,0,104,132,1,0,88,123,174,90,174,97,255,0,64,132,1,0,97,197,120,27,120,55,255,0,0,132,1,0,206,173,131,118,42,131,255,0,216,131,1,0,199,87,171,153,112,171,255,0,176,131,1,0,199,51,207,194,165,207,255,0,144,131,1,0,210,21,232,231,212,232,255,0,120,131,1,0,0,0,247,247,247,247,255,0,80,131,1,0,76,30,240,217,240,211,255,0,56,131,1,0,80,68,219,166,219,160,255,0,40,131,1,0,88,123,174,90,174,97,255,0,16,131,1,0,97,197,120,27,120,55,255,0,224,130,1,0,189,11,242,236,231,242,255,0,184,130,1,0,151,61,219,166,189,219,255,0,152,130,1,0,141,197,190,43,140,190,255,0,112,130,1,0,185,8,246,241,238,246,255,0,240,129,1,0,155,40,225,189,201,225,255,0,168,129,1,0,145,112,207,116,169,207,255,0,136,129,1,0,143,247,176,5,112,176,255,0,112,129,1,0,185,8,246,241,238,246,255,0,96,129,1,0,155,40,225,189,201,225,255,0,72,129,1,0,145,112,207,116,169,207,255,0,16,129,1,0,141,197,190,43,140,190,255,0,232,128,1,0,143,247,141,4,90,141,255,0,192,128,1,0,185,8,246,241,238,246,255,0,160,128,1,0,168,24,230,208,209,230,255,0,104,128,1,0,151,61,219,166,189,219,255,0,40,128,1,0,145,112,207,116,169,207,255,0,8,128,1,0,141,197,190,43,140,190,255,0,232,127,1,0,143,247,141,4,90,141,255,0,216,127,1,0,185,8,246,241,238,246,255,0,192,127,1,0,168,24,230,208,209,230,255,0,112,127,1,0,151,61,219,166,189,219,255,0,80,127,1,0,145,112,207,116,169,207,255,0,64,127,1,0,142,183,192,54,144,192,255,0,24,127,1,0,143,247,176,5,112,176,255,0,224,126,1,0,143,248,123,3,78,123,255,0,200,126,1,0,233,8,255,255,247,251,255,0,168,126,1,0,189,11,242,236,231,242,255,0,144,126,1,0,168,24,230,208,209,230,255,0,80,126,1,0,151,61,219,166,189,219,255,0,48,126,1,0,145,112,207,116,169,207,255,0,0,126,1,0,142,183,192,54,144,192,255,0,168,125,1,0,143,247,176,5,112,176,255,0,152,125,1,0,143,248,123,3,78,123,255,0,120,125,1,0,233,8,255,255,247,251,255,0,16,125,1,0,189,11,242,236,231,242,255,0,208,124,1,0,168,24,230,208,209,230,255,0,176,124,1,0,151,61,219,166,189,219,255,0,152,124,1,0,145,112,207,116,169,207,255,0,136,124,1,0,142,183,192,54,144,192,255,0,96,124,1,0,143,247,176,5,112,176,255,0,24,124,1,0,143,247,141,4,90,141,255,0,0,124,1,0,143,249,88,2,56,88,255,0,240,123,1,0,200,14,240,236,226,240,255,0,216,123,1,0,151,61,219,166,189,219,255,0,160,123,1,0,130,208,153,28,144,153,255,0,128,123,1,0,207,8,247,246,239,247,255,0,88,123,1,0,155,40,225,189,201,225,255,0,40,123,1,0,143,128,207,103,169,207,255,0,24,123,1,0,130,251,138,2,129,138,255,0,0,123,1,0,207,8,247,246,239,247,255,0,216,122,1,0,155,40,225,189,201,225,255,0,184,122,1,0,143,128,207,103,169,207,255,0,168,122,1,0,130,208,153,28,144,153,255,0,144,122,1,0,119,252,108,1,108,89,255,0,8,122,1,0,207,8,247,246,239,247,255,0,184,121,1,0,168,24,230,208,209,230,255,0,152,121,1,0,151,61,219,166,189,219,255,0,80,121,1,0,143,128,207,103,169,207,255,0,64,121,1,0,130,208,153,28,144,153,255,0,40,121,1,0,119,252,108,1,108,89,255,0,0,121,1,0,207,8,247,246,239,247,255,0,192,120,1,0,168,24,230,208,209,230,255,0,176,120,1,0,151,61,219,166,189,219,255,0,112,120,1,0,143,128,207,103,169,207,255,0,88,120,1,0,142,183,192,54,144,192,255,0,72,120,1,0,130,251,138,2,129,138,255,0,40,120,1,0,118,252,100,1,100,80,255,0,232,119,1,0,233,8,255,255,247,251,255,0,200,119,1,0,200,14,240,236,226,240,255,0,176,119,1,0,168,24,230,208,209,230,255,0,32,119,1,0,151,61,219,166,189,219,255,0,248,118,1,0,143,128,207,103,169,207,255,0,232,118,1,0,142,183,192,54,144,192,255,0,200,118,1,0,130,251,138,2,129,138,255,0,168,118,1,0,118,252,100,1,100,80,255,0,152,118,1,0,233,8,255,255,247,251,255,0,120,118,1,0,200,14,240,236,226,240,255,0,96,118,1,0,168,24,230,208,209,230,255,0,80,118,1,0,151,61,219,166,189,219,255,0,56,118,1,0,143,128,207,103,169,207,255,0,8,118,1,0,142,183,192,54,144,192,255,0,232,117,1,0,130,251,138,2,129,138,255,0,216,117,1,0,119,252,108,1,108,89,255,0,176,117,1,0,117,251,70,1,70,54,255,0,152,117,1,0,18,238,127,127,59,8,255,0,72,117,1,0,195,255,75,45,0,75,255,0,40,117,1,0,20,246,179,179,88,6,255,0,224,116,1,0,22,232,224,224,130,20,255,0,192,116,1,0,23,155,253,253,184,99,255,0,160,116,1,0,24,72,254,254,224,182,255,0,120,116,1,0,165,20,235,216,218,235,255,0,72,116,1,0,177,47,210,178,171,210,255,0,56,116,1,0,179,84,172,128,115,172,255,0,16,116,1,0,189,181,136,84,39,136,255,0,0,116,1,0,18,238,127,127,59,8,255,0,232,115,1,0,189,181,136,84,39,136,255,0,200,115,1,0,195,255,75,45,0,75,255,0,128,115,1,0,20,246,179,179,88,6,255,0,112,115,1,0,22,232,224,224,130,20,255,0,88,115,1,0,23,155,253,253,184,99,255,0,48,115,1,0,24,72,254,254,224,182,255,0,0,115,1,0,0,0,247,247,247,247,255,0,240,114,1,0,165,20,235,216,218,235,255,0,192,114,1,0,177,47,210,178,171,210,255,0,176,114,1,0,179,84,172,128,115,172,255,0,160,114,1,0,23,187,241,241,163,64,255,0,120,114,1,0,0,0,247,247,247,247,255,0,96,114,1,0,178,69,195,153,142,195,255,0,80,114,1,0,17,253,230,230,97,1,255,0,56,114,1,0,23,155,253,253,184,99,255,0,32,114,1,0,177,47,210,178,171,210,255,0,224,113,1,0,185,155,153,94,60,153,255,0,208,113,1,0,17,253,230,230,97,1,255,0,160,113,1,0,23,155,253,253,184,99,255,0,144,113,1,0,0,0,247,247,247,247,255,0,128,113,1,0,177,47,210,178,171,210,255,0,96,113,1,0,185,155,153,94,60,153,255,0,64,113,1,0,20,246,179,179,88,6,255,0,48,113,1,0,23,187,241,241,163,64,255,0,24,113,1,0,24,72,254,254,224,182,255,0,224,112,1,0,165,20,235,216,218,235,255,0,176,112,1,0,178,69,195,153,142,195,255,0,160,112,1,0,189,181,136,84,39,136,255,0,80,112,1,0,20,246,179,179,88,6,255,0,64,112,1,0,23,187,241,241,163,64,255,0,48,112,1,0,24,72,254,254,224,182,255,0,16,112,1,0,0,0,247,247,247,247,255,0,240,111,1,0,165,20,235,216,218,235,255,0,184,111,1,0,178,69,195,153,142,195,255,0,160,111,1,0,189,181,136,84,39,136,255,0,120,111,1,0,20,246,179,179,88,6,255,0,80,111,1,0,22,232,224,224,130,20,255,0,64,111,1,0,23,155,253,253,184,99,255,0,0,111,1,0,24,72,254,254,224,182,255,0,240,110,1,0,165,20,235,216,218,235,255,0,224,110,1,0,177,47,210,178,171,210,255,0,192,110,1,0,179,84,172,128,115,172,255,0,160,110,1,0,189,181,136,84,39,136,255,0,144,110,1,0,20,246,179,179,88,6,255,0,112,110,1,0,22,232,224,224,130,20,255,0,72,110,1,0,23,155,253,253,184,99,255,0,240,109,1,0,24,72,254,254,224,182,255,0,224,109,1,0,0,0,247,247,247,247,255,0,152,109,1,0,165,20,235,216,218,235,255,0,136,109,1,0,177,47,210,178,171,210,255,0,120,109,1,0,179,84,172,128,115,172,255,0,88,109,1,0,189,181,136,84,39,136,255,0,32,109,1,0,188,14,239,231,225,239,255,0,16,109,1,0,214,67,201,201,148,199,255,0,0,109,1,0,234,222,221,221,28,119,255,0,216,108,1,0,185,8,246,241,238,246,255,0,160,108,1,0,211,41,216,215,181,216,255,0,144,108,1,0,228,139,223,223,101,176,255,0,72,108,1,0,239,232,206,206,18,86,255,0,56,108,1,0,185,8,246,241,238,246,255,0,40,108,1,0,211,41,216,215,181,216,255,0,8,108,1,0,228,139,223,223,101,176,255,0,224,107,1,0,234,222,221,221,28,119,255,0,208,107,1,0,236,255,152,152,0,67,255,0,192,107,1,0,185,8,246,241,238,246,255,0,152,107,1,0,204,38,218,212,185,218,255,0,104,107,1,0,214,67,201,201,148,199,255,0,88,107,1,0,228,139,223,223,101,176,255,0,224,106,1,0,234,222,221,221,28,119,255,0,208,106,1,0,236,255,152,152,0,67,255,0,192,106,1,0,185,8,246,241,238,246,255,0,160,106,1,0,204,38,218,212,185,218,255,0,136,106,1,0,214,67,201,201,148,199,255,0,112,106,1,0,228,139,223,223,101,176,255,0,96,106,1,0,233,209,231,231,41,138,255,0,8,106,1,0,239,232,206,206,18,86,255,0,208,105,1,0,236,255,145,145,0,63,255,0,184,105,1,0,195,5,249,247,244,249,255,0,112,105,1,0,188,14,239,231,225,239,255,0,96,105,1,0,204,38,218,212,185,218,255,0,80,105,1,0,214,67,201,201,148,199,255,0,48,105,1,0,228,139,223,223,101,176,255,0,24,105,1,0,233,209,231,231,41,138,255,0,8,105,1,0,239,232,206,206,18,86,255,0,248,104,1,0,236,255,145,145,0,63,255,0,200,104,1,0,195,5,249,247,244,249,255,0,152,104,1,0,188,14,239,231,225,239,255,0,136,104,1,0,204,38,218,212,185,218,255,0,40,104,1,0,214,67,201,201,148,199,255,0,16,104,1,0,228,139,223,223,101,176,255,0,224,103,1,0,233,209,231,231,41,138,255,0,128,103,1,0,239,232,206,206,18,86,255,0,48,103,1,0,236,255,152,152,0,67,255,0,16,103,1,0,242,255,103,103,0,31,255,0,248,102,1,0,180,8,245,239,237,245,255,0,208,102,1,0,168,37,220,188,189,220,255,0,128,102,1,0,176,100,177,117,107,177,255,0,112,102,1,0,182,7,247,242,240,247,255,0,56,102,1,0,173,28,226,203,201,226,255,0,40,102,1,0,173,58,200,158,154,200,255,0,24,102,1,0,182,128,163,106,81,163,255,0,240,101,1,0,182,7,247,242,240,247,255,0,208,101,1,0,173,28,226,203,201,226,255,0,184,101,1,0,173,58,200,158,154,200,255,0,168,101,1,0,176,100,177,117,107,177,255,0,128,101,1,0,188,185,143,84,39,143,255,0,80,101,1,0,182,7,247,242,240,247,255,0,64,101,1,0,170,18,235,218,218,235,255,0,40,101,1,0,168,37,220,188,189,220,255,0,8,101,1,0,173,58,200,158,154,200,255,0,248,100,1,0,176,100,177,117,107,177,255,0,224,100,1,0,188,185,143,84,39,143,255,0,176,100,1,0,182,7,247,242,240,247,255,0,160,100,1,0,170,18,235,218,218,235,255,0,144,100,1,0,168,37,220,188,189,220,255,0,88,100,1,0,173,58,200,158,154,200,255,0,24,100,1,0,172,83,186,128,125,186,255,0,8,100,1,0,182,128,163,106,81,163,255,0,176,99,1,0,190,216,134,74,20,134,255,0,160,99,1,0,191,2,253,252,251,253,255,0,144,99,1,0,180,8,245,239,237,245,255,0,128,99,1,0,170,18,235,218,218,235,255,0,80,99,1,0,168,37,220,188,189,220,255,0,64,99,1,0,173,58,200,158,154,200,255,0,48,99,1,0,172,83,186,128,125,186,255,0,240,98,1,0,182,128,163,106,81,163,255,0,192,98,1,0,190,216,134,74,20,134,255,0,176,98,1,0,191,2,253,252,251,253,255,0,152,98,1,0,180,8,245,239,237,245,255,0,136,98,1,0,170,18,235,218,218,235,255,0,120,98,1,0,168,37,220,188,189,220,255,0,104,98,1,0,173,58,200,158,154,200,255,0,64,98,1,0,172,83,186,128,125,186,255,0,32,98,1,0,182,128,163,106,81,163,255,0,240,97,1,0,188,185,143,84,39,143,255,0,200,97,1,0,191,255,125,63,0,125,255,0,144,97,1,0,242,255,103,103,0,31,255,0,128,97,1,0,150,241,97,5,48,97,255,0,96,97,1,0,249,220,178,178,24,43,255,0,80,97,1,0,5,163,214,214,96,77,255,0,64,97,1,0,13,119,244,244,165,130,255,0,48,97,1,0,15,54,253,253,219,199,255,0,0,97,1,0,142,32,240,209,229,240,255,0,240,96,1,0,141,87,222,146,197,222,255,0,208,96,1,0,143,167,195,67,147,195,255,0,160,96,1,0,148,206,172,33,102,172,255,0,112,96,1,0,242,255,103,103,0,31,255,0,88,96,1,0,148,206,172,33,102,172,255,0,48,96,1,0,150,241,97,5,48,97,255,0,32,96,1,0,249,220,178,178,24,43,255,0,16,96,1,0,5,163,214,214,96,77,255,0,0,96,1,0,13,119,244,244,165,130,255,0,208,95,1,0,15,54,253,253,219,199,255,0,144,95,1,0,0,0,247,247,247,247,255,0,128,95,1,0,142,32,240,209,229,240,255,0,88,95,1,0,141,87,222,146,197,222,255,0,24,95,1,0,143,167,195,67,147,195,255,0,8,95,1,0,12,150,239,239,138,98,255,0,208,94,1,0,0,0,247,247,247,247,255,0,192,94,1,0,143,128,207,103,169,207,255,0,176,94,1,0,248,255,202,202,0,32,255,0,160,94,1,0,13,119,244,244,165,130,255,0,144,125,2,0,141,87,222,146,197,222,255,0,128,125,2,0,143,247,176,5,113,176,255,0,112,125,2,0,248,255,202,202,0,32,255,0,72,125,2,0,13,119,244,244,165,130,255,0,16,125,2,0,0,0,247,247,247,247,255,0,0,125,2,0,141,87,222,146,197,222,255,0,208,124,2,0,143,247,176,5,113,176,255,0,192,124,2,0,249,220,178,178,24,43,255,0,176,124,2,0,12,150,239,239,138,98,255,0,160,124,2,0,15,54,253,253,219,199,255,0,112,124,2,0,142,32,240,209,229,240,255,0,80,124,2,0,143,128,207,103,169,207,255,0,64,124,2,0,148,206,172,33,102,172,255,0,240,123,2,0,249,220,178,178,24,43,255,0,184,123,2,0,12,150,239,239,138,98,255,0,160,123,2,0,15,54,253,253,219,199,255,0,136,123,2,0,0,0,247,247,247,247,255,0,120,123,2,0,142,32,240,209,229,240,255,0,104,123,2,0,143,128,207,103,169,207,255,0,88,123,2,0,148,206,172,33,102,172,255,0,48,123,2,0,249,220,178,178,24,43,255,0,32,123,2,0,5,163,214,214,96,77,255,0,16,123,2,0,13,119,244,244,165,130,255,0,224,122,2,0,15,54,253,253,219,199,255,0,144,122,2,0,142,32,240,209,229,240,255,0,128,122,2,0,141,87,222,146,197,222,255,0,32,122,2,0,143,167,195,67,147,195,255,0,8,122,2,0,148,206,172,33,102,172,255,0,216,121,2,0,249,220,178,178,24,43,255,0,200,121,2,0,5,163,214,214,96,77,255,0,88,121,2,0,13,119,244,244,165,130,255,0,56,121,2,0,15,54,253,253,219,199,255,0,32,121,2,0,0,0,247,247,247,247,255,0,248,120,2,0,142,32,240,209,229,240,255,0,176,120,2,0,141,87,222,146,197,222,255,0,160,120,2,0,143,167,195,67,147,195,255,0,88,120,2,0,148,206,172,33,102,172,255,0,72,120,2,0,242,255,103,103,0,31,255,0,56,120,2,0,0,0,26,26,26,26,255,0,40,120,2,0,249,220,178,178,24,43,255,0,240,119,2,0,5,163,214,214,96,77,255,0,224,119,2,0,13,119,244,244,165,130,255,0,192,119,2,0,15,54,253,253,219,199,255,0,160,119,2,0,0,0,224,224,224,224,255,0,120,119,2,0,0,0,186,186,186,186,255,0,104,119,2,0,0,0,135,135,135,135,255,0,64,119,2,0,0,0,77,77,77,77,255,0,48,119,2,0,242,255,103,103,0,31,255,0,16,119,2,0,0,0,77,77,77,77,255,0,248,118,2,0,0,0,26,26,26,26,255,0,208,118,2,0,249,220,178,178,24,43,255,0,192,118,2,0,5,163,214,214,96,77,255,0,176,118,2,0,13,119,244,244,165,130,255,0,120,118,2,0,15,54,253,253,219,199,255,0,72,118,2,0,0,0,255,255,255,255,255,0,56,118,2,0,0,0,224,224,224,224,255,0,16,118,2,0,0,0,186,186,186,186,255,0,0,118,2,0,0,0,135,135,135,135,255,0,240,117,2,0,12,150,239,239,138,98,255,0,224,117,2,0,0,0,255,255,255,255,255,0,184,117,2,0,0,0,153,153,153,153,255,0,168,117,2,0,248,255,202,202,0,32,255,0,152,117,2,0,13,119,244,244,165,130,255,0,56,117,2,0,0,0,186,186,186,186,255,0,8,117,2,0,0,0,64,64,64,64,255,0,248,116,2,0,248,255,202,202,0,32,255,0,184,116,2,0,13,119,244,244,165,130,255,0,168,116,2,0,0,0,255,255,255,255,255,0,152,116,2,0,0,0,186,186,186,186,255,0,136,116,2,0,0,0,64,64,64,64,255,0,96,116,2,0,249,220,178,178,24,43,255,0,48,116,2,0,12,150,239,239,138,98,255,0,24,116,2,0,15,54,253,253,219,199,255,0,248,115,2,0,0,0,224,224,224,224,255,0,208,115,2,0,0,0,153,153,153,153,255,0,192,115,2,0,0,0,77,77,77,77,255,0,120,115,2,0,249,220,178,178,24,43,255,0,104,115,2,0,12,150,239,239,138,98,255,0,88,115,2,0,15,54,253,253,219,199,255,0,72,115,2,0,0,0,255,255,255,255,255,0,32,115,2,0,0,0,224,224,224,224,255,0,16,115,2,0,0,0,153,153,153,153,255,0,240,114,2,0,0,0,77,77,77,77,255,0,200,114,2,0,249,220,178,178,24,43,255,0,160,114,2,0,5,163,214,214,96,77,255,0,144,114,2,0,13,119,244,244,165,130,255,0,40,114,2,0,15,54,253,253,219,199,255,0,24,114,2,0,0,0,224,224,224,224,255,0,8,114,2,0,0,0,186,186,186,186,255,0,248,113,2,0,0,0,135,135,135,135,255,0,200,113,2,0,0,0,77,77,77,77,255,0,184,113,2,0,249,220,178,178,24,43,255,0,160,113,2,0,5,163,214,214,96,77,255,0,120,113,2,0,13,119,244,244,165,130,255,0,88,113,2,0,15,54,253,253,219,199,255,0,72,113,2,0,0,0,255,255,255,255,255,0,232,112,2,0,0,0,224,224,224,224,255,0,216,112,2,0,0,0,186,186,186,186,255,0,200,112,2,0,0,0,135,135,135,135,255,0,184,112,2,0,0,0,77,77,77,77,255,0,96,112,2,0,3,32,253,253,224,221,255,0,80,112,2,0,244,92,250,250,159,181,255,0,64,112,2,0,227,220,197,197,27,138,255,0,24,112,2,0,13,28,254,254,235,226,255,0,208,111,2,0,252,72,251,251,180,185,255,0,192,111,2,0,238,147,247,247,104,161,255,0,160,111,2,0,224,253,174,174,1,126,255,0,144,111,2,0,13,28,254,254,235,226,255,0,128,111,2,0,252,72,251,251,180,185,255,0,112,111,2,0,238,147,247,247,104,161,255,0,40,111,2,0,227,220,197,197,27,138,255,0,224,110,2,0,213,252,122,122,1,119,255,0,208,110,2,0,13,28,254,254,235,226,255,0,152,110,2,0,3,60,252,252,197,192,255,0,32,110,2,0,244,92,250,250,159,181,255,0,8,110,2,0,238,147,247,247,104,161,255,0,224,109,2,0,227,220,197,197,27,138,255,0,176,109,2,0,213,252,122,122,1,119,255,0,160,109,2,0,13,28,254,254,235,226,255,0,144,109,2,0,3,60,252,252,197,192,255,0,96,109,2,0,244,92,250,250,159,181,255,0,80,109,2,0,238,147,247,247,104,161,255,0,16,109,2,0,230,195,221,221,52,151,255,0,224,108,2,0,224,253,174,174,1,126,255,0,176,108,2,0,213,252,122,122,1,119,255,0,160,108,2,0,14,12,255,255,247,243,255,0,72,108,2,0,3,32,253,253,224,221,255,0,48,108,2,0,3,60,252,252,197,192,255,0,248,107,2,0,244,92,250,250,159,181,255,0,232,107,2,0,238,147,247,247,104,161,255,0,184,107,2,0,230,195,221,221,52,151,255,0,152,107,2,0,224,253,174,174,1,126,255,0,128,107,2,0,213,252,122,122,1,119,255,0,88,107,2,0,14,12,255,255,247,243,255,0,248,106,2,0,3,32,253,253,224,221,255,0,232,106,2,0,3,60,252,252,197,192,255,0,144,106,2,0,244,92,250,250,159,181,255,0,128,106,2,0,238,147,247,247,104,161,255,0,112,106,2,0,230,195,221,221,52,151,255,0,96,106,2,0,224,253,174,174,1,126,255,0,56,106,2,0,213,252,122,122,1,119,255,0,24,106,2,0,199,255,106,73,0,106,255,0,8,106,2,0,245,255,165,165,0,38,255,0,176,105,2,0,167,171,149,49,54,149,255,0,112,105,2,0,2,208,215,215,48,39,255,0,88,105,2,0,10,184,244,244,109,67,255,0,48,105,2,0,20,157,253,253,174,97,255,0,32,105,2,0,30,110,254,254,224,144,255,0,16,105,2,0,136,24,248,224,243,248,255,0,184,104,2,0,138,67,233,171,217,233,255,0,144,104,2,0,143,113,209,116,173,209,255,0,128,104,2,0,151,157,180,69,117,180,255,0,112,104,2,0,245,255,165,165,0,38,255,0,80,104,2,0,151,157,180,69,117,180,255,0,232,103,2,0,167,171,149,49,54,149,255,0,216,103,2,0,2,208,215,215,48,39,255,0,152,103,2,0,10,184,244,244,109,67,255,0,136,103,2,0,20,157,253,253,174,97,255,0,120,103,2,0,30,110,254,254,224,144,255,0,104,103,2,0,42,64,255,255,255,191,255,0,64,103,2,0,136,24,248,224,243,248,255,0,48,103,2,0,138,67,233,171,217,233,255,0,32,103,2,0,143,113,209,116,173,209,255,0,248,102,2,0,13,164,252,252,141,89,255,0,104,102,2,0,42,64,255,255,255,191,255,0,88,102,2,0,143,86,219,145,191,219,255,0,56,102,2,0,254,225,215,215,25,28,255,0,40,102,2,0,20,157,253,253,174,97,255,0,24,102,2,0,138,67,233,171,217,233,255,0,8,102,2,0,145,193,182,44,123,182,255,0,224,101,2,0,254,225,215,215,25,28,255,0,152,101,2,0,20,157,253,253,174,97,255,0,136,101,2,0,42,64,255,255,255,191,255,0,104,101,2,0,138,67,233,171,217,233,255,0,40,101,2,0,145,193,182,44,123,182,255,0,24,101,2,0,2,208,215,215,48,39,255,0,248,100,2,0,13,164,252,252,141,89,255,0,232,100,2,0,30,110,254,254,224,144,255,0,216,100,2,0,136,24,248,224,243,248,255,0,200,100,2,0,143,86,219,145,191,219,255,0,160,100,2,0,151,157,180,69,117,180,255,0,144,100,2,0,2,208,215,215,48,39,255,0,112,100,2,0,13,164,252,252,141,89,255,0,88,100,2,0,30,110,254,254,224,144,255,0,48,100,2,0,42,64,255,255,255,191,255,0,32,100,2,0,136,24,248,224,243,248,255,0,240,99,2,0,143,86,219,145,191,219,255,0,216,99,2,0,151,157,180,69,117,180,255,0,200,99,2,0,2,208,215,215,48,39,255,0,184,99,2,0,10,184,244,244,109,67,255,0,144,99,2,0,20,157,253,253,174,97,255,0,128,99,2,0,30,110,254,254,224,144,255,0,112,99,2,0,136,24,248,224,243,248,255,0,48,99,2,0,138,67,233,171,217,233,255,0,248,98,2,0,143,113,209,116,173,209,255,0,232,98,2,0,151,157,180,69,117,180,255,0,160,98,2,0,2,208,215,215,48,39,255,0,144,98,2,0,10,184,244,244,109,67,255,0,128,98,2,0,20,157,253,253,174,97,255,0,112,98,2,0,30,110,254,254,224,144,255,0,64,98,2,0,42,64,255,255,255,191,255,0,48,98,2,0,136,24,248,224,243,248,255,0,32,98,2,0,138,67,233,171,217,233,255,0,224,97,2,0,143,113,209,116,173,209,255,0,176,97,2,0,151,157,180,69,117,180,255,0,160,97,2,0,245,255,165,165,0,38,255,0,96,97,2,0,107,255,104,0,104,55,255,0,80,97,2,0,2,208,215,215,48,39,255,0,64,97,2,0,10,184,244,244,109,67,255,0,48,97,2,0,20,157,253,253,174,97,255,0,224,96,2,0,31,115,254,254,224,139,255,0,208,96,2,0,51,106,239,217,239,139,255,0,184,96,2,0,62,130,217,166,217,106,255,0,80,96,2,0,83,121,189,102,189,99,255,0,24,96,2,0,103,211,152,26,152,80,255,0,248,95,2,0,245,255,165,165,0,38,255,0,216,95,2,0,103,211,152,26,152,80,255,0,200,95,2,0,107,255,104,0,104,55,255,0,184,95,2,0,2,208,215,215,48,39,255,0,152,95,2,0,10,184,244,244,109,67,255,0,112,95,2,0,20,157,253,253,174,97,255,0,96,95,2,0,31,115,254,254,224,139,255,0,80,95,2,0,42,64,255,255,255,191,255,0,32,95,2,0,51,106,239,217,239,139,255,0,232,94,2,0,62,130,217,166,217,106,255,0,216,94,2,0,83,121,189,102,189,99,255,0,176,94,2,0,13,164,252,252,141,89,255,0,152,94,2,0,42,64,255,255,255,191,255,0,104,94,2,0,66,136,207,145,207,96,255,0,88,94,2,0,254,225,215,215,25,28,255,0,24,94,2,0,20,157,253,253,174,97,255,0,0,94,2,0,62,130,217,166,217,106,255,0,224,93,2,0,98,210,150,26,150,65,255,0,192,93,2,0,254,225,215,215,25,28,255,0,128,93,2,0,20,157,253,253,174,97,255,0,112,93,2,0,42,64,255,255,255,191,255,0,64,93,2,0,62,130,217,166,217,106,255,0,48,93,2,0,98,210,150,26,150,65,255,0,32,93,2,0,2,208,215,215,48,39,255,0,16,93,2,0,13,164,252,252,141,89,255,0,232,92,2,0,31,115,254,254,224,139,255,0,216,92,2,0,51,106,239,217,239,139,255,0,184,92,2,0,66,136,207,145,207,96,255,0,128,92,2,0,103,211,152,26,152,80,255,0,72,92,2,0,2,208,215,215,48,39,255,0,48,92,2,0,13,164,252,252,141,89,255,0,32,92,2,0,31,115,254,254,224,139,255,0,0,92,2,0,42,64,255,255,255,191,255,0,240,91,2,0,51,106,239,217,239,139,255,0,216,91,2,0,66,136,207,145,207,96,255,0,96,91,2,0,103,211,152,26,152,80,255,0,72,91,2,0,2,208,215,215,48,39,255,0,56,91,2,0,10,184,244,244,109,67,255,0,32,91,2,0,20,157,253,253,174,97,255,0,240,90,2,0,31,115,254,254,224,139,255,0,224,90,2,0,51,106,239,217,239,139,255,0,208,90,2,0,62,130,217,166,217,106,255,0,184,90,2,0,83,121,189,102,189,99,255,0,168,90,2,0,103,211,152,26,152,80,255,0,152,90,2,0,2,208,215,215,48,39,255,0,112,90,2,0,10,184,244,244,109,67,255,0,96,90,2,0,20,157,253,253,174,97,255,0,80,90,2,0,31,115,254,254,224,139,255,0,40,90,2,0,42,64,255,255,255,191,255,0,208,89,2,0,51,106,239,217,239,139,255,0,192,89,2,0,62,130,217,166,217,106,255,0,176,89,2,0,83,121,189,102,189,99,255,0,112,89,2,0,103,211,152,26,152,80,255,0,96,89,2,0,13,44,254,254,224,210,255,0,80,89,2,0,9,139,252,252,146,114,255,0,40,89,2,0,1,211,222,222,45,38,255,0,8,89,2,0,13,37,254,254,229,217,255,0,232,88,2,0,11,108,252,252,174,145,255,0,200,88,2,0,7,179,251,251,106,74,255,0,160,88,2,0,253,224,203,203,24,29,255,0,144,88,2,0,13,37,254,254,229,217,255,0,120,88,2,0,11,108,252,252,174,145,255,0,24,88,2,0,7,179,251,251,106,74,255,0,8,88,2,0,1,211,222,222,45,38,255,0,248,87,2,0,253,231,165,165,15,21,255,0,208,87,2,0,13,37,254,254,229,217,255,0,192,87,2,0,12,92,252,252,187,161,255,0,160,87,2,0,9,139,252,252,146,114,255,0,96,87,2,0,7,179,251,251,106,74,255,0,48,87,2,0,1,211,222,222,45,38,255,0,32,87,2,0,253,231,165,165,15,21,255,0,16,87,2,0,13,37,254,254,229,217,255,0,224,86,2,0,12,92,252,252,187,161,255,0,144,86,2,0,9,139,252,252,146,114,255,0,128,86,2,0,7,179,251,251,106,74,255,0,88,86,2,0,3,208,239,239,59,44,255,0,72,86,2,0,253,224,203,203,24,29,255,0,56,86,2,0,251,255,153,153,0,13,255,0,24,86,2,0,14,15,255,255,245,240,255,0,168,85,2,0,13,44,254,254,224,210,255,0,152,85,2,0,12,92,252,252,187,161,255,0,136,85,2,0,9,139,252,252,146,114,255,0,104,85,2,0,7,179,251,251,106,74,255,0,88,85,2,0,3,208,239,239,59,44,255,0,72,85,2,0,253,224,203,203,24,29,255,0,24,85,2,0,251,255,153,153,0,13,255,0,8,85,2,0,14,15,255,255,245,240,255,0,248,84,2,0,13,44,254,254,224,210,255,0,176,84,2,0,12,92,252,252,187,161,255,0,136,84,2,0,9,139,252,252,146,114,255,0,120,84,2,0,7,179,251,251,106,74,255,0,104,84,2,0,3,208,239,239,59,44,255,0,24,84,2,0,253,224,203,203,24,29,255,0,8,84,2,0,253,231,165,165,15,21,255,0,248,83,2,0,249,255,103,103,0,13,255,0,208,83,2,0,254,225,228,228,26,28,255,0,192,83,2,0,146,178,184,55,126,184,255,0,168,83,2,0,83,147,175,77,175,74,255,0,64,83,2,0,254,225,228,228,26,28,255,0,248,82,2,0,146,178,184,55,126,184,255,0,232,82,2,0,83,147,175,77,175,74,255,0,216,82,2,0,207,132,163,152,78,163,255,0,184,82,2,0,254,225,228,228,26,28,255,0,168,82,2,0,146,178,184,55,126,184,255,0,152,82,2,0,83,147,175,77,175,74,255,0,80,82,2,0,207,132,163,152,78,163,255,0,64,82,2,0,21,255,255,255,127,0,255,0,48,82,2,0,254,225,228,228,26,28,255,0,224,81,2,0,146,178,184,55,126,184,255,0,168,81,2,0,83,147,175,77,175,74,255,0,152,81,2,0,207,132,163,152,78,163,255,0,112,81,2,0,21,255,255,255,127,0,255,0,16,81,2,0,42,204,255,255,255,51,255,0,232,80,2,0,254,225,228,228,26,28,255,0,216,80,2,0,146,178,184,55,126,184,255,0,168,80,2,0,83,147,175,77,175,74,255,0,120,80,2,0,207,132,163,152,78,163,255,0,96,80,2,0,21,255,255,255,127,0,255,0,72,80,2,0,42,204,255,255,255,51,255,0,184,79,2,0,15,193,166,166,86,40,255,0,168,79,2,0,254,225,228,228,26,28,255,0,144,79,2,0,146,178,184,55,126,184,255,0,88,79,2,0,83,147,175,77,175,74,255,0,72,79,2,0,207,132,163,152,78,163,255,0,56,79,2,0,21,255,255,255,127,0,255,0,16,79,2,0,42,204,255,255,255,51,255,0,0,79,2,0,15,193,166,166,86,40,255,0,240,78,2,0,232,121,247,247,129,191,255,0,168,78,2,0,254,225,228,228,26,28,255,0,64,78,2,0,146,178,184,55,126,184,255,0,224,77,2,0,83,147,175,77,175,74,255,0,208,77,2,0,207,132,163,152,78,163,255,0,160,77,2,0,21,255,255,255,127,0,255,0,144,77,2,0,42,204,255,255,255,51,255,0,120,77,2,0,15,193,166,166,86,40,255,0,80,77,2,0,232,121,247,247,129,191,255,0,56,77,2,0,0,0,153,153,153,153,255,0,40,77,2,0,114,120,194,102,194,165,255,0,24,77,2,0,11,155,252,252,141,98,255,0,200,76,2,0,156,77,203,141,160,203,255,0,184,76,2,0,114,120,194,102,194,165,255,0,168,76,2,0,11,155,252,252,141,98,255,0,104,76,2,0,156,77,203,141,160,203,255,0,88,76,2,0,228,102,231,231,138,195,255,0,72,76,2,0,114,120,194,102,194,165,255,0,32,76,2,0,11,155,252,252,141,98,255,0,16,76,2,0,156,77,203,141,160,203,255,0,200,75,2,0,228,102,231,231,138,195,255,0,184,75,2,0,58,155,216,166,216,84,255,0,72,75,2,0,114,120,194,102,194,165,255,0,56,75,2,0,11,155,252,252,141,98,255,0,40,75,2,0,156,77,203,141,160,203,255,0,16,75,2,0,228,102,231,231,138,195,255,0,0,75,2,0,58,155,216,166,216,84,255,0,240,74,2,0,34,208,255,255,217,47,255,0,200,74,2,0,114,120,194,102,194,165,255,0,168,74,2,0,11,155,252,252,141,98,255,0,152,74,2,0,156,77,203,141,160,203,255,0,128,74,2,0,228,102,231,231,138,195,255,0,88,74,2,0,58,155,216,166,216,84,255,0,72,74,2,0,34,208,255,255,217,47,255,0,56,74,2,0,25,90,229,229,196,148,255,0,16,74,2,0,114,120,194,102,194,165,255,0,0,74,2,0,11,155,252,252,141,98,255,0,240,73,2,0,156,77,203,141,160,203,255,0,200,73,2,0,228,102,231,231,138,195,255,0,184,73,2,0,58,155,216,166,216,84,255,0,152,73,2,0,34,208,255,255,217,47,255,0,128,73,2,0,25,90,229,229,196,148,255,0,64,73,2,0,0,0,179,179,179,179,255,0,48,73,2,0,120,84,211,141,211,199,255,0,32,73,2,0,211,82,189,188,128,189,255,0,0,73,2,0,42,76,255,255,255,179,255,0,240,72,2,0,175,37,218,190,186,218,255,0,144,72,2,0,4,139,251,251,128,114,255,0,104,72,2,0,144,100,211,128,177,211,255,0,88,72,2,0,22,156,253,253,180,98,255,0,72,72,2,0,58,134,222,179,222,105,255,0,56,72,2,0,233,47,252,252,205,229,255,0,248,71,2,0,0,0,217,217,217,217,255,0,168,71,2,0,120,84,211,141,211,199,255,0,152,71,2,0,211,82,189,188,128,189,255,0,128,71,2,0,77,41,235,204,235,197,255,0,112,71,2,0,42,76,255,255,255,179,255,0,96,71,2,0,175,37,218,190,186,218,255,0,48,71,2,0,4,139,251,251,128,114,255,0,32,71,2,0,144,100,211,128,177,211,255,0,16,71,2,0,22,156,253,253,180,98,255,0,0,71,2,0,58,134,222,179,222,105,255,0,224,70,2,0,233,47,252,252,205,229,255,0,208,70,2,0,0,0,217,217,217,217,255,0,192,70,2,0,120,84,211,141,211,199,255,0,168,70,2,0,211,82,189,188,128,189,255,0,152,70,2,0,77,41,235,204,235,197,255,0,136,70,2,0,37,144,255,255,237,111,255,0,96,70,2,0,42,76,255,255,255,179,255,0,80,70,2,0,175,37,218,190,186,218,255,0,56,70,2,0,4,139,251,251,128,114,255,0,0,70,2,0,144,100,211,128,177,211,255,0,208,69,2,0,22,156,253,253,180,98,255,0,192,69,2,0,58,134,222,179,222,105,255,0,176,69,2,0,233,47,252,252,205,229,255,0,160,69,2,0,0,0,217,217,217,217,255,0,144,69,2,0,120,84,211,141,211,199,255,0,128,69,2,0,42,76,255,255,255,179,255,0,88,69,2,0,175,37,218,190,186,218,255,0,72,69,2,0,120,84,211,141,211,199,255,0,56,69,2,0,42,76,255,255,255,179,255,0,24,69,2,0,175,37,218,190,186,218,255,0,240,68,2,0,4,139,251,251,128,114,255,0,224,68,2,0,120,84,211,141,211,199,255,0,96,68,2,0,42,76,255,255,255,179,255,0,72,68,2,0,175,37,218,190,186,218,255,0,24,68,2,0,4,139,251,251,128,114,255,0,8,68,2,0,144,100,211,128,177,211,255,0,216,67,2,0,120,84,211,141,211,199,255,0,168,67,2,0,42,76,255,255,255,179,255,0,144,67,2,0,175,37,218,190,186,218,255,0,128,67,2,0,4,139,251,251,128,114,255,0,64,67,2,0,144,100,211,128,177,211,255,0,48,67,2,0,22,156,253,253,180,98,255,0,24,67,2,0,120,84,211,141,211,199,255,0,8,67,2,0,42,76,255,255,255,179,255,0,248,66,2,0,175,37,218,190,186,218,255,0,232,66,2,0,4,139,251,251,128,114,255,0,192,66,2,0,144,100,211,128,177,211,255,0,176,66,2,0,22,156,253,253,180,98,255,0,160,66,2,0,58,134,222,179,222,105,255,0,144,66,2,0,120,84,211,141,211,199,255,0,112,66,2,0,42,76,255,255,255,179,255,0,72,66,2,0,175,37,218,190,186,218,255,0,0,66,2,0,4,139,251,251,128,114,255,0,240,65,2,0,144,100,211,128,177,211,255,0,224,65,2,0,22,156,253,253,180,98,255,0,208,65,2,0,58,134,222,179,222,105,255,0,160,65,2,0,233,47,252,252,205,229,255,0,136,65,2,0,120,84,211,141,211,199,255,0,96,65,2,0,42,76,255,255,255,179,255,0,80,65,2,0,175,37,218,190,186,218,255,0,48,65,2,0,4,139,251,251,128,114,255,0,24,65,2,0,144,100,211,128,177,211,255,0,8,65,2,0,22,156,253,253,180,98,255,0,248,64,2,0,58,134,222,179,222,105,255,0,232,64,2,0,233,47,252,252,205,229,255,0,216,64,2,0,0,0,217,217,217,217,255,0,176,64,2,0,237,253,158,158,1,66,255,0,160,64,2,0,177,130,162,94,79,162,255,0,144,64,2,0,250,180,213,213,62,79,255,0,128,64,2,0,10,184,244,244,109,67,255,0,40,64,2,0,20,157,253,253,174,97,255,0,24,64,2,0,31,115,254,254,224,139,255,0,8,64,2,0,49,96,245,230,245,152,255,0,248,63,2,0,79,65,221,171,221,164,255,0,232,63,2,0,114,120,194,102,194,165,255,0,216,63,2,0,143,187,189,50,136,189,255,0,176,63,2,0,237,253,158,158,1,66,255,0,104,63,2,0,143,187,189,50,136,189,255,0,88,63,2,0,177,130,162,94,79,162,255,0,64,63,2,0,250,180,213,213,62,79,255,0,24,63,2,0,10,184,244,244])
.concat([109,67,255,0,8,63,2,0,20,157,253,253,174,97,255,0,248,62,2,0,31,115,254,254,224,139,255,0,232,62,2,0,42,64,255,255,255,191,255,0,216,62,2,0,49,96,245,230,245,152,255,0,200,62,2,0,79,65,221,171,221,164,255,0,160,62,2,0,114,120,194,102,194,165,255,0,144,62,2,0,13,164,252,252,141,89,255,0,128,62,2,0,42,64,255,255,255,191,255,0,80,62,2,0,81,77,213,153,213,148,255,0,32,62,2,0,254,225,215,215,25,28,255,0,16,62,2,0,20,157,253,253,174,97,255,0,0,62,2,0,79,65,221,171,221,164,255,0,240,61,2,0,143,196,186,43,131,186,255,0,224,61,2,0,254,225,215,215,25,28,255,0,208,61,2,0,20,157,253,253,174,97,255,0,64,61,2,0,42,64,255,255,255,191,255,0,48,61,2,0,79,65,221,171,221,164,255,0,32,61,2,0,143,196,186,43,131,186,255,0,16,61,2,0,250,180,213,213,62,79,255,0,224,60,2,0,13,164,252,252,141,89,255,0,208,60,2,0,31,115,254,254,224,139,255,0,176,60,2,0,49,96,245,230,245,152,255,0,160,60,2,0,81,77,213,153,213,148,255,0,144,60,2,0,143,187,189,50,136,189,255,0,128,60,2,0,250,180,213,213,62,79,255,0,80,60,2,0,13,164,252,252,141,89,255,0,64,60,2,0,31,115,254,254,224,139,255,0,48,60,2,0,42,64,255,255,255,191,255,0,32,60,2,0,49,96,245,230,245,152,255,0,248,59,2,0,81,77,213,153,213,148,255,0,232,59,2,0,143,187,189,50,136,189,255,0,216,59,2,0,250,180,213,213,62,79,255,0,200,59,2,0,10,184,244,244,109,67,255,0,184,59,2,0,20,157,253,253,174,97,255,0,168,59,2,0,31,115,254,254,224,139,255,0,128,59,2,0,49,96,245,230,245,152,255,0,112,59,2,0,79,65,221,171,221,164,255,0,80,59,2,0,114,120,194,102,194,165,255,0,16,59,2,0,143,187,189,50,136,189,255,0,216,58,2,0,250,180,213,213,62,79,255,0,200,58,2,0,10,184,244,244,109,67,255,0,184,58,2,0,20,157,253,253,174,97,255,0,168,58,2,0,31,115,254,254,224,139,255,0,152,58,2,0,42,64,255,255,255,191,255,0,136,58,2,0,49,96,245,230,245,152,255,0,96,58,2,0,79,65,221,171,221,164,255,0,80,58,2,0,114,120,194,102,194,165,255,0,64,58,2,0,143,187,189,50,136,189,255,0,48,58,2,0,147,15,255,240,248,255,255,0,224,57,2,0,24,35,250,250,235,215,255,0,208,57,2,0,127,255,255,0,255,255,255,0,152,57,2,0,113,128,255,127,255,212,255,0,120,57,2,0,127,15,255,240,255,255,255,0,72,57,2,0,42,26,245,245,245,220,255,0,56,57,2,0,23,58,255,255,228,196,255,0,248,56,2,0,0,0,0,0,0,0,255,0,216,56,2,0,25,49,255,255,235,205,255,0,192,56,2,0,170,255,255,0,0,255,255,0,176,56,2,0,192,206,226,138,43,226,255,0,104,56,2,0,0,190,165,165,42,42,255,0,80,56,2,0,23,99,222,222,184,135,255,0,48,56,2,0,128,103,160,95,158,160,255,0,32,56,2,0,63,255,255,127,255,0,255,0,16,56,2,0,17,218,210,210,105,30,255,0,0,56,2,0,11,175,255,255,127,80,255,0,208,55,2,0,154,147,237,100,149,237,255,0,192,55,2,0,33,34,255,255,248,220,255,0,176,55,2,0,246,231,220,220,20,60,255,0,160,55,2,0,127,255,255,0,255,255,255,0,128,55,2,0,170,255,139,0,0,139,255,0,104,55,2,0,127,255,139,0,139,139,255,0,80,55,2,0,30,239,184,184,134,11,255,0,24,55,2,0,0,0,169,169,169,169,255,0,8,55,2,0,85,255,100,0,100,0,255,0,248,54,2,0,0,0,169,169,169,169,255,0,200,54,2,0,39,110,189,189,183,107,255,0,176,54,2,0,212,255,139,139,0,139,255,0,152,54,2,0,58,142,107,85,107,47,255,0,128,54,2,0,23,255,255,255,140,0,255,0,96,54,2,0,198,192,204,153,50,204,255,0,72,54,2,0,0,255,139,139,0,0,255,0,56,54,2,0,10,121,233,233,150,122,255,0,32,54,2,0,85,61,188,143,188,143,255,0,8,54,2,0,175,143,139,72,61,139,255,0,240,53,2,0,127,103,79,47,79,79,255,0,192,53,2,0,127,103,79,47,79,79,255,0,168,53,2,0,128,255,209,0,206,209,255,0,152,53,2,0,199,255,211,148,0,211,255,0,136,53,2,0,232,235,255,255,20,147,255,0,56,53,2,0,138,255,255,0,191,255,255,0,40,53,2,0,0,0,105,105,105,105,255,0,24,53,2,0,0,0,105,105,105,105,255,0,8,53,2,0,148,225,255,30,144,255,255,0,248,52,2,0,0,206,178,178,34,34,255,0,224,52,2,0,28,15,255,255,250,240,255,0,176,52,2,0,85,192,139,34,139,34,255,0,160,52,2,0,212,255,255,255,0,255,255,0,144,52,2,0,0,0,220,220,220,220,255,0,120,52,2,0,170,7,255,248,248,255,255,0,88,52,2,0,35,255,255,255,215,0,255,0,72,52,2,0,30,217,218,218,165,32,255,0,56,52,2,0,0,0,128,128,128,128,255,0,40,52,2,0,85,255,128,0,128,0,255,0,16,52,2,0,59,208,255,173,255,47,255,0,0,52,2,0,0,0,128,128,128,128,255,0,216,51,2,0,85,15,255,240,255,240,255,0,200,51,2,0,233,150,255,255,105,180,255,0,184,51,2,0,0,140,205,205,92,92,255,0,152,51,2,0,194,255,130,75,0,130,255,0,112,51,2,0,42,15,255,255,255,240,255,0,96,51,2,0,38,106,240,240,230,140,255,0,80,51,2,0,170,20,250,230,230,250,255,0,56,51,2,0,240,15,255,255,240,245,255,0,40,51,2,0,64,255,252,124,252,0,255,0,16,51,2,0,38,49,255,255,250,205,255,0,232,50,2,0,137,63,230,173,216,230,255,0,96,50,2,0,0,119,240,240,128,128,255,0,80,50,2,0,127,31,255,224,255,255,255,0,48,50,2,0,42,40,250,250,250,210,255,0,240,49,2,0,0,0,211,211,211,211,255,0,224,49,2,0,85,100,238,144,238,144,255,0,208,49,2,0,0,0,211,211,211,211,255,0,160,49,2,0,248,73,255,255,182,193,255,0,136,49,2,0,12,132,255,255,160,122,255,0,112,49,2,0,125,209,178,32,178,170,255,0,48,49,2,0,143,117,250,135,206,250,255,0,24,49,2,0,148,56,153,119,136,153,255,0,0,49,2,0,148,56,153,119,136,153,255,0,232,48,2,0,151,52,222,176,196,222,255,0,176,48,2,0,42,31,255,255,255,224,255,0,160,48,2,0,85,255,255,0,255,0,255,0,144,48,2,0,85,192,205,50,205,50,255,0,128,48,2,0,21,20,250,250,240,230,255,0,112,48,2,0,212,255,255,255,0,255,255,0,96,48,2,0,0,255,128,128,0,0,255,0,48,48,2,0,113,128,205,102,205,170,255,0,232,47,2,0,170,255,205,0,0,205,255,0,176,47,2,0,204,152,211,186,85,211,255,0,96,47,2,0,183,124,219,147,112,219,255,0,24,47,2,0,103,169,179,60,179,113,255,0,0,47,2,0,176,143,238,123,104,238,255,0,232,46,2,0,111,255,250,0,250,154,255,0,208,46,2,0,125,167,209,72,209,204,255,0,184,46,2,0,228,228,199,199,21,133,255,0,152,46,2,0,170,198,112,25,25,112,255,0,104,46,2,0,106,9,255,245,255,250,255,0,88,46,2,0,4,30,255,255,228,225,255,0,72,46,2,0,26,73,255,255,228,181,255,0,48,46,2,0,25,81,255,255,222,173,255,0,248,45,2,0,170,255,128,0,0,128,255,0,232,45,2,0,27,23,253,253,245,230,255,0,176,45,2,0,42,255,128,128,128,0,255,0,152,45,2,0,56,192,142,107,142,35,255,0,112,45,2,0,27,255,255,255,165,0,255,0,96,45,2,0,11,255,255,255,69,0,255,0,56,45,2,0,214,123,218,218,112,214,255,0,248,44,2,0,38,72,238,238,232,170,255,0,224,44,2,0,85,100,251,152,251,152,255,0,200,44,2,0,127,67,238,175,238,238,255,0,120,44,2,0,241,124,219,219,112,147,255,0,104,44,2,0,26,41,255,255,239,213,255,0,72,44,2,0,20,70,255,255,218,185,255,0,56,44,2,0,20,176,205,205,133,63,255,0,40,44,2,0,247,63,255,255,192,203,255,0,24,44,2,0,212,70,221,221,160,221,255,0,240,43,2,0,132,59,230,176,224,230,255,0,224,43,2,0,212,255,128,128,0,128,255,0,208,43,2,0,0,255,255,255,0,0,255,0,192,43,2,0,0,61,188,188,143,143,255,0,152,43,2,0,159,181,225,65,105,225,255,0,112,43,2,0,17,220,139,139,69,19,255,0,96,43,2,0,4,138,250,250,128,114,255,0,80,43,2,0,19,154,244,244,164,96,255,0,56,43,2,0,103,170,139,46,139,87,255,0,40,43,2,0,17,16,255,255,245,238,255,0,248,42,2,0,13,183,160,160,82,45,255,0,232,42,2,0,0,0,192,192,192,192,255,0,216,42,2,0,139,108,235,135,206,235,255,0,200,42,2,0,175,143,205,106,90,205,255,0,112,42,2,0,148,56,144,112,128,144,255,0,88,42,2,0,148,56,144,112,128,144,255,0,72,42,2,0,0,5,255,255,250,250,255,0,48,42,2,0,106,255,255,0,255,127,255,0,32,42,2,0,146,155,180,70,130,180,255,0,16,42,2,0,24,84,210,210,180,140,255,0,232,41,2,0,127,255,128,0,128,128,255,0,216,41,2,0,212,29,216,216,191,216,255,0,200,41,2,0,6,184,255,255,99,71,255,0,168,41,2,0,123,182,224,64,224,208,255,0,88,41,2,0,212,115,238,238,130,238,255,0,72,41,2,0,27,68,245,245,222,179,255,0,56,41,2,0,0,0,255,255,255,255,255,0,40,41,2,0,0,0,245,245,245,245,255,0,24,41,2,0,42,255,255,255,255,0,255,0,0,41,2,0,56,192,205,154,205,50,255,0,216,40,2,0,45,67,252,247,252,185,255,0,200,40,2,0,68,91,221,173,221,142,255,0,184,40,2,0,98,178,163,49,163,84,255,0,112,40,2,0,42,50,255,255,255,204,255,0,72,40,2,0,62,85,230,194,230,153,255,0,56,40,2,0,85,100,198,120,198,121,255,0,40,40,2,0,99,187,132,35,132,67,255,0,24,40,2,0,42,50,255,255,255,204,255,0,8,40,2,0,62,85,230,194,230,153,255,0,248,39,2,0,85,100,198,120,198,121,255,0,208,39,2,0,98,178,163,49,163,84,255,0,192,39,2,0,107,255,104,0,104,55,255,0,176,39,2,0,42,50,255,255,255,204,255,0,144,39,2,0,55,81,240,217,240,163,255,0,96,39,2,0,68,91,221,173,221,142,255,0,80,39,2,0,85,100,198,120,198,121,255,0,64,39,2,0,98,178,163,49,163,84,255,0,48,39,2,0,107,255,104,0,104,55,255,0,32,39,2,0,42,50,255,255,255,204,255,0,16,39,2,0,55,81,240,217,240,163,255,0,200,35,2,0,68,91,221,173,221,142,255,0,184,35,2,0,85,100,198,120,198,121,255,0,128,35,2,0,96,158,171,65,171,93,255,0,112,35,2,0,99,187,132,35,132,67,255,0,64,35,2,0,108,255,90,0,90,50,255,0,0,35,2,0,42,25,255,255,255,229,255,0,240,34,2,0,45,67,252,247,252,185,255,0,224,34,2,0,55,81,240,217,240,163,255,0,208,34,2,0,68,91,221,173,221,142,255,0,192,34,2,0,85,100,198,120,198,121,255,0,144,34,2,0,96,158,171,65,171,93,255,0,128,34,2,0,99,187,132,35,132,67,255,0,112,34,2,0,108,255,90,0,90,50,255,0,96,34,2,0,42,25,255,255,255,229,255,0,48,34,2,0,45,67,252,247,252,185,255,0,32,34,2,0,55,81,240,217,240,163,255,0,16,34,2,0,68,91,221,173,221,142,255,0,0,34,2,0,85,100,198,120,198,121,255,0,240,33,2,0,96,158,171,65,171,93,255,0,224,33,2,0,99,187,132,35,132,67,255,0,168,33,2,0,107,255,104,0,104,55,255,0,152,33,2,0,110,255,69,0,69,41,255,0,112,33,2,0,49,73,248,237,248,177,255,0,88,33,2,0,117,97,205,127,205,187,255,0,248,32,2,0,144,194,184,44,127,184,255,0,232,32,2,0,42,50,255,255,255,204,255,0,216,32,2,0,99,66,218,161,218,180,255,0,200,32,2,0,132,170,196,65,182,196,255,0,184,32,2,0,150,203,168,34,94,168,255,0,168,32,2,0,42,50,255,255,255,204,255,0,128,32,2,0,99,66,218,161,218,180,255,0,112,32,2,0,132,170,196,65,182,196,255,0,96,32,2,0,144,194,184,44,127,184,255,0,80,32,2,0,164,191,148,37,52,148,255,0,24,32,2,0,42,50,255,255,255,204,255,0,8,32,2,0,69,58,233,199,233,180,255,0,232,31,2,0,117,97,205,127,205,187,255,0,208,31,2,0,132,170,196,65,182,196,255,0,168,31,2,0,144,194,184,44,127,184,255,0,152,31,2,0,164,191,148,37,52,148,255,0,112,31,2,0,42,50,255,255,255,204,255,0,88,31,2,0,69,58,233,199,233,180,255,0,64,31,2,0,117,97,205,127,205,187,255,0,48,31,2,0,132,170,196,65,182,196,255,0,200,30,2,0,139,216,192,29,145,192,255,0,184,30,2,0,150,203,168,34,94,168,255,0,160,30,2,0,158,231,132,12,44,132,255,0,136,30,2,0,42,38,255,255,255,217,255,0,120,30,2,0,49,73,248,237,248,177,255,0,104,30,2,0,69,58,233,199,233,180,255,0,64,30,2,0,117,97,205,127,205,187,255,0,48,30,2,0,132,170,196,65,182,196,255,0,16,30,2,0,139,216,192,29,145,192,255,0,0,30,2,0,150,203,168,34,94,168,255,0,200,29,2,0,158,231,132,12,44,132,255,0,176,29,2,0,42,38,255,255,255,217,255,0,160,29,2,0,49,73,248,237,248,177,255,0,144,29,2,0,69,58,233,199,233,180,255,0,128,29,2,0,117,97,205,127,205,187,255,0,96,29,2,0,132,170,196,65,182,196,255,0,48,29,2,0,139,216,192,29,145,192,255,0,32,29,2,0,150,203,168,34,94,168,255,0,16,29,2,0,164,191,148,37,52,148,255,0,0,29,2,0,158,231,88,8,29,88,255,0,208,28,2,0,37,66,255,255,247,188,255,0,176,28,2,0,28,175,254,254,196,79,255,0,160,28,2,0,16,238,217,217,95,14,255,0,144,28,2,0,42,42,255,255,255,212,255,0,128,28,2,0,28,112,254,254,217,142,255,0,112,28,2,0,22,213,254,254,153,41,255,0,72,28,2,0,15,252,204,204,76,2,255,0,56,28,2,0,42,42,255,255,255,212,255,0,40,28,2,0,28,112,254,254,217,142,255,0,16,28,2,0,22,213,254,254,153,41,255,0,136,27,2,0,16,238,217,217,95,14,255,0,120,27,2,0,13,248,153,153,52,4,255,0,104,27,2,0,42,42,255,255,255,212,255,0,88,27,2,0,31,109,254,254,227,145,255,0,72,27,2,0,28,175,254,254,196,79,255,0,56,27,2,0,22,213,254,254,153,41,255,0,16,27,2,0,16,238,217,217,95,14,255,0,0,27,2,0,13,248,153,153,52,4,255,0,240,26,2,0,42,42,255,255,255,212,255,0,208,26,2,0,31,109,254,254,227,145,255,0,168,26,2,0,28,175,254,254,196,79,255,0,152,26,2,0,22,213,254,254,153,41,255,0,136,26,2,0,18,233,236,236,112,20,255,0,120,26,2,0,15,252,204,204,76,2,255,0,104,26,2,0,12,247,140,140,45,4,255,0,88,26,2,0,42,25,255,255,255,229,255,0,48,26,2,0,37,66,255,255,247,188,255,0,32,26,2,0,31,109,254,254,227,145,255,0,16,26,2,0,28,175,254,254,196,79,255,0,240,25,2,0,22,213,254,254,153,41,255,0,192,25,2,0,18,233,236,236,112,20,255,0,176,25,2,0,15,252,204,204,76,2,255,0,160,25,2,0,12,247,140,140,45,4,255,0,144,25,2,0,42,25,255,255,255,229,255,0,128,25,2,0,37,66,255,255,247,188,255,0,112,25,2,0,31,109,254,254,227,145,255,0,72,25,2,0,28,175,254,254,196,79,255,0,56,25,2,0,22,213,254,254,153,41,255,0,40,25,2,0,18,233,236,236,112,20,255,0,192,24,2,0,15,252,204,204,76,2,255,0,144,24,2,0,13,248,153,153,52,4,255,0,128,24,2,0,13,240,102,102,37,6,255,0,112,24,2,0,34,95,255,255,237,160,255,0,96,24,2,0,24,178,254,254,178,76,255,0,80,24,2,0,5,221,240,240,59,32,255,0,56,24,2,0,42,77,255,255,255,178,255,0,8,24,2,0,29,162,254,254,204,92,255,0,248,23,2,0,17,194,253,253,141,60,255,0,232,23,2,0,254,225,227,227,26,28,255,0,216,23,2,0,42,77,255,255,255,178,255,0,152,23,2,0,29,162,254,254,204,92,255,0,136,23,2,0,17,194,253,253,141,60,255,0,120,23,2,0,5,221,240,240,59,32,255,0,88,23,2,0,246,255,189,189,0,38,255,0,72,23,2,0,42,77,255,255,255,178,255,0,56,23,2,0,30,136,254,254,217,118,255,0,16,23,2,0,24,178,254,254,178,76,255,0,0,23,2,0,17,194,253,253,141,60,255,0,240,22,2,0,5,221,240,240,59,32,255,0,224,22,2,0,246,255,189,189,0,38,255,0,120,22,2,0,42,77,255,255,255,178,255,0,104,22,2,0,30,136,254,254,217,118,255,0,88,22,2,0,24,178,254,254,178,76,255,0,72,22,2,0,17,194,253,253,141,60,255,0,56,22,2,0,7,212,252,252,78,42,255,0,40,22,2,0,254,225,227,227,26,28,255,0,0,22,2,0,245,255,177,177,0,38,255,0,240,21,2,0,42,50,255,255,255,204,255,0,224,21,2,0,34,95,255,255,237,160,255,0,160,21,2,0,30,136,254,254,217,118,255,0,96,21,2,0,24,178,254,254,178,76,255,0,80,21,2,0,17,194,253,253,141,60,255,0,16,21,2,0,7,212,252,252,78,42,255,0,248,20,2,0,254,225,227,227,26,28,255,0,232,20,2,0,245,255,177,177,0,38,255,0,208,20,2,0,42,50,255,255,255,204,255,0,168,20,2,0,34,95,255,255,237,160,255,0,136,20,2,0,30,136,254,254,217,118,255,0,120,20,2,0,24,178,254,254,178,76,255,0,96,20,2,0,17,194,253,253,141,60,255,0,0,20,2,0,7,212,252,252,78,42,255,0,240,19,2,0,254,225,227,227,26,28,255,0,224,19,2,0,246,255,189,189,0,38,255,0,184,19,2,0,242,255,128,128,0,38,255,0,160,19,2,0,147,15,255,240,248,255,255,0,144,19,2,0,24,35,250,250,235,215,255,0,104,19,2,0,23,36,255,255,239,219,255,0,88,19,2,0,23,36,238,238,223,204,255,0,72,19,2,0,23,36,205,205,192,176,255,0,56,19,2,0,24,34,139,139,131,120,255,0,248,18,2,0,113,128,255,127,255,212,255,0,216,18,2,0,113,128,255,127,255,212,255,0,200,18,2,0,113,128,238,118,238,198,255,0,184,18,2,0,113,128,205,102,205,170,255,0,168,18,2,0,113,128,139,69,139,116,255,0,160,18,2,0,127,15,255,240,255,255,255,0,120,18,2,0,127,15,255,240,255,255,255,0,112,18,2,0,127,15,238,224,238,238,255,0,104,18,2,0,127,14,205,193,205,205,255,0,96,18,2,0,127,14,139,131,139,139,255,0,48,18,2,0,42,26,245,245,245,220,255,0,8,18,2,0,23,58,255,255,228,196,255,0,248,17,2,0,23,58,255,255,228,196,255,0,240,17,2,0,23,58,238,238,213,183,255,0,232,17,2,0,22,58,205,205,183,158,255,0,224,17,2,0,23,58,139,139,125,107,255,0,192,17,2,0,0,0,0,0,0,0,255,0,176,17,2,0,25,49,255,255,235,205,255,0,168,17,2,0,170,255,255,0,0,255,255,0,160,17,2,0,170,255,255,0,0,255,255,0,104,17,2,0,170,255,238,0,0,238,255,0,72,17,2,0,170,255,205,0,0,205,255,0,64,17,2,0,170,255,139,0,0,139,255,0,48,17,2,0,192,206,226,138,43,226,255,0,40,17,2,0,0,190,165,165,42,42,255,0,32,17,2,0,0,191,255,255,64,64,255,0,0,17,2,0,0,191,238,238,59,59,255,0,248,16,2,0,0,191,205,205,51,51,255,0,240,16,2,0,0,190,139,139,35,35,255,0,216,16,2,0,23,99,222,222,184,135,255,0,184,16,2,0,23,100,255,255,211,155,255,0,144,16,2,0,23,99,238,238,197,145,255,0,128,16,2,0,23,99,205,205,170,125,255,0,112,16,2,0,23,99,139,139,115,85,255,0,96,16,2,0,128,103,160,95,158,160,255,0,80,16,2,0,131,103,255,152,245,255,255,0,40,16,2,0,131,102,238,142,229,238,255,0,24,16,2,0,131,103,205,122,197,205,255,0,8,16,2,0,131,102,139,83,134,139,255,0,232,15,2,0,63,255,255,127,255,0,255,0,200,15,2,0,63,255,255,127,255,0,255,0,160,15,2,0,63,255,238,118,238,0,255,0,144,15,2,0,63,255,205,102,205,0,255,0,128,15,2,0,63,255,139,69,139,0,255,0,112,15,2,0,17,218,210,210,105,30,255,0,96,15,2,0,17,219,255,255,127,36,255,0,56,15,2,0,17,219,238,238,118,33,255,0,40,15,2,0,17,218,205,205,102,29,255,0,24,15,2,0,17,220,139,139,69,19,255,0,16,15,2,0,11,175,255,255,127,80,255,0,216,14,2,0,7,169,255,255,114,86,255,0,192,14,2,0,6,169,238,238,106,80,255,0,184,14,2,0,6,169,205,205,91,69,255,0,176,14,2,0,6,168,139,139,62,47,255,0,160,14,2,0,154,147,237,100,149,237,255,0,144,14,2,0,33,34,255,255,248,220,255,0,96,14,2,0,33,34,255,255,248,220,255,0,80,14,2,0,34,35,238,238,232,205,255,0,64,14,2,0,34,34,205,205,200,177,255,0,48,14,2,0,35,34,139,139,136,120,255,0,16,14,2,0,246,231,220,220,20,60,255,0,240,13,2,0,127,255,255,0,255,255,255,0,232,13,2,0,127,255,255,0,255,255,255,0,224,13,2,0,127,255,238,0,238,238,255,0,216,13,2,0,127,255,205,0,205,205,255,0,208,13,2,0,127,255,139,0,139,139,255,0,168,13,2,0,30,239,184,184,134,11,255,0,152,13,2,0,30,240,255,255,185,15,255,0,136,13,2,0,30,240,238,238,173,14,255,0,120,13,2,0,30,240,205,205,149,12,255,0,32,13,2,0,30,240,139,139,101,8,255,0,0,13,2,0,85,255,100,0,100,0,255,0,240,12,2,0,39,110,189,189,183,107,255,0,224,12,2,0,58,142,107,85,107,47,255,0,208,12,2,0,58,143,255,202,255,112,255,0,192,12,2,0,58,143,238,188,238,104,255,0,152,12,2,0,58,143,205,162,205,90,255,0,136,12,2,0,58,143,139,110,139,61,255,0,120,12,2,0,23,255,255,255,140,0,255,0,104,12,2,0,21,255,255,255,127,0,255,0,24,12,2,0,21,255,238,238,118,0,255,0,248,11,2,0,21,255,205,205,102,0,255,0,224,11,2,0,21,255,139,139,69,0,255,0,192,11,2,0,198,192,204,153,50,204,255,0,176,11,2,0,198,193,255,191,62,255,255,0,160,11,2,0,198,192,238,178,58,238,255,0,120,11,2,0,198,192,205,154,50,205,255,0,96,11,2,0,198,192,139,104,34,139,255,0,80,11,2,0,10,121,233,233,150,122,255,0,56,11,2,0,85,61,188,143,188,143,255,0,176,10,2,0,85,62,255,193,255,193,255,0,152,10,2,0,85,62,238,180,238,180,255,0,136,10,2,0,85,62,205,155,205,155,255,0,104,10,2,0,85,62,139,105,139,105,255,0,88,10,2,0,175,143,139,72,61,139,255,0,56,10,2,0,127,103,79,47,79,79,255,0,16,10,2,0,127,104,255,151,255,255,255,0,0,10,2,0,127,103,238,141,238,238,255,0,224,9,2,0,127,104,205,121,205,205,255,0,208,9,2,0,127,104,139,82,139,139,255,0,144,9,2,0,127,103,79,47,79,79,255,0,120,9,2,0,128,255,209,0,206,209,255,0,96,9,2,0,199,255,211,148,0,211,255,0,80,9,2,0,232,235,255,255,20,147,255,0,64,9,2,0,232,235,255,255,20,147,255,0,48,9,2,0,232,235,238,238,18,137,255,0,16,9,2,0,232,235,205,205,16,118,255,0,0,9,2,0,231,236,139,139,10,80,255,0,216,8,2,0,138,255,255,0,191,255,255,0,200,8,2,0,138,255,255,0,191,255,255,0,168,8,2,0,138,255,238,0,178,238,255,0,96,8,2,0,138,255,205,0,154,205,255,0,80,8,2,0,138,255,139,0,104,139,255,0,0,8,2,0,0,0,105,105,105,105,255,0,248,7,2,0,0,0,105,105,105,105,255,0,232,7,2,0,148,225,255,30,144,255,255,0,208,7,2,0,148,225,255,30,144,255,255,0,192,7,2,0,148,225,238,28,134,238,255,0,160,7,2,0,148,225,205,24,116,205,255,0,144,7,2,0,148,225,139,16,78,139,255,0,88,7,2,0,0,206,178,178,34,34,255,0,56,7,2,0,0,207,255,255,48,48,255,0,40,7,2,0,0,207,238,238,44,44,255,0,24,7,2,0,0,207,205,205,38,38,255,0,8,7,2,0,0,207,139,139,26,26,255,0,248,6,2,0,28,15,255,255,250,240,255,0,224,6,2,0,85,192,139,34,139,34,255,0,208,6,2,0,0,0,220,220,220,220,255,0,176,6,2,0,170,7,255,248,248,255,255,0,152,6,2,0,35,255,255,255,215,0,255,0,120,6,2,0,35,255,255,255,215,0,255,0,96,6,2,0,35,255,238,238,201,0,255,0,88,6,2,0,35,255,205,205,173,0,255,0,80,6,2,0,35,255,139,139,117,0,255,0,64,6,2,0,30,217,218,218,165,32,255,0,48,6,2,0,30,218,255,255,193,37,255,0,24,6,2,0,30,218,238,238,180,34,255,0,8,6,2,0,30,218,205,205,155,29,255,0,232,5,2,0,30,218,139,139,105,20,255,0,208,5,2,0,0,0,192,192,192,192,255,0,184,5,2,0,0,0,0,0,0,0,255,0,168,5,2,0,0,0,3,3,3,3,255,0,160,5,2,0,0,0,26,26,26,26,255,0,152,5,2,0,0,0,255,255,255,255,255,0,144,5,2,0,0,0,28,28,28,28,255,0,136,5,2,0,0,0,31,31,31,31,255,0,120,5,2,0,0,0,33,33,33,33,255,0,112,5,2,0,0,0,36,36,36,36,255,0,88,5,2,0,0,0,38,38,38,38,255,0,80,5,2,0,0,0,41,41,41,41,255,0,48,5,2,0,0,0,43,43,43,43,255,0,24,5,2,0,0,0,46,46,46,46,255,0,16,5,2,0,0,0,48,48,48,48,255,0,8,5,2,0,0,0,5,5,5,5,255,0,0,5,2,0,0,0,51,51,51,51,255,0,248,4,2,0,0,0,54,54,54,54,255,0,216,4,2,0,0,0,56,56,56,56,255,0,208,4,2,0,0,0,59,59,59,59,255,0,184,4,2,0,0,0,61,61,61,61,255,0,176,4,2,0,0,0,64,64,64,64,255,0,136,4,2,0,0,0,66,66,66,66,255,0,120,4,2,0,0,0,69,69,69,69,255,0,112,4,2,0,0,0,71,71,71,71,255,0,104,4,2,0,0,0,74,74,74,74,255,0,96,4,2,0,0,0,8,8,8,8,255,0,88,4,2,0,0,0,77,77,77,77,255,0,72,4,2,0,0,0,79,79,79,79,255,0,64,4,2,0,0,0,82,82,82,82,255,0,40,4,2,0,0,0,84,84,84,84,255,0,32,4,2,0,0,0,87,87,87,87,255,0,208,3,2,0,0,0,89,89,89,89,255,0,176,3,2,0,0,0,92,92,92,92,255,0,168,3,2,0,0,0,94,94,94,94,255,0,160,3,2,0,0,0,97,97,97,97,255,0,152,3,2,0,0,0,99,99,99,99,255,0,144,3,2,0,0,0,10,10,10,10,255,0,128,3,2,0,0,0,102,102,102,102,255,0,120,3,2,0,0,0,105,105,105,105,255,0,96,3,2,0,0,0,107,107,107,107,255,0,88,3,2,0,0,0,110,110,110,110,255,0,48,3,2,0,0,0,112,112,112,112,255,0,32,3,2,0,0,0,115,115,115,115,255,0,16,3,2,0,0,0,117,117,117,117,255,0,0,3,2,0,0,0,120,120,120,120,255,0,248,2,2,0,0,0,122,122,122,122,255,0,240,2,2,0,0,0,125,125,125,125,255,0,184,2,2,0,0,0,13,13,13,13,255,0,168,2,2,0,0,0,127,127,127,127,255,0,144,2,2,0,0,0,130,130,130,130,255,0,128,2,2,0,0,0,133,133,133,133,255,0,8,2,2,0,0,0,135,135,135,135,255,0,248,1,2,0,0,0,138,138,138,138,255,0,240,1,2,0,0,0,140,140,140,140,255,0,216,1,2,0,0,0,143,143,143,143,255,0,208,1,2,0,0,0,145,145,145,145,255,0,200,1,2,0,0,0,148,148,148,148,255,0,176,1,2,0,0,0,150,150,150,150,255,0,168,1,2,0,0,0,15,15,15,15,255,0,144,1,2,0,0,0,153,153,153,153,255,0,136,1,2,0,0,0,156,156,156,156,255,0,112,1,2,0,0,0,158,158,158,158,255,0,88,1,2,0,0,0,161,161,161,161,255,0,64,1,2,0,0,0,163,163,163,163,255,0,56,1,2,0,0,0,166,166,166,166,255,0,48,1,2,0,0,0,168,168,168,168,255,0,40,1,2,0,0,0,171,171,171,171,255,0,16,1,2,0,0,0,173,173,173,173,255,0,8,1,2,0,0,0,176,176,176,176,255,0,240,0,2,0,0,0,18,18,18,18,255,0,232,0,2,0,0,0,179,179,179,179,255,0,208,0,2,0,0,0,181,181,181,181,255,0,176,0,2,0,0,0,184,184,184,184,255,0,168,0,2,0,0,0,186,186,186,186,255,0,160,0,2,0,0,0,189,189,189,189,255,0,128,0,2,0,0,0,191,191,191,191,255,0,120,0,2,0,0,0,194,194,194,194,255,0,104,0,2,0,0,0,196,196,196,196,255,0,96,0,2,0,0,0,199,199,199,199,255,0,72,0,2,0,0,0,201,201,201,201,255,0,64,0,2,0,0,0,20,20,20,20,255,0,24,0,2,0,0,0,204,204,204,204,255,0,248,255,1,0,0,0,207,207,207,207,255,0,240,255,1,0,0,0,209,209,209,209,255,0,232,255,1,0,0,0,212,212,212,212,255,0,224,255,1,0,0,0,214,214,214,214,255,0,216,255,1,0,0,0,217,217,217,217,255,0,200,255,1,0,0,0,219,219,219,219,255,0,192,255,1,0,0,0,222,222,222,222,255,0,168,255,1,0,0,0,224,224,224,224,255,0,152,255,1,0,0,0,227,227,227,227,255,0,136,255,1,0,0,0,23,23,23,23,255,0,112,255,1,0,0,0,229,229,229,229,255,0,104,255,1,0,0,0,232,232,232,232,255,0,96,255,1,0,0,0,235,235,235,235,255,0,88,255,1,0,0,0,237,237,237,237,255,0,80,255,1,0,0,0,240,240,240,240,255,0,64,255,1,0,0,0,242,242,242,242,255,0,56,255,1,0,0,0,245,245,245,245,255,0,32,255,1,0,0,0,247,247,247,247,255,0,8,255,1,0,0,0,250,250,250,250,255,0,240,254,1,0,0,0,252,252,252,252,255,0,176,254,1,0,85,255,255,0,255,0,255,0,168,254,1,0,85,255,255,0,255,0,255,0,160,254,1,0,85,255,238,0,238,0,255,0,152,254,1,0,85,255,205,0,205,0,255,0,144,254,1,0,85,255,139,0,139,0,255,0,120,254,1,0,59,208,255,173,255,47,255,0,112,254,1,0,0,0,192,192,192,192,255,0,88,254,1,0,0,0,0,0,0,0,255,0,80,254,1,0,0,0,3,3,3,3,255,0,56,254,1,0,0,0,26,26,26,26,255,0,24,254,1,0,0,0,255,255,255,255,255,0,8,254,1,0,0,0,28,28,28,28,255,0,0,254,1,0,0,0,31,31,31,31,255,0,248,253,1,0,0,0,33,33,33,33,255,0,240,253,1,0,0,0,36,36,36,36,255,0,216,253,1,0,0,0,38,38,38,38,255,0,200,253,1,0,0,0,41,41,41,41,255,0,176,253,1,0,0,0,43,43,43,43,255,0,168,253,1,0,0,0,46,46,46,46,255,0,120,253,1,0,0,0,48,48,48,48,255,0,104,253,1,0,0,0,5,5,5,5,255,0,96,253,1,0,0,0,51,51,51,51,255,0,88,253,1,0,0,0,54,54,54,54,255,0,80,253,1,0,0,0,56,56,56,56,255,0,72,253,1,0,0,0,59,59,59,59,255,0,56,253,1,0,0,0,61,61,61,61,255,0,48,253,1,0,0,0,64,64,64,64,255,0,24,253,1,0,0,0,66,66,66,66,255,0,16,253,1,0,0,0,69,69,69,69,255,0,208,252,1,0,0,0,71,71,71,71,255,0,144,252,1,0,0,0,74,74,74,74,255,0,136,252,1,0,0,0,8,8,8,8,255,0,128,252,1,0,0,0,77,77,77,77,255,0,88,252,1,0,0,0,79,79,79,79,255,0,80,252,1,0,0,0,82,82,82,82,255,0,64,252,1,0,0,0,84,84,84,84,255,0,56,252,1,0,0,0,87,87,87,87,255,0,32,252,1,0,0,0,89,89,89,89,255,0,24,252,1,0,0,0,92,92,92,92,255,0,232,251,1,0,0,0,94,94,94,94,255,0,224,251,1,0,0,0,97,97,97,97,255,0,208,251,1,0,0,0,99,99,99,99,255,0,192,251,1,0,0,0,10,10,10,10,255,0,184,251,1,0,0,0,102,102,102,102,255,0,176,251,1,0,0,0,105,105,105,105,255,0,160,251,1,0,0,0,107,107,107,107,255,0,144,251,1,0,0,0,110,110,110,110,255,0,120,251,1,0,0,0,112,112,112,112,255,0,112,251,1,0,0,0,115,115,115,115,255,0,56,251,1,0,0,0,117,117,117,117,255,0,48,251,1,0,0,0,120,120,120,120,255,0,40,251,1,0,0,0,122,122,122,122,255,0,24,251,1,0,0,0,125,125,125,125,255,0,16,251,1,0,0,0,13,13,13,13,255,0,8,251,1,0,0,0,127,127,127,127,255,0,248,250,1,0,0,0,130,130,130,130,255,0,240,250,1,0,0,0,133,133,133,133,255,0,216,250,1,0,0,0,135,135,135,135,255,0,208,250,1,0,0,0,138,138,138,138,255,0,160,250,1,0,0,0,140,140,140,140,255,0,152,250,1,0,0,0,143,143,143,143,255,0,120,250,1,0,0,0,145,145,145,145,255,0,112,250,1,0,0,0,148,148,148,148,255,0,104,250,1,0,0,0,150,150,150,150,255,0,96,250,1,0,0,0,15,15,15,15,255,0,72,250,1,0,0,0,153,153,153,153,255,0,64,250,1,0,0,0,156,156,156,156,255,0,40,250,1,0,0,0,158,158,158,158,255,0,232,249,1,0,0,0,161,161,161,161,255,0,192,249,1,0,0,0,163,163,163,163,255,0,128,249,1,0,0,0,166,166,166,166,255,0,120,249,1,0,0,0,168,168,168,168,255,0,112,249,1,0,0,0,171,171,171,171,255,0,104,249,1,0,0,0,173,173,173,173,255,0,88,249,1,0,0,0,176,176,176,176,255,0,72,249,1,0,0,0,18,18,18,18,255,0,64,249,1,0,0,0,179,179,179,179,255,0,40,249,1,0,0,0,181,181,181,181,255,0,16,249,1,0,0,0,184,184,184,184,255,0,216,248,1,0,0,0,186,186,186,186,255,0,200,248,1,0,0,0,189,189,189,189,255,0,192,248,1,0,0,0,191,191,191,191,255,0,184,248,1,0,0,0,194,194,194,194,255,0,176,248,1,0,0,0,196,196,196,196,255,0,168,248,1,0,0,0,199,199,199,199,255,0,152,248,1,0,0,0,201,201,201,201,255,0,144,248,1,0,0,0,20,20,20,20,255,0,120,248,1,0,0,0,204,204,204,204,255,0,112,248,1,0,0,0,207,207,207,207,255,0,40,248,1,0,0,0,209,209,209,209,255,0,32,248,1,0,0,0,212,212,212,212,255,0,24,248,1,0,0,0,214,214,214,214,255,0,16,248,1,0,0,0,217,217,217,217,255,0,8,248,1,0,0,0,219,219,219,219,255,0,0,248,1,0,0,0,222,222,222,222,255,0,240,247,1,0,0,0,224,224,224,224,255,0,232,247,1,0,0,0,227,227,227,227,255,0,208,247,1,0,0,0,23,23,23,23,255,0,184,247,1,0,0,0,229,229,229,229,255,0,120,247,1,0,0,0,232,232,232,232,255,0,112,247,1,0,0,0,235,235,235,235,255,0,104,247,1,0,0,0,237,237,237,237,255,0,96,247,1,0,0,0,240,240,240,240,255,0,88,247,1,0,0,0,242,242,242,242,255,0,80,247,1,0,0,0,245,245,245,245,255,0,64,247,1,0,0,0,247,247,247,247,255,0,56,247,1,0,0,0,250,250,250,250,255,0,32,247,1,0,0,0,252,252,252,252,255,0,16,247,1,0,85,15,255,240,255,240,255,0,240,246,1,0,85,15,255,240,255,240,255,0,224,246,1,0,85,15,238,224,238,224,255,0,208,246,1,0,85,14,205,193,205,193,255,0,176,246,1,0,85,14,139,131,139,131,255,0,168,246,1,0,233,150,255,255,105,180,255,0,152,246,1,0,234,145,255,255,110,180,255,0,120,246,1,0,235,141,238,238,106,167,255,0,104,246,1,0,236,135,205,205,96,144,255,0,72,246,1,0,234,148,139,139,58,98,255,0,56,246,1,0,0,140,205,205,92,92,255,0,16,246,1,0,0,148,255,255,106,106,255,0,0,246,1,0,0,148,238,238,99,99,255,0,240,245,1,0,0,149,205,205,85,85,255,0,224,245,1,0,0,148,139,139,58,58,255,0,216,245,1,0,194,255,130,75,0,130,255,0,208,245,1,0,42,0,255,255,255,254,0,0,192,245,1,0,42,15,255,255,255,240,255,0,184,245,1,0,42,15,255,255,255,240,255,0,160,245,1,0,42,15,238,238,238,224,255,0,128,245,1,0,42,14,205,205,205,193,255,0,240,244,1,0,42,14,139,139,139,131,255,0,224,244,1,0,38,106,240,240,230,140,255,0,216,244,1,0,39,112,255,255,246,143,255,0,208,244,1,0,39,112,238,238,230,133,255,0,184,244,1,0,39,111,205,205,198,115,255,0,176,244,1,0,39,111,139,139,134,78,255,0,152,244,1,0,170,20,250,230,230,250,255,0,136,244,1,0,240,15,255,255,240,245,255,0,104,244,1,0,240,15,255,255,240,245,255,0,32,244,1,0,239,15,238,238,224,229,255,0,216,243,1,0,240,14,205,205,193,197,255,0,200,243,1,0,239,14,139,139,131,134,255,0,176,243,1,0,64,255,252,124,252,0,255,0,144,243,1,0,38,49,255,255,250,205,255,0,128,243,1,0,38,49,255,255,250,205,255,0,112,243,1,0,37,50,238,238,233,191,255,0,88,243,1,0,38,49,205,205,201,165,255,0,64,243,1,0,39,49,139,139,137,112,255,0,32,243,1,0,137,63,230,173,216,230,255,0,16,243,1,0,138,64,255,191,239,255,255,0,152,242,1,0,138,64,238,178,223,238,255,0,136,242,1,0,138,63,205,154,192,205,255,0,120,242,1,0,137,64,139,104,131,139,255,0,80,242,1,0,0,119,240,240,128,128,255,0,64,242,1,0,127,31,255,224,255,255,255,0,48,242,1,0,127,31,255,224,255,255,255,0,24,242,1,0,127,31,238,209,238,238,255,0,8,242,1,0,127,31,205,180,205,205,255,0,232,241,1,0,127,31,139,122,139,139,255,0,216,241,1,0,35,115,238,238,221,130,255,0,176,241,1,0,35,116,255,255,236,139,255,0,160,241,1,0,35,115,238,238,220,130,255,0,120,241,1,0,35,115,205,205,190,112,255,0,104,241,1,0,35,115,139,139,129,76,255,0,80,241,1,0,42,40,250,250,250,210,255,0,64,241,1,0,0,0,211,211,211,211,255,0,32,241,1,0,0,0,211,211,211,211,255,0,208,240,1,0,248,73,255,255,182,193,255,0,176,240,1,0,249,81,255,255,174,185,255,0,144,240,1,0,248,81,238,238,162,173,255,0,112,240,1,0,249,80,205,205,140,149,255,0,88,240,1,0,249,80,139,139,95,101,255,0,72,240,1,0,12,132,255,255,160,122,255,0,56,240,1,0,12,132,255,255,160,122,255,0,40,240,1,0,11,132,238,238,149,114,255,0,24,240,1,0,12,133,205,205,129,98,255,0,200,239,1,0,12,133,139,139,87,66,255,0,184,239,1,0,125,209,178,32,178,170,255,0,152,239,1,0,143,117,250,135,206,250,255,0,136,239,1,0,143,79,255,176,226,255,255,0,96,239,1,0,143,79,238,164,211,238,255,0,72,239,1,0,142,79,205,141,182,205,255,0,56,239,1,0,143,78,139,96,123,139,255,0,32,239,1,0,175,143,255,132,112,255,255,0,16,239,1,0,148,56,153,119,136,153,255,0,0,239,1,0,148,56,153,119,136,153,255,0,232,238,1,0,151,52,222,176,196,222,255,0,216,238,1,0,151,53,255,202,225,255,255,0,184,238,1,0,151,53,238,188,210,238,255,0,144,238,1,0,151,53,205,162,181,205,255,0,104,238,1,0,150,53,139,110,123,139,255,0,88,238,1,0,42,31,255,255,255,224,255,0,56,238,1,0,42,31,255,255,255,224,255,0,40,238,1,0,42,31,238,238,238,209,255,0,24,238,1,0,42,31,205,205,205,180,255,0,8,238,1,0,42,31,139,139,139,122,255,0,240,237,1,0,85,192,205,50,205,50,255,0,232,237,1,0,21,20,250,250,240,230,255,0,208,237,1,0,212,255,255,255,0,255,255,0,176,237,1,0,212,255,255,255,0,255,255,0,160,237,1,0,212,255,238,238,0,238,255,0,144,237,1,0,212,255,205,205,0,205,255,0,128,237,1,0,212,255,139,139,0,139,255,0,120,237,1,0,239,185,176,176,48,96,255,0,112,237,1,0,228,203,255,255,52,179,255,0,104,237,1,0,228,203,238,238,48,167,255,0,88,237,1,0,228,204,205,205,41,144,255,0,80,237,1,0,228,203,139,139,28,98,255,0,40,237,1,0,113,128,205,102,205,170,255,0,24,237,1,0,170,255,205,0,0,205,255,0,232,236,1,0,204,152,211,186,85,211,255,0,216,236,1,0,203,153,255,224,102,255,255,0,200,236,1,0,203,153,238,209,95,238,255,0,184,236,1,0,203,153,205,180,82,205,255,0,152,236,1,0,203,154,139,122,55,139,255,0,136,236,1,0,183,124,219,147,112,219,255,0,104,236,1,0,183,125,255,171,130,255,255,0,88,236,1,0,183,125,238,159,121,238,255,0,56,236,1,0,183,125,205,137,104,205,255,0,40,236,1,0,183,124,139,93,71,139,255,0,240,235,1,0,103,169,179,60,179,113,255,0,224,235,1,0,176,143,238,123,104,238,255,0,200,235,1,0,111,255,250,0,250,154,255,0,184,235,1,0,125,167,209,72,209,204,255,0,168,235,1,0,228,228,199,199,21,133,255,0,152,235,1,0,170,198,112,25,25,112,255,0,128,235,1,0,106,9,255,245,255,250,255,0,112,235,1,0,4,30,255,255,228,225,255,0,80,235,1,0,4,30,255,255,228,225,255,0,56,235,1,0,4,30,238,238,213,210,255,0,176,234,1,0,3,29,205,205,183,181,255,0,144,234,1,0,5,29,139,139,125,123,255,0,128,234,1,0,26,73,255,255,228,181,255,0,112,234,1,0,25,81,255,255,222,173,255,0,96,234,1,0,25,81,255,255,222,173,255,0,80,234,1,0,25,82,238,238,207,161,255,0,56,234,1,0,25,82,205,205,179,139,255,0,40,234,1,0,25,82,139,139,121,94,255,0,16,234,1,0,170,255,128,0,0,128,255,0,0,234,1,0,170,255,128,0,0,128,255,0,232,233,1,0,42,0,255,255,255,254,0,0,224,233,1,0,27,23,253,253,245,230,255,0,192,233,1,0,56,192,142,107,142,35,255,0,168,233,1,0,56,193,255,192,255,62,255,0])
.concat([144,233,1,0,56,192,238,179,238,58,255,0,128,233,1,0,56,192,205,154,205,50,255,0,8,233,1,0,56,192,139,105,139,34,255,0,248,232,1,0,27,255,255,255,165,0,255,0,208,232,1,0,27,255,255,255,165,0,255,0,160,232,1,0,27,255,238,238,154,0,255,0,120,232,1,0,27,255,205,205,133,0,255,0,112,232,1,0,27,255,139,139,90,0,255,0,96,232,1,0,11,255,255,255,69,0,255,0,64,232,1,0,11,255,255,255,69,0,255,0,48,232,1,0,11,255,238,238,64,0,255,0,32,232,1,0,11,255,205,205,55,0,255,0,8,232,1,0,11,255,139,139,37,0,255,0,0,232,1,0,214,123,218,218,112,214,255,0,232,231,1,0,214,124,255,255,131,250,255,0,224,231,1,0,214,124,238,238,122,233,255,0,208,231,1,0,214,124,205,205,105,201,255,0,200,231,1,0,213,124,139,139,71,137,255,0,176,231,1,0,38,72,238,238,232,170,255,0,160,231,1,0,85,100,251,152,251,152,255,0,144,231,1,0,85,101,255,154,255,154,255,0,128,231,1,0,85,100,238,144,238,144,255,0,96,231,1,0,85,100,205,124,205,124,255,0,80,231,1,0,85,100,139,84,139,84,255,0,48,231,1,0,127,67,238,175,238,238,255,0,32,231,1,0,127,68,255,187,255,255,255,0,16,231,1,0,127,68,238,174,238,238,255,0,216,230,1,0,127,68,205,150,205,205,255,0,200,230,1,0,127,67,139,102,139,139,255,0,184,230,1,0,241,124,219,219,112,147,255,0,168,230,1,0,241,125,255,255,130,171,255,0,152,230,1,0,241,125,238,238,121,159,255,0,128,230,1,0,241,125,205,205,104,137,255,0,104,230,1,0,241,124,139,139,71,93,255,0,72,230,1,0,26,41,255,255,239,213,255,0,56,230,1,0,20,70,255,255,218,185,255,0,40,230,1,0,20,70,255,255,218,185,255,0,8,230,1,0,19,69,238,238,203,173,255,0,248,229,1,0,19,69,205,205,175,149,255,0,232,229,1,0,20,69,139,139,119,101,255,0,224,229,1,0,20,176,205,205,133,63,255,0,216,229,1,0,247,63,255,255,192,203,255,0,200,229,1,0,245,73,255,255,181,197,255,0,192,229,1,0,245,73,238,238,169,184,255,0,168,229,1,0,245,74,205,205,145,158,255,0,160,229,1,0,245,73,139,139,99,108,255,0,144,229,1,0,212,70,221,221,160,221,255,0,136,229,1,0,212,68,255,255,187,255,255,0,128,229,1,0,212,68,238,238,174,238,255,0,120,229,1,0,212,68,205,205,150,205,255,0,112,229,1,0,212,67,139,139,102,139,255,0,96,229,1,0,132,59,230,176,224,230,255,0,80,229,1,0,196,221,240,160,32,240,255,0,72,229,1,0,191,207,255,155,48,255,255,0,48,229,1,0,192,207,238,145,44,238,255,0,24,229,1,0,192,207,205,125,38,205,255,0,16,229,1,0,192,207,139,85,26,139,255,0,8,229,1,0,0,255,255,255,0,0,255,0,0,229,1,0,0,255,255,255,0,0,255,0,248,228,1,0,0,255,238,238,0,0,255,0,240,228,1,0,0,255,205,205,0,0,255,0,232,228,1,0,0,255,139,139,0,0,255,0,208,228,1,0,0,61,188,188,143,143,255,0,192,228,1,0,0,62,255,255,193,193,255,0,160,228,1,0,0,62,238,238,180,180,255,0,136,228,1,0,0,62,205,205,155,155,255,0,112,228,1,0,0,62,139,139,105,105,255,0,96,228,1,0,159,181,225,65,105,225,255,0,80,228,1,0,159,183,255,72,118,255,255,0,64,228,1,0,159,183,238,67,110,238,255,0,48,228,1,0,159,182,205,58,95,205,255,0,24,228,1,0,159,183,139,39,64,139,255,0,248,227,1,0,17,220,139,139,69,19,255,0,240,227,1,0,4,138,250,250,128,114,255,0,216,227,1,0,9,150,255,255,140,105,255,0,208,227,1,0,9,150,238,238,130,98,255,0,200,227,1,0,9,150,205,205,112,84,255,0,192,227,1,0,9,150,139,139,76,57,255,0,176,227,1,0,19,154,244,244,164,96,255,0,160,227,1,0,103,170,139,46,139,87,255,0,144,227,1,0,103,171,255,84,255,159,255,0,128,227,1,0,103,171,238,78,238,148,255,0,104,227,1,0,103,171,205,67,205,128,255,0,88,227,1,0,103,170,139,46,139,87,255,0,56,227,1,0,17,16,255,255,245,238,255,0,40,227,1,0,17,16,255,255,245,238,255,0,152,226,1,0,18,17,238,238,229,222,255,0,128,226,1,0,18,17,205,205,197,191,255,0,112,226,1,0,18,16,139,139,134,130,255,0,104,226,1,0,13,183,160,160,82,45,255,0,96,226,1,0,13,184,255,255,130,71,255,0,88,226,1,0,13,184,238,238,121,66,255,0,72,226,1,0,13,184,205,205,104,57,255,0,64,226,1,0,13,185,139,139,71,38,255,0,40,226,1,0,139,108,235,135,206,235,255,0,24,226,1,0,144,120,255,135,206,255,255,0,248,225,1,0,144,120,238,126,192,238,255,0,232,225,1,0,144,120,205,108,166,205,255,0,192,225,1,0,145,119,139,74,112,139,255,0,168,225,1,0,175,143,205,106,90,205,255,0,128,225,1,0,175,144,255,131,111,255,255,0,112,225,1,0,175,144,238,122,103,238,255,0,88,225,1,0,175,144,205,105,89,205,255,0,64,225,1,0,175,144,139,71,60,139,255,0,32,225,1,0,148,56,144,112,128,144,255,0,16,225,1,0,149,56,255,198,226,255,255,0,192,224,1,0,149,56,238,185,211,238,255,0,176,224,1,0,148,57,205,159,182,205,255,0,160,224,1,0,149,56,139,108,123,139,255,0,136,224,1,0,148,56,144,112,128,144,255,0,128,224,1,0,0,5,255,255,250,250,255,0,120,224,1,0,0,5,255,255,250,250,255,0,104,224,1,0,0,5,238,238,233,233,255,0,96,224,1,0,0,4,205,205,201,201,255,0,72,224,1,0,0,3,139,139,137,137,255,0,56,224,1,0,106,255,255,0,255,127,255,0,40,224,1,0,106,255,255,0,255,127,255,0,24,224,1,0,106,255,238,0,238,118,255,0,248,223,1,0,106,255,205,0,205,102,255,0,232,223,1,0,106,255,139,0,139,69,255,0,216,223,1,0,146,155,180,70,130,180,255,0,200,223,1,0,146,156,255,99,184,255,255,0,176,223,1,0,146,156,238,92,172,238,255,0,152,223,1,0,146,156,205,79,148,205,255,0,120,223,1,0,147,155,139,54,100,139,255,0,112,223,1,0,24,84,210,210,180,140,255,0,104,223,1,0,20,176,255,255,165,79,255,0,96,223,1,0,20,176,238,238,154,73,255,0,80,223,1,0,20,176,205,205,133,63,255,0,72,223,1,0,20,176,139,139,90,43,255,0,64,223,1,0,212,29,216,216,191,216,255,0,48,223,1,0,212,30,255,255,225,255,255,0,24,223,1,0,212,30,238,238,210,238,255,0,8,223,1,0,212,29,205,205,181,205,255,0,208,222,1,0,212,29,139,139,123,139,255,0,200,222,1,0,6,184,255,255,99,71,255,0,192,222,1,0,6,184,255,255,99,71,255,0,168,222,1,0,6,184,238,238,92,66,255,0,160,222,1,0,6,184,205,205,79,57,255,0,152,222,1,0,6,185,139,139,54,38,255,0,128,222,1,0,42,0,255,255,255,254,0,0,112,222,1,0,123,182,224,64,224,208,255,0,88,222,1,0,129,255,255,0,245,255,255,0,72,222,1,0,129,255,238,0,229,238,255,0,40,222,1,0,129,255,205,0,197,205,255,0,24,222,1,0,129,255,139,0,134,139,255,0,0,222,1,0,212,115,238,238,130,238,255,0,232,221,1,0,227,215,208,208,32,144,255,0,216,221,1,0,235,193,255,255,62,150,255,0,200,221,1,0,235,192,238,238,58,140,255,0,184,221,1,0,235,192,205,205,50,120,255,0,168,221,1,0,235,192,139,139,34,82,255,0,152,221,1,0,27,68,245,245,222,179,255,0,144,221,1,0,27,69,255,255,231,186,255,0,120,221,1,0,27,68,238,238,216,174,255,0,112,221,1,0,27,68,205,205,186,150,255,0,88,221,1,0,27,67,139,139,126,102,255,0,80,221,1,0,0,0,255,255,255,255,255,0,64,221,1,0,0,0,245,245,245,245,255,0,56,221,1,0,42,255,255,255,255,0,255,0,48,221,1,0,42,255,255,255,255,0,255,0,40,221,1,0,42,255,238,238,238,0,255,0,24,221,1,0,42,255,205,205,205,0,255,0,16,221,1,0,42,255,139,139,139,0,255,0,240,220,1,0,56,192,205,154,205,50,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,219,1,0,30,0,0,0,16,188,1,0,252,1,0,0,96,186,1,0,56,1,0,0,32,184,1,0,126,1,0,0,64,182,1,0,104,0,0,0,8,180,1,0,150,0,0,0,16,205,1,0,146,2,0,0,88,178,1,0,206,1,0,0,208,176,1,0,8,1,0,0,120,175,1,0,160,2,0,0,200,173,1,0,202,1,0,0,40,172,1,0,76,0,0,0,248,170,1,0,150,2,0,0,152,169,1,0,4,2,0,0,184,166,1,0,246,0,0,0,56,165,1,0,6,0,0,0,72,163,1,0,6,0,0,0,240,161,1,0,216,0,0,0,112,160,1,0,90,1,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,219,1,0,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
.concat([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
.concat([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
.concat([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,2,0,0,30,1,0,0,20,0,0,0,24,2,0,0,240,0,0,0,170,1,0,0,110,0,0,0,134,2,0,0,100,2,0,0,36,1,0,0,152,2,0,0,20,1,0,0,106,2,0,0,64,1,0,0,198,0,0,0,102,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,22,28,28,28,28,28,28,28,28,28,28,22,28,26,28,28,22,28,28,28,28,28,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,22,22,22,22,22,22,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,140,2,0,216,139,2,0,208,139,2,0,200,139,2,0,232,139,2,0,240,139,2,0,160,139,2,0,144,139,2,0,100,0,0,0,116,0,0,0,92,0,0,0,146,0,0,0,158,2,0,0,98,2,0,0,204,1,0,0,78,0,0,0,2,2,0,0,28,1,0,0,46,0,0,0,146,1,0,0,210,0,0,0,108,0,0,0,96,0,0,0,214,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,16,12,19,28,30,3,13,31,32,33,34,35,27,26,17,25,25,25,25,25,25,25,25,25,25,22,18,2,14,11,15,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,20,28,4,28,22,28,24,24,24,24,24,24,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,28,36,28,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,244,108,86,125,174,182,214,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,196,66,173,105,222,113,236,63,16,122,54,171,62,87,229,63,245,219,215,129,115,70,204,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,1,77,132,13,79,175,226,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,1,77,132,13,79,175,226,63,1,77,132,13,79,175,226,63,1,77,132,13,79,175,226,63,181,21,251,203,238,201,225,63,204,93,75,200,7,61,240,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,120,11,36,40,126,140,227,63,106,222,113,138,142,228,232,63,210,111,95,7,206,25,231,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,16,122,54,171,62,87,229,63,181,21,251,203,238,201,225,63,44,212,154,230,29,167,234,63,210,111,95,7,206,25,231,63,106,222,113,138,142,228,232,63,16,122,54,171,62,87,229,63,106,222,113,138,142,228,232,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,134,56,214,197,109,52,238,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,120,11,36,40,126,140,227,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,166,10,70,37,117,2,222,63,181,21,251,203,238,201,225,63,72,191,125,29,56,103,204,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,224,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,72,191,125,29,56,103,204,63,72,191,125,29,56,103,204,63,0,0,0,0,0,0,224,63,72,191,125,29,56,103,204,63,44,212,154,230,29,167,234,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,2,154,8,27,158,94,213,63,224,190,14,156,51,162,208,63,2,154,8,27,158,94,213,63,1,77,132,13,79,175,226,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,62,232,217,172,250,92,197,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,29,56,103,68,105,111,200,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,231,29,167,232,72,46,225,63,162,180,55,248,194,100,214,63,72,191,125,29,56,103,204,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,211,188,227,20,29,201,209,63,120,11,36,40,126,140,227,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,240,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,240,63,211,188,227,20,29,201,209,63,234,149,178,12,113,172,215,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,106,222,113,138,142,228,232,63,0,0,0,0,0,0,240,63,152,221,147,135,133,90,215,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,196,66,173,105,222,113,236,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,72,191,125,29,56,103,204,63,120,11,36,40,126,140,227,63,134,56,214,197,109,52,238,63,120,11,36,40,126,140,227,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,3,0,0,0,104,62,0,0,3,0,0,0,64,62,0,0,3,0,0,0,176,61,0,0,3,0,0,0,96,61,0,0,3,0,0,0,56,61,0,0,3,0,0,0,16,61,0,0,3,0,0,0,232,60,0,0,0,0,0,0,200,55,0,0,0,0,0,0,160,55,0,0,0,0,0,0,120,55,0,0,0,0,0,0,80,55,0,0,0,0,0,0,40,55,0,0,0,0,0,0,0,55,0,0,0,0,0,0,216,54,0,0,4,0,0,0,72,56,0,0,0,0,0,0,0,0,0,0,1,0,0,0,72,60,0,0,0,0,0,0,0,0,0,0,144,191,1,0,24,191,1,0,224,188,1,0,32,187,1,0,8,185,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,14,2,2,2,2,2,2,2,2,2,2,2,2,2,19,18,2,17,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,2,16,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,2,13,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,3,4,5,6,7,8,9,10,11,0,0,0,0,0,13,65,57,55,251,1,9,2,3,4,85,16,87,19,66,20,68,40,21,22,17,10,11,23,24,229,10,11,23,24,7,8,57,88,89,18,59,42,10,11,19,39,20,64,44,21,22,67,10,11,23,24,230,10,11,46,76,210,207,49,52,62,53,70,69,78,59,203,71,80,81,200,86,82,73,74,0,75,0,0,45,0,0,0,0,0,0,0,0,2,0,6,1,0,1,0,1,2,1,2,1,1,1,3,0,0,1,3,2,0,1,3,1,1,1,0,1,2,1,2,1,1,1,1,1,2,1,2,1,0,2,4,0,3,0,0,5,0,0,5,2,0,4,2,0,4,4,0,5,0,4,1,2,1,1,1,3,0,0,0,0,21,23,22,22,22,24,24,25,25,25,25,26,26,26,27,27,28,28,29,30,30,31,32,33,33,34,34,35,35,36,36,36,37,37,37,37,38,38,39,40,41,41,41,43,42,45,46,44,47,48,44,49,50,49,49,51,49,52,53,52,54,52,52,55,56,56,57,57,0,0,0,188,188,188,188,188,188,1,188,14,188,189,216,188,218,188,52,188,188,13,188,188,188,188,188,188,188,188,188,206,188,188,15,188,188,188,250,188,0,0,0,4,188,188,188,27,6,44,188,188,188,188,188,188,188,247,8,25,12,188,188,188,188,188,29,188,22,188,31,39,188,37,188,49,40,188,188,50,48,45,188,188,12,44,188,188,188,188,188,53,44,188,53,12,44,12,51,47,188,54,45,22,188,17,188,46,188,56,188,57,188,188,188,44,188,59,63,188,188,44,188,188,188,188,53,53,188,188,188,188,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,187,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,15,12,6,25,56,72,43,60,61,26,58,27,28,29,30,31,32,33,50,34,47,35,48,77,51,79,63,83,84,36,54,41,37,38,14,0,0,0,0,4,8,10,0,0,7,9,11,1,65,67,2,6,66,0,0,0,68,32,12,13,14,0,61,0,38,0,0,28,30,35,44,41,33,34,36,63,40,59,64,0,16,37,3,29,31,21,0,0,39,0,0,0,0,0,0,24,17,25,22,45,0,47,42,50,0,23,0,62,19,18,16,20,52,55,40,21,0,21,58,60,15,0,0,48,43,51,54,57,0,0,0,0,0,0,6,51,42,41,0,1,0,3,4,5,77,20,79,1,52,3,54,23,6,7,12,9,10,11,12,13,9,10,11,12,3,4,72,83,84,10,42,15,9,10,1,12,3,49,13,6,7,53,9,10,11,12,13,9,10,18,62,8,8,19,12,8,17,16,13,19,72,8,14,13,13,8,78,72,60,62,255,62,255,255,28,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,0,0,0,0,0,0,0,0,72,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,4,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,255,255,255,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,255,255,255,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,255,255,255,255,0,0,0,0,0,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,4,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,176,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,50,48,48,48,47,120,109,108,110,115,47,0,0,0,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,88,77,76,47,49,57,57,56,47,110,97,109,101,115,112,97,99,101,0,0,0,0,47,98,114,98,103,51,47,50,0,0,0,0,0,0,0,0,47,114,100,98,117,52,47,50,0,0,0,0,0,0,0,0,47,114,100,98,117,52,47,49,0,0,0,0,0,0,0,0,47,114,100,98,117,51,47,51,0,0,0,0,0,0,0,0,47,114,100,98,117,51,47,50,0,0,0,0,0,0,0,0,32,32,32,60,83,67,82,73,80,84,32,76,65,78,71,85,65,71,69,61,39,74,97,118,97,115,99,114,105,112,116,39,62,10,0,0,0,0,0,0,47,114,100,98,117,51,47,49,0,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,57,0,0,0,0,0,0,0,47,101,110,100,112,97,103,101,32,123,32,115,104,111,119,112,97,103,101,32,125,32,98,105,110,100,32,100,101,102,0,0,109,105,110,116,99,114,101,97,109,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,56,0,0,0,0,0,0,0,116,97,105,108,99,108,105,112,0,0,0,0,0,0,0,0,97,99,117,116,101,0,0,0,47,114,100,98,117,49,49,47,55,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,54,0,0,0,0,0,0,0,111,114,100,101,114,105,110,103,32,39,37,115,39,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,32,102,111,114,32,110,111,100,101,32,39,37,115,39,46,10,0,0,0,0,47,114,100,98,117,49,49,47,53,0,0,0,0,0,0,0,108,97,98,101,108,116,111,111,108,116,105,112,0,0,0,0,47,98,114,98,103,51,47,49,0,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,52,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,51,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,50,0,0,0,0,0,0,0,47,114,100,98,117,49,49,47,49,49,0,0,0,0,0,0,60,33,45,45,32,80,97,103,101,115,58,32,37,100,32,45,45,62,10,0,0,0,0,0,47,114,100,98,117,49,49,47,49,48,0,0,0,0,0,0,112,111,108,121,32,37,115,0,47,114,100,98,117,49,49,47,49,0,0,0,0,0,0,0,9,115,101,116,109,97,116,114,105,120,0,0,0,0,0,0,109,105,100,110,105,103,104,116,98,108,117,101,0,0,0,0,47,114,100,98,117,49,48,47,57,0,0,0,0,0,0,0,99,111,110,115,116,114,97,105,110,116,0,0,0,0,0,0,98,103,99,111,108,111,114,0,97,99,105,114,99,0,0,0,47,114,100,98,117,49,48,47,56,0,0,0,0,0,0,0,47,97,99,99,101,110,116,53,47,49,0,0,0,0,0,0,47,114,100,98,117,49,48,47,55,0,0,0,0,0,0,0,47,114,100,98,117,49,48,47,54,0,0,0,0,0,0,0,101,100,103,101,116,111,111,108,116,105,112,0,0,0,0,0,47,98,114,98,103,49,49,47,57,0,0,0,0,0,0,0,47,114,100,98,117,49,48,47,53,0,0,0,0,0,0,0,47,114,100,98,117,49,48,47,52,0,0,0,0,0,0,0,47,114,100,98,117,49,48,47,51,0,0,0,0,0,0,0,47,114,100,98,117,49,48,47,50,0,0,0,0,0,0,0,60,47,84,73,84,76,69,62,0,0,0,0,0,0,0,0,47,114,100,98,117,49,48,47,49,48,0,0,0,0,0,0,47,114,100,98,117,49,48,47,49,0,0,0,0,0,0,0,9,48,32,48,32,49,32,48,32,51,54,48,32,97,114,99,0,0,0,0,0,0,0,0,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,47,112,117,114,112,108,101,115,57,47,57,0,0,0,0,0,97,114,114,111,119,115,105,122,101,0,0,0,0,0,0,0,97,97,99,117,116,101,0,0,47,112,117,114,112,108,101,115,57,47,56,0,0,0,0,0,117,115,105,110,103,32,37,115,32,102,111,114,32,117,110,107,110,111,119,110,32,115,104,97,112,101,32,37,115,10,0,0,47,112,117,114,112,108,101,115,57,47,55,0,0,0,0,0,37,100,32,98,111,120,101,115,58,10,0,0,0,0,0,0,47,112,117,114,112,108,101,115,57,47,54,0,0,0,0,0,116,111,111,108,116,105,112,0,47,98,114,98,103,49,49,47,56,0,0,0,0,0,0,0,47,112,117,114,112,108,101,115,57,47,53,0,0,0,0,0,47,112,117,114,112,108,101,115,57,47,52,0,0,0,0,0,47,112,117,114,112,108,101,115,57,47,51,0,0,0,0,0,47,112,117,114,112,108,101,115,57,47,50,0,0,0,0,0,60,84,73,84,76,69,62,0,47,112,117,114,112,108,101,115,57,47,49,0,0,0,0,0,47,112,117,114,112,108,101,115,56,47,56,0,0,0,0,0,9,114,120,32,114,121,32,115,99,97,108,101,0,0,0,0,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,47,112,117,114,112,108,101,115,56,47,55,0,0,0,0,0,100,101,108,121,32,62,61,32,48,0,0,0,0,0,0,0,100,101,99,111,114,97,116,101,0,0,0,0,0,0,0,0,106,112,103,58,102,105,103,0,90,101,116,97,0,0,0,0,47,112,117,114,112,108,101,115,56,47,54,0,0,0,0,0,47,112,117,114,112,108,101,115,56,47,53,0,0,0,0,0,47,112,117,114,112,108,101,115,56,47,52,0,0,0,0,0,104,101,97,100,116,97,114,103,101,116,0,0,0,0,0,0,47,98,114,98,103,49,49,47,55,0,0,0,0,0,0,0,47,112,117,114,112,108,101,115,56,47,51,0,0,0,0,0,47,112,117,114,112,108,101,115,56,47,50,0,0,0,0,0,47,112,117,114,112,108,101,115,56,47,49,0,0,0,0,0,47,112,117,114,112,108,101,115,55,47,55,0,0,0,0,0,60,77,69,84,65,32,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,116,101,110,116,45,84,121,112,101,34,32,99,111,110,116,101,110,116,61,34,116,101,120,116,47,104,116,109,108,59,32,99,104,97,114,115,101,116,61,85,84,70,45,56,34,62,10,0,0,0,0,47,112,117,114,112,108,101,115,55,47,54,0,0,0,0,0,47,112,117,114,112,108,101,115,55,47,53,0,0,0,0,0,84,68,0,0,0,0,0,0,9,120,32,121,32,116,114,97,110,115,108,97,116,101,0,0,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,0,0,47,112,117,114,112,108,101,115,55,47,52,0,0,0,0,0,97,103,115,116,114,102,114,101,101,32,108,111,115,116,32,37,115,10,0,0,0,0,0,0,109,105,110,108,101,110,0,0,89,117,109,108,0,0,0,0,47,112,117,114,112,108,101,115,55,47,51,0,0,0,0,0,47,112,117,114,112,108,101,115,55,47,50,0,0,0,0,0,47,112,117,114,112,108,101,115,55,47,49,0,0,0,0,0,116,97,105,108,116,97,114,103,101,116,0,0,0,0,0,0,47,98,114,98,103,49,49,47,54,0,0,0,0,0,0,0,47,112,117,114,112,108,101,115,54,47,54,0,0,0,0,0,118,109,108,58,118,109,108,0,47,112,117,114,112,108,101,115,54,47,53,0,0,0,0,0,47,112,117,114,112,108,101,115,54,47,52,0,0,0,0,0,121,101,108,108,111,119,0,0,112,108,117,115,0,0,0,0,47,112,117,114,112,108,101,115,54,47,51,0,0,0,0,0,60,72,69,65,68,62,0,0,47,112,117,114,112,108,101,115,54,47,50,0,0,0,0,0,47,112,117,114,112,108,101,115,54,47,49,0,0,0,0,0,9,110,101,119,112,97,116,104,0,0,0,0,0,0,0,0,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,47,112,117,114,112,108,101,115,53,47,53,0,0,0,0,0,108,97,98,101,108,97,110,103,108,101,0,0,0,0,0,0,89,97,99,117,116,101,0,0,47,112,117,114,112,108,101,115,53,47,52,0,0,0,0,0,47,112,117,114,112,108,101,115,53,47,51,0,0,0,0,0,58,32,0,0,0,0,0,0,47,112,117,114,112,108,101,115,53,47,50,0,0,0,0,0,108,97,98,101,108,116,97,114,103,101,116,0,0,0,0,0,47,112,117,114,112,108,101,115,53,47,49,0,0,0,0,0,47,98,114,98,103,49,49,47,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,112,117,114,112,108,101,115,52,47,52,0,0,0,0,0,47,112,117,114,112,108,101,115,52,47,51,0,0,0,0,0,47,112,117,114,112,108,101,115,52,47,50,0,0,0,0,0,60,47,66,79,68,89,62,10,60,47,72,84,77,76,62,10,0,0,0,0,0,0,0,0,85,82,87,32,71,111,116,104,105,99,32,76,0,0,0,0,47,112,117,114,112,108,101,115,52,47,49,0,0,0,0,0,47,112,117,114,112,108,101,115,51,47,51,0,0,0,0,0,100,117,112,108,105,99,97,116,101,32,97,116,116,114,105,98,117,116,101,0,0,0,0,0,9,109,97,116,114,105,120,32,99,117,114,114,101,110,116,109,97,116,114,105,120,0,0,0,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,0,47,112,117,114,112,108,101,115,51,47,50,0,0,0,0,0,108,97,98,101,108,100,105,115,116,97,110,99,101,0,0,0,88,105,0,0,0,0,0,0,47,112,117,114,112,108,101,115,51,47,49,0,0,0,0,0,38,103,116,59,0,0,0,0,47,112,117,114,100,57,47,57,0,0,0,0,0,0,0,0,112,108,97,105,110,45,101,120,116,58,100,111,116,0,0,0,47,112,117,114,100,57,47,56,0,0,0,0,0,0,0,0,101,100,103,101,116,97,114,103,101,116,0,0,0,0,0,0,37,115,32,45,62,32,37,115,58,32,104,101,97,100,32,105,115,32,105,110,115,105,100,101,32,116,97,105,108,32,99,108,117,115,116,101,114,32,37,115,10,0,0,0,0,0,0,0,47,112,117,114,100,57,47,55,0,0,0,0,0,0,0,0,110,111,32,109,101,109,111,114,121,32,102,114,111,109,32,122,109,97,108,108,111,99,40,41,10,0,0,0,0,0,0,0,47,98,114,98,103,49,49,47,52,0,0,0,0,0,0,0,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,117,114,101,10,0,0,0,0,0,0,47,112,117,114,100,57,47,54,0,0,0,0,0,0,0,0,32,123,10,0,0,0,0,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,112,110])
.concat([108,115,0,0,0,0,0,0,47,112,117,114,100,57,47,53,0,0,0,0,0,0,0,0,112,111,115,0,0,0,0,0,47,112,117,114,100,57,47,52,0,0,0,0,0,0,0,0,60,33,45,45,32,105,110,115,101,114,116,32,97,110,121,32,111,116,104,101,114,32,78,79,78,45,73,69,32,104,116,109,108,32,99,111,110,116,101,110,116,32,104,101,114,101,32,45,45,62,10,0,0,0,0,0,95,76,84,88,95,108,105,98,114,97,114,121,0,0,0,0,84,82,65,73,76,69,82,0,47,112,117,114,100,57,47,51,0,0,0,0,0,0,0,0,47,112,117,114,100,57,47,50,0,0,0,0,0,0,0,0,9,47,120,32,101,120,99,104,32,100,101,102,0,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,0,0,0,0,47,112,117,114,100,57,47,49,0,0,0,0,0,0,0,0,108,97,98,101,108,102,111,110,116,99,111,108,111,114,0,0,98,108,97,99,107,0,0,0,85,117,109,108,0,0,0,0,47,112,117,114,100,56,47,56,0,0,0,0,0,0,0,0,47,112,117,114,100,56,47,55,0,0,0,0,0,0,0,0,47,112,117,114,100,56,47,54,0,0,0,0,0,0,0,0,116,97,114,103,101,116,0,0,47,112,117,114,100,56,47,53,0,0,0,0,0,0,0,0,47,98,114,98,103,49,49,47,51,0,0,0,0,0,0,0,47,112,117,114,100,56,47,52,0,0,0,0,0,0,0,0,47,112,117,114,100,56,47,51,0,0,0,0,0,0,0,0,47,112,117,114,100,56,47,50,0,0,0,0,0,0,0,0,60,68,73,86,32,105,100,61,39,95,110,111,116,86,77,76,50,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,34,62,10,0,0,0,0,0,0,0,0,47,112,117,114,100,56,47,49,0,0,0,0,0,0,0,0,115,111,117,114,99,101,0,0,47,112,117,114,100,55,47,55,0,0,0,0,0,0,0,0,9,47,121,32,101,120,99,104,32,100,101,102,0,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,0,0,0,0,105,110,0,0,0,0,0,0,47,112,117,114,100,55,47,54,0,0,0,0,0,0,0,0,108,97,98,101,108,102,111,110,116,110,97,109,101,0,0,0,104,112,0,0,0,0,0,0,110,111,0,0,0,0,0,0,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,52,53,32,47,104,121,112,104,101,110,32,112,117,116,0,0,0,85,112,115,105,108,111,110,0,47,112,117,114,100,55,47,53,0,0,0,0,0,0,0,0,47,112,117,114,100,55,47,52,0,0,0,0,0,0,0,0,102,105,108,108,101,100,0,0,47,112,117,114,100,55,47,51,0,0,0,0,0,0,0,0,104,101,97,100,85,82,76,0,47,112,117,114,100,55,47,50,0,0,0,0,0,0,0,0,47,98,114,98,103,49,49,47,50,0,0,0,0,0,0,0,47,112,117,114,100,55,47,49,0,0,0,0,0,0,0,0,47,112,117,114,100,54,47,54,0,0,0,0,0,0,0,0,47,112,117,114,100,54,47,53,0,0,0,0,0,0,0,0,60,72,50,62,83,111,114,114,121,44,32,116,104,105,115,32,100,105,97,103,114,97,109,32,119,105,108,108,32,111,110,108,121,32,100,105,115,112,108,97,121,32,99,111,114,114,101,99,116,108,121,32,111,110,32,73,110,116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,32,53,32,40,97,110,100,32,117,112,41,32,98,114,111,119,115,101,114,115,46,60,47,72,50,62,10,0,0,0,0,0,47,112,117,114,100,54,47,52,0,0,0,0,0,0,0,0,47,112,117,114,100,54,47,51,0,0,0,0,0,0,0,0,9,47,114,120,32,101,120,99,104,32,100,101,102,0,0,0,109,101,100,105,117,109,98,108,117,101,0,0,0,0,0,0,47,112,117,114,100,54,47,50,0,0,0,0,0,0,0,0,108,97,98,101,108,102,111,110,116,115,105,122,101,0,0,0,85,103,114,97,118,101,0,0,47,112,117,114,100,54,47,49,0,0,0,0,0,0,0,0,47,112,117,114,100,53,47,53,0,0,0,0,0,0,0,0,47,112,117,114,100,53,47,52,0,0,0,0,0,0,0,0,104,101,97,100,104,114,101,102,0,0,0,0,0,0,0,0,112,101,110,0,0,0,0,0,47,112,117,114,100,53,47,51,0,0,0,0,0,0,0,0,47,98,114,98,103,49,49,47,49,49,0,0,0,0,0,0,47,112,117,114,100,53,47,50,0,0,0,0,0,0,0,0,47,112,117,114,100,53,47,49,0,0,0,0,0,0,0,0,47,112,117,114,100,52,47,52,0,0,0,0,0,0,0,0,60,33,45,45,32,116,104,105,115,32,115,104,111,117,108,100,32,111,110,108,121,32,100,105,115,112,108,97,121,32,111,110,32,78,79,78,45,73,69,32,98,114,111,119,115,101,114,115,32,45,45,62,10,0,0,0,47,112,117,114,100,52,47,51,0,0,0,0,0,0,0,0,47,112,117,114,100,52,47,50,0,0,0,0,0,0,0,0,9,47,114,121,32,101,120,99,104,32,100,101,102,0,0,0,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,0,0,47,112,117,114,100,52,47,49,0,0,0,0,0,0,0,0,116,97,105,108,108,97,98,101,108,0,0,0,0,0,0,0,85,99,105,114,99,0,0,0,47,112,117,114,100,51,47,51,0,0,0,0,0,0,0,0,47,112,117,114,100,51,47,50,0,0,0,0,0,0,0,0,47,112,117,114,100,51,47,49,0,0,0,0,0,0,0,0,116,97,105,108,85,82,76,0,111,114,100,101,114,105,110,103,32,39,37,115,39,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,46,10,0,0,47,112,117,111,114,57,47,57,0,0,0,0,0,0,0,0,47,98,114,98,103,49,49,47,49,48,0,0,0,0,0,0,47,112,117,111,114,57,47,56,0,0,0,0,0,0,0,0,47,112,117,111,114,57,47,55,0,0,0,0,0,0,0,0,47,112,117,111,114,57,47,54,0,0,0,0,0,0,0,0,60,68,73,86,32,105,100,61,39,95,110,111,116,86,77,76,49,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,34,62,10,0,0,0,0,0,0,0,0,47,112,117,111,114,57,47,53,0,0,0,0,0,0,0,0,47,112,117,111,114,57,47,52,0,0,0,0,0,0,0,0,99,105,114,99,108,101,32,37,115,32,37,100,44,37,100,44,37,100,10,0,0,0,0,0,109,101,109,111,114,121,32,101,120,104,97,117,115,116,101,100,0,0,0,0,0,0,0,0,47,101,108,108,105,112,115,101,95,112,97,116,104,32,123,0,109,97,114,111,111,110,0,0,47,112,117,111,114,57,47,51,0,0,0,0,0,0,0,0,104,101,97,100,108,97,98,101,108,0,0,0,0,0,0,0,85,97,99,117,116,101,0,0,47,112,117,111,114,57,47,50,0,0,0,0,0,0,0,0,47,97,99,99,101,110,116,52,47,52,0,0,0,0,0,0,47,112,117,111,114,57,47,49,0,0,0,0,0,0,0,0,47,112,117,111,114,56,47,56,0,0,0,0,0,0,0,0,116,97,105,108,104,114,101,102,0,0,0,0,0,0,0,0,47,112,117,111,114,56,47,55,0,0,0,0,0,0,0,0,47,98,114,98,103,49,49,47,49,0,0,0,0,0,0,0,47,112,117,111,114,56,47,54,0,0,0,0,0,0,0,0,47,112,117,111,114,56,47,53,0,0,0,0,0,0,0,0,47,112,117,111,114,56,47,52,0,0,0,0,0,0,0,0,60,33,45,45,32,105,110,115,101,114,116,32,97,110,121,32,111,116,104,101,114,32,104,116,109,108,32,99,111,110,116,101,110,116,32,104,101,114,101,32,45,45,62,10,0,0,0,0,47,112,117,111,114,56,47,51,0,0,0,0,0,0,0,0,47,112,117,111,114,56,47,50,0,0,0,0,0,0,0,0,9,9,99,108,111,115,101,112,97,116,104,0,0,0,0,0,109,97,103,101,110,116,97,0,47,112,117,111,114,56,47,49,0,0,0,0,0,0,0,0,97,114,114,111,119,116,97,105,108,0,0,0,0,0,0,0,84,104,101,116,97,0,0,0,47,112,117,111,114,55,47,55,0,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,47,112,117,111,114,55,47,54,0,0,0,0,0,0,0,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,101,110,100,32,112,111,114,116,32,110,111,116,32,105,110,32,108,97,115,116,32,98,111,120,10,0,47,112,117,111,114,55,47,53,0,0,0,0,0,0,0,0,108,97,98,101,108,85,82,76,0,0,0,0,0,0,0,0,47,112,117,111,114,55,47,52,0,0,0,0,0,0,0,0,47,98,114,98,103,49,48,47,57,0,0,0,0,0,0,0,47,112,117,111,114,55,47,51,0,0,0,0,0,0,0,0,47,112,117,111,114,55,47,50,0,0,0,0,0,0,0,0,47,112,117,111,114,55,47,49,0,0,0,0,0,0,0,0,60,68,73,86,32,105,100,61,39,95,86,77,76,50,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,118,105,115,105,98,105,108,105,116,121,58,104,105,100,100,101,110,34,62,10,0,0,47,112,117,111,114,54,47,54,0,0,0,0,0,0,0,0,47,112,117,111,114,54,47,53,0,0,0,0,0,0,0,0,9,9,112,111,112,32,110,101,103,32,48,32,114,108,105,110,101,116,111,0,0,0,0,0,108,105,110,101,110,0,0,0,47,112,117,111,114,54,47,52,0,0,0,0,0,0,0,0,100,101,108,120,32,62,61,32,48,0,0,0,0,0,0,0,97,114,114,111,119,104,101,97,100,0,0,0,0,0,0,0,106,112,101,58,102,105,103,0,47,112,117,111,114,54,47,51,0,0,0,0,0,0,0,0,84,97,117,0,0,0,0,0,47,112,117,111,114,54,47,50,0,0,0,0,0,0,0,0,47,112,117,111,114,54,47,49,0,0,0,0,0,0,0,0,108,97,98,101,108,104,114,101,102,0,0,0,0,0,0,0,47,112,117,111,114,53,47,53,0,0,0,0,0,0,0,0,47,98,114,98,103,49,48,47,56,0,0,0,0,0,0,0,47,112,117,111,114,53,47,52,0,0,0,0,0,0,0,0,47,112,117,111,114,53,47,51,0,0,0,0,0,0,0,0,47,112,117,111,114,53,47,50,0,0,0,0,0,0,0,0,60,47,68,73,86,62,10,0,69,68,95,116,111,95,118,105,114,116,40,101,41,32,61,61,32,78,85,76,76,0,0,0,47,112,117,111,114,53,47,49,0,0,0,0,0,0,0,0,47,112,117,111,114,52,47,52,0,0,0,0,0,0,0,0,84,72,0,0,0,0,0,0,9,9,48,32,101,120,99,104,32,114,108,105,110,101,116,111,0,0,0,0,0,0,0,0,108,105,109,101,103,114,101,101,110,0,0,0,0,0,0,0,47,112,117,111,114,52,47,51,0,0,0,0,0,0,0,0,100,105,114,0,0,0,0,0,47,112,117,111,114,52,47,50,0,0,0,0,0,0,0,0,84,72,79,82,78,0,0,0,47,112,117,111,114,52,47,49,0,0,0,0,0,0,0,0,47,112,117,111,114,51,47,51,0,0,0,0,0,0,0,0,101,100,103,101,85,82,76,0,47,112,117,111,114,51,47,50,0,0,0,0,0,0,0,0,47,98,114,98,103,49,48,47,55,0,0,0,0,0,0,0,118,109,108,0,0,0,0,0,47,112,117,111,114,51,47,49,0,0,0,0,0,0,0,0,47,112,117,111,114,49,49,47,57,0,0,0,0,0,0,0,47,112,117,111,114,49,49,47,56,0,0,0,0,0,0,0,60,47,118,58,103,114,111,117,112,62,10,0,0,0,0,0,119,104,105,116,101,0,0,0,75,80,95,68,111,119,110,0,47,112,117,111,114,49,49,47,55,0,0,0,0,0,0,0,47,112,117,111,114,49,49,47,54,0,0,0,0,0,0,0,110,111,100,101,0,0,0,0,9,9,101,120,99,104,32,48,32,114,108,105,110,101,116,111,0,0,0,0,0,0,0,0,47,112,117,111,114,49,49,47,53,0,0,0,0,0,0,0,108,105,109,101,0,0,0,0,108,97,98,101,108,102,108,111,97,116,0,0,0,0,0,0,47,112,117,111,114,49,49,47,52,0,0,0,0,0,0,0,83,105,103,109,97,0,0,0,47,112,117,111,114,49,49,47,51,0,0,0,0,0,0,0,47,112,117,111,114,49,49,47,50,0,0,0,0,0,0,0,101,100,103,101,104,114,101,102,0,0,0,0,0,0,0,0,117,115,101,114,111,117,116,58,32,99,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,10,0,0,0,0,0,47,112,117,111,114,49,49,47,49,49,0,0,0,0,0,0,47,98,114,98,103,49,48,47,54,0,0,0,0,0,0,0,47,112,117,111,114,49,49,47,49,48,0,0,0,0,0,0,97,117,120,103,0,0,0,0,47,112,117,111,114,49,49,47,49,0,0,0,0,0,0,0,47,112,117,111,114,49,48,47,57,0,0,0,0,0,0,0,62,10,0,0,0,0,0,0,65,118,97,110,116,71,97,114,100,101,45,66,111,111,107,0,47,112,117,111,114,49,48,47,56,0,0,0,0,0,0,0,47,112,117,111,114,49,48,47,55,0,0,0,0,0,0,0,109,105,115,109,97,116,99,104,101,100,32,116,97,103,0,0,9,9,50,32,99,111,112,121,0,0,0,0,0,0,0,0,47,112,117,111,114,49,48,47,54,0,0,0,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,0,0,0,0,0,119,101,105,103,104,116,0,0,47,112,117,111,114,49,48,47,53,0,0,0,0,0,0,0,83,99,97,114,111,110,0,0,38,108,116,59,0,0,0,0,47,112,117,111,114,49,48,47,52,0,0,0,0,0,0,0,112,108,97,105,110,58,100,111,116,0,0,0,0,0,0,0,47,112,117,111,114,49,48,47,51,0,0,0,0,0,0,0,85,82,76,0,0,0,0,0,37,115,32,45,62,32,37,115,58,32,116,97,105,108,32,110,111,116,32,105,110,115,105,100,101,32,116,97,105,108,32,99,108,117,115,116,101,114,32,37,115,10,0,0,0,0,0,0,47,112,117,111,114,49,48,47,50,0,0,0,0,0,0,0,47,98,114,98,103,49,48,47,53,0,0,0,0,0,0,0,47,112,117,111,114,49,48,47,49,48,0,0,0,0,0,0,37,100,32,116,101,120,116,115,10,0,0,0,0,0,0,0,95,97,110,111,110,121,109,111,117,115,0,0,0,0,0,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,100,113,46,112,110,108,115,0,0,48,0,0,0,0,0,0,0,47,112,117,111,114,49,48,47,49,0,0,0,0,0,0,0,115,116,111,112,10,0,0,0,47,112,117,98,117,103,110,57,47,57,0,0,0,0,0,0,32,116,97,114,103,101,116,61,34,37,115,34,0,0,0,0,69,78,68,0,0,0,0,0,47,112,117,98,117,103,110,57,47,56,0,0,0,0,0,0,47,112,117,98,117,103,110,57,47,55,0,0,0,0,0,0,9,9,109,111,118,101,116,111,0,0,0,0,0,0,0,0,47,112,117,98,117,103,110,57,47,54,0,0,0,0,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,0,122,0,0,0,0,0,0,0,98,105,115,113,117,101,0,0,47,112,117,98,117,103,110,57,47,53,0,0,0,0,0,0,82,104,111,0,0,0,0,0,47,112,117,98,117,103,110,57,47,52,0,0,0,0,0,0,47,112,117,98,117,103,110,57,47,51,0,0,0,0,0,0,104,114,101,102,0,0,0,0,47,112,117,98,117,103,110,57,47,50,0,0,0,0,0,0,47,98,114,98,103,49,48,47,52,0,0,0,0,0,0,0,47,112,117,98,117,103,110,57,47,49,0,0,0,0,0,0,47,112,117,98,117,103,110,56,47,56,0,0,0,0,0,0,46,46,46,32,37,115,32,46,46,46,10,0,0,0,0,0,47,112,117,98,117,103,110,56,47,55,0,0,0,0,0,0,32,116,105,116,108,101,61,34,37,115,34,0,0,0,0,0,47,112,117,98,117,103,110,56,47,54,0,0,0,0,0,0,47,112,117,98,117,103,110,56,47,53,0,0,0,0,0,0,109,105,110,0,0,0,0,0,9,9,52,32,50,32,114,111,108,108,0,0,0,0,0,0,47,112,117,98,117,103,110,56,47,52,0,0,0,0,0,0,114,101,109,105,110,99,114,111,115,115,0,0,0,0,0,0,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,0,104,101,105,103,104,116,61,34,37,108,102,37,50,115,34,0,118,101,114,116,105,99,101,115,0,0,0,0,0,0,0,0,110,115,108,105,109,105,116,0,102,97,108,115,101,0,0,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,32,48,32,50,53,53,32,103,101,116,105,110,116,101,114,118,97,108,32,112,117,116,105,110,116,101,114,118,97,108,0,47,112,117,98,117,103,110,56,47,51,0,0,0,0,0,0,80,115,105,0,0,0,0,0,47,112,117,98,117,103,110,56,47,50,0,0,0,0,0,0,115,101,116,108,105,110,101,119,105,100,116,104,0,0,0,0,47,112,117,98,117,103,110,56,47,49,0,0,0,0,0,0,78,111,32,99,111,109,109,97,32,105,110,32,99,111,108,111,114,32,115,112,101,99,32,34,37,115,34,32,105,110,32,99,111,108,111,114,32,97,116,116,114,105,98,117,116,101,32,0,47,112,117,98,117,103,110,55,47,55,0,0,0,0,0,0,47,98,114,98,103,49,48,47,51,0,0,0,0,0,0,0,47,112,117,98,117,103,110,55,47,54,0,0,0,0,0,0,47,112,117,98,117,103,110,55,47,53,0,0,0,0,0,0,47,62,10,0,0,0,0,0,47,112,117,98,117,103,110,55,47,52,0,0,0,0,0,0,67,69,76,76,83,66,79,82,68,69,82,0,0,0,0,0,35,37,50,120,37,50,120,37,50,120,37,50,120,0,0,0,32,104,114,101,102,61,34,37,115,34,0,0,0,0,0,0,47,112,117,98,117,103,110,55,47,51,0,0,0,0,0,0,47,112,117,98,117,103,110,55,47,50,0,0,0,0,0,0,47,98,111,120,112,114,105,109,32,123,9,9,9,9,37,32,120,99,111,114,110,101,114,32,121,99,111,114,110,101,114,32,120,115,105,122,101,32,121,115,105,122,101,0,0,0,0,0,47,112,117,98,117,103,110,55,47,49,0,0,0,0,0,0,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,0,99,111,109,109,101,110,116,0,47,112,117,98,117,103,110,54,47,54,0,0,0,0,0,0,80,114,105,109,101,0,0,0,47,112,117,98,117,103,110,54,47,53,0,0,0,0,0,0,47,112,117,98,117,103,110,54,47,52,0,0,0,0,0,0,73,108,108,101,103,97,108,32,108,101,110,103,116,104,32,118,97,108,117,101,32,105,110,32,34,37,115,34,32,99,111,108,111,114,32,97,116,116,114,105,98,117,116,101,32,0,0,0,118,101,101,0,0,0,0,0,47,112,117,98,117,103,110,54,47,51,0,0,0,0,0,0,47,98,114,98,103,49,48,47,50,0,0,0,0,0,0,0,47,112,117,98,117,103,110,54,47,50,0,0,0,0,0,0,115,112,108,105,110,101,115,46,99,0,0,0,0,0,0,0,110,111,100,101,32,39,37,115,39,44,32,103,114,97,112,104,32,39,37,115,39,32,115,105,122,101,32,116,111,111,32,115,109,97,108,108,32,102,111,114,32,108,97,98,101,108,10,0,47,112,117,98,117,103,110,54,47,49,0,0,0,0,0,0,34,32,119,105,100,116,104,61,34,37,103,112,120,34,32,104,101,105,103,104,116,61,34,37,103,112,120,34,32,112,114,101,115,101,114,118,101,65,115,112,101,99,116,82,97,116,105,111,61,34,120,77,105,110,89,77,105,110,32,109,101,101,116,34,32,120,61,34,37,103,34,32,121,61,34,37,103,34,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,37,115,32,102,111,114,32,83,84,89,76,69,32,45,32,105,103,110,111,114,101,100,10,0,0,0,47,112,117,98,117,103,110,53,47,53,0,0,0,0,0,0,60,97,0,0,0,0,0,0,47,112,117,98,117,103,110,53,47,52,0,0,0,0,0,0,47,112,117,98,117,103,110,53,47,51,0,0,0,0,0,0,9,103,114,101,115,116,111,114,101,0,0,0,0,0,0,0,47,112,117,98,117,103,110,53,47,50,0,0,0,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,0,0,0,0,103,114,111,117,112,0,0,0,47,112,117,98,117,103,110,53,47,49,0,0,0,0,0,0,80,105,0,0,0,0,0,0,47,112,117,98,117,103,110,52,47,52,0,0,0,0,0,0,47,112,117,98,117,103,110,52,47,51,0,0,0,0,0,0,48,45,108,101,110,103,116,104,32,105,110,32,99,111,108,111,114,32,115,112,101,99,32,34,37,115,34,10,0,0,0,0,47,112,117,98,117,103,110,52,47,50,0,0,0,0,0,0,47,98,114,98,103,49,48,47,49,48,0,0,0,0,0,0,105,110,0,0,0,0,0,0,47,112,117,98,117,103,110,52,47,49,0,0,0,0,0,0,108,97,98,101,108,108,111,99,0,0,0,0,0,0,0,0,47,112,117,98,117,103,110,51,47,51,0,0,0,0,0,0,32,116,114,97,110,115,102,111,114,109,61,34,114,111,116,97,116,101,40,37,100,32,37,103,32,37,103,41,34,0,0,0,79,85,78,68,69,68,0,0,47,112,117,98,117,103,110,51,47,50,0,0,0,0,0,0,60,47,97,62,10,0,0,0,47,112,117,98,117,103,110,51,47,49,0,0,0,0,0,0,47,112,117,98,117,57,47,57,0,0,0,0,0,0,0,0,9,9,125,32,105,102,0,0,47,112,117,98,117,57,47,56,0,0,0,0,0,0,0,0,102,108,97,116,46,99,0,0,108,105,103,104,116,115,101,97,103,114,101,101,110,0,0,0,108,97,121,101,114,0,0,0,114,101,99,116,32,37,115,32,37,100,44,37,100,32,37,100,44,37,100,10,0,0,0,0,47,112,117,98,117,57,47,55,0,0,0,0,0,0,0,0,80,104,105,0,0,0,0,0,47,97,99,99,101,110,116,52,47,51,0,0,0,0,0,0,47,112,117,98,117,57,47,54,0,0,0,0,0,0,0,0,47,112,117,98,117,57,47,53,0,0,0,0,0,0,0,0,32,45,45,32,0,0,0,0,47,112,117,98,117,57,47,52,0,0,0,0,0,0,0,0,47,98,114,98,103,49,48,47,49,0,0,0,0,0,0,0,47,112,117,98,117,57,47,51,0,0,0,0,0,0,0,0,78,111,32,111,114,32,105,109,112,114,111,112,101,114,32,105,109,97,103,101,61,34,37,115,34,32,102,111,114,32,110,111,100,101,32,34,37,115,34,10,0,0,0,0,0,0,0,0,47,112,117,98,117,57,47,50,0,0,0,0,0,0,0,0,34,32,119,105,100,116,104,61,34,37,103,112,120,34,32,104,101,105,103,104,116,61,34,37,103,112,120,34,32,112,114,101,115,101,114,118,101,65,115,112,101,99,116,82,97,116,105,111,61,34,120,77,105,100,89,77,105,100,32,109,101,101,116,34,32,120,61,34,37,103,34,32,121,61,34,37,103,34,0,0,115,116,121,108,101,0,0,0,47,112,117,98,117,57,47,49,0,0,0,0,0,0,0,0,60,47,118,58,114,101,99,116,62,10,0,0,0,0,0,0,47,112,117,98,117,56,47,56,0,0,0,0,0,0,0,0,47,112,117,98,117,56,47,55,0,0,0,0,0,0,0,0,9,9,9,116,101,120,116,32,115,116,114,105,110,103,119,105,100,116,104,32,112,111,112,32,119,105,100,116,104,32,101,120,99,104,32,115,117,98,32,116,101,120,116,32,108,101,110,103,116,104,32,100,105,118,32,48,32,116,101,120,116,32,97,115,104,111,119,0,0,0,0,0,47,112,117,98,117,56,47,54,0,0,0,0,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,0,0,0,0,0,110,111,106,117,115,116,105,102,121,0,0,0,0,0,0,0,47,112,117,98,117,56,47,53,0,0,0,0,0,0,0,0,79,117,109,108,0,0,0,0,110,0,0,0,0,0,0,0,47,112,117,98,117,56,47,52,0,0,0,0,0,0,0,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,115,116,97,114,116,32,112,111,114,116,32,110,111,116,32,105,110,32,102,105,114,115,116,32,98,111,120,10,0,0,0,0,0,0,47,112,117,98,117,56,47,51,0,0,0,0,0,0,0,0,32,45,62,32,0,0,0,0,47,112,117,98,117,56,47,50,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,57,0,0,0,0,0,0,0,47,112,117,98,117,56,47,49,0,0,0,0,0,0,0,0,60,110,105,108,62,0,0,0,47,112,117,98,117,55,47,55,0,0,0,0,0,0,0,0,60,105,109,97,103,101,32,120,108,105,110,107,58,104,114,101,102,61,34,0,0,0,0,0,99,101,108,108,98,111,114,100,101,114,0,0,0,0,0,0,47,112,117,98,117,55,47,54,0,0,0,0,0,0,0,0,60,47,99,101,110,116,101,114,62,60,47,118,58,116,101,120,116,98,111,120,62,10,0,0,47,112,117,98,117,55,47,53,0,0,0,0,0,0,0,0,47,112,117,98,117,55,47,52,0,0,0,0,0,0,0,0,9,9,9,91,93,32,48,32,115,101,116,100,97,115,104,0,47,112,117,98,117,55,47,51,0,0,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,0,0,0,0,0,0,0,104,116,109,108,116,97,98,108,101,46,99,0,0,0,0,0,105,109,97,103,101,115,99,97,108,101,0,0,0,0,0,0,106,112,101,103,58,102,105,103,0,0,0,0,0,0,0,0,47,112,117,98,117,55,47,50,0,0,0,0,0,0,0,0,79,116,105,108,100,101,0,0,47,112,117,98,117,55,47,49,0,0,0,0,0,0,0,0,47,112,117,98,117,54,47,54,0,0,0,0,0,0,0,0,105,110,32,101,100,103,101,32,37,115,37,115,37,115,10,0,47,112,117,98,117,54,47,53,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,56,0,0,0,0,0,0,0,47,112,117,98,117,54,47,52,0,0,0,0,0,0,0,0,78,111,32,111,114,32,105,109,112,114,111,112,101,114,32,115,104,97,112,101,102,105,108,101,61,34,37,115,34,32,102,111,114,32,110,111,100,101,32,34,37,115,34,10,0,0,0,0,47,112,117,98,117,54,47,51,0,0,0,0,0,0,0,0,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,0,60,84,65,66,76,69,62,0,47,112,117,98,117,54,47,50,0,0,0,0,0,0,0,0,34,62,60,99,101,110,116,101,114,62,0,0,0,0,0,0,47,112,117,98,117,54,47,49,0,0,0,0,0,0,0,0,109,101,114,103,101,95,111,110,101,119,97,121,32,103,108,105,116,99,104,10,0,0,0,0,47,112,117,98,117,53,47,53,0,0,0,0,0,0,0,0,84,82,0,0,0,0,0,0,9,9,119,105,100,116,104,32,48,32,103,116,32,123,0,0,47,112,117,98,117,53,47,52,0,0,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,45,45,0,0,0,0,0,0,102,105,120,101,100,115,105,122,101,0,0,0,0,0,0,0,47,112,117,98,117,53,47,51,0,0,0,0,0,0,0,0,79,115,108,97,115,104,0,0,47,112,117,98,117,53,47,50,0,0,0,0,0,0,0,0,47,112,117,98,117,53,47,49,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,47,112,117,98,117,52,47,52,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,55,0,0,0,0,0,0,0,47,112,117,98,117,52,47,51,0,0,0,0,0,0,0,0,69,114,114,111,114,32,100,117,114,105,110,103,32,99,111,110,118,101,114,115,105,111,110,32,116,111,32,34,85,84,70,45,56,34,46,32,32,81,117,105,116,105,110,103,46,10,0,0,114,101,103,117,108,97,114,0,47,112,117,98,117,52,47,50,0,0,0,0,0,0,0,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,32,37,100,32,37,115,10,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,37,115,32,102,111,114,32,65,76,73,71,78,32,105,110,32,84,68,32,45,32,105,103,110,111,114,101,100,10,0,0,0,0,0,47,112,117,98,117,52,47,49,0,0,0,0,0,0,0,0,99,111,108,111,114,58,35,37,48,50,120,37,48,50,120,37,48,50,120,59,0,0,0,0,47,112,117,98,117,51,47,51,0,0,0,0,0,0,0,0,114,101,100,0,0,0,0,0,68,111,119,110,0,0,0,0,47,112,117,98,117,51,47,50,0,0,0,0,0,0,0,0,32,45,100,97,115,104,32,50,0,0,0,0,0,0,0,0,9,103,115,97,118,101,0,0,47,112,117,98,117,51,47,49,0,0,0,0,0,0,0,0,108,105,103,104,116,103,114,101,101,110,0,0,0,0,0,0,100,105,115,116,111,114,116,105,111,110,0,0,0,0,0,0,47,112,114,103,110,57,47,57,0,0,0,0,0,0,0,0,79,109,105,99,114,111,110,0,47,112,114,103,110,57,47,56,0,0,0,0,0,0,0,0,47,112,114,103,110,57,47,55,0,0,0,0,0,0,0,0,37,115,45,37,115,0,0,0,47,112,114,103,110,57,47,54,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,54,0,0,0,0,0,0,0,87,97,114,110,105,110,103,0,47,112,114,103,110,57,47,53,0,0,0,0,0,0,0,0,37,108,102,44,37,108,102,0,47,112,114,103,110,57,47,52,0,0,0,0,0,0,0,0,125,10,0,0,0,0,0,0,108,97,98,101,108,0,0,0,47,112,114,103,110,57,47,51,0,0,0,0,0,0,0,0,69,88,84,0,0,0,0,0,99,111,108,111,114,58,37,115,59,0,0,0,0,0,0,0,47,112,114,103,110,57,47,50,0,0,0,0,0,0,0,0,91,105,110,116,101,114,110,97,108,32,116,105,109,101,115,93,0,0,0,0,0,0,0,0,47,112,114,103,110,57,47,49,0,0,0,0,0,0,0,0,112,97,114,116,105,97,108,32,99,104,97,114,97,99,116,101,114,0,0,0,0,0,0,0,9,47,119,105,100,116,104,32,101,120,99,104,32,100,101,102,0,0,0,0,0,0,0,0,47,112,114,103,110,56,47,56,0,0,0,0,0,0,0,0,108,105,103,104,116,103,114,97,121,0,0,0,0,0,0,0,115,107,101,119,0,0,0,0,47,112,114,103,110,56,47,55,0,0,0,0,0,0,0,0,79,109,101,103,97,0,0,0,47,112,114,103,110,56,47,54,0,0,0,0,0,0,0,0,38,97,109,112,59,0,0,0,99,97,110,111,110,58,100,111,116,0,0,0,0,0,0,0,47,112,114,103,110,56,47,53,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,98,101,122,45,62,101,102,108,97,103,0,0,0,0,0,0,47,112,114,103,110,56,47,52,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,53,0,0,0,0,0,0,0,47,112,114,103,110,56,47,51,0,0,0,0,0,0,0,0,109,97,114,103,105,110,0,0,103,114,97,112,104,0,0,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,100,113,46,112,110,108,115,0,0,0,47,112,114,103,110,56,47,50,0,0,0,0,0,0,0,0,37,100,32,101,108,108,105,112,115,101,115,10,0,0,0,0,32,32,125,10,0,0,0,0,101,100,103,101,0,0,0,0,32,0,0,0,0,0,0,0,47,112,114,103,110,56,47,49,0,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,37,115,32,102,111,114,32,66,65,76,73,71,78,32,105,110,32,84,68,32,45,32,105,103,110,111,114,101,100,10,0,0,0,0,32,102,111,110,116,45,115,105,122,101,58,32,37,46,50,102,112,116,59,0,0,0,0,0,76,97,121,111,117,116,32,119,97,115,32,110,111,116,32,100,111,110,101,10,0,0,0,0,66,69,71,73,78,0,0,0,47,112,114,103,110,55,47,55,0,0,0,0,0,0,0,0,47,112,114,103,110,55,47,54,0,0,0,0,0,0,0,0,9,47,116,101,120,116,32,101,120,99,104,32,100,101,102,0,47,112,114,103,110,55,47,53,0,0,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,0,0,0,112,101,114,105,112,104,101,114,105,101,115,0,0,0,0,0,98,101,105,103,101,0,0,0,47,112,114,103,110,55,47,52,0,0,0,0,0,0,0,0,79,103,114,97,118,101,0,0,47,112,114,103,110,55,47,51,0,0,0,0,0,0,0,0,47,112,114,103,110,55,47,50,0,0,0,0,0,0,0,0,116,97,105,108,108,97,98,101,108,0,0,0,0,0,0,0,47,112,114,103,110,55,47,49,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,52,0,0,0,0,0,0,0,47,112,114,103,110,54,47,54,0,0,0,0,0,0,0,0,92,78,0,0,0,0,0,0,47,112,114,103,110,54,47,53,0,0,0,0,0,0,0,0,32,32,32,32,116,101,120,116,117,114,101,32,73,109,97,103,101,84,101,120,116,117,114,101,32,123,32,117,114,108,32,34,37,115,34,32,125,10,0,0,47,112,114,103,110,54,47,52,0,0,0,0,0,0,0,0,66,79,82,68,69,82,0,0,102,111,110,116,45,115,116,121,108,101,58,32,37,115,59,0,47,112,114,103,110,54,47,51,0,0,0,0,0,0,0,0,47,112,114,103,110,54,47,50,0,0,0,0,0,0,0,0,115,97,109,101,0,0,0,0,109,97,112,0,0,0,0,0,47,112,114,103,110,54,47,49,0,0,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,0,0,0,0,0,0,0,119,105,100,116,104,61,34,37,108,102,37,50,115,34,0,0,115,105,100,101,115,0,0,0,69,100,103,101,32,108,101,110,103,116,104,32,37,102,32,108,97,114,103,101,114,32,116,104,97,110,32,109,97,120,105,109,117,109,32,37,117,32,97,108,108,111,119,101,100,46,10,67,104,101,99,107,32,102,111,114,32,111,118,101,114,119,105,100,101,32,110,111,100,101,40,115,41,46,10,0,0,0,0,0,47,0,0,0,0,0,0,0,47,112,114,103,110,53,47,53,0,0,0,0,0,0,0,0,32,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,48,0,0,0,0,0,0,0,79,99,105,114,99,0,0,0,47,97,108,105,103,110,101,100,116,101,120,116,32,123,9,9,9,37,32,119,105,100,116,104,32,116,101,120,116,0,0,0,47,112,114,103,110,53,47,52,0,0,0,0,0,0,0,0,98,111,108,100,0,0,0,0,47,112,114,103,110,53,47,51,0,0,0,0,0,0,0,0,104,101,97,100,108,97,98,101,108,0,0,0,0,0,0,0,47,112,114,103,110,53,47,50,0,0,0,0,0,0,0,0,115,104,97,112,101,115,46,99,0,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,51,0,0,0,0,0,0,0,47,112,114,103,110,53,47,49,0,0,0,0,0,0,0,0,98,97,100,32,108,97,98,101,108,32,102,111,114,109,97,116,32,37,115,10,0,0,0,0,47,112,114,103,110,52,47,52,0,0,0,0,0,0,0,0,32,32,32,32,125,10,0,0,47,112,114,103,110,52,47,51,0,0,0,0,0,0,0,0,67,69,76,76,80,65,68,68,73,78,71,0,0,0,0,0,102,111,110,116,45,115,116,114,101,116,99,104,58,32,37,115,59,0,0,0,0,0,0,0,47,112,114,103,110,52,47,50,0,0,0,0,0,0,0,0,47,112,114,103,110,52,47,49,0,0,0,0,0,0,0,0,37,32,100,114,97,119,32,116,101,120,116,32,102,105,116,116,101,100,32,116,111,32,105,116,115,32,101,120,112,101,99,116,101,100,32,119,105,100,116,104,0,0,0,0,0,0,0,0,47,112,114,103,110,51,47,51,0,0,0,0,0,0,0,0,108,105,103,104,116,99,111,114,97,108,0,0,0,0,0,0,112,101,110,119,105,100,116,104,0,0,0,0,0,0,0,0,47,112,114,103,110,51,47,50,0,0,0,0,0,0,0,0,79,97,99,117,116,101,0,0,47,112,114,103,110,51,47,49,0,0,0,0,0,0,0,0,47,112,114,103,110,49,49,47,57,0,0,0,0,0,0,0,108,97,98,101,108,0,0,0,105,110,118,0,0,0,0,0,47,112,114,103,110,49,49,47,56,0,0,0,0,0,0,0,47,98,108,117,101,115,57,47,50,0,0,0,0,0,0,0,47,112,114,103,110,49,49,47,55,0,0,0,0,0,0,0,102,97,108,115,101,0,0,0,47,112,114,103,110,49,49,47,54,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,100,105,102,102,117,115,101,67,111,108,111,114,32,49,32,49,32,49,10,0,0,0,0,0,47,112,114,103,110,49,49,47,53,0,0,0,0,0,0,0,67,69,76,76,83,80,65,67,73,78,71,0,0,0,0,0,102,111,110,116,45,119,101,105,103,104,116,58,32,37,115,59,0,0,0,0,0,0,0,0,47,112,114,103,110,49,49,47,52,0,0,0,0,0,0,0,47,112,114,103,110,49,49,47,51,0,0,0,0,0,0,0,99,97,110,110,111,116,32,97,108,108,111,99,97,116,101,32,112,115,10,0,0,0,0,0,9,115,99,97,108,101,102,111,110,116,32,115,101,116,102,111,110,116,0,0,0,0,0,0,47,112,114,103,110,49,49,47,50,0,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,0,0,0,0,0,0,0,120,108,97,98,101,108,0,0,47,112,114,103,110,49,49,47,49,49,0,0,0,0,0,0,79,69,108,105,103,0,0,0,47,112,114,103,110,49,49,47,49,48,0,0,0,0,0,0,47,112,114,103,110,49,49,47,49,0,0,0,0,0,0,0,102,97,108,115,101,0,0,0,47,112,114,103,110,49,48,47,57,0,0,0,0,0,0,0,47,112,97,116,104,98,111,120,32,123,10,32,32,32,32,47,88,32,101,120,99,104,32,110,101,103,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,89,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,120,32,101,120,99,104,32,110,101,103,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,121,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,110,101,119,112,97,116,104,32,120,32,121,32,109,111,118,101,116,111,10,32,32,32,32,88,32,121,32,108,105,110,101,116,111,10,32,32,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,32,32,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,125,32,100,101,102,10,0,0,47,98,108,117,101,115,57,47,49,0,0,0,0,0,0,0,47,112,114,103,110,49,48,47,56,0,0,0,0,0,0,0,105,109,97,103,101,0,0,0,111,117,116,0,0,0,0,0,47,112,114,103,110,49,48,47,55,0,0,0,0,0,0,0,32,32,32,32,32,32,97,109,98,105,101,110,116,73,110,116,101,110,115,105,116,121,32,48,46,51,51,10,0,0,0,0,47,112,114,103,110,49,48,47,54,0,0,0,0,0,0,0,67,79,76,83,80,65,78,32,118,97,108,117,101,32,99,97,110,110,111,116,32,98,101,32,48,32,45,32,105,103,110,111,114,101,100,10,0,0,0,0,102,111,110,116,45,102,97,109,105,108,121,58,32,39,37,115,39,59,0,0,0,0,0,0,47,112,114,103,110,49,48,47,53,0,0,0,0,0,0,0,47,112,114,103,110,49,48,47,52,0,0,0,0,0,0,0,9,102,105,110,100,102,111,110,116,32,101,120,99,104,0,0,47,112,114,103,110,49,48,47,51,0,0,0,0,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,0,0,0,0,102,111,110,116,99,111,108,111,114,0,0,0,0,0,0,0,47,112,114,103,110,49,48,47,50,0,0,0,0,0,0,0,78,117,0,0,0,0,0,0,47,97,99,99,101,110,116,52,47,50,0,0,0,0,0,0,47,112,114,103,110,49,48,47,49,48,0,0,0,0,0,0,47,112,114,103,110,49,48,47,49,0,0,0,0,0,0,0,105,110,118,105,115,0,0,0,99,109,97,112,120,95,110,112,58,109,97,112,0,0,0,0,47,112,105,121,103,57,47,57,0,0,0,0,0,0,0,0,47,98,108,117,101,115,56,47,56,0,0,0,0,0,0,0,47,112,105,121,103,57,47,56,0,0,0,0,0,0,0,0,102,105,108,108,101,100,0,0,47,112,105,121,103,57,47,55,0,0,0,0,0,0,0,0,32,32,32,32,109,97,116,101,114,105,97,108,32,77,97,116,101,114,105,97,108,32,123,10,0,0,0,0,0,0,0,0,47,112,105,121,103,57,47,54,0,0,0,0,0,0,0,0,67,79,76,83,80,65,78,0,60,118,58,116,101,120,116,98,111,120,32,105,110,115,101,116,61,34,48,44,48,44,48,44,48,34,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,118,45,116,101,120,116,45,119,114,97,112,112,105,110,103,58,39,102,97,108,115,101,39,59,112,97,100,100,105,110,103,58,39,48,39,59,0,0,0,0,0,0,0,47,112,105,121,103,57,47,53,0,0,0,0,0,0,0,0,47,112,105,121,103,57,47,52,0,0,0,0,0,0,0,0,47,115,101,116,95,102,111,110,116,32,123,0,0,0,0,0,47,112,105,121,103,57,47,51,0,0,0,0,0,0,0,0,108,97,119,110,103,114,101,101,110,0,0,0,0,0,0,0,102,111,110,116,110,97,109,101,0,0,0,0,0,0,0,0,47,112,105,121,103,57,47,50,0,0,0,0,0,0,0,0,110,101,116,119,111,114,107,32,115,105,109,112,108,101,120,58,32,0,0,0,0,0,0,0,78,116,105,108,100,101,0,0,101,0,0,0,0,0,0,0,47,112,105,121,103,57,47,49,0,0,0,0,0,0,0,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,98,111,120,101,115,32,37,100,32,97,110,100,32,37,100,32,100,111,110,39,116,32,116,111,117,99,104,10,0,0,0,0,0,0,47,112,105,121,103,56,47,56,0,0,0,0,0,0,0,0,45,45,0,0,0,0,0,0,47,112,105,121,103,56,47,55,0,0,0,0,0,0,0,0,47,98,108,117,101,115,56,47,55,0,0,0,0,0,0,0,47,112,105,121,103,56,47,54,0,0,0,0,0,0,0,0,9,37,115,32,37,100,10,0,105,110,118,105,115,0,0,0,47,112,105,121,103,56,47,53,0,0,0,0,0,0,0,0,32,32,97,112,112,101,97,114,97,110,99,101,32,65,112,112,101,97,114,97,110,99,101,32,123,10,0,0,0,0,0,0,47,112,105,121,103,56,47,52,0,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,37,115,32,102,111,114,32,70,73,88,69,68,83,73,90,69,32,45,32,105,103,110,111,114,101,100])
.concat([10,0,0,0,0,0,0,0,32,115,116,114,111,107,101,100,61,34,102,97,108,115,101,34,32,102,105,108,108,101,100,61,34,102,97,108,115,101,34,62,10,0,0,0,0,0,0,0,47,112,105,121,103,56,47,51,0,0,0,0,0,0,0,0,47,112,105,121,103,56,47,50,0,0,0,0,0,0,0,0,9,125,32,105,102,0,0,0,47,112,105,121,103,56,47,49,0,0,0,0,0,0,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,0,0,0,102,111,110,116,115,105,122,101,0,0,0,0,0,0,0,0,60,84,65,66,76,69,62,0,103,105,102,58,102,105,103,0,47,112,105,121,103,55,47,55,0,0,0,0,0,0,0,0,77,117,0,0,0,0,0,0,47,112,105,121,103,55,47,54,0,0,0,0,0,0,0,0,47,112,105,121,103,55,47,53,0,0,0,0,0,0,0,0,45,62,0,0,0,0,0,0,47,112,105,121,103,55,47,52,0,0,0,0,0,0,0,0,47,98,108,117,101,115,56,47,54,0,0,0,0,0,0,0,47,112,105,121,103,55,47,51,0,0,0,0,0,0,0,0,35,102,56,102,56,102,56,0,47,112,105,121,103,55,47,50,0,0,0,0,0,0,0,0,83,104,97,112,101,32,123,10,0,0,0,0,0,0,0,0,47,112,105,121,103,55,47,49,0,0,0,0,0,0,0,0,65,76,83,69,0,0,0,0,60,118,58,114,101,99,116,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,0,0,0,0,0,0,47,112,105,121,103,54,47,54,0,0,0,0,0,0,0,0,47,112,105,121,103,54,47,53,0,0,0,0,0,0,0,0,118,105,114,116,117,97,108,0,84,65,66,76,69,0,0,0,9,9,103,114,101,115,116,111,114,101,0,0,0,0,0,0,47,112,105,121,103,54,47,52,0,0,0,0,0,0,0,0,108,97,118,101,110,100,101,114,0,0,0,0,0,0,0,0,115,116,121,108,101,0,0,0,47,112,105,121,103,54,47,51,0,0,0,0,0,0,0,0,76,97,109,98,100,97,0,0,47,112,105,121,103,54,47,50,0,0,0,0,0,0,0,0,47,112,105,121,103,54,47,49,0,0,0,0,0,0,0,0,98,122,46,115,105,122,101,32,37,32,51,32,61,61,32,49,0,0,0,0,0,0,0,0,47,112,105,121,103,53,47,53,0,0,0,0,0,0,0,0,47,98,108,117,101,115,56,47,53,0,0,0,0,0,0,0,47,112,105,121,103,53,47,52,0,0,0,0,0,0,0,0,38,35,51,57,59,0,0,0,35,49,48,49,48,49,48,0,47,112,105,121,103,53,47,51,0,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,47,112,105,121,103,53,47,50,0,0,0,0,0,0,0,0,82,85,69,0,0,0,0,0,60,47,118,58,111,118,97,108,62,10,0,0,0,0,0,0,47,112,105,121,103,53,47,49,0,0,0,0,0,0,0,0,47,112,105,121,103,52,47,52,0,0,0,0,0,0,0,0,32,45,100,97,115,104,32,53,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,0,75,80,95,85,112,0,0,0,9,9,9,40,92,40,41,32,115,104,111,119,32,105,32,115,116,114,32,99,118,115,32,115,104,111,119,32,40,44,41,32,115,104,111,119,32,106,32,115,116,114,32,99,118,115,32,115,104,111,119,32,40,92,41,41,32,115,104,111,119,0,0,0,47,112,105,121,103,52,47,51,0,0,0,0,0,0,0,0,107,104,97,107,105,0,0,0,102,105,108,108,99,111,108,111,114,0,0,0,0,0,0,0,47,112,105,121,103,52,47,50,0,0,0,0,0,0,0,0,75,97,112,112,97,0,0,0,47,112,105,121,103,52,47,49,0,0,0,0,0,0,0,0,47,112,105,121,103,51,47,51,0,0,0,0,0,0,0,0,98,122,46,115,105,122,101,32,62,32,48,0,0,0,0,0,47,112,105,121,103,51,47,50,0,0,0,0,0,0,0,0,47,98,108,117,101,115,56,47,52,0,0,0,0,0,0,0,47,112,105,121,103,51,47,49,0,0,0,0,0,0,0,0,35,102,48,102,48,102,48,0,69,114,114,111,114,0,0,0,47,112,105,121,103,49,49,47,57,0,0,0,0,0,0,0,111,98,106,0,0,0,0,0,47,112,105,121,103,49,49,47,56,0,0,0,0,0,0,0,72,69,73,71,72,84,0,0,32,119,105,100,116,104,58,32,37,46,50,102,59,32,104,101,105,103,104,116,58,32,37,46,50,102,34,0,0,0,0,0,123,37,115,125,0,0,0,0,47,112,105,121,103,49,49,47,55,0,0,0,0,0,0,0,91,105,110,116,101,114,110,97,108,32,97,114,105,97,108,93,0,0,0,0,0,0,0,0,47,112,105,121,103,49,49,47,54,0,0,0,0,0,0,0,117,110,99,108,111,115,101,100,32,116,111,107,101,110,0,0,9,9,9,48,32,48,32,109,111,118,101,116,111,0,0,0,47,112,105,121,103,49,49,47,53,0,0,0,0,0,0,0,105,118,111,114,121,0,0,0,99,111,108,111,114,0,0,0,47,112,105,121,103,49,49,47,52,0,0,0,0,0,0,0,73,117,109,108,0,0,0,0,47,112,105,121,103,49,49,47,51,0,0,0,0,0,0,0,107,105,110,100,32,61,61,32,76,84,95,78,79,78,69,0,103,118,58,100,111,116,0,0,47,112,105,121,103,49,49,47,50,0,0,0,0,0,0,0,115,112,108,45,62,115,105,122,101,32,62,32,48,0,0,0,98,101,122,45,62,115,102,108,97,103,0,0,0,0,0,0,100,105,103,114,97,112,104,0,47,112,105,121,103,49,49,47,49,49,0,0,0,0,0,0,47,98,108,117,101,115,56,47,51,0,0,0,0,0,0,0,47,112,105,121,103,49,49,47,49,48,0,0,0,0,0,0,35,101,48,101,48,101,48,0,37,100,0,0,0,0,0,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,111,112,115,0,0,0,0,0,0,47,112,105,121,103,49,49,47,49,0,0,0,0,0,0,0,103,114,101,115,116,111,114,101,10,0,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,47,112,105,121,103,49,48,47,57,0,0,0,0,0,0,0,37,100,32,98,101,122,105,101,114,115,32,37,100,32,112,111,105,110,116,115,10,0,0,0,82,79,87,83,80,65,78,32,118,97,108,117,101,32,99,97,110,110,111,116,32,98,101,32,48,32,45,32,105,103,110,111,114,101,100,10,0,0,0,0,32,108,101,102,116,58,32,37,46,50,102,59,32,116,111,112,58,32,37,46,50,102,59,0,78,111,32,108,105,98,122,32,115,117,112,112,111,114,116,10,0,0,0,0,0,0,0,0,69,79,70,0,0,0,0,0,47,112,105,121,103,49,48,47,56,0,0,0,0,0,0,0,68,105,110,103,98,97,116,115,0,0,0,0,0,0,0,0,47,112,105,121,103,49,48,47,55,0,0,0,0,0,0,0,9,9,9,99,111,111,114,100,102,111,110,116,32,115,101,116,102,111,110,116,0,0,0,0,47,112,105,121,103,49,48,47,54,0,0,0,0,0,0,0,105,110,100,105,103,111,0,0,115,104,97,112,101,0,0,0,97,122,117,114,101,0,0,0,47,112,105,121,103,49,48,47,53,0,0,0,0,0,0,0,73,111,116,97,0,0,0,0,47,112,105,121,103,49,48,47,52,0,0,0,0,0,0,0,47,112,105,121,103,49,48,47,51,0,0,0,0,0,0,0,115,101,116,108,105,110,101,119,105,100,116,104,0,49,0,0,47,112,105,121,103,49,48,47,50,0,0,0,0,0,0,0,105,109,97,103,101,115,99,97,108,101,0,0,0,0,0,0,47,98,108,117,101,115,56,47,50,0,0,0,0,0,0,0,47,112,105,121,103,49,48,47,49,48,0,0,0,0,0,0,35,101,56,101,56,101,56,0,112,110,103,58,115,118,103,0,47,112,105,121,103,49,48,47,49,0,0,0,0,0,0,0,117,115,101,114,95,115,104,97,112,101,95,37,100,10,0,0,47,112,97,115,116,101,108,50,56,47,56,0,0,0,0,0,82,79,87,83,80,65,78,0,32,32,60,118,58,111,118,97,108,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,0,0,0,0,0,47,112,97,115,116,101,108,50,56,47,55,0,0,0,0,0,90,97,112,102,68,105,110,103,98,97,116,115,0,0,0,0,47,112,97,115,116,101,108,50,56,47,54,0,0,0,0,0,97,103,116,97,105,108,40,101,41,32,61,61,32,85,70,95,102,105,110,100,40,97,103,116,97,105,108,40,101,41,41,0,9,9,103,115,97,118,101,0,47,112,97,115,116,101,108,50,56,47,53,0,0,0,0,0,105,110,100,105,97,110,114,101,100,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,119,105,100,116,104,0,0,0,99,111,110,116,97,105,110,95,110,111,100,101,115,32,99,108,117,115,116,32,37,115,32,114,97,110,107,32,37,100,32,109,105,115,115,105,110,103,32,110,111,100,101,10,0,0,0,0,47,112,97,115,116,101,108,50,56,47,52,0,0,0,0,0,37,115,37,115,37,115,0,0,47,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,50,53,54,32,97,114,114,97,121,32,100,101,102,0,0,0,73,103,114,97,118,101,0,0,47,112,97,115,116,101,108,50,56,47,51,0,0,0,0,0,105,110,118,105,115,105,98,108,101,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,56,47,50,0,0,0,0,0,83,121,110,116,97,120,32,101,114,114,111,114,58,32,110,111,110,45,115,112,97,99,101,32,115,116,114,105,110,103,32,117,115,101,100,32,98,101,102,111,114,101,32,60,84,65,66,76,69,62,0,0,0,0,0,0,115,111,108,105,100,0,0,0,47,112,97,115,116,101,108,50,56,47,49,0,0,0,0,0,47,98,108,117,101,115,56,47,49,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,55,47,55,0,0,0,0,0,35,51,48,51,48,51,48,0,47,112,97,115,116,101,108,50,55,47,54,0,0,0,0,0,103,115,97,118,101,32,37,103,32,37,103,32,116,114,97,110,115,108,97,116,101,32,110,101,119,112,97,116,104,10,0,0,47,112,97,115,116,101,108,50,55,47,53,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,37,115,32,102,111,114,32,86,65,76,73,71,78,32,45,32,105,103,110,111,114,101,100,10,0,0,120,32,101,32,34,47,62,0,47,112,97,115,116,101,108,50,55,47,52,0,0,0,0,0,109,101,100,105,117,109,0,0,47,112,97,115,116,101,108,50,55,47,51,0,0,0,0,0,9,110,112,97,103,101,115,32,49,32,103,116,32,123,0,0,47,112,97,115,116,101,108,50,55,47,50,0,0,0,0,0,104,111,116,112,105,110,107,0,104,101,105,103,104,116,0,0,100,121,110,97,109,105,99,32,108,111,97,100,105,110,103,32,110,111,116,32,97,118,97,105,108,97,98,108,101,10,0,0,47,112,97,115,116,101,108,50,55,47,49,0,0,0,0,0,73,99,105,114,99,0,0,0,47,112,97,115,116,101,108,50,54,47,54,0,0,0,0,0,47,112,97,115,116,101,108,50,54,47,53,0,0,0,0,0,84,105,109,101,115,45,82,111,109,97,110,0,0,0,0,0,110,111,110,101,0,0,0,0,47,112,97,115,116,101,108,50,54,47,52,0,0,0,0,0,47,98,108,117,101,115,55,47,55,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,54,47,51,0,0,0,0,0,35,102,99,102,99,102,99,0,47,112,97,115,116,101,108,50,54,47,50,0,0,0,0,0,93,32,32,37,100,32,102,97,108,115,101,32,37,115,10,0,47,112,97,115,116,101,108,50,54,47,49,0,0,0,0,0,73,68,68,76,69,0,0,0,108,32,0,0,0,0,0,0,47,112,97,115,116,101,108,50,53,47,53,0,0,0,0,0,85,82,87,32,67,104,97,110,99,101,114,121,32,76,0,0,47,112,97,115,116,101,108,50,53,47,52,0,0,0,0,0,9,47,115,116,114,32,49,48,32,115,116,114,105,110,103,32,100,101,102,0,0,0,0,0,47,112,97,115,116,101,108,50,53,47,51,0,0,0,0,0,104,111,110,101,121,100,101,119,0,0,0,0,0,0,0,0,111,114,100,101,114,105,110,103,0,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,53,47,50,0,0,0,0,0,73,97,99,117,116,101,0,0,47,112,97,115,116,101,108,50,53,47,49,0,0,0,0,0,47,112,97,115,116,101,108,50,52,47,52,0,0,0,0,0,112,101,110,119,105,100,116,104,0,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,52,47,51,0,0,0,0,0,47,98,108,117,101,115,55,47,54,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,52,47,50,0,0,0,0,0,35,56,48,56,48,56,48,0,47,112,97,115,116,101,108,50,52,47,49,0,0,0,0,0,93,32,32,37,100,32,116,114,117,101,32,37,115,10,0,0,78,68,95,111,114,100,101,114,40,118,41,32,60,32,78,68,95,111,114,100,101,114,40,119,41,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,51,47,51,0,0,0,0,0,79,80,0,0,0,0,0,0,37,46,48,102,32,37,46,48,102,32,0,0,0,0,0,0,47,112,97,115,116,101,108,50,51,47,50,0,0,0,0,0,90,97,112,102,67,104,97,110,99,101,114,121,45,77,101,100,105,117,109,73,116,97,108,105,99,0,0,0,0,0,0,0,47,112,97,115,116,101,108,50,51,47,49,0,0,0,0,0,9,47,105,32,101,120,99,104,32,100,101,102,0,0,0,0,47,112,97,115,116,101,108,49,57,47,57,0,0,0,0,0,103,114,101,121,0,0,0,0,114,101,115,111,108,117,116,105,111,110,0,0,0,0,0,0,47,112,97,115,116,101,108,49,57,47,56,0,0,0,0,0,71,97,109,109,97,0,0,0,47,97,99,99,101,110,116,52,47,49,0,0,0,0,0,0,47,112,97,115,116,101,108,49,57,47,55,0,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,47,112,97,115,116,101,108,49,57,47,54,0,0,0,0,0,112,101,114,105,112,104,101,114,105,101,115,0,0,0,0,0,47,112,97,115,116,101,108,49,57,47,53,0,0,0,0,0,47,98,108,117,101,115,55,47,53,0,0,0,0,0,0,0,105,109,97,112,95,110,112,58,109,97,112,0,0,0,0,0,47,112,97,115,116,101,108,49,57,47,52,0,0,0,0,0,105,110,118,105,115,0,0,0,47,112,97,115,116,101,108,49,57,47,51,0,0,0,0,0,37,103,32,37,103,32,0,0,47,112,97,115,116,101,108,49,57,47,50,0,0,0,0,0,79,84,84,79,77,0,0,0,32,102,105,108,108,101,100,61,34,102,97,108,115,101,34,32,0,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,57,47,49,0,0,0,0,0,47,112,97,115,116,101,108,49,56,47,56,0,0,0,0,0,84,105,109,101,115,45,82,111,109,97,110,0,0,0,0,0,9,47,106,32,101,120,99,104,32,100,101,102,0,0,0,0,47,112,97,115,116,101,108,49,56,47,55,0,0,0,0,0,103,114,101,101,110,121,101,108,108,111,119,0,0,0,0,0,100,112,105,0,0,0,0,0,47,112,97,115,116,101,108,49,56,47,54,0,0,0,0,0,69,117,109,108,0,0,0,0,115,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,56,47,53,0,0,0,0,0,47,112,97,115,116,101,108,49,56,47,52,0,0,0,0,0,112,97,103,101,100,105,114,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,98,111,120,32,37,100,32,104,97,115,32,76,76,32,99,111,111,114,100,32,62,32,85,82,32,99,111,111,114,100,10,0,0,0,47,112,97,115,116,101,108,49,56,47,51,0,0,0,0,0,47,98,108,117,101,115,55,47,52,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,56,47,50,0,0,0,0,0,116,114,111,117,98,108,101,32,105,110,32,105,110,105,116,95,114,97,110,107,10,0,0,0,100,105,97,103,111,110,97,108,115,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,56,47,49,0,0,0,0,0,91,32,0,0,0,0,0,0,47,112,97,115,116,101,108,49,55,47,55,0,0,0,0,0,87,73,68,84,72,0,0,0,34,32,0,0,0,0,0,0,47,112,97,115,116,101,108,49,55,47,54,0,0,0,0,0,47,112,97,115,116,101,108,49,55,47,53,0,0,0,0,0,84,105,109,101,115,45,73,116,97,108,105,99,0,0,0,0,9,47,110,112,97,103,101,115,32,101,120,99,104,32,100,101,102,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,55,47,52,0,0,0,0,0,103,114,101,101,110,0,0,0,99,111,110,99,101,110,116,114,97,116,101,0,0,0,0,0,99,111,108,103,0,0,0,0,112,110,103,58,102,105,103,0,47,112,97,115,116,101,108,49,55,47,51,0,0,0,0,0,69,116,97,0,0,0,0,0,109,101,109,111,114,121,32,101,120,104,97,117,115,116,101,100,0,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,55,47,50,0,0,0,0,0,47,112,97,115,116,101,108,49,55,47,49,0,0,0,0,0,66,76,0,0,0,0,0,0,47,112,97,115,116,101,108,49,54,47,54,0,0,0,0,0,47,98,108,117,101,115,55,47,51,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,54,47,53,0,0,0,0,0,114,111,117,110,100,101,100,0,47,112,97,115,116,101,108,49,54,47,52,0,0,0,0,0,117,115,45,62,110,97,109,101,0,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,54,47,51,0,0,0,0,0,119,105,100,116,104,0,0,0,32,102,105,108,108,101,100,61,34,116,114,117,101,34,32,102,105,108,108,99,111,108,111,114,61,34,0,0,0,0,0,0,47,112,97,115,116,101,108,49,54,47,50,0,0,0,0,0,47,112,97,115,116,101,108,49,54,47,49,0,0,0,0,0,84,105,109,101,115,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,0,0,0,47,98,101,103,105,110,112,97,103,101,32,123,9,37,32,105,32,106,32,110,112,97,103,101,115,0,0,0,0,0,0,0,85,110,99,108,111,115,101,100,32,99,111,109,109,101,110,116,10,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,53,47,53,0,0,0,0,0,103,114,97,121,0,0,0,0,99,108,117,115,116,101,114,114,97,110,107,0,0,0,0,0,102,105,110,100,95,102,97,115,116,95,110,111,100,101,40,103,44,32,110,41,0,0,0,0,47,112,97,115,116,101,108,49,53,47,52,0,0,0,0,0,69,112,115,105,108,111,110,0,47,112,97,115,116,101,108,49,53,47,51,0,0,0,0,0,47,112,97,115,116,101,108,49,53,47,50,0,0,0,0,0,112,97,100,0,0,0,0,0,47,112,97,115,116,101,108,49,53,47,49,0,0,0,0,0,47,98,108,117,101,115,55,47,50,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,52,47,52,0,0,0,0,0,38,113,117,111,116,59,0,0,102,105,108,108,101,100,0,0,47,112,97,115,116,101,108,49,52,47,51,0,0,0,0,0,117,115,0,0,0,0,0,0,47,112,97,115,116,101,108,49,52,47,50,0,0,0,0,0,118,97,108,105,103,110,0,0,34,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,52,47,49,0,0,0,0,0,47,112,97,115,116,101,108,49,51,47,51,0,0,0,0,0,84,105,109,101,115,0,0,0,32,45,102,105,108,108,32,0,47,110,111,112,99,111,108,111,114,32,123,112,111,112,32,112,111,112,32,112,111,112,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,0,0,0,47,112,97,115,116,101,108,49,51,47,50,0,0,0,0,0,103,111,108,100,101,110,114,111,100,0,0,0,0,0,0,0,108,97,110,100,115,99,97,112,101,0,0,0,0,0,0,0,103,114,101,101,110,0,0,0,85,112,0,0,0,0,0,0,47,112,97,115,116,101,108,49,51,47,49,0,0,0,0,0,69,103,114,97,118,101,0,0,47,112,97,105,114,101,100,57,47,57,0,0,0,0,0,0,47,112,97,105,114,101,100,57,47,56,0,0,0,0,0,0,37,108,102,44,37,108,102,0,47,112,97,105,114,101,100,57,47,55,0,0,0,0,0,0,47,98,108,117,101,115,55,47,49,0,0,0,0,0,0,0,47,112,97,105,114,101,100,57,47,54,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,47,112,97,105,114,101,100,57,47,53,0,0,0,0,0,0,106,111,98,0,0,0,0,0,37,115,58,32,0,0,0,0,47,112,97,105,114,101,100,57,47,52,0,0,0,0,0,0,116,111,111,108,116,105,112,0,0,0,0,0,0,0,0,0,47,112,97,105,114,101,100,57,47,51,0,0,0,0,0,0,104,101,108,118,101,116,105,99,97,0,0,0,0,0,0,0,49,48,48,48,48,0,0,0,47,112,97,105,114,101,100,57,47,50,0,0,0,0,0,0,84,105,109,101,115,45,66,111,108,100,0,0,0,0,0,0,110,111,116,32,119,101,108,108,45,102,111,114,109,101,100,32,40,105,110,118,97,108,105,100,32,116,111,107,101,110,41,0,47,103,114,97,112,104,99,111,108,111,114,32,123,32,115,101,116,104,115,98,99,111,108,111,114,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,47,112,97,105,114,101,100,57,47,49,0,0,0,0,0,0,103,111,108,100,0,0,0,0,111,114,105,101,110,116,97,116,105,111,110,0,0,0,0,0,47,112,97,105,114,101,100,56,47,56,0,0,0,0,0,0,69,99,105,114,99,0,0,0,47,112,97,105,114,101,100,56,47,55,0,0,0,0,0,0,108,97,98,101,108,115,46,99,0,0,0,0,0,0,0,0,100,111,116,58,100,111,116,0,47,112,97,105,114,101,100,56,47,54,0,0,0,0,0,0,109,97,114,103,105,110,0,0,99,111,109,112,111,117,110,100,46,99,0,0,0,0,0,0,47,112,97,105,114,101,100,56,47,53,0,0,0,0,0,0,47,98,108,117,101,115,54,47,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,114,105,99,116,32,0,47,112,97,105,114,101,100,56,47,52,0,0,0,0,0,0,98,108,97,99,107,0,0,0,104,101,97,100,112,111,114,116,0,0,0,0,0,0,0,0,108,105,98,112,97,116,104,47,37,115,58,37,100,58,32,37,115,10,0,0,0,0,0,0,47,112,97,105,114,101,100,56,47,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,118,108,111,97,100,105,109,97,103,101,95,99,111,114,101,46,99,0,0,0,0,0,0,47,112,97,105,114,101,100,56,47,50,0,0,0,0,0,0,37,115,32,105,110,32,108,105,110,101,32,37,100,32,10,0,116,105,116,108,101,0,0,0,99,32,0,0,0,0,0,0,47,112,97,105,114,101,100,56,47,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,97,110,39,116,32,111,112,101,110,32,108,105,98,114,97,114,121,32,102,105,108,101,32,37,115,10,0,0,0,0,0,37,100,32,112,111,108,121,108,105,110,101,115,32,37,100,32,112,111,105,110,116,115,10,0,47,112,97,105,114,101,100,55,47,55,0,0,0,0,0,0,102,97,110,116,97,115,121,0,47,101,100,103,101,99,111,108,111,114,32,123,32,115,101,116,104,115,98,99,111,108,111,114,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,47,112,97,105,114,101,100,55,47,54,0,0,0,0,0,0,103,104,111,115,116,119,104,105,116,101,0,0,0,0,0,0,114,111,116,97,116,101,0,0,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,47,112,97,105,114,101,100,55,47,53,0,0,0,0,0,0,69,97,99,117,116,101,0,0,47,112,97,105,114,101,100,55,47,52,0,0,0,0,0,0,47,112,97,105,114,101,100,55,47,51,0,0,0,0,0,0,58,9,32,0,0,0,0,0,47,112,97,105,114,101,100,55,47,50,0,0,0,0,0,0,47,98,108,117,101,115,54,47,53,0,0,0,0,0,0,0,1,112,114,111,116,111,0,0,47,112,97,105,114,101,100,55,47,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,112,97,105,114,101,100,54,47,54,0,0,0,0,0,0,32,47,62,10,0,0,0,0,47,112,97,105,114,101,100,54,47,53,0,0,0,0,0,0,116,97,114,103,101,116,0,0,37,115,37,46,48,102,44,37,46,48,102,32,0,0,0,0,47,112,97,105,114,101,100,54,47,52,0,0,0,0,0,0,47,112,97,105,114,101,100,54,47,51,0,0,0,0,0,0,83,121,109,98,111,108,0,0,97,103,104,101,97,100,40,101,41,32,61,61,32,85,70,95,102,105,110,100,40,97,103,104,101,97,100,40,101,41,41,0,47,110,111,100,101,99,111,108,111,114,32,123,32,115,101,116,104,115,98,99,111,108,111,114,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,47,112,97,105,114,101,100,54,47,50,0,0,0,0,0,0,103,97,105,110,115,98,111,114,111,0,0,0,0,0,0,0,34,37,115,34,32,119,97,115,32,110,111,116,32,102,111,117,110,100,32,97,115,32,97,32,102,105,108,101,32,111,114,32,97,115,32,97,32,115,104,97,112,101,32,108,105,98,114,97,114,121,32,109,101,109,98,101,114,10,0,0,0,0,0,0,99,101,110,116,101,114,0,0,110,101,120,116,35,105,116,101,114,61,37,100,10,0,0,0,47,112,97,105,114,101,100,54,47,49,0,0,0,0,0,0,80,97,116,104,32,112,114,111,118,105,100,101,100,32,116,111,32,102,105,108,101,58,32,34,37,115,34,32,104,97,115,32,98,101,101,110,32,105,103,110,111,114,101,100,32,98,101,99,97,117,115,101,32,102,105,108,101,115,32,97,114,101,32,111,110,108,121,32,112,101,114,109,105,116,116,101,100,32,116,111,32,98,101,32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101,32,100,105,114,101,99,116,111,114,105,101,115,32,105,110,32,34,37,115,34,32,119,104,101,110,32,114,117,110,110,105,110,103,32,105,110,32,97,110,32,104,116,116,112,32,115,101,114,118,101,114,46,10,0,0,0,0,0,0,0,0,109,97,114,107,0,0,0,0,69,84,72,0,0,0,0,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,111,112,115,0,0,0,0,0,0,0,47,112,97,105,114,101,100,53,47,53,0,0,0,0,0,0,105,110,118,105,115,0,0,0,47,112,97,105,114,101,100,53,47,52,0,0,0,0,0,0,108,97,121,101,114,115,101,112,0,0,0,0,0,0,0,0,47,112,97,105,114,101,100,53,47,51,0,0,0,0,0,0,47,98,108,117,101,115,54,47,52,0,0,0,0,0,0,0,47,112,97,105,114,101,100,53,47,50,0,0,0,0,0,0,110,111,100,101,32,37,115,44,32,112,111,114,116,32,37,115,32,117,110,114,101,99,111,103,110,105,122,101,100,10,0,0,47,112,97,105,114,101,100,53,47,49,0,0,0,0,0,0,60,118,58,105,109,97,103,101,32,115,114,99,61,34,37,115,34,32,115,116,121,108,101,61,34,32,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,119,105,100,116,104,58,37,46,50,102,59,32,104,101,105,103,104,116,58,37,46,50,102,59,32,108,101,102,116,58,37,46,50,102,32,59,32,116,111,112,58,37,46,50,102,34,0,0,0,0,0,47,112,97,105,114,101,100,52,47,52,0,0,0,0,0,0,114,111,119,115,112,97,110,0,109,32,0,0,0,0,0,0,47,112,97,105,114,101,100,52,47,51,0,0,0,0,0,0,47,112,97,105,114,101,100,52,47,50,0,0,0,0,0,0,80,97,108,97,116,105,110,111,45,82,111,109,97,110,0,0,37,32,104,111,111,107,115,32,102,111,114,32,115,101,116,116,105,110,103,32,99,111,108,111,114,32,0,0,0,0,0,0,47,112,97,105,114,101,100,52,47,49,0,0,0,0,0,0,102,117,99,104,115,105,97,0,112,97,103,101,0,0,0,0,47,112,97,105,114,101,100,51,47,51,0,0,0,0,0,0,68,101,108,116,97,0,0,0,47,112,97,105,114,101,100,51,47,50,0,0,0,0,0,0,47,112,97,105,114,101,100,51,47,49,0,0,0,0,0,0,108,97,121,101,114,115,0,0,100,111,116,0,0,0,0,0,47,112,97,105,114,101,100,49,50,47,57,0,0,0,0,0,47,98,108,117,101,115,54,47,51,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,50,47,56,0,0,0,0,0,110,111,100,101,32,37,115,44,32,112,111,114,116,32,37,115,44,32,117,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,112,97,115,115,32,112,111,105,110,116,32,39,37,115,39,32,45,32,105,103,110,111,114,101,100,10,0,0,0,0,47,112,97,105,114,101,100,49,50,47,55,0,0,0,0,0,106,112,103,58,118,109,108,0,47,112,97,105,114,101,100,49,50,47,54,0,0,0,0,0,112,111,114,116,0,0,0,0,47,62,60,47,118,58,115,104,97,112,101,62,10,0,0,0,47,112,97,105,114,101,100,49,50,47,53,0,0,0,0,0,47,112,97,105,114,101,100,49,50,47,52,0,0,0,0,0,80,97,108,97,116,105,110,111,45,73,116,97,108,105,99,0,47,100,105,97,103,111,110,97,108,115,32,123,32,125,32,98,105,110,100,32,100,101,102,0,47,112,97,105,114,101,100,49,50,47,51,0,0,0,0,0,102,111,114,101,115,116,103,114,101,101,110,0,0,0,0,0,115,105,122,101,0,0,0,0,47,112,97,105,114,101,100,49,50,47,50,0,0,0,0,0,68,97,103,103,101,114,0,0,47,112,97,105,114,101,100,49,50,47,49,50,0,0,0,0,47,112,97,105,114,101,100,49,50,47,49,49,0,0,0,0,100,103,101,115,102,105,114,115,116,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,50,47,49,48,0,0,0,0,47,98,108,117,101,115,54,47,50,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,50,47,49,0,0,0,0,0,95,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,57,0,0,0,0,0,106,112,101,58,118,109,108,0,47,112,97,105,114,101,100,49,49,47,56,0,0,0,0,0,105,100,0,0,0,0,0,0,115,117,114,112,114,105,115,101,10,0,0,0,0,0,0,0,60,118,58,112,97,116,104,32,32,118,61,34,0,0,0,0,47,112,97,105,114,101,100,49,49,47,55,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,54,0,0,0,0,0,80,97,108,97,116,105,110,111,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,47,114,111,117,110,100,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,0,0,47,112,97,105,114,101,100,49,49,47,53,0,0,0,0,0,102,108,111,114,97,108,119,104,105,116,101,0,0,0,0,0,102,111,110,116,110,97,109,101,115,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,52,0,0,0,0,0,67,104,105,0,0,0,0,0,47,97,99,99,101,110,116,51,47,51,0,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,51,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,50,0,0,0,0,0,111,100,101,115,102,105,114,115,116,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,49,49,0,0,0,0,47,98,108,117,101,115,54,47,49,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,49,48,0,0,0,0,37,46,53,103,32,37,46,53,103,32,116,114,97,110,115,108,97,116,101,32,110,101,119,112,97,116,104,32,117,115,101,114,95,115,104,97,112,101,95,37,100,10,0,0,0,0,0,0,99,109,97,112,120,58,109,97,112,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,49,47,49,0,0,0,0,0,106,112,101,103,58,118,109,108,0,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,48,47,57,0,0,0,0,0,104,114,101,102,0,0,0,0,32,62,0,0,0,0,0,0,47,112,97,105,114,101,100,49,48,47,56,0,0,0,0,0,47,112,97,105,114,101,100,49,48,47,55,0,0,0,0,0,80,97,108,97,116,105,110,111,32,76,105,110,111,116,121,112,101,0,0,0,0,0,0,0,47,117,110,102,105,108,108,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,0,47,112,97,105,114,101,100,49,48,47,54,0,0,0,0,0,102,97,115,116,103,114,46,99,0,0,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,0,0,0,0,0,0,0,115,104,111,119,98,111,120,101,115,0,0,0,0,0,0,0,38,97,109,112,59,0,0,0,47,112,97,105,114,101,100,49,48,47,53,0,0,0,0,0,67,99,101,100,105,108,0,0,99,117,115,116,111,109,0,0,47,112,97,105,114,101,100,49,48,47,52,0,0,0,0,0,47,112,97,105,114,101,100,49,48,47,51,0,0,0,0,0,111,117,116,112,117,116,111,114,100,101,114,0,0,0,0,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,98,111,120,32,48,32,104,97,115,32,76,76,32,99,111,111,114,100,32,62,32,85,82,32,99,111,111,114,100,10,0,0,0,0,47,112,97,105,114,101,100,49,48,47,50,0,0,0,0,0,47,98,108,117,101,115,53,47,53,0,0,0,0,0,0,0,47,112,97,105,114,101,100,49,48,47,49,48,0,0,0,0,37,115,37,100,32,110,111,100,101,115,32,37,100,32,101,100,103,101,115,32,37,100,32,105,116,101,114,32,37,46,50,102,32,115,101,99,10,0,0,0,77,114,101,99,111,114,100,0,47,112,97,105,114,101,100,49,48,47,49,0,0,0,0,0,103,105,102,58,118,109,108,0,47,111,114,114,100,57,47,57,0,0,0,0,0,0,0,0,104,101,105,103,104,116,0,0,32,119,105,100,116,104,58,32,37,100,59,32,104,101,105,103,104,116,58,32,37,100,34,0,47,111,114,114,100,57,47,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,111,114,114,100,57,47,55,0,0,0,0,0,0,0,0,80,97,108,97,116,105,110,111,45,66,111,108,100,0,0,0,47,102,105,108,108,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,47,111,114,114,100,57,47,54,0,0,0,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,0,0,0,0,0,0,101,113,117,97,108,108,121,0,114,111,119,103,0,0,0,0,106,112,103,58,115,118,103,0,47,111,114,114,100,57,47,53,0,0,0,0,0,0,0,0,66,101,116,97,0,0,0,0,47,111,114,114,100,57,47,52,0,0,0,0,0,0,0,0,47,111,114,114,100,57,47,51,0,0,0,0,0,0,0,0,37,108,102,44,37,108,102,44,37,108,102,44,37,108,102,44,37,108,102,0,0,0,0,0,47,111,114,114,100,57,47,50,0,0,0,0,0,0,0,0,47,98,108,117,101,115,53,47,52,0,0,0,0,0,0,0,47,111,114,114,100,57,47,49,0,0,0,0,0,0,0,0,114,101,99,111,114,100,0,0,47,111,114,114,100,56,47,56,0,0,0,0,0,0,0,0,112,110,103,58,118,109,108,0,47,111,114,114,100,56,47,55,0,0,0,0,0,0,0,0,102,105,120,101,100,115,105,122,101,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,47,111,114,114,100,56,47,54,0,0,0,0,0,0,0,0,47,111,114,114,100,56,47,53,0,0,0,0,0,0,0,0,114,111,109,97,110,0,0,0,47,98,111,108,100,32,123,32,50,32,115,101,116,108,105,110,101,119,105,100,116,104,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,0,0,76,97,98,101,108,32,99,108,111,115,101,100,32,98,101,102,111,114,101,32,101,110,100,32,111,102,32,72,84,77,76,32,101,108,101,109,101,110,116,10,0,0,0,0,0,0,0,0,47,111,114,114,100,56,47,52,0,0,0,0,0,0,0,0,100,105,109,103,114,101,121,0,114,97,110,107,115,101,112,0,47,111,114,114,100,56,47,51,0,0,0,0,0,0,0,0,65,117,109,108,0,0,0,0,78,68,95,110,101,120,116,40,118,41,32,61,61,32,78,85,76,76,0,0,0,0,0,0,47,111,114,114,100,56,47,50,0,0,0,0,0,0,0,0,47,111,114,114,100,56,47,49,0,0,0,0,0,0,0,0,37,108,102,44,37,108,102,44,37,108,102,44,37,91,94,44,93,37,115,0,0,0,0,0,47,111,114,114,100,55,47,55,0,0,0,0,0,0,0,0,47,98,108,117,101,115,53,47,51,0,0,0,0,0,0,0,47,111,114,114,100,55,47,54,0,0,0,0,0,0,0,0,38,35,49,54,48,59,0,0,77,99,105,114,99,108,101,0,47,111,114,114,100,55,47,53,0,0,0,0,0,0,0,0,115,118,103,58,115,118,103,0,47,111,114,114,100,55,47,52,0,0,0,0,0,0,0,0,99,111,108,115,112,97,110,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,118,109,108,46,99,0,0,0,0,0,47,111,114,114,100,55,47,51,0,0,0,0,0,0,0,0,47,111,114,114,100,55,47,50,0,0,0,0,0,0,0,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,82,111,109,97,110,0,0,32,99,114,101,97,116,101,32,108,105,110,101,32,0,0,0,47,105,110,118,105,115,32,123,47,102,105,108,108,32,123,110,101,119,112,97,116,104,125,32,100,101,102,32,47,115,116,114,111,107,101,32,123,110,101,119,112,97,116,104,125,32,100,101,102,32,47,115,104,111,119,32,123,112,111,112,32,110,101,119,112,97,116,104,125,32,100,101,102,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,47,111,114,114,100,55,47,49,0,0,0,0,0,0,0,0,100,105,109,103,114,97,121,0,110,111,100,101,115,101,112,0,47,111,114,114,100,54,47,54,0,0,0,0,0,0,0,0,65,116,105,108,100,101,0,0,99,121,97,110,0,0,0,0,75,80,95,82,105,103,104,116,0,0,0,0,0,0,0,0,47,111,114,114,100,54,47,53,0,0,0,0,0,0,0,0,47,111,114,114,100,54,47,52,0,0,0,0,0,0,0,0,37,108,102,44,37,108,102,44,37,108,102,44,39,37,91,94,39,93,39,0,0,0,0,0,47,111,114,114,100,54,47,51,0,0,0,0,0,0,0,0,47,98,108,117,101,115,53,47,50,0,0,0,0,0,0,0,47,111,114,114,100,54,47,50,0,0,0,0,0,0,0,0,77,115,113,117,97,114,101,0,47,111,114,114,100,54,47,49,0,0,0,0,0,0,0,0,115,118,103,58,120,100,111,116,0,0,0,0,0,0,0,0,47,111,114,114,100,53,47,53,0,0,0,0,0,0,0,0,99,101,108,108,115,112,97,99,105,110,103,0,0,0,0,0,60,117,110,107,110,111,119,110,62,0,0,0,0,0,0,0,35,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,47,111,114,114,100,53,47,52,0,0,0,0,0,0,0,0,97,114,105,97,108,0,0,0,47,111,114,114,100,53,47,51,0,0,0,0,0,0,0,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,73,116,97,108,105,99,0,115,111,117,114,99,101,0,0,110,111,32,101,108,101,109,101,110,116,32,102,111,117,110,100,0,0,0,0,0,0,0,0,47,100,111,116,116,101,100,32,123,32,91,49,32,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,109,117,108,32,54,32,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,109,117,108,93,32,48,32,115,101,116,100,97,115,104,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,0,47,111,114,114,100,53,47,50,0,0,0,0,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,0,0,0,0,0,82,76,0,0,0,0,0,0,47,111,114,114,100,53,47,49,0,0,0,0,0,0,0,0,65,114,105,110,103,0,0,0,47,111,114,114,100,52,47,52,0,0,0,0,0,0,0,0,45,45,0,0,0,0,0,0,120,100,111,116,0,0,0,0,47,111,114,114,100,52,47,51,0,0,0,0,0,0,0,0,118,105,101,119,112,111,114,116,0,0,0,0,0,0,0,0,99,108,117,115,116,101,114,46,99,0,0,0,0,0,0,0,47,111,114,114,100,52,47,50,0,0,0,0,0,0,0,0,47,98,108,117,101,115,53,47,49,0,0,0,0,0,0,0,47,111,114,114,100,52,47,49,0,0,0,0,0,0,0,0,116,97,105,108,112,111,114,116,0,0,0,0,0,0,0,0,77,100,105,97,109,111,110,100,0,0,0,0,0,0,0,0,116,107,0,0,0,0,0,0,84,97,114,103,101,116,32,65,82,32,61,32,37,103,10,0,99,97,110,110,111,116,32,102,105,110,100,32,116,114,105,97,110,103,108,101,32,112,97,116,104,0,0,0,0,0,0,0,32,45,45,32,0,0,0,0,47,111,114,114,100,51,47,51,0,0,0,0,0,0,0,0,98,108,97,99,107,0,0,0,101,112,115,58,120,100,111,116,0,0,0,0,0,0,0,0,47,111,114,114,100,51,47,50,0,0,0,0,0,0,0,0,99,101,108,108,112,97,100,100,105,110,103,0,0,0,0,0,110,111,110,101,0,0,0,0,98,98,0,0,0,0,0,0,114,0,0,0,0,0,0,0,47,111,114,114,100,51,47,49,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,57,47,57,0,0,0,0,0,37,100,32,112,111,108,121,103,111,110,115,32,37,100,32,112,111,105,110,116,115,10,0,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,66,111,108,100,73,116,97,108,105,99,0,0,0,0,0,47,100,97,115,104,101,100,32,123,32,91,57,32,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,109,117,108,32,100,117,112,32,93,32,48,32,115,101,116,100,97,115,104,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,0,47,111,114,97,110,103,101,115,57,47,56,0,0,0,0,0,100,101,101,112,112,105,110,107,0,0,0,0,0,0,0,0,66,84,0,0,0,0,0,0,47,111,114,97,110,103,101,115,57,47,55,0,0,0,0,0,97,113,117,97,0,0,0,0,65,108,112,104,97,0,0,0,47,111,114,97,110,103,101,115,57,47,54,0,0,0,0,0,47,111,114,97,110,103,101,115,57,47,53,0,0,0,0,0,112,97,103,101,100,105,114,61,37,115,32,105,103,110,111,114,101,100,10,0,0,0,0,0,47,111,114,97,110,103,101,115,57,47,52,0,0,0,0,0,47,98,108,117,101,115,52,47,52,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,57,47,51,0,0,0,0,0,105,110,118,104,111,117,115,101,0,0,0,0,0,0,0,0,37,115,32,45,62,32,37,115,58,32,116,97,105,108,32,105,115,32,105,110,115,105,100,101,32,104,101,97,100,32,99,108,117,115,116,101,114,32,37,115,10,0,0,0,0,0,0,0,101,100,103,101,0,0,0,0,47,111,114,97,110,103,101,115,57,47,50,0,0,0,0,0])
.concat([112,115,58,120,100,111,116,0,47,111,114,97,110,103,101,115,57,47,49,0,0,0,0,0,98,111,114,100,101,114,0,0,34,32,47,62,0,0,0,0,47,111,114,97,110,103,101,115,56,47,56,0,0,0,0,0,47,111,114,97,110,103,101,115,56,47,55,0,0,0,0,0,67,101,110,116,117,114,121,32,83,99,104,111,111,108,98,111,111,107,32,76,0,0,0,0,40,78,68,95,85,70,95,115,105,122,101,40,110,41,32,60,61,32,49,41,32,124,124,32,40,110,32,61,61,32,108,101,97,100,101,114,41,0,0,0,112,114,101,102,105,120,32,109,117,115,116,32,110,111,116,32,98,101,32,98,111,117,110,100,32,116,111,32,111,110,101,32,111,102,32,116,104,101,32,114,101,115,101,114,118,101,100,32,110,97,109,101,115,112,97,99,101,32,110,97,109,101,115,0,47,115,111,108,105,100,32,123,32,91,93,32,48,32,115,101,116,100,97,115,104,32,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,56,47,54,0,0,0,0,0,108,111,97,100,105,109,97,103,101,0,0,0,0,0,0,0,76,82,0,0,0,0,0,0,100,97,114,107,118,105,111,108,101,116,0,0,0,0,0,0,37,115,32,119,104,105,108,101,32,111,112,101,110,105,110,103,32,37,115,10,0,0,0,0,47,111,114,97,110,103,101,115,56,47,53,0,0,0,0,0,71,111,105,110,103,32,116,111,32,97,112,112,108,121,32,97,110,111,116,104,101,114,32,101,120,112,97,110,115,105,111,110,46,10,0,0,0,0,0,0,58,0,0,0,0,0,0,0,47,115,101,116,117,112,76,97,116,105,110,49,32,123,0,0,65,103,114,97,118,101,0,0,47,111,114,97,110,103,101,115,56,47,52,0,0,0,0,0,100,111,116,116,101,100,0,0,47,111,114,97,110,103,101,115,56,47,51,0,0,0,0,0,114,101,110,100,101,114,101,114,32,102,111,114,32,37,115,32,105,115,32,117,110,97,118,97,105,108,97,98,108,101,10,0,47,111,114,97,110,103,101,115,56,47,50,0,0,0,0,0,47,98,108,117,101,115,52,47,51,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,56,47,49,0,0,0,0,0,105,110,118,116,114,97,112,101,122,105,117,109,0,0,0,0,47,111,114,97,110,103,101,115,55,47,55,0,0,0,0,0,95,37,100,0,0,0,0,0,106,112,103,58,120,100,111,116,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,55,47,54,0,0,0,0,0,98,103,99,111,108,111,114,0,34,32,100,97,115,104,115,116,121,108,101,61,34,100,111,116,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,55,47,53,0,0,0,0,0,41,10,0,0,0,0,0,0,47,111,114,97,110,103,101,115,55,47,52,0,0,0,0,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,66,111,108,100,0,0,0,114,101,115,101,114,118,101,100,32,112,114,101,102,105,120,32,40,120,109,108,110,115,41,32,109,117,115,116,32,110,111,116,32,98,101,32,100,101,99,108,97,114,101,100,32,111,114,32,117,110,100,101,99,108,97,114,101,100,0,0,0,0,0,0,37,32,115,116,121,108,101,115,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,55,47,51,0,0,0,0,0,100,101,118,105,99,101,0,0,114,97,110,107,100,105,114,0,100,97,114,107,116,117,114,113,117,111,105,115,101,0,0,0,47,111,114,97,110,103,101,115,55,47,50,0,0,0,0,0,65,99,105,114,99,0,0,0,47,111,114,97,110,103,101,115,55,47,49,0,0,0,0,0,47,111,114,97,110,103,101,115,54,47,54,0,0,0,0,0,108,97,121,111,117,116,32,119,97,115,32,110,111,116,32,100,111,110,101,10,0,0,0,0,100,105,97,109,111,110,100,0,47,111,114,97,110,103,101,115,54,47,53,0,0,0,0,0,47,98,108,117,101,115,52,47,50,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,54,47,52,0,0,0,0,0,105,110,118,116,114,105,97,110,103,108,101,0,0,0,0,0,47,111,114,97,110,103,101,115,54,47,51,0,0,0,0,0,50,48,0,0,0,0,0,0,106,112,101,58,120,100,111,116,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,54,47,50,0,0,0,0,0,98,97,108,105,103,110,0,0,34,32,100,97,115,104,115,116,121,108,101,61,34,100,97,115,104,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,54,47,49,0,0,0,0,0,32,40,0,0,0,0,0,0,47,111,114,97,110,103,101,115,53,47,53,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,79,98,108,105,113,117,101,0,0,0,0,0,0,0,114,101,115,101,114,118,101,100,32,112,114,101,102,105,120,32,40,120,109,108,41,32,109,117,115,116,32,110,111,116,32,98,101,32,117,110,100,101,99,108,97,114,101,100,32,111,114,32,98,111,117,110,100,32,116,111,32,97,110,111,116,104,101,114,32,110,97,109,101,115,112,97,99,101,32,110,97,109,101,0,32,32,32,32,32,32,32,115,99,97,108,101,0,0,0,0,47,111,114,97,110,103,101,115,53,47,52,0,0,0,0,0,116,101,120,116,108,97,121,111,117,116,0,0,0,0,0,0,113,117,97,110,116,117,109,0,100,97,114,107,115,108,97,116,101,103,114,101,121,0,0,0,47,111,114,97,110,103,101,115,53,47,51,0,0,0,0,0,65,97,99,117,116,101,0,0,47,111,114,97,110,103,101,115,53,47,50,0,0,0,0,0,47,111,114,97,110,103,101,115,53,47,49,0,0,0,0,0,76,97,121,111,117,116,32,119,97,115,32,110,111,116,32,100,111,110,101,46,32,32,77,105,115,115,105,110,103,32,108,97,121,111,117,116,32,112,108,117,103,105,110,115,63,32,10,0,47,111,114,97,110,103,101,115,52,47,52,0,0,0,0,0,47,98,108,117,101,115,52,47,49,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,52,47,51,0,0,0,0,0,116,114,105,112,108,101,111,99,116,97,103,111,110,0,0,0,47,111,114,97,110,103,101,115,52,47,50,0,0,0,0,0,49,57,0,0,0,0,0,0,106,112,101,103,58,120,100,111,116,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,52,47,49,0,0,0,0,0,60,84,68,62,0,0,0,0,34,32,119,101,105,103,104,116,61,34,37,46,48,102,112,116,0,0,0,0,0,0,0,0,47,111,114,97,110,103,101,115,51,47,51,0,0,0,0,0,32,118,101,114,115,105,111,110,32,0,0,0,0,0,0,0,71,68,95,114,97,110,107,40,103,41,91,114,93,46,110,32,60,61,32,71,68,95,114,97,110,107,40,103,41,91,114,93,46,97,110,0,0,0,0,0,47,111,114,97,110,103,101,115,51,47,50,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,45,79,98,108,105,113,117,101,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,115,117,115,112,101,110,100,32,105,110,32,101,120,116,101,114,110,97,108,32,112,97,114,97,109,101,116,101,114,32,101,110,116,105,116,121,0,0,0,0,0,32,32,32,32,32,32,32,100,117,112,32,49,32,101,120,99,104,32,100,105,118,32,47,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,101,120,99,104,32,100,101,102,0,0,47,111,114,97,110,103,101,115,51,47,49,0,0,0,0,0,100,101,115,116,105,110,97,116,105,111,110,32,112,111,105,110,116,32,110,111,116,32,105,110,32,97,110,121,32,116,114,105,97,110,103,108,101,0,0,0,108,97,121,111,117,116,0,0,71,68,70,79,78,84,80,65,84,72,61,0,0,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,0,0,0,47,103,114,101,121,115,57,47,57,0,0,0,0,0,0,0,65,69,108,105,103,0,0,0,47,103,114,101,121,115,57,47,56,0,0,0,0,0,0,0,47,97,99,99,101,110,116,51,47,50,0,0,0,0,0,0,47,103,114,101,121,115,57,47,55,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,114,101,110,100,101,114,0,0,47,103,114,101,121,115,57,47,54,0,0,0,0,0,0,0,47,98,108,117,101,115,51,47,51,0,0,0,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,44,32,115,116,97,116,101,109,101,110,116,32,115,107,105,112,112,101,100,0,47,103,114,101,121,115,57,47,53,0,0,0,0,0,0,0,100,111,117,98,108,101,111,99,116,97,103,111,110,0,0,0,47,103,114,101,121,115,57,47,52,0,0,0,0,0,0,0,49,56,0,0,0,0,0,0,103,105,102,58,120,100,111,116,0,0,0,0,0,0,0,0,105,109,97,112,58,109,97,112,0,0,0,0,0,0,0,0,47,103,114,101,121,115,57,47,51,0,0,0,0,0,0,0,37,115,32,118,97,108,117,101,32,37,115,32,60,32,37,100,32,45,32,116,111,111,32,115,109,97,108,108,32,45,32,105,103,110,111,114,101,100,0,0,60,118,58,115,116,114,111,107,101,32,99,111,108,111,114,61,34,0,0,0,0,0,0,0,47,103,114,101,121,115,57,47,50,0,0,0,0,0,0,0,35,32,71,101,110,101,114,97,116,101,100,32,98,121,32,0,47,103,114,101,121,115,57,47,49,0,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,0,112,97,114,115,105,110,103,32,102,105,110,105,115,104,101,100,0,0,0,0,0,0,0,0,32,50,10,0,0,0,0,0,47,103,114,101,121,115,56,47,56,0,0,0,0,0,0,0,78,68,95,114,97,110,107,40,102,114,111,109,41,32,60,32,78,68,95,114,97,110,107,40,116,111,41,0,0,0,0,0,68,79,84,70,79,78,84,80,65,84,72,0,0,0,0,0,81,0,0,0,0,0,0,0,100,97,114,107,115,108,97,116,101,98,108,117,101,0,0,0,47,103,114,101,121,115,56,47,55,0,0,0,0,0,0,0,98,122,46,115,105,122,101,0,47,115,101,116,95,115,99,97,108,101,32,123,0,0,0,0,101,112,115,102,0,0,0,0,47,103,114,101,121,115,56,47,54,0,0,0,0,0,0,0,47,103,114,101,121,115,56,47,53,0,0,0,0,0,0,0,117,110,109,97,116,99,104,101,100,32,39,40,39,32,105,110,32,115,116,121,108,101,58,32,37,115,10,0,0,0,0,0,105,110,32,114,111,117,116,101,115,112,108,105,110,101,115,44,32,99,97,110,110,111,116,32,102,105,110,100,32,78,79,82,77,65,76,32,101,100,103,101,10,0,0,0,0,0,0,0,47,103,114,101,121,115,56,47,52,0,0,0,0,0,0,0,47,98,108,117,101,115,51,47,50,0,0,0,0,0,0,0,47,103,114,101,121,115,56,47,51,0,0,0,0,0,0,0,37,100,32,0,0,0,0,0,100,111,117,98,108,101,99,105,114,99,108,101,0,0,0,0,47,103,114,101,121,115,56,47,50,0,0,0,0,0,0,0,49,55,0,0,0,0,0,0,112,110,103,58,120,100,111,116,0,0,0,0,0,0,0,0,47,103,114,101,121,115,56,47,49,0,0,0,0,0,0,0,37,115,32,118,97,108,117,101,32,37,115,32,62,32,37,100,32,45,32,116,111,111,32,108,97,114,103,101,32,45,32,105,103,110,111,114,101,100,0,0,60,47,118,58,115,104,97,112,101,62,10,0,0,0,0,0,47,103,114,101,121,115,55,47,55,0,0,0,0,0,0,0,32,80,97,103,101,115,58,32,37,100,10,0,0,0,0,0,47,103,114,101,121,115,55,47,54,0,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,45,66,111,108,100,0,0,0,112,97,114,115,105,110,103,32,97,98,111,114,116,101,100,0,85,115,105,110,103,32,37,115,58,32,37,115,58,37,115,10,0,0,0,0,0,0,0,0,49,50,48,48,0,0,0,0,47,103,114,101,121,115,55,47,53,0,0,0,0,0,0,0,102,111,110,116,112,97,116,104,0,0,0,0,0,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,0,0,0,0,37,100,0,0,0,0,0,0,106,112,101,58,115,118,103,0,47,103,114,101,121,115,55,47,52,0,0,0,0,0,0,0,120,109,108,0,0,0,0,0,115,112,108,105,110,101,115,0,47,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,49,46,48,32,100,101,102,0,34,32,110,97,109,101,61,34,0,0,0,0,0,0,0,0,47,103,114,101,121,115,55,47,51,0,0,0,0,0,0,0,47,103,114,101,121,115,55,47,50,0,0,0,0,0,0,0,116,114,117,110,99,97,116,105,110,103,32,115,116,121,108,101,32,39,37,115,39,10,0,0,47,103,114,101,121,115,55,47,49,0,0,0,0,0,0,0,47,98,108,117,101,115,51,47,49,0,0,0,0,0,0,0,47,103,114,101,121,115,54,47,54,0,0,0,0,0,0,0,115,113,117,97,114,101,0,0,47,103,114,101,121,115,54,47,53,0,0,0,0,0,0,0,49,54,0,0,0,0,0,0,115,118,103,58,100,111,116,0,47,103,114,101,121,115,54,47,52,0,0,0,0,0,0,0,73,109,112,114,111,112,101,114,32,37,115,32,118,97,108,117,101,32,37,115,32,45,32,105,103,110,111,114,101,100,0,0,34,47,62,0,0,0,0,0,47,103,114,101,121,115,54,47,51,0,0,0,0,0,0,0,32,84,105,116,108,101,58,32,0,0,0,0,0,0,0,0,47,103,114,101,121,115,54,47,50,0,0,0,0,0,0,0,99,111,110,100,101,110,115,101,100,0,0,0,0,0,0,0,112,97,114,115,101,114,32,110,111,116,32,115,117,115,112,101,110,100,101,100,0,0,0,0,45,50,10,0,0,0,0,0,47,103,114,101,121,115,54,47,49,0,0,0,0,0,0,0,45,45,0,0,0,0,0,0,115,118,103,0,0,0,0,0,100,97,114,107,115,97,108,109,111,110,0,0,0,0,0,0,47,103,114,101,121,115,53,47,53,0,0,0,0,0,0,0,60,63,120,109,108,0,0,0,85,110,107,110,111,119,110,32,34,115,112,108,105,110,101,115,34,32,118,97,108,117,101,58,32,34,37,115,34,32,45,32,105,103,110,111,114,101,100,10,0,0,0,0,0,0,0,0,47,99,111,111,114,100,102,111,110,116,32,99,111,111,114,100,45,102,111,110,116,45,102,97,109,105,108,121,32,102,105,110,100,102,111,110,116,32,56,32,115,99,97,108,101,102,111,110,116,32,100,101,102,0,0,0,60,109,97,112,32,105,100,61,34,0,0,0,0,0,0,0,47,103,114,101,121,115,53,47,52,0,0,0,0,0,0,0,117,32,33,61,32,118,0,0,47,103,114,101,121,115,53,47,51,0,0,0,0,0,0,0,117,110,109,97,116,99,104,101,100,32,39,41,39,32,105,110,32,115,116,121,108,101,58,32,37,115,10,0,0,0,0,0,47,103,114,101,121,115,53,47,50,0,0,0,0,0,0,0,47,97,99,99,101,110,116,56,47,56,0,0,0,0,0,0,47,103,114,101,121,115,53,47,49,0,0,0,0,0,0,0,38,35,52,53,59,0,0,0,114,101,99,116,97,110,103,108,101,0,0,0,0,0,0,0,47,103,114,101,121,115,52,47,52,0,0,0,0,0,0,0,49,53,0,0,0,0,0,0,101,112,115,58,100,111,116,0,47,103,114,101,121,115,52,47,51,0,0,0,0,0,0,0,80,79,73,78,84,45,83,73,90,69,0,0,0,0,0,0,32,101,32,0,0,0,0,0,47,103,114,101,121,115,52,47,50,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,47,103,114,101,121,115,52,47,49,0,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,112,97,114,115,101,114,32,115,117,115,112,101,110,100,101,100,0,0,0,0,0,0,0,0,83,105,110,103,108,101,10,0,47,103,114,101,121,115,51,47,51,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,112,115,0,0,0,0,0,0,100,97,114,107,114,101,100,0,47,103,114,101,121,115,51,47,50,0,0,0,0,0,0,0,102,111,110,116,110,97,109,101,58,32,34,37,115,34,32,114,101,115,111,108,118,101,100,32,116,111,58,32,37,115,10,0,101,112,115,0,0,0,0,0,101,115,0,0,0,0,0,0,47,100,101,102,97,117,108,116,45,102,111,110,116,45,102,97,109,105,108,121,32,47,84,105,109,101,115,45,82,111,109,97,110,32,100,101,102,0,0,0,32,0,0,0,0,0,0,0,47,103,114,101,121,115,51,47,49,0,0,0,0,0,0,0,98,108,117,101,0,0,0,0,82,105,103,104,116,0,0,0,47,103,114,101,101,110,115,57,47,57,0,0,0,0,0,0,110,101,115,116,105,110,103,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,115,116,121,108,101,58,32,37,115,10,0,0,0,0,0,0,0,47,103,114,101,101,110,115,57,47,56,0,0,0,0,0,0,47,97,99,99,101,110,116,56,47,55,0,0,0,0,0,0,47,103,114,101,101,110,115,57,47,55,0,0,0,0,0,0,114,101,99,116,0,0,0,0,49,48,48,46,48,48,10,0,47,103,114,101,101,110,115,57,47,54,0,0,0,0,0,0,49,52,0,0,0,0,0,0,112,115,58,100,111,116,0,0,47,103,114,101,101,110,115,57,47,53,0,0,0,0,0,0,112,111,105,110,116,45,115,105,122,101,0,0,0,0,0,0,32,108,32,0,0,0,0,0,47,103,114,101,101,110,115,57,47,52,0,0,0,0,0,0,32,45,97,110,99,104,111,114,32,101,0,0,0,0,0,0,91,105,110,116,101,114,110,97,108,32,99,111,117,114,105,101,114,93,0,0,0,0,0,0,37,115,58,37,100,58,32,37,115,32,110,101,97,114,32,108,105,110,101,32,37,100,10,0,47,103,114,101,101,110,115,57,47,51,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,105,108,108,101,103,97,108,32,99,104,97,114,97,99,116,101,114,40,115,41,32,105,110,32,112,117,98,108,105,99,32,105,100,0,0,0,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,47,103,114,101,101,110,115,57,47,50,0,0,0,0,0,0,102,105,103,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,10,0,0,37,100,0,0,0,0,0,0,103,100,0,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,0,0,0,0,0,0,114,97,110,107,0,0,0,0,47,103,114,101,101,110,115,57,47,49,0,0,0,0,0,0,197,208,211,198,0,0,0,0,114,117,101,0,0,0,0,0,47,99,111,111,114,100,45,102,111,110,116,45,102,97,109,105,108,121,32,47,84,105,109,101,115,45,82,111,109,97,110,32,100,101,102,0,0,0,0,0,100,101,102,97,117,108,116,32,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,56,47,56,0,0,0,0,0,0,45,62,0,0,0,0,0,0,100,111,116,0,0,0,0,0,47,103,114,101,101,110,115,56,47,55,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,69,68,95,116,111,95,118,105,114,116,40,111,114,105,103,41,32,33,61,32,78,85,76,76,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,56,47,54,0,0,0,0,0,0,47,97,99,99,101,110,116,56,47,54,0,0,0,0,0,0,47,103,114,101,101,110,115,56,47,53,0,0,0,0,0,0,107,101,121,0,0,0,0,0,99,111,109,112,111,110,101,110,116,0,0,0,0,0,0,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,111,112,115,0,0,0,0,0,0,47,103,114,101,101,110,115,56,47,52,0,0,0,0,0,0,76,101,116,116,101,114,10,0,115,111,108,105,100,0,0,0,49,51,0,0,0,0,0,0,106,112,103,58,100,111,116,0,37,108,102,44,37,100,0,0,32,45,62,32,0,0,0,0,47,103,114,101,101,110,115,56,47,51,0,0,0,0,0,0,102,97,99,101,0,0,0,0,37,46,48,102,44,37,46,48,102,32,0,0,0,0,0,0,37,100,32,37,100,32,37,100,32,37,100,0,0,0,0,0,99,97,110,39,116,32,102,105,110,100,32,108,105,98,114,97,114,121,32,102,105,108,101,32,37,115,10,0,0,0,0,0,47,103,114,101,101,110,115,56,47,50,0,0,0,0,0,0,32,45,97,110,99,104,111,114,32,119,0,0,0,0,0,0,47,103,114,101,101,110,115,56,47,49,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,0,0,116,101,120,116,32,100,101,99,108,97,114,97,116,105,111,110,32,110,111,116,32,119,101,108,108,45,102,111,114,109,101,100,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,55,47,55,0,0,0,0,0,0,37,115,37,100,32,45,0,0,37,100,32,111,112,115,32,37,46,50,102,32,115,101,99,10,0,0,0,0,0,0,0,0,37,46,53,103,44,37,46,53,103,44,37,46,53,103,44,37,46,53,103,32,0,0,0,0,110,111,110,101,0,0,0,0,100,97,114,107,111,114,97,110,103,101,0,0,0,0,0,0,103,118,119,114,105,116,101,95,110,111,95,122,32,112,114,111,98,108,101,109,32,37,100,10,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,55,47,54,0,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,0,0,0,0,112,100,102,0,0,0,0,0,112,108,105,110,101,0,0,0,37,37,66,101,103,105,110,82,101,115,111,117,114,99,101,58,32,112,114,111,99,115,101,116,32,103,114,97,112,104,118,105,122,32,48,32,48,0,0,0,98,97,115,101,32,114,101,102,101,114,101,114,10,0,0,0,47,103,114,101,101,110,115,55,47,53,0,0,0,0,0,0,47,103,114,101,101,110,115,55,47,52,0,0,0,0,0,0,98,108,97,99,107,0,0,0,47,103,114,101,101,110,115,55,47,51,0,0,0,0,0,0,47,97,99,99,101,110,116,56,47,53,0,0,0,0,0,0,47,103,114,101,101,110,115,55,47,50,0,0,0,0,0,0,98,111,120,51,100,0,0,0,47,103,114,101,101,110,115,55,47,49,0,0,0,0,0,0,73,110,99,104,101,115,10,0,49,50,0,0,0,0,0,0,106,112,101,58,100,111,116,0,37,115,32,45,62,32,37,115,58,32,104,101,97,100,32,110,111,116,32,105,110,115,105,100,101,32,104,101,97,100,32,99,108,117,115,116,101,114,32,37,115,10,0,0,0,0,0,0,110,111,100,101,0,0,0,0,47,103,114,101,101,110,115,54,47,54,0,0,0,0,0,0,99,111,108,111,114,0,0,0,32,109,32,0,0,0,0,0,47,103,114,101,101,110,115,54,47,53,0,0,0,0,0,0,32,37,100,125,0,0,0,0,47,103,114,101,101,110,115,54,47,52,0,0,0,0,0,0,72,101,108,118,101,116,105,99,97,0,0,0,0,0,0,0,108,101,97,100,101,114,32,33,61,32,78,85,76,76,0,0,88,77,76,32,100,101,99,108,97,114,97,116,105,111,110,32,110,111,116,32,119,101,108,108,45,102,111,114,109,101,100,0,95,116,108,100,114,97,119,95,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,54,47,51,0,0,0,0,0,0,37,46,53,103,44,37,46,53,103,44,37,46,53,103,44,37,46,53,103,0,0,0,0,0,103,108,111,98,97,108,0,0,108,97,121,111,117,116,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,0,114,0,0,0,0,0,0,0,47,103,114,101,101,110,115,54,47,50,0,0,0,0,0,0,68,117,109,109,121,61,37,100,10,0,0,0,0,0,0,0,102,105,108,101,32,108,111,97,100,105,110,103,32,105,115,32,100,105,115,97,98,108,101,100,32,98,101,99,97,117,115,101,32,116,104,101,32,101,110,118,105,114,111,110,109,101,110,116,32,99,111,110,116,97,105,110,115,32,83,69,82,86,69,82,95,78,65,77,69,61,34,37,115,34,110,97,110,100,32,116,104,101,114,101,32,105,115,32,110,111,32,71,86,95,70,73,76,69,95,80,65,84,72,32,118,97,114,105,97,98,108,101,32,115,101,116,46,10,0,0,37,80,68,70,45,0,0,0,0,0,0,0,0,0,0,0,111,108,121,108,105,110,101,0,125,32,98,105,110,100,32,100,101,102,0,0,0,0,0,0,60,47,109,97,112,62,10,0,47,103,114,101,101,110,115,54,47,49,0,0,0,0,0,0,100,97,115,104,101,100,0,0,47,103,114,101,101,110,115,53,47,53,0,0,0,0,0,0,98,103,99,111,108,111,114,0,47,103,114,101,101,110,115,53,47,52,0,0,0,0,0,0,47,97,99,99,101,110,116,56,47,52,0,0,0,0,0,0,47,103,114,101,101,110,115,53,47,51,0,0,0,0,0,0,102,111,108,100,101,114,0,0,47,103,114,101,101,110,115,53,47,50,0,0,0,0,0,0,67,101,110,116,101,114,10,0,49,49,0,0,0,0,0,0,106,112,101,103,58,100,111,116,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,53,47,49,0,0,0,0,0,0,60,70,79,78,84,62,0,0,60,118,58,112,97,116,104,32,118,61,34,0,0,0,0,0,47,103,114,101,101,110,115,52,47,52,0,0,0,0,0,0,34,0,0,0,0,0,0,0,47,103,114,101,101,110,115,52,47,51,0,0,0,0,0,0,67,111,117,114,105,101,114,45,79,98,108,105,113,117,101,0,105,110,99,111,109,112,108,101,116,101,32,109,97,114,107,117,112,32,105,110,32,112,97,114,97,109,101,116,101,114,32,101,110,116,105,116,121,0,0,0,95,104,108,100,114,97,119,95,0,0,0,0,0,0,0,0,47,103,114,101,101,110,115,52,47,50,0,0,0,0,0,0,37,100,32,37,100,32,0,0,108,111,99,97,108,0,0,0,100,97,114,107,109,97,103,101,110,116,97,0,0,0,0,0,99,111,114,101,0,0,0,0,47,103,114,101,101,110,115,52,47,49,0,0,0,0,0,0,100,111,116,95,108,97,121,111,117,116,0,0,0,0,0,0,105,110,32,108,97,98,101,108,32,111,102,32,103,114,97,112,104,32,37,115,10,0,0,0,106,112,101,103,0,0,0,0,114,116,104,111,0,0,0,0,99,108,101,97,114,116,111,109,97,114,107,0,0,0,0,0,47,103,114,101,101,110,115,51,47,51,0,0,0,0,0,0,34,62,10,0,0,0,0,0,47,103,114,101,101,110,115,51,47,50,0,0,0,0,0,0,102,105,108,108,99,111,108,111,114,0,0,0,0,0,0,0,98,111,120,0,0,0,0,0,47,103,114,101,101,110,115,51,47,49,0,0,0,0,0,0,47,97,99,99,101,110,116,56,47,51,0,0,0,0,0,0,47,103,110,98,117,57,47,57,0,0,0,0,0,0,0,0,116,97,98,0,0,0,0,0,47,103,110,98,117,57,47,56,0,0,0,0,0,0,0,0,80,111,114,116,114,97,105,116,10,0,0,0,0,0,0,0,49,48,0,0,0,0,0,0,103,105,102,58,100,111,116,0,47,103,110,98,117,57,47,55,0,0,0,0,0,0,0,0,73,108,108,101,103,97,108,32,118,97,108,117,101,32,37,115,32,102,111,114,32,65,76,73,71,78,32,45,32,105,103,110,111,114,101,100,10,0,0,0,47,103,110,98,117,57,47,54,0,0,0,0,0,0,0,0,32,119,105,100,116,104,58,32,37,100,59,32,104,101,105,103,104,116,58,32,37,100,34,32,102,105,108,108,101,100,61,34,102,97,108,115,101,34,62,0,32,45,102,111,110,116,32,123,0,0,0,0,0,0,0,0,47,103,110,98,117,57,47,53,0,0,0,0,0,0,0,0,67,111,117,114,105,101,114,45,66,111,108,100,79,98,108,105,113,117,101,0,0,0,0,0,109,117,115,116,32,110,111,116,32,117,110,100,101,99,108,97,114,101,32,112,114,101,102,105,120,0,0,0,0,0,0,0,47,103,110,98,117,57,47,52,0,0,0,0,0,0,0,0,95,116,100,114,97,119,95,0,100,111,116,115,112,108,105,110,101,115,46,99,0,0,0,0,99,111,109,98,105,65,82,32,61,32,37,108,102,10,0,0,101,44,37,46,53,103,44,37,46,53,103,32,0,0,0,0,100,105,103,114,97,112,104,0,100,97,114,107,107,104,97,107,105,0,0,0,0,0,0,0,47,103,110,98,117,57,47,51,0,0,0,0,0,0,0,0,255,216,255,224,0,0,0,0,111,0,0,0,0,0,0,0,47,67,111,117,114,105,101,114,45,66,111,108,100,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,0,47,103,110,98,117,57,47,50,0,0,0,0,0,0,0,0,34,47,62,10,0,0,0,0,47,103,110,98,117,57,47,49,0,0,0,0,0,0,0,0,110,97,109,101,0,0,0,0,112,101,110,99,111,108,111,114,0,0,0,0,0,0,0,0,47,103,110,98,117,56,47,56,0,0,0,0,0,0,0,0,122,119,110,106,0,0,0,0,47,97,99,99,101,110,116,56,47,50,0,0,0,0,0,0,47,103,110,98,117,56,47,55,0,0,0,0,0,0,0,0,122,119,106,0,0,0,0,0,110,111,116,101,0,0,0,0,47,103,110,98,117,56,47,54,0,0,0,0,0,0,0,0,122,101,116,97,0,0,0,0,35,32,80,97,103,101,115,58,32,37,100,10,0,0,0,0,57,0,0,0,0,0,0,0,112,110,103,58,100,111,116,0,47,103,110,98,117,56,47,53,0,0,0,0,0,0,0,0,121,117,109,108,0,0,0,0,69,78,84,69,82,0,0,0,47,103,110,98,117,56,47,52,0,0,0,0,0,0,0,0,32,60,118,58,115,104,97,112,101,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,0,0,0,0,121,101,110,0,0,0,0,0,125,0,0,0,0,0,0,0,47,103,110,98,117,56,47,51,0,0,0,0,0,0,0,0,121,97,99,117,116,101,0,0,67,111,117,114,105,101,114,45,66,111,108,100,0,0,0,0,117,110,98,111,117,110,100,32,112,114,101,102,105,120,0,0,109,105,110,99,114,111,115,115,46,99,0,0,0,0,0,0,47,103,110,98,117,56,47,50,0,0,0,0,0,0,0,0,95,104,100,114,97,119,95,0,120,105,0,0,0,0,0,0,9,37,112,32,37,115,44,37,115,10,0,0,0,0,0,0,115,44,37,46,53,103,44,37,46,53,103,32,0,0,0,0,103,114,97,112,104,0,0,0,100,97,114,107,103,114,101,121,0,0,0,0,0,0,0,0,47,103,110,98,117,56,47,49,0,0,0,0,0,0,0,0,119,101,105,101,114,112,0,0,103,105,102,0,0,0,0,0,111,110,101,0,0,0,0,0,47,67,111,117,114,105,101,114,45,66,111,108,100,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,47,103,110,98,117,55,47,55,0,0,0,0,0,0,0,0,44,37,100,44,37,100,0,0,117,117,109,108,0,0,0,0,47,97,99,99,101,110,116,51,47,49,0,0,0,0,0,0,71,68,95,109,105,110,114,97,110,107,40,103,41,32,61,61,32,48,0,0,0,0,0,0,47,103,110,98,117,55,47,54,0,0,0,0,0,0,0,0,80,45,62,101,110,100,46,116,104,101,116,97,32,60,32,50,32,42,32,77,95,80,73,0,117,112,115,105,108,111,110,0,99,111,108,111,114,0,0,0,47,103,110,98,117,55,47,53,0,0,0,0,0,0,0,0,117,112,115,105,104,0,0,0,47,97,99,99,101,110,116,56,47,49,0,0,0,0,0,0,47,103,110,98,117,55,47,52,0,0,0,0,0,0,0,0,117,109,108,0,0,0,0,0,111,99,116,97,103,111,110,0,116,114,117,101,0,0,0,0,47,103,110,98,117,55,47,51,0,0,0,0,0,0,0,0,117,103,114,97,118,101,0,0,56,0,0,0,0,0,0,0,115,118,103,58,109,97,112,0,35,32,84,105,116,108,101,58,32,37,115,10,0,0,0,0,47,103,110,98,117,55,47,50,0,0,0,0,0,0,0,0,117,99,105,114,99,0,0,0,69,70,84,0,0,0,0,0,99,109,97,112,58,109,97,112,0,0,0,0,0,0,0,0,47,103,110,98,117,55,47,49,0,0,0,0,0,0,0,0,32,45,45,62,10,0,0,0,117,97,114,114,0,0,0,0,97,103,105,110,105,116,40,41,32,99,97,108,108,101,100,32,109,117,108,116,105,112,108,121,32,119,105,116,104,32,105,110,99,111,110,115,105,115,116,101,110,116,32,97,114,103,115,10,0,0,0,0,0,0,0,0,32,45,116,101,120,116,32,123,0,0,0,0,0,0,0,0,47,103,110,98,117,54,47,54,0,0,0,0,0,0,0,0,117,97,99,117,116,101,0,0,109,111,110,111,115,112,97,99,101,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,115,101,116,116,105,110,103,32,111,110,99,101,32,112,97,114,115,105,110,103,32,104,97,115,32,98,101,103,117,110,0,0,0,0,47,103,110,98,117,54,47,53,0,0,0,0,0,0,0,0,95,108,100,114,97,119,95,0,117,65,114,114,0,0,0,0,115,111,117,114,99,101,32,112,111,105,110,116,32,110,111,116,32,105,110,32,97,110,121,32,116,114,105,97,110,103,108,101,0,0,0,0,0,0,0,0,37,46,53,103,32,37,46,53,103,0,0,0,0,0,0,0,115,117,98,103,114,97,112,104,0,0,0,0,0,0,0,0,100,97,114,107,103,114,101,101,110,0,0,0,0,0,0,0,47,103,110,98,117,54,47,52,0,0,0,0,0,0,0,0,116,114,97,100,101,0,0,0,71,73,70,56,0,0,0,0,105,110,101,0,0,0,0,0,47,67,111,117,114,105,101,114,45,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,103,110,98,117,54,47,51,0,0,0,0,0,0,0,0,115,104,97,112,101,102,105,108,101,0,0,0,0,0,0,0,37,100,44,37,100,0,0,0,116,105,109,101,115,0,0,0,47,103,110,98,117,54,47,50,0,0,0,0,0,0,0,0,116,105,108,100,101,0,0,0,35,102,56,102,56,102,56,0,99,97,110,110,111,116,32,114,101,45,97,108,108,111,99,97,116,101,32,112,115,10,0,0,47,103,110,98,117,54,47,49,0,0,0,0,0,0,0,0,108,111,115,116,32,37,115,32,37,115,32,101,100,103,101,10,0,0,0,0,0,0,0,0,116,104,111,114,110,0,0,0,47,97,99,99,101,110,116,55,47,55,0,0,0,0,0,0,47,103,110,98,117,53,47,53,0,0,0,0,0,0,0,0,116,104,105,110,115,112,0,0,115,101,97,114,99,104,115,105,122,101,0,0,0,0,0,0,115,101,112,116,97,103,111,110,0,0,0,0,0,0,0,0,47,103,110,98,117,53,47,52,0,0,0,0,0,0,0,0,116,104,101,116,97,115,121,109,0,0,0,0,0,0,0,0,103,114,97,112,104,32,0,0,55,0,0,0,0,0,0,0,101,112,115,58,109,97,112,0,35,32,71,101,110,101,114,97,116,101,100,32,98,121,32,37,115,32,118,101,114,115,105,111,110,32,37,115,32,40,37,115,41,10,0,0,0,0,0,0,47,103,110,98,117,53,47,51,0,0,0,0,0,0,0,0,116,104,101,116,97,0,0,0,73,71,72,84,0,0,0,0,47,103,110,98,117,53,47,50,0,0,0,0,0,0,0,0,32,32,32,32,32,32,60,33,45,45,32,0,0,0,0,0,116,104,101,114,101,52,0,0,32,99,114,101,97,116,101,32,116,101,120,116,32,0,0,0,47,103,110,98,117,53,47,49,0,0,0,0,0,0,0,0,116,97,117,0,0,0,0,0,67,111,117,114,105,101,114,0,114,101,113,117,101,115,116,101,100,32,102,101,97,116,117,114,101,32,114,101,113,117,105,114,101,115,32,88,77,76,95,68,84,68,32,115,117,112,112,111,114,116,32,105,110,32,69,120,112,97,116,0,0,0,0,0,47,103,110,98,117,52,47,52,0,0,0,0,0,0,0,0,49,46,50,0,0,0,0,0,115,122,108,105,103,0,0,0,37,115,32,119,97,115,32,97,108,114,101,97,100,121,32,105,110,32,97,32,114,97,110,107,115,101,116,44,32,100,101,108,101,116,101,100,32,102,114,111,109,32,99,108,117,115,116,101,114,32,37,115,10,0,0,0,115,97,109,112,108,101,112,111,105,110,116,115,0,0,0,0,110,111,100,101,0,0,0,0,37,108,102,0,0,0,0,0,100,97,114,107,103,114,97,121,0,0,0,0,0,0,0,0,47,103,110,98,117,52,47,51,0,0,0,0,0,0,0,0,98,108,97,99,107,0,0,0,115,117,112,101,0,0,0,0,106,112,101,103,58,115,118,103,0,0,0,0,0,0,0,0,98,109,112,0,0,0,0,0,97,108,115,101,0,0,0,0,47,67,111,117,114,105,101,114,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,47,103,110,98,117,52,47,50,0,0,0,0,0,0,0,0,37,100,44,37,100,44,37,100,44,37,100,0,0,0,0,0,115,117,112,51,0,0,0,0,47,103,110,98,117,52,47,49,0,0,0,0,0,0,0,0,115,117,112,50,0,0,0,0,35,49,48,49,48,49,48,0,47,103,110,98,117,51,47,51,0,0,0,0,0,0,0,0,115,117,112,49,0,0,0,0,47,97,99,99,101,110,116,55,47,54,0,0,0,0,0,0,47,103,110,98,117,51,47,50,0,0,0,0,0,0,0,0,115,117,112,0,0,0,0,0,104,101,120,97,103,111,110,0,47,103,110,98,117,51,47,49,0,0,0,0,0,0,0,0,115,117,109,0,0,0,0,0,54,0,0,0,0,0,0,0,112,115,58,109,97,112,0,0,35,70,73,71,32,51,46,50,10,0,0,0,0,0,0,0,47,100,97,114,107,50,56,47,56,0,0,0,0,0,0,0,115,117,98,101,0,0,0,0,97,108,105,103,110,0,0,0,47,100,97,114,107,50,56,47,55,0,0,0,0,0,0,0,121,101,108,108,111,119,0,0,115,117,98,0,0,0,0,0,32,99,114,101,97,116,101,32,111,118,97,108,32,0,0,0,47,100,97,114,107,50,56,47,54,0,0,0,0,0,0,0,115,112,97,100,101,115,0,0,66,111,111,107,109,97,110,45,76,105,103,104,116,73,116,97,108,105,99,0,0,0,0,0,101,110,116,105,116,121,32,100,101,99,108,97,114,101,100,32,105,110,32,112,97,114,97,109,101,116,101,114,32,101,110,116,105,116,121,0,0,0,0,0,47,100,97,114,107,50,56,47,53,0,0,0,0,0,0,0,120,100,111,116,118,101,114,115,105,111,110,0,0,0,0,0,115,105,109,0,0,0,0,0,60,47,72,84,77,76,62,0,114,101,99,111,114,100,0,0,101,100,103,101,0,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,0,0,0,47,100,97,114,107,50,56,47,52,0,0,0,0,0,0,0,115,105,103,109,97,102,0,0,66,77,0,0,0,0,0,0,111,109,112,111,117,110,100,0,47,72,101,108,118,101,116,105,99,97,45,66,111,108,100,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,47,100,97,114,107,50,56,47,51,0,0,0,0,0,0,0,37,100,44,37,100,44,37,100,0,0,0,0,0,0,0,0,115,105,103,109,97,0,0,0,47,100,97,114,107,50,56,47,50,0,0,0,0,0,0,0,115,104,121,0,0,0,0,0,35,102,48,102,48,102,48,0,32,99,111,111,114,100,115,61,34,0,0,0,0,0,0,0,108,97,98,101,108,0,0,0,115,104,97,112,101,102,105,108,101,0,0,0,0,0,0,0,47,37,115,47,37,115,0,0,88,49,49,47,0,0,0,0,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,0,104,105,116,101,0,0,0,0,108,97,99,107,0,0,0,0,110,32,33,61,32,78,68,95,110,101,120,116,40,110,41,0,121,101,108,108,111,119,103,114,101,101,110,0,0,0,0,0,47,100,97,114,107,50,56,47,49,0,0,0,0,0,0,0,121,101,108,108,111,119,52,0,121,101,108,108,111,119,51,0,115,101,99,116,0,0,0,0,121,101,108,108,111,119,50,0,121,101,108,108,111,119,49,0,121,101,108,108,111,119,0,0,119,104,105,116,101,115,109,111,107,101,0,0,0,0,0,0,119,104,105,116,101,0,0,0,119,104,101,97,116,52,0,0,47,97,99,99,101,110,116,55,47,53,0,0,0,0,0,0,119,104,101,97,116,51,0,0,119,104,101,97,116,50,0,0,47,100,97,114,107,50,55,47,55,0,0,0,0,0,0,0,119,104,101,97,116,49,0,0,119,104,101,97,116,0,0,0,115,100,111,116,0,0,0,0,118,105,111,108,101,116,114,101,100,52,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,51,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,50,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,49,0,0,0,0,0,0,118,105,111,108,101,116,114,101,100,0,0,0,0,0,0,0,38,103,116,59,0,0,0,0,118,105,111,108,101,116,0,0,112,101,110,116,97,103,111,110,0,0,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,52,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,51,0,0,0,0,0,0,47,100,97,114,107,50,55,47,54,0,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,50,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,49,0,0,0,0,0,0,115,99,97,114,111,110,0,0,116,117,114,113,117,111,105,115,101,0,0,0,0,0,0,0,116,114,97,110,115,112,97,114,101,110,116,0,0,0,0,0,115,98,113,117,111,0,0,0,116,111,109,97,116,111,52,0,116,111,109,97,116,111,51,0,116,111,109,97,116,111,50,0,53,0,0,0,0,0,0,0,106,112,103,58,109,97,112,0,116,111,109,97,116,111,49,0,116,111,109,97,116,111,0,0,116,104,105,115,116,108,101,52,0,0,0,0,0,0,0,0,35,32,101,110,100,32,111,102,32,70,73,71,32,102,105,108,101,10,0,0,0,0,0,0,47,100,97,114,107,50,55,47,53,0,0,0,0,0,0,0,116,104,105,115,116,108,101,51,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,50,0,0,0,0,0,0,0,0,35,101,48,101,48,101,48,0,116,104,105,115,116,108,101,49,0,0,0,0,0,0,0,0,116,104,105,115,116,108,101,0,116,97,110,52,0,0,0,0,116,97,110,51,0,0,0,0,60,66,82,62,0,0,0,0,116,97,110,50,0,0,0,0,116,97,110,49,0,0,0,0,116,97,110,0,0,0,0,0,115,116,101,101,108,98,108,117,101,52,0,0,0,0,0,0,47,100,97,114,107,50,55,47,52,0,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,51,0,0,0,0,0,0,119,104,105,116,101,0,0,0,115,116,101,101,108,98,108,117,101,50,0,0,0,0,0,0,114,115,113,117,111,0,0,0,115,116,101,101,108,98,108,117,101,49,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,0,0,0,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,52,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,51,0,0,0,0])
.concat([32,45,111,117,116,108,105,110,101,32,0,0,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,50,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,49,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,115,110,111,119,52,0,0,0,47,100,97,114,107,50,55,47,51,0,0,0,0,0,0,0,115,110,111,119,51,0,0,0,115,110,111,119,50,0,0,0,114,115,97,113,117,111,0,0,115,110,111,119,49,0,0,0,115,110,111,119,0,0,0,0,115,108,97,116,101,103,114,101,121,0,0,0,0,0,0,0,108,105,103,104,116,0,0,0,115,108,97,116,101,103,114,97,121,52,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,51,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,50,0,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,112,97,114,115,101,114,32,115,116,97,116,101,32,45,32,112,108,101,97,115,101,32,115,101,110,100,32,97,32,98,117,103,32,114,101,112,111,114,116,0,0,0,0,0,0,35,32,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,49,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,0,0,0,0,0,0,0,47,100,97,114,107,50,55,47,50,0,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,52,0,0,0,0,0,0,95,100,114,97,119,95,0,0,115,108,97,116,101,98,108,117,101,51,0,0,0,0,0,0,114,108,109,0,0,0,0,0,115,108,97,116,101,98,108,117,101,50,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,49,0,0,0,0,0,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,111,112,115,0,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,0,0,0,0,0,0,0,37,46,53,103,0,0,0,0,115,107,121,98,108,117,101,52,0,0,0,0,0,0,0,0,116,97,105,108,112,111,114,116,0,0,0,0,0,0,0,0,108,97,98,101,108,0,0,0,115,107,121,98,108,117,101,51,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,50,0,0,0,0,0,0,0,0,100,97,114,107,99,121,97,110,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,49,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,0,47,100,97,114,107,50,55,47,49,0,0,0,0,0,0,0,115,105,101,110,110,97,52,0,115,105,101,110,110,97,51,0,114,104,111,0,0,0,0,0,115,105,101,110,110,97,50,0,115,105,101,110,110,97,49,0,115,105,101,110,110,97,0,0,115,101,97,115,104,101,108,108,52,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,51,0,0,0,0,0,0,0,112,115,0,0,0,0,0,0,115,101,97,115,104,101,108,108,50,0,0,0,0,0,0,0,85,84,70,56,32,99,111,100,101,115,32,62,32,51,32,98,121,116,101,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,46,32,79,114,32,112,101,114,104,97,112,115,32,34,45,71,99,104,97,114,115,101,116,61,108,97,116,105,110,49,34,32,105,115,32,110,101,101,100,101,100,63,10,0,0,0,0,0,47,72,101,108,118,101,116,105,99,97,45,66,111,108,100,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,115,101,97,115,104,101,108,108,49,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,0,0,0,0,0,0,0,0,47,100,97,114,107,50,54,47,54,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,52,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,51,0,0,0,0,0,0,0,114,102,108,111,111,114,0,0,115,101,97,103,114,101,101,110,50,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,49,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,0,0,0,0,0,0,0,0,115,97,110,100,121,98,114,111,119,110,0,0,0,0,0,0,115,97,108,109,111,110,52,0,115,97,108,109,111,110,51,0,115,97,108,109,111,110,50,0,115,97,108,109,111,110,49,0,47,100,97,114,107,50,54,47,53,0,0,0,0,0,0,0,115,97,108,109,111,110,0,0,115,97,100,100,108,101,98,114,111,119,110,0,0,0,0,0,114,101,103,0,0,0,0,0,116,101,101,0,0,0,0,0,114,111,121,97,108,98,108,117,101,52,0,0,0,0,0,0,32,97,108,116,61,34,34,0,114,111,121,97,108,98,108,117,101,51,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,50,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,49,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,0,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,52,0,0,0,0,0,0,98,108,97,99,107,0,0,0,114,111,115,121,98,114,111,119,110,51,0,0,0,0,0,0,75,80,95,76,101,102,116,0,114,111,115,121,98,114,111,119,110,50,0,0,0,0,0,0,47,100,97,114,107,50,54,47,52,0,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,49,0,0,0,0,0,0,114,111,115,121,98,114,111,119,110,0,0,0,0,0,0,0,114,101,97,108,0,0,0,0,114,101,100,52,0,0,0,0,114,101,100,51,0,0,0,0,114,101,100,50,0,0,0,0,114,101,100,49,0,0,0,0,114,101,100,0,0,0,0,0,112,117,114,112,108,101,52,0,112,117,114,112,108,101,51,0,47,97,99,99,101,110,116,55,47,52,0,0,0,0,0,0,112,117,114,112,108,101,50,0,47,100,97,114,107,50,54,47,51,0,0,0,0,0,0,0,112,117,114,112,108,101,49,0,112,117,114,112,108,101,0,0,114,100,113,117,111,0,0,0,112,111,119,100,101,114,98,108,117,101,0,0,0,0,0,0,112,108,117,109,52,0,0,0,112,108,117,109,51,0,0,0,112,108,117,109,50,0,0,0,112,108,117,109,49,0,0,0,112,108,117,109,0,0,0,0,104,111,117,115,101,0,0,0,112,105,110,107,52,0,0,0,112,105,110,107,51,0,0,0,47,100,97,114,107,50,54,47,50,0,0,0,0,0,0,0,112,105,110,107,50,0,0,0,112,105,110,107,49,0,0,0,114,99,101,105,108,0,0,0,112,105,110,107,0,0,0,0,112,101,114,117,0,0,0,0,112,101,97,99,104,112,117,102,102,52,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,51,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,50,0,0,0,0,0,0,52,0,0,0,0,0,0,0,106,112,101,58,109,97,112,0,112,101,97,99,104,112,117,102,102,49,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,0,0,0,0,0,0,0,112,97,112,97,121,97,119,104,105,112,0,0,0,0,0,0,47,100,97,114,107,50,54,47,49,0,0,0,0,0,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,52,0,0,37,48,51,111,0,0,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,51,0,0,114,97,114,114,0,0,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,50,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,49,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,52,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,51,0,0,73,108,108,101,103,97,108,32,97,116,116,114,105,98,117,116,101,32,37,115,32,105,110,32,37,115,32,45,32,105,103,110,111,114,101,100,10,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,50,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,49,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,0,0,0,47,100,97,114,107,50,53,47,53,0,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,52,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,51,0,0,0,0,0,0,114,97,113,117,111,0,0,0,116,101,97,108,0,0,0,0,112,97,108,101,103,114,101,101,110,50,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,49,0,0,0,0,0,0,112,97,108,101,103,114,101,101,110,0,0,0,0,0,0,0,112,97,108,101,103,111,108,100,101,110,114,111,100,0,0,0,119,104,105,116,101,0,0,0,111,114,99,104,105,100,52,0,111,114,99,104,105,100,51,0,99,111,117,114,0,0,0,0,111,114,99,104,105,100,50,0,111,114,99,104,105,100,49,0,47,100,97,114,107,50,53,47,52,0,0,0,0,0,0,0,111,114,99,104,105,100,0,0,111,114,97,110,103,101,114,101,100,52,0,0,0,0,0,0,114,97,110,103,0,0,0,0,111,114,97,110,103,101,114,101,100,51,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,50,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,49,0,0,0,0,0,0,66,111,111,107,109,97,110,45,76,105,103,104,116,0,0,0,111,114,97,110,103,101,114,101,100,0,0,0,0,0,0,0,111,114,97,110,103,101,52,0,111,114,97,110,103,101,51,0,100,111,99,117,109,101,110,116,32,105,115,32,110,111,116,32,115,116,97,110,100,97,108,111,110,101,0,0,0,0,0,0,111,114,97,110,103,101,50,0,110,111,110,116,101,114,109,105,110,97,116,101,100,32,99,111,109,109,101,110,116,32,105,110,32,108,105,110,101,32,37,100,10,0,0,0,0,0,0,0,111,114,97,110,103,101,49,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,47,100,97,114,107,50,53,47,51,0,0,0,0,0,0,0,111,114,97,110,103,101,0,0,84,32,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,52,0,0,0,0,0,0,114,97,100,105,99,0,0,0,100,111,116,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,116,104,101,32,97,115,112,101,99,116,32,97,116,116,114,105,98,117,116,101,32,102,111,114,32,100,105,115,99,111,110,110,101,99,116,101,100,32,103,114,97,112,104,115,32,111,114,32,103,114,97,112,104,115,32,119,105,116,104,32,99,108,117,115,116,101,114,115,10,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,51,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,50,0,0,0,0,0,0,93,59,10,0,0,0,0,0,111,108,105,118,101,100,114,97,98,49,0,0,0,0,0,0,44,37,46,53,103,0,0,0,111,108,105,118,101,100,114,97,98,0,0,0,0,0,0,0,104,101,97,100,112,111,114,116,0,0,0,0,0,0,0,0,111,108,100,108,97,99,101,0,110,111,110,101,0,0,0,0,100,97,114,107,98,108,117,101,0,0,0,0,0,0,0,0,110,97,118,121,98,108,117,101,0,0,0,0,0,0,0,0,110,97,118,121,0,0,0,0,47,100,97,114,107,50,53,47,50,0,0,0,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,52,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,51,0,0,0,0,114,65,114,114,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,50,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,49,0,0,0,0,110,97,118,97,106,111,119,104,105,116,101,0,0,0,0,0,109,111,99,99,97,115,105,110,0,0,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,52,0,0,0,0,0,0,37,33,80,83,45,65,100,111,98,101,45,0,0,0,0,0,109,105,115,116,121,114,111,115,101,51,0,0,0,0,0,0,73,110,118,97,108,105,100,32,51,45,98,121,116,101,32,85,84,70,56,32,102,111,117,110,100,32,105,110,32,105,110,112,117,116,46,32,80,101,114,104,97,112,115,32,34,45,71,99,104,97,114,115,101,116,61,108,97,116,105,110,49,34,32,105,115,32,110,101,101,100,101,100,63,10,0,0,0,0,0,0,47,72,101,108,118,101,116,105,99,97,45,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,50,0,0,0,0,0,0,120,120,120,0,0,0,0,0,109,105,115,116,121,114,111,115,101,49,0,0,0,0,0,0,47,100,97,114,107,50,53,47,49,0,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,0,0,0,0,0,0,0,109,105,110,116,99,114,101,97,109,0,0,0,0,0,0,0,113,117,111,116,0,0,0,0,109,105,100,110,105,103,104,116,98,108,117,101,0,0,0,0,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,0,0,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,0,105,110,32,108,97,98,101,108,32,111,102,32,101,100,103,101,32,37,115,32,37,115,32,37,115,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,52,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,51,0,0,0,47,100,97,114,107,50,52,47,52,0,0,0,0,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,50,0,0,0,109,101,100,105,117,109,112,117,114,112,108,101,49,0,0,0,112,115,105,0,0,0,0,0,35,101,56,101,56,101,56,0,109,101,100,105,117,109,112,117,114,112,108,101,0,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,52,0,0,0,32,116,105,116,108,101,61,34,0,0,0,0,0,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,51,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,50,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,49,0,0,0,109,101,100,105,117,109,111,114,99,104,105,100,0,0,0,0,69,68,95,116,111,95,118,105,114,116,40,111,114,105,103,41,32,61,61,32,78,85,76,76,0,0,0,0,0,0,0,0,109,101,100,105,117,109,98,108,117,101,0,0,0,0,0,0,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,0,0,47,100,97,114,107,50,52,47,51,0,0,0,0,0,0,0,109,97,114,111,111,110,52,0,109,97,114,111,111,110,51,0,112,114,111,112,0,0,0,0,109,97,114,111,111,110,50,0,109,97,114,111,111,110,49,0,109,97,114,111,111,110,0,0,109,97,103,101,110,116,97,52,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,51,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,50,0,0,0,0,0,0,0,0,109,97,103,101,110,116,97,49,0,0,0,0,0,0,0,0,47,97,99,99,101,110,116,55,47,51,0,0,0,0,0,0,109,97,103,101,110,116,97,0,47,100,97,114,107,50,52,47,50,0,0,0,0,0,0,0,108,105,110,101,110,0,0,0,108,105,109,101,103,114,101,101,110,0,0,0,0,0,0,0,112,114,111,100,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,52,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,51,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,50,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,49,0,0,0,0,80,114,111,116,111,71,114,97,112,104,0,0,0,0,0,0,108,105,103,104,116,121,101,108,108,111,119,0,0,0,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,52,0,41,10,0,0,0,0,0,0,112,97,114,97,108,108,101,108,111,103,114,97,109,0,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,51,0,108,105,98,112,97,116,104,47,37,115,58,37,100,58,32,37,115,10,0,0,0,0,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,50,0,47,100,97,114,107,50,52,47,49,0,0,0,0,0,0,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,49,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,0,112,114,105,109,101,0,0,0,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,0,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,0,108,105,103,104,116,115,108,97,116,101,98,108,117,101,0,0,110,111,100,101,32,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,52,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,51,0,0,0,51,0,0,0,0,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,50,0,0,0,106,112,101,103,58,109,97,112,0,0,0,0,0,0,0,0,32,40,0,0,0,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,49,0,0,0,108,105,103,104,116,115,107,121,98,108,117,101,0,0,0,0,47,100,97,114,107,50,51,47,51,0,0,0,0,0,0,0,108,105,103,104,116,115,101,97,103,114,101,101,110,0,0,0,108,105,103,104,116,115,97,108,109,111,110,52,0,0,0,0,112,111,117,110,100,0,0,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,46,52,102,32,37,100,32,37,46,49,102,32,37,46,49,102,32,37,100,32,37,100,32,37,115,92,48,48,49,10,0,0,108,105,103,104,116,115,97,108,109,111,110,51,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,50,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,49,0,0,0,0,108,105,103,104,116,115,97,108,109,111,110,0,0,0,0,0,108,105,103,104,116,112,105,110,107,52,0,0,0,0,0,0,115,114,99,0,0,0,0,0,108,105,103,104,116,112,105,110,107,51,0,0,0,0,0,0,32,118,101,114,115,105,111,110,32,0,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,50,0,0,0,0,0,0,97,115,112,101,99,116,0,0,0,0,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,49,0,0,0,0,0,0,47,100,97,114,107,50,51,47,50,0,0,0,0,0,0,0,108,105,103,104,116,112,105,110,107,0,0,0,0,0,0,0,76,97,121,111,117,116,32,116,121,112,101,58,32,34,37,115,34,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,46,32,85,115,101,32,111,110,101,32,111,102,58,37,115,10,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,108,105,103,104,116,103,114,101,121,0,0,0,0,0,0,0,112,108,117,115,109,110,0,0,115,105,108,118,101,114,0,0,108,105,103,104,116,103,114,97,121,0,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,52,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,51,0,32,99,114,101,97,116,101,32,112,111,108,121,103,111,110,32,0,0,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,50,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,49,0,60,33,45,45,32,71,101,110,101,114,97,116,101,100,32,98,121,32,0,0,0,0,0,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,0,0,108,105,103,104,116,99,121,97,110,52,0,0,0,0,0,0,47,100,97,114,107,50,51,47,49,0,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,51,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,50,0,0,0,0,0,0,112,105,118,0,0,0,0,0,108,105,103,104,116,99,121,97,110,49,0,0,0,0,0,0,108,105,103,104,116,99,121,97,110,0,0,0,0,0,0,0,108,105,103,104,116,99,111,114,97,108,0,0,0,0,0,0,66,111,111,107,109,97,110,45,68,101,109,105,73,116,97,108,105,99,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,52,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,51,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,50,0,0,0,0,0,0,101,114,114,111,114,32,105,110,32,112,114,111,99,101,115,115,105,110,103,32,101,120,116,101,114,110,97,108,32,101,110,116,105,116,121,32,114,101,102,101,114,101,110,99,101,0,0,0,32,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,71,114,97,112,104,105,99,115,47,83,86,71,47,49,46,49,47,68,84,68,47,115,118,103,49,49,46,100,116,100,34,62,10,0,0,0,108,105,103,104,116,98,108,117,101,49,0,0,0,0,0,0,108,105,103,104,116,98,108,117,101,0,0,0,0,0,0,0,47,98,117,112,117,57,47,57,0,0,0,0,0,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,52,0,0,0,70,32,37,102,32,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,51,0,0,0,112,105,0,0,0,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,50,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,49,0,0,0,108,101,109,111,110,99,104,105,102,102,111,110,0,0,0,0,37,46,53,103,44,37,46,53,103,44,37,46,53,103,0,0,108,97,119,110,103,114,101,101,110,0,0,0,0,0,0,0,107,101,121,0,0,0,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,52,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,51,0,0,99,121,97,110,0,0,0,0,60,33,68,79,67,84,89,80,69,32,115,118,103,32,80,85,66,76,73,67,32,34,45,47,47,87,51,67,47,47,68,84,68,32,83,86,71,32,49,46,49,47,47,69,78,34,10,0,108,97,118,101,110,100,101,114,98,108,117,115,104,50,0,0,78,68,95,105,110,40,114,105,103,104,116,41,46,115,105,122,101,32,43,32,78,68,95,111,117,116,40,114,105,103,104,116,41,46,115,105,122,101,32,61,61,32,48,0,0,0,0,0,112,104,105,0,0,0,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,49,0,0,47,98,117,112,117,57,47,56,0,0,0,0,0,0,0,0,108,97,118,101,110,100,101,114,98,108,117,115,104,0,0,0,108,97,118,101,110,100,101,114,0,0,0,0,0,0,0,0,32,32,34,37,115,34,10,0,107,104,97,107,105,52,0,0,107,104,97,107,105,51,0,0,97,108,105,99,101,98,108,117,101,0,0,0,0,0,0,0,107,104,97,107,105,50,0,0,107,104,97,107,105,49,0,0,107,104,97,107,105,0,0,0,112,110,103,0,0,0,0,0,105,118,111,114,121,52,0,0,73,110,118,97,108,105,100,32,50,45,98,121,116,101,32,85,84,70,56,32,102,111,117,110,100,32,105,110,32,105,110,112,117,116,46,32,80,101,114,104,97,112,115,32,34,45,71,99,104,97,114,115,101,116,61,108,97,116,105,110,49,34,32,105,115,32,110,101,101,100,101,100,63,10,0,0,0,0,0,0,47,72,101,108,118,101,116,105,99,97,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,0,0,0,34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,63,62,10,0,0,0,0,105,118,111,114,121,51,0,0,78,111,32,108,105,98,122,32,115,117,112,112,111,114,116,46,10,0,0,0,0,0,0,0,105,118,111,114,121,50,0,0,47,98,117,112,117,57,47,55,0,0,0,0,0,0,0,0,105,118,111,114,121,49,0,0,105,118,111,114,121,0,0,0,112,101,114,112,0,0,0,0,105,110,118,105,115,0,0,0,105,110,100,105,103,111,0,0,105,110,100,105,97,110,114,101,100,52,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,51,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,50,0,0,0,0,0,0,105,110,100,105,97,110,114,101,100,49,0,0,0,0,0,0,60,63,120,109,108,45,115,116,121,108,101,115,104,101,101,116,32,104,114,101,102,61,34,0,105,110,100,105,97,110,114,101,100,0,0,0,0,0,0,0,104,111,116,112,105,110,107,52,0,0,0,0,0,0,0,0,47,98,117,112,117,57,47,54,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,51,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,50,0,0,0,0,0,0,0,0,112,101,114,109,105,108,0,0,35,51,48,51,48,51,48,0,104,111,116,112,105,110,107,49,0,0,0,0,0,0,0,0,104,111,116,112,105,110,107,0,104,111,110,101,121,100,101,119,52,0,0,0,0,0,0,0,32,116,97,114,103,101,116,61,34,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,51,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,50,0,0,0,0,0,0,0,104,111,110,101,121,100,101,119,49,0,0,0,0,0,0,0,115,116,121,108,101,115,104,101,101,116,0,0,0,0,0,0,104,111,110,101,121,100,101,119,0,0,0,0,0,0,0,0,103,114,101,121,57,57,0,0,47,98,117,112,117,57,47,53,0,0,0,0,0,0,0,0,103,114,101,121,57,56,0,0,103,114,101,121,57,55,0,0,112,97,114,116,0,0,0,0,103,114,101,121,57,54,0,0,103,114,101,121,57,53,0,0,103,114,101,121,57,52,0,0,103,114,101,121,57,51,0,0,103,114,101,121,57,50,0,0,103,114,101,121,57,49,0,0,60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,110,99,111,100,105,110,103,61,34,85,84,70,45,56,34,32,115,116,97,110,100,97,108,111,110,101,61,34,110,111,34,63,62,10,0,103,114,101,121,57,48,0,0,47,97,99,99,101,110,116,55,47,50,0,0,0,0,0,0,103,114,101,121,57,0,0,0,47,98,117,112,117,57,47,52,0,0,0,0,0,0,0,0,103,114,101,121,56,57,0,0,103,114,101,121,56,56,0,0,112,97,114,97,0,0,0,0,103,114,101,121,56,55,0,0,103,114,101,121,56,54,0,0,103,114,101,121,56,53,0,0,103,114,101,121,56,52,0,0,103,114,101,121,56,51,0,0,103,114,101,121,56,50,0,0,32,120,109,108,110,115,58,120,108,105,110,107,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57,57,47,120,108,105,110,107,34,0,0,0,0,0,116,114,97,112,101,122,105,117,109,0,0,0,0,0,0,0,103,114,101,121,56,49,0,0,103,114,101,121,56,48,0,0,47,98,117,112,117,57,47,51,0,0,0,0,0,0,0,0,103,114,101,121,56,0,0,0,103,114,101,121,55,57,0,0,111,117,109,108,0,0,0,0,103,114,101,121,55,56,0,0,103,114,101,121,55,55,0,0,103,114,101,121,55,54,0,0,103,114,101,121,55,53,0,0,103,114,101,121,55,52,0,0,50,0,0,0,0,0,0,0,103,114,101,121,55,51,0,0,103,105,102,58,109,97,112,0,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,50,48,48,48,47,115,118,103,34,0,0,0,0,0,103,114,101,121,55,50,0,0,50,48,49,49,48,53,48,55,46,48,51,50,55,0,0,0,103,114,101,121,55,49,0,0,47,98,117,112,117,57,47,50,0,0,0,0,0,0,0,0,103,114,101,121,55,48,0,0,103,114,101,121,55,0,0,0,111,116,105,109,101,115,0,0,103,114,101,121,54,57,0,0,48,0,0,0,0,0,0,0,103,114,101,121,54,56,0,0,103,114,101,121,54,55,0,0,103,114,101,121,54,54,0,0,103,114,101,121,54,53,0,0,115,99,97,108,101,0,0,0,116,111,111,32,109,97,110,121,32,115,97,109,101,123,104,101,97,100,44,116,97,105,108,125,32,103,114,111,117,112,115,32,102,111,114,32,110,111,100,101,32,37,115,10,0,0,0,0,103,114,101,121,54,52,0,0,32,118,105,101,119,66,111,120,61,34,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,34,0,0,103,114,101,121,54,51,0,0,37,115,32,45,62,32,37,115,58,32,115,112,108,105,110,101,32,115,105,122,101,32,62,32,49,32,110,111,116,32,115,117,112,112,111,114,116,101,100,10,0,0,0,0,0,0,0,0,103,114,97,112,104,0,0,0,103,114,101,121,54,50,0,0,47,98,117,112,117,57,47,49,0,0,0,0,0,0,0,0,103,114,101,121,54,49,0,0,103,114,101,121,54,48,0,0,111,116,105,108,100,101,0,0,114,101,100,0,0,0,0,0,103,114,101,121,54,0,0,0,103,114,101,121,53,57,0,0,103,114,101,121,53,56,0,0,103,114,101,121,53,55,0,0,32,45,115,109,111,111,116,104,32,98,101,122,105,101,114,32,0,0,0,0,0,0,0,0,103,114,101,121,53,54,0,0,103,114,101,121,53,53,0,0,60,115,118,103,32,119,105,100,116,104,61,34,37,100,112,116,34,32,104,101,105,103,104,116,61,34,37,100,112,116,34,10,0,0,0,0,0,0,0,0,103,114,101,121,53,52,0,0,103,114,101,121,53,51,0,0,47,98,117,112,117,56,47,56,0,0,0,0,0,0,0,0,103,114,101,121,53,50,0,0,103,114,101,121,53,49,0,0,111,115,108,97,115,104,0,0,103,114,101,121,53,48,0,0,103,114,101,121,53,0,0,0,103,114,101,121,52,57,0,0,115,101,114,105,102,0,0,0,103,114,101,121,52,56,0,0,103,114,101,121,52,55,0,0,103,114,101,121,52,54,0,0,117,110,99,108,111,115,101,100,32,67,68,65,84,65,32,115,101,99,116,105,111,110,0,0,114,97,110,107,46,99,0,0,32,80,97,103,101,115,58,32,37,100,32,45,45,62,10,0,103,114,101,121,52,53,0,0,103,114,101,121,52,52,0,0,47,98,117,112,117,56,47,55,0,0,0,0,0,0,0,0,103,114,101,121,52,51,0,0,101,32,0,0,0,0,0,0,103,114,101,121,52,50,0,0,111,114,100,109,0,0,0,0,103,114,101,121,52,49,0,0,103,114,101,121,52,48,0,0,103,114,101,121,52,0,0,0,98,98,0,0,0,0,0,0,103,114,101,121,51,57,0,0,104,114,101,102,0,0,0,0,103,114,101,121,51,56,0,0,103,114,101,121,51,55,0,0,99,114,105,109,115,111,110,0,32,84,105,116,108,101,58,32,0,0,0,0,0,0,0,0,117,115,45,62,110,97,109,101,0,0,0,0,0,0,0,0,103,114,101,121,51,54,0,0,103,114,101,121,51,53,0,0,47,98,117,112,117,56,47,54,0,0,0,0,0,0,0,0,103,114,101,121,51,52,0,0,103,114,101,121,51,51,0,0,111,114,100,102,0,0,0,0,103,114,101,121,51,50,0,0,103,114,101,121,51,49,0,0,65,82,61,37,48,46,52,108,102,9,32,65,114,101,97,61,32,37,48,46,52,108,102,9,0,0,0,0,0,0,0,0,103,114,101,121,51,48,0,0,103,114,101,121,51,0,0,0,103,114,101,121,50,57,0,0,117,32,61,61,32,85,70,95,102,105,110,100,40,117,41,0,68,111,116,68,105,99,116,32,98,101,103,105,110,0,0,0,60,33,45,45,0,0,0,0,137,80,78,71,13,10,26,10,0,0,0,0,0,0,0,0,103,114,101,121,50,56,0,0,37,100,0,0,0,0,0,0,47,84,105,109,101,115,45,66,111,108,100,73,116,97,108,105,99,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,0,0,0,0,115,118,103,0,0,0,0,0,103,114,101,121,50,55,0,0,103,114,101,121,50,54,0,0,47,98,117,112,117,56,47,53,0,0,0,0,0,0,0,0,103,114,101,121,50,53,0,0,103,114,101,121,50,52,0,0,111,114,0,0,0,0,0,0,103,114,101,121,50,51,0,0,103,114,101,121,50,50,0,0,103,114,101,121,50,49,0,0,103,114,101,121,50,48,0,0,103,114,101,121,50,0,0,0,60,47,115,118,103,62,10,0,103,114,101,121,49,57,0,0,37,37,37,37,67,114,101,97,116,111,114,58,32,37,115,32,118,101,114,115,105,111,110,32,37,115,32,40,37,115,41,10,0,0,0,0,0,0,0,0,103,114,101,121,49,56,0,0,103,114,101,121,49,55,0,0,47,98,117,112,117,56,47,52,0,0,0,0,0,0,0,0,103,114,101,121,49,54,0,0,115,111,108,105,100,0,0,0,103,114,101,121,49,53,0,0,111,112,108,117,115,0,0,0,35,102,99,102,99,102,99,0,103,114,101,121,49,52,0,0,103,114,101,121,49,51,0,0,103,114,101,121,49,50,0,0,103,114,101,121,49,49,0,0,32,104,114,101,102,61,34,0,103,114,101,121,49,48,48,0,34,32,99,108,97,115,115,61,34,108,97,121,101,114,34,62,10,0,0,0,0,0,0,0,103,114,101,121,49,48,0,0,32,69,80,83,70,45,51,46,48,10,0,0,0,0,0,0,103,114,101,121,49,0,0,0,103,114,101,121,48,0,0,0,47,98,117,112,117,56,47,51,0,0,0,0,0,0,0,0,103,114,101,121,0,0,0,0,103,114,101,101,110,121,101,108,108,111,119,0,0,0,0,0,111,109,105,99,114,111,110,0,103,114,101,101,110,52,0,0,103,114,101,101,110,51,0,0,103,114,101,101,110,50,0,0,103,114,101,101,110,49,0,0,103,114,101,101,110,0,0,0,32,116,114,97,110,115,102,111,114,109,61,34,115,99,97,108,101,40,37,103,32,37,103,41,32,114,111,116,97,116,101,40,37,100,41,32,116,114,97,110,115,108,97,116,101,40,37,103,32,37,103,41,34,62,10,0,103,114,97,121,57,57,0,0,37,33,80,83,45,65,100,111,98,101,45,51,46,48,0,0,103,114,97,121,57,56,0,0,47,97,99,99,101,110,116,55,47,49,0,0,0,0,0,0,103,114,97,121,57,55,0,0,47,98,117,112,117,56,47,50,0,0,0,0,0,0,0,0,103,114,97,121,57,54,0,0,103,114,97,121,57,53,0,0,111,109,101,103,97,0,0,0,103,114,97,121,57,52,0,0,103,114,97,121,57,51,0,0,103,114,97,121,57,50,0,0,103,114,97,121,57,49,0,0,103,114,97,121,57,48,0,0,34,32,99,108,97,115,115,61,34,103,114,97,112,104,34,0,103,114,97,121,57,0,0,0,37,37,69,79,70,10,0,0,103,114,97,121,56,57,0,0,100,105,97,109,111,110,100,0,103,114,97,121,56,56,0,0,47,98,117,112,117,56,47,49,0,0,0,0,0,0,0,0,103,114,97,121,56,55,0,0,103,114,97,121,56,54,0,0,111,108,105,110,101,0,0,0,103,114,97,121,56,53,0,0,103,114,97,121,56,52,0,0,103,114,97,121,56,51,0,0,103,114,97,121,56,50,0,0,103,114,97,121,56,49,0,0,34,32,99,108,97,115,115,61,34,99,108,117,115,116,101,114,34,62,0,0,0,0,0,0,103,114,97,121,56,48,0,0,49,0,0,0,0,0,0,0,112,110,103,58,109,97,112,0,101,110,100,10,114,101,115,116,111,114,101,10,0,0,0,0,103,114,97,121,56,0,0,0,103,114,97,121,55,57,0,0,47,98,117,112,117,55,47,55,0,0,0,0,0,0,0,0,103,114,97,121,55,56,0,0,103,114,97,121,55,55,0,0,111,103,114,97,118,101,0,0,103,114,97,121,55,54,0,0,103,114,97,121,55,53,0,0,37,100,32,37,100,32,35,37,48,50,120,37,48,50,120,37,48,50,120,10,0,0,0,0,103,114,97,121,55,52,0,0,103,114,97,121,55,51,0,0,103,114,97,121,55,50,0,0,60,73,77,71,62,0,0,0,34,32,99,108,97,115,115,61,34,110,111,100,101,34,62,0,103,114,97,121,55,49,0,0,37,37,37,37,80,97,103,101,115,58,32,37,100,10,0,0,103,114,97,121,55,48,0,0,103,114,97,121,55,0,0,0,47,98,117,112,117,55,47,54,0,0,0,0,0,0,0,0,103,114,97,121,54,57,0,0,103,114,97,121,54,56,0,0,111,101,108,105,103,0,0,0,112,117,114,112,108,101,0,0,103,114,97,121,54,55,0,0,103,114,97,121,54,54,0,0,103,114,97,121,54,53,0,0,103,114,97,121,54,52,0,0,32,45,119,105,100,116,104,32,0,0,0,0,0,0,0,0,103,114,97,121,54,51,0,0,60,47,116,105,116,108,101,62,10,0,0,0,0,0,0,0,103,114,97,121,54,50,0,0,37,37,84,114,97,105,108,101,114,10,0,0,0,0,0,0,103,114,97,121,54,49,0,0,103,114,97,121,54,48,0,0,47,98,117,112,117,55,47,53,0,0,0,0,0,0,0,0,103,114,97,121,54,0,0,0,103,114,97,121,53,57,0,0,35,56,48,56,48,56,48,0,111,99,105,114,99,0,0,0,103,114,97,121,53,56,0,0,103,114,97,121,53,55,0,0,103,114,97,121,53,54,0,0,85,82,87,32,66,111,111,107,109,97,110,32,76,0,0,0,103,114,97,121,53,53,0,0,103,114,97,121,53,52,0,0,92,69,0,0,0,0,0,0,103,114,97,121,53,51,0,0,101,110,99,111,100,105,110,103,32,115,112,101,99,105,102,105,101,100,32,105,110,32,88,77,76,32,100,101,99,108,97,114,97,116,105,111,110,32,105,115,32,105,110,99,111,114,114,101,99,116,0,0,0,0,0,0,91,32,123,67,97,116,97,108,111,103,125,32,60,60,32,47,85,82,73,32,60,60,32,47,66,97,115,101,32,40,37,115,41,32,62,62,32,62,62,10,47,80,85,84,32,112,100,102,109,97,114,107,10,0,0,0,103,114,97,121,53,50,0,0,92,76,0,0,0,0,0,0,103,114,97,121,53,49,0,0,47,98,117,112,117,55,47,52,0,0,0,0,0,0,0,0,103,114,97,121,53,48,0,0,69,32,0,0,0,0,0,0,103,114,97,121,53,0,0,0,111,97,99,117,116,101,0,0,100,101,103,101,110,101,114,97,116,101,32,99,111,110,99,101,110,116,114,97,116,101,100,32,114,97,110,107,32,37,115,44,37,100,10,0,0,0,0,0,103,114,97,121,52,57,0,0,103,114,97,121,52,56,0,0,103,114,97,121,52,55,0,0,37,46,50,102,0,0,0,0,103,114,97,121,52,54,0,0,85,82,76,0,0,0,0,0,103,114,97,121,52,53,0,0,60,116,105,116,108,101,62,0,103,114,97,121,52,52,0,0,99,111,114,110,115,105,108,107,0,0,0,0,0,0,0,0,115,101,116,117,112,76,97,116,105,110,49,10,0,0,0,0,103,114,97,121,52,51,0,0,103,114,97,121,52,50,0,0,47,98,117,112,117,55,47,51,0,0,0,0,0,0,0,0,103,114,97,121,52,49,0,0,103,114,97,121,52,48,0,0,110,117,0,0,0,0,0,0,103,114,97,121,52,0,0,0,103,114,97,121,51,57,0,0,103,114,97,121,51,56,0,0,103,114,97,121,51,55,0,0,103,114,97,121,51,54,0,0,34,32,99,108,97,115,115,61,34,101,100,103,101,34,62,0,40,108,105,98,41,0,0,0,103,114,97,121,51,53,0,0,95,95,99,108,117,115,116,101,114,110,111,100,101,115,0,0,37,37,69,110,100,67,111,109,109,101,110,116,115,10,115,97,118,101,10,0,0,0,0,0,47,84,105,109,101,115,45,66,111,108,100,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,0,0,103,114,97,121,51,52,0,0,103,114,97,121,51,51,0,0,47,98,117,112,117,55,47,50,0,0,0,0,0,0,0,0,103,114,97,121,51,50,0,0,103,114,97,121,51,49,0,0,110,116,105,108,100,101,0,0,103,114,97,121,51,48,0,0,103,114,97,121,51,0,0,0,103,114,97,121,50,57,0,0,103,114,97,121,50,56,0,0,103,114,97,121,50,55,0,0,60,103,32,105,100,61,34,0,103,114,97,121,50,54,0,0,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,10,0,0,0,103,114,97,121,50,53,0,0,103,114,97,121,50,52,0,0,47,98,117,112,117,55,47,49,0,0,0,0,0,0,0,0,103,114,97,121,50,51,0,0,103,114,97,121,50,50,0,0,110,115,117,98,0,0,0,0,95,100,114,97,119,95,0,0,110,111,114,109,97,108,0,0,103,114,97,121,50,49,0,0,103,114,97,121,50,48,0,0,103,114,97,121,50,0,0,0,103,114,97,121,49,57,0,0,103,114,97,121,49,56,0,0,34,0,0,0,0,0,0,0,60,47,103,62,10,0,0,0,103,114,97,121,49,55,0,0,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,40,97,116,101,110,100,41,10,0,103,114,97,121,49,54,0,0,103,114,97,121,49,53,0,0,47,98,117,112,117,54,47,54,0,0,0,0,0,0,0,0,103,114,97,121,49,52,0,0,103,114,97,121,49,51,0,0,110,111,116,105,110,0,0,0,103,114,97,121,49,50,0,0,103,114,97,121,49,49,0,0,103,114,97,121,49,48,48,0,103,114,97,121,49,48,0,0,103,114,97,121,49,0,0,0,62,10,0,0,0,0,0,0,103,114,97,121,48,0,0,0,37,37,80,97,103,101,115,58,32,49,10,0,0,0,0,0,103,114,97,121,0,0,0,0,47,97,99,99,101,110,116,54,47,54,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,52,0,0,0,0,0,0,47,98,117,112,117,54,47,53,0,0,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,51,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,50,0,0,0,0,0,0,110,111,116,0,0,0,0,0,103,111,108,100,101,110,114,111,100,49,0,0,0,0,0,0,103,111,108,100,101,110,114,111,100,0,0,0,0,0,0,0,103,111,108,100,52,0,0,0,103,111,108,100,51,0,0,0,103,111,108,100,50,0,0,0,32,116,97,114,103,101,116,61,34,0,0,0,0,0,0,0,103,111,108,100,49,0,0,0,37,37,80,97,103,101,115,58,32,40,97,116,101,110,100,41,10,0,0,0,0,0,0,0,103,111,108,100,0,0,0,0,112,108,97,105,110,116,101,120,116,0,0,0,0,0,0,0,103,104,111,115,116,119,104,105,116,101,0,0,0,0,0,0,47,98,117,112,117,54,47,52,0,0,0,0,0,0,0,0,103,97,105,110,115,98,111,114,111,0,0,0,0,0,0,0,102,111,114,101,115,116,103,114,101,101,110,0,0,0,0,0,110,105,0,0,0,0,0,0,102,108,111,114,97,108,119,104,105,116,101,0,0,0,0,0,102,105,114,101,98,114,105,99,107,52,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,51,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,50,0,0,0,0,0,0,102,105,114,101,98,114,105,99,107,49,0,0,0,0,0,0,32,120,108,105,110,107,58,116,105,116,108,101,61,34,0,0,102,105,114,101,98,114,105,99,107,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,40,108,105,98,41,58,112,115,0,0,0,0,0,0,0,0,37,37,37,37,84,105,116,108,101,58,32,37,115,10,0,0,100,111,100,103,101,114,98,108,117,101,52,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,51,0,0,0,0,0,47,98,117,112,117,54,47,51,0,0,0,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,50,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,49,0,0,0,0,0,110,101,0,0,0,0,0,0,100,111,100,103,101,114,98,108,117,101,0,0,0,0,0,0,100,105,109,103,114,101,121,0,100,105,109,103,114,97,121,0])
.concat([37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,51,102,32,37,100,32,37,46,52,102,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,0,0,0,0,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,52,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,51,0,0,0,0,85,110,107,110,111,119,110,32,72,84,77,76,32,101,108,101,109,101,110,116,32,60,37,115,62,32,111,110,32,108,105,110,101,32,37,100,32,10,0,0,32,120,108,105,110,107,58,104,114,101,102,61,34,0,0,0,100,101,101,112,115,107,121,98,108,117,101,50,0,0,0,0,37,100,32,37,100,32,115,101,116,108,97,121,101,114,10,0,100,101,101,112,115,107,121,98,108,117,101,49,0,0,0,0,100,101,101,112,115,107,121,98,108,117,101,0,0,0,0,0,45,45,0,0,0,0,0,0,47,98,117,112,117,54,47,50,0,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,52,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,51,0,0,0,0,0,0,0,110,100,97,115,104,0,0,0,111,108,105,118,101,0,0,0,100,101,101,112,112,105,110,107,50,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,49,0,0,0,0,0,0,0,100,101,101,112,112,105,110,107,0,0,0,0,0,0,0,0,100,97,114,107,118,105,111,108,101,116,0,0,0,0,0,0,36,99,0,0,0,0,0,0,100,97,114,107,116,117,114,113,117,111,105,115,101,0,0,0,60,97,0,0,0,0,0,0,100,97,114,107,115,108,97,116,101,103,114,101,121,0,0,0,91,32,47,67,114,111,112,66,111,120,32,91,37,100,32,37,100,32,37,100,32,37,100,93,32,47,80,65,71,69,83,32,112,100,102,109,97,114,107,10,0,0,0,0,0,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,52,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,51,0,0,47,98,117,112,117,54,47,49,0,0,0,0,0,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,50,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,49,0,0,110,98,115,112,0,0,0,0,47,98,117,112,117,53,47,53,0,0,0,0,0,0,0,0,100,97,114,107,115,108,97,116,101,103,114,97,121,0,0,0,99,111,108,111,114,115,99,104,101,109,101,0,0,0,0,0,100,97,114,107,115,108,97,116,101,98,108,117,101,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,52,0,0,0,66,111,111,107,109,97,110,45,68,101,109,105,0,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,51,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,50,0,0,0,60,47,97,62,10,0,0,0,100,97,114,107,115,101,97,103,114,101,101,110,49,0,0,0,117,110,107,110,111,119,110,32,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,99,97,110,118,97,115,32,115,105,122,101,32,40,37,100,44,37,100,41,32,101,120,99,101,101,100,115,32,80,68,70,32,108,105,109,105,116,32,40,37,100,41,10,9,40,115,117,103,103,101,115,116,32,115,101,116,116,105,110,103,32,97,32,98,111,117,110,100,105,110,103,32,98,111,120,32,115,105,122,101,44,32,115,101,101,32,100,111,116,40,49,41,41,10,0,0,100,97,114,107,115,101,97,103,114,101,101,110,0,0,0,0,92,84,0,0,0,0,0,0,100,97,114,107,115,97,108,109,111,110,0,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,52,0,0,0,0,0,67,32,0,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,51,0,0,0,0,0,110,97,98,108,97,0,0,0,47,98,117,112,117,53,47,52,0,0,0,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,50,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,49,0,0,0,0,0,100,97,114,107,111,114,99,104,105,100,0,0,0,0,0,0,37,46,53,103,44,37,46,53,103,0,0,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,52,0,0,0,0,0,119,0,0,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,51,0,0,0,0,0,60,47,116,101,120,116,62,10,0,0,0,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,50,0,0,0,0,0,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,0,37,103,32,37,103,32,115,101,116,95,115,99,97,108,101,32,37,100,32,114,111,116,97,116,101,32,37,103,32,37,103,32,116,114,97,110,115,108,97,116,101,10,0,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,49,0,0,0,0,0,100,97,114,107,111,114,97,110,103,101,0,0,0,0,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,52,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,51,0,109,117,0,0,0,0,0,0,47,98,117,112,117,53,47,51,0,0,0,0,0,0,0,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,50,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,49,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,0,100,97,114,107,107,104,97,107,105,0,0,0,0,0,0,0,100,97,114,107,103,114,101,101,110,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,115,118,103,0,0,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,52,0,0,103,115,97,118,101,10,37,100,32,37,100,32,37,100,32,37,100,32,98,111,120,112,114,105,109,32,99,108,105,112,32,110,101,119,112,97,116,104,10,0,47,84,105,109,101,115,45,73,116,97,108,105,99,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,51,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,50,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,49,0,0,100,97,114,107,103,111,108,100,101,110,114,111,100,0,0,0,109,105,110,117,115,0,0,0,47,98,117,112,117,53,47,50,0,0,0,0,0,0,0,0,99,121,97,110,52,0,0,0,99,121,97,110,51,0,0,0,99,121,97,110,50,0,0,0,99,121,97,110,49,0,0,0,99,121,97,110,0,0,0,0,32,102,105,108,108,61,34,35,37,48,50,120,37,48,50,120,37,48,50,120,34,0,0,0,99,114,105,109,115,111,110,0,37,100,32,37,100,32,37,100,32,98,101,103,105,110,112,97,103,101,10,0,0,0,0,0,99,111,114,110,115,105,108,107,52,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,51,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,50,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,49,0,0,0,0,0,0,0,109,105,100,100,111,116,0,0,98,111,116,104,0,0,0,0,47,98,117,112,117,53,47,49,0,0,0,0,0,0,0,0,99,111,114,110,115,105,108,107,0,0,0,0,0,0,0,0,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,0,99,111,114,97,108,52,0,0,99,111,114,97,108,51,0,0,99,111,114,97,108,50,0,0,32,102,105,108,108,61,34,37,115,34,0,0,0,0,0,0,99,111,114,97,108,49,0,0,32,105,100,61,34,0,0,0,60,60,32,47,80,97,103,101,83,105,122,101,32,91,37,100,32,37,100,93,32,62,62,32,115,101,116,112,97,103,101,100,101,118,105,99,101,10,0,0,99,111,114,97,108,0,0,0,99,104,111,99,111,108,97,116,101,52,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,51,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,50,0,0,0,0,0,0,109,105,99,114,111,0,0,0,47,98,117,112,117,52,47,52,0,0,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,49,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,0,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,52,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,51,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,50,0,0,0,0,0,32,102,111,110,116,45,115,105,122,101,61,34,37,46,50,102,34,0,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,49,0,0,0,0,0,80,111,114,116,114,97,105,116,0,0,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,0,0,0,0,0,0,47,97,99,99,101,110,116,54,47,53,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,52,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,51,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,50,0,0,0,0,0,0,109,100,97,115,104,0,0,0,47,98,117,112,117,52,47,51,0,0,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,49,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,0,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,52,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,51,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,50,0,0,0,0,0,0,32,102,111,110,116,45,102,97,109,105,108,121,61,34,37,115,34,0,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,49,0,0,0,0,0,0,76,97,110,100,115,99,97,112,101,0,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,0,0,0,0,0,0,0,110,111,110,101,0,0,0,0,98,114,111,119,110,52,0,0,98,114,111,119,110,51,0,0,98,114,111,119,110,50,0,0,109,97,99,114,0,0,0,0,47,98,117,112,117,52,47,50,0,0,0,0,0,0,0,0,98,114,111,119,110,49,0,0,98,114,111,119,110,0,0,0,98,108,117,101,118,105,111,108,101,116,0,0,0,0,0,0,98,108,117,101,52,0,0,0,98,108,117,101,51,0,0,0,32,102,111,110,116,45,115,116,121,108,101,61,34,37,115,34,0,0,0,0,0,0,0,0,98,108,117,101,50,0,0,0,45,45,0,0,0,0,0,0,112,115,58,108,97,115,105,0,37,37,37,37,80,97,103,101,79,114,105,101,110,116,97,116,105,111,110,58,32,37,115,10,0,0,0,0,0,0,0,0,98,108,117,101,49,0,0,0,98,108,117,101,0,0,0,0,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,0,98,108,97,99,107,0,0,0,108,116,0,0,0,0,0,0,47,98,117,112,117,52,47,49,0,0,0,0,0,0,0,0,98,105,115,113,117,101,52,0,98,105,115,113,117,101,51,0,98,105,115,113,117,101,50,0,98,105,115,113,117,101,49,0,32,37,100,0,0,0,0,0,98,105,115,113,117,101,0,0,73,77,71,0,0,0,0,0,32,102,111,110,116,45,115,116,114,101,116,99,104,61,34,37,115,34,0,0,0,0,0,0,98,101,105,103,101,0,0,0,37,37,37,37,80,97,103,101,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,10,0,0,0,0,0,0,0,97,122,117,114,101,52,0,0,97,122,117,114,101,51,0,0,97,122,117,114,101,50,0,0,97,122,117,114,101,49,0,0,108,115,113,117,111,0,0,0,47,98,117,112,117,51,47,51,0,0,0,0,0,0,0,0,110,97,118,121,0,0,0,0,97,122,117,114,101,0,0,0,97,113,117,97,109,97,114,105,110,101,52,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,51,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,50,0,0,0,0,0,97,113,117,97,109,97,114,105,110,101,49,0,0,0,0,0,35,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,97,113,117,97,109,97,114,105,110,101,0,0,0,0,0,0,32,102,111,110,116,45,119,101,105,103,104,116,61,34,37,115,34,0,0,0,0,0,0,0,37,37,37,37,80,97,103,101,58,32,37,100,32,37,100,10,0,0,0,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,52,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,51,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,50,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,49,0,0,0,108,115,97,113,117,111,0,0,47,98,117,112,117,51,47,50,0,0,0,0,0,0,0,0,97,110,116,105,113,117,101,119,104,105,116,101,0,0,0,0,97,108,105,99,101,98,108,117,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,57,0,0,0,0,0,0,65,118,97,110,116,71,97,114,100,101,45,68,101,109,105,79,98,108,105,113,117,101,0,0,47,121,108,111,114,114,100,57,47,56,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,55,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,54,0,0,0,0,0,0,44,37,115,0,0,0,0,0,88,77,76,32,111,114,32,116,101,120,116,32,100,101,99,108,97,114,97,116,105,111,110,32,110,111,116,32,97,116,32,115,116,97,114,116,32,111,102,32,101,110,116,105,116,121,0,0,37,37,37,37,69,110,100,80,97,103,101,58,32,37,100,10,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,53,0,0,0,0,0,0,92,72,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,52,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,51,0,0,0,0,0,0,115,101,116,108,105,110,101,119,105,100,116,104,0,0,0,0,47,121,108,111,114,114,100,57,47,50,0,0,0,0,0,0,108,114,109,0,0,0,0,0,47,98,117,112,117,51,47,49,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,57,47,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,56,47,56,0,0,0,0,0,0,47,121,108,111,114,114,100,56,47,55,0,0,0,0,0,0,108,104,101,105,103,104,116,0,47,121,108,111,114,114,100,56,47,54,0,0,0,0,0,0,45,62,0,0,0,0,0,0,66,111,117,110,100,105,110,103,66,111,120,32,110,111,116,32,102,111,117,110,100,32,105,110,32,101,112,115,102,32,102,105,108,101,32,37,115,10,0,0,47,121,108,111,114,114,100,56,47,53,0,0,0,0,0,0,47,121,108,111,114,114,100,56,47,52,0,0,0,0,0,0,32,102,111,110,116,45,102,97,109,105,108,121,61,34,37,115,0,0,0,0,0,0,0,0,99,111,114,97,108,0,0,0,37,37,80,97,103,101,84,114,97,105,108,101,114,10,0,0,47,121,108,111,114,114,100,56,47,51,0,0,0,0,0,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,32,37,115,32,37,115,32,114,97,110,107,32,37,100,32,105,32,61,32,37,100,32,97,110,32,61,32,48,10,0,0,0,0,47,121,108,111,114,114,100,56,47,50,0,0,0,0,0,0,47,121,108,111,114,114,100,56,47,49,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,55,0,0,0,0,0,0,108,111,122,0,0,0,0,0,47,98,117,103,110,57,47,57,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,54,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,53,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,52,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,51,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,50,0,0,0,0,0,0,47,121,108,111,114,114,100,55,47,49,0,0,0,0,0,0,32,120,61,34,37,103,34,32,121,61,34,37,103,34,0,0,60,115,118,103,0,0,0,0,101,110,100,112,97,103,101,10,115,104,111,119,112,97,103,101,10,103,114,101,115,116,111,114,101,10,0,0,0,0,0,0,47,84,105,109,101,115,45,82,111,109,97,110,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,0,0,0,0,47,121,108,111,114,114,100,54,47,54,0,0,0,0,0,0,47,121,108,111,114,114,100,54,47,53,0,0,0,0,0,0,47,121,108,111,114,114,100,54,47,52,0,0,0,0,0,0,47,121,108,111,114,114,100,54,47,51,0,0,0,0,0,0,108,111,119,97,115,116,0,0,47,98,117,103,110,57,47,56,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,54,47,50,0,0,0,0,0,0,47,121,108,111,114,114,100,54,47,49,0,0,0,0,0,0,47,121,108,111,114,114,100,53,47,53,0,0,0,0,0,0,37,108,102,37,108,102,37,108,102,0,0,0,0,0,0,0,47,121,108,111,114,114,100,53,47,52,0,0,0,0,0,0,47,121,108,111,114,114,100,53,47,51,0,0,0,0,0,0,47,121,108,111,114,114,100,53,47,50,0,0,0,0,0,0,32,116,101,120,116,45,97,110,99,104,111,114,61,34,109,105,100,100,108,101,34,0,0,0,48,32,48,32,48,32,101,100,103,101,99,111,108,111,114,10,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,53,47,49,0,0,0,0,0,0,47,121,108,111,114,114,100,52,47,52,0,0,0,0,0,0,47,121,108,111,114,114,100,52,47,51,0,0,0,0,0,0,47,121,108,111,114,114,100,52,47,50,0,0,0,0,0,0,108,102,108,111,111,114,0,0,98,97,99,107,0,0,0,0,47,98,117,103,110,57,47,55,0,0,0,0,0,0,0,0,47,121,108,111,114,114,100,52,47,49,0,0,0,0,0,0,48,0,0,0,0,0,0,0,47,121,108,111,114,114,100,51,47,51,0,0,0,0,0,0,47,121,108,111,114,114,100,51,47,50,0,0,0,0,0,0,47,121,108,111,114,114,100,51,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,57,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,56,0,0,0,0,0,0,32,116,101,120,116,45,97,110,99,104,111,114,61,34,101,110,100,34,0,0,0,0,0,0,37,37,32,37,115,10,0,0,47,121,108,111,114,98,114,57,47,55,0,0,0,0,0,0,78,68,95,111,117,116,40,118,41,46,115,105,122,101,32,61,61,32,50,0,0,0,0,0,60,97,114,101,97,32,115,104,97,112,101,61,34,112,111,108,121,34,0,0,0,0,0,0,71,115,116,97,99,107,32,117,110,100,101,114,102,108,111,119,32,105,110,32,103,114,97,112,104,32,112,97,114,115,101,114,10,0,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,54,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,53,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,52,0,0,0,0,0,0,108,101,0,0,0,0,0,0,47,98,117,103,110,57,47,54,0,0,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,51,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,50,0,0,0,0,0,0,47,121,108,111,114,98,114,57,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,56,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,55,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,54,0,0,0,0,0,0,32,116,101,120,116,45,97,110,99,104,111,114,61,34,115,116,97,114,116,34,0,0,0,0,103,115,97,118,101,10,0,0,47,121,108,111,114,98,114,56,47,53,0,0,0,0,0,0,47,97,99,99,101,110,116,54,47,52,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,52,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,51,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,50,0,0,0,0,0,0,108,100,113,117,111,0,0,0,47,98,117,103,110,57,47,53,0,0,0,0,0,0,0,0,47,121,108,111,114,98,114,56,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,55,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,54,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,53,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,52,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,51,0,0,0,0,0,0,60,116,101,120,116,0,0,0,103,114,101,115,116,111,114,101,10,0,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,50,0,0,0,0,0,0,116,114,105,97,110,103,108,101,0,0,0,0,0,0,0,0,47,121,108,111,114,98,114,55,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,54,47,54,0,0,0,0,0,0,47,121,108,111,114,98,114,54,47,53,0,0,0,0,0,0,108,99,101,105,108,0,0,0,47,98,117,103,110,57,47,52,0,0,0,0,0,0,0,0,47,121,108,111,114,98,114,54,47,52,0,0,0,0,0,0,47,121,108,111,114,98,114,54,47,51,0,0,0,0,0,0,47,121,108,111,114,98,114,54,47,50,0,0,0,0,0,0,47,121,108,111,114,98,114,54,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,53,47,53,0,0,0,0,0,0,47,121,108,111,114,98,114,53,47,52,0,0,0,0,0,0,47,62,10,0,0,0,0,0,45,62,0,0,0,0,0,0,112,115,58,112,115,0,0,0,32,32,47,66,111,114,100,101,114,32,91,32,48,32,48,32,48,32,93,10,32,32,47,65,99,116,105,111,110,32,60,60,32,47,83,117,98,116,121,112,101,32,47,85,82,73,32,47,85,82,73,32,37,115,32,62,62,10,32,32,47,83,117,98,116,121,112,101,32,47,76,105,110,107,10,47,65,78,78,32,112,100,102,109,97,114,107,10,0,0,0,0,0,0,0,0,47,121,108,111,114,98,114,53,47,51,0,0,0,0,0,0,45,62,0,0,0,0,0,0,47,121,108,111,114,98,114,53,47,50,0,0,0,0,0,0,47,121,108,111,114,98,114,53,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,52,47,52,0,0,0,0,0,0,108,97,114,114,0,0,0,0,47,98,117,103,110,57,47,51,0,0,0,0,0,0,0,0,47,121,108,111,114,98,114,52,47,51,0,0,0,0,0,0,47,121,108,111,114,98,114,52,47,50,0,0,0,0,0,0,47,121,108,111,114,98,114,52,47,49,0,0,0,0,0,0,47,121,108,111,114,98,114,51,47,51,0,0,0,0,0,0,47,121,108,111,114,98,114,51,47,50,0,0,0,0,0,0,32,37,115,10,0,0,0,0,66,82,0,0,0,0,0,0,47,121,108,111,114,98,114,51,47,49,0,0,0,0,0,0,32,114,120,61,34,37,103,34,32,114,121,61,34,37,103,34,0,0,0,0,0,0,0,0,32,93,10,0,0,0,0,0,47,121,108,103,110,98,117,57,47,57,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,56,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,55,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,54,0,0,0,0,0,0,108,97,113,117,111,0,0,0,47,98,117,103,110,57,47,50,0,0,0,0,0,0,0,0,109,97,114,111,111,110,0,0,47,121,108,103,110,98,117,57,47,53,0,0,0,0,0,0,37,100,32,37,49,91,34,93,37,110,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,52,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,51,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,50,0,0,0,0,0,0,47,121,108,103,110,98,117,57,47,49,0,0,0,0,0,0,34,34,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,56,0,0,0,0,0,0,32,99,120,61,34,37,103,34,32,99,121,61,34,37,103,34,0,0,0,0,0,0,0,0,105,115,109,97,112,58,109,97,112,0,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,55,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,54,0,0,0,0,0,0,91,32,47,82,101,99,116,32,91,32,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,53,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,52,0,0,0,0,0,0,108,97,110,103,0,0,0,0,47,98,117,103,110,57,47,49,0,0,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,51,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,50,0,0,0,0,0,0,47,121,108,103,110,98,117,56,47,49,0,0,0,0,0,0,99,111,109,109,101,110,116,0,47,121,108,103,110,98,117,55,47,55,0,0,0,0,0,0,98,111,108,100,0,0,0,0,47,121,108,103,110,98,117,55,47,54,0,0,0,0,0,0,47,121,108,103,110,98,117,55,47,53,0,0,0,0,0,0,60,101,108,108,105,112,115,101,0,0,0,0,0,0,0,0,114,101,102,101,114,101,110,99,101,32,116,111,32,101,120,116,101,114,110,97,108,32,101,110,116,105,116,121,32,105,110,32,97,116,116,114,105,98,117,116,101,0,0,0,0,0,0,0,32,37,115,32,97,108,105,103,110,101,100,116,101,120,116,10,0,0,0,0,0,0,0,0,47,121,108,103,110,98,117,55,47,52,0,0,0,0,0,0,47,121,108,103,110,98,117,55,47,51,0,0,0,0,0,0,92,69,0,0,0,0,0,0,47,121,108,103,110,98,117,55,47,50,0,0,0,0,0,0,98,111,108,100,0,0,0,0,47,121,108,103,110,98,117,55,47,49,0,0,0,0,0,0,108,97,109,98,100,97,0,0,47,98,117,103,110,56,47,56,0,0,0,0,0,0,0,0,47,121,108,103,110,98,117,54,47,54,0,0,0,0,0,0,47,121,108,103,110,98,117,54,47,53,0,0,0,0,0,0,69,100,103,101,32,37,112,32,119,97,115,32,110,111,116,32,102,111,117,110,100,10,0,0,47,121,108,103,110,98,117,54,47,52,0,0,0,0,0,0,108,119,105,100,116,104,0,0,47,121,108,103,110,98,117,54,47,51,0,0,0,0,0,0,116,111,111,108,116,105,112,0,114,101,97,100,0,0,0,0,47,121,108,103,110,98,117,54,47,50,0,0,0,0,0,0,47,121,108,103,110,98,117,54,47,49,0,0,0,0,0,0,37,103,44,37,103,0,0,0,32,109,111,118,101,116,111,32,0,0,0,0,0,0,0,0,99,104,111,99,111,108,97,116,101,0,0,0,0,0,0,0,47,121,108,103,110,98,117,53,47,53,0,0,0,0,0,0,47,121,108,103,110,98,117,53,47,52,0,0,0,0,0,0,47,121,108,103,110,98,117,53,47,51,0,0,0,0,0,0,47,121,108,103,110,98,117,53,47,50,0,0,0,0,0,0,108,65,114,114,0,0,0,0,47,98,117,103,110,56,47,55,0,0,0,0,0,0,0,0,47,121,108,103,110,98,117,53,47,49,0,0,0,0,0,0,47,121,108,103,110,98,117,52,47,52,0,0,0,0,0,0,47,121,108,103,110,98,117,52,47,51,0,0,0,0,0,0,47,121,108,103,110,98,117,52,47,50,0,0,0,0,0,0,47,121,108,103,110,98,117,52,47,49,0,0,0,0,0,0,47,121,108,103,110,98,117,51,47,51,0,0,0,0,0,0,60,112,111,108,121,103,111,110,0,0,0,0,0,0,0,0,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,0,0,0,0,32,47,37,115,32,115,101,116,95,102,111,110,116,10,0,0,104,101,97,100,112,111,114,116,0,0,0,0,0,0,0,0,47,121,108,103,110,98,117,51,47,50,0,0,0,0,0,0,125,32,100,101,102,0,0,0,47,121,108,103,110,98,117,51,47,49,0,0,0,0,0,0,101,114,114,111,114,32,105,110,32,99,111,108,120,108,97,116,101,40,41,10,0,0,0,0,47,121,108,103,110,57,47,57,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,56,0,0,0,0,0,0,0,0,115,105,100,101,115,32,61,61,32,52,0,0,0,0,0,0,107,97,112,112,97,0,0,0,47,98,117,103,110,56,47,54,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,55,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,54,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,53,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,52,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,51,0,0,0,0,0,0,0,0,47,121,108,103,110,57,47,50,0,0,0,0,0,0,0,0,37,99,37,103,44,37,103,0,32,101,108,108,105,112,115,101,95,112,97,116,104,32,115,116,114,111,107,101,10,0,0,0,47,121,108,103,110,57,47,49,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,56,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,55,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,54,0,0,0,0,0,0,0,0,105,117,109,108,0,0,0,0,102,111,114,119,97,114,100,0,47,98,117,103,110,56,47,53,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,53,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,52,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,51,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,50,0,0,0,0,0,0,0,0,47,121,108,103,110,56,47,49,0,0,0,0,0,0,0,0,114,111,117,116,101,115,112,108,105,110,101,115,58,32,37,100,32,101,100,103,101,115,44,32,37,100,32,98,111,120,101,115,32,37,46,50,102,32,115,101,99,10,0,0,0,0,0,0,47,121,108,103,110,55,47,55,0,0,0,0,0,0,0,0,32,100,61,34,0,0,0,0,32,101,108,108,105,112,115,101,95,112,97,116,104,32,102,105,108,108,10,0,0,0,0,0,47,121,108,103,110,55,47,54,0,0,0,0,0,0,0,0,47,121,108,103,110,55,47,53,0,0,0,0,0,0,0,0,60,97,114,101,97,32,115,104,97,112,101,61,34,114,101,99,116,34,0,0,0,0,0,0,95,97,110,111,110,121,109,111,117,115,95,37,100,0,0,0,47,121,108,103,110,55,47,52,0,0,0,0,0,0,0,0,47,121,108,103,110,55,47,51,0,0,0,0,0,0,0,0,47,112,97,116,104,98,111,120,32,123,10,32,32,32,32,47,89,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,88,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,121,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,120,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,110,101,119,112,97,116,104,32,120,32,121,32,109,111,118,101,116,111,10,32,32,32,32,88,32,121,32,108,105,110,101,116,111,10,32,32,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,32,32,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,32,125,32,100,101,102,10,47,100,98,103,115,116,97,114,116,32,123,32,103,115,97,118,101,32,37,46,53,103,32,37,46,53,103,32,116,114,97,110,115,108,97,116,101,32,125,32,100,101,102,10,47,97,114,114,111,119,108,101,110,103,116,104,32,49,48,32,100,101,102,10,47,97,114,114,111,119,119,105,100,116,104,32,97,114,114,111,119,108,101,110,103,116,104,32,50,32,100,105,118,32,100,101,102,10,47,97,114,114,111,119,104,101,97,100,32,123,10,32,32,32,32,103,115,97,118,101,10,32,32,32,32,114,111,116,97,116,101,10,32,32,32,32,99,117,114,114,101,110,116,112,111,105,110,116,10,32,32,32,32,110,101,119,112,97,116,104,10,32,32,32,32,109,111,118,101,116,111,10,32,32,32,32,97,114,114,111,119,108,101,110,103,116,104,32,97,114,114,111,119,119,105,100,116,104,32,50,32,100,105,118,32,114,108,105,110,101,116,111,10,32,32,32,32,48,32,97,114,114,111,119,119,105,100,116,104,32,110,101,103,32,114,108,105,110,101,116,111,10,32,32,32,32,99,108,111,115,101,112,97,116,104,32,102,105,108,108,10,32,32,32,32,103,114,101,115,116,111,114,101,10,125,32,98,105,110,100,32,100,101,102,10,47,109,97,107,101,97,114,114,111,119,32,123,10,32,32,32,32,99,117,114,114,101,110,116,112,111,105,110,116,32,101,120,99,104,32,112,111,112,32,115,117,98,32,101,120,99,104,32,99,117,114,114,101,110,116,112,111,105,110,116,32,112,111,112,32,115,117,98,32,97,116,97,110,10,32,32,32,32,97,114,114,111,119,104,101,97,100,10,125,32,98,105,110,100,32,100,101,102,10,47,112,111,105,110,116,32,123,32,32,32,32,110,101,119,112,97,116,104,32,32,32,32,50,32,48,32,51,54,48,32,97,114,99,32,102,105,108,108,125,32,100,101,102,47,109,97,107,101,118,101,99,32,123,10,32,32,32,32,47,89,32,101,120,99,104,32,100,101,102,10,32,32,32,32,47,88,32,101,120,99,104,32,100,101,102,10,32,32,32,32,47,121,32,101,120,99,104,32,100,101,102,10,32,32,32,32,47,120,32,101,120,99,104,32,100,101,102,10,32,32,32,32,110,101,119,112,97,116,104,32,120,32,121,32,109,111,118,101,116,111,10,32,32,32,32,88,32,89,32,108,105,110,101,116,111,32,115,116,114,111,107,101,10,32,32,32,32,88,32,89,32,109,111,118,101,116,111,10,32,32,32,32,120,32,121,32,109,97,107,101,97,114,114,111,119,10,125,32,100,101,102,10,0,0,0,0,0,0,105,115,105,110,0,0,0,0,47,98,117,103,110,56,47,52,0,0,0,0,0,0,0,0,47,121,108,103,110,55,47,50,0,0,0,0,0,0,0,0,47,121,108,103,110,55,47,49,0,0,0,0,0,0,0,0,47,121,108,103,110,54,47,54,0,0,0,0,0,0,0,0,47,121,108,103,110,54,47,53,0,0,0,0,0,0,0,0,47,121,108,103,110,54,47,52,0,0,0,0,0,0,0,0,47,121,108,103,110,54,47,51,0,0,0,0,0,0,0,0,60,112,97,116,104,0,0,0,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,0,0,0,0,0,0,0,47,121,108,103,110,54,47,50,0,0,0,0,0,0,0,0,47,97,99,99,101,110,116,54,47,51,0,0,0,0,0,0,47,121,108,103,110,54,47,49,0,0,0,0,0,0,0,0,47,121,108,103,110,53,47,53,0,0,0,0,0,0,0,0,47,121,108,103,110,53,47,52,0,0,0,0,0,0,0,0,105,113,117,101,115,116,0,0,47,98,117,103,110,56,47,51,0,0,0,0,0,0,0,0,47,121,108,103,110,53,47,51,0,0,0,0,0,0,0,0,47,121,108,103,110,53,47,50,0,0,0,0,0,0,0,0,47,121,108,103,110,53,47,49,0,0,0,0,0,0,0,0,47,121,108,103,110,52,47,52,0,0,0,0,0,0,0,0,47,121,108,103,110,52,47,51,0,0,0,0,0,0,0,0,47,121,108,103,110,52,47,50,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,99,108,111,115,101,112,97,116,104,32,102,105,108,108,10,0,47,121,108,103,110,52,47,49,0,0,0,0,0,0,0,0,37,115,32,37,100,32,110,111,100,101,115,32,37,100,32,101,100,103,101,115,32,109,97,120,105,116,101,114,61,37,100,32,98,97,108,97,110,99,101,61,37,100,10,0,0,0,0,0,101,103,103,0,0,0,0,0,47,121,108,103,110,51,47,51,0,0,0,0,0,0,0,0,47,121,108,103,110,51,47,50,0,0,0,0,0,0,0,0,47,121,108,103,110,51,47,49,0,0,0,0,0,0,0,0,105,111,116,97,0,0,0,0,47,98,117,103,110,56,47,50,0,0,0,0,0,0,0,0,47,115,118,103,47,121,101,108,108,111,119,103,114,101,101,110,0,0,0,0,0,0,0,0,47,115,118,103,47,121,101,108,108,111,119,0,0,0,0,0,47,115,118,103,47,119,104,105,116,101,115,109,111,107,101,0,47,115,118,103,47,119,104,105,116,101,0,0,0,0,0,0,47,115,118,103,47,119,104,101,97,116,0,0,0,0,0,0,47,115,118,103,47,118,105,111,108,101,116,0,0,0,0,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,115,118,103,46,99,0,0,0,0,0,99,111,108,111,114,0,0,0,101,112,115,58,108,97,115,105,0,0,0,0,0,0,0,0,32,99,117,114,118,101,116,111,10,0,0,0,0,0,0,0,47,115,118,103,47,116,117,114,113,117,111,105,115,101,0,0,116,101,120,116,108,97,121,111,117,116,0,0,0,0,0,0,47,115,118,103,47,116,111,109,97,116,111,0,0,0,0,0,47,115,118,103,47,116,104,105,115,116,108,101,0,0,0,0,47,115,118,103,47,116,101,97,108,0,0,0,0,0,0,0,105,110,116,0,0,0,0,0,47,98,117,103,110,56,47,49,0,0,0,0,0,0,0,0,47,115,118,103,47,116,97,110,0,0,0,0,0,0,0,0,47,115,118,103,47,115,116,101,101,108,98,108,117,101,0,0,47,115,118,103,47,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,0,0,0,47,115,118,103,47,115,110,111,119,0,0,0,0,0,0,0,47,115,118,103,47,115,108,97,116,101,103,114,101,121,0,0,83,85,66,0,0,0,0,0,47,115,118,103,47,115,108,97,116,101,103,114,97,121,0,0,35,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,100,32,37,100,32,37,100,32,37,100,10,0,0,0,0,115,116,114,111,107,101,10,0,47,115,118,103,47,115,108,97,116,101,98,108,117,101,0,0,47,115,118,103,47,115,107,121,98,108,117,101,0,0,0,0,47,115,118,103,47,115,105,108,118,101,114,0,0,0,0,0,47,115,118,103,47,115,105,101,110,110,97,0,0,0,0,0,105,110,102,105,110,0,0,0,47,98,117,103,110,55,47,55,0,0,0,0,0,0,0,0,108,105,109,101,0,0,0,0,47,115,118,103,47,115,101,97,115,104,101,108,108,0,0,0,47,115,118,103,47,115,101,97,103,114,101,101,110,0,0,0,108,105,110,101,0,0,0,0,47,115,118,103,47,115,97,110,100,121,98,114,111,119,110,0,47,115,118,103,47,115,97,108,109,111,110,0,0,0,0,0,47,115,118,103,47,115,97,100,100,108,101,98,114,111,119,110,0,0,0,0,0,0,0,0,32,45,116,97,103,115,32,123,37,100,37,115,37,100,125,0,47,115,118,103,47,114,111,121,97,108,98,108,117,101,0,0,53,44,50,0,0,0,0,0,32,108,105,110,101,116,111,10,0,0,0,0,0,0,0,0,47,115,118,103,47,114,111,115,121,98,114,111,119,110,0,0,47,115,118,103,47,114,101,100,0,0,0,0,0,0,0,0,47,115,118,103,47,112,117,114,112,108,101,0,0,0,0,0,47,115,118,103,47,112,111,119,100,101,114,98,108,117,101,0,105,109,97,103,101,0,0,0,47,98,117,103,110,55,47,54,0,0,0,0,0,0,0,0,47,115,118,103,47,112,108,117,109,0,0,0,0,0,0,0,47,115,118,103,47,112,105,110,107,0,0,0,0,0,0,0,47,115,118,103,47,112,101,114,117,0,0,0,0,0,0,0,47,115,118,103,47,112,101,97,99,104,112,117,102,102,0,0,37,108,100,0,0,0,0,0,100,101,109,105,0,0,0,0,47,115,118,103,47,112,97,112,97,121,97,119,104,105,112,0,47,115,118,103,47,112,97,108,101,118,105,111,108,101,116,114,101,100,0,0,0,0,0,0,49,44,53,0,0,0,0,0,114,101,102,101,114,101,110,99,101,32,116,111,32,98,105,110,97,114,121,32,101,110,116,105,116,121,0,0,0,0,0,0,32,109,111,118,101,116,111,10,0,0,0,0,0,0,0,0,47,115,118,103,47,112,97,108,101,116,117,114,113,117,111,105,115,101,0,0,0,0,0,0,47,115,118,103,47,112,97,108,101,103,114,101,101,110,0,0,92,78,0,0,0,0,0,0,47,115,118,103,47,112,97,108,101,103,111,108,100,101,110,114,111,100,0,0,0,0,0,0,102,105,108,108,101,100,0,0,102,108,97,116,105,110,100,101,120,40,97,103,116,97,105,108,40,101,41,41,32,60,32,77,45,62,110,99,111,108,115,0,47,115,118,103,47,111,114,99,104,105,100,0,0,0,0,0,105,103,114,97,118,101,0,0,47,98,117,103,110,55,47,53,0,0,0,0,0,0,0,0,47,115,118,103,47,111,114,97,110,103,101,114,101,100,0,0,47,115,118,103,47,111,114,97,110,103,101,0,0,0,0,0,34,34,0,0,0,0,0,0,115,104,111,114,116,101,115,116,46,99,0,0,0,0,0,0,47,115,118,103,47,111,108,105,118,101,100,114,97,98,0,0,116,97,105,108,95,108,112,0,47,115,118,103,47,111,108,105,118,101,0,0,0,0,0,0,114,0,0,0,0,0,0,0,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,0,0,0,0,47,115,118,103,47,111,108,100,108,97,99,101,0,0,0,0,47,115,118,103,47,110,97,118,121,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,110,101,119,112,97,116,104,32,0,0,0,0,0,0,0,0,99,104,97,114,116,114,101,117,115,101,0,0,0,0,0,0,47,115,118,103,47,110,97,118,97,106,111,119,104,105,116,101,0,0,0,0,0,0,0,0,47,115,118,103,47,109,111,99,99,97,115,105,110,0,0,0,47,115,118,103,47,109,105,115,116,121,114,111,115,101,0,0,47,115,118,103,47,109,105,110,116,99,114,101,97,109,0,0,102,97,108,115,101,0,0,0,105,101,120,99,108,0,0,0,47,98,117,103,110,55,47,52,0,0,0,0,0,0,0,0,47,115,118,103,47,109,105,100,110,105,103,104,116,98,108,117,101,0,0,0,0,0,0,0,103,105,102,58,115,118,103,0,47,115,118,103,47,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,0,47,115,118,103,47,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,0,0,0,0,34,32,115,116,114,111,107,101,45,111,112,97,99,105,116,121,61,34,37,102,0,0,0,0,37,37,66,111,117,110,100,105,110,103,66,111,120,58,0,0,10,0,0,0,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,112,117,114,112,108,101,0,0,0,0,0,0,0,116,97,105,108,112,111,114,116,0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,100,105,99,116,32,101,110,100,32,100,101,102,105,110,101,102,111,110,116,0,0,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,111,114,99,104,105,100,0,0,0,0,0,0,0,37,115,32,105,115,32,110,111,116,32,97,32,107,110,111,119,110,32,99,111,108,111,114,46,10,0,0,0,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,98,108,117,101,0,83,121,110,116,97,120,32,101,114,114,111,114,58,32,110,111])
.concat([110,45,115,112,97,99,101,32,115,116,114,105,110,103,32,117,115,101,100,32,97,102,116,101,114,32,60,47,84,65,66,76,69,62,0,0,0,0,0,0,47,115,118,103,47,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,0,0,105,99,105,114,99,0,0,0,47,98,117,103,110,55,47,51,0,0,0,0,0,0,0,0,47,115,118,103,47,109,97,114,111,111,110,0,0,0,0,0,47,115,118,103,47,109,97,103,101,110,116,97,0,0,0,0,47,115,118,103,47,108,105,110,101,110,0,0,0,0,0,0,47,115,118,103,47,108,105,109,101,103,114,101,101,110,0,0,47,115,118,103,47,108,105,109,101,0,0,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,121,101,108,108,111,119,0,0,0,0,0,0,0,0,34,32,115,116,114,111,107,101,45,100,97,115,104,97,114,114,97,121,61,34,37,115,0,0,37,32,0,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,115,107,121,98,108,117,101,0,0,0,0,0,0,0,105,97,99,117,116,101,0,0,105,110,118,101,109,112,116,121,0,0,0,0,0,0,0,0,47,98,117,103,110,55,47,50,0,0,0,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,115,101,97,103,114,101,101,110,0,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,115,97,108,109,111,110,0,0,0,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,112,105,110,107,0,0,102,108,97,116,105,110,100,101,120,40,97,103,104,101,97,100,40,101,41,41,32,60,32,77,45,62,110,114,111,119,115,0,47,115,118,103,47,108,105,103,104,116,103,114,101,121,0,0,47,115,118,103,47,108,105,103,104,116,103,114,101,101,110,0,47,115,118,103,47,108,105,103,104,116,103,114,97,121,0,0,34,32,115,116,114,111,107,101,45,119,105,100,116,104,61,34,37,103,0,0,0,0,0,0,37,46,53,103,32,37,46,53,103,32,37,46,53,103,32,37,115,99,111,108,111,114,10,0,47,115,118,103,47,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,0,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,99,121,97,110,0,0,47,115,118,103,47,108,105,103,104,116,99,111,114,97,108,0,60,97,114,101,97,32,115,104,97,112,101,61,34,99,105,114,99,108,101,34,0,0,0,0,80,108,101,97,115,101,32,117,115,101,32,97,32,115,105,110,103,108,101,32,100,101,102,105,110,105,116,105,111,110,32,111,102,32,116,104,101,32,115,117,98,103,114,97,112,104,32,119,105,116,104,105,110,32,116,104,101,32,99,111,110,116,101,120,116,32,111,102,32,105,116,115,32,112,97,114,101,110,116,32,103,114,97,112,104,32,34,37,115,34,10,0,0,0,0,0,47,115,118,103,47,108,105,103,104,116,98,108,117,101,0,0,104,101,108,108,105,112,0,0,47,98,117,103,110,55,47,49,0,0,0,0,0,0,0,0,47,115,118,103,47,108,101,109,111,110,99,104,105,102,102,111,110,0,0,0,0,0,0,0,47,115,118,103,47,108,97,119,110,103,114,101,101,110,0,0,47,115,118,103,47,108,97,118,101,110,100,101,114,98,108,117,115,104,0,0,0,0,0,0,47,115,118,103,47,108,97,118,101,110,100,101,114,0,0,0,47,115,118,103,47,107,104,97,107,105,0,0,0,0,0,0,47,115,118,103,47,105,118,111,114,121,0,0,0,0,0,0,34,32,115,116,114,111,107,101,61,34,0,0,0,0,0,0,115,101,116,104,115,98,0,0,47,115,118,103,47,105,110,100,105,103,111,0,0,0,0,0,47,97,99,99,101,110,116,54,47,50,0,0,0,0,0,0,47,115,118,103,47,105,110,100,105,97,110,114,101,100,0,0,47,115,118,103,47,104,111,116,112,105,110,107,0,0,0,0,47,115,118,103,47,104,111,110,101,121,100,101,119,0,0,0,104,101,97,114,116,115,0,0,47,98,117,103,110,54,47,54,0,0,0,0,0,0,0,0,47,115,118,103,47,103,114,101,121,0,0,0,0,0,0,0,47,115,118,103,47,103,114,101,101,110,121,101,108,108,111,119,0,0,0,0,0,0,0,0,47,115,118,103,47,103,114,101,101,110,0,0,0,0,0,0,47,115,118,103,47,103,114,97,121,0,0,0,0,0,0,0,47,115,118,103,47,103,111,108,100,101,110,114,111,100,0,0,47,115,118,103,47,103,111,108,100,0,0,0,0,0,0,0,110,111,110,101,0,0,0,0,101,100,103,101,0,0,0,0,47,115,118,103,47,103,104,111,115,116,119,104,105,116,101,0,112,111,105,110,116,0,0,0,47,115,118,103,47,103,97,105,110,115,98,111,114,111,0,0,47,115,118,103,47,102,117,99,104,115,105,97,0,0,0,0,47,115,118,103,47,102,111,114,101,115,116,103,114,101,101,110,0,0,0,0,0,0,0,0,104,97,114,114,0,0,0,0,47,98,117,103,110,54,47,53,0,0,0,0,0,0,0,0,47,115,118,103,47,102,108,111,114,97,108,119,104,105,116,101,0,0,0,0,0,0,0,0,47,115,118,103,47,102,105,114,101,98,114,105,99,107,0,0,47,115,118,103,47,100,111,100,103,101,114,98,108,117,101,0,47,115,118,103,47,100,105,109,103,114,101,121,0,0,0,0,47,115,118,103,47,100,105,109,103,114,97,121,0,0,0,0,47,115,118,103,47,100,101,101,112,115,107,121,98,108,117,101,0,0,0,0,0,0,0,0,34,32,102,105,108,108,45,111,112,97,99,105,116,121,61,34,37,102,0,0,0,0,0,0,112,101,110,99,111,108,111,114,0,0,0,0,0,0,0,0,110,111,100,101,0,0,0,0,101,112,115,58,112,115,0,0,47,115,118,103,47,100,101,101,112,112,105,110,107,0,0,0,47,115,118,103,47,100,97,114,107,118,105,111,108,101,116,0,47,115,118,103,47,100,97,114,107,116,117,114,113,117,111,105,115,101,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,115,108,97,116,101,103,114,101,121,0,0,0,0,0,0,104,65,114,114,0,0,0,0,47,98,117,103,110,54,47,52,0,0,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,115,108,97,116,101,103,114,97,121,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,115,108,97,116,101,98,108,117,101,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,115,101,97,103,114,101,101,110,0,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,115,97,108,109,111,110,0,47,115,118,103,47,100,97,114,107,114,101,100,0,0,0,0,83,85,80,0,0,0,0,0,47,115,118,103,47,100,97,114,107,111,114,99,104,105,100,0,32,102,105,108,108,61,34,0,103,114,97,112,104,0,0,0,47,115,118,103,47,100,97,114,107,111,114,97,110,103,101,0,110,32,62,61,32,52,0,0,47,115,118,103,47,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,0,0,0,0,47,115,118,103,47,100,97,114,107,109,97,103,101,110,116,97,0,0,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,107,104,97,107,105,0,0,103,116,0,0,0,0,0,0,47,98,117,103,110,54,47,51,0,0,0,0,0,0,0,0,103,114,101,101,110,0,0,0,47,115,118,103,47,100,97,114,107,103,114,101,121,0,0,0,47,115,118,103,47,100,97,114,107,103,114,101,101,110,0,0,47,115,118,103,47,100,97,114,107,103,114,97,121,0,0,0,37,115,58,37,100,58,32,115,116,114,105,110,103,32,114,97,110,32,112,97,115,116,32,101,110,100,32,111,102,32,108,105,110,101,10,0,0,0,0,0,47,115,118,103,47,100,97,114,107,103,111,108,100,101,110,114,111,100,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,99,121,97,110,0,0,0,48,0,0,0,0,0,0,0,47,115,118,103,47,100,97,114,107,98,108,117,101,0,0,0,34,47,62,10,0,0,0,0,37,115,10,0,0,0,0,0,47,115,118,103,47,99,121,97,110,0,0,0,0,0,0,0,47,115,118,103,47,99,114,105,109,115,111,110,0,0,0,0,47,115,118,103,47,99,111,114,110,115,105,108,107,0,0,0,47,115,118,103,47,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,0,0,0,0,103,101,0,0,0,0,0,0,47,98,117,103,110,54,47,50,0,0,0,0,0,0,0,0,47,115,118,103,47,99,111,114,97,108,0,0,0,0,0,0,47,115,118,103,47,99,104,111,99,111,108,97,116,101,0,0,47,115,118,103,47,99,104,97,114,116,114,101,117,115,101,0,47,115,118,103,47,99,97,100,101,116,98,108,117,101,0,0,65,118,97,110,116,71,97,114,100,101,45,68,101,109,105,0,47,115,118,103,47,98,117,114,108,121,119,111,111,100,0,0,101,100,103,101,0,0,0,0,47,115,118,103,47,98,114,111,119,110,0,0,0,0,0,0,37,103,44,37,103,32,0,0,114,101,102,101,114,101,110,99,101,32,116,111,32,105,110,118,97,108,105,100,32,99,104,97,114,97,99,116,101,114,32,110,117,109,98,101,114,0,0,0,105,110,118,105,115,0,0,0,47,115,118,103,47,98,108,117,101,118,105,111,108,101,116,0,47,115,118,103,47,98,108,117,101,0,0,0,0,0,0,0,92,71,0,0,0,0,0,0,47,115,118,103,47,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,0,0,0,0,83,32,0,0,0,0,0,0,47,115,118,103,47,98,108,97,99,107,0,0,0,0,0,0,103,97,109,109,97,0,0,0,47,98,117,103,110,54,47,49,0,0,0,0,0,0,0,0,69,68,95,116,111,95,118,105,114,116,40,101,41,32,33,61,32,78,85,76,76,0,0,0,47,115,118,103,47,98,105,115,113,117,101,0,0,0,0,0,47,115,118,103,47,98,101,105,103,101,0,0,0,0,0,0,44,32,0,0,0,0,0,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,116,114,105,115,0,0,0,0,0,47,115,118,103,47,97,122,117,114,101,0,0,0,0,0,0,60,72,84,77,76,62,0,0,104,101,97,100,95,108,112,0,47,115,118,103,47,97,113,117,97,109,97,114,105,110,101,0,110,101,119,46,103,118,0,0,99,111,117,108,100,110,39,116,32,111,112,101,110,32,101,112,115,102,32,102,105,108,101,32,37,115,10,0,0,0,0,0,47,115,118,103,47,97,113,117,97,0,0,0,0,0,0,0,47,115,118,103,47,97,110,116,105,113,117,101,119,104,105,116,101,0,0,0,0,0,0,0,32,112,111,105,110,116,115,61,34,0,0,0,0,0,0,0,37,115,32,0,0,0,0,0,115,97,109,101,104,101,97,100,0,0,0,0,0,0,0,0,99,97,100,101,116,98,108,117,101,0,0,0,0,0,0,0,47,115,118,103,47,97,108,105,99,101,98,108,117,101,0,0,47,115,112,101,99,116,114,97,108,57,47,57,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,56,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,55,0,0,0,0,102,114,97,115,108,0,0,0,47,98,117,103,110,53,47,53,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,54,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,53,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,52,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,51,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,50,0,0,0,0,47,115,112,101,99,116,114,97,108,57,47,49,0,0,0,0,60,112,111,108,121,108,105,110,101,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,115,101,116,108,105,110,101,119,105,100,116,104,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,56,0,0,0,0,98,108,97,99,107,0,0,0,32,32,32,32,32,32,32,32,47,69,110,99,111,100,105,110,103,32,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,100,101,102,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,55,0,0,0,0,99,111,108,111,114,32,37,115,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,54,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,53,0,0,0,0,102,114,97,99,51,52,0,0,47,98,117,103,110,53,47,52,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,52,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,51,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,50,0,0,0,0,47,115,112,101,99,116,114,97,108,56,47,49,0,0,0,0,47,115,112,101,99,116,114,97,108,55,47,55,0,0,0,0,47,115,112,101,99,116,114,97,108,55,47,54,0,0,0,0,32,45,45,62,10,0,0,0,32,115,101,116,108,105,110,101,119,105,100,116,104,10,0,0,47,115,112,101,99,116,114,97,108,55,47,53,0,0,0,0,47,115,112,101,99,116,114,97,108,55,47,52,0,0,0,0,47,115,112,101,99,116,114,97,108,55,47,51,0,0,0,0,47,115,112,101,99,116,114,97,108,55,47,50,0,0,0,0,102,114,97,99,49,52,0,0,104,97,108,102,0,0,0,0,47,98,117,103,110,53,47,51,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,55,47,49,0,0,0,0,47,115,112,101,99,116,114,97,108,54,47,54,0,0,0,0,47,115,112,101,99,116,114,97,108,54,47,53,0,0,0,0,47,115,112,101,99,116,114,97,108,54,47,52,0,0,0,0,78,68,95,114,97,110,107,40,118,41,32,61,61,32,114,0,47,115,112,101,99,116,114,97,108,54,47,51,0,0,0,0,47,115,112,101,99,116,114,97,108,54,47,50,0,0,0,0,60,33,45,45,32,0,0,0,32,93,32,32,37,100,32,102,97,108,115,101,32,37,115,10,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,54,47,49,0,0,0,0,47,115,112,101,99,116,114,97,108,53,47,53,0,0,0,0,47,115,112,101,99,116,114,97,108,53,47,52,0,0,0,0,47,115,112,101,99,116,114,97,108,53,47,51,0,0,0,0,102,114,97,99,49,50,0,0,47,98,117,103,110,53,47,50,0,0,0,0,0,0,0,0,114,101,99,116,97,110,103,108,101,32,40,37,100,44,37,100,41,32,40,37,100,44,37,100,41,32,37,115,32,37,115,10,0,0,0,0,0,0,0,0,84,104,105,115,32,109,97,121,32,99,97,117,115,101,32,117,110,101,120,112,101,99,116,101,100,32,98,101,104,97,118,105,111,114,32,111,114,32,99,114,97,115,104,32,116,104,101,32,112,114,111,103,114,97,109,46,10,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,53,47,50,0,0,0,0,47,115,112,101,99,116,114,97,108,53,47,49,0,0,0,0,47,115,112,101,99,116,114,97,108,52,47,52,0,0,0,0,47,115,112,101,99,116,114,97,108,52,47,51,0,0,0,0,47,115,112,101,99,116,114,97,108,52,47,50,0,0,0,0,47,115,112,101,99,116,114,97,108,52,47,49,0,0,0,0,121,101,108,108,111,119,103,114,101,101,110,0,0,0,0,0,32,93,32,32,37,100,32,116,114,117,101,32,37,115,10,0,47,115,112,101,99,116,114,97,108,51,47,51,0,0,0,0,101,32,33,61,32,78,85,76,76,0,0,0,0,0,0,0,47,97,99,99,101,110,116,54,47,49,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,51,47,50,0,0,0,0,47,115,112,101,99,116,114,97,108,51,47,49,0,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,57,0,0,0,102,111,114,97,108,108,0,0,47,98,117,103,110,53,47,49,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,56,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,55,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,54,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,53,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,52,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,51,0,0,0,121,101,108,108,111,119,0,0,38,108,116,59,0,0,0,0,32,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,50,0,0,0,99,105,114,99,108,101,0,0,47,115,112,101,99,116,114,97,108,49,49,47,49,49,0,0,47,115,112,101,99,116,114,97,108,49,49,47,49,48,0,0,101,110,100,32,112,111,114,116,58,32,40,37,46,53,103,44,32,37,46,53,103,41,44,32,116,97,110,103,101,110,116,32,97,110,103,108,101,58,32,37,46,53,103,44,32,37,115,10,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,49,49,47,49,0,0,0,102,110,111,102,0,0,0,0,47,98,117,103,110,52,47,52,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,57,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,56,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,55,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,54,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,53,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,52,0,0,0,119,104,105,116,101,115,109,111,107,101,0,0,0,0,0,0,78,111,32,111,114,32,105,109,112,114,111,112,101,114,32,105,109,97,103,101,32,102,105,108,101,61,34,37,115,34,10,0,91,32,0,0,0,0,0,0,106,112,103,58,118,114,109,108,0,0,0,0,0,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,51,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,50,0,0,0,47,115,112,101,99,116,114,97,108,49,48,47,49,48,0,0,47,115,112,101,99,116,114,97,108,49,48,47,49,0,0,0,101,120,105,115,116,0,0,0,47,98,117,103,110,52,47,51,0,0,0,0,0,0,0,0,47,115,101,116,51,57,47,57,0,0,0,0,0,0,0,0,47,115,101,116,51,57,47,56,0,0,0,0,0,0,0,0,47,115,101,116,51,57,47,55,0,0,0,0,0,0,0,0,47,115,101,116,51,57,47,54,0,0,0,0,0,0,0,0,47,115,101,116,51,57,47,53,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,47,115,101,116,51,57,47,52,0,0,0,0,0,0,0,0,119,104,105,116,101,0,0,0,101,112,115,58,112,115,0,0,47,115,101,116,51,57,47,51,0,0,0,0,0,0,0,0,47,115,101,116,51,57,47,50,0,0,0,0,0,0,0,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,102,105,103,46,99,0,0,0,0,0,47,115,101,116,51,57,47,49,0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,47,115,101,116,51,56,47,56,0,0,0,0,0,0,0,0,101,117,114,111,0,0,0,0,47,98,117,103,110,52,47,50,0,0,0,0,0,0,0,0,103,114,97,121,0,0,0,0,47,115,101,116,51,56,47,55,0,0,0,0,0,0,0,0,47,115,101,116,51,56,47,54,0,0,0,0,0,0,0,0,47,115,101,116,51,56,47,53,0,0,0,0,0,0,0,0,47,115,101,116,51,56,47,52,0,0,0,0,0,0,0,0,110,111,110,45,116,101,114,109,105,110,97,116,101,100,32,72,84,77,76,32,115,116,114,105,110,103,32,115,116,97,114,116,105,110,103,32,108,105,110,101,32,37,100,44,32,102,105,108,101,32,37,115,10,0,0,0,47,115,101,116,51,56,47,51,0,0,0,0,0,0,0,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,116,107,46,99,0,0,0,0,0,0,47,115,101,116,51,56,47,50,0,0,0,0,0,0,0,0,119,104,101,97,116,0,0,0,112,115,50,58,112,115,0,0,47,115,101,116,51,56,47,49,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,55,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,54,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,53,0,0,0,0,0,0,0,0,101,117,109,108,0,0,0,0,47,98,117,103,110,52,47,49,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,52,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,51,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,50,0,0,0,0,0,0,0,0,47,115,101,116,51,55,47,49,0,0,0,0,0,0,0,0,105,116,97,108,105,99,0,0,47,115,101,116,51,54,47,54,0,0,0,0,0,0,0,0,47,115,101,116,51,54,47,53,0,0,0,0,0,0,0,0,110,111,100,101,0,0,0,0,118,105,111,108,101,116,0,0,97,115,121,110,99,104,114,111,110,111,117,115,32,101,110,116,105,116,121,0,0,0,0,0,112,115,58,112,115,0,0,0,47,115,101,116,51,54,47,52,0,0,0,0,0,0,0,0,47,115,101,116,51,54,47,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,115,101,116,51,54,47,50,0,0,0,0,0,0,0,0,115,101,116,108,105,110,101,119,105,100,116,104,40,37,46,51,102,41,0,0,0,0,0,0,116,107,58,116,107,0,0,0,47,115,101,116,51,54,47,49,0,0,0,0,0,0,0,0,101,116,104,0,0,0,0,0,119,101,105,103,104,116,0,0,47,98,117,103,110,51,47,51,0,0,0,0,0,0,0,0,47,115,101,116,51,53,47,53,0,0,0,0,0,0,0,0,47,115,101,116,51,53,47,52,0,0,0,0,0,0,0,0,44,10,0,0,0,0,0,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,116,114,105,115,0,0,0,0,0,0,47,115,101,116,51,53,47,51,0,0,0,0,0,0,0,0,108,112,0,0,0,0,0,0,47,115,101,116,51,53,47,50,0,0,0,0,0,0,0,0,85,84,70,45,56,32,105,110,112,117,116,32,117,115,101,115,32,110,111,110,45,76,97,116,105,110,49,32,99,104,97,114,97,99,116,101,114,115,32,119,104,105,99,104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,100,108,101,100,32,98,121,32,116,104,105,115,32,80,111,115,116,83,99,114,105,112,116,32,100,114,105,118,101,114,10,0,0,0,0,0,0,0,103,114,97,112,104,118,105,122,0,0,0,0,0,0,0,0,47,115,101,116,51,53,47,49,0,0,0,0,0,0,0,0,47,115,101,116,51,52,47,52,0,0,0,0,0,0,0,0,116,117,114,113,117,111,105,115,101,0,0,0,0,0,0,0,112,115,0,0,0,0,0,0,47,115,101,116,51,52,47,51,0,0,0,0,0,0,0,0,98,117,114,108,121,119,111,111,100,0,0,0,0,0,0,0,47,115,101,116,51,52,47,50,0,0,0,0,0,0,0,0,47,115,101,116,51,52,47,49,0,0,0,0,0,0,0,0,47,115,101,116,51,51,47,51,0,0,0,0,0,0,0,0,101,116,97,0,0,0,0,0,47,98,117,103,110,51,47,50,0,0,0,0,0,0,0,0,47,115,101,116,51,51,47,50,0,0,0,0,0,0,0,0,47,115,101,116,51,51,47,49,0,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,57,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,56,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,55,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,54,0,0,0,0,0,0,0,116,111,109,97,116,111,0,0,99,109,0,0,0,0,0,0,37,37,69,110,100,83,101,116,117,112,0,0,0,0,0,0,47,115,101,116,51,49,50,47,53,0,0,0,0,0,0,0,84,105,109,101,115,45,82,111,109,97,110,0,0,0,0,0,32,32,32,32,32,32,32,32,125,32,102,111,114,97,108,108,0,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,52,0,0,0,0,0,0,0,98,111,116,104,0,0,0,0,47,115,101,116,51,49,50,47,51,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,50,0,0,0,0,0,0,0,101,113,117,105,118,0,0,0,47,98,117,103,110,51,47,49,0,0,0,0,0,0,0,0,47,115,101,116,51,49,50,47,49,50,0,0,0,0,0,0,47,115,101,116,51,49,50,47,49,49,0,0,0,0,0,0,47,115,101,116,51,49,50,47,49,48,0,0,0,0,0,0,41,10,45,45,62,10,0,0,47,115,101,116,51,49,50,47,49,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,57,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,56,0,0,0,0,0,0,0,116,104,105,115,116,108,101,0,125,32,105,102,0,0,0,0,47,115,101,116,51,49,49,47,55,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,54,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,53,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,52,0,0,0,0,0,0,0,101,112,115,105,108,111,110,0,101,0,0,0,0,0,0,0,47,98,114,98,103,57,47,57,0,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,51,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,50,0,0,0,0,0,0,0,47,115,101,116,51,49,49,47,49,49,0,0,0,0,0,0,32,40,0,0,0,0,0,0,47,115,101,116,51,49,49,47,49,48,0,0,0,0,0,0,47,115,101,116,51,49,49,47,49,0,0,0,0,0,0,0,109,105,110,99,114,111,115,115,58,32,112,97,115,115,32,37,100,32,105,116,101,114,32,37,100,32,116,114,121,105,110,103,32,37,100,32,99,117,114,95,99,114,111,115,115,32,37,100,32,98,101,115,116,95,99,114,111,115,115,32,37,100,10,0,47,115,101,116,51,49,48,47,57,0,0,0,0,0,0,0,116,101,97,108,0,0,0,0,32,32,32,32,117,115,101,114,100,105,99,116,32,40,62,62,41,32,99,118,110,32,40,91,41,32,99,118,110,32,108,111,97,100,32,112,117,116,0,0,47,115,101,116,51,49,48,47,56,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,55,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,54,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,53,0,0,0,0,0,0,0,101,110,115,112,0,0,0,0,47,98,114,98,103,57,47,56,0,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,52,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,84,104,101,32,117,115,101,32,111,102,32,34,115,117,98,103,114,97,112,104,32,37,115,34,44,32,108,105,110,101,32,37,100,44,32,119,105,116,104,111,117,116,32,97,32,98,111,100,121,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,10,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,51,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,50,0,0,0,0,0,0,0,32,118,101,114,115,105,111,110,32,0,0,0,0,0,0,0,47,115,101,116,51,49,48,47,49,48,0,0,0,0,0,0,47,115,101,116,51,49,48,47,49,0,0,0,0,0,0,0,47,115,101,116,50,56,47,56,0,0,0,0,0,0,0,0,116,97,110,0,0,0,0,0,32,32,32,32,117,115,101,114,100,105,99,116,32,40,60,60,41,32,99,118,110,32,40,91,41,32,99,118,110,32,108,111,97,100,32,112,117,116,0,0,47,115,101,116,50,56,47,55,0,0,0,0,0,0,0,0,76,101,102,116,0,0,0,0,47,115,101,116,50,56,47,54,0,0,0,0,0,0,0,0,47,97,99,99,101,110,116,53,47,53,0,0,0,0,0,0,47,115,101,116,50,56,47,53,0,0,0,0,0,0,0,0,47,115,101,116,50,56,47,52,0,0,0,0,0,0,0,0,101,109,115,112,0,0,0,0,47,98,114,98,103,57,47,55,0,0,0,0,0,0,0,0,47,115,101,116,50,56,47,51,0,0,0,0,0,0,0,0,47,115,101,116,50,56,47,50,0,0,0,0,0,0,0,0,47,115,101,116,50,56,47,49,0,0,0,0,0,0,0,0,10,60,33,45,45,32,71,101,110,101,114,97,116,101,100,32,98,121,32,0,0,0,0,0,47,115,101,116,50,55,47,55,0,0,0,0,0,0,0,0,47,115,101,116,50,55,47,54,0,0,0,0,0,0,0,0,47,115,101,116,50,55,47,53,0,0,0,0,0,0,0,0,115,116,101,101,108,98,108,117,101,0,0,0,0,0,0,0,50,32,108,116,32,123,0,0,47,115,101,116,50,55,47,52,0,0,0,0,0,0,0,0,111,118,97,108,0,0,0,0,47,115,101,116,50,55,47,51,0,0,0,0,0,0,0,0,47,115,101,116,50,55,47,50,0,0,0,0,0,0,0,0,110,111,116,32,99,111,110,115,116,114,97,105,110,101,100,0,47,115,101,116,50,55,47,49,0,0,0,0,0,0,0,0,101,109,112,116,121,0,0,0,47,98,114,98,103,57,47,54,0,0,0,0,0,0,0,0,47,115,101,116,50,54,47,54,0,0,0,0,0,0,0,0,47,115,101,116,50,54,47,53,0,0,0,0,0,0,0,0,47,115,101,116,50,54,47,52,0,0,0,0,0,0,0,0,60,72,84,77,76,62,10,0,47,115,101,116,50,54,47,51,0,0,0,0,0,0,0,0,47,115,101,116,50,54,47,50,0,0,0,0,0,0,0,0,47,115,101,116,50,54,47,49,0,0,0,0,0,0,0,0,115,112,114,105,110,103,103,114,101,101,110,0,0,0,0,0,102,105,120,101,100,32,99,101,108,108,32,115,105,122,101,32,119,105,116,104,32,117,110,115,112,101,99,105,102,105,101,100,32,119,105,100,116,104,32,111,114,32,104,101,105,103,104,116,10,0,0,0,0,0,0,0,102,105,103,58,102,105,103,0,106,112,101,58,118,114,109,108,0,0,0,0,0,0,0,0,47,115,101,116,50,53,47,53,0,0,0,0,0,0,0,0,47,115,101,116,50,53,47,52,0,0,0,0,0,0,0,0,47,108,97,110,103,117,97,103,101,108,101,118,101,108,32,119,104,101,114,101,32,123,112,111,112,32,108,97,110,103,117,97,103,101,108,101,118,101,108,125,123,49,125,32,105,102,101,108,115,101,0,0,0,0,0,0,47,115,101,116,50,53,47,51,0,0,0,0,0,0,0,0,47,115,101,116,50,53,47,50,0,0,0,0,0,0,0,0,101,103,114,97,118,101,0,0,47,98,114,98,103,57,47,53,0,0,0,0,0,0,0,0,47,115,101,116,50,53,47,49,0,0,0,0,0,0,0,0,47,115,101,116,50,52,47,52,0,0,0,0,0,0,0,0,47,115,101,116,50,52,47,51,0,0,0,0,0,0,0,0,101,99,105,114,99,0,0,0,32,99,111,111,114,100,111,114,105,103,105,110,61,34,48,44,48,34,32,99,111,111,114,100,115,105,122,101,61,34,37,100,44,37,100,34,32,62,0,0,47,115,101,116,50,52,47,50,0,0,0,0,0,0,0,0,47,115,101,116,50,52,47,49,0,0,0,0,0,0,0,0,47,115,101,116,50,51,47,51,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,115,110,111,119,0,0,0,0,37,32,109,97,107,101,32,39,60,60,39,32,97,110,100,32,39,62,62,39,32,115,97,102,101,32,111,110,32,80,83,32,76,101,118,101,108,32,49,32,100,101,118,105,99,101,115,0,47,115,101,116,50,51,47,50,0,0,0,0,0,0,0,0,47,115,101,116,50,51,47,49,0,0,0,0,0,0,0,0,47,115,101,116,49,57,47,57,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,47,115,101,116,49,57,47,56,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,47,98,114,98,103,57,47,52,0,0,0,0,0,0,0,0,47,115,101,116,49,57,47,55,0,0,0,0,0,0,0,0,102,117,99,104,115,105,97,0,47,115,101,116,49,57,47,54,0,0,0,0,0,0,0,0,47,115,101,116,49,57,47,53,0,0,0,0,0,0,0,0,32,119,105,100,116,104,58,32,37,100,112,116,59,32,104,101,105,103,104,116,58,32,37,100,112,116,34,0,0,0,0,0,47,115,101,116,49,57,47,52,0,0,0,0,0,0,0,0,47,115,101,116,49,57,47,51,0,0,0,0,0,0,0,0,103,114,97,112,104,32,108,97,98,101,108,0,0,0,0,0,37,115,58,37,100,58,32,97,109,98,105,103,117,111,117,115,32,34,37,115,34,32,115,112,108,105,116,115,32,105,110,116,111,32,116,119,111,32,110,97,109,101,115,58,32,34,37,115,34,32,97,110,100,32,34,37,115,34,10,0,0,0,0,0,47,115,101,116,49,57,47,50,0,0,0,0,0,0,0,0,115,108,97,116,101,103,114,101,121,0,0,0,0,0,0,0,47,112,100,102,109,97,114,107,32,119,104,101,114,101,32,123,112,111,112,125,32,123,117,115,101,114,100,105,99,116,32,47,112,100,102,109,97,114,107,32,47,99,108,101,97,114,116,111,109,97,114,107,32,108,111,97,100,32,112,117,116,125,32,105,102,101,108,115,101,0,0,0,47,115,101,116,49,57,47,49,0,0,0,0,0,0,0,0,102,111,110,116,110,97,109,101,58,32,117,110,97,98,108,101,32,116,111,32,114,101,115,111,108,118,101,32,34,37,115,34,10,0,0,0,0,0,0,0,115,97,109,101,116,97,105,108,0,0,0,0,0,0,0,0,47,115,101,116,49,56,47,56,0,0,0,0,0,0,0,0,47,115,101,116,49,56,47,55,0,0,0,0,0,0,0,0,47,115,101,116,49,56,47,54,0,0,0,0,0,0,0,0,101,97,99,117,116,101,0,0,47,98,114,98,103,57,47,51,0,0,0,0,0,0,0,0,47,115,101,116,49,56,47,53,0,0,0,0,0,0,0,0,47,115,101,116,49,56,47,52,0,0,0,0,0,0,0,0,47,115,101,116,49,56,47,51,0,0,0,0,0,0,0,0,32,60,118,58,103,114,111,117,112,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,32,0,0,0,0,47,115,101,116,49,56,47,50,0,0,0,0,0,0,0,0,111,98,108,105,113,117,101,0,47,115,101,116,49,56,47,49,0,0,0,0,0,0,0,0,47,115,101,116,49,55,47,55,0,0,0,0,0,0,0,0,115,108,97,116,101,103,114,97,121,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,101,110,116,105,116,121,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,37,32,109,97,107,101,32,115,117,114,101,32,112,100,102,109,97,114,107,32,105,115,32,104,97,114,109,108,101,115,115,32,102,111,114,32,80,83,45,105,110,116,101,114,112,114,101,116,101,114,115,32,111,116,104,101,114,32,116,104,97,110,32,68,105,115,116,105,108,108,101,114,0,0,0,0,0,0,0,0,47,115,101,116,49,55,47,54,0,0,0,0,0,0,0,0,103,114,97,112,104,0,0,0,47,115,101,116,49,55,47,53,0,0,0,0,0,0,0,0,38,35,51,57,59,0,0,0,47,115,101,116,49,55,47,52,0,0,0,0,0,0,0,0,35,37,48,50,120,37,48,50,120,37,48,50,120,37,48,50,120,0,0,0,0,0,0,0,32,91,0,0,0,0,0,0,47,115,101,116,49,55,47,51,0,0,0,0,0,0,0,0,100,105,118,105,100,101,0,0,47,98,114,98,103,57,47,50,0,0,0,0,0,0,0,0,108,104,101,97,100,0,0,0,47,115,101,116,49,55,47,50,0,0,0,0,0,0,0,0,47,115,101,116,49,55,47,49,0,0,0,0,0,0,0,0,97,103,117,115,101,114,103,114,97,112,104,0,0,0,0,0,114,111,117,116,101,46,99,0,47,115,101,116,49,54,47,54,0,0,0,0,0,0,0,0,120,108,112,0,0,0,0,0,60,120,109,108,58,110,97,109,101,115,112,97,99,101,32,110,115,61,34,117,114,110,58,115,99,104,101,109,97,115,45,109,105,99,114,111,115,111,102,116,45,99,111,109,58,118,109,108,34,32,112,114,101,102,105,120,61,34,118,34,32,47,62,10,0,0,0,0,0,0,0,0,47,115,101,116,49,54,47,53,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,125,32,98,105,110,100,32,100,101,102,10,0,0,0,0,0,47,115,101,116,49,54,47,52,0,0,0,0,0,0,0,0,47,115,101,116,49,54,47,51,0,0,0,0,0,0,0,0,115,108,97,116,101,98,108,117,101,0,0,0,0,0,0,0,37,32,47,97,114,114,111,119,119,105,100,116,104,32,53,32,100,101,102,0,0,0,0,0,47,115,101,116,49,54,47,50,0,0,0,0,0,0,0,0,98,114,111,119,110,0,0,0,76,97,121,111,117,116,32,116,121,112,101,58,32,34,37,115,34,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,46,32,85,115,101,32,111,110,101,32,111,102,58,37,115,10,0,0,0,0,0,0,0,0,47,115,101,116,49,54,47,49,0,0,0,0,0,0,0,0,47,115,101,116,49,53,47,53,0,0,0,0,0,0,0,0,47,115,101,116,49,53,47,52,0,0,0,0,0,0,0,0,100,105,97,109,115,0,0,0,47,98,114,98,103,57,47,49,0,0,0,0,0,0,0,0,99,108,117,115,116,101,114,32,110,97,109,101,100,32,37,115,32,110,111,116,32,102,111,117,110,100,10,0,0,0,0,0,47,115,101,116,49,53,47,51,0,0,0,0,0,0,0,0,47,115,101,116,49,53,47,50,0,0,0,0,0,0,0,0,47,115,101,116,49,53,47,49,0,0,0,0,0,0,0,0,60,47,83,84,89,76,69,62,10,0,0,0,0,0,0,0,47,115,101,116,49,52,47,52,0,0,0,0,0,0,0,0,47,115,101,116,49,52,47,51,0,0,0,0,0,0,0,0,47,115,101,116,49,52,47,50,0,0,0,0,0,0,0,0,115,107,121,98,108,117,101,0,34,0,0,0,0,0,0,0,37,32,47,97,114,114,111,119,108,101,110,103,116,104,32,49,48,32,100,101,102,0,0,0,110,115,108,105,109,105,116,49,0,0,0,0,0,0,0,0,47,115,101,116,49,52,47,49,0,0,0,0,0,0,0,0,101,108,108,105,112,115,101,0,32,32,32,32,32,32,32,32,123,32,49,32,105,110,100,101,120,32,47,70,73,68,32,110,101,32,123,32,100,101,102,32,125,123,32,112,111,112,32,112,111,112,32,125,32,105,102,101,108,115,101,0,0,0,0,0,116,114,105,97,110,103,117,108,97,116,105,111,110,32,102,97,105,108,101,100,0,0,0,0,47,115,101,116,49,51,47,51,0,0,0,0,0,0,0,0,104,101,105,103,104,116,0,0,47,115,101,116,49,51,47,50,0,0,0,0,0,0,0,0,47,115,101,116,49,51,47,49,0,0,0,0,0,0,0,0,100,101,108,116,97,0,0,0,47,98,114,98,103,56,47,56,0,0,0,0,0,0,0,0,47,114,101,100,115,57,47,57,0,0,0,0,0,0,0,0,47,114,101,100,115,57,47,56,0,0,0,0,0,0,0,0,47,114,101,100,115,57,47,55,0,0,0,0,0,0,0,0,118,92,58,42,32,123,32,98,101,104,97,118,105,111,114,58,32,117,114,108,40,35,100,101,102,97,117,108,116,35,86,77,76,41,59,100,105,115,112,108,97,121,58,105,110,108,105,110,101,45,98,108,111,99,107,125,10,0,0,0,0,0,0,0,47,114,101,100,115,57,47,54,0,0,0,0,0,0,0,0,47,114,101,100,115,57,47,53,0,0,0,0,0,0,0,0,47,114,101,100,115,57,47,52,0,0,0,0,0,0,0,0,115,105,108,118,101,114,0,0,49,32,115,101,116,109,105,116,101,114,108,105,109,105,116,0,47,114,101,100,115,57,47,51,0,0,0,0,0,0,0,0,105,110,32,108,97,98,101,108,32,111,102,32,110,111,100,101,32,37,115,10,0,0,0,0,69,68,95,108,97,98,101,108,40,102,101,41,0,0,0,0,73,32,0,0,0,0,0,0,100,111,116,0,0,0,0,0,47,114,101,100,115,57,47,50,0,0,0,0,0,0,0,0,47,114,101,100,115,57,47,49,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,56,0,0,0,0,0,0,0,0,100,101,103,0,0,0,0,0,99,114,111,119,0,0,0,0,47,98,114,98,103,56,47,55,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,55,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,54,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,53,0,0,0,0,0,0,0,0,60,83,84,89,76,69,62,10,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,52,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,51,0,0,0,0,0,0,0,0,47,114,101,100,115,56,47,50,0,0,0,0,0,0,0,0,115,105,101,110,110,97,0,0,109,101,114,103,101,50,58,32,103,114,97,112,104,32,37,115,44,32,114,97,110,107,32,37,100,32,104,97,115,32,111,110,108,121,32,37,100,32,60,32,37,100,32,110,111,100,101,115,10,0,0,0,0,0,0,0,49,52,32,100,101,102,97,117,108,116,45,102,111,110,116,45,102,97,109,105,108,121,32,115,101,116,95,102,111,110,116,0,47,114,101,100,115,56,47,49,0,0,0,0,0,0,0,0,99,108,97,115,115,50,46,99,0,0,0,0,0,0,0,0,47,114,101,100,115,55,47,55,0,0,0,0,0,0,0,0,47,114,101,100,115,55,47,54,0,0,0,0,0,0,0,0,47,114,101,100,115,55,47,53,0,0,0,0,0,0,0,0,100,97,114,114,0,0,0,0,47,98,114,98,103,56,47,54,0,0,0,0,0,0,0,0,47,114,101,100,115,55,47,52,0,0,0,0,0,0,0,0,47,114,101,100,115,55,47,51,0,0,0,0,0,0,0,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,109,97,112,46,99,0,0,0,0,0,71,115,116,97,99,107,32,111,118,101,114,102,108,111,119,32,105,110,32,103,114,97,112,104,32,112,97,114,115,101,114,10,0,0,0,0,0,0,0,0,47,114,101,100,115,55,47,50,0,0,0,0,0,0,0,0,32,119,105,100,116,104,58,32,37,100,112,116,59,32,104,101,105,103,104,116,58,32,37,100,112,116,34,62,10,0,0,0,47,114,101,100,115,55,47,49,0,0,0,0,0,0,0,0,47,114,101,100,115,54,47,54,0,0,0,0,0,0,0,0,47,114,101,100,115,54,47,53,0,0,0,0,0,0,0,0,115,101,97,115,104,101,108,108,0,0,0,0,0,0,0,0,37,37,66,101,103,105,110,83,101,116,117,112,0,0,0,0,47,114,101,100,115,54,47,52,0,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,104,97,114,115,101,116,32,34,37,115,34,32,45,32,97,115,115,117,109,105,110,103,32,117,116,102,45,56,10,0,0,0,0,0,0,47,114,101,100,115,54,47,51,0,0,0,0,0,0,0,0,47,97,99,99,101,110,116,53,47,52,0,0,0,0,0,0,47,114,101,100,115,54,47,50,0,0,0,0,0,0,0,0,47,114,101,100,115,54,47,49,0,0,0,0,0,0,0,0,100,97,103,103,101,114,0,0,47,98,114,98,103,56,47,53,0,0,0,0,0,0,0,0,47,114,101,100,115,53,47,53,0,0,0,0,0,0,0,0])
.concat([47,114,101,100,115,53,47,52,0,0,0,0,0,0,0,0,47,114,101,100,115,53,47,51,0,0,0,0,0,0,0,0,60,68,73,86,32,105,100,61,39,95,86,77,76,49,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,32,100,105,115,112,108,97,121,58,105,110,108,105,110,101,59,32,118,105,115,105,98,105,108,105,116,121,58,104,105,100,100,101,110,0,0,0,0,47,114,101,100,115,53,47,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,114,101,100,115,53,47,49,0,0,0,0,0,0,0,0,47,114,101,100,115,52,47,52,0,0,0,0,0,0,0,0,115,101,97,103,114,101,101,110,0,0,0,0,0,0,0,0,99,32,0,0,0,0,0,0,47,114,101,100,115,52,47,51,0,0,0,0,0,0,0,0,117,116,102,56,0,0,0,0,101,108,108,105,112,115,101,0,47,114,101,100,115,52,47,50,0,0,0,0,0,0,0,0,37,37,69,110,100,80,114,111,108,111,103,0,0,0,0,0,47,114,101,100,115,52,47,49,0,0,0,0,0,0,0,0,99,111,110,115,116,114,97,105,110,101,100,0,0,0,0,0,47,114,101,100,115,51,47,51,0,0,0,0,0,0,0,0,100,65,114,114,0,0,0,0,47,98,114,98,103,56,47,52,0,0,0,0,0,0,0,0,47,114,101,100,115,51,47,50,0,0,0,0,0,0,0,0,47,114,101,100,115,51,47,49,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,57,0,0,0,0,0,0,32,0,0,0,0,0,0,0,60,66,79,68,89,32,111,110,108,111,97,100,61,39,98,114,111,119,115,101,114,99,104,101,99,107,40,41,59,39,62,10,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,56,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,55,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,54,0,0,0,0,0,0,115,97,110,100,121,98,114,111,119,110,0,0,0,0,0,0,37,37,69,110,100,82,101,115,111,117,114,99,101,0,0,0,99,101,108,108,32,115,105,122,101,32,116,111,111,32,115,109,97,108,108,32,102,111,114,32,99,111,110,116,101,110,116,10,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,53,0,0,0,0,0,0,106,112,101,103,58,118,114,109,108,0,0,0,0,0,0,0,98,105,103,53,0,0,0,0,47,114,100,121,108,103,110,57,47,52,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,51,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,50,0,0,0,0,0,0,99,117,114,114,101,110,0,0,47,98,114,98,103,56,47,51,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,57,47,49,0,0,0,0,0,0,47,114,100,121,108,103,110,56,47,56,0,0,0,0,0,0,47,114,100,121,108,103,110,56,47,55,0,0,0,0,0,0,60,47,72,69,65,68,62,0,47,114,100,121,108,103,110,56,47,54,0,0,0,0,0,0,47,114,100,121,108,103,110,56,47,53,0,0,0,0,0,0,47,114,100,121,108,103,110,56,47,52,0,0,0,0,0,0,66,0,0,0,0,0,0,0,115,97,108,109,111,110,0,0,47,99,117,114,108,97,121,101,114,32,48,32,100,101,102,0,47,114,100,121,108,103,110,56,47,51,0,0,0,0,0,0,98,105,103,45,53,0,0,0,47,114,100,121,108,103,110,56,47,50,0,0,0,0,0,0,47,114,100,121,108,103,110,56,47,49,0,0,0,0,0,0,92,78,0,0,0,0,0,0,47,114,100,121,108,103,110,55,47,55,0,0,0,0,0,0,99,117,112,0,0,0,0,0,115,104,97,112,101,102,105,108,101,32,110,111,116,32,115,101,116,32,111,114,32,110,111,116,32,102,111,117,110,100,32,102,111,114,32,101,112,115,102,32,110,111,100,101,32,37,115,10,0,0,0,0,0,0,0,0,32,37,100,32,37,100,0,0,47,98,114,98,103,56,47,50,0,0,0,0,0,0,0,0,75,80,95,83,117,98,116,114,97,99,116,0,0,0,0,0,47,114,100,121,108,103,110,55,47,54,0,0,0,0,0,0,98,108,117,101,0,0,0,0,47,114,100,121,108,103,110,55,47,53,0,0,0,0,0,0,47,114,100,121,108,103,110,55,47,52,0,0,0,0,0,0,32,32,32,60,47,83,67,82,73,80,84,62,10,0,0,0,47,114,100,121,108,103,110,55,47,51,0,0,0,0,0,0,47,114,100,121,108,103,110,55,47,50,0,0,0,0,0,0,103,114,97,112,104,0,0,0,47,114,100,121,108,103,110,55,47,49,0,0,0,0,0,0,115,97,100,100,108,101,98,114,111,119,110,0,0,0,0,0,32,60,60,60,32,0,0,0,9,123,105,110,118,105,115,125,32,105,102,0,0,0,0,0,47,114,100,121,108,103,110,54,47,54,0,0,0,0,0,0,99,111,109,112,111,117,110,100,0,0,0,0,0,0,0,0,59,10,0,0,0,0,0,0,73,83,79,45,73,82,45,49,48,48,0,0,0,0,0,0,47,114,100,121,108,103,110,54,47,53,0,0,0,0,0,0,115,97,109,101,104,101,97,100,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,54,47,52,0,0,0,0,0,0,47,114,100,121,108,103,110,54,47,51,0,0,0,0,0,0,99,114,97,114,114,0,0,0,47,98,114,98,103,56,47,49,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,54,47,50,0,0,0,0,0,0,47,114,100,121,108,103,110,54,47,49,0,0,0,0,0,0,47,114,100,121,108,103,110,53,47,53,0,0,0,0,0,0,47,114,100,121,108,103,110,53,47,52,0,0,0,0,0,0,32,32,32,125,10,0,0,0,65,118,97,110,116,71,97,114,100,101,45,66,111,111,107,79,98,108,105,113,117,101,0,0,47,114,100,121,108,103,110,53,47,51,0,0,0,0,0,0,47,114,100,121,108,103,110,53,47,50,0,0,0,0,0,0,114,111,121,97,108,98,108,117,101,0,0,0,0,0,0,0,117,110,100,101,102,105,110,101,100,32,101,110,116,105,116,121,0,0,0,0,0,0,0,0,9,111,114,0,0,0,0,0,47,114,100,121,108,103,110,53,47,49,0,0,0,0,0,0,73,83,79,56,56,53,57,45,49,0,0,0,0,0,0,0,47,114,100,121,108,103,110,52,47,52,0,0,0,0,0,0,105,100,0,0,0,0,0,0,38,113,117,111,116,59,0,0,47,114,100,121,108,103,110,52,47,51,0,0,0,0,0,0,37,100,32,37,100,32,0,0,47,114,100,121,108,103,110,52,47,50,0,0,0,0,0,0,99,111,112,121,0,0,0,0,69,68,95,116,111,95,118,105,114,116,40,101,41,32,61,61,32,78,85,76,76,0,0,0,47,98,114,98,103,55,47,55,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,52,47,49,0,0,0,0,0,0,47,114,100,121,108,103,110,51,47,51,0,0,0,0,0,0,123,10,0,0,0,0,0,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,112,110,108,112,115,0,0,0,0,47,114,100,121,108,103,110,51,47,50,0,0,0,0,0,0,104,101,105,103,104,116,0,0,47,114,100,121,108,103,110,51,47,49,0,0,0,0,0,0,32,32,32,32,32,125,10,0,37,37,69,110,100,68,111,99,117,109,101,110,116,10,0,0,47,114,100,121,108,103,110,49,49,47,57,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,56,0,0,0,0,0,114,111,115,121,98,114,111,119,110,0,0,0,0,0,0,0,9,99,117,114,108,97,121,101,114,32,109,121,117,112,112,101,114,32,103,116,0,0,0,0,47,114,100,121,108,103,110,49,49,47,55,0,0,0,0,0,98,108,117,101,118,105,111,108,101,116,0,0,0,0,0,0,73,83,79,95,56,56,53,57,45,49,0,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,54,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,53,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,52,0,0,0,0,0,99,111,110,103,0,0,0,0,47,98,114,98,103,55,47,54,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,51,0,0,0,0,0,40,37,46,53,103,44,37,46,53,103,41,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,50,0,0,0,0,0,47,114,100,121,108,103,110,49,49,47,49,49,0,0,0,0,47,114,100,121,108,103,110,49,49,47,49,48,0,0,0,0,32,32,32,32,32,125,101,108,115,101,123,10,0,0,0,0,47,114,100,121,108,103,110,49,49,47,49,0,0,0,0,0,115,118,103,58,115,118,103,0,114,97,110,107,0,0,0,0,47,114,100,121,108,103,110,49,48,47,57,0,0,0,0,0,114,101,100,0,0,0,0,0,112,116,0,0,0,0,0,0,9,99,117,114,108,97,121,101,114,32,109,121,108,111,119,101,114,32,108,116,0,0,0,0,47,114,100,121,108,103,110,49,48,47,56,0,0,0,0,0,99,111,110,99,46,99,0,0,108,49,0,0,0,0,0,0,103,118,117,115,101,114,115,104,97,112,101,46,99,0,0,0,32,32,32,32,32,32,32,32,100,117,112,32,100,117,112,32,102,105,110,100,102,111,110,116,32,100,117,112,32,108,101,110,103,116,104,32,100,105,99,116,32,98,101,103,105,110,0,0,99,108,117,98,115,0,0,0,47,114,100,121,108,103,110,49,48,47,55,0,0,0,0,0,119,105,100,116,104,0,0,0,47,114,100,121,108,103,110,49,48,47,54,0,0,0,0,0,47,114,100,121,108,103,110,49,48,47,53,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,112,97,114,115,101,32,34,95,100,114,97,119,95,34,32,97,116,116,114,105,98,117,116,101,32,105,110,32,103,114,97,112,104,32,37,115,10,0,47,98,114,98,103,55,47,53,0,0,0,0,0,0,0,0,47,114,100,121,108,103,110,49,48,47,52,0,0,0,0,0,47,114,100,121,108,103,110,49,48,47,51,0,0,0,0,0,47,114,100,121,108,103,110,49,48,47,50,0,0,0,0,0,47,114,100,121,108,103,110,49,48,47,49,48,0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,105,116,101,109,46,115,116,121,108,101,46,118,105,115,105,98,105,108,105,116,121,61,39,104,105,100,100,101,110,39,59,10,0,0,0,0,0,47,114,100,121,108,103,110,49,48,47,49,0,0,0,0,0,47,114,100,121,108,98,117,57,47,57,0,0,0,0,0,0,112,117,114,112,108,101,0,0,9,47,109,121,108,111,119,101,114,32,101,120,99,104,32,100,101,102,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,56,0,0,0,0,0,0,108,97,116,105,110,49,0,0,67,111,117,108,100,32,110,111,116,32,111,112,101,110,32,34,37,115,34,32,102,111,114,32,119,114,105,116,105,110,103,32,58,32,37,115,10,0,0,0,47,114,100,121,108,98,117,57,47,55,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,54,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,53,0,0,0,0,0,0,99,105,114,99,0,0,0,0,114,0,0,0,0,0,0,0,47,98,114,98,103,55,47,52,0,0,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,52,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,51,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,50,0,0,0,0,0,0,47,114,100,121,108,98,117,57,47,49,0,0,0,0,0,0,32,32,32,32,32,32,32,32,32,105,116,101,109,32,61,32,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,86,77,76,110,111,91,120,93,41,59,10,0,0,0,0,0,47,114,100,121,108,98,117,56,47,56,0,0,0,0,0,0,47,114,100,121,108,98,117,56,47,55,0,0,0,0,0,0,112,111,119,100,101,114,98,108,117,101,0,0,0,0,0,0,9,47,109,121,117,112,112,101,114,32,101,120,99,104,32,100,101,102,0,0,0,0,0,0,47,114,100,121,108,98,117,56,47,54,0,0,0,0,0,0,108,97,116,105,110,45,49,0,109,105,110,99,114,111,115,115,32,37,115,58,32,37,100,32,99,114,111,115,115,105,110,103,115,44,32,37,46,50,102,32,115,101,99,115,46,10,0,0,47,114,100,121,108,98,117,56,47,53,0,0,0,0,0,0,47,114,100,121,108,98,117,56,47,52,0,0,0,0,0,0,47,114,100,121,108,98,117,56,47,51,0,0,0,0,0,0,99,104,105,0,0,0,0,0,47,98,114,98,103,55,47,51,0,0,0,0,0,0,0,0,47,114,100,121,108,98,117,56,47,50,0,0,0,0,0,0,47,114,100,121,108,98,117,56,47,49,0,0,0,0,0,0,47,114,100,121,108,98,117,55,47,55,0,0,0,0,0,0,10,0,0,0,0,0,0,0,47,114,100,121,108,98,117,55,47,54,0,0,0,0,0,0,32,32,32,32,32,32,32,102,111,114,32,40,120,32,105,110,32,86,77,76,110,111,41,123,10,0,0,0,0,0,0,0,47,114,100,121,108,98,117,55,47,53,0,0,0,0,0,0,47,114,100,121,108,98,117,55,47,52,0,0,0,0,0,0,112,108,117,109,0,0,0,0,47,111,110,108,97,121,101,114,115,32,123,0,0,0,0,0,47,114,100,121,108,98,117,55,47,51,0,0,0,0,0,0,117,116,102,45,56,0,0,0,47,114,100,121,108,98,117,55,47,50,0,0,0,0,0,0,47,97,99,99,101,110,116,53,47,51,0,0,0,0,0,0,47,114,100,121,108,98,117,55,47,49,0,0,0,0,0,0,47,114,100,121,108,98,117,54,47,54,0,0,0,0,0,0,99,101,110,116,0,0,0,0,47,98,114,98,103,55,47,50,0,0,0,0,0,0,0,0,47,114,100,121,108,98,117,54,47,53,0,0,0,0,0,0,47,114,100,121,108,98,117,54,47,52,0,0,0,0,0,0,47,114,100,121,108,98,117,54,47,51,0,0,0,0,0,0,47,114,100,121,108,98,117,54,47,50,0,0,0,0,0,0,32,32,32,32,32,32,32,125,10,0,0,0,0,0,0,0,47,114,100,121,108,98,117,54,47,49,0,0,0,0,0,0,47,114,100,121,108,98,117,53,47,53,0,0,0,0,0,0,112,105,110,107,0,0,0,0,47,111,110,108,97,121,101,114,32,123,32,99,117,114,108,97,121,101,114,32,110,101,32,123,105,110,118,105,115,125,32,105,102,32,125,32,100,101,102,0,47,114,100,121,108,98,117,53,47,52,0,0,0,0,0,0,99,104,97,114,115,101,116,0,112,111,108,121,103,111,110,0,47,114,100,121,108,98,117,53,47,51,0,0,0,0,0,0,47,114,100,121,108,98,117,53,47,50,0,0,0,0,0,0,115,116,97,114,116,32,112,111,114,116,58,32,40,37,46,53,103,44,32,37,46,53,103,41,44,32,116,97,110,103,101,110,116,32,97,110,103,108,101,58,32,37,46,53,103,44,32,37,115,10,0,0,0,0,0,0,47,114,100,121,108,98,117,53,47,49,0,0,0,0,0,0,99,101,100,105,108,0,0,0,47,98,114,98,103,55,47,49,0,0,0,0,0,0,0,0,47,114,100,121,108,98,117,52,47,52,0,0,0,0,0,0,47,114,100,121,108,98,117,52,47,51,0,0,0,0,0,0,47,114,100,121,108,98,117,52,47,50,0,0,0,0,0,0,47,114,100,121,108,98,117,52,47,49,0,0,0,0,0,0,32,32,32,32,32,32,32,32,32,125,10,0,0,0,0,0,47,114,100,121,108,98,117,51,47,51,0,0,0,0,0,0,47,114,100,121,108,98,117,51,47,50,0,0,0,0,0,0,112,101,114,117,0,0,0,0,78,111,32,108,111,97,100,105,109,97,103,101,32,112,108,117,103,105,110,32,102,111,114,32,34,37,115,34,10,0,0,0,9,47,103,114,97,112,104,99,111,108,111,114,32,123,110,111,112,99,111,108,111,114,125,32,100,101,102,0,0,0,0,0,102,105,120,101,100,32,116,97,98,108,101,32,115,105,122,101,32,119,105,116,104,32,117,110,115,112,101,99,105,102,105,101,100,32,119,105,100,116,104,32,111,114,32,104,101,105,103,104,116,10,0,0,0,0,0,0,47,114,100,121,108,98,117,51,47,49,0,0,0,0,0,0,103,105,102,58,118,114,109,108,0,0,0,0,0,0,0,0,102,105,108,108,0,0,0,0,47,114,100,121,108,98,117,49,49,47,57,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,56,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,55,0,0,0,0,0,99,99,101,100,105,108,0,0,47,98,114,98,103,54,47,54,0,0,0,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,54,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,53,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,52,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,51,0,0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,105,116,101,109,46,115,116,121,108,101,46,118,105,115,105,98,105,108,105,116,121,61,39,118,105,115,105,98,108,101,39,59,10,0,0,0,0,47,114,100,121,108,98,117,49,49,47,50,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,49,49,0,0,0,0,70,79,78,84,0,0,0,0,115,97,109,101,116,97,105,108,0,0,0,0,0,0,0,0,112,101,97,99,104,112,117,102,102,0,0,0,0,0,0,0,9,47,101,100,103,101,99,111,108,111,114,32,123,110,111,112,99,111,108,111,114,125,32,100,101,102,0,0,0,0,0,0,112,111,115,105,116,105,111,110,46,99,0,0,0,0,0,0,47,114,100,121,108,98,117,49,49,47,49,48,0,0,0,0,101,120,112,97,110,100,0,0,50,46,50,56,46,48,0,0,47,114,100,121,108,98,117,49,49,47,49,0,0,0,0,0,47,114,100,121,108,98,117,49,48,47,57,0,0,0,0,0,47,114,100,121,108,98,117,49,48,47,56,0,0,0,0,0,99,97,112,0,0,0,0,0,47,98,114,98,103,54,47,53,0,0,0,0,0,0,0,0,47,114,100,121,108,98,117,49,48,47,55,0,0,0,0,0,98,108,97,99,107,0,0,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,0,0,0,0,0,0,109,105,110,117,115,0,0,0,47,114,100,121,108,98,117,49,48,47,54,0,0,0,0,0,47,114,100,121,108,98,117,49,48,47,53,0,0,0,0,0,47,114,100,121,108,98,117,49,48,47,52,0,0,0,0,0,32,32,32,32,32,32,32,32,32,105,102,32,40,105,116,101,109,41,32,123,10,0,0,0,47,114,100,121,108,98,117,49,48,47,51,0,0,0,0,0,101,100,103,101,0,0,0,0,47,114,100,121,108,98,117,49,48,47,50,0,0,0,0,0,112,97,112,97,121,97,119,104,105,112,0,0,0,0,0,0,9,47,110,111,100,101,99,111,108,111,114,32,123,110,111,112,99,111,108,111,114,125,32,100,101,102,0,0,0,0,0,0,47,114,100,121,108,98,117,49,48,47,49,48,0,0,0,0,108,116,97,105,108,0,0,0,108,105,98,97,103,32,101,114,114,111,114,32,45,45,32,97,103,105,110,105,116,40,41,32,119,97,115,32,110,111,116,32,99,97,108,108,101,100,10,0,99,111,109,112,114,101,115,115,0,0,0,0,0,0,0,0,32,62,62,62,32,0,0,0,47,114,100,121,108,98,117,49,48,47,49,0,0,0,0,0,47,114,100,112,117,57,47,57,0,0,0,0,0,0,0,0,116,97,105,108,112,111,114,116,0,0,0,0,0,0,0,0,47,114,100,112,117,57,47,56,0,0,0,0,0,0,0,0,98,117,108,108,0,0,0,0,47,98,114,98,103,54,47,52,0,0,0,0,0,0,0,0,47,114,100,112,117,57,47,55,0,0,0,0,0,0,0,0,47,114,100,112,117,57,47,54,0,0,0,0,0,0,0,0,47,114,100,112,117,57,47,53,0,0,0,0,0,0,0,0,47,114,100,112,117,57,47,52,0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,32,105,116,101,109,32,61,32,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,86,77,76,121,101,115,91,120,93,41,59,10,0,0,0,0,115,97,110,115,45,83,101,114,105,102,0,0,0,0,0,0,47,114,100,112,117,57,47,51,0,0,0,0,0,0,0,0,47,114,100,112,117,57,47,50,0,0,0,0,0,0,0,0,112,97,108,101,118,105,111,108,101,116,114,101,100,0,0,0,105,108,108,101,103,97,108,32,112,97,114,97,109,101,116,101,114,32,101,110,116,105,116,121,32,114,101,102,101,114,101,110,99,101,0,0,0,0,0,0,9,97,108,111,97,100,32,112,111,112,32,115,101,116,104,115,98,99,111,108,111,114,0,0,47,114,100,112,117,57,47,49,0,0,0,0,0,0,0,0,97,117,116,111,0,0,0,0,99,108,117,115,116,101,114,0,98,114,118,98,97,114,0,0,47,114,100,112,117,56,47,56,0,0,0,0,0,0,0,0,38,35,49,54,48,59,0,0,47,114,100,112,117,56,47,55,0,0,0,0,0,0,0,0,111,98,106,0,0,0,0,0,32,37,100,32,0,0,0,0,47,114,100,112,117,56,47,54,0,0,0,0,0,0,0,0,117,116,105,108,115,46,99,0,48,0,0,0,0,0,0,0,47,98,114,98,103,54,47,51,0,0,0,0,0,0,0,0,47,114,100,112,117,56,47,53,0,0,0,0,0,0,0,0,47,114,100,112,117,56,47,52,0,0,0,0,0,0,0,0,115,117,98,103,114,97,112,104,32,0,0,0,0,0,0,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,112,110,108,115,0,0,0,0,0,47,114,100,112,117,56,47,51,0,0,0,0,0,0,0,0,119,105,100,116,104,0,0,0,47,114,100,112,117,56,47,50,0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,102,111,114,32,40,120,32,105,110,32,86,77,76,121,101,115,41,123,10,0,0,0,0,0,0,110,111,110,97,109,101,46,103,118,0,0,0,0,0,0,0,37,37,66,101,103,105,110,68,111,99,117,109,101,110,116,58,10,0,0,0,0,0,0,0,47,114,100,112,117,56,47,49,0,0,0,0,0,0,0,0,47,114,100,112,117,55,47,55,0,0,0,0,0,0,0,0,112,97,108,101,116,117,114,113,117,111,105,115,101,0,0,0,37,37,66,101,103,105,110,80,114,111,108,111,103,0,0,0,47,114,100,112,117,55,47,54,0,0,0,0,0,0,0,0,114,97,116,105,111,0,0,0,98,108,117,101,0,0,0,0,117,115,0,0,0,0,0,0,98,101,116,97,0,0,0,0,47,114,100,112,117,55,47,53,0,0,0,0,0,0,0,0,9,108,97,121,101,114,99,111,108,111,114,115,101,113,32,99,117,114,108,97,121,101,114,32,49,32,115,117,98,32,108,97,121,101,114,108,101,110,32,109,111,100,32,103,101,116,0,0,47,114,100,112,117,55,47,52,0,0,0,0,0,0,0,0,47,114,100,112,117,55,47,51,0,0,0,0,0,0,0,0,102,111,110,116,99,111,108,111,114,0,0,0,0,0,0,0,47,98,114,98,103,54,47,50,0,0,0,0,0,0,0,0,47,114,100,112,117,55,47,50,0,0,0,0,0,0,0,0,47,114,100,112,117,55,47,49,0,0,0,0,0,0,0,0,47,114,100,112,117,54,47,54,0,0,0,0,0,0,0,0,114,97,110,107,40,103,44,32,50,44,32,110,115,105,116,101,114,50,40,103,41,41,32,61,61,32,48,0,0,0,0,0,47,114,100,112,117,54,47,53,0,0,0,0,0,0,0,0,32,32,32,32,32,32,105,102,32,40,105,101,118,101,114,115,62,61,53,41,123,10,0,0,47,114,100,112,117,54,47,52,0,0,0,0,0,0,0,0,115,105,110,107,0,0,0,0,47,114,100,112,117,54,47,51,0,0,0,0,0,0,0,0,47,68,111,116,68,105,99,116,32,50,48,48,32,100,105,99,116,32,100,101,102,0,0,0,112,97,108,101,103,114,101,101,110,0,0,0,0,0,0,0,112,99,0,0,0,0,0,0,47,115,101,116,108,97,121,101,114,32,123,47,109,97,120,108,97,121,101,114,32,101,120,99,104,32,100,101,102,32,47,99,117,114,108,97,121,101,114,32,101,120,99,104,32,100,101,102,0,0,0,0,0,0,0,0,47,114,100,112,117,54,47,50,0,0,0,0,0,0,0,0,37,108,102,37,99,0,0,0,121,101,115,0,0,0,0,0,47,115,116,97,114,110,101,116,73,83,79,32,123,0,0,0,98,100,113,117,111,0,0,0,47,114,100,112,117,54,47,49,0,0,0,0,0,0,0,0,47,114,100,112,117,53,47,53,0,0,0,0,0,0,0,0,103,118,114,101,110,100,101,114,95,115,101,116,95,115,116,121,108,101,58,32,117,110,115,117,112,112,111,114,116,101,100,32,115,116,121,108,101,32,37,115,32,45,32,105,103,110,111,114,105,110,103,10,0,0,0,0,47,114,100,112,117,53,47,52,0,0,0,0,0,0,0,0,108,97,121,101,114,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,37,115,32,111,117,116,112,117,116,10,0,0,0,0,0,0,47,98,114,98,103,54,47,49,0,0,0,0,0,0,0,0,47,114,100,112,117,53,47,51,0,0,0,0,0,0,0,0,47,114,100,112,117,53,47,50,0,0,0,0,0,0,0,0,47,114,100,112,117,53,47,49,0,0,0,0,0,0,0,0,47,114,100,112,117,52,47,52,0,0,0,0,0,0,0,0,32,32,32,32,32,32,125,10,0,0,0,0,0,0,0,0,47,114,100,112,117,52,47,51,0,0,0,0,0,0,0,0,47,114,100,112,117,52,47,50,0,0,0,0,0,0,0,0,112,97,108,101,103,111,108,100,101,110,114,111,100,0,0,0,47,108,97,121,101,114,108,101,110,32,108,97,121,101,114,99,111,108,111,114,115,101,113,32,108,101,110,103,116,104,32,100,101,102,0,0,0,0,0,0,47,114,100,112,117,52,47,49,0,0,0,0,0,0,0,0,37,108,102,44,37,108,102,37,99,0,0,0,0,0,0,0,97,117,109,108,0,0,0,0,47,114,100,112,117,51,47,51,0,0,0,0,0,0,0,0,47,114,100,112,117,51,47,50,0,0,0,0,0,0,0,0,47,114,100,112,117,51,47,49,0,0,0,0,0,0,0,0,73,109,97,103,101,115,32,117,110,115,117,112,112,111,114,116,101,100,32,105,110,32,34,98,97,99,107,103,114,111,117,110,100,34,32,97,116,116,114,105,98,117,116,101,10,0,0,0,111,0,0,0,0,0,0,0,47,98,114,98,103,53,47,53,0,0,0,0,0,0,0,0,47,114,100,103,121,57,47,57,0,0,0,0,0,0,0,0,47,114,100,103,121,57,47,56,0,0,0,0,0,0,0,0,47,114,100,103,121,57,47,55,0,0,0,0,0,0,0,0,47,114,100,103,121,57,47,54,0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32,32,105,101,118,101,114,115,61,32,112,97,114,115,101,73,110,116,32,40,117,97,46,115,117,98,115,116,114,105,110,103,32,40,109,115,105,101,43,53,44,32,117,97,46,105,110,100,101,120,79,102,32,40,39,46,39,44,32,109,115,105,101,32,41,41,41,10,0,0,0,0,0,47,114,100,103,121,57,47,53,0,0,0,0,0,0,0,0,47,114,100,103,121,57,47,52,0,0,0,0,0,0,0,0,111,114,99,104,105,100,0,0,100,101,102,0,0,0,0,0,47,114,100,103,121,57,47,51,0,0,0,0,0,0,0,0,108,97,98,101,108,106,117,115,116,0,0,0,0,0,0,0,97,116,105,108,100,101,0,0,47,114,100,103,121,57,47,50,0,0,0,0,0,0,0,0,109,99,108,105,109,105,116,0,47,114,100,103,121,57,47,49,0,0,0,0,0,0,0,0,47,114,100,103,121,56,47,56,0,0,0,0,0,0,0,0,116,114,97,110,115,112,97,114,101,110,116,0,0,0,0,0,47,98,114,98,103,53,47,52,0,0,0,0,0,0,0,0,47,114,100,103,121,56,47,55,0,0,0,0,0,0,0,0,47,114,100,103,121,56,47,54,0,0,0,0,0,0,0,0,47,114,100,103,121,56,47,53,0,0,0,0,0,0,0,0,47,114,100,103,121,56,47,52,0,0,0,0,0,0,0,0,32,32,32,32,32,32,105,102,32,40,32,109,115,105,101,32,62,32,48,32,41,123,32,32,32,32,32,32,47,47,32,73,102,32,73,110,116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,44,32,114,101,116,117,114,110,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,10,0,0,0,0,0,32,37,100,44,37,100,0,0,47,114,100,103,121,56,47,51,0,0,0,0,0,0,0,0,47,114,100,103,121,56,47,50,0,0,0,0,0,0,0,0,111,114,97,110,103,101,114,101,100,0,0,0,0,0,0,0,9,93,0,0,0,0,0,0,47,114,100,103,121,56,47,49,0,0,0,0,0,0,0,0,108,97,98,101,108,108,111,99,0,0,0,0,0,0,0,0,97,115,121,109,112,0,0,0,47,114,100,103,121,55,47,55,0,0,0,0,0,0,0,0,47,97,99,99,101,110,116,53,47,50,0,0,0,0,0,0,47,114,100,103,121,55,47,54,0,0,0,0,0,0,0,0,47,114,100,103,121,55,47,53,0,0,0,0,0,0,0,0,119,104,105,116,101,0,0,0,47,98,114,98,103,53,47,51,0,0,0,0,0,0,0,0,47,114,100,103,121,55,47,52,0,0,0,0,0,0,0,0,47,114,100,103,121,55,47,51,0,0,0,0,0,0,0,0,47,114,100,103,121,55,47,50,0,0,0,0,0,0,0,0,47,114,100,103,121,55,47,49,0,0,0,0,0,0,0,0,32,32,32,32,32,32,118,97,114,32,86,77,76,110,111,61,110,101,119,32,65,114,114,97,121,40,39,95,110,111,116,86,77,76,49,95,39,44,39,95,110,111,116,86,77,76,50,95,39,41,59,10,0,0,0,0,47,114,100,103,121,54,47,54,0,0,0,0,0,0,0,0,47,114,100,103,121,54,47,53,0,0,0,0,0,0,0,0,111,114,97,110,103,101,0,0,9,9,91,46,56,32,46,56,32,46,56,93,0,0,0,0,47,114,100,103,121,54,47,52,0,0,0,0,0,0,0,0,98,108,97,99,107,0,0,0,97,114,105,110,103,0,0,0,47,114,100,103,121,54,47,51,0,0,0,0,0,0,0,0,98,111,120,0,0,0,0,0,47,114,100,103,121,54,47,50,0,0,0,0,0,0,0,0,37,100,32,40,37,46,53,103,44,32,37,46,53,103,41,44,32,40,37,46,53,103,44,32,37,46,53,103,41,10,0,0,47,114,100,103,121,54,47,49,0,0,0,0,0,0,0,0,108,97,121,101,114,0,0,0,47,98,114,98,103,53,47,50,0,0,0,0,0,0,0,0,47,114,100,103,121,53,47,53,0,0,0,0,0,0,0,0,47,114,100,103,121,53,47,52,0,0,0,0,0,0,0,0,47,114,100,103,121,53,47,51,0,0,0,0,0,0,0,0,47,114,100,103,121,53,47,50,0,0,0,0,0,0,0,0,32,32,32,32,32,32,118,97,114,32,86,77,76,121,101,115,61,110,101,119,32,65,114,114,97,121,40,39,95,86,77,76,49,95,39,44,39,95,86,77,76,50,95,39,41,59,10,0,47,114,100,103,121,53,47,49,0,0,0,0,0,0,0,0,47,114,100,103,121,52,47,52,0,0,0,0,0,0,0,0,111,108,105,118,101,100,114,97,98,0,0,0,0,0,0,0,9,9,91,46,54,32,46,56,32,46,56,93,0,0,0,0,47,114,100,103,121,52,47,51,0,0,0,0,0,0,0,0,116,97,98,108,101,32,115,105,122,101,32,116,111,111,32,115,109,97,108,108,32,102,111,114,32,99,111,110,116,101,110,116,10,0,0,0,0,0,0,0,112,110,103,58,118,114,109,108,0,0,0,0,0,0,0,0,84,105,109,101,115,45,82,111,109,97,110,0,0,0,0,0,97,110,103,0,0,0,0,0,47,114,100,103,121,52,47,50,0,0,0,0,0,0,0,0,47,114,100,103,121,52,47,49,0,0,0,0,0,0,0,0,47,114,100,103,121,51,47,51,0,0,0,0,0,0,0,0,114,111,117,110,100,101,100,0,47,98,114,98,103,53,47,49,0,0,0,0,0,0,0,0,47,114,100,103,121,51,47,50,0,0,0,0,0,0,0,0,47,114,100,103,121,51,47,49,0,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,57,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,56,0,0,0,0,0,0,0,32,32,32,32,32,32,118,97,114,32,105,116,101,109,59,10,0,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,55,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,54,0,0,0,0,0,0,0,72,84,77,76,0,0,0,0,111,108,105,118,101,0,0,0,9,9,91,46,52,32,46,56,32,46,56,93,0,0,0,0,47,114,100,103,121,49,49,47,53,0,0,0,0,0,0,0,85,110,115,117,112,112,111,114,116,101,100,32,99,104,97,114,115,101,116,32,118,97,108,117,101,32,37,100,10,0,0,0,97,110,100,0,0,0,0,0,47,114,100,103,121,49,49,47,52,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,51,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,50,0,0,0,0,0,0,0,115,116,121,108,101,0,0,0,47,98,114,98,103,52,47,52,0,0,0,0,0,0,0,0,47,114,100,103,121,49,49,47,49,49,0,0,0,0,0,0,97,113,117,97,0,0,0,0,47,114,100,103,121,49,49,47,49,48,0,0,0,0,0,0,35,32,37,115,10,0,0,0,75,80,95,65,100,100,0,0,47,114,100,103,121,49,49,47,49,0,0,0,0,0,0,0,47,114,100,103,121,49,48,47,57,0,0,0,0,0,0,0,32,32,32,32,32,32,118,97,114,32,105,101,118,101,114,115,59,10,0,0,0,0,0,0,47,114,100,103,121,49,48,47,56,0,0,0,0,0,0,0,47,114,100,103,121,49,48,47,55,0,0,0,0,0,0,0,111,108,100,108,97,99,101,0,9,9,91,46,50,32,46,56,32,46,56,93,0,0,0,0,47,114,100,103,121,49,48,47,54,0,0,0,0,0,0,0,66,73,71,45,53,0,0,0,97,109,112,0,0,0,0,0,47,114,100,103,121,49,48,47,53,0,0,0,0,0,0,0,99,111,110,116,101,120,116,58,32,0,0,0,0,0,0,0,47,114,100,103,121,49,48,47,52,0,0,0,0,0,0,0,47,114,100,103,121,49,48,47,51,0,0,0,0,0,0,0,102,105,108,108,101,100,0,0,104,101,97,100,112,111,114,116,0,0,0,0,0,0,0,0,47,98,114,98,103,52,47,51,0,0,0,0,0,0,0,0,47,114,100,103,121,49,48,47,50,0,0,0,0,0,0,0,47,114,100,103,121,49,48,47,49,48,0,0,0,0,0,0,47,114,100,103,121,49,48,47,49,0,0,0,0,0,0,0,47,114,100,98,117,57,47,57,0,0,0,0,0,0,0,0,32,32,32,32,32,32,118,97,114,32,109,115,105,101,32,61,32,117,97,46,105,110,100,101,120,79,102,32,40,32,39,77,83,73,69,32,39,32,41,10,0,0,0,0,0,0,0,0,98,111,111,107,0,0,0,0,47,114,100,98,117,57,47,56,0,0,0,0,0,0,0,0,47,114,100,98,117,57,47,55,0,0,0,0,0,0,0,0,106,117,110,107,32,97,102,116,101,114,32,100,111,99,117,109,101,110,116,32,101,108,101,109,101,110,116,0,0,0,0,0,9,9,91,48,32,48,32,48,93,0,0,0,0,0,0,0,110,97,118,121,0,0,0,0,47,114,100,98,117,57,47,54,0,0,0,0,0,0,0,0,73,83,79,45,56,56,53,57,45,49,0,0,0,0,0,0,97,108,112,104,97,0,0,0,47,114,100,98,117,57,47,53,0,0,0,0,0,0,0,0,38,35,52,53,59,0,0,0,47,114,100,98,117,57,47,52,0,0,0,0,0,0,0,0,120,100,111,116,58,120,100,111,116,0,0,0,0,0,0,0,47,114,100,98,117,57,47,51,0,0,0,0,0,0,0,0,101,109,105,116,46,99,0,0,115,97,109,112,108,101,112,111,105,110,116,115,0,0,0,0,115,101,103,109,101,110,116,32,91,37,115,44,37,115,93,32,100,111,101,115,32,110,111,116,32,105,110,116,101,114,115,101,99,116,32,98,111,120,32,108,108,61,37,115,44,117,114,61,37,115,10,0,0,0,0,0,47,98,114,98,103,52,47,50,0,0,0,0,0,0,0,0,47,114,100,98,117,57,47,50,0,0,0,0,0,0,0,0,47,114,100,98,117,57,47,49,0,0,0,0,0,0,0,0,125,10,0,0,0,0,0,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,112,110,108,112,115,0,0,0,0,0,47,114,100,98,117,56,47,56,0,0,0,0,0,0,0,0,114,101,99,116,115,0,0,0,47,114,100,98,117,56,47,55,0,0,0,0,0,0,0,0,32,32,32,32,32,32,118,97,114,32,117,97,32,61,32,119,105,110,100,111,119,46,110,97,118,105,103,97,116,111,114,46,117,115,101,114,65,103,101,110,116,10,0,0,0,0,0,0,46,37,100,0,0,0,0,0,47,117,115,101,114,95,115,104,97,112,101,95,37,100,32,123,10,0,0,0,0,0,0,0,47,114,100,98,117,56,47,54,0,0,0,0,0,0,0,0,47,114,100,98,117,56,47,53,0,0,0,0,0,0,0,0,9,91,9,37,32,108,97,121,101,114,32,99,111,108,111,114,32,115,101,113,117,101,110,99,101,32,45,32,100,97,114,107,101,115,116,32,116,111,32,108,105,103,104,116,101,115,116,0,110,97,118,97,106,111,119,104,105,116,101,0,0,0,0,0,47,114,100,98,117,56,47,52,0,0,0,0,0,0,0,0,85,84,70,45,56,0,0,0,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,0,97,108,101,102,115,121,109,0,47,114,100,98,117,56,47,51,0,0,0,0,0,0,0,0,47,114,100,98,117,56,47,50,0,0,0,0,0,0,0,0,47,114,100,98,117,56,47,49,0,0,0,0,0,0,0,0,97,108,108,0,0,0,0,0,47,98,114,98,103,52,47,49,0,0,0,0,0,0,0,0,47,114,100,98,117,55,47,55,0,0,0,0,0,0,0,0,47,114,100,98,117,55,47,54,0,0,0,0,0,0,0,0,47,114,100,98,117,55,47,53,0,0,0,0,0,0,0,0,47,114,100,98,117,55,47,52,0,0,0,0,0,0,0,0,32,32,32,123,10,0,0,0,47,114,100,98,117,55,47,51,0,0,0,0,0,0,0,0,109,97,120,0,0,0,0,0,47,114,100,98,117,55,47,50,0,0,0,0,0,0,0,0,47,108,97,121,101,114,99,111,108,111,114,115,101,113,0,0,109,111,99,99,97,115,105,110,0,0,0,0,0,0,0,0,112,120,0,0,0,0,0,0,47,114,100,98,117,55,47,49,0,0,0,0,0,0,0,0,105,100,0,0,0,0,0,0,116,114,117,101,0,0,0,0,37,32,83,101,116,32,117,112,32,73,83,79,32,76,97,116,105,110,32,49,32,99,104,97,114,97,99,116,101,114,32,101,110,99,111,100,105,110,103,0,97,103,114,97,118,101,0,0,47,114,100,98,117,54,47,54,0,0,0,0,0,0,0,0,47,114,100,98,117,54,47,53,0,0,0,0,0,0,0,0,117,110,102,105,108,108,101,100,0,0,0,0,0,0,0,0,47,114,100,98,117,54,47,52,0,0,0,0,0,0,0,0,104,101,97,100,116,111,111,108,116,105,112,0,0,0,0,0,47,98,114,98,103,51,47,51,0,0,0,0,0,0,0,0,47,114,100,98,117,54,47,51,0,0,0,0,0,0,0,0,47,114,100,98,117,54,47,50,0,0,0,0,0,0,0,0,47,114,100,98,117,54,47,49,0,0,0,0,0,0,0,0,47,114,100,98,117,53,47,53,0,0,0,0,0,0,0,0,32,32,32,102,117,110,99,116,105,111,110,32,98,114,111,119,115,101,114,99,104,101,99,107,40,41,10,0,0,0,0,0,47,114,100,98,117,53,47,52,0,0,0,0,0,0,0,0,47,114,100,98,117,53,47,51,0,0,0,0,0,0,0,0,47,115,104,111,119,112,97,103,101,32,123,32,125,32,100,101,102,0,0,0,0,0,0,0,109,105,115,116,121,114,111,115,101,0,0,0,0,0,0,0,47,114,100,98,117,53,47,50,0,0,0,0,0,0,0,0,104,101,97,100,99,108,105,112,0,0,0,0,0,0,0,0,97,101,108,105,103,0,0,0,47,114,100,98,117,53,47,49,0,0,0,0,0,0,0,0,47,114,100,98,117,52,47,52,0,0,0,0,0,0,0,0,47,114,100,98,117,52,47,51,0,0,0,0,0,0,0,0,116,97,105,108,116,111,111,108,116,105,112,0,0,0,0,0,109,112,116,121,0,0,0,0,100,111,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,109,108,95,116,101,120,116,112,97,114,97,0,0,0,0,118,109,108,95,112,114,105,110,116,95,99,111,108,111,114,0,116,114,97,110,115,112,111,115,101,95,115,116,101,112,0,0,116,107,103,101,110,95,112,114,105,110,116,95,116,97,103,115,0,0,0,0,0,0,0,0,116,107,103,101,110,95,112,114,105,110,116,95,99,111,108,111,114,0,0,0,0,0,0,0,115,118,103,95,116,101,120,116,112,97,114,97,0,0,0,0])
.concat([115,118,103,95,112,114,105,110,116,95,99,111,108,111,114,0,115,101,116,98,111,117,110,100,115,0,0,0,0,0,0,0,115,97,102,101,95,100,101,108,101,116,101,95,102,97,115,116,95,101,100,103,101,0,0,0,114,111,117,110,100,95,99,111,114,110,101,114,115,0,0,0,112,111,115,116,111,114,100,101,114,0,0,0,0,0,0,0,112,111,115,95,104,116,109,108,95,116,98,108,0,0,0,0,112,111,112,95,111,98,106,95,115,116,97,116,101,0,0,0,111,118,101,114,108,97,112,95,98,101,122,105,101,114,0,0,109,105,110,109,97,120,95,101,100,103,101,115,0,0,0,0,109,101,114,103,101,118,105,114,116,117,97,108,0,0,0,0,109,101,114,103,101,95,111,110,101,119,97,121,0,0,0,0,109,101,114,103,101,95,99,104,97,105,110,0,0,0,0,0,109,97,112,95,112,97,116,104,0,0,0,0,0,0,0,0,109,97,112,95,111,117,116,112,117,116,95,115,104,97,112,101,0,0,0,0,0,0,0,0,109,97,112,78,0,0,0,0,109,97,107,101,95,108,97,98,101,108,0,0,0,0,0,0,109,97,107,101,95,99,104,97,105,110,0,0,0,0,0,0,109,97,107,101,83,101,108,102,69,100,103,101,0,0,0,0,109,97,107,101,67,111,109,112,111,117,110,100,69,100,103,101,0,0,0,0,0,0,0,0,105,110,116,101,114,99,108,101,120,112,0,0,0,0,0,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,0,105,110,105,116,95,115,112,108,105,110,101,115,95,98,98,0,103,118,117,115,101,114,115,104,97,112,101,95,102,105,108,101,95,97,99,99,101,115,115,0,102,108,97,116,95,115,101,97,114,99,104,0,0,0,0,0,102,105,103,95,114,101,115,111,108,118,101,95,99,111,108,111,114,0,0,0,0,0,0,0,102,105,103,95,98,101,122,105,101,114,0,0,0,0,0,0,102,97,115,116,95,110,111,100,101,97,112,112,0,0,0,0,102,97,115,116,95,110,111,100,101,0,0,0,0,0,0,0,101,110,100,112,97,116,104,0,101,109,105,116,95,101,100,103,101,95,108,97,98,101,108,0,100,111,116,95,112,111,115,105,116,105,111,110,0,0,0,0,100,101,108,101,116,101,95,102,108,97,116,95,101,100,103,101,0,0,0,0,0,0,0,0,100,101,108,101,116,101,95,102,97,115,116,95,110,111,100,101,0,0,0,0,0,0,0,0,100,101,108,101,116,101,95,102,97,115,116,95,101,100,103,101,0,0,0,0,0,0,0,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,118,114,109,108,0,0,0,0,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,115,118,103,0,0,0,0,0,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,112,115,108,105,98,0,0,0,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,112,115,0,0,0,0,0,0,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,102,105,103,0,0,0,0,0,0,99,111,110,110,101,99,116,71,114,97,112,104,0,0,0,0,99,108,117,115,116,101,114,95,108,101,97,100,101,114,0,0,98,111,120,73,110,116,101,114,115,101,99,116,102,0,0,0,98,101,122,105,101,114,95,98,98,0,0,0,0,0,0,0,98,101,103,105,110,112,97,116,104,0,0,0,0,0,0,0,98,97,108,97,110,99,101,0,97,98,111,109,105,110,97,116,105,111,110,0,0,0,0,0,95,100,111,116,95,115,112,108,105,110,101,115,0,0,0,0,85,70,95,115,101,116,110,97,109,101,0,0,0,0,0,0,124,2,0,0,4,0,0,0,132,0,0,0,64,0,0,0,124,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,232,1,0,224,200,1,0,128,180,1,0,160,163,1,0,112,148,1,0,16,132,1,0,88,116,1,0,144,102,1,0,192,120,2,0,24,107,2,0,160,93,2,0,216,79,2,0,96,67,2,0,128,56,2,0,152,44,2,0,232,30,2,0,24,20,2,0,192,10,2,0,16,2,2,0,64,251,1,0,168,242,1,0,128,232,1,0,208,224,1,0,120,219,1,0,8,217,1,0,96,214,1,0,216,211,1,0,192,209,1,0,168,207,1,0,104,205,1,0,48,203,1,0,184,200,1,0,168,198,1,0,168,196,1,0,232,194,1,0,208,192,1,0,128,190,1,0,112,188,1,0,192,186,1,0,144,184,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,0,21,0,101,0,8,0,103,0,12,0,110,0,17,0,100,0,1,0,105,0,2,0,103,0,3,0,114,0,4,0,97,0,5,0,112,0,6,0,104,0,7,0,100,0,9,0,103,0,10,0,101,0,11,0,114,0,13,0,97,0,14,0,112,0,15,0,104,0,16,0,111,0,18,0,100,0,19,0,101,0,20,0,116,0,22,0,117,0,27,0,114,0,23,0,105,0,24,0,99,0,25,0,116,0,26,0,98,0,28,0,103,0,29,0,114,0,30,0,97,0,31,0,112,0,32,0,104,0,33,0,0,0,0,0,255,255,0,0,88,32,4,0,255,255,5,0,0,1,0,0,255,255,6,0,64,0,0,0,255,255,7,0,0,0,2,0,255,255,8,0,1,0,0,0,255,255,9,0,0,128,0,0,255,255,10,0,128,0,0,0,3,1,11,0,0,0,0,0,255,255,11,0,8,0,0,0,255,255,12,0,64,0,0,0,255,255,13,0,16,0,0,0,6,1,14,0,0,0,0,0,255,255,14,0,0,0,2,0,255,255,15,0,1,0,0,0,255,255,16,0,0,128,0,0,255,255,17,0,128,0,0,0,2,1,18,0,0,0,0,0,255,255,18,0,0,64,0,0,255,255,19,0,8,0,0,0,255,255,20,0,16,0,0,0,5,1,21,0,0,0,0,0,255,255,21,0,0,0,24,0,255,255,23,0,0,0,2,0,255,255,24,0,0,1,0,0,255,255,25,0,4,0,0,0,255,255,26,0,0,0,8,0,4,1,27,0,0,0,0,0,255,255,27,0,2,0,0,0,255,255,28,0,64,0,0,0,255,255,29,0,0,0,2,0,255,255,30,0,1,0,0,0,255,255,31,0,0,128,0,0,255,255,32,0,128,0,0,0,10,1,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,116,2,0,144,27,0,0,96,34,0,0,0,0,0,0,128,101,2,0,144,27,0,0,160,30,0,0,0,0,0,0,224,88,2,0,144,27,0,0,224,32,0,0,0,0,0,0,144,74,2,0,144,27,0,0,224,32,0,0,0,0,0,0,80,63,2,0,144,27,0,0,0,34,0,0,0,0,0,0,136,52,2,0,216,27,0,0,0,34,0,0,0,0,0,0,176,40,2,0,144,27,0,0,16,33,0,0,0,0,0,0,224,26,2,0,144,27,0,0,176,29,0,0,0,0,0,0,232,16,2,0,144,27,0,0,208,30,0,0,0,0,0,0,160,6,2,0,144,27,0,0,208,30,0,0,0,0,0,0,160,255,1,0,144,27,0,0,160,33,0,0,0,0,0,0,96,248,1,0,144,27,0,0,224,29,0,0,0,0,0,0,128,238,1,0,144,27,0,0,48,31,0,0,0,0,0,0,152,229,1,0,144,27,0,0,80,32,0,0,0,0,0,0,8,222,1,0,144,27,0,0,0,31,0,0,0,0,0,0,184,218,1,0,144,27,0,0,128,32,0,0,0,0,0,0,32,216,1,0,144,27,0,0,112,30,0,0,0,0,0,0,88,213,1,0,144,27,0,0,96,31,0,0,0,0,0,0,8,211,1,0,144,27,0,0,144,31,0,0,0,0,0,0,224,208,1,0,144,27,0,0,16,30,0,0,0,0,0,0,16,207,1,0,144,27,0,0,176,32,0,0,0,0,0,0,152,204,1,0,144,27,0,0,48,34,0,0,0,0,0,0,48,202,1,0,144,27,0,0,208,33,0,0,0,0,0,0,232,199,1,0,144,27,0,0,96,34,0,0,0,0,0,0,8,198,1,0,144,27,0,0,96,34,0,0,0,0,0,0,8,196,1,0,144,27,0,0,64,30,0,0,0,0,0,0,32,194,1,0,144,27,0,0,112,33,0,0,0,0,0,0,232,191,1,0,144,27,0,0,64,33,0,0,0,0,0,0,160,189,1,0,144,27,0,0,128,29,0,0,0,0,0,0,200,187,1,0,144,27,0,0,192,31,0,0,0,0,0,0,24,186,1,0,144,27,0,0,240,31,0,0,0,0,0,0,176,183,1,0,144,27,0,0,32,32,0,0,0,0,0,0,184,181,1,0,144,27,0,0,192,34,0,0,0,0,0,0,208,179,1,0,144,27,0,0,144,34,0,0,0,0,0,0,40,178,1,0,144,27,0,0,240,34,0,0,0,0,0,0,160,176,1,0,0,18,0,0,0,0,0,0,0,0,0,0,72,175,1,0,0,18,0,0,0,0,0,0,0,0,0,0,112,193,1,0,240,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,68,2,0,104,104,2,0,24,249,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,101,115,0,0,0,0,0,118,101,114,115,105,111,110,0,115,116,97,110,100,97,108,111,110,101,0,0,0,0,0,0,110,111,0,0,0,0,0,0,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,85,84,70,45,56,0,0,0,85,84,70,45,49,54,76,69,0,0,0,0,0,0,0,0,85,84,70,45,49,54,66,69,0,0,0,0,0,0,0,0,85,84,70,45,49,54,0,0,85,83,45,65,83,67,73,73,0,0,0,0,0,0,0,0,83,89,83,84,69,77,0,0,82,69,81,85,73,82,69,68,0,0,0,0,0,0,0,0,80,85,66,76,73,67,0,0,80,67,68,65,84,65,0,0,78,79,84,65,84,73,79,78,0,0,0,0,0,0,0,0,78,77,84,79,75,69,78,83,0,0,0,0,0,0,0,0,78,77,84,79,75,69,78,0,78,68,65,84,65,0,0,0,73,83,79,45,56,56,53,57,45,49,0,0,0,0,0,0,73,77,80,76,73,69,68,0,73,68,82,69,70,83,0,0,73,68,82,69,70,0,0,0,73,68,0,0,0,0,0,0,70,73,88,69,68,0,0,0,69,78,84,73,84,89,0,0,69,78,84,73,84,73,69,83,0,0,0,0,0,0,0,0,69,77,80,84,89,0,0,0,69,76,69,77,69,78,84,0,68,79,67,84,89,80,69,0,67,68,65,84,65,0,0,0,65,84,84,76,73,83,84,0,65,78,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,190,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,180,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,131,2,0,0,0,0,0,96,131,2,0,0,0,0,0,104,131,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,128,0,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,128,0,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,128,0,0,0,0,1,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,240,191,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,172,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,42,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,224,63,242,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,12,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,51,51,51,51,51,51,243,63,130,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,154,153,153,153,153,153,233,63,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,49,2,0,25,0,0,0,0,0,0,0,0,0,0,0,240,4,2,0,1,0,0,0,48,85,2,0,2,0,0,0,16,228,1,0,3,0,0,0,168,208,1,0,4,0,0,0,144,187,1,0,5,0,0,0,88,170,1,0,6,0,0,0,112,154,1,0,0,0,0,0,216,137,1,0,17,0,0,0,144,121,1,0,18,0,0,0,0,108,1,0,18,0,0,0,176,125,2,0,1,0,0,0,0,0,0,0,0,0,0,0,160,112,2,0,8,0,0,0,88,98,2,0,64,0,0,0,96,77,2,0,32,0,0,0,72,71,2,0,8,0,0,0,104,60,2,0,32,0,0,0,0,0,0,0,0,0,0,0,168,34,2,0,0,0,0,0,1,0,0,0,32,24,2,0,1,0,0,0,0,0,0,0,120,14,2,0,1,0,0,0,1,0,0,0,112,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
, "i8", ALLOC_NONE, Runtime.GLOBAL_BASE)
function runPostSets() {
}
if (!awaitingMemoryInitializer) runPostSets();
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
  HEAP8[tempDoublePtr] = HEAP8[ptr];
  HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
}
function copyTempDouble(ptr) {
  HEAP8[tempDoublePtr] = HEAP8[ptr];
  HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
  HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
  HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
  HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
  HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
}
  function _strncmp(px, py, n) {
      var i = 0;
      while (i < n) {
        var x = HEAPU8[(((px)+(i))|0)];
        var y = HEAPU8[(((py)+(i))|0)];
        if (x == y && x == 0) return 0;
        if (x == 0) return -1;
        if (y == 0) return 1;
        if (x == y) {
          i ++;
          continue;
        } else {
          return x > y ? 1 : -1;
        }
      }
      return 0;
    }function _strcmp(px, py) {
      return _strncmp(px, py, TOTAL_MEMORY);
    }
  Module["_memcmp"] = _memcmp;
  Module["_memcpy"] = _memcpy;var _llvm_memcpy_p0i8_p0i8_i32=_memcpy;
  var _sqrt=Math.sqrt;
  Module["_strlen"] = _strlen;
  function _parseXDotF() {
  Module['printErr']('missing function: parseXDotF'); abort(-1);
  }
  function _statXDot() {
  Module['printErr']('missing function: statXDot'); abort(-1);
  }
  var ERRNO_CODES={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOPNOTSUPP:45,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18};
  function ___setErrNo(value) {
      // For convenient setting and returning of errno.
      if (!___setErrNo.ret) ___setErrNo.ret = allocate([0], 'i32', ALLOC_NORMAL);
      HEAP32[((___setErrNo.ret)>>2)]=value
      return value;
    }
  var _stdin=allocate(1, "i32*", ALLOC_STATIC);
  var _stdout=allocate(1, "i32*", ALLOC_STATIC);
  var _stderr=allocate(1, "i32*", ALLOC_STATIC);
  var __impure_ptr=allocate(1, "i32*", ALLOC_STATIC);var FS={currentPath:"/",nextInode:2,streams:[null],ignorePermissions:true,joinPath:function (parts, forceRelative) {
        var ret = parts[0];
        for (var i = 1; i < parts.length; i++) {
          if (ret[ret.length-1] != '/') ret += '/';
          ret += parts[i];
        }
        if (forceRelative && ret[0] == '/') ret = ret.substr(1);
        return ret;
      },absolutePath:function (relative, base) {
        if (typeof relative !== 'string') return null;
        if (base === undefined) base = FS.currentPath;
        if (relative && relative[0] == '/') base = '';
        var full = base + '/' + relative;
        var parts = full.split('/').reverse();
        var absolute = [''];
        while (parts.length) {
          var part = parts.pop();
          if (part == '' || part == '.') {
            // Nothing.
          } else if (part == '..') {
            if (absolute.length > 1) absolute.pop();
          } else {
            absolute.push(part);
          }
        }
        return absolute.length == 1 ? '/' : absolute.join('/');
      },analyzePath:function (path, dontResolveLastLink, linksVisited) {
        var ret = {
          isRoot: false,
          exists: false,
          error: 0,
          name: null,
          path: null,
          object: null,
          parentExists: false,
          parentPath: null,
          parentObject: null
        };
        path = FS.absolutePath(path);
        if (path == '/') {
          ret.isRoot = true;
          ret.exists = ret.parentExists = true;
          ret.name = '/';
          ret.path = ret.parentPath = '/';
          ret.object = ret.parentObject = FS.root;
        } else if (path !== null) {
          linksVisited = linksVisited || 0;
          path = path.slice(1).split('/');
          var current = FS.root;
          var traversed = [''];
          while (path.length) {
            if (path.length == 1 && current.isFolder) {
              ret.parentExists = true;
              ret.parentPath = traversed.length == 1 ? '/' : traversed.join('/');
              ret.parentObject = current;
              ret.name = path[0];
            }
            var target = path.shift();
            if (!current.isFolder) {
              ret.error = ERRNO_CODES.ENOTDIR;
              break;
            } else if (!current.read) {
              ret.error = ERRNO_CODES.EACCES;
              break;
            } else if (!current.contents.hasOwnProperty(target)) {
              ret.error = ERRNO_CODES.ENOENT;
              break;
            }
            current = current.contents[target];
            if (current.link && !(dontResolveLastLink && path.length == 0)) {
              if (linksVisited > 40) { // Usual Linux SYMLOOP_MAX.
                ret.error = ERRNO_CODES.ELOOP;
                break;
              }
              var link = FS.absolutePath(current.link, traversed.join('/'));
              ret = FS.analyzePath([link].concat(path).join('/'),
                                   dontResolveLastLink, linksVisited + 1);
              return ret;
            }
            traversed.push(target);
            if (path.length == 0) {
              ret.exists = true;
              ret.path = traversed.join('/');
              ret.object = current;
            }
          }
        }
        return ret;
      },findObject:function (path, dontResolveLastLink) {
        FS.ensureRoot();
        var ret = FS.analyzePath(path, dontResolveLastLink);
        if (ret.exists) {
          return ret.object;
        } else {
          ___setErrNo(ret.error);
          return null;
        }
      },createObject:function (parent, name, properties, canRead, canWrite) {
        if (!parent) parent = '/';
        if (typeof parent === 'string') parent = FS.findObject(parent);
        if (!parent) {
          ___setErrNo(ERRNO_CODES.EACCES);
          throw new Error('Parent path must exist.');
        }
        if (!parent.isFolder) {
          ___setErrNo(ERRNO_CODES.ENOTDIR);
          throw new Error('Parent must be a folder.');
        }
        if (!parent.write && !FS.ignorePermissions) {
          ___setErrNo(ERRNO_CODES.EACCES);
          throw new Error('Parent folder must be writeable.');
        }
        if (!name || name == '.' || name == '..') {
          ___setErrNo(ERRNO_CODES.ENOENT);
          throw new Error('Name must not be empty.');
        }
        if (parent.contents.hasOwnProperty(name)) {
          ___setErrNo(ERRNO_CODES.EEXIST);
          throw new Error("Can't overwrite object.");
        }
        parent.contents[name] = {
          read: canRead === undefined ? true : canRead,
          write: canWrite === undefined ? false : canWrite,
          timestamp: Date.now(),
          inodeNumber: FS.nextInode++
        };
        for (var key in properties) {
          if (properties.hasOwnProperty(key)) {
            parent.contents[name][key] = properties[key];
          }
        }
        return parent.contents[name];
      },createFolder:function (parent, name, canRead, canWrite) {
        var properties = {isFolder: true, isDevice: false, contents: {}};
        return FS.createObject(parent, name, properties, canRead, canWrite);
      },createPath:function (parent, path, canRead, canWrite) {
        var current = FS.findObject(parent);
        if (current === null) throw new Error('Invalid parent.');
        path = path.split('/').reverse();
        while (path.length) {
          var part = path.pop();
          if (!part) continue;
          if (!current.contents.hasOwnProperty(part)) {
            FS.createFolder(current, part, canRead, canWrite);
          }
          current = current.contents[part];
        }
        return current;
      },createFile:function (parent, name, properties, canRead, canWrite) {
        properties.isFolder = false;
        return FS.createObject(parent, name, properties, canRead, canWrite);
      },createDataFile:function (parent, name, data, canRead, canWrite) {
        if (typeof data === 'string') {
          var dataArray = new Array(data.length);
          for (var i = 0, len = data.length; i < len; ++i) dataArray[i] = data.charCodeAt(i);
          data = dataArray;
        }
        var properties = {
          isDevice: false,
          contents: data.subarray ? data.subarray(0) : data // as an optimization, create a new array wrapper (not buffer) here, to help JS engines understand this object
        };
        return FS.createFile(parent, name, properties, canRead, canWrite);
      },createLazyFile:function (parent, name, url, canRead, canWrite) {
        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';
          // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
          var LazyUint8Array = function(chunkSize, length) {
            this.length = length;
            this.chunkSize = chunkSize;
            this.chunks = []; // Loaded chunks. Index is the chunk number
          }
          LazyUint8Array.prototype.get = function(idx) {
            if (idx > this.length-1 || idx < 0) {
              return undefined;
            }
            var chunkOffset = idx % chunkSize;
            var chunkNum = Math.floor(idx / chunkSize);
            return this.getter(chunkNum)[chunkOffset];
          }
          LazyUint8Array.prototype.setDataGetter = function(getter) {
            this.getter = getter;
          }
          // 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 = new LazyUint8Array(chunkSize, datalength);
          lazyArray.setDataGetter(function(chunkNum) {
            var start = chunkNum * lazyArray.chunkSize;
            var end = (chunkNum+1) * lazyArray.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];
          });
          var properties = { isDevice: false, contents: lazyArray };
        } else {
          var properties = { isDevice: false, url: url };
        }
        return FS.createFile(parent, name, properties, canRead, canWrite);
      },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile) {
        Browser.init();
        var fullname = FS.joinPath([parent, name], true);
        function processData(byteArray) {
          function finish(byteArray) {
            if (!dontCreateFile) {
              FS.createDataFile(parent, name, byteArray, canRead, canWrite);
            }
            if (onload) onload();
            removeRunDependency('cp ' + fullname);
          }
          var handled = false;
          Module['preloadPlugins'].forEach(function(plugin) {
            if (handled) return;
            if (plugin['canHandle'](fullname)) {
              plugin['handle'](byteArray, fullname, finish, function() {
                if (onerror) onerror();
                removeRunDependency('cp ' + fullname);
              });
              handled = true;
            }
          });
          if (!handled) finish(byteArray);
        }
        addRunDependency('cp ' + fullname);
        if (typeof url == 'string') {
          Browser.asyncLoad(url, function(byteArray) {
            processData(byteArray);
          }, onerror);
        } else {
          processData(url);
        }
      },createLink:function (parent, name, target, canRead, canWrite) {
        var properties = {isDevice: false, link: target};
        return FS.createFile(parent, name, properties, canRead, canWrite);
      },createDevice:function (parent, name, input, output) {
        if (!(input || output)) {
          throw new Error('A device must have at least one callback defined.');
        }
        var ops = {isDevice: true, input: input, output: output};
        return FS.createFile(parent, name, ops, Boolean(input), Boolean(output));
      },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);
          } catch (e) {
            success = false;
          }
        } else {
          throw new Error('Cannot load without read() or XMLHttpRequest.');
        }
        if (!success) ___setErrNo(ERRNO_CODES.EIO);
        return success;
      },ensureRoot:function () {
        if (FS.root) return;
        // The main file system tree. All the contents are inside this.
        FS.root = {
          read: true,
          write: true,
          isFolder: true,
          isDevice: false,
          timestamp: Date.now(),
          inodeNumber: 1,
          contents: {}
        };
      },init:function (input, output, error) {
        // Make sure we initialize only once.
        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.ensureRoot();
        // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
        input = input || Module['stdin'];
        output = output || Module['stdout'];
        error = error || Module['stderr'];
        // Default handlers.
        var stdinOverridden = true, stdoutOverridden = true, stderrOverridden = true;
        if (!input) {
          stdinOverridden = false;
          input = function() {
            if (!input.cache || !input.cache.length) {
              var result;
              if (typeof window != 'undefined' &&
                  typeof window.prompt == 'function') {
                // Browser.
                result = window.prompt('Input: ');
                if (result === null) result = String.fromCharCode(0); // cancel ==> EOF
              } else if (typeof readline == 'function') {
                // Command line.
                result = readline();
              }
              if (!result) result = '';
              input.cache = intArrayFromString(result + '\n', true);
            }
            return input.cache.shift();
          };
        }
        var utf8 = new Runtime.UTF8Processor();
        function simpleOutput(val) {
          if (val === null || val === 10) {
            output.printer(output.buffer.join(''));
            output.buffer = [];
          } else {
            output.buffer.push(utf8.processCChar(val));
          }
        }
        if (!output) {
          stdoutOverridden = false;
          output = simpleOutput;
        }
        if (!output.printer) output.printer = Module['print'];
        if (!output.buffer) output.buffer = [];
        if (!error) {
          stderrOverridden = false;
          error = simpleOutput;
        }
        if (!error.printer) error.printer = Module['print'];
        if (!error.buffer) error.buffer = [];
        // Create the temporary folder, if not already created
        try {
          FS.createFolder('/', 'tmp', true, true);
        } catch(e) {}
        // Create the I/O devices.
        var devFolder = FS.createFolder('/', 'dev', true, true);
        var stdin = FS.createDevice(devFolder, 'stdin', input);
        var stdout = FS.createDevice(devFolder, 'stdout', null, output);
        var stderr = FS.createDevice(devFolder, 'stderr', null, error);
        FS.createDevice(devFolder, 'tty', input, output);
        // Create default streams.
        FS.streams[1] = {
          path: '/dev/stdin',
          object: stdin,
          position: 0,
          isRead: true,
          isWrite: false,
          isAppend: false,
          isTerminal: !stdinOverridden,
          error: false,
          eof: false,
          ungotten: []
        };
        FS.streams[2] = {
          path: '/dev/stdout',
          object: stdout,
          position: 0,
          isRead: false,
          isWrite: true,
          isAppend: false,
          isTerminal: !stdoutOverridden,
          error: false,
          eof: false,
          ungotten: []
        };
        FS.streams[3] = {
          path: '/dev/stderr',
          object: stderr,
          position: 0,
          isRead: false,
          isWrite: true,
          isAppend: false,
          isTerminal: !stderrOverridden,
          error: false,
          eof: false,
          ungotten: []
        };
        // TODO: put these low in memory like we used to assert on: assert(Math.max(_stdin, _stdout, _stderr) < 15000); // make sure these are low, we flatten arrays with these
        HEAP32[((_stdin)>>2)]=1;
        HEAP32[((_stdout)>>2)]=2;
        HEAP32[((_stderr)>>2)]=3;
        // Other system paths
        FS.createPath('/', 'dev/shm/tmp', true, true); // temp files
        // Newlib initialization
        for (var i = FS.streams.length; i < Math.max(_stdin, _stdout, _stderr) + 4; i++) {
          FS.streams[i] = null; // Make sure to keep FS.streams dense
        }
        FS.streams[_stdin] = FS.streams[1];
        FS.streams[_stdout] = FS.streams[2];
        FS.streams[_stderr] = FS.streams[3];
        allocate([ allocate(
          [0, 0, 0, 0, _stdin, 0, 0, 0, _stdout, 0, 0, 0, _stderr, 0, 0, 0],
          'void*', ALLOC_DYNAMIC) ], 'void*', ALLOC_NONE, __impure_ptr);
      },quit:function () {
        if (!FS.init.initialized) return;
        // Flush any partially-printed lines in stdout and stderr. Careful, they may have been closed
        if (FS.streams[2] && FS.streams[2].object.output.buffer.length > 0) FS.streams[2].object.output(10);
        if (FS.streams[3] && FS.streams[3].object.output.buffer.length > 0) FS.streams[3].object.output(10);
      },standardizePath:function (path) {
        if (path.substr(0, 2) == './') path = path.substr(2);
        return path;
      },deleteFile:function (path) {
        path = FS.analyzePath(path);
        if (!path.parentExists || !path.exists) {
          throw 'Invalid path ' + path;
        }
        delete path.parentObject.contents[path.name];
      }};
  function _pwrite(fildes, buf, nbyte, offset) {
      // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
      var stream = FS.streams[fildes];
      if (!stream || stream.object.isDevice) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      } else if (!stream.isWrite) {
        ___setErrNo(ERRNO_CODES.EACCES);
        return -1;
      } else if (stream.object.isFolder) {
        ___setErrNo(ERRNO_CODES.EISDIR);
        return -1;
      } else if (nbyte < 0 || offset < 0) {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return -1;
      } else {
        var contents = stream.object.contents;
        while (contents.length < offset) contents.push(0);
        for (var i = 0; i < nbyte; i++) {
          contents[offset + i] = HEAPU8[(((buf)+(i))|0)];
        }
        stream.object.timestamp = Date.now();
        return i;
      }
    }function _write(fildes, buf, nbyte) {
      // ssize_t write(int fildes, const void *buf, size_t nbyte);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
      var stream = FS.streams[fildes];
      if (!stream) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      } else if (!stream.isWrite) {
        ___setErrNo(ERRNO_CODES.EACCES);
        return -1;
      } else if (nbyte < 0) {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return -1;
      } else {
        if (stream.object.isDevice) {
          if (stream.object.output) {
            for (var i = 0; i < nbyte; i++) {
              try {
                stream.object.output(HEAP8[(((buf)+(i))|0)]);
              } catch (e) {
                ___setErrNo(ERRNO_CODES.EIO);
                return -1;
              }
            }
            stream.object.timestamp = Date.now();
            return i;
          } else {
            ___setErrNo(ERRNO_CODES.ENXIO);
            return -1;
          }
        } else {
          var bytesWritten = _pwrite(fildes, buf, nbyte, stream.position);
          if (bytesWritten != -1) stream.position += bytesWritten;
          return bytesWritten;
        }
      }
    }function _fwrite(ptr, size, nitems, stream) {
      // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html
      var bytesToWrite = nitems * size;
      if (bytesToWrite == 0) return 0;
      var bytesWritten = _write(stream, ptr, bytesToWrite);
      if (bytesWritten == -1) {
        if (FS.streams[stream]) FS.streams[stream].error = true;
        return 0;
      } else {
        return Math.floor(bytesWritten / size);
      }
    }
  function __reallyNegative(x) {
      return x < 0 || (x === 0 && (1/x) === -Infinity);
    }function __formatString(format, varargs) {
      var textIndex = format;
      var argIndex = 0;
      function getNextArg(type) {
        // NOTE: Explicitly ignoring type safety. Otherwise this fails:
        //       int x = 4; printf("%c\n", (char)x);
        var ret;
        if (type === 'double') {
          ret = HEAPF64[(((varargs)+(argIndex))>>3)];
        } else if (type == 'i64') {
          ret = [HEAP32[(((varargs)+(argIndex))>>2)],
                 HEAP32[(((varargs)+(argIndex+8))>>2)]];
          argIndex += 8; // each 32-bit chunk is in a 64-bit block
        } else {
          type = 'i32'; // varargs are always i32, i64, or double
          ret = HEAP32[(((varargs)+(argIndex))>>2)];
        }
        argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true));
        return ret;
      }
      var ret = [];
      var curr, next, currArg;
      while(1) {
        var startTextIndex = textIndex;
        curr = HEAP8[(textIndex)];
        if (curr === 0) break;
        next = HEAP8[((textIndex+1)|0)];
        if (curr == 37) {
          // Handle flags.
          var flagAlwaysSigned = false;
          var flagLeftAlign = false;
          var flagAlternative = false;
          var flagZeroPad = false;
          flagsLoop: while (1) {
            switch (next) {
              case 43:
                flagAlwaysSigned = true;
                break;
              case 45:
                flagLeftAlign = true;
                break;
              case 35:
                flagAlternative = true;
                break;
              case 48:
                if (flagZeroPad) {
                  break flagsLoop;
                } else {
                  flagZeroPad = true;
                  break;
                }
              default:
                break flagsLoop;
            }
            textIndex++;
            next = HEAP8[((textIndex+1)|0)];
          }
          // Handle width.
          var width = 0;
          if (next == 42) {
            width = getNextArg('i32');
            textIndex++;
            next = HEAP8[((textIndex+1)|0)];
          } else {
            while (next >= 48 && next <= 57) {
              width = width * 10 + (next - 48);
              textIndex++;
              next = HEAP8[((textIndex+1)|0)];
            }
          }
          // Handle precision.
          var precisionSet = false;
          if (next == 46) {
            var precision = 0;
            precisionSet = true;
            textIndex++;
            next = HEAP8[((textIndex+1)|0)];
            if (next == 42) {
              precision = getNextArg('i32');
              textIndex++;
            } else {
              while(1) {
                var precisionChr = HEAP8[((textIndex+1)|0)];
                if (precisionChr < 48 ||
                    precisionChr > 57) break;
                precision = precision * 10 + (precisionChr - 48);
                textIndex++;
              }
            }
            next = HEAP8[((textIndex+1)|0)];
          } else {
            var precision = 6; // Standard default.
          }
          // Handle integer sizes. WARNING: These assume a 32-bit architecture!
          var argSize;
          switch (String.fromCharCode(next)) {
            case 'h':
              var nextNext = HEAP8[((textIndex+2)|0)];
              if (nextNext == 104) {
                textIndex++;
                argSize = 1; // char (actually i32 in varargs)
              } else {
                argSize = 2; // short (actually i32 in varargs)
              }
              break;
            case 'l':
              var nextNext = HEAP8[((textIndex+2)|0)];
              if (nextNext == 108) {
                textIndex++;
                argSize = 8; // long long
              } else {
                argSize = 4; // long
              }
              break;
            case 'L': // long long
            case 'q': // int64_t
            case 'j': // intmax_t
              argSize = 8;
              break;
            case 'z': // size_t
            case 't': // ptrdiff_t
            case 'I': // signed ptrdiff_t or unsigned size_t
              argSize = 4;
              break;
            default:
              argSize = null;
          }
          if (argSize) textIndex++;
          next = HEAP8[((textIndex+1)|0)];
          // Handle type specifier.
          switch (String.fromCharCode(next)) {
            case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': {
              // Integer.
              var signed = next == 100 || next == 105;
              argSize = argSize || 4;
              var currArg = getNextArg('i' + (argSize * 8));
              var origArg = currArg;
              var argText;
              // Flatten i64-1 [low, high] into a (slightly rounded) double
              if (argSize == 8) {
                currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);
              }
              // Truncate to requested size.
              if (argSize <= 4) {
                var limit = Math.pow(256, argSize) - 1;
                currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);
              }
              // Format the number.
              var currAbsArg = Math.abs(currArg);
              var prefix = '';
              if (next == 100 || next == 105) {
                if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else
                argText = reSign(currArg, 8 * argSize, 1).toString(10);
              } else if (next == 117) {
                if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else
                argText = unSign(currArg, 8 * argSize, 1).toString(10);
                currArg = Math.abs(currArg);
              } else if (next == 111) {
                argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8);
              } else if (next == 120 || next == 88) {
                prefix = flagAlternative ? '0x' : '';
                if (argSize == 8 && i64Math) {
                  if (origArg[1]) {
                    argText = (origArg[1]>>>0).toString(16);
                    var lower = (origArg[0]>>>0).toString(16);
                    while (lower.length < 8) lower = '0' + lower;
                    argText += lower;
                  } else {
                    argText = (origArg[0]>>>0).toString(16);
                  }
                } else
                if (currArg < 0) {
                  // Represent negative numbers in hex as 2's complement.
                  currArg = -currArg;
                  argText = (currAbsArg - 1).toString(16);
                  var buffer = [];
                  for (var i = 0; i < argText.length; i++) {
                    buffer.push((0xF - parseInt(argText[i], 16)).toString(16));
                  }
                  argText = buffer.join('');
                  while (argText.length < argSize * 2) argText = 'f' + argText;
                } else {
                  argText = currAbsArg.toString(16);
                }
                if (next == 88) {
                  prefix = prefix.toUpperCase();
                  argText = argText.toUpperCase();
                }
              } else if (next == 112) {
                if (currAbsArg === 0) {
                  argText = '(nil)';
                } else {
                  prefix = '0x';
                  argText = currAbsArg.toString(16);
                }
              }
              if (precisionSet) {
                while (argText.length < precision) {
                  argText = '0' + argText;
                }
              }
              // Add sign if needed
              if (flagAlwaysSigned) {
                if (currArg < 0) {
                  prefix = '-' + prefix;
                } else {
                  prefix = '+' + prefix;
                }
              }
              // Add padding.
              while (prefix.length + argText.length < width) {
                if (flagLeftAlign) {
                  argText += ' ';
                } else {
                  if (flagZeroPad) {
                    argText = '0' + argText;
                  } else {
                    prefix = ' ' + prefix;
                  }
                }
              }
              // Insert the result into the buffer.
              argText = prefix + argText;
              argText.split('').forEach(function(chr) {
                ret.push(chr.charCodeAt(0));
              });
              break;
            }
            case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': {
              // Float.
              var currArg = getNextArg('double');
              var argText;
              if (isNaN(currArg)) {
                argText = 'nan';
                flagZeroPad = false;
              } else if (!isFinite(currArg)) {
                argText = (currArg < 0 ? '-' : '') + 'inf';
                flagZeroPad = false;
              } else {
                var isGeneral = false;
                var effectivePrecision = Math.min(precision, 20);
                // Convert g/G to f/F or e/E, as per:
                // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
                if (next == 103 || next == 71) {
                  isGeneral = true;
                  precision = precision || 1;
                  var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10);
                  if (precision > exponent && exponent >= -4) {
                    next = ((next == 103) ? 'f' : 'F').charCodeAt(0);
                    precision -= exponent + 1;
                  } else {
                    next = ((next == 103) ? 'e' : 'E').charCodeAt(0);
                    precision--;
                  }
                  effectivePrecision = Math.min(precision, 20);
                }
                if (next == 101 || next == 69) {
                  argText = currArg.toExponential(effectivePrecision);
                  // Make sure the exponent has at least 2 digits.
                  if (/[eE][-+]\d$/.test(argText)) {
                    argText = argText.slice(0, -1) + '0' + argText.slice(-1);
                  }
                } else if (next == 102 || next == 70) {
                  argText = currArg.toFixed(effectivePrecision);
                  if (currArg === 0 && __reallyNegative(currArg)) {
                    argText = '-' + argText;
                  }
                }
                var parts = argText.split('e');
                if (isGeneral && !flagAlternative) {
                  // Discard trailing zeros and periods.
                  while (parts[0].length > 1 && parts[0].indexOf('.') != -1 &&
                         (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) {
                    parts[0] = parts[0].slice(0, -1);
                  }
                } else {
                  // Make sure we have a period in alternative mode.
                  if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.';
                  // Zero pad until required precision.
                  while (precision > effectivePrecision++) parts[0] += '0';
                }
                argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : '');
                // Capitalize 'E' if needed.
                if (next == 69) argText = argText.toUpperCase();
                // Add sign.
                if (flagAlwaysSigned && currArg >= 0) {
                  argText = '+' + argText;
                }
              }
              // Add padding.
              while (argText.length < width) {
                if (flagLeftAlign) {
                  argText += ' ';
                } else {
                  if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) {
                    argText = argText[0] + '0' + argText.slice(1);
                  } else {
                    argText = (flagZeroPad ? '0' : ' ') + argText;
                  }
                }
              }
              // Adjust case.
              if (next < 97) argText = argText.toUpperCase();
              // Insert the result into the buffer.
              argText.split('').forEach(function(chr) {
                ret.push(chr.charCodeAt(0));
              });
              break;
            }
            case 's': {
              // String.
              var arg = getNextArg('i8*');
              var argLength = arg ? _strlen(arg) : '(null)'.length;
              if (precisionSet) argLength = Math.min(argLength, precision);
              if (!flagLeftAlign) {
                while (argLength < width--) {
                  ret.push(32);
                }
              }
              if (arg) {
                for (var i = 0; i < argLength; i++) {
                  ret.push(HEAPU8[((arg++)|0)]);
                }
              } else {
                ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true));
              }
              if (flagLeftAlign) {
                while (argLength < width--) {
                  ret.push(32);
                }
              }
              break;
            }
            case 'c': {
              // Character.
              if (flagLeftAlign) ret.push(getNextArg('i8'));
              while (--width > 0) {
                ret.push(32);
              }
              if (!flagLeftAlign) ret.push(getNextArg('i8'));
              break;
            }
            case 'n': {
              // Write the length written so far to the next parameter.
              var ptr = getNextArg('i32*');
              HEAP32[((ptr)>>2)]=ret.length
              break;
            }
            case '%': {
              // Literal percent sign.
              ret.push(curr);
              break;
            }
            default: {
              // Unknown specifiers remain untouched.
              for (var i = startTextIndex; i < textIndex + 2; i++) {
                ret.push(HEAP8[(i)]);
              }
            }
          }
          textIndex += 2;
          // TODO: Support a/A (hex float) and m (last error) specifiers.
          // TODO: Support %1${specifier} for arg selection.
        } else {
          ret.push(curr);
          textIndex += 1;
        }
      }
      return ret;
    }function _fprintf(stream, format, varargs) {
      // int fprintf(FILE *restrict stream, const char *restrict format, ...);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
      var result = __formatString(format, varargs);
      var stack = Runtime.stackSave();
      var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream);
      Runtime.stackRestore(stack);
      return ret;
    }
  function ___assert_func(filename, line, func, condition) {
      throw 'Assertion failed: ' + (condition ? Pointer_stringify(condition) : 'unknown condition') + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + new Error().stack;
    }
  function _strdup(ptr) {
      var len = _strlen(ptr);
      var newStr = _malloc(len + 1);
      _memcpy(newStr, ptr, len);
      HEAP8[(((newStr)+(len))|0)]=0;
      return newStr;
    }
  function _snprintf(s, n, format, varargs) {
      // int snprintf(char *restrict s, size_t n, const char *restrict format, ...);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
      var result = __formatString(format, varargs);
      var limit = (n === undefined) ? result.length
                                    : Math.min(result.length, Math.max(n - 1, 0));
      if (s < 0) {
        s = -s;
        var buf = _malloc(limit+1);
        HEAP32[((s)>>2)]=buf;
        s = buf;
      }
      for (var i = 0; i < limit; i++) {
        HEAP8[(((s)+(i))|0)]=result[i];
      }
      if (limit < n || (n === undefined)) HEAP8[(((s)+(i))|0)]=0;
      return result.length;
    }function _sprintf(s, format, varargs) {
      // int sprintf(char *restrict s, const char *restrict format, ...);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
      return _snprintf(s, undefined, format, varargs);
    }
  function _setlocale(category, locale) {
      if (!_setlocale.ret) _setlocale.ret = allocate([0], 'i8', ALLOC_NORMAL);
      return _setlocale.ret;
    }
  Module["_memset"] = _memset;var _llvm_memset_p0i8_i32=_memset;
  function __isFloat(text) {
      return !!(/^[+-]?[0-9]*\.?[0-9]+([eE][+-]?[0-9]+)?$/.exec(text));
    }function __scanString(format, get, unget, varargs) {
      if (!__scanString.whiteSpace) {
        __scanString.whiteSpace = {};
        __scanString.whiteSpace[32] = 1;
        __scanString.whiteSpace[9] = 1;
        __scanString.whiteSpace[10] = 1;
        __scanString.whiteSpace[' '] = 1;
        __scanString.whiteSpace['\t'] = 1;
        __scanString.whiteSpace['\n'] = 1;
      }
      // Supports %x, %4x, %d.%d, %lld, %s, %f, %lf.
      // TODO: Support all format specifiers.
      format = Pointer_stringify(format);
      var soFar = 0;
      if (format.indexOf('%n') >= 0) {
        // need to track soFar
        var _get = get;
        get = function() {
          soFar++;
          return _get();
        }
        var _unget = unget;
        unget = function() {
          soFar--;
          return _unget();
        }
      }
      var formatIndex = 0;
      var argsi = 0;
      var fields = 0;
      var argIndex = 0;
      var next;
      mainLoop:
      for (var formatIndex = 0; formatIndex < format.length;) {
        if (format[formatIndex] === '%' && format[formatIndex+1] == 'n') {
          var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
          argIndex += Runtime.getAlignSize('void*', null, true);
          HEAP32[((argPtr)>>2)]=soFar;
          formatIndex += 2;
          continue;
        }
        // TODO: Support strings like "%5c" etc.
        if (format[formatIndex] === '%' && format[formatIndex+1] == 'c') {
          var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
          argIndex += Runtime.getAlignSize('void*', null, true);
          fields++;
          next = get();
          HEAP8[(argPtr)]=next
          formatIndex += 2;
          continue;
        }
        // remove whitespace
        while (1) {
          next = get();
          if (next == 0) return fields;
          if (!(next in __scanString.whiteSpace)) break;
        }
        unget();
        if (format[formatIndex] === '%') {
          formatIndex++;
          var suppressAssignment = false;
          if (format[formatIndex] == '*') {
            suppressAssignment = true;
            formatIndex++;
          }
          var maxSpecifierStart = formatIndex;
          while (format[formatIndex].charCodeAt(0) >= 48 &&
                 format[formatIndex].charCodeAt(0) <= 57) {
            formatIndex++;
          }
          var max_;
          if (formatIndex != maxSpecifierStart) {
            max_ = parseInt(format.slice(maxSpecifierStart, formatIndex), 10);
          }
          var long_ = false;
          var half = false;
          var longLong = false;
          if (format[formatIndex] == 'l') {
            long_ = true;
            formatIndex++;
            if(format[formatIndex] == 'l') {
              longLong = true;
              formatIndex++;
            }
          } else if (format[formatIndex] == 'h') {
            half = true;
            formatIndex++;
          }
          var type = format[formatIndex];
          formatIndex++;
          var curr = 0;
          var buffer = [];
          // Read characters according to the format. floats are trickier, they may be in an unfloat state in the middle, then be a valid float later
          if (type == 'f' || type == 'e' || type == 'g' || type == 'E') {
            var last = 0;
            next = get();
            while (next > 0) {
              buffer.push(String.fromCharCode(next));
              if (__isFloat(buffer.join(''))) {
                last = buffer.length;
              }
              next = get();
            }
            for (var i = 0; i < buffer.length - last + 1; i++) {
              unget();
            }
            buffer.length = last;
          } else {
            next = get();
            var first = true;
            while ((curr < max_ || isNaN(max_)) && next > 0) {
              if (!(next in __scanString.whiteSpace) && // stop on whitespace
                  (type == 's' ||
                   ((type === 'd' || type == 'u' || type == 'i') && ((next >= 48 && next <= 57) ||
                                                                     (first && next == 45))) ||
                   (type === 'x' && (next >= 48 && next <= 57 ||
                                     next >= 97 && next <= 102 ||
                                     next >= 65 && next <= 70))) &&
                  (formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up
                buffer.push(String.fromCharCode(next));
                next = get();
                curr++;
                first = false;
              } else {
                break;
              }
            }
            unget();
          }
          if (buffer.length === 0) return 0;  // Failure.
          if (suppressAssignment) continue;
          var text = buffer.join('');
          var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
          argIndex += Runtime.getAlignSize('void*', null, true);
          switch (type) {
            case 'd': case 'u': case 'i':
              if (half) {
                HEAP16[((argPtr)>>1)]=parseInt(text, 10);
              } else if(longLong) {
                (tempI64 = [parseInt(text, 10)>>>0,Math.min(Math.floor((parseInt(text, 10))/(+(4294967296))), (+(4294967295)))>>>0],HEAP32[((argPtr)>>2)]=tempI64[0],HEAP32[(((argPtr)+(4))>>2)]=tempI64[1]);
              } else {
                HEAP32[((argPtr)>>2)]=parseInt(text, 10);
              }
              break;
            case 'x':
              HEAP32[((argPtr)>>2)]=parseInt(text, 16)
              break;
            case 'f':
            case 'e':
            case 'g':
            case 'E':
              // fallthrough intended
              if (long_) {
                HEAPF64[((argPtr)>>3)]=parseFloat(text)
              } else {
                HEAPF32[((argPtr)>>2)]=parseFloat(text)
              }
              break;
            case 's':
              var array = intArrayFromString(text);
              for (var j = 0; j < array.length; j++) {
                HEAP8[(((argPtr)+(j))|0)]=array[j]
              }
              break;
          }
          fields++;
        } else if (format[formatIndex] in __scanString.whiteSpace) {
          next = get();
          while (next in __scanString.whiteSpace) {
            if (next <= 0) break mainLoop;  // End of input.
            next = get();
          }
          unget(next);
          formatIndex++;
        } else {
          // Not a specifier.
          next = get();
          if (format[formatIndex].charCodeAt(0) !== next) {
            unget(next);
            break mainLoop;
          }
          formatIndex++;
        }
      }
      return fields;
    }function _sscanf(s, format, varargs) {
      // int sscanf(const char *restrict s, const char *restrict format, ... );
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/scanf.html
      var index = 0;
      var get = function() { return HEAP8[(((s)+(index++))|0)]; };
      var unget = function() { index--; };
      return __scanString(format, get, unget, varargs);
    }
  var ___strtok_state=0;
  function _strtok_r(s, delim, lasts) {
      var skip_leading_delim = 1;
      var spanp;
      var c, sc;
      var tok;
      if (s == 0 && (s = getValue(lasts, 'i8*')) == 0) {
        return 0;
      }
      cont: while (1) {
        c = getValue(s++, 'i8');
        for (spanp = delim; (sc = getValue(spanp++, 'i8')) != 0;) {
          if (c == sc) {
            if (skip_leading_delim) {
              continue cont;
            } else {
              setValue(lasts, s, 'i8*');
              setValue(s - 1, 0, 'i8');
              return s - 1;
            }
          }
        }
        break;
      }
      if (c == 0) {
        setValue(lasts, 0, 'i8*');
        return 0;
      }
      tok = s - 1;
      for (;;) {
        c = getValue(s++, 'i8');
        spanp = delim;
        do {
          if ((sc = getValue(spanp++, 'i8')) == c) {
            if (c == 0) {
              s = 0;
            } else {
              setValue(s - 1, 0, 'i8');
            }
            setValue(lasts, s, 'i8*');
            return tok;
          }
        } while (sc != 0);
      }
      abort('strtok_r error!');
    }function _strtok(s, delim) {
      return _strtok_r(s, delim, ___strtok_state);
    }
  function _isspace(chr) {
      return chr in { 32: 0, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0 };
    }
  Module["_strcpy"] = _strcpy;
  Module["_strcat"] = _strcat;
  function _strchr(ptr, chr) {
      ptr--;
      do {
        ptr++;
        var val = HEAP8[(ptr)];
        if (val == chr) return ptr;
      } while (val);
      return 0;
    }
  var _cos=Math.cos;
  var _sin=Math.sin;
  var _atan2=Math.atan2;
  function __parseInt(str, endptr, base, min, max, bits, unsign) {
      // Skip space.
      while (_isspace(HEAP8[(str)])) str++;
      // Check for a plus/minus sign.
      var multiplier = 1;
      if (HEAP8[(str)] == 45) {
        multiplier = -1;
        str++;
      } else if (HEAP8[(str)] == 43) {
        str++;
      }
      // Find base.
      var finalBase = base;
      if (!finalBase) {
        if (HEAP8[(str)] == 48) {
          if (HEAP8[((str+1)|0)] == 120 ||
              HEAP8[((str+1)|0)] == 88) {
            finalBase = 16;
            str += 2;
          } else {
            finalBase = 8;
            str++;
          }
        }
      }
      if (!finalBase) finalBase = 10;
      // Get digits.
      var chr;
      var ret = 0;
      while ((chr = HEAP8[(str)]) != 0) {
        var digit = parseInt(String.fromCharCode(chr), finalBase);
        if (isNaN(digit)) {
          break;
        } else {
          ret = ret * finalBase + digit;
          str++;
        }
      }
      // Apply sign.
      ret *= multiplier;
      // Set end pointer.
      if (endptr) {
        HEAP32[((endptr)>>2)]=str
      }
      // Unsign if needed.
      if (unsign) {
        if (Math.abs(ret) > max) {
          ret = max;
          ___setErrNo(ERRNO_CODES.ERANGE);
        } else {
          ret = unSign(ret, bits);
        }
      }
      // Validate range.
      if (ret > max || ret < min) {
        ret = ret > max ? max : min;
        ___setErrNo(ERRNO_CODES.ERANGE);
      }
      if (bits == 64) {
        return ((asm.setTempRet0(Math.min(Math.floor((ret)/(+(4294967296))), (+(4294967295)))>>>0),ret>>>0)|0);
      }
      return ret;
    }function _strtol(str, endptr, base) {
      return __parseInt(str, endptr, base, -2147483648, 2147483647, 32);  // LONG_MIN, LONG_MAX.
    }function _atoi(ptr) {
      return _strtol(ptr, null, 10);
    }
  function _pread(fildes, buf, nbyte, offset) {
      // ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html
      var stream = FS.streams[fildes];
      if (!stream || stream.object.isDevice) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      } else if (!stream.isRead) {
        ___setErrNo(ERRNO_CODES.EACCES);
        return -1;
      } else if (stream.object.isFolder) {
        ___setErrNo(ERRNO_CODES.EISDIR);
        return -1;
      } else if (nbyte < 0 || offset < 0) {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return -1;
      } else {
        var bytesRead = 0;
        while (stream.ungotten.length && nbyte > 0) {
          HEAP8[((buf++)|0)]=stream.ungotten.pop()
          nbyte--;
          bytesRead++;
        }
        var contents = stream.object.contents;
        var size = Math.min(contents.length - offset, nbyte);
        if (contents.subarray) { // typed array
          HEAPU8.set(contents.subarray(offset, offset+size), buf);
        } else
        if (contents.slice) { // normal array
          for (var i = 0; i < size; i++) {
            HEAP8[(((buf)+(i))|0)]=contents[offset + i]
          }
        } else {
          for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
            HEAP8[(((buf)+(i))|0)]=contents.get(offset + i)
          }
        }
        bytesRead += size;
        return bytesRead;
      }
    }function _read(fildes, buf, nbyte) {
      // ssize_t read(int fildes, void *buf, size_t nbyte);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html
      var stream = FS.streams[fildes];
      if (!stream) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      } else if (!stream.isRead) {
        ___setErrNo(ERRNO_CODES.EACCES);
        return -1;
      } else if (nbyte < 0) {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return -1;
      } else {
        var bytesRead;
        if (stream.object.isDevice) {
          if (stream.object.input) {
            bytesRead = 0;
            while (stream.ungotten.length && nbyte > 0) {
              HEAP8[((buf++)|0)]=stream.ungotten.pop()
              nbyte--;
              bytesRead++;
            }
            for (var i = 0; i < nbyte; i++) {
              try {
                var result = stream.object.input();
              } catch (e) {
                ___setErrNo(ERRNO_CODES.EIO);
                return -1;
              }
              if (result === null || result === undefined) break;
              bytesRead++;
              HEAP8[(((buf)+(i))|0)]=result
            }
            return bytesRead;
          } else {
            ___setErrNo(ERRNO_CODES.ENXIO);
            return -1;
          }
        } else {
          var ungotSize = stream.ungotten.length;
          bytesRead = _pread(fildes, buf, nbyte, stream.position);
          if (bytesRead != -1) {
            stream.position += (stream.ungotten.length - ungotSize) + bytesRead;
          }
          return bytesRead;
        }
      }
    }function _fgetc(stream) {
      // int fgetc(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgetc.html
      if (!FS.streams[stream]) return -1;
      var streamObj = FS.streams[stream];
      if (streamObj.eof || streamObj.error) return -1;
      var ret = _read(stream, _fgetc.ret, 1);
      if (ret == 0) {
        streamObj.eof = true;
        return -1;
      } else if (ret == -1) {
        streamObj.error = true;
        return -1;
      } else {
        return HEAPU8[((_fgetc.ret)|0)];
      }
    }function _fgets(s, n, stream) {
      // char *fgets(char *restrict s, int n, FILE *restrict stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgets.html
      if (!FS.streams[stream]) return 0;
      var streamObj = FS.streams[stream];
      if (streamObj.error || streamObj.eof) return 0;
      var byte_;
      for (var i = 0; i < n - 1 && byte_ != 10; i++) {
        byte_ = _fgetc(stream);
        if (byte_ == -1) {
          if (streamObj.error || (streamObj.eof && i == 0)) return 0;
          else if (streamObj.eof) break;
        }
        HEAP8[(((s)+(i))|0)]=byte_
      }
      HEAP8[(((s)+(i))|0)]=0
      return s;
    }
  function _strrchr(ptr, chr) {
      var ptr2 = ptr + _strlen(ptr);
      do {
        if (HEAP8[(ptr2)] == chr) return ptr2;
        ptr2--;
      } while (ptr2 >= ptr);
      return 0;
    }
  function _access(path, amode) {
      // int access(const char *path, int amode);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/access.html
      path = Pointer_stringify(path);
      var target = FS.findObject(path);
      if (target === null) return -1;
      if ((amode & 2 && !target.write) ||  // W_OK.
          ((amode & 1 || amode & 4) && !target.read)) {  // X_OK, R_OK.
        ___setErrNo(ERRNO_CODES.EACCES);
        return -1;
      } else {
        return 0;
      }
    }
  var _fabs=Math.abs;
  Module["_strncpy"] = _strncpy;
  function _bsearch(key, base, num, size, compar) {
      var cmp = function(x, y) {
        return Runtime.dynCall('iii', compar, [x, y])
      };
      var left = 0;
      var right = num;
      var mid, test, addr;
      while (left < right) {
        mid = (left + right) >>> 1;
        addr = base + (mid * size);
        test = cmp(key, addr);
        if (test < 0) {
          right = mid;
        } else if (test > 0) {
          left = mid + 1;
        } else {
          return addr;
        }
      }
      return 0;
    }
  function __exit(status) {
      // void _exit(int status);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html
      function ExitStatus() {
        this.name = "ExitStatus";
        this.message = "Program terminated with exit(" + status + ")";
        this.status = status;
        Module.print('Exit Status: ' + status);
      };
      ExitStatus.prototype = new Error();
      ExitStatus.prototype.constructor = ExitStatus;
      exitRuntime();
      ABORT = true;
      throw new ExitStatus();
    }function _exit(status) {
      __exit(status);
    }
  Module["_tolower"] = _tolower;
  function _rand() {
      return Math.floor(Math.random()*0x80000000);
    }
  function _abort() {
      ABORT = true;
      throw 'abort() at ' + (new Error().stack);
    }
  function _toupper(chr) {
      if (chr >= 97 && chr <= 122) {
        return chr - 97 + 65;
      } else {
        return chr;
      }
    }
  function _fputc(c, stream) {
      // int fputc(int c, FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html
      var chr = unSign(c & 0xFF);
      HEAP8[((_fputc.ret)|0)]=chr
      var ret = _write(stream, _fputc.ret, 1);
      if (ret == -1) {
        if (FS.streams[stream]) FS.streams[stream].error = true;
        return -1;
      } else {
        return chr;
      }
    }
  function _hypot(a, b) {
       return Math.sqrt(a*a + b*b);
    }
  function _isupper(chr) {
      return chr >= 65 && chr <= 90;
    }
  var ___dirent_struct_layout={__size__:1040,d_ino:0,d_name:4,d_off:1028,d_reclen:1032,d_type:1036};function _open(path, oflag, varargs) {
      // int open(const char *path, int oflag, ...);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html
      // NOTE: This implementation tries to mimic glibc rather than strictly
      // following the POSIX standard.
      var mode = HEAP32[((varargs)>>2)];
      // Simplify flags.
      var accessMode = oflag & 3;
      var isWrite = accessMode != 0;
      var isRead = accessMode != 1;
      var isCreate = Boolean(oflag & 512);
      var isExistCheck = Boolean(oflag & 2048);
      var isTruncate = Boolean(oflag & 1024);
      var isAppend = Boolean(oflag & 8);
      // Verify path.
      var origPath = path;
      path = FS.analyzePath(Pointer_stringify(path));
      if (!path.parentExists) {
        ___setErrNo(path.error);
        return -1;
      }
      var target = path.object || null;
      var finalPath;
      // Verify the file exists, create if needed and allowed.
      if (target) {
        if (isCreate && isExistCheck) {
          ___setErrNo(ERRNO_CODES.EEXIST);
          return -1;
        }
        if ((isWrite || isCreate || isTruncate) && target.isFolder) {
          ___setErrNo(ERRNO_CODES.EISDIR);
          return -1;
        }
        if (isRead && !target.read || isWrite && !target.write) {
          ___setErrNo(ERRNO_CODES.EACCES);
          return -1;
        }
        if (isTruncate && !target.isDevice) {
          target.contents = [];
        } else {
          if (!FS.forceLoadFile(target)) {
            ___setErrNo(ERRNO_CODES.EIO);
            return -1;
          }
        }
        finalPath = path.path;
      } else {
        if (!isCreate) {
          ___setErrNo(ERRNO_CODES.ENOENT);
          return -1;
        }
        if (!path.parentObject.write) {
          ___setErrNo(ERRNO_CODES.EACCES);
          return -1;
        }
        target = FS.createDataFile(path.parentObject, path.name, [],
                                   mode & 0x100, mode & 0x80);  // S_IRUSR, S_IWUSR.
        finalPath = path.parentPath + '/' + path.name;
      }
      // Actually create an open stream.
      var id = FS.streams.length; // Keep dense
      if (target.isFolder) {
        var entryBuffer = 0;
        if (___dirent_struct_layout) {
          entryBuffer = _malloc(___dirent_struct_layout.__size__);
        }
        var contents = [];
        for (var key in target.contents) contents.push(key);
        FS.streams[id] = {
          path: finalPath,
          object: target,
          // An index into contents. Special values: -2 is ".", -1 is "..".
          position: -2,
          isRead: true,
          isWrite: false,
          isAppend: false,
          error: false,
          eof: false,
          ungotten: [],
          // Folder-specific properties:
          // Remember the contents at the time of opening in an array, so we can
          // seek between them relying on a single order.
          contents: contents,
          // Each stream has its own area for readdir() returns.
          currentEntry: entryBuffer
        };
      } else {
        FS.streams[id] = {
          path: finalPath,
          object: target,
          position: 0,
          isRead: isRead,
          isWrite: isWrite,
          isAppend: isAppend,
          error: false,
          eof: false,
          ungotten: []
        };
      }
      return id;
    }function _fopen(filename, mode) {
      // FILE *fopen(const char *restrict filename, const char *restrict mode);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html
      var flags;
      mode = Pointer_stringify(mode);
      if (mode[0] == 'r') {
        if (mode.indexOf('+') != -1) {
          flags = 2;
        } else {
          flags = 0;
        }
      } else if (mode[0] == 'w') {
        if (mode.indexOf('+') != -1) {
          flags = 2;
        } else {
          flags = 1;
        }
        flags |= 512;
        flags |= 1024;
      } else if (mode[0] == 'a') {
        if (mode.indexOf('+') != -1) {
          flags = 2;
        } else {
          flags = 1;
        }
        flags |= 512;
        flags |= 8;
      } else {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return 0;
      }
      var ret = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK));  // All creation permissions.
      return (ret == -1) ? 0 : ret;
    }
  function _close(fildes) {
      // int close(int fildes);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html
      if (FS.streams[fildes]) {
        if (FS.streams[fildes].currentEntry) {
          _free(FS.streams[fildes].currentEntry);
        }
        FS.streams[fildes] = null;
        return 0;
      } else {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
    }
  function _fsync(fildes) {
      // int fsync(int fildes);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html
      if (FS.streams[fildes]) {
        // We write directly to the file system, so there's nothing to do here.
        return 0;
      } else {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
    }function _fclose(stream) {
      // int fclose(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html
      _fsync(stream);
      return _close(stream);
    }
  function _strstr(ptr1, ptr2) {
      var check = 0, start;
      do {
        if (!check) {
          start = ptr1;
          check = ptr2;
        }
        var curr1 = HEAP8[((ptr1++)|0)];
        var curr2 = HEAP8[((check++)|0)];
        if (curr2 == 0) return start;
        if (curr2 != curr1) {
          // rewind to one character after start, to find ez in eeez
          ptr1 = start + 1;
          check = 0;
        }
      } while (curr1);
      return 0;
    }
  var ___stat_struct_layout={__size__:68,st_dev:0,st_ino:4,st_mode:8,st_nlink:12,st_uid:16,st_gid:20,st_rdev:24,st_size:28,st_atime:32,st_spare1:36,st_mtime:40,st_spare2:44,st_ctime:48,st_spare3:52,st_blksize:56,st_blocks:60,st_spare4:64};function _stat(path, buf, dontResolveLastLink) {
      // http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html
      // int stat(const char *path, struct stat *buf);
      // NOTE: dontResolveLastLink is a shortcut for lstat(). It should never be
      //       used in client code.
      var obj = FS.findObject(Pointer_stringify(path), dontResolveLastLink);
      if (obj === null || !FS.forceLoadFile(obj)) return -1;
      var offsets = ___stat_struct_layout;
      // Constants.
      HEAP32[(((buf)+(offsets.st_nlink))>>2)]=1
      HEAP32[(((buf)+(offsets.st_uid))>>2)]=0
      HEAP32[(((buf)+(offsets.st_gid))>>2)]=0
      HEAP32[(((buf)+(offsets.st_blksize))>>2)]=4096
      // Variables.
      HEAP32[(((buf)+(offsets.st_ino))>>2)]=obj.inodeNumber
      var time = Math.floor(obj.timestamp / 1000);
      if (offsets.st_atime === undefined) {
        offsets.st_atime = offsets.st_atim.tv_sec;
        offsets.st_mtime = offsets.st_mtim.tv_sec;
        offsets.st_ctime = offsets.st_ctim.tv_sec;
        var nanosec = (obj.timestamp % 1000) * 1000;
        HEAP32[(((buf)+(offsets.st_atim.tv_nsec))>>2)]=nanosec
        HEAP32[(((buf)+(offsets.st_mtim.tv_nsec))>>2)]=nanosec
        HEAP32[(((buf)+(offsets.st_ctim.tv_nsec))>>2)]=nanosec
      }
      HEAP32[(((buf)+(offsets.st_atime))>>2)]=time
      HEAP32[(((buf)+(offsets.st_mtime))>>2)]=time
      HEAP32[(((buf)+(offsets.st_ctime))>>2)]=time
      var mode = 0;
      var size = 0;
      var blocks = 0;
      var dev = 0;
      var rdev = 0;
      if (obj.isDevice) {
        //  Device numbers reuse inode numbers.
        dev = rdev = obj.inodeNumber;
        size = blocks = 0;
        mode = 0x2000;  // S_IFCHR.
      } else {
        dev = 1;
        rdev = 0;
        // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
        //       but this is not required by the standard.
        if (obj.isFolder) {
          size = 4096;
          blocks = 1;
          mode = 0x4000;  // S_IFDIR.
        } else {
          var data = obj.contents || obj.link;
          size = data.length;
          blocks = Math.ceil(data.length / 4096);
          mode = obj.link === undefined ? 0x8000 : 0xA000;  // S_IFREG, S_IFLNK.
        }
      }
      HEAP32[(((buf)+(offsets.st_dev))>>2)]=dev;
      HEAP32[(((buf)+(offsets.st_rdev))>>2)]=rdev;
      HEAP32[(((buf)+(offsets.st_size))>>2)]=size
      HEAP32[(((buf)+(offsets.st_blocks))>>2)]=blocks
      if (obj.read) mode |= 0x16D;  // S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH.
      if (obj.write) mode |= 0x92;  // S_IWUSR | S_IWGRP | S_IWOTH.
      HEAP32[(((buf)+(offsets.st_mode))>>2)]=mode
      return 0;
    }function _fstat(fildes, buf) {
      // int fstat(int fildes, struct stat *buf);
      // http://pubs.opengroup.org/onlinepubs/7908799/xsh/fstat.html
      if (!FS.streams[fildes]) {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      } else {
        var pathArray = intArrayFromString(FS.streams[fildes].path);
        return _stat(allocate(pathArray, 'i8', ALLOC_STACK), buf);
      }
    }
  function _fileno(stream) {
      // int fileno(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html
      // We use file descriptor numbers and FILE* streams interchangeably.
      return stream;
    }
  function _lseek(fildes, offset, whence) {
      // off_t lseek(int fildes, off_t offset, int whence);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/lseek.html
      if (FS.streams[fildes] && !FS.streams[fildes].object.isDevice) {
        var stream = FS.streams[fildes];
        var position = offset;
        if (whence === 1) {  // SEEK_CUR.
          position += stream.position;
        } else if (whence === 2) {  // SEEK_END.
          position += stream.object.contents.length;
        }
        if (position < 0) {
          ___setErrNo(ERRNO_CODES.EINVAL);
          return -1;
        } else {
          stream.ungotten = [];
          stream.position = position;
          return position;
        }
      } else {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
    }function _fseek(stream, offset, whence) {
      // int fseek(FILE *stream, long offset, int whence);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fseek.html
      var ret = _lseek(stream, offset, whence);
      if (ret == -1) {
        return -1;
      } else {
        FS.streams[stream].eof = false;
        return 0;
      }
    }
  function _fread(ptr, size, nitems, stream) {
      // size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html
      var bytesToRead = nitems * size;
      if (bytesToRead == 0) return 0;
      var bytesRead = _read(stream, ptr, bytesToRead);
      var streamObj = FS.streams[stream];
      if (bytesRead == -1) {
        if (streamObj) streamObj.error = true;
        return 0;
      } else {
        if (bytesRead < bytesToRead) streamObj.eof = true;
        return Math.floor(bytesRead / size);
      }
    }
  var _environ=allocate(1, "i32*", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) {
      // WARNING: Arbitrary limit!
      var MAX_ENV_VALUES = 64;
      var TOTAL_ENV_SIZE = 1024;
      // Statically allocate memory for the environment.
      var poolPtr;
      var envPtr;
      if (!___buildEnvironment.called) {
        ___buildEnvironment.called = true;
        // Set default values. Use string keys for Closure Compiler compatibility.
        ENV['USER'] = 'root';
        ENV['PATH'] = '/';
        ENV['PWD'] = '/';
        ENV['HOME'] = '/home/emscripten';
        ENV['LANG'] = 'en_US.UTF-8';
        ENV['_'] = './this.program';
        // Allocate memory.
        poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC);
        envPtr = allocate(MAX_ENV_VALUES * 4,
                          'i8*', ALLOC_STATIC);
        HEAP32[((envPtr)>>2)]=poolPtr
        HEAP32[((_environ)>>2)]=envPtr;
      } else {
        envPtr = HEAP32[((_environ)>>2)];
        poolPtr = HEAP32[((envPtr)>>2)];
      }
      // Collect key=value lines.
      var strings = [];
      var totalSize = 0;
      for (var key in env) {
        if (typeof env[key] === 'string') {
          var line = key + '=' + env[key];
          strings.push(line);
          totalSize += line.length;
        }
      }
      if (totalSize > TOTAL_ENV_SIZE) {
        throw new Error('Environment size exceeded TOTAL_ENV_SIZE!');
      }
      // Make new.
      var ptrSize = 4;
      for (var i = 0; i < strings.length; i++) {
        var line = strings[i];
        for (var j = 0; j < line.length; j++) {
          HEAP8[(((poolPtr)+(j))|0)]=line.charCodeAt(j);
        }
        HEAP8[(((poolPtr)+(j))|0)]=0;
        HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
        poolPtr += line.length + 1;
      }
      HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
    }var ENV={};function _getenv(name) {
      // char *getenv(const char *name);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html
      if (name === 0) return 0;
      name = Pointer_stringify(name);
      if (!ENV.hasOwnProperty(name)) return 0;
      if (_getenv.ret) _free(_getenv.ret);
      _getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL);
      return _getenv.ret;
    }
  function _putenv(string) {
      // int putenv(char *string);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/putenv.html
      // WARNING: According to the standard (and the glibc implementation), the
      //          string is taken by reference so future changes are reflected.
      //          We copy it instead, possibly breaking some uses.
      if (string === 0) {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return -1;
      }
      string = Pointer_stringify(string);
      var splitPoint = string.indexOf('=')
      if (string === '' || string.indexOf('=') === -1) {
        ___setErrNo(ERRNO_CODES.EINVAL);
        return -1;
      }
      var name = string.slice(0, splitPoint);
      var value = string.slice(splitPoint + 1);
      if (!(name in ENV) || ENV[name] !== value) {
        ENV[name] = value;
        ___buildEnvironment(ENV);
      }
      return 0;
    }
  function _freeXDot() {
  Module['printErr']('missing function: freeXDot'); abort(-1);
  }
  var ___tms_struct_layout={__size__:16,tms_utime:0,tms_stime:4,tms_cutime:8,tms_cstime:12};function _times(buffer) {
      // clock_t times(struct tms *buffer);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/times.html
      // NOTE: This is fake, since we can't calculate real CPU time usage in JS.
      if (buffer !== 0) {
        _memset(buffer, 0, ___tms_struct_layout.__size__);
      }
      return 0;
    }
  var ERRNO_MESSAGES={1:"Operation not permitted",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"Input/output error",6:"No such device or address",8:"Exec format error",9:"Bad file descriptor",10:"No child processes",11:"Resource temporarily unavailable",12:"Cannot allocate memory",13:"Permission denied",14:"Bad address",16:"Device or resource busy",17:"File exists",18:"Invalid 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:"Inappropriate ioctl for device",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:"Numerical argument out of domain",34:"Numerical result out of range",35:"Resource deadlock avoided",36:"File name too long",37:"No locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many levels of symbolic links",42:"No message of desired type",43:"Identifier removed",45:"Op not supported on transport endpoint",60:"Device not a stream",61:"No data available",62:"Timer expired",63:"Out of streams resources",67:"Link has been severed",71:"Protocol error",72:"Multihop attempted",74:"Bad message",75:"Value too large for defined data type",84:"Invalid or incomplete multibyte or wide character",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:"Protocol not supported",95:"Operation not supported",97:"Address family not supported by protocol",98:"Address already in use",99:"Cannot assign requested address",100:"Network is down",101:"Network is unreachable",102:"Network dropped connection on reset",103:"Software caused connection abort",104:"Connection reset by peer",105:"No buffer space available",106:"Transport endpoint is already connected",107:"Transport endpoint is not connected",110:"Connection timed out",111:"Connection refused",113:"No route to host",114:"Operation already in progress",115:"Operation now in progress",116:"Stale NFS file handle",122:"Disk quota exceeded",125:"Operation canceled",130:"Owner died",131:"State not recoverable"};function _strerror_r(errnum, strerrbuf, buflen) {
      if (errnum in ERRNO_MESSAGES) {
        if (ERRNO_MESSAGES[errnum].length > buflen - 1) {
          return ___setErrNo(ERRNO_CODES.ERANGE);
        } else {
          var msg = ERRNO_MESSAGES[errnum];
          for (var i = 0; i < msg.length; i++) {
            HEAP8[(((strerrbuf)+(i))|0)]=msg.charCodeAt(i)
          }
          HEAP8[(((strerrbuf)+(i))|0)]=0
          return 0;
        }
      } else {
        return ___setErrNo(ERRNO_CODES.EINVAL);
      }
    }function _strerror(errnum) {
      if (!_strerror.buffer) _strerror.buffer = _malloc(256);
      _strerror_r(errnum, _strerror.buffer, 256);
      return _strerror.buffer;
    }
  function ___errno_location() {
      if (!___setErrNo.ret) {
        ___setErrNo.ret = allocate([0], 'i32', ALLOC_NORMAL);
        HEAP32[((___setErrNo.ret)>>2)]=0
      }
      return ___setErrNo.ret;
    }var ___errno=___errno_location;
  function _ferror(stream) {
      // int ferror(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/ferror.html
      return Number(FS.streams[stream] && FS.streams[stream].error);
    }
  function _fflush(stream) {
      // int fflush(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
      var flush = function(filedes) {
        // Right now we write all data directly, except for output devices.
        if (FS.streams[filedes] && FS.streams[filedes].object.output) {
          if (!FS.streams[filedes].isTerminal) { // don't flush terminals, it would cause a \n to also appear
            FS.streams[filedes].object.output(null);
          }
        }
      };
      try {
        if (stream === 0) {
          for (var i = 0; i < FS.streams.length; i++) if (FS.streams[i]) flush(i);
        } else {
          flush(stream);
        }
        return 0;
      } catch (e) {
        ___setErrNo(ERRNO_CODES.EIO);
        return -1;
      }
    }
  var _llvm_va_start=undefined;
  function _vsprintf(s, format, va_arg) {
      return _sprintf(s, format, HEAP32[((va_arg)>>2)]);
    }
  function _llvm_va_end() {}
  function _feof(stream) {
      // int feof(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/feof.html
      return Number(FS.streams[stream] && FS.streams[stream].eof);
    }
  var _llvm_pow_f64=Math.pow;
  function _isalnum(chr) {
      return (chr >= 48 && chr <= 57) ||
             (chr >= 97 && chr <= 122) ||
             (chr >= 65 && chr <= 90);
    }
  function _isalpha(chr) {
      return (chr >= 97 && chr <= 122) ||
             (chr >= 65 && chr <= 90);
    }
  function _islower(chr) {
      return chr >= 97 && chr <= 122;
    }
  function _ispunct(chr) {
      return (chr >= 33 && chr <= 47) ||
             (chr >= 58 && chr <= 64) ||
             (chr >= 91 && chr <= 96) ||
             (chr >= 123 && chr <= 126);
    }
  function _ftell(stream) {
      // long ftell(FILE *stream);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/ftell.html
      if (FS.streams[stream]) {
        stream = FS.streams[stream];
        if (stream.object.isDevice) {
          ___setErrNo(ERRNO_CODES.ESPIPE);
          return -1;
        } else {
          return stream.position;
        }
      } else {
        ___setErrNo(ERRNO_CODES.EBADF);
        return -1;
      }
    }
  function _vfprintf(s, f, va_arg) {
      return _fprintf(s, f, HEAP32[((va_arg)>>2)]);
    }
  function _tmpnam(s, dir, prefix) {
      // char *tmpnam(char *s);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpnam.html
      // NOTE: The dir and prefix arguments are for internal use only.
      var folder = FS.findObject(dir || '/tmp');
      if (!folder || !folder.isFolder) {
        dir = '/tmp';
        folder = FS.findObject(dir);
        if (!folder || !folder.isFolder) return 0;
      }
      var name = prefix || 'file';
      do {
        name += String.fromCharCode(65 + Math.floor(Math.random() * 25));
      } while (name in folder.contents);
      var result = dir + '/' + name;
      if (!_tmpnam.buffer) _tmpnam.buffer = _malloc(256);
      if (!s) s = _tmpnam.buffer;
      for (var i = 0; i < result.length; i++) {
        HEAP8[(((s)+(i))|0)]=result.charCodeAt(i);
      }
      HEAP8[(((s)+(i))|0)]=0;
      return s;
    }function _tmpfile() {
      // FILE *tmpfile(void);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpfile.html
      // TODO: Delete the created file on closing.
      if (_tmpfile.mode) {
        _tmpfile.mode = allocate(intArrayFromString('w+'), 'i8', ALLOC_NORMAL);
      }
      return _fopen(_tmpnam(0), _tmpfile.mode);
    }
  function _vsnprintf(s, n, format, va_arg) {
      return _snprintf(s, n, format, HEAP32[((va_arg)>>2)]);
    }
  function _iscntrl(chr) {
      return (0 <= chr && chr <= 0x1F) || chr === 0x7F;
    }
  function _qsort(base, num, size, cmp) {
      if (num == 0 || size == 0) return;
      // forward calls to the JavaScript sort method
      // first, sort the items logically
      var comparator = function(x, y) {
        return Runtime.dynCall('iii', cmp, [x, y]);
      }
      var keys = [];
      for (var i = 0; i < num; i++) keys.push(i);
      keys.sort(function(a, b) {
        return comparator(base+a*size, base+b*size);
      });
      // apply the sort
      var temp = _malloc(num*size);
      _memcpy(temp, base, num*size);
      for (var i = 0; i < num; i++) {
        if (keys[i] == i) continue; // already in place
        _memcpy(base+i*size, temp+keys[i]*size, size);
      }
      _free(temp);
    }
  var _ceil=Math.ceil;
  function _bcopy() {
  Module['printErr']('missing function: bcopy'); abort(-1);
  }
  function _time(ptr) {
      var ret = Math.floor(Date.now()/1000);
      if (ptr) {
        HEAP32[((ptr)>>2)]=ret
      }
      return ret;
    }
  function _srand(seed) {}
  function _sysconf(name) {
      // long sysconf(int name);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
      switch(name) {
        case 8: return PAGE_SIZE;
        case 54:
        case 56:
        case 21:
        case 61:
        case 63:
        case 22:
        case 67:
        case 23:
        case 24:
        case 25:
        case 26:
        case 27:
        case 69:
        case 28:
        case 101:
        case 70:
        case 71:
        case 29:
        case 30:
        case 199:
        case 75:
        case 76:
        case 32:
        case 43:
        case 44:
        case 80:
        case 46:
        case 47:
        case 45:
        case 48:
        case 49:
        case 42:
        case 82:
        case 33:
        case 7:
        case 108:
        case 109:
        case 107:
        case 112:
        case 119:
        case 121:
          return 200809;
        case 13:
        case 104:
        case 94:
        case 95:
        case 34:
        case 35:
        case 77:
        case 81:
        case 83:
        case 84:
        case 85:
        case 86:
        case 87:
        case 88:
        case 89:
        case 90:
        case 91:
        case 94:
        case 95:
        case 110:
        case 111:
        case 113:
        case 114:
        case 115:
        case 116:
        case 117:
        case 118:
        case 120:
        case 40:
        case 16:
        case 79:
        case 19:
          return -1;
        case 92:
        case 93:
        case 5:
        case 72:
        case 6:
        case 74:
        case 92:
        case 93:
        case 96:
        case 97:
        case 98:
        case 99:
        case 102:
        case 103:
        case 105:
          return 1;
        case 38:
        case 66:
        case 50:
        case 51:
        case 4:
          return 1024;
        case 15:
        case 64:
        case 41:
          return 32;
        case 55:
        case 37:
        case 17:
          return 2147483647;
        case 18:
        case 1:
          return 47839;
        case 59:
        case 57:
          return 99;
        case 68:
        case 58:
          return 2048;
        case 0: return 2097152;
        case 3: return 65536;
        case 14: return 32768;
        case 73: return 32767;
        case 39: return 16384;
        case 60: return 1000;
        case 106: return 700;
        case 52: return 256;
        case 62: return 255;
        case 2: return 100;
        case 65: return 64;
        case 36: return 20;
        case 100: return 16;
        case 20: return 6;
        case 53: return 4;
        case 10: return 1;
      }
      ___setErrNo(ERRNO_CODES.EINVAL);
      return -1;
    }
  function _sbrk(bytes) {
      // Implement a Linux-like 'memory area' for our 'process'.
      // Changes the size of the memory area by |bytes|; returns the
      // address of the previous top ('break') of the memory area
      // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
      var self = _sbrk;
      if (!self.called) {
        DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
        self.called = true;
        assert(Runtime.dynamicAlloc);
        self.alloc = Runtime.dynamicAlloc;
        Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
      }
      var ret = DYNAMICTOP;
      if (bytes != 0) self.alloc(bytes);
      return ret;  // Previous break location.
    }
  var _llvm_memset_p0i8_i64=_memset;
  Module["_memmove"] = _memmove;var _llvm_memmove_p0i8_p0i8_i32=_memmove;
  var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () {
          Browser.mainLoop.shouldPause = true;
        },resume:function () {
          if (Browser.mainLoop.paused) {
            Browser.mainLoop.paused = false;
            Browser.mainLoop.scheduler();
          }
          Browser.mainLoop.shouldPause = false;
        },updateStatus:function () {
          if (Module['setStatus']) {
            var message = Module['statusMessage'] || 'Please wait...';
            var remaining = Browser.mainLoop.remainingBlockers;
            var expected = Browser.mainLoop.expectedBlockers;
            if (remaining) {
              if (remaining < expected) {
                Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
              } else {
                Module['setStatus'](message);
              }
            } else {
              Module['setStatus']('');
            }
          }
        }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
        if (Browser.initted) return;
        Browser.initted = true;
        try {
          new Blob();
          Browser.hasBlobConstructor = true;
        } catch(e) {
          Browser.hasBlobConstructor = false;
          console.log("warning: no blob constructor, cannot create blobs with mimetypes");
        }
        Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
        Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : console.log("warning: cannot create object URLs");
        // Support for plugins that can process preloaded files. You can add more of these to
        // your app by creating and appending to Module.preloadPlugins.
        //
        // Each plugin is asked if it can handle a file based on the file's name. If it can,
        // it is given the file's raw data. When it is done, it calls a callback with the file's
        // (possibly modified) data. For example, a plugin might decompress a file, or it
        // might create some side data structure for use later (like an Image element, etc.).
        function getMimetype(name) {
          return {
            'jpg': 'image/jpeg',
            'jpeg': 'image/jpeg',
            'png': 'image/png',
            'bmp': 'image/bmp',
            'ogg': 'audio/ogg',
            'wav': 'audio/wav',
            'mp3': 'audio/mpeg'
          }[name.substr(name.lastIndexOf('.')+1)];
        }
        if (!Module["preloadPlugins"]) Module["preloadPlugins"] = [];
        var imagePlugin = {};
        imagePlugin['canHandle'] = function(name) {
          return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/.exec(name);
        };
        imagePlugin['handle'] = function(byteArray, name, onload, onerror) {
          var b = null;
          if (Browser.hasBlobConstructor) {
            try {
              b = new Blob([byteArray], { type: getMimetype(name) });
            } catch(e) {
              Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
            }
          }
          if (!b) {
            var bb = new Browser.BlobBuilder();
            bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
            b = bb.getBlob();
          }
          var url = Browser.URLObject.createObjectURL(b);
          var img = new Image();
          img.onload = function() {
            assert(img.complete, 'Image ' + name + ' could not be decoded');
            var canvas = document.createElement('canvas');
            canvas.width = img.width;
            canvas.height = img.height;
            var ctx = canvas.getContext('2d');
            ctx.drawImage(img, 0, 0);
            Module["preloadedImages"][name] = canvas;
            Browser.URLObject.revokeObjectURL(url);
            if (onload) onload(byteArray);
          };
          img.onerror = function(event) {
            console.log('Image ' + url + ' could not be decoded');
            if (onerror) onerror();
          };
          img.src = url;
        };
        Module['preloadPlugins'].push(imagePlugin);
        var audioPlugin = {};
        audioPlugin['canHandle'] = function(name) {
          return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
        };
        audioPlugin['handle'] = function(byteArray, name, onload, onerror) {
          var done = false;
          function finish(audio) {
            if (done) return;
            done = true;
            Module["preloadedAudios"][name] = audio;
            if (onload) onload(byteArray);
          }
          function fail() {
            if (done) return;
            done = true;
            Module["preloadedAudios"][name] = new Audio(); // empty shim
            if (onerror) onerror();
          }
          if (Browser.hasBlobConstructor) {
            try {
              var b = new Blob([byteArray], { type: getMimetype(name) });
            } catch(e) {
              return fail();
            }
            var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
            var audio = new Audio();
            audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
            audio.onerror = function(event) {
              if (done) return;
              console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
              function encode64(data) {
                var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
                var PAD = '=';
                var ret = '';
                var leftchar = 0;
                var leftbits = 0;
                for (var i = 0; i < data.length; i++) {
                  leftchar = (leftchar << 8) | data[i];
                  leftbits += 8;
                  while (leftbits >= 6) {
                    var curr = (leftchar >> (leftbits-6)) & 0x3f;
                    leftbits -= 6;
                    ret += BASE[curr];
                  }
                }
                if (leftbits == 2) {
                  ret += BASE[(leftchar&3) << 4];
                  ret += PAD + PAD;
                } else if (leftbits == 4) {
                  ret += BASE[(leftchar&0xf) << 2];
                  ret += PAD;
                }
                return ret;
              }
              audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
              finish(audio); // we don't wait for confirmation this worked - but it's worth trying
            };
            audio.src = url;
            // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
            setTimeout(function() {
              finish(audio); // try to use it even though it is not necessarily ready to play
            }, 10000);
          } else {
            return fail();
          }
        };
        Module['preloadPlugins'].push(audioPlugin);
        // Canvas event setup
        var canvas = Module['canvas'];
        canvas.requestPointerLock = canvas['requestPointerLock'] ||
                                    canvas['mozRequestPointerLock'] ||
                                    canvas['webkitRequestPointerLock'];
        canvas.exitPointerLock = document['exitPointerLock'] ||
                                 document['mozExitPointerLock'] ||
                                 document['webkitExitPointerLock'];
        canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
        function pointerLockChange() {
          Browser.pointerLock = document['pointerLockElement'] === canvas ||
                                document['mozPointerLockElement'] === canvas ||
                                document['webkitPointerLockElement'] === canvas;
        }
        document.addEventListener('pointerlockchange', pointerLockChange, false);
        document.addEventListener('mozpointerlockchange', pointerLockChange, false);
        document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
        if (Module['elementPointerLock']) {
          canvas.addEventListener("click", function(ev) {
            if (!Browser.pointerLock && canvas.requestPointerLock) {
              canvas.requestPointerLock();
              ev.preventDefault();
            }
          }, false);
        }
      },createContext:function (canvas, useWebGL, setInModule) {
        var ctx;
        try {
          if (useWebGL) {
            ctx = canvas.getContext('experimental-webgl', {
              alpha: false
            });
          } else {
            ctx = canvas.getContext('2d');
          }
          if (!ctx) throw ':(';
        } catch (e) {
          Module.print('Could not create canvas - ' + e);
          return null;
        }
        if (useWebGL) {
          // Set the background of the WebGL canvas to black
          canvas.style.backgroundColor = "black";
          // Warn on context loss
          canvas.addEventListener('webglcontextlost', function(event) {
            alert('WebGL context lost. You will need to reload the page.');
          }, false);
        }
        if (setInModule) {
          Module.ctx = ctx;
          Module.useWebGL = useWebGL;
          Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
          Browser.init();
        }
        return ctx;
      },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
        this.lockPointer = lockPointer;
        this.resizeCanvas = resizeCanvas;
        if (typeof this.lockPointer === 'undefined') this.lockPointer = true;
        if (typeof this.resizeCanvas === 'undefined') this.resizeCanvas = false;
        var canvas = Module['canvas'];
        function fullScreenChange() {
          Browser.isFullScreen = false;
          if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
               document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
               document['fullScreenElement'] || document['fullscreenElement']) === canvas) {
            canvas.cancelFullScreen = document['cancelFullScreen'] ||
                                      document['mozCancelFullScreen'] ||
                                      document['webkitCancelFullScreen'];
            canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
            if (Browser.lockPointer) canvas.requestPointerLock();
            Browser.isFullScreen = true;
            if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
          } else if (Browser.resizeCanvas){
            Browser.setWindowedCanvasSize();
          }
          if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
        }
        if (!this.fullScreenHandlersInstalled) {
          this.fullScreenHandlersInstalled = true;
          document.addEventListener('fullscreenchange', fullScreenChange, false);
          document.addEventListener('mozfullscreenchange', fullScreenChange, false);
          document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
        }
        canvas.requestFullScreen = canvas['requestFullScreen'] ||
                                   canvas['mozRequestFullScreen'] ||
                                   (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
        canvas.requestFullScreen(); 
      },requestAnimationFrame:function (func) {
        if (!window.requestAnimationFrame) {
          window.requestAnimationFrame = window['requestAnimationFrame'] ||
                                         window['mozRequestAnimationFrame'] ||
                                         window['webkitRequestAnimationFrame'] ||
                                         window['msRequestAnimationFrame'] ||
                                         window['oRequestAnimationFrame'] ||
                                         window['setTimeout'];
        }
        window.requestAnimationFrame(func);
      },getMovementX:function (event) {
        return event['movementX'] ||
               event['mozMovementX'] ||
               event['webkitMovementX'] ||
               0;
      },getMovementY:function (event) {
        return event['movementY'] ||
               event['mozMovementY'] ||
               event['webkitMovementY'] ||
               0;
      },xhrLoad:function (url, onload, onerror) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.responseType = 'arraybuffer';
        xhr.onload = function() {
          if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
            onload(xhr.response);
          } else {
            onerror();
          }
        };
        xhr.onerror = onerror;
        xhr.send(null);
      },asyncLoad:function (url, onload, onerror, noRunDep) {
        Browser.xhrLoad(url, function(arrayBuffer) {
          assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
          onload(new Uint8Array(arrayBuffer));
          if (!noRunDep) removeRunDependency('al ' + url);
        }, function(event) {
          if (onerror) {
            onerror();
          } else {
            throw 'Loading data file "' + url + '" failed.';
          }
        });
        if (!noRunDep) addRunDependency('al ' + url);
      },resizeListeners:[],updateResizeListeners:function () {
        var canvas = Module['canvas'];
        Browser.resizeListeners.forEach(function(listener) {
          listener(canvas.width, canvas.height);
        });
      },setCanvasSize:function (width, height, noUpdates) {
        var canvas = Module['canvas'];
        canvas.width = width;
        canvas.height = height;
        if (!noUpdates) Browser.updateResizeListeners();
      },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
        var canvas = Module['canvas'];
        this.windowedWidth = canvas.width;
        this.windowedHeight = canvas.height;
        canvas.width = screen.width;
        canvas.height = screen.height;
        var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
        flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
        HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
        Browser.updateResizeListeners();
      },setWindowedCanvasSize:function () {
        var canvas = Module['canvas'];
        canvas.width = this.windowedWidth;
        canvas.height = this.windowedHeight;
        var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
        flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
        HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
        Browser.updateResizeListeners();
      }};
__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
___strtok_state = Runtime.staticAlloc(4);
_fgetc.ret = allocate([0], "i8", ALLOC_STATIC);
_fputc.ret = allocate([0], "i8", ALLOC_STATIC);
___buildEnvironment(ENV);
Module["requestFullScreen"] = function(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
  Module["requestAnimationFrame"] = function(func) { Browser.requestAnimationFrame(func) };
  Module["pauseMainLoop"] = function() { Browser.mainLoop.pause() };
  Module["resumeMainLoop"] = function() { Browser.mainLoop.resume() };
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true; // seal the static portion of memory
STACK_MAX = STACK_BASE + 5242880;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY); // Stack must fit in TOTAL_MEMORY; allocations from here on may enlarge TOTAL_MEMORY
var Math_min = Math.min;
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_viiiffi(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module.dynCall_viiiffi(index,a1,a2,a3,a4,a5,a6);
  } 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_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_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_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_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  try {
    Module.dynCall_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  } 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_iiiiii(index,a1,a2,a3,a4,a5) {
  try {
    return Module.dynCall_iiiiii(index,a1,a2,a3,a4,a5);
  } 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);
  }
}
function asmPrintInt(x, y) {
  Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack);
}
function asmPrintFloat(x, y) {
  Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack);
}
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
  'use asm';
  var HEAP8 = new global.Int8Array(buffer);
  var HEAP16 = new global.Int16Array(buffer);
  var HEAP32 = new global.Int32Array(buffer);
  var HEAPU8 = new global.Uint8Array(buffer);
  var HEAPU16 = new global.Uint16Array(buffer);
  var HEAPU32 = new global.Uint32Array(buffer);
  var HEAPF32 = new global.Float32Array(buffer);
  var HEAPF64 = new global.Float64Array(buffer);
  var STACKTOP=env.STACKTOP|0;
  var STACK_MAX=env.STACK_MAX|0;
  var tempDoublePtr=env.tempDoublePtr|0;
  var ABORT=env.ABORT|0;
  var _stdout=env._stdout|0;
  var _stderr=env._stderr|0;
  var NaN=+env.NaN;
  var Infinity=+env.Infinity;
  var __THREW__ = 0;
  var threwValue = 0;
  var setjmpId = 0;
  var undef = 0;
  var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0;
  var tempRet0 = 0;
  var tempRet1 = 0;
  var tempRet2 = 0;
  var tempRet3 = 0;
  var tempRet4 = 0;
  var tempRet5 = 0;
  var tempRet6 = 0;
  var tempRet7 = 0;
  var tempRet8 = 0;
  var tempRet9 = 0;
  var Math_floor=global.Math.floor;
  var Math_abs=global.Math.abs;
  var Math_sqrt=global.Math.sqrt;
  var Math_pow=global.Math.pow;
  var Math_cos=global.Math.cos;
  var Math_sin=global.Math.sin;
  var Math_tan=global.Math.tan;
  var Math_acos=global.Math.acos;
  var Math_asin=global.Math.asin;
  var Math_atan=global.Math.atan;
  var Math_atan2=global.Math.atan2;
  var Math_exp=global.Math.exp;
  var Math_log=global.Math.log;
  var Math_ceil=global.Math.ceil;
  var Math_imul=global.Math.imul;
  var abort=env.abort;
  var assert=env.assert;
  var asmPrintInt=env.asmPrintInt;
  var asmPrintFloat=env.asmPrintFloat;
  var copyTempDouble=env.copyTempDouble;
  var copyTempFloat=env.copyTempFloat;
  var Math_min=env.min;
  var invoke_iiiii=env.invoke_iiiii;
  var invoke_viiiffi=env.invoke_viiiffi;
  var invoke_viiiii=env.invoke_viiiii;
  var invoke_vi=env.invoke_vi;
  var invoke_vii=env.invoke_vii;
  var invoke_ii=env.invoke_ii;
  var invoke_iiii=env.invoke_iiii;
  var invoke_viii=env.invoke_viii;
  var invoke_v=env.invoke_v;
  var invoke_viiiiiiiii=env.invoke_viiiiiiiii;
  var invoke_viiiiii=env.invoke_viiiiii;
  var invoke_iii=env.invoke_iii;
  var invoke_iiiiii=env.invoke_iiiiii;
  var invoke_viiii=env.invoke_viiii;
  var _lseek=env._lseek;
  var __scanString=env.__scanString;
  var _fclose=env._fclose;
  var __isFloat=env.__isFloat;
  var _fflush=env._fflush;
  var _strtol=env._strtol;
  var _fputc=env._fputc;
  var _strtok=env._strtok;
  var _fwrite=env._fwrite;
  var _tmpnam=env._tmpnam;
  var _isspace=env._isspace;
  var _read=env._read;
  var _ceil=env._ceil;
  var _fileno=env._fileno;
  var _strstr=env._strstr;
  var _fsync=env._fsync;
  var _strcmp=env._strcmp;
  var _strncmp=env._strncmp;
  var _tmpfile=env._tmpfile;
  var _snprintf=env._snprintf;
  var _fgetc=env._fgetc;
  var _hypot=env._hypot;
  var _fgets=env._fgets;
  var _close=env._close;
  var _strchr=env._strchr;
  var ___setErrNo=env.___setErrNo;
  var _access=env._access;
  var _ftell=env._ftell;
  var _exit=env._exit;
  var _sprintf=env._sprintf;
  var _strrchr=env._strrchr;
  var _ferror=env._ferror;
  var _cos=env._cos;
  var _putenv=env._putenv;
  var _times=env._times;
  var _bsearch=env._bsearch;
  var _islower=env._islower;
  var __exit=env.__exit;
  var _isupper=env._isupper;
  var _rand=env._rand;
  var _setlocale=env._setlocale;
  var _bcopy=env._bcopy;
  var _toupper=env._toupper;
  var _pread=env._pread;
  var _fopen=env._fopen;
  var _open=env._open;
  var _isalnum=env._isalnum;
  var _qsort=env._qsort;
  var _isalpha=env._isalpha;
  var _strdup=env._strdup;
  var _srand=env._srand;
  var __formatString=env.__formatString;
  var _getenv=env._getenv;
  var _atoi=env._atoi;
  var _vfprintf=env._vfprintf;
  var _llvm_pow_f64=env._llvm_pow_f64;
  var _sbrk=env._sbrk;
  var ___errno_location=env.___errno_location;
  var _strerror=env._strerror;
  var _fstat=env._fstat;
  var __parseInt=env.__parseInt;
  var _freeXDot=env._freeXDot;
  var _vsprintf=env._vsprintf;
  var _vsnprintf=env._vsnprintf;
  var _sscanf=env._sscanf;
  var _sysconf=env._sysconf;
  var _fread=env._fread;
  var _strtok_r=env._strtok_r;
  var _abort=env._abort;
  var _fprintf=env._fprintf;
  var ___buildEnvironment=env.___buildEnvironment;
  var _feof=env._feof;
  var _statXDot=env._statXDot;
  var _ispunct=env._ispunct;
  var _fabs=env._fabs;
  var __reallyNegative=env.__reallyNegative;
  var _fseek=env._fseek;
  var _sqrt=env._sqrt;
  var _write=env._write;
  var _sin=env._sin;
  var _stat=env._stat;
  var _parseXDotF=env._parseXDotF;
  var _llvm_va_end=env._llvm_va_end;
  var ___assert_func=env.___assert_func;
  var _pwrite=env._pwrite;
  var _strerror_r=env._strerror_r;
  var _iscntrl=env._iscntrl;
  var _atan2=env._atan2;
  var _time=env._time;
// EMSCRIPTEN_START_FUNCS
function stackAlloc(size) {
  size = size | 0;
  var ret = 0;
  ret = STACKTOP;
  STACKTOP = STACKTOP + size | 0;
  STACKTOP = STACKTOP + 7 >> 3 << 3;
  return ret | 0;
}
function stackSave() {
  return STACKTOP | 0;
}
function stackRestore(top) {
  top = top | 0;
  STACKTOP = top;
}
function setThrew(threw, value) {
  threw = threw | 0;
  value = value | 0;
  if ((__THREW__ | 0) == 0) {
    __THREW__ = threw;
    threwValue = value;
  }
}
function setTempRet0(value) {
  value = value | 0;
  tempRet0 = value;
}
function setTempRet1(value) {
  value = value | 0;
  tempRet1 = value;
}
function setTempRet2(value) {
  value = value | 0;
  tempRet2 = value;
}
function setTempRet3(value) {
  value = value | 0;
  tempRet3 = value;
}
function setTempRet4(value) {
  value = value | 0;
  tempRet4 = value;
}
function setTempRet5(value) {
  value = value | 0;
  tempRet5 = value;
}
function setTempRet6(value) {
  value = value | 0;
  tempRet6 = value;
}
function setTempRet7(value) {
  value = value | 0;
  tempRet7 = value;
}
function setTempRet8(value) {
  value = value | 0;
  tempRet8 = value;
}
function setTempRet9(value) {
  value = value | 0;
  tempRet9 = value;
}
function _dtflatten($dt) {
  $dt = $dt | 0;
  var $data = 0, $0 = 0, $type = 0, $1 = 0, $and = 0, $tobool = 0, $here = 0, $2 = 0, $and4 = 0, $tobool5 = 0, $_htab = 0, $3 = 0, $ntab = 0, $4 = 0, $add_ptr = 0, $cmp46 = 0, $s_049 = 0, $last_048 = 0, $list_047 = 0, $5 = 0, $tobool9 = 0, $tobool11 = 0, $right = 0, $list_1_ph = 0, $last_1_ph = 0, $last_1 = 0, $right14 = 0, $6 = 0, $tobool15 = 0, $list_2 = 0, $last_2 = 0, $incdec_ptr = 0, $cmp = 0, $and21 = 0, $tobool22 = 0, $hh25 = 0, $_head = 0, $7 = 0, $here28 = 0, $8 = 0, $tobool29 = 0, $hl40 = 0, $_left41 = 0, $9 = 0, $tobool3242 = 0, $r_0_lcssa = 0, $r_1_in35 = 0, $r_136 = 0, $tobool4137 = 0, $10 = 0, $hl44 = 0, $r_043 = 0, $right34 = 0, $11 = 0, $12 = 0, $_c34 = 0, $hl = 0, $_left = 0, $13 = 0, $tobool32 = 0, $r_139 = 0, $r_1_in38 = 0, $hl43 = 0, $_left44 = 0, $14 = 0, $tobool45 = 0, $r_0_pn_be = 0, $r_1_in = 0, $r_1 = 0, $tobool41 = 0, $t_0 = 0, $r_2 = 0, $right47 = 0, $15 = 0, $16 = 0, $_c = 0, $hl51 = 0, $_left52 = 0, $17 = 0, $tobool53 = 0, $list_3 = 0, $18 = 0, $here63 = 0, $19 = 0, $type65 = 0, $20 = 0, $or = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $data = $dt + 8 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    $type = $0 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $and = $1 & 4096;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $here = $0 + 4 | 0;
    $2 = HEAP32[$here >> 2] | 0;
    $retval_0 = $2;
    label = 24;
    break;
   case 4:
    $and4 = $1 & 3;
    $tobool5 = ($and4 | 0) == 0;
    if ($tobool5) {
      label = 13;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $_htab = $0 + 8 | 0;
    $3 = HEAP32[$_htab >> 2] | 0;
    $ntab = $0 + 12 | 0;
    $4 = HEAP32[$ntab >> 2] | 0;
    $add_ptr = $3 + ($4 << 2) | 0;
    $cmp46 = ($4 | 0) > 0;
    if ($cmp46) {
      $list_047 = 0;
      $last_048 = 0;
      $s_049 = $3;
      label = 6;
      break;
    } else {
      $list_3 = 0;
      label = 23;
      break;
    }
   case 6:
    $5 = HEAP32[$s_049 >> 2] | 0;
    $tobool9 = ($5 | 0) == 0;
    if ($tobool9) {
      $last_2 = $last_048;
      $list_2 = $list_047;
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $tobool11 = ($last_048 | 0) == 0;
    if ($tobool11) {
      $last_1_ph = $5;
      $list_1_ph = $5;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $right = $last_048 | 0;
    HEAP32[$right >> 2] = $5;
    $last_1_ph = $last_048;
    $list_1_ph = $list_047;
    label = 9;
    break;
   case 9:
    $last_1 = $last_1_ph;
    label = 10;
    break;
   case 10:
    $right14 = $last_1 | 0;
    $6 = HEAP32[$right14 >> 2] | 0;
    $tobool15 = ($6 | 0) == 0;
    if ($tobool15) {
      label = 11;
      break;
    } else {
      $last_1 = $6;
      label = 10;
      break;
    }
   case 11:
    HEAP32[$s_049 >> 2] = $last_1;
    $last_2 = $last_1;
    $list_2 = $list_1_ph;
    label = 12;
    break;
   case 12:
    $incdec_ptr = $s_049 + 4 | 0;
    $cmp = $incdec_ptr >>> 0 < $add_ptr >>> 0;
    if ($cmp) {
      $list_047 = $list_2;
      $last_048 = $last_2;
      $s_049 = $incdec_ptr;
      label = 6;
      break;
    } else {
      $list_3 = $list_2;
      label = 23;
      break;
    }
   case 13:
    $and21 = $1 & 112;
    $tobool22 = ($and21 | 0) == 0;
    if ($tobool22) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $hh25 = $0 + 8 | 0;
    $_head = $hh25;
    $7 = HEAP32[$_head >> 2] | 0;
    $list_3 = $7;
    label = 23;
    break;
   case 15:
    $here28 = $0 + 4 | 0;
    $8 = HEAP32[$here28 >> 2] | 0;
    $tobool29 = ($8 | 0) == 0;
    if ($tobool29) {
      $list_3 = 0;
      label = 23;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $hl40 = $8 + 4 | 0;
    $_left41 = $hl40;
    $9 = HEAP32[$_left41 >> 2] | 0;
    $tobool3242 = ($9 | 0) == 0;
    if ($tobool3242) {
      $r_0_lcssa = $8;
      label = 17;
      break;
    } else {
      $r_043 = $8;
      $hl44 = $hl40;
      $10 = $9;
      label = 18;
      break;
    }
   case 17:
    $r_1_in35 = $r_0_lcssa | 0;
    $r_136 = HEAP32[$r_1_in35 >> 2] | 0;
    $tobool4137 = ($r_136 | 0) == 0;
    if ($tobool4137) {
      $list_3 = $r_0_lcssa;
      label = 23;
      break;
    } else {
      $r_1_in38 = $r_1_in35;
      $r_139 = $r_136;
      label = 19;
      break;
    }
   case 18:
    $right34 = $10 | 0;
    $11 = HEAP32[$right34 >> 2] | 0;
    $12 = $hl44 | 0;
    $_c34 = $11;
    HEAP32[$12 >> 2] = $_c34;
    HEAP32[$right34 >> 2] = $r_043;
    $hl = $10 + 4 | 0;
    $_left = $hl;
    $13 = HEAP32[$_left >> 2] | 0;
    $tobool32 = ($13 | 0) == 0;
    if ($tobool32) {
      $r_0_lcssa = $10;
      label = 17;
      break;
    } else {
      $r_043 = $10;
      $hl44 = $hl;
      $10 = $13;
      label = 18;
      break;
    }
   case 19:
    $hl43 = $r_139 + 4 | 0;
    $_left44 = $hl43;
    $14 = HEAP32[$_left44 >> 2] | 0;
    $tobool45 = ($14 | 0) == 0;
    if ($tobool45) {
      $r_0_pn_be = $r_139;
      label = 20;
      break;
    } else {
      $r_2 = $r_139;
      $t_0 = $14;
      label = 21;
      break;
    }
   case 20:
    $r_1_in = $r_0_pn_be | 0;
    $r_1 = HEAP32[$r_1_in >> 2] | 0;
    $tobool41 = ($r_1 | 0) == 0;
    if ($tobool41) {
      $list_3 = $r_0_lcssa;
      label = 23;
      break;
    } else {
      $r_1_in38 = $r_1_in;
      $r_139 = $r_1;
      label = 19;
      break;
    }
   case 21:
    $right47 = $t_0 | 0;
    $15 = HEAP32[$right47 >> 2] | 0;
    $16 = $r_2 + 4 | 0;
    $_c = $15;
    HEAP32[$16 >> 2] = $_c;
    HEAP32[$right47 >> 2] = $r_2;
    $hl51 = $t_0 + 4 | 0;
    $_left52 = $hl51;
    $17 = HEAP32[$_left52 >> 2] | 0;
    $tobool53 = ($17 | 0) == 0;
    if ($tobool53) {
      label = 22;
      break;
    } else {
      $r_2 = $t_0;
      $t_0 = $17;
      label = 21;
      break;
    }
   case 22:
    HEAP32[$r_1_in38 >> 2] = $t_0;
    $r_0_pn_be = $t_0;
    label = 20;
    break;
   case 23:
    $18 = HEAP32[$data >> 2] | 0;
    $here63 = $18 + 4 | 0;
    HEAP32[$here63 >> 2] = $list_3;
    $19 = HEAP32[$data >> 2] | 0;
    $type65 = $19 | 0;
    $20 = HEAP32[$type65 >> 2] | 0;
    $or = $20 | 4096;
    HEAP32[$type65 >> 2] = $or;
    $retval_0 = $list_3;
    label = 24;
    break;
   case 24:
    return $retval_0 | 0;
  }
  return 0;
}
function _vizRenderFromString($string, $format) {
  $string = $string | 0;
  $format = $format | 0;
  var $call = 0, $call1 = 0, $0 = 0;
  $call = _gvContext() | 0;
  _gvAddLibrary($call, 14400);
  _gvAddLibrary($call, 14392);
  $call1 = _agmemread($string) | 0;
  $0 = $call1;
  _gvLayout($call, $0, 163256);
  _gvRender($call, $0, $format, HEAP32[_stdout >> 2] | 0);
  _gvFreeLayout(0, $0);
  _agclose($call1);
  _gvFreeContext($call);
  return;
}
function _dtclose($dt) {
  $dt = $dt | 0;
  var $tobool = 0, $nview = 0, $0 = 0, $cmp = 0, $disc1 = 0, $1 = 0, $eventf = 0, $2 = 0, $tobool2 = 0, $call = 0, $cmp4 = 0, $ev_0 = 0, $view = 0, $3 = 0, $tobool7 = 0, $call9 = 0, $cmp11 = 0, $meth = 0, $4 = 0, $searchf = 0, $5 = 0, $call13 = 0, $call14 = 0, $cmp15 = 0, $data = 0, $6 = 0, $ntab = 0, $7 = 0, $cmp18 = 0, $memoryf = 0, $8 = 0, $_htab = 0, $9 = 0, $10 = 0, $call21 = 0, $memoryf23 = 0, $11 = 0, $12 = 0, $13 = 0, $call25 = 0, $type = 0, $14 = 0, $cmp27 = 0, $15 = 0, $cmp32 = 0, $or_cond = 0, $memoryf34 = 0, $16 = 0, $17 = 0, $call35 = 0, $18 = 0, $tobool39 = 0, $call42 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($dt | 0) == 0;
    if ($tobool) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $nview = $dt + 24 | 0;
    $0 = HEAP32[$nview >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $disc1 = $dt + 4 | 0;
    $1 = HEAP32[$disc1 >> 2] | 0;
    $eventf = $1 + 32 | 0;
    $2 = HEAP32[$eventf >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      $ev_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call = FUNCTION_TABLE_iiiii[$2 & 1023]($dt, 2, 0, $1) | 0;
    $cmp4 = ($call | 0) < 0;
    if ($cmp4) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      $ev_0 = $call;
      label = 6;
      break;
    }
   case 6:
    $view = $dt + 28 | 0;
    $3 = HEAP32[$view >> 2] | 0;
    $tobool7 = ($3 | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call9 = _dtview($dt, 0) | 0;
    label = 8;
    break;
   case 8:
    $cmp11 = ($ev_0 | 0) == 0;
    if ($cmp11) {
      label = 9;
      break;
    } else {
      label = 13;
      break;
    }
   case 9:
    $meth = $dt + 16 | 0;
    $4 = HEAP32[$meth >> 2] | 0;
    $searchf = $4 | 0;
    $5 = HEAP32[$searchf >> 2] | 0;
    $call13 = FUNCTION_TABLE_iiii[$5 & 1023]($dt, 0, 64) | 0;
    $call14 = _dtsize($dt) | 0;
    $cmp15 = ($call14 | 0) > 0;
    if ($cmp15) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $data = $dt + 8 | 0;
    $6 = HEAP32[$data >> 2] | 0;
    $ntab = $6 + 12 | 0;
    $7 = HEAP32[$ntab >> 2] | 0;
    $cmp18 = ($7 | 0) > 0;
    if ($cmp18) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $memoryf = $dt + 12 | 0;
    $8 = HEAP32[$memoryf >> 2] | 0;
    $_htab = $6 + 8 | 0;
    $9 = HEAP32[$_htab >> 2] | 0;
    $10 = $9;
    $call21 = FUNCTION_TABLE_iiiii[$8 & 1023]($dt, $10, 0, $1) | 0;
    label = 12;
    break;
   case 12:
    $memoryf23 = $dt + 12 | 0;
    $11 = HEAP32[$memoryf23 >> 2] | 0;
    $12 = HEAP32[$data >> 2] | 0;
    $13 = $12;
    $call25 = FUNCTION_TABLE_iiiii[$11 & 1023]($dt, $13, 0, $1) | 0;
    label = 13;
    break;
   case 13:
    $type = $dt + 20 | 0;
    $14 = HEAP32[$type >> 2] | 0;
    $cmp27 = ($14 | 0) == 0;
    if ($cmp27) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $15 = $dt;
    _free($15);
    label = 17;
    break;
   case 15:
    $cmp32 = ($14 | 0) == 1;
    $or_cond = $cmp11 & $cmp32;
    if ($or_cond) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $memoryf34 = $dt + 12 | 0;
    $16 = HEAP32[$memoryf34 >> 2] | 0;
    $17 = $dt;
    $call35 = FUNCTION_TABLE_iiiii[$16 & 1023]($dt, $17, 0, $1) | 0;
    label = 17;
    break;
   case 17:
    $18 = HEAP32[$eventf >> 2] | 0;
    $tobool39 = ($18 | 0) == 0;
    if ($tobool39) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call42 = FUNCTION_TABLE_iiiii[$18 & 1023]($dt, 6, 0, $1) | 0;
    $retval_0 = 0;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtdisc($dt, $disc, $type) {
  $dt = $dt | 0;
  $disc = $disc | 0;
  $type = $type | 0;
  var $disc1 = 0, $0 = 0, $tobool = 0, $memoryf = 0, $1 = 0, $memoryf3 = 0, $tobool4 = 0, $dtmemory_ = 0, $tobool8 = 0, $meth = 0, $2 = 0, $searchf11 = 0, $3 = 0, $data = 0, $4 = 0, $type12 = 0, $5 = 0, $and = 0, $tobool13 = 0, $call = 0, $eventf = 0, $6 = 0, $tobool14 = 0, $7 = 0, $call16 = 0, $cmp = 0, $memoryf20 = 0, $8 = 0, $memoryf21 = 0, $tobool22 = 0, $dtmemory_51 = 0, $9 = 0, $type27 = 0, $10 = 0, $and28 = 0, $tobool29 = 0, $and33 = 0, $tobool34 = 0, $and36 = 0, $tobool37 = 0, $and43 = 0, $tobool44 = 0, $11 = 0, $12 = 0, $and54 = 0, $tobool55 = 0, $call58 = 0, $13 = 0, $type60 = 0, $14 = 0, $and61 = 0, $15 = 0, $here = 0, $16 = 0, $size = 0, $17 = 0, $type65 = 0, $18 = 0, $and66 = 0, $tobool67 = 0, $tobool7452 = 0, $and76 = 0, $tobool77 = 0, $link = 0, $size86 = 0, $key = 0, $hashf = 0, $_htab = 0, $19 = 0, $ntab = 0, $20 = 0, $add_ptr = 0, $cmp7155 = 0, $s_056 = 0, $incdec_ptr = 0, $cmp71 = 0, $r_053 = 0, $right = 0, $21 = 0, $22 = 0, $cmp79 = 0, $obj = 0, $23 = 0, $24 = 0, $25 = 0, $idx_neg = 0, $add_ptr83 = 0, $cond85 = 0, $26 = 0, $cmp87 = 0, $27 = 0, $add_ptr89 = 0, $28 = 0, $29 = 0, $cond94 = 0, $30 = 0, $tobool95 = 0, $call98 = 0, $31 = 0, $call101 = 0, $cond103 = 0, $_hash = 0, $32 = 0, $call105 = 0, $tobool74 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $disc1 = $dt + 4 | 0;
    $0 = HEAP32[$disc1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[$disc1 >> 2] = $disc;
    $memoryf = $disc + 28 | 0;
    $1 = HEAP32[$memoryf >> 2] | 0;
    $memoryf3 = $dt + 12 | 0;
    $tobool4 = ($1 | 0) == 0;
    $dtmemory_ = $tobool4 ? 238 : $1;
    HEAP32[$memoryf3 >> 2] = $dtmemory_;
    $retval_0 = $disc;
    label = 31;
    break;
   case 4:
    $tobool8 = ($disc | 0) == 0;
    if ($tobool8) {
      $retval_0 = $0;
      label = 31;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $meth = $dt + 16 | 0;
    $2 = HEAP32[$meth >> 2] | 0;
    $searchf11 = $2 | 0;
    $3 = HEAP32[$searchf11 >> 2] | 0;
    $data = $dt + 8 | 0;
    $4 = HEAP32[$data >> 2] | 0;
    $type12 = $4 | 0;
    $5 = HEAP32[$type12 >> 2] | 0;
    $and = $5 & 4096;
    $tobool13 = ($and | 0) == 0;
    if ($tobool13) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call = _dtrestore($dt, 0) | 0;
    label = 7;
    break;
   case 7:
    $eventf = $0 + 32 | 0;
    $6 = HEAP32[$eventf >> 2] | 0;
    $tobool14 = ($6 | 0) == 0;
    if ($tobool14) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $7 = $disc;
    $call16 = FUNCTION_TABLE_iiiii[$6 & 1023]($dt, 3, $7, $0) | 0;
    $cmp = ($call16 | 0) < 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 31;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAP32[$disc1 >> 2] = $disc;
    $memoryf20 = $disc + 28 | 0;
    $8 = HEAP32[$memoryf20 >> 2] | 0;
    $memoryf21 = $dt + 12 | 0;
    $tobool22 = ($8 | 0) == 0;
    $dtmemory_51 = $tobool22 ? 238 : $8;
    HEAP32[$memoryf21 >> 2] = $dtmemory_51;
    $9 = HEAP32[$data >> 2] | 0;
    $type27 = $9 | 0;
    $10 = HEAP32[$type27 >> 2] | 0;
    $and28 = $10 & 112;
    $tobool29 = ($and28 | 0) == 0;
    if ($tobool29) {
      label = 10;
      break;
    } else {
      $retval_0 = $0;
      label = 31;
      break;
    }
   case 10:
    $and33 = $10 & 2;
    $tobool34 = ($and33 | 0) == 0;
    if ($tobool34) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $and36 = $type & 2;
    $tobool37 = ($and36 | 0) == 0;
    if ($tobool37) {
      label = 15;
      break;
    } else {
      $retval_0 = $0;
      label = 31;
      break;
    }
   case 12:
    $and43 = $10 & 3;
    $tobool44 = ($and43 | 0) == 0;
    if ($tobool44) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $11 = $type & 3;
    $12 = ($11 | 0) == 3;
    if ($12) {
      $retval_0 = $0;
      label = 31;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $and54 = $type & 1;
    $tobool55 = ($and54 | 0) == 0;
    if ($tobool55) {
      label = 15;
      break;
    } else {
      $retval_0 = $0;
      label = 31;
      break;
    }
   case 15:
    $call58 = _dtflatten($dt) | 0;
    $13 = HEAP32[$data >> 2] | 0;
    $type60 = $13 | 0;
    $14 = HEAP32[$type60 >> 2] | 0;
    $and61 = $14 & -4097;
    HEAP32[$type60 >> 2] = $and61;
    $15 = HEAP32[$data >> 2] | 0;
    $here = $15 + 4 | 0;
    HEAP32[$here >> 2] = 0;
    $16 = HEAP32[$data >> 2] | 0;
    $size = $16 + 16 | 0;
    HEAP32[$size >> 2] = 0;
    $17 = HEAP32[$data >> 2] | 0;
    $type65 = $17 | 0;
    $18 = HEAP32[$type65 >> 2] | 0;
    $and66 = $18 & 3;
    $tobool67 = ($and66 | 0) == 0;
    if ($tobool67) {
      label = 16;
      break;
    } else {
      label = 18;
      break;
    }
   case 16:
    $tobool7452 = ($call58 | 0) == 0;
    if ($tobool7452) {
      $retval_0 = $0;
      label = 31;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $and76 = $type & 2;
    $tobool77 = ($and76 | 0) == 0;
    $link = $disc + 8 | 0;
    $size86 = $disc + 4 | 0;
    $key = $disc | 0;
    $hashf = $disc + 24 | 0;
    $r_053 = $call58;
    label = 20;
    break;
   case 18:
    $_htab = $17 + 8 | 0;
    $19 = HEAP32[$_htab >> 2] | 0;
    $ntab = $17 + 12 | 0;
    $20 = HEAP32[$ntab >> 2] | 0;
    $add_ptr = $19 + ($20 << 2) | 0;
    $cmp7155 = ($20 | 0) > 0;
    if ($cmp7155) {
      $s_056 = $19;
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 19:
    $incdec_ptr = $s_056 + 4 | 0;
    HEAP32[$s_056 >> 2] = 0;
    $cmp71 = $incdec_ptr >>> 0 < $add_ptr >>> 0;
    if ($cmp71) {
      $s_056 = $incdec_ptr;
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 20:
    $right = $r_053 | 0;
    $21 = HEAP32[$right >> 2] | 0;
    if ($tobool77) {
      label = 21;
      break;
    } else {
      label = 30;
      break;
    }
   case 21:
    $22 = HEAP32[$link >> 2] | 0;
    $cmp79 = ($22 | 0) < 0;
    if ($cmp79) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $obj = $r_053 + 8 | 0;
    $23 = $obj;
    $24 = HEAP32[$23 >> 2] | 0;
    $cond85 = $24;
    label = 24;
    break;
   case 23:
    $25 = $r_053;
    $idx_neg = -$22 | 0;
    $add_ptr83 = $25 + $idx_neg | 0;
    $cond85 = $add_ptr83;
    label = 24;
    break;
   case 24:
    $26 = HEAP32[$size86 >> 2] | 0;
    $cmp87 = ($26 | 0) < 0;
    $27 = HEAP32[$key >> 2] | 0;
    $add_ptr89 = $cond85 + $27 | 0;
    if ($cmp87) {
      label = 25;
      break;
    } else {
      $cond94 = $add_ptr89;
      label = 26;
      break;
    }
   case 25:
    $28 = $add_ptr89;
    $29 = HEAP32[$28 >> 2] | 0;
    $cond94 = $29;
    label = 26;
    break;
   case 26:
    $30 = HEAP32[$hashf >> 2] | 0;
    $tobool95 = ($30 | 0) == 0;
    if ($tobool95) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $call98 = FUNCTION_TABLE_iiii[$30 & 1023]($dt, $cond94, $disc) | 0;
    $cond103 = $call98;
    label = 29;
    break;
   case 28:
    $31 = HEAP32[$size86 >> 2] | 0;
    $call101 = _dtstrhash(0, $cond94, $31) | 0;
    $cond103 = $call101;
    label = 29;
    break;
   case 29:
    $_hash = $r_053 + 4 | 0;
    HEAP32[$_hash >> 2] = $cond103;
    label = 30;
    break;
   case 30:
    $32 = $r_053;
    $call105 = FUNCTION_TABLE_iiii[$3 & 1023]($dt, $32, 32) | 0;
    $tobool74 = ($21 | 0) == 0;
    if ($tobool74) {
      $retval_0 = $0;
      label = 31;
      break;
    } else {
      $r_053 = $21;
      label = 20;
      break;
    }
   case 31:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtmemory($dt, $addr, $size, $disc) {
  $dt = $dt | 0;
  $addr = $addr | 0;
  $size = $size | 0;
  $disc = $disc | 0;
  var $tobool = 0, $cmp3 = 0, $call = 0, $call4 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($addr | 0) == 0;
    $cmp3 = ($size | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    if ($cmp3) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    _free($addr);
    $retval_0 = 0;
    label = 8;
    break;
   case 5:
    $call = _realloc($addr, $size) | 0;
    $retval_0 = $call;
    label = 8;
    break;
   case 6:
    if ($cmp3) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call4 = _malloc($size) | 0;
    $retval_0 = $call4;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtlist($dt, $obj, $type) {
  $dt = $dt | 0;
  $obj = $obj | 0;
  $type = $type | 0;
  var $data = 0, $0 = 0, $type1 = 0, $1 = 0, $and = 0, $tobool = 0, $2 = 0, $call = 0, $disc2 = 0, $3 = 0, $key3 = 0, $4 = 0, $size = 0, $5 = 0, $link = 0, $6 = 0, $comparf = 0, $7 = 0, $type4 = 0, $8 = 0, $and5 = 0, $tobool6 = 0, $and7 = 0, $tobool8 = 0, $9 = 0, $hh = 0, $_head = 0, $10 = 0, $tobool11 = 0, $and13 = 0, $tobool14 = 0, $11 = 0, $here199 = 0, $hl = 0, $_left = 0, $12 = 0, $13 = 0, $here = 0, $tobool18 = 0, $r_0201 = 0, $cmp = 0, $obj21 = 0, $14 = 0, $15 = 0, $16 = 0, $idx_neg = 0, $add_ptr = 0, $and28 = 0, $tobool29 = 0, $17 = 0, $type32 = 0, $18 = 0, $and33 = 0, $tobool34 = 0, $hh36 = 0, $_head37 = 0, $19 = 0, $tobool38 = 0, $and42 = 0, $tobool43 = 0, $freef = 0, $20 = 0, $tobool45 = 0, $21 = 0, $cmp48 = 0, $22 = 0, $hh51 = 0, $_head52 = 0, $23 = 0, $tobool53205 = 0, $memoryf = 0, $cmp58 = 0, $idx_neg62 = 0, $r_2206 = 0, $right = 0, $24 = 0, $25 = 0, $tobool55 = 0, $obj60 = 0, $26 = 0, $27 = 0, $28 = 0, $add_ptr63 = 0, $cond65 = 0, $29 = 0, $cmp68 = 0, $tobool53 = 0, $30 = 0, $31 = 0, $call70 = 0, $32 = 0, $here74 = 0, $33 = 0, $34 = 0, $35 = 0, $size79 = 0, $and82 = 0, $tobool83 = 0, $makef = 0, $36 = 0, $tobool85 = 0, $and86 = 0, $tobool87 = 0, $call90 = 0, $tobool91 = 0, $obj_addr_0 = 0, $cmp94 = 0, $add_ptr96 = 0, $memoryf98 = 0, $37 = 0, $call99 = 0, $tobool100 = 0, $obj102 = 0, $38 = 0, $39 = 0, $tobool105 = 0, $freef107 = 0, $40 = 0, $tobool108 = 0, $and110 = 0, $tobool111 = 0, $r_3_in = 0, $r_3 = 0, $41 = 0, $type118 = 0, $42 = 0, $and119 = 0, $tobool120 = 0, $and122 = 0, $tobool123 = 0, $and129 = 0, $tobool130 = 0, $and132 = 0, $tobool133 = 0, $here136 = 0, $43 = 0, $tobool137 = 0, $right139 = 0, $44 = 0, $tobool140 = 0, $right144 = 0, $45 = 0, $r_3_c196 = 0, $hl148 = 0, $_left149 = 0, $hh159 = 0, $_head160 = 0, $46 = 0, $cmp161 = 0, $hl164 = 0, $_left165 = 0, $47 = 0, $hl166 = 0, $_left167 = 0, $right170 = 0, $right171 = 0, $48 = 0, $r_3_c195 = 0, $and179 = 0, $tobool180 = 0, $49 = 0, $hh183 = 0, $_head184 = 0, $50 = 0, $right185 = 0, $tobool186 = 0, $hl188 = 0, $_left189 = 0, $51 = 0, $hl190 = 0, $_left191 = 0, $52 = 0, $r_3_c194 = 0, $hl195 = 0, $_left196 = 0, $53 = 0, $54 = 0, $55 = 0, $hh203 = 0, $_head204 = 0, $56 = 0, $tobool205 = 0, $hl207 = 0, $_left208 = 0, $57 = 0, $right209 = 0, $58 = 0, $hl212 = 0, $_left213 = 0, $59 = 0, $r_3_c192 = 0, $60 = 0, $r_3_c = 0, $hl220 = 0, $_left221 = 0, $right223 = 0, $61 = 0, $size228 = 0, $62 = 0, $cmp229 = 0, $add = 0, $63 = 0, $here235 = 0, $cmp236 = 0, $obj238 = 0, $64 = 0, $65 = 0, $idx_neg240 = 0, $add_ptr241 = 0, $and245 = 0, $tobool246 = 0, $66 = 0, $here249 = 0, $67 = 0, $tobool250 = 0, $cmp252 = 0, $obj254 = 0, $68 = 0, $69 = 0, $70 = 0, $idx_neg256 = 0, $add_ptr257 = 0, $cond259 = 0, $cmp260 = 0, $cmp266 = 0, $add_ptr268 = 0, $71 = 0, $72 = 0, $cond274 = 0, $73 = 0, $hh276 = 0, $_head277 = 0, $cmp281 = 0, $cmp289 = 0, $tobool296 = 0, $cmp300 = 0, $idx_neg285 = 0, $r_4_in = 0, $r_4 = 0, $tobool279 = 0, $obj283 = 0, $74 = 0, $75 = 0, $76 = 0, $add_ptr286 = 0, $cond288 = 0, $add_ptr291 = 0, $77 = 0, $78 = 0, $cond295 = 0, $call298 = 0, $call302 = 0, $call304 = 0, $cond308 = 0, $cmp309 = 0, $right313 = 0, $r_5 = 0, $tobool316 = 0, $79 = 0, $or = 0, $and320 = 0, $tobool321 = 0, $r_6 = 0, $right323 = 0, $80 = 0, $tobool324 = 0, $hl326 = 0, $_left327 = 0, $81 = 0, $82 = 0, $_c191 = 0, $83 = 0, $hh333 = 0, $_head334 = 0, $84 = 0, $cmp335 = 0, $85 = 0, $86 = 0, $_c189 = 0, $87 = 0, $hh342 = 0, $_head343 = 0, $88 = 0, $tobool344 = 0, $hl346 = 0, $_left347 = 0, $89 = 0, $90 = 0, $_c190 = 0, $hl356 = 0, $_left357 = 0, $91 = 0, $right358 = 0, $hl359 = 0, $_left360 = 0, $92 = 0, $cmp361 = 0, $93 = 0, $94 = 0, $_c = 0, $95 = 0, $here370 = 0, $96 = 0, $cmp371 = 0, $97 = 0, $cond376 = 0, $98 = 0, $here378 = 0, $99 = 0, $size380 = 0, $100 = 0, $sub = 0, $cmp381 = 0, $obj383 = 0, $101 = 0, $102 = 0, $103 = 0, $idx_neg385 = 0, $add_ptr386 = 0, $cond388 = 0, $freef389 = 0, $104 = 0, $tobool390 = 0, $and392 = 0, $tobool393 = 0, $105 = 0, $cmp398 = 0, $memoryf400 = 0, $106 = 0, $107 = 0, $call401 = 0, $and404 = 0, $tobool405 = 0, $right407 = 0, $108 = 0, $and409 = 0, $tobool410 = 0, $109 = 0, $hh413 = 0, $_head414 = 0, $110 = 0, $cmp415 = 0, $111 = 0, $here426203 = 0, $hl418 = 0, $_left419 = 0, $112 = 0, $r_7 = 0, $113 = 0, $here426 = 0, $tobool427 = 0, $cmp429 = 0, $obj431 = 0, $114 = 0, $115 = 0, $116 = 0, $idx_neg433 = 0, $add_ptr434 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $data = $dt + 8 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    $type1 = $0 | 0;
    $1 = HEAP32[$type1 >> 2] | 0;
    $and = $1 & 4096;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $dt;
    $call = _dtrestore($2, 0) | 0;
    label = 4;
    break;
   case 4:
    $disc2 = $dt + 4 | 0;
    $3 = HEAP32[$disc2 >> 2] | 0;
    $key3 = $3 | 0;
    $4 = HEAP32[$key3 >> 2] | 0;
    $size = $3 + 4 | 0;
    $5 = HEAP32[$size >> 2] | 0;
    $link = $3 + 8 | 0;
    $6 = HEAP32[$link >> 2] | 0;
    $comparf = $3 + 20 | 0;
    $7 = HEAP32[$comparf >> 2] | 0;
    $type4 = $dt + 20 | 0;
    $8 = HEAP32[$type4 >> 2] | 0;
    $and5 = $8 & -32769;
    HEAP32[$type4 >> 2] = $and5;
    $tobool6 = ($obj | 0) == 0;
    if ($tobool6) {
      label = 5;
      break;
    } else {
      label = 30;
      break;
    }
   case 5:
    $and7 = $type & 384;
    $tobool8 = ($and7 | 0) == 0;
    if ($tobool8) {
      label = 13;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $9 = HEAP32[$data >> 2] | 0;
    $hh = $9 + 8 | 0;
    $_head = $hh;
    $10 = HEAP32[$_head >> 2] | 0;
    $tobool11 = ($10 | 0) == 0;
    if ($tobool11) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $and13 = $type & 256;
    $tobool14 = ($and13 | 0) == 0;
    if ($tobool14) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $11 = HEAP32[$data >> 2] | 0;
    $here199 = $11 + 4 | 0;
    HEAP32[$here199 >> 2] = $10;
    $r_0201 = $10;
    label = 10;
    break;
   case 9:
    $hl = $10 + 4 | 0;
    $_left = $hl;
    $12 = HEAP32[$_left >> 2] | 0;
    $13 = HEAP32[$data >> 2] | 0;
    $here = $13 + 4 | 0;
    HEAP32[$here >> 2] = $12;
    $tobool18 = ($12 | 0) == 0;
    if ($tobool18) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      $r_0201 = $12;
      label = 10;
      break;
    }
   case 10:
    $cmp = ($6 | 0) < 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $obj21 = $r_0201 + 8 | 0;
    $14 = $obj21;
    $15 = HEAP32[$14 >> 2] | 0;
    $retval_0 = $15;
    label = 117;
    break;
   case 12:
    $16 = $r_0201;
    $idx_neg = -$6 | 0;
    $add_ptr = $16 + $idx_neg | 0;
    $retval_0 = $add_ptr;
    label = 117;
    break;
   case 13:
    $and28 = $type & 4098;
    $tobool29 = ($and28 | 0) == 0;
    if ($tobool29) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $17 = HEAP32[$data >> 2] | 0;
    $type32 = $17 | 0;
    $18 = HEAP32[$type32 >> 2] | 0;
    $and33 = $18 & 144;
    $tobool34 = ($and33 | 0) == 0;
    if ($tobool34) {
      label = 15;
      break;
    } else {
      $retval_0 = 0;
      label = 117;
      break;
    }
   case 15:
    $hh36 = $17 + 8 | 0;
    $_head37 = $hh36;
    $19 = HEAP32[$_head37 >> 2] | 0;
    $tobool38 = ($19 | 0) == 0;
    if ($tobool38) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      $r_6 = $19;
      label = 90;
      break;
    }
   case 16:
    $and42 = $type & 64;
    $tobool43 = ($and42 | 0) == 0;
    if ($tobool43) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $freef = $3 + 16 | 0;
    $20 = HEAP32[$freef >> 2] | 0;
    $tobool45 = ($20 | 0) == 0;
    if ($tobool45) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $21 = HEAP32[$link >> 2] | 0;
    $cmp48 = ($21 | 0) < 0;
    if ($cmp48) {
      label = 19;
      break;
    } else {
      label = 29;
      break;
    }
   case 19:
    $22 = HEAP32[$data >> 2] | 0;
    $hh51 = $22 + 8 | 0;
    $_head52 = $hh51;
    $23 = HEAP32[$_head52 >> 2] | 0;
    $tobool53205 = ($23 | 0) == 0;
    if ($tobool53205) {
      label = 29;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $memoryf = $dt + 12 | 0;
    $cmp58 = ($6 | 0) < 0;
    $idx_neg62 = -$6 | 0;
    $r_2206 = $23;
    label = 21;
    break;
   case 21:
    $right = $r_2206 | 0;
    $24 = HEAP32[$right >> 2] | 0;
    $25 = HEAP32[$freef >> 2] | 0;
    $tobool55 = ($25 | 0) == 0;
    if ($tobool55) {
      label = 26;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    if ($cmp58) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $obj60 = $r_2206 + 8 | 0;
    $26 = $obj60;
    $27 = HEAP32[$26 >> 2] | 0;
    $cond65 = $27;
    label = 25;
    break;
   case 24:
    $28 = $r_2206;
    $add_ptr63 = $28 + $idx_neg62 | 0;
    $cond65 = $add_ptr63;
    label = 25;
    break;
   case 25:
    FUNCTION_TABLE_viii[$25 & 1023]($dt, $cond65, $3);
    label = 26;
    break;
   case 26:
    $29 = HEAP32[$link >> 2] | 0;
    $cmp68 = ($29 | 0) < 0;
    if ($cmp68) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $tobool53 = ($24 | 0) == 0;
    if ($tobool53) {
      label = 29;
      break;
    } else {
      $r_2206 = $24;
      label = 21;
      break;
    }
   case 28:
    $30 = HEAP32[$memoryf >> 2] | 0;
    $31 = $r_2206;
    $call70 = FUNCTION_TABLE_iiiii[$30 & 1023]($dt, $31, 0, $3) | 0;
    label = 27;
    break;
   case 29:
    $32 = HEAP32[$data >> 2] | 0;
    $here74 = $32 + 4 | 0;
    HEAP32[$here74 >> 2] = 0;
    $33 = HEAP32[$data >> 2] | 0;
    $34 = $33 + 8 | 0;
    HEAP32[$34 >> 2] = 0;
    $35 = HEAP32[$data >> 2] | 0;
    $size79 = $35 + 16 | 0;
    HEAP32[$size79 >> 2] = 0;
    $retval_0 = 0;
    label = 117;
    break;
   case 30:
    $and82 = $type & 2049;
    $tobool83 = ($and82 | 0) == 0;
    if ($tobool83) {
      label = 66;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $makef = $3 + 12 | 0;
    $36 = HEAP32[$makef >> 2] | 0;
    $tobool85 = ($36 | 0) == 0;
    if ($tobool85) {
      $obj_addr_0 = $obj;
      label = 34;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $and86 = $type & 1;
    $tobool87 = ($and86 | 0) == 0;
    if ($tobool87) {
      $obj_addr_0 = $obj;
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $call90 = FUNCTION_TABLE_iiii[$36 & 1023]($dt, $obj, $3) | 0;
    $tobool91 = ($call90 | 0) == 0;
    if ($tobool91) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      $obj_addr_0 = $call90;
      label = 34;
      break;
    }
   case 34:
    $cmp94 = ($6 | 0) > -1;
    if ($cmp94) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $add_ptr96 = $obj_addr_0 + $6 | 0;
    $r_3_in = $add_ptr96;
    label = 42;
    break;
   case 36:
    $memoryf98 = $dt + 12 | 0;
    $37 = HEAP32[$memoryf98 >> 2] | 0;
    $call99 = FUNCTION_TABLE_iiiii[$37 & 1023]($dt, 0, 12, $3) | 0;
    $tobool100 = ($call99 | 0) == 0;
    if ($tobool100) {
      label = 38;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $obj102 = $call99 + 8 | 0;
    $38 = $obj102;
    HEAP32[$38 >> 2] = $obj_addr_0;
    $r_3_in = $call99;
    label = 42;
    break;
   case 38:
    $39 = HEAP32[$makef >> 2] | 0;
    $tobool105 = ($39 | 0) == 0;
    if ($tobool105) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $freef107 = $3 + 16 | 0;
    $40 = HEAP32[$freef107 >> 2] | 0;
    $tobool108 = ($40 | 0) == 0;
    if ($tobool108) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $and110 = $type & 1;
    $tobool111 = ($and110 | 0) == 0;
    if ($tobool111) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    FUNCTION_TABLE_viii[$40 & 1023]($dt, $obj_addr_0, $3);
    $retval_0 = 0;
    label = 117;
    break;
   case 42:
    $r_3 = $r_3_in;
    $41 = HEAP32[$data >> 2] | 0;
    $type118 = $41 | 0;
    $42 = HEAP32[$type118 >> 2] | 0;
    $and119 = $42 & 128;
    $tobool120 = ($and119 | 0) == 0;
    if ($tobool120) {
      label = 44;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $and122 = $type & 8192;
    $tobool123 = ($and122 | 0) == 0;
    if ($tobool123) {
      label = 53;
      break;
    } else {
      label = 57;
      break;
    }
   case 44:
    $and129 = $42 & 16;
    $tobool130 = ($and129 | 0) == 0;
    if ($tobool130) {
      label = 52;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $and132 = $type & 8192;
    $tobool133 = ($and132 | 0) == 0;
    $here136 = $41 + 4 | 0;
    $43 = HEAP32[$here136 >> 2] | 0;
    $tobool137 = ($43 | 0) != 0;
    if ($tobool133) {
      label = 49;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    if ($tobool137) {
      label = 47;
      break;
    } else {
      label = 57;
      break;
    }
   case 47:
    $right139 = $43 | 0;
    $44 = HEAP32[$right139 >> 2] | 0;
    $tobool140 = ($44 | 0) == 0;
    if ($tobool140) {
      label = 57;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $right144 = $r_3_in;
    HEAP32[$right144 >> 2] = $44;
    $45 = $44 + 4 | 0;
    $r_3_c196 = $r_3_in;
    HEAP32[$45 >> 2] = $r_3_c196;
    $hl148 = $r_3_in + 4 | 0;
    $_left149 = $hl148;
    HEAP32[$_left149 >> 2] = $43;
    HEAP32[$right139 >> 2] = $r_3;
    label = 61;
    break;
   case 49:
    if ($tobool137) {
      label = 50;
      break;
    } else {
      label = 53;
      break;
    }
   case 50:
    $hh159 = $41 + 8 | 0;
    $_head160 = $hh159;
    $46 = HEAP32[$_head160 >> 2] | 0;
    $cmp161 = ($43 | 0) == ($46 | 0);
    if ($cmp161) {
      label = 53;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $hl164 = $43 + 4 | 0;
    $_left165 = $hl164;
    $47 = HEAP32[$_left165 >> 2] | 0;
    $hl166 = $r_3_in + 4 | 0;
    $_left167 = $hl166;
    HEAP32[$_left167 >> 2] = $47;
    $right170 = $47 | 0;
    HEAP32[$right170 >> 2] = $r_3;
    $right171 = $r_3_in;
    HEAP32[$right171 >> 2] = $43;
    $48 = $hl164 | 0;
    $r_3_c195 = $r_3_in;
    HEAP32[$48 >> 2] = $r_3_c195;
    label = 61;
    break;
   case 52:
    $and179 = $42 & 32;
    $tobool180 = ($and179 | 0) == 0;
    if ($tobool180) {
      label = 57;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $49 = HEAP32[$data >> 2] | 0;
    $hh183 = $49 + 8 | 0;
    $_head184 = $hh183;
    $50 = HEAP32[$_head184 >> 2] | 0;
    $right185 = $r_3_in;
    HEAP32[$right185 >> 2] = $50;
    $tobool186 = ($50 | 0) == 0;
    if ($tobool186) {
      label = 55;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    $hl188 = $50 + 4 | 0;
    $_left189 = $hl188;
    $51 = HEAP32[$_left189 >> 2] | 0;
    $hl190 = $r_3_in + 4 | 0;
    $_left191 = $hl190;
    HEAP32[$_left191 >> 2] = $51;
    $52 = $hl188 | 0;
    $r_3_c194 = $r_3_in;
    HEAP32[$52 >> 2] = $r_3_c194;
    label = 56;
    break;
   case 55:
    $hl195 = $r_3_in + 4 | 0;
    $_left196 = $hl195;
    HEAP32[$_left196 >> 2] = $r_3;
    label = 56;
    break;
   case 56:
    $53 = HEAP32[$data >> 2] | 0;
    $54 = $53 + 8 | 0;
    HEAP32[$54 >> 2] = $right185;
    label = 61;
    break;
   case 57:
    $55 = HEAP32[$data >> 2] | 0;
    $hh203 = $55 + 8 | 0;
    $_head204 = $hh203;
    $56 = HEAP32[$_head204 >> 2] | 0;
    $tobool205 = ($56 | 0) == 0;
    if ($tobool205) {
      label = 59;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $hl207 = $56 + 4 | 0;
    $_left208 = $hl207;
    $57 = HEAP32[$_left208 >> 2] | 0;
    $right209 = $57 | 0;
    HEAP32[$right209 >> 2] = $r_3;
    $58 = HEAP32[$_left208 >> 2] | 0;
    $hl212 = $r_3_in + 4 | 0;
    $_left213 = $hl212;
    HEAP32[$_left213 >> 2] = $58;
    $59 = $hl207 | 0;
    $r_3_c192 = $r_3_in;
    HEAP32[$59 >> 2] = $r_3_c192;
    label = 60;
    break;
   case 59:
    $60 = $hh203 | 0;
    $r_3_c = $r_3_in;
    HEAP32[$60 >> 2] = $r_3_c;
    $hl220 = $r_3_in + 4 | 0;
    $_left221 = $hl220;
    HEAP32[$_left221 >> 2] = $r_3;
    label = 60;
    break;
   case 60:
    $right223 = $r_3_in;
    HEAP32[$right223 >> 2] = 0;
    label = 61;
    break;
   case 61:
    $61 = HEAP32[$data >> 2] | 0;
    $size228 = $61 + 16 | 0;
    $62 = HEAP32[$size228 >> 2] | 0;
    $cmp229 = ($62 | 0) > -1;
    if ($cmp229) {
      label = 62;
      break;
    } else {
      label = 63;
      break;
    }
   case 62:
    $add = $62 + 1 | 0;
    HEAP32[$size228 >> 2] = $add;
    label = 63;
    break;
   case 63:
    $63 = HEAP32[$data >> 2] | 0;
    $here235 = $63 + 4 | 0;
    HEAP32[$here235 >> 2] = $r_3;
    $cmp236 = ($6 | 0) < 0;
    if ($cmp236) {
      label = 64;
      break;
    } else {
      label = 65;
      break;
    }
   case 64:
    $obj238 = $r_3_in + 8 | 0;
    $64 = $obj238;
    $65 = HEAP32[$64 >> 2] | 0;
    $retval_0 = $65;
    label = 117;
    break;
   case 65:
    $idx_neg240 = -$6 | 0;
    $add_ptr241 = $r_3_in + $idx_neg240 | 0;
    $retval_0 = $add_ptr241;
    label = 117;
    break;
   case 66:
    $and245 = $type & 512;
    $tobool246 = ($and245 | 0) != 0;
    if ($tobool246) {
      $cond274 = $obj;
      label = 75;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $66 = HEAP32[$data >> 2] | 0;
    $here249 = $66 + 4 | 0;
    $67 = HEAP32[$here249 >> 2] | 0;
    $tobool250 = ($67 | 0) == 0;
    if ($tobool250) {
      label = 73;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $cmp252 = ($6 | 0) < 0;
    if ($cmp252) {
      label = 69;
      break;
    } else {
      label = 70;
      break;
    }
   case 69:
    $obj254 = $67 + 8 | 0;
    $68 = $obj254;
    $69 = HEAP32[$68 >> 2] | 0;
    $cond259 = $69;
    label = 71;
    break;
   case 70:
    $70 = $67;
    $idx_neg256 = -$6 | 0;
    $add_ptr257 = $70 + $idx_neg256 | 0;
    $cond259 = $add_ptr257;
    label = 71;
    break;
   case 71:
    $cmp260 = ($cond259 | 0) == ($obj | 0);
    if ($cmp260) {
      $r_5 = $67;
      label = 88;
      break;
    } else {
      label = 72;
      break;
    }
   case 72:
    if ($tobool246) {
      $cond274 = $obj;
      label = 75;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $cmp266 = ($5 | 0) < 0;
    $add_ptr268 = $obj + $4 | 0;
    if ($cmp266) {
      label = 74;
      break;
    } else {
      $cond274 = $add_ptr268;
      label = 75;
      break;
    }
   case 74:
    $71 = $add_ptr268;
    $72 = HEAP32[$71 >> 2] | 0;
    $cond274 = $72;
    label = 75;
    break;
   case 75:
    $73 = HEAP32[$data >> 2] | 0;
    $hh276 = $73 + 8 | 0;
    $_head277 = $hh276;
    $cmp281 = ($6 | 0) < 0;
    $cmp289 = ($5 | 0) < 0;
    $tobool296 = ($7 | 0) == 0;
    $cmp300 = ($5 | 0) < 1;
    $idx_neg285 = -$6 | 0;
    $r_4_in = $_head277;
    label = 76;
    break;
   case 76:
    $r_4 = HEAP32[$r_4_in >> 2] | 0;
    $tobool279 = ($r_4 | 0) == 0;
    if ($tobool279) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 77;
      break;
    }
   case 77:
    if ($cmp281) {
      label = 78;
      break;
    } else {
      label = 79;
      break;
    }
   case 78:
    $obj283 = $r_4 + 8 | 0;
    $74 = $obj283;
    $75 = HEAP32[$74 >> 2] | 0;
    $cond288 = $75;
    label = 80;
    break;
   case 79:
    $76 = $r_4;
    $add_ptr286 = $76 + $idx_neg285 | 0;
    $cond288 = $add_ptr286;
    label = 80;
    break;
   case 80:
    $add_ptr291 = $cond288 + $4 | 0;
    if ($cmp289) {
      label = 81;
      break;
    } else {
      $cond295 = $add_ptr291;
      label = 82;
      break;
    }
   case 81:
    $77 = $add_ptr291;
    $78 = HEAP32[$77 >> 2] | 0;
    $cond295 = $78;
    label = 82;
    break;
   case 82:
    if ($tobool296) {
      label = 84;
      break;
    } else {
      label = 83;
      break;
    }
   case 83:
    $call298 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $cond274, $cond295, $3) | 0;
    $cond308 = $call298;
    label = 87;
    break;
   case 84:
    if ($cmp300) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    $call302 = _strcmp($cond274 | 0, $cond295 | 0) | 0;
    $cond308 = $call302;
    label = 87;
    break;
   case 86:
    $call304 = _memcmp($cond274 | 0, $cond295 | 0, $5 | 0) | 0;
    $cond308 = $call304;
    label = 87;
    break;
   case 87:
    $cmp309 = ($cond308 | 0) == 0;
    $right313 = $r_4 | 0;
    if ($cmp309) {
      $r_5 = $r_4;
      label = 88;
      break;
    } else {
      $r_4_in = $right313;
      label = 76;
      break;
    }
   case 88:
    $tobool316 = ($r_5 | 0) == 0;
    if ($tobool316) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $79 = HEAP32[$type4 >> 2] | 0;
    $or = $79 | 32768;
    HEAP32[$type4 >> 2] = $or;
    $and320 = $type & 4098;
    $tobool321 = ($and320 | 0) == 0;
    if ($tobool321) {
      label = 107;
      break;
    } else {
      $r_6 = $r_5;
      label = 90;
      break;
    }
   case 90:
    $right323 = $r_6 | 0;
    $80 = HEAP32[$right323 >> 2] | 0;
    $tobool324 = ($80 | 0) == 0;
    if ($tobool324) {
      label = 92;
      break;
    } else {
      label = 91;
      break;
    }
   case 91:
    $hl326 = $r_6 + 4 | 0;
    $_left327 = $hl326;
    $81 = HEAP32[$_left327 >> 2] | 0;
    $82 = $80 + 4 | 0;
    $_c191 = $81;
    HEAP32[$82 >> 2] = $_c191;
    label = 92;
    break;
   case 92:
    $83 = HEAP32[$data >> 2] | 0;
    $hh333 = $83 + 8 | 0;
    $_head334 = $hh333;
    $84 = HEAP32[$_head334 >> 2] | 0;
    $cmp335 = ($r_6 | 0) == ($84 | 0);
    $85 = HEAP32[$right323 >> 2] | 0;
    if ($cmp335) {
      label = 93;
      break;
    } else {
      label = 95;
      break;
    }
   case 93:
    $86 = $hh333 | 0;
    $_c189 = $85 | 0;
    HEAP32[$86 >> 2] = $_c189;
    $87 = HEAP32[$data >> 2] | 0;
    $hh342 = $87 + 8 | 0;
    $_head343 = $hh342;
    $88 = HEAP32[$_head343 >> 2] | 0;
    $tobool344 = ($88 | 0) == 0;
    if ($tobool344) {
      label = 97;
      break;
    } else {
      label = 94;
      break;
    }
   case 94:
    $hl346 = $84 + 4 | 0;
    $_left347 = $hl346;
    $89 = HEAP32[$_left347 >> 2] | 0;
    $90 = $88 + 4 | 0;
    $_c190 = $89;
    HEAP32[$90 >> 2] = $_c190;
    label = 97;
    break;
   case 95:
    $hl356 = $r_6 + 4 | 0;
    $_left357 = $hl356;
    $91 = HEAP32[$_left357 >> 2] | 0;
    $right358 = $91 | 0;
    HEAP32[$right358 >> 2] = $85;
    $hl359 = $84 + 4 | 0;
    $_left360 = $hl359;
    $92 = HEAP32[$_left360 >> 2] | 0;
    $cmp361 = ($r_6 | 0) == ($92 | 0);
    if ($cmp361) {
      label = 96;
      break;
    } else {
      label = 97;
      break;
    }
   case 96:
    $93 = HEAP32[$_left357 >> 2] | 0;
    $94 = $hl359 | 0;
    $_c = $93;
    HEAP32[$94 >> 2] = $_c;
    label = 97;
    break;
   case 97:
    $95 = HEAP32[$data >> 2] | 0;
    $here370 = $95 + 4 | 0;
    $96 = HEAP32[$here370 >> 2] | 0;
    $cmp371 = ($r_6 | 0) == ($96 | 0);
    if ($cmp371) {
      label = 98;
      break;
    } else {
      $cond376 = 0;
      label = 99;
      break;
    }
   case 98:
    $97 = HEAP32[$right323 >> 2] | 0;
    $cond376 = $97;
    label = 99;
    break;
   case 99:
    $98 = HEAP32[$data >> 2] | 0;
    $here378 = $98 + 4 | 0;
    HEAP32[$here378 >> 2] = $cond376;
    $99 = HEAP32[$data >> 2] | 0;
    $size380 = $99 + 16 | 0;
    $100 = HEAP32[$size380 >> 2] | 0;
    $sub = $100 - 1 | 0;
    HEAP32[$size380 >> 2] = $sub;
    $cmp381 = ($6 | 0) < 0;
    if ($cmp381) {
      label = 100;
      break;
    } else {
      label = 101;
      break;
    }
   case 100:
    $obj383 = $r_6 + 8 | 0;
    $101 = $obj383;
    $102 = HEAP32[$101 >> 2] | 0;
    $cond388 = $102;
    label = 102;
    break;
   case 101:
    $103 = $r_6;
    $idx_neg385 = -$6 | 0;
    $add_ptr386 = $103 + $idx_neg385 | 0;
    $cond388 = $add_ptr386;
    label = 102;
    break;
   case 102:
    $freef389 = $3 + 16 | 0;
    $104 = HEAP32[$freef389 >> 2] | 0;
    $tobool390 = ($104 | 0) == 0;
    if ($tobool390) {
      label = 105;
      break;
    } else {
      label = 103;
      break;
    }
   case 103:
    $and392 = $type & 2;
    $tobool393 = ($and392 | 0) == 0;
    if ($tobool393) {
      label = 105;
      break;
    } else {
      label = 104;
      break;
    }
   case 104:
    FUNCTION_TABLE_viii[$104 & 1023]($dt, $cond388, $3);
    label = 105;
    break;
   case 105:
    $105 = HEAP32[$link >> 2] | 0;
    $cmp398 = ($105 | 0) < 0;
    if ($cmp398) {
      label = 106;
      break;
    } else {
      $retval_0 = $cond388;
      label = 117;
      break;
    }
   case 106:
    $memoryf400 = $dt + 12 | 0;
    $106 = HEAP32[$memoryf400 >> 2] | 0;
    $107 = $r_6;
    $call401 = FUNCTION_TABLE_iiiii[$106 & 1023]($dt, $107, 0, $3) | 0;
    $retval_0 = $cond388;
    label = 117;
    break;
   case 107:
    $and404 = $type & 8;
    $tobool405 = ($and404 | 0) == 0;
    if ($tobool405) {
      label = 109;
      break;
    } else {
      label = 108;
      break;
    }
   case 108:
    $right407 = $r_5 | 0;
    $108 = HEAP32[$right407 >> 2] | 0;
    $r_7 = $108;
    label = 113;
    break;
   case 109:
    $and409 = $type & 16;
    $tobool410 = ($and409 | 0) == 0;
    if ($tobool410) {
      $r_7 = $r_5;
      label = 113;
      break;
    } else {
      label = 110;
      break;
    }
   case 110:
    $109 = HEAP32[$data >> 2] | 0;
    $hh413 = $109 + 8 | 0;
    $_head414 = $hh413;
    $110 = HEAP32[$_head414 >> 2] | 0;
    $cmp415 = ($r_5 | 0) == ($110 | 0);
    if ($cmp415) {
      label = 111;
      break;
    } else {
      label = 112;
      break;
    }
   case 111:
    $111 = HEAP32[$data >> 2] | 0;
    $here426203 = $111 + 4 | 0;
    HEAP32[$here426203 >> 2] = 0;
    $retval_0 = 0;
    label = 117;
    break;
   case 112:
    $hl418 = $r_5 + 4 | 0;
    $_left419 = $hl418;
    $112 = HEAP32[$_left419 >> 2] | 0;
    $r_7 = $112;
    label = 113;
    break;
   case 113:
    $113 = HEAP32[$data >> 2] | 0;
    $here426 = $113 + 4 | 0;
    HEAP32[$here426 >> 2] = $r_7;
    $tobool427 = ($r_7 | 0) == 0;
    if ($tobool427) {
      $retval_0 = 0;
      label = 117;
      break;
    } else {
      label = 114;
      break;
    }
   case 114:
    $cmp429 = ($6 | 0) < 0;
    if ($cmp429) {
      label = 115;
      break;
    } else {
      label = 116;
      break;
    }
   case 115:
    $obj431 = $r_7 + 8 | 0;
    $114 = $obj431;
    $115 = HEAP32[$114 >> 2] | 0;
    $retval_0 = $115;
    label = 117;
    break;
   case 116:
    $116 = $r_7;
    $idx_neg433 = -$6 | 0;
    $add_ptr434 = $116 + $idx_neg433 | 0;
    $retval_0 = $add_ptr434;
    label = 117;
    break;
   case 117:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtopen($disc, $meth) {
  $disc = $disc | 0;
  $meth = $meth | 0;
  var $data = 0, $tobool = 0, $tobool1 = 0, $or_cond = 0, $call = 0, $0 = 0, $tobool2 = 0, $searchf = 0, $meth5 = 0, $1 = 0, $disc6 = 0, $2 = 0, $call7 = 0, $type = 0, $eventf = 0, $3 = 0, $tobool8 = 0, $4 = 0, $5 = 0, $call11 = 0, $cmp = 0, $cmp13 = 0, $6 = 0, $tobool15 = 0, $type17 = 0, $7 = 0, $type18 = 0, $8 = 0, $and = 0, $tobool19 = 0, $memoryf = 0, $9 = 0, $tobool23 = 0, $10 = 0, $call27 = 0, $11 = 0, $tobool28 = 0, $searchf31 = 0, $meth32 = 0, $12 = 0, $disc33 = 0, $13 = 0, $call34 = 0, $type35 = 0, $14 = 0, $nview36 = 0, $15 = 0, $walk37 = 0, $16 = 0, $view38 = 0, $17 = 0, $dt_0 = 0, $memoryf42 = 0, $18 = 0, $call43 = 0, $19 = 0, $tobool44 = 0, $dt_1 = 0, $20 = 0, $type47 = 0, $21 = 0, $type48 = 0, $22 = 0, $here = 0, $23 = 0, $_htab = 0, $24 = 0, $loop = 0, $25 = 0, $size = 0, $26 = 0, $ntab = 0, $27 = 0, $minp = 0, $dt_2 = 0, $28 = 0, $data49 = 0, $searchf50 = 0, $29 = 0, $searchf51 = 0, $meth52 = 0, $30 = 0, $tobool54 = 0, $31 = 0, $call57 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $data = __stackBase__ | 0;
    $tobool = ($disc | 0) == 0;
    $tobool1 = ($meth | 0) == 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _malloc(40) | 0;
    $0 = $call;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $searchf = $call;
    HEAP32[$searchf >> 2] = 0;
    $meth5 = $call + 16 | 0;
    $1 = $meth5;
    HEAP32[$1 >> 2] = 0;
    $disc6 = $call + 4 | 0;
    $2 = $disc6;
    HEAP32[$2 >> 2] = 0;
    $call7 = _dtdisc($0, $disc, 0) | 0;
    $type = $call + 20 | 0;
    $eventf = $disc + 32 | 0;
    _memset($type | 0, 0, 20);
    $3 = HEAP32[$eventf >> 2] | 0;
    $tobool8 = ($3 | 0) == 0;
    if ($tobool8) {
      $dt_0 = $0;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP32[$data >> 2] = 0;
    $4 = HEAP32[$eventf >> 2] | 0;
    $5 = $data;
    $call11 = FUNCTION_TABLE_iiiii[$4 & 1023]($0, 1, $5, $disc) | 0;
    $cmp = ($call11 | 0) < 0;
    if ($cmp) {
      $dt_1 = $0;
      label = 13;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp13 = ($call11 | 0) > 0;
    if ($cmp13) {
      label = 7;
      break;
    } else {
      $dt_0 = $0;
      label = 12;
      break;
    }
   case 7:
    $6 = HEAP32[$data >> 2] | 0;
    $tobool15 = ($6 | 0) == 0;
    if ($tobool15) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type17 = $6 | 0;
    $7 = HEAP32[$type17 >> 2] | 0;
    $type18 = $meth + 4 | 0;
    $8 = HEAP32[$type18 >> 2] | 0;
    $and = $8 & $7;
    $tobool19 = ($and | 0) == 0;
    if ($tobool19) {
      $dt_1 = $0;
      label = 13;
      break;
    } else {
      $dt_2 = $0;
      label = 15;
      break;
    }
   case 9:
    $memoryf = $disc + 28 | 0;
    $9 = HEAP32[$memoryf >> 2] | 0;
    $tobool23 = ($9 | 0) == 0;
    if ($tobool23) {
      $dt_1 = $0;
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _free($call);
    $10 = HEAP32[$memoryf >> 2] | 0;
    $call27 = FUNCTION_TABLE_iiiii[$10 & 1023](0, 0, 40, $disc) | 0;
    $11 = $call27;
    $tobool28 = ($call27 | 0) == 0;
    if ($tobool28) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $searchf31 = $call27;
    HEAP32[$searchf31 >> 2] = 0;
    $meth32 = $call27 + 16 | 0;
    $12 = $meth32;
    HEAP32[$12 >> 2] = 0;
    $disc33 = $call27 + 4 | 0;
    $13 = $disc33;
    HEAP32[$13 >> 2] = 0;
    $call34 = _dtdisc($11, $disc, 0) | 0;
    $type35 = $call27 + 20 | 0;
    $14 = $type35;
    HEAP32[$14 >> 2] = 1;
    $nview36 = $call27 + 24 | 0;
    $15 = $nview36;
    HEAP32[$15 >> 2] = 0;
    $walk37 = $call27 + 32 | 0;
    $16 = $walk37;
    HEAP32[$16 >> 2] = 0;
    $view38 = $call27 + 28 | 0;
    $17 = $view38;
    HEAP32[$17 >> 2] = 0;
    $dt_0 = $11;
    label = 12;
    break;
   case 12:
    $memoryf42 = $dt_0 + 12 | 0;
    $18 = HEAP32[$memoryf42 >> 2] | 0;
    $call43 = FUNCTION_TABLE_iiiii[$18 & 1023]($dt_0, 0, 28, $disc) | 0;
    $19 = $call43;
    HEAP32[$data >> 2] = $19;
    $tobool44 = ($call43 | 0) == 0;
    if ($tobool44) {
      $dt_1 = $dt_0;
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $20 = $dt_1;
    _free($20);
    $retval_0 = 0;
    label = 17;
    break;
   case 14:
    $type47 = $meth + 4 | 0;
    $21 = HEAP32[$type47 >> 2] | 0;
    $type48 = $call43;
    HEAP32[$type48 >> 2] = $21;
    $22 = HEAP32[$data >> 2] | 0;
    $here = $22 + 4 | 0;
    HEAP32[$here >> 2] = 0;
    $23 = HEAP32[$data >> 2] | 0;
    $_htab = $23 + 8 | 0;
    HEAP32[$_htab >> 2] = 0;
    $24 = HEAP32[$data >> 2] | 0;
    $loop = $24 + 20 | 0;
    HEAP32[$loop >> 2] = 0;
    $25 = HEAP32[$data >> 2] | 0;
    $size = $25 + 16 | 0;
    HEAP32[$size >> 2] = 0;
    $26 = HEAP32[$data >> 2] | 0;
    $ntab = $26 + 12 | 0;
    HEAP32[$ntab >> 2] = 0;
    $27 = HEAP32[$data >> 2] | 0;
    $minp = $27 + 24 | 0;
    HEAP32[$minp >> 2] = 0;
    $dt_2 = $dt_0;
    label = 15;
    break;
   case 15:
    $28 = HEAP32[$data >> 2] | 0;
    $data49 = $dt_2 + 8 | 0;
    HEAP32[$data49 >> 2] = $28;
    $searchf50 = $meth | 0;
    $29 = HEAP32[$searchf50 >> 2] | 0;
    $searchf51 = $dt_2 | 0;
    HEAP32[$searchf51 >> 2] = $29;
    $meth52 = $dt_2 + 16 | 0;
    HEAP32[$meth52 >> 2] = $meth;
    $30 = HEAP32[$eventf >> 2] | 0;
    $tobool54 = ($30 | 0) == 0;
    if ($tobool54) {
      $retval_0 = $dt_2;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $31 = $dt_2;
    $call57 = FUNCTION_TABLE_iiiii[$30 & 1023]($dt_2, 5, $31, $disc) | 0;
    $retval_0 = $dt_2;
    label = 17;
    break;
   case 17:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _dtsize($dt) {
  $dt = $dt | 0;
  var $data = 0, $0 = 0, $type = 0, $1 = 0, $and = 0, $tobool = 0, $call = 0, $2 = 0, $size2 = 0, $3 = 0, $cmp = 0, $type4 = 0, $4 = 0, $and5 = 0, $tobool6 = 0, $here = 0, $5 = 0, $call9 = 0, $and14 = 0, $tobool15 = 0, $hh = 0, $_head = 0, $t_010 = 0, $tobool1811 = 0, $t_013 = 0, $size_012 = 0, $add = 0, $right = 0, $t_0 = 0, $tobool18 = 0, $size_0_lcssa = 0, $6 = 0, $size20 = 0, $7 = 0, $size24 = 0, $8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $data = $dt + 8 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    $type = $0 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $and = $1 & 4096;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _dtrestore($dt, 0) | 0;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$data >> 2] | 0;
    $size2 = $2 + 16 | 0;
    $3 = HEAP32[$size2 >> 2] | 0;
    $cmp = ($3 | 0) < 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 11;
      break;
    }
   case 5:
    $type4 = $2 | 0;
    $4 = HEAP32[$type4 >> 2] | 0;
    $and5 = $4 & 12;
    $tobool6 = ($and5 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $here = $2 + 4 | 0;
    $5 = HEAP32[$here >> 2] | 0;
    $call9 = _treecount($5) | 0;
    HEAP32[$size2 >> 2] = $call9;
    label = 11;
    break;
   case 7:
    $and14 = $4 & 112;
    $tobool15 = ($and14 | 0) == 0;
    if ($tobool15) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $hh = $2 + 8 | 0;
    $_head = $hh;
    $t_010 = HEAP32[$_head >> 2] | 0;
    $tobool1811 = ($t_010 | 0) == 0;
    if ($tobool1811) {
      $size_0_lcssa = 0;
      label = 10;
      break;
    } else {
      $size_012 = 0;
      $t_013 = $t_010;
      label = 9;
      break;
    }
   case 9:
    $add = $size_012 + 1 | 0;
    $right = $t_013 | 0;
    $t_0 = HEAP32[$right >> 2] | 0;
    $tobool18 = ($t_0 | 0) == 0;
    if ($tobool18) {
      $size_0_lcssa = $add;
      label = 10;
      break;
    } else {
      $size_012 = $add;
      $t_013 = $t_0;
      label = 9;
      break;
    }
   case 10:
    $6 = HEAP32[$data >> 2] | 0;
    $size20 = $6 + 16 | 0;
    HEAP32[$size20 >> 2] = $size_0_lcssa;
    label = 11;
    break;
   case 11:
    $7 = HEAP32[$data >> 2] | 0;
    $size24 = $7 + 16 | 0;
    $8 = HEAP32[$size24 >> 2] | 0;
    return $8 | 0;
  }
  return 0;
}
function _treecount($e) {
  $e = $e | 0;
  var $tobool = 0, $hl = 0, $_left = 0, $0 = 0, $call = 0, $right = 0, $1 = 0, $call1 = 0, $add = 0, $add2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($e | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $hl = $e + 4 | 0;
    $_left = $hl;
    $0 = HEAP32[$_left >> 2] | 0;
    $call = _treecount($0) | 0;
    $right = $e | 0;
    $1 = HEAP32[$right >> 2] | 0;
    $call1 = _treecount($1) | 0;
    $add = $call + 1 | 0;
    $add2 = $add + $call1 | 0;
    return $add2 | 0;
   case 4:
    return 0;
  }
  return 0;
}
function _dtstrhash($h, $args, $n) {
  $h = $h | 0;
  $args = $args | 0;
  $n = $n | 0;
  var $cmp = 0, $0 = 0, $cmp120 = 0, $1 = 0, $h_addr_022 = 0, $s_021 = 0, $conv = 0, $shl = 0, $add = 0, $arrayidx4 = 0, $2 = 0, $conv5 = 0, $add6 = 0, $mul = 0, $tobool = 0, $cond = 0, $add_ptr = 0, $3 = 0, $cmp1 = 0, $h_addr_0_lcssa = 0, $s_0_lcssa = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $add_ptr9_sum = 0, $add_ptr10 = 0, $cmp1224 = 0, $h_addr_126 = 0, $s_125 = 0, $4 = 0, $conv16 = 0, $shl17 = 0, $add18 = 0, $arrayidx19 = 0, $5 = 0, $conv20 = 0, $add21 = 0, $mul22 = 0, $add_ptr24 = 0, $cmp12 = 0, $h_addr_1_lcssa = 0, $s_1_lcssa = 0, $cmp26 = 0, $6 = 0, $conv30 = 0, $shl31 = 0, $add32 = 0, $mul33 = 0, $n_addr_0 = 0, $h_addr_2 = 0, $add35 = 0, $mul36 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($n | 0) < 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $0 = HEAP8[$args] | 0;
    $cmp120 = $0 << 24 >> 24 == 0;
    if ($cmp120) {
      $s_0_lcssa = $args;
      $h_addr_0_lcssa = $h;
      label = 5;
      break;
    } else {
      $s_021 = $args;
      $h_addr_022 = $h;
      $1 = $0;
      label = 4;
      break;
    }
   case 4:
    $conv = $1 & 255;
    $shl = $conv << 8;
    $add = $shl + $h_addr_022 | 0;
    $arrayidx4 = $s_021 + 1 | 0;
    $2 = HEAP8[$arrayidx4] | 0;
    $conv5 = $2 & 255;
    $add6 = $add + $conv5 | 0;
    $mul = Math_imul($add6, 17109811);
    $tobool = $2 << 24 >> 24 != 0;
    $cond = $tobool ? 2 : 1;
    $add_ptr = $s_021 + $cond | 0;
    $3 = HEAP8[$add_ptr] | 0;
    $cmp1 = $3 << 24 >> 24 == 0;
    if ($cmp1) {
      $s_0_lcssa = $add_ptr;
      $h_addr_0_lcssa = $mul;
      label = 5;
      break;
    } else {
      $s_021 = $add_ptr;
      $h_addr_022 = $mul;
      $1 = $3;
      label = 4;
      break;
    }
   case 5:
    $sub_ptr_lhs_cast = $s_0_lcssa;
    $sub_ptr_rhs_cast = $args;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $h_addr_2 = $h_addr_0_lcssa;
    $n_addr_0 = $sub_ptr_sub;
    label = 10;
    break;
   case 6:
    $add_ptr9_sum = $n - 1 | 0;
    $add_ptr10 = $args + $add_ptr9_sum | 0;
    $cmp1224 = ($add_ptr9_sum | 0) > 0;
    if ($cmp1224) {
      $s_125 = $args;
      $h_addr_126 = $h;
      label = 7;
      break;
    } else {
      $s_1_lcssa = $args;
      $h_addr_1_lcssa = $h;
      label = 8;
      break;
    }
   case 7:
    $4 = HEAP8[$s_125] | 0;
    $conv16 = $4 & 255;
    $shl17 = $conv16 << 8;
    $add18 = $shl17 + $h_addr_126 | 0;
    $arrayidx19 = $s_125 + 1 | 0;
    $5 = HEAP8[$arrayidx19] | 0;
    $conv20 = $5 & 255;
    $add21 = $add18 + $conv20 | 0;
    $mul22 = Math_imul($add21, 17109811);
    $add_ptr24 = $s_125 + 2 | 0;
    $cmp12 = $add_ptr24 >>> 0 < $add_ptr10 >>> 0;
    if ($cmp12) {
      $s_125 = $add_ptr24;
      $h_addr_126 = $mul22;
      label = 7;
      break;
    } else {
      $s_1_lcssa = $add_ptr24;
      $h_addr_1_lcssa = $mul22;
      label = 8;
      break;
    }
   case 8:
    $cmp26 = $s_1_lcssa >>> 0 > $add_ptr10 >>> 0;
    if ($cmp26) {
      $h_addr_2 = $h_addr_1_lcssa;
      $n_addr_0 = $n;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $6 = HEAP8[$s_1_lcssa] | 0;
    $conv30 = $6 & 255;
    $shl31 = $conv30 << 8;
    $add32 = $shl31 + $h_addr_1_lcssa | 0;
    $mul33 = Math_imul($add32, 17109811);
    $h_addr_2 = $mul33;
    $n_addr_0 = $n;
    label = 10;
    break;
   case 10:
    $add35 = $h_addr_2 + $n_addr_0 | 0;
    $mul36 = Math_imul($add35, 17109811);
    return $mul36 | 0;
  }
  return 0;
}
function _dttree($dt, $obj, $type) {
  $dt = $dt | 0;
  $obj = $obj | 0;
  $type = $type | 0;
  var $link = 0, $turn = 0, $data = 0, $0 = 0, $type1 = 0, $1 = 0, $and = 0, $tobool = 0, $2 = 0, $call = 0, $disc2 = 0, $3 = 0, $key3 = 0, $4 = 0, $size = 0, $5 = 0, $link4 = 0, $6 = 0, $comparf = 0, $7 = 0, $type5 = 0, $8 = 0, $and6 = 0, $9 = 0, $here = 0, $10 = 0, $tobool8 = 0, $tobool9 = 0, $and10 = 0, $tobool11 = 0, $and13 = 0, $tobool14 = 0, $freef = 0, $11 = 0, $tobool16 = 0, $12 = 0, $cmp19 = 0, $memoryf = 0, $cmp30 = 0, $idx_neg = 0, $root_0 = 0, $hl = 0, $_left = 0, $13 = 0, $tobool21 = 0, $right = 0, $14 = 0, $15 = 0, $_c389 = 0, $right25 = 0, $16 = 0, $17 = 0, $tobool27 = 0, $obj32 = 0, $18 = 0, $19 = 0, $20 = 0, $add_ptr = 0, $cond35 = 0, $21 = 0, $cmp38 = 0, $22 = 0, $23 = 0, $call40 = 0, $tobool42 = 0, $24 = 0, $size45 = 0, $25 = 0, $here47 = 0, $and48 = 0, $tobool49 = 0, $right52431 = 0, $26 = 0, $tobool53432 = 0, $hl63425 = 0, $_left64426 = 0, $27 = 0, $tobool65427 = 0, $28 = 0, $right52434 = 0, $root_1433 = 0, $hl55 = 0, $_left56 = 0, $29 = 0, $30 = 0, $root_1_c = 0, $right52 = 0, $31 = 0, $tobool53 = 0, $32 = 0, $hl63429 = 0, $root_2428 = 0, $right67 = 0, $33 = 0, $34 = 0, $_c = 0, $hl63 = 0, $_left64 = 0, $35 = 0, $tobool65 = 0, $root_3 = 0, $36 = 0, $here74 = 0, $cmp75 = 0, $obj77 = 0, $37 = 0, $38 = 0, $39 = 0, $idx_neg79 = 0, $add_ptr80 = 0, $meth = 0, $40 = 0, $type84 = 0, $41 = 0, $cmp85 = 0, $and86 = 0, $tobool87 = 0, $cmp89 = 0, $add_ptr91 = 0, $42 = 0, $43 = 0, $cond95 = 0, $searchf96 = 0, $44 = 0, $call97 = 0, $tobool98496 = 0, $tobool106 = 0, $cmp110 = 0, $o_0497 = 0, $add_ptr101 = 0, $45 = 0, $46 = 0, $cond105 = 0, $call108 = 0, $call112 = 0, $call114 = 0, $cond118 = 0, $cmp119 = 0, $cmp122 = 0, $47 = 0, $here125 = 0, $48 = 0, $hl126 = 0, $_left127 = 0, $49 = 0, $right128 = 0, $right129 = 0, $50 = 0, $51 = 0, $_c411 = 0, $52 = 0, $call135 = 0, $tobool98 = 0, $and137 = 0, $tobool138 = 0, $and140 = 0, $tobool141 = 0, $cmp144 = 0, $add_ptr146 = 0, $53 = 0, $54 = 0, $cond152 = 0, $tobool153 = 0, $and157 = 0, $tobool158 = 0, $55 = 0, $cmp160 = 0, $obj162 = 0, $56 = 0, $57 = 0, $idx_neg164 = 0, $add_ptr165 = 0, $cond167 = 0, $cmp168 = 0, $add_ptr170 = 0, $58 = 0, $59 = 0, $cond174 = 0, $tobool175 = 0, $tobool179 = 0, $cmp181 = 0, $obj183 = 0, $60 = 0, $61 = 0, $62 = 0, $idx_neg185 = 0, $add_ptr186 = 0, $cond188 = 0, $cmp189 = 0, $cmp191 = 0, $add_ptr193 = 0, $63 = 0, $64 = 0, $key_0 = 0, $me_0 = 0, $obj_addr_0 = 0, $65 = 0, $type199 = 0, $66 = 0, $cmp200 = 0, $67 = 0, $minp203 = 0, $68 = 0, $cmp204 = 0, $and206 = 0, $tobool207 = 0, $cmp212 = 0, $cmp220 = 0, $tobool227 = 0, $cmp231 = 0, $idx_neg216 = 0, $l_2_ph = 0, $r_2_ph = 0, $root_6_ph = 0, $cmp317 = 0, $cmp325 = 0, $tobool332 = 0, $cmp373 = 0, $idx_neg358 = 0, $cmp336 = 0, $idx_neg321 = 0, $cmp437 = 0, $idx_neg422 = 0, $t_0 = 0, $n_0 = 0, $cmp210 = 0, $cmp266485 = 0, $obj214 = 0, $69 = 0, $70 = 0, $71 = 0, $add_ptr217 = 0, $cond219 = 0, $add_ptr222 = 0, $72 = 0, $73 = 0, $cond226 = 0, $call229 = 0, $call233 = 0, $call235 = 0, $cond239 = 0, $cmp240 = 0, $obj244 = 0, $74 = 0, $75 = 0, $76 = 0, $idx_neg246 = 0, $add_ptr247 = 0, $arrayidx = 0, $cmp251 = 0, $hl253 = 0, $_left254 = 0, $right256 = 0, $cond258_in = 0, $cond258 = 0, $tobool259 = 0, $inc = 0, $root_4489 = 0, $n_1488 = 0, $r_0487 = 0, $l_0486 = 0, $arrayidx268 = 0, $77 = 0, $cmp269 = 0, $hl271 = 0, $_left272 = 0, $78 = 0, $add407 = 0, $arrayidx273 = 0, $79 = 0, $cmp274 = 0, $right276 = 0, $80 = 0, $81 = 0, $_c409 = 0, $82 = 0, $_c410 = 0, $hl282 = 0, $_left283 = 0, $right285 = 0, $83 = 0, $root_4_c408 = 0, $right288 = 0, $right291 = 0, $84 = 0, $add292405 = 0, $arrayidx293 = 0, $85 = 0, $cmp294 = 0, $hl296 = 0, $_left297 = 0, $86 = 0, $87 = 0, $root_4_c = 0, $right301 = 0, $right302 = 0, $88 = 0, $_c406 = 0, $right306 = 0, $hl307 = 0, $_left308 = 0, $l_1 = 0, $r_1 = 0, $root_5_in = 0, $root_5 = 0, $add312 = 0, $cmp266 = 0, $r_2 = 0, $root_6 = 0, $obj319 = 0, $89 = 0, $90 = 0, $91 = 0, $add_ptr322 = 0, $cond324 = 0, $add_ptr327 = 0, $92 = 0, $93 = 0, $cond331 = 0, $call334 = 0, $call338 = 0, $call340 = 0, $cond344 = 0, $cmp345 = 0, $cmp348 = 0, $hl350 = 0, $_left351 = 0, $94 = 0, $tobool352 = 0, $obj356 = 0, $95 = 0, $96 = 0, $97 = 0, $add_ptr359 = 0, $cond361 = 0, $add_ptr364 = 0, $98 = 0, $99 = 0, $cond368 = 0, $call371 = 0, $call375 = 0, $call377 = 0, $cond381 = 0, $cmp382 = 0, $right384 = 0, $100 = 0, $101 = 0, $_c403 = 0, $102 = 0, $_c404 = 0, $hl390 = 0, $_left391 = 0, $103 = 0, $tobool392 = 0, $cmp396 = 0, $104 = 0, $root_6_c402 = 0, $right401 = 0, $105 = 0, $root_6_c401 = 0, $right404 = 0, $106 = 0, $tobool405 = 0, $107 = 0, $root_6_c400 = 0, $right415 = 0, $108 = 0, $tobool416 = 0, $obj420 = 0, $109 = 0, $110 = 0, $111 = 0, $add_ptr423 = 0, $cond425 = 0, $add_ptr428 = 0, $112 = 0, $113 = 0, $cond432 = 0, $call435 = 0, $call439 = 0, $call441 = 0, $cond445 = 0, $cmp446 = 0, $hl448 = 0, $_left449 = 0, $114 = 0, $115 = 0, $root_6_c = 0, $right453 = 0, $right454 = 0, $116 = 0, $tobool455 = 0, $l_2_ph459 = 0, $r_2_ph460 = 0, $root_6_ph461 = 0, $cmp459 = 0, $right461 = 0, $117 = 0, $_c399 = 0, $right465 = 0, $hl466 = 0, $_left467 = 0, $118 = 0, $tobool468 = 0, $right474 = 0, $l_3 = 0, $r_3 = 0, $me_1 = 0, $root_7 = 0, $obj_addr_1 = 0, $tobool482 = 0, $119 = 0, $or = 0, $hl485 = 0, $_left486 = 0, $120 = 0, $right487 = 0, $right488 = 0, $121 = 0, $122 = 0, $_c396 = 0, $and491 = 0, $tobool492 = 0, $root_8 = 0, $right494 = 0, $123 = 0, $124 = 0, $_c391 = 0, $hl497 = 0, $_left498 = 0, $125 = 0, $right499 = 0, $126 = 0, $type501 = 0, $127 = 0, $and502 = 0, $tobool503 = 0, $and505 = 0, $tobool506 = 0, $cmp508 = 0, $obj510 = 0, $128 = 0, $129 = 0, $130 = 0, $idx_neg512 = 0, $add_ptr513 = 0, $cond515 = 0, $cmp516 = 0, $add_ptr518 = 0, $131 = 0, $132 = 0, $cond522 = 0, $hl524442 = 0, $_left525443 = 0, $133 = 0, $tobool526444 = 0, $tobool555 = 0, $cmp559 = 0, $idx_neg544 = 0, $134 = 0, $hl524446 = 0, $root_9445 = 0, $right529436 = 0, $135 = 0, $tobool530437 = 0, $136 = 0, $right529439 = 0, $t_1438 = 0, $hl532 = 0, $_left533 = 0, $137 = 0, $138 = 0, $t_1_c393 = 0, $right529 = 0, $139 = 0, $tobool530 = 0, $right529_lcssa = 0, $t_1_lcssa = 0, $140 = 0, $t_1_c = 0, $obj542 = 0, $141 = 0, $142 = 0, $143 = 0, $add_ptr545 = 0, $cond547 = 0, $add_ptr550 = 0, $144 = 0, $145 = 0, $cond554 = 0, $call557 = 0, $call561 = 0, $call563 = 0, $cond567 = 0, $cmp568 = 0, $146 = 0, $_c392 = 0, $hl524 = 0, $_left525 = 0, $147 = 0, $tobool526 = 0, $root_10 = 0, $148 = 0, $here578 = 0, $cmp579 = 0, $obj581 = 0, $149 = 0, $150 = 0, $151 = 0, $idx_neg583 = 0, $add_ptr584 = 0, $and588 = 0, $tobool589 = 0, $right591 = 0, $152 = 0, $153 = 0, $_c398 = 0, $obj_addr_1421 = 0, $r_3414 = 0, $hl596 = 0, $_left597 = 0, $154 = 0, $tobool598 = 0, $hl601453 = 0, $_left602454 = 0, $155 = 0, $tobool603455 = 0, $156 = 0, $hl601457 = 0, $root_11456 = 0, $right605 = 0, $157 = 0, $158 = 0, $_c395 = 0, $hl601 = 0, $_left602 = 0, $159 = 0, $tobool603 = 0, $root_11_lcssa = 0, $right610 = 0, $160 = 0, $161 = 0, $_c394 = 0, $and615 = 0, $tobool616 = 0, $hl618 = 0, $_left619 = 0, $162 = 0, $163 = 0, $164 = 0, $root_7_c397 = 0, $obj_addr_1424 = 0, $r_3416 = 0, $right625 = 0, $165 = 0, $tobool626 = 0, $right629448 = 0, $166 = 0, $tobool630449 = 0, $167 = 0, $right629451 = 0, $root_12450 = 0, $hl632 = 0, $_left633 = 0, $168 = 0, $169 = 0, $root_12_c = 0, $right629 = 0, $170 = 0, $tobool630 = 0, $root_12_lcssa = 0, $hl638 = 0, $_left639 = 0, $171 = 0, $and643 = 0, $tobool644 = 0, $r_4 = 0, $root_13 = 0, $cmp646 = 0, $obj648 = 0, $172 = 0, $173 = 0, $174 = 0, $idx_neg650 = 0, $add_ptr651 = 0, $cond653 = 0, $freef654 = 0, $175 = 0, $tobool655 = 0, $and657 = 0, $tobool658 = 0, $176 = 0, $cmp663 = 0, $memoryf665 = 0, $177 = 0, $178 = 0, $call666 = 0, $179 = 0, $size669 = 0, $180 = 0, $sub = 0, $cmp670 = 0, $181 = 0, $size673 = 0, $and676 = 0, $tobool677 = 0, $182 = 0, $type680 = 0, $183 = 0, $and681 = 0, $tobool682 = 0, $184 = 0, $hl687 = 0, $_left688 = 0, $185 = 0, $186 = 0, $root_7_c = 0, $and693 = 0, $tobool694 = 0, $187 = 0, $type697 = 0, $188 = 0, $and698 = 0, $tobool699 = 0, $freef701 = 0, $189 = 0, $tobool702 = 0, $190 = 0, $cmp707 = 0, $memoryf709 = 0, $191 = 0, $192 = 0, $call710 = 0, $193 = 0, $hl715 = 0, $_left716 = 0, $194 = 0, $right717 = 0, $195 = 0, $me_1_c = 0, $196 = 0, $size721 = 0, $197 = 0, $add722 = 0, $obj_addr_1422 = 0, $me_1418 = 0, $r_3415 = 0, $l_3413 = 0, $198 = 0, $right733 = 0, $and734 = 0, $tobool735 = 0, $and738 = 0, $tobool739 = 0, $and742 = 0, $tobool743 = 0, $r_5_ph = 0, $obj_addr_2_ph = 0, $r_5 = 0, $hl746 = 0, $_left747 = 0, $199 = 0, $tobool748 = 0, $right751 = 0, $200 = 0, $201 = 0, $_c390 = 0, $hl754 = 0, $_left755 = 0, $202 = 0, $203 = 0, $here757 = 0, $and758 = 0, $tobool759 = 0, $cond763 = 0, $and765 = 0, $tobool766 = 0, $obj_addr_1423 = 0, $root_7419 = 0, $r_3417 = 0, $makef = 0, $204 = 0, $tobool768 = 0, $and770 = 0, $tobool771 = 0, $call774 = 0, $obj_addr_3 = 0, $tobool776 = 0, $cmp778 = 0, $add_ptr780 = 0, $205 = 0, $memoryf782 = 0, $206 = 0, $call783 = 0, $207 = 0, $tobool784 = 0, $obj786 = 0, $208 = 0, $209 = 0, $tobool789 = 0, $freef791 = 0, $210 = 0, $tobool792 = 0, $and794 = 0, $tobool795 = 0, $root_14 = 0, $tobool802 = 0, $211 = 0, $size805 = 0, $212 = 0, $cmp806 = 0, $add810 = 0, $and814 = 0, $tobool815 = 0, $213 = 0, $size818 = 0, $214 = 0, $add819 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $link = __stackBase__ | 0;
    $turn = __stackBase__ + 8 | 0;
    $data = $dt + 8 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    $type1 = $0 | 0;
    $1 = HEAP32[$type1 >> 2] | 0;
    $and = $1 & 4096;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $dt;
    $call = _dtrestore($2, 0) | 0;
    label = 4;
    break;
   case 4:
    $disc2 = $dt + 4 | 0;
    $3 = HEAP32[$disc2 >> 2] | 0;
    $key3 = $3 | 0;
    $4 = HEAP32[$key3 >> 2] | 0;
    $size = $3 + 4 | 0;
    $5 = HEAP32[$size >> 2] | 0;
    $link4 = $3 + 8 | 0;
    $6 = HEAP32[$link4 >> 2] | 0;
    $comparf = $3 + 20 | 0;
    $7 = HEAP32[$comparf >> 2] | 0;
    $type5 = $dt + 20 | 0;
    $8 = HEAP32[$type5 >> 2] | 0;
    $and6 = $8 & -32769;
    HEAP32[$type5 >> 2] = $and6;
    $9 = HEAP32[$data >> 2] | 0;
    $here = $9 + 4 | 0;
    $10 = HEAP32[$here >> 2] | 0;
    $tobool8 = ($obj | 0) == 0;
    if ($tobool8) {
      label = 5;
      break;
    } else {
      label = 30;
      break;
    }
   case 5:
    $tobool9 = ($10 | 0) == 0;
    if ($tobool9) {
      $retval_0 = 0;
      label = 231;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $and10 = $type & 448;
    $tobool11 = ($and10 | 0) == 0;
    if ($tobool11) {
      $retval_0 = 0;
      label = 231;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $and13 = $type & 64;
    $tobool14 = ($and13 | 0) == 0;
    if ($tobool14) {
      label = 22;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $freef = $3 + 16 | 0;
    $11 = HEAP32[$freef >> 2] | 0;
    $tobool16 = ($11 | 0) == 0;
    if ($tobool16) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $12 = HEAP32[$link4 >> 2] | 0;
    $cmp19 = ($12 | 0) < 0;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 21;
      break;
    }
   case 10:
    $memoryf = $dt + 12 | 0;
    $cmp30 = ($6 | 0) < 0;
    $idx_neg = -$6 | 0;
    $root_0 = $10;
    label = 11;
    break;
   case 11:
    $hl = $root_0 + 4 | 0;
    $_left = $hl;
    $13 = HEAP32[$_left >> 2] | 0;
    $tobool21 = ($13 | 0) == 0;
    if ($tobool21) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $right = $13 | 0;
    $14 = HEAP32[$right >> 2] | 0;
    $15 = $hl | 0;
    $_c389 = $14;
    HEAP32[$15 >> 2] = $_c389;
    HEAP32[$right >> 2] = $root_0;
    $root_0 = $13;
    label = 11;
    break;
   case 13:
    $right25 = $root_0 | 0;
    $16 = HEAP32[$right25 >> 2] | 0;
    $17 = HEAP32[$freef >> 2] | 0;
    $tobool27 = ($17 | 0) == 0;
    if ($tobool27) {
      label = 18;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    if ($cmp30) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $obj32 = $root_0 + 8 | 0;
    $18 = $obj32;
    $19 = HEAP32[$18 >> 2] | 0;
    $cond35 = $19;
    label = 17;
    break;
   case 16:
    $20 = $root_0;
    $add_ptr = $20 + $idx_neg | 0;
    $cond35 = $add_ptr;
    label = 17;
    break;
   case 17:
    FUNCTION_TABLE_viii[$17 & 1023]($dt, $cond35, $3);
    label = 18;
    break;
   case 18:
    $21 = HEAP32[$link4 >> 2] | 0;
    $cmp38 = ($21 | 0) < 0;
    if ($cmp38) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $22 = HEAP32[$memoryf >> 2] | 0;
    $23 = $root_0;
    $call40 = FUNCTION_TABLE_iiiii[$22 & 1023]($dt, $23, 0, $3) | 0;
    label = 20;
    break;
   case 20:
    $tobool42 = ($16 | 0) == 0;
    if ($tobool42) {
      label = 21;
      break;
    } else {
      $root_0 = $16;
      label = 11;
      break;
    }
   case 21:
    $24 = HEAP32[$data >> 2] | 0;
    $size45 = $24 + 16 | 0;
    HEAP32[$size45 >> 2] = 0;
    $25 = HEAP32[$data >> 2] | 0;
    $here47 = $25 + 4 | 0;
    HEAP32[$here47 >> 2] = 0;
    $retval_0 = 0;
    label = 231;
    break;
   case 22:
    $and48 = $type & 256;
    $tobool49 = ($and48 | 0) == 0;
    if ($tobool49) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $right52431 = $10 | 0;
    $26 = HEAP32[$right52431 >> 2] | 0;
    $tobool53432 = ($26 | 0) == 0;
    if ($tobool53432) {
      $root_3 = $10;
      label = 27;
      break;
    } else {
      $root_1433 = $10;
      $right52434 = $right52431;
      $28 = $26;
      label = 25;
      break;
    }
   case 24:
    $hl63425 = $10 + 4 | 0;
    $_left64426 = $hl63425;
    $27 = HEAP32[$_left64426 >> 2] | 0;
    $tobool65427 = ($27 | 0) == 0;
    if ($tobool65427) {
      $root_3 = $10;
      label = 27;
      break;
    } else {
      $root_2428 = $10;
      $hl63429 = $hl63425;
      $32 = $27;
      label = 26;
      break;
    }
   case 25:
    $hl55 = $28 + 4 | 0;
    $_left56 = $hl55;
    $29 = HEAP32[$_left56 >> 2] | 0;
    HEAP32[$right52434 >> 2] = $29;
    $30 = $hl55 | 0;
    $root_1_c = $root_1433;
    HEAP32[$30 >> 2] = $root_1_c;
    $right52 = $28 | 0;
    $31 = HEAP32[$right52 >> 2] | 0;
    $tobool53 = ($31 | 0) == 0;
    if ($tobool53) {
      $root_3 = $28;
      label = 27;
      break;
    } else {
      $root_1433 = $28;
      $right52434 = $right52;
      $28 = $31;
      label = 25;
      break;
    }
   case 26:
    $right67 = $32 | 0;
    $33 = HEAP32[$right67 >> 2] | 0;
    $34 = $hl63429 | 0;
    $_c = $33;
    HEAP32[$34 >> 2] = $_c;
    HEAP32[$right67 >> 2] = $root_2428;
    $hl63 = $32 + 4 | 0;
    $_left64 = $hl63;
    $35 = HEAP32[$_left64 >> 2] | 0;
    $tobool65 = ($35 | 0) == 0;
    if ($tobool65) {
      $root_3 = $32;
      label = 27;
      break;
    } else {
      $root_2428 = $32;
      $hl63429 = $hl63;
      $32 = $35;
      label = 26;
      break;
    }
   case 27:
    $36 = HEAP32[$data >> 2] | 0;
    $here74 = $36 + 4 | 0;
    HEAP32[$here74 >> 2] = $root_3;
    $cmp75 = ($6 | 0) < 0;
    if ($cmp75) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $obj77 = $root_3 + 8 | 0;
    $37 = $obj77;
    $38 = HEAP32[$37 >> 2] | 0;
    $retval_0 = $38;
    label = 231;
    break;
   case 29:
    $39 = $root_3;
    $idx_neg79 = -$6 | 0;
    $add_ptr80 = $39 + $idx_neg79 | 0;
    $retval_0 = $add_ptr80;
    label = 231;
    break;
   case 30:
    $meth = $dt + 16 | 0;
    $40 = HEAP32[$meth >> 2] | 0;
    $type84 = $40 + 4 | 0;
    $41 = HEAP32[$type84 >> 2] | 0;
    $cmp85 = ($41 | 0) == 8;
    if ($cmp85) {
      label = 31;
      break;
    } else {
      label = 47;
      break;
    }
   case 31:
    $and86 = $type & 4098;
    $tobool87 = ($and86 | 0) == 0;
    if ($tobool87) {
      label = 47;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $cmp89 = ($5 | 0) < 0;
    $add_ptr91 = $obj + $4 | 0;
    if ($cmp89) {
      label = 33;
      break;
    } else {
      $cond95 = $add_ptr91;
      label = 34;
      break;
    }
   case 33:
    $42 = $add_ptr91;
    $43 = HEAP32[$42 >> 2] | 0;
    $cond95 = $43;
    label = 34;
    break;
   case 34:
    $searchf96 = $dt;
    $44 = HEAP32[$searchf96 >> 2] | 0;
    $call97 = FUNCTION_TABLE_iiii[$44 & 1023]($dt, $obj, 4) | 0;
    $tobool98496 = ($call97 | 0) == 0;
    if ($tobool98496) {
      label = 47;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $tobool106 = ($7 | 0) == 0;
    $cmp110 = ($5 | 0) < 1;
    $o_0497 = $call97;
    label = 36;
    break;
   case 36:
    $add_ptr101 = $o_0497 + $4 | 0;
    if ($cmp89) {
      label = 37;
      break;
    } else {
      $cond105 = $add_ptr101;
      label = 38;
      break;
    }
   case 37:
    $45 = $add_ptr101;
    $46 = HEAP32[$45 >> 2] | 0;
    $cond105 = $46;
    label = 38;
    break;
   case 38:
    if ($tobool106) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $call108 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $cond95, $cond105, $3) | 0;
    $cond118 = $call108;
    label = 43;
    break;
   case 40:
    if ($cmp110) {
      label = 41;
      break;
    } else {
      label = 42;
      break;
    }
   case 41:
    $call112 = _strcmp($cond95 | 0, $cond105 | 0) | 0;
    $cond118 = $call112;
    label = 43;
    break;
   case 42:
    $call114 = _memcmp($cond95 | 0, $cond105 | 0, $5 | 0) | 0;
    $cond118 = $call114;
    label = 43;
    break;
   case 43:
    $cmp119 = ($cond118 | 0) == 0;
    if ($cmp119) {
      label = 44;
      break;
    } else {
      label = 47;
      break;
    }
   case 44:
    $cmp122 = ($o_0497 | 0) == ($obj | 0);
    if ($cmp122) {
      label = 45;
      break;
    } else {
      label = 46;
      break;
    }
   case 45:
    $47 = HEAP32[$data >> 2] | 0;
    $here125 = $47 + 4 | 0;
    $48 = HEAP32[$here125 >> 2] | 0;
    $hl126 = $48 + 4 | 0;
    $_left127 = $hl126;
    $49 = HEAP32[$_left127 >> 2] | 0;
    $right128 = $link | 0;
    HEAP32[$right128 >> 2] = $49;
    $right129 = $48 | 0;
    $50 = HEAP32[$right129 >> 2] | 0;
    $51 = $link + 4 | 0;
    $_c411 = $50;
    HEAP32[$51 >> 2] = $_c411;
    $root_13 = $48;
    $r_4 = $link;
    label = 187;
    break;
   case 46:
    $52 = HEAP32[$searchf96 >> 2] | 0;
    $call135 = FUNCTION_TABLE_iiii[$52 & 1023]($dt, $o_0497, 8) | 0;
    $tobool98 = ($call135 | 0) == 0;
    if ($tobool98) {
      label = 47;
      break;
    } else {
      $o_0497 = $call135;
      label = 36;
      break;
    }
   case 47:
    $and137 = $type & 2565;
    $tobool138 = ($and137 | 0) == 0;
    if ($tobool138) {
      label = 52;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $and140 = $type & 512;
    $tobool141 = ($and140 | 0) == 0;
    if ($tobool141) {
      label = 49;
      break;
    } else {
      $cond152 = $obj;
      label = 51;
      break;
    }
   case 49:
    $cmp144 = ($5 | 0) < 0;
    $add_ptr146 = $obj + $4 | 0;
    if ($cmp144) {
      label = 50;
      break;
    } else {
      $cond152 = $add_ptr146;
      label = 51;
      break;
    }
   case 50:
    $53 = $add_ptr146;
    $54 = HEAP32[$53 >> 2] | 0;
    $cond152 = $54;
    label = 51;
    break;
   case 51:
    $tobool153 = ($10 | 0) == 0;
    if ($tobool153) {
      $l_3413 = $link;
      $r_3415 = $link;
      $me_1418 = 0;
      $obj_addr_1422 = $obj;
      label = 207;
      break;
    } else {
      $obj_addr_0 = $obj;
      $me_0 = 0;
      $key_0 = $cond152;
      label = 66;
      break;
    }
   case 52:
    $and157 = $type & 32;
    $tobool158 = ($and157 | 0) == 0;
    if ($tobool158) {
      label = 59;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $55 = $obj;
    $cmp160 = ($6 | 0) < 0;
    if ($cmp160) {
      label = 54;
      break;
    } else {
      label = 55;
      break;
    }
   case 54:
    $obj162 = $obj + 8 | 0;
    $56 = $obj162;
    $57 = HEAP32[$56 >> 2] | 0;
    $cond167 = $57;
    label = 56;
    break;
   case 55:
    $idx_neg164 = -$6 | 0;
    $add_ptr165 = $obj + $idx_neg164 | 0;
    $cond167 = $add_ptr165;
    label = 56;
    break;
   case 56:
    $cmp168 = ($5 | 0) < 0;
    $add_ptr170 = $cond167 + $4 | 0;
    if ($cmp168) {
      label = 57;
      break;
    } else {
      $cond174 = $add_ptr170;
      label = 58;
      break;
    }
   case 57:
    $58 = $add_ptr170;
    $59 = HEAP32[$58 >> 2] | 0;
    $cond174 = $59;
    label = 58;
    break;
   case 58:
    $tobool175 = ($10 | 0) == 0;
    if ($tobool175) {
      $l_3413 = $link;
      $r_3415 = $link;
      $me_1418 = $55;
      $obj_addr_1422 = $cond167;
      label = 207;
      break;
    } else {
      $obj_addr_0 = $cond167;
      $me_0 = $55;
      $key_0 = $cond174;
      label = 66;
      break;
    }
   case 59:
    $tobool179 = ($10 | 0) == 0;
    if ($tobool179) {
      $l_3413 = $link;
      $r_3415 = $link;
      $me_1418 = 0;
      $obj_addr_1422 = $obj;
      label = 207;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $cmp181 = ($6 | 0) < 0;
    if ($cmp181) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 61:
    $obj183 = $10 + 8 | 0;
    $60 = $obj183;
    $61 = HEAP32[$60 >> 2] | 0;
    $cond188 = $61;
    label = 63;
    break;
   case 62:
    $62 = $10;
    $idx_neg185 = -$6 | 0;
    $add_ptr186 = $62 + $idx_neg185 | 0;
    $cond188 = $add_ptr186;
    label = 63;
    break;
   case 63:
    $cmp189 = ($cond188 | 0) == ($obj | 0);
    if ($cmp189) {
      $obj_addr_1 = $obj;
      $root_7 = $10;
      $me_1 = 0;
      $r_3 = $link;
      $l_3 = $link;
      label = 146;
      break;
    } else {
      label = 64;
      break;
    }
   case 64:
    $cmp191 = ($5 | 0) < 0;
    $add_ptr193 = $obj + $4 | 0;
    if ($cmp191) {
      label = 65;
      break;
    } else {
      $obj_addr_0 = $obj;
      $me_0 = 0;
      $key_0 = $add_ptr193;
      label = 66;
      break;
    }
   case 65:
    $63 = $add_ptr193;
    $64 = HEAP32[$63 >> 2] | 0;
    $obj_addr_0 = $obj;
    $me_0 = 0;
    $key_0 = $64;
    label = 66;
    break;
   case 66:
    $65 = HEAP32[$meth >> 2] | 0;
    $type199 = $65 + 4 | 0;
    $66 = HEAP32[$type199 >> 2] | 0;
    $cmp200 = ($66 | 0) == 4;
    if ($cmp200) {
      label = 67;
      break;
    } else {
      $root_6_ph = $10;
      $r_2_ph = $link;
      $l_2_ph = $link;
      label = 70;
      break;
    }
   case 67:
    $67 = HEAP32[$data >> 2] | 0;
    $minp203 = $67 + 24 | 0;
    $68 = HEAP32[$minp203 >> 2] | 0;
    $cmp204 = ($68 | 0) == 0;
    if ($cmp204) {
      $root_6_ph = $10;
      $r_2_ph = $link;
      $l_2_ph = $link;
      label = 70;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $and206 = $type & 516;
    $tobool207 = ($and206 | 0) == 0;
    if ($tobool207) {
      $root_6_ph = $10;
      $r_2_ph = $link;
      $l_2_ph = $link;
      label = 70;
      break;
    } else {
      label = 69;
      break;
    }
   case 69:
    $cmp212 = ($6 | 0) < 0;
    $cmp220 = ($5 | 0) < 0;
    $tobool227 = ($7 | 0) == 0;
    $cmp231 = ($5 | 0) < 1;
    $idx_neg216 = -$6 | 0;
    $n_0 = 0;
    $t_0 = $10;
    label = 71;
    break;
   case 70:
    $cmp317 = ($6 | 0) < 0;
    $cmp325 = ($5 | 0) < 0;
    $tobool332 = ($7 | 0) != 0;
    $cmp373 = ($5 | 0) < 1;
    $idx_neg358 = -$6 | 0;
    $cmp336 = ($5 | 0) < 1;
    $idx_neg321 = -$6 | 0;
    $cmp437 = ($5 | 0) < 1;
    $idx_neg422 = -$6 | 0;
    $root_6_ph461 = $root_6_ph;
    $r_2_ph460 = $r_2_ph;
    $l_2_ph459 = $l_2_ph;
    label = 141;
    break;
   case 71:
    $cmp210 = ($n_0 | 0) < ($68 | 0);
    if ($cmp210) {
      label = 73;
      break;
    } else {
      label = 72;
      break;
    }
   case 72:
    $cmp266485 = ($68 | 0) > 0;
    if ($cmp266485) {
      $l_0486 = $link;
      $r_0487 = $link;
      $n_1488 = 0;
      $root_4489 = $10;
      label = 91;
      break;
    } else {
      $root_6_ph = $10;
      $r_2_ph = $link;
      $l_2_ph = $link;
      label = 70;
      break;
    }
   case 73:
    if ($cmp212) {
      label = 74;
      break;
    } else {
      label = 75;
      break;
    }
   case 74:
    $obj214 = $t_0 + 8 | 0;
    $69 = $obj214;
    $70 = HEAP32[$69 >> 2] | 0;
    $cond219 = $70;
    label = 76;
    break;
   case 75:
    $71 = $t_0;
    $add_ptr217 = $71 + $idx_neg216 | 0;
    $cond219 = $add_ptr217;
    label = 76;
    break;
   case 76:
    $add_ptr222 = $cond219 + $4 | 0;
    if ($cmp220) {
      label = 77;
      break;
    } else {
      $cond226 = $add_ptr222;
      label = 78;
      break;
    }
   case 77:
    $72 = $add_ptr222;
    $73 = HEAP32[$72 >> 2] | 0;
    $cond226 = $73;
    label = 78;
    break;
   case 78:
    if ($tobool227) {
      label = 80;
      break;
    } else {
      label = 79;
      break;
    }
   case 79:
    $call229 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $key_0, $cond226, $3) | 0;
    $cond239 = $call229;
    label = 83;
    break;
   case 80:
    if ($cmp231) {
      label = 81;
      break;
    } else {
      label = 82;
      break;
    }
   case 81:
    $call233 = _strcmp($key_0 | 0, $cond226 | 0) | 0;
    $cond239 = $call233;
    label = 83;
    break;
   case 82:
    $call235 = _memcmp($key_0 | 0, $cond226 | 0, $5 | 0) | 0;
    $cond239 = $call235;
    label = 83;
    break;
   case 83:
    $cmp240 = ($cond239 | 0) == 0;
    if ($cmp240) {
      label = 84;
      break;
    } else {
      label = 87;
      break;
    }
   case 84:
    if ($cmp212) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    $obj244 = $t_0 + 8 | 0;
    $74 = $obj244;
    $75 = HEAP32[$74 >> 2] | 0;
    $retval_0 = $75;
    label = 231;
    break;
   case 86:
    $76 = $t_0;
    $idx_neg246 = -$6 | 0;
    $add_ptr247 = $76 + $idx_neg246 | 0;
    $retval_0 = $add_ptr247;
    label = 231;
    break;
   case 87:
    $arrayidx = $turn + ($n_0 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $cond239;
    $cmp251 = ($cond239 | 0) < 0;
    if ($cmp251) {
      label = 88;
      break;
    } else {
      label = 89;
      break;
    }
   case 88:
    $hl253 = $t_0 + 4 | 0;
    $_left254 = $hl253;
    $cond258_in = $_left254;
    label = 90;
    break;
   case 89:
    $right256 = $t_0 | 0;
    $cond258_in = $right256;
    label = 90;
    break;
   case 90:
    $cond258 = HEAP32[$cond258_in >> 2] | 0;
    $tobool259 = ($cond258 | 0) == 0;
    $inc = $n_0 + 1 | 0;
    if ($tobool259) {
      $retval_0 = 0;
      label = 231;
      break;
    } else {
      $n_0 = $inc;
      $t_0 = $cond258;
      label = 71;
      break;
    }
   case 91:
    $arrayidx268 = $turn + ($n_1488 << 2) | 0;
    $77 = HEAP32[$arrayidx268 >> 2] | 0;
    $cmp269 = ($77 | 0) < 0;
    if ($cmp269) {
      label = 92;
      break;
    } else {
      label = 95;
      break;
    }
   case 92:
    $hl271 = $root_4489 + 4 | 0;
    $_left272 = $hl271;
    $78 = HEAP32[$_left272 >> 2] | 0;
    $add407 = $n_1488 | 1;
    $arrayidx273 = $turn + ($add407 << 2) | 0;
    $79 = HEAP32[$arrayidx273 >> 2] | 0;
    $cmp274 = ($79 | 0) < 0;
    if ($cmp274) {
      label = 93;
      break;
    } else {
      label = 94;
      break;
    }
   case 93:
    $right276 = $78 | 0;
    $80 = HEAP32[$right276 >> 2] | 0;
    $81 = $hl271 | 0;
    $_c409 = $80;
    HEAP32[$81 >> 2] = $_c409;
    HEAP32[$right276 >> 2] = $root_4489;
    $82 = $r_0487 + 4 | 0;
    $_c410 = $78;
    HEAP32[$82 >> 2] = $_c410;
    $hl282 = $78 + 4 | 0;
    $_left283 = $hl282;
    $root_5_in = $_left283;
    $r_1 = $78;
    $l_1 = $l_0486;
    label = 98;
    break;
   case 94:
    $right285 = $l_0486 | 0;
    HEAP32[$right285 >> 2] = $78;
    $83 = $r_0487 + 4 | 0;
    $root_4_c408 = $root_4489;
    HEAP32[$83 >> 2] = $root_4_c408;
    $right288 = $78 | 0;
    $root_5_in = $right288;
    $r_1 = $root_4489;
    $l_1 = $78;
    label = 98;
    break;
   case 95:
    $right291 = $root_4489 | 0;
    $84 = HEAP32[$right291 >> 2] | 0;
    $add292405 = $n_1488 | 1;
    $arrayidx293 = $turn + ($add292405 << 2) | 0;
    $85 = HEAP32[$arrayidx293 >> 2] | 0;
    $cmp294 = ($85 | 0) > 0;
    if ($cmp294) {
      label = 96;
      break;
    } else {
      label = 97;
      break;
    }
   case 96:
    $hl296 = $84 + 4 | 0;
    $_left297 = $hl296;
    $86 = HEAP32[$_left297 >> 2] | 0;
    HEAP32[$right291 >> 2] = $86;
    $87 = $hl296 | 0;
    $root_4_c = $root_4489;
    HEAP32[$87 >> 2] = $root_4_c;
    $right301 = $l_0486 | 0;
    HEAP32[$right301 >> 2] = $84;
    $right302 = $84 | 0;
    $root_5_in = $right302;
    $r_1 = $r_0487;
    $l_1 = $84;
    label = 98;
    break;
   case 97:
    $88 = $r_0487 + 4 | 0;
    $_c406 = $84;
    HEAP32[$88 >> 2] = $_c406;
    $right306 = $l_0486 | 0;
    HEAP32[$right306 >> 2] = $root_4489;
    $hl307 = $84 + 4 | 0;
    $_left308 = $hl307;
    $root_5_in = $_left308;
    $r_1 = $84;
    $l_1 = $root_4489;
    label = 98;
    break;
   case 98:
    $root_5 = HEAP32[$root_5_in >> 2] | 0;
    $add312 = $n_1488 + 2 | 0;
    $cmp266 = ($add312 | 0) < ($68 | 0);
    if ($cmp266) {
      $l_0486 = $l_1;
      $r_0487 = $r_1;
      $n_1488 = $add312;
      $root_4489 = $root_5;
      label = 91;
      break;
    } else {
      $root_6_ph = $root_5;
      $r_2_ph = $r_1;
      $l_2_ph = $l_1;
      label = 70;
      break;
    }
   case 99:
    if ($cmp317) {
      label = 100;
      break;
    } else {
      label = 101;
      break;
    }
   case 100:
    $obj319 = $root_6 + 8 | 0;
    $89 = $obj319;
    $90 = HEAP32[$89 >> 2] | 0;
    $cond324 = $90;
    label = 102;
    break;
   case 101:
    $91 = $root_6;
    $add_ptr322 = $91 + $idx_neg321 | 0;
    $cond324 = $add_ptr322;
    label = 102;
    break;
   case 102:
    $add_ptr327 = $cond324 + $4 | 0;
    if ($cmp325) {
      label = 103;
      break;
    } else {
      $cond331 = $add_ptr327;
      label = 104;
      break;
    }
   case 103:
    $92 = $add_ptr327;
    $93 = HEAP32[$92 >> 2] | 0;
    $cond331 = $93;
    label = 104;
    break;
   case 104:
    if ($tobool332) {
      label = 105;
      break;
    } else {
      label = 106;
      break;
    }
   case 105:
    $call334 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $key_0, $cond331, $3) | 0;
    $cond344 = $call334;
    label = 109;
    break;
   case 106:
    if ($cmp336) {
      label = 107;
      break;
    } else {
      label = 108;
      break;
    }
   case 107:
    $call338 = _strcmp($key_0 | 0, $cond331 | 0) | 0;
    $cond344 = $call338;
    label = 109;
    break;
   case 108:
    $call340 = _memcmp($key_0 | 0, $cond331 | 0, $5 | 0) | 0;
    $cond344 = $call340;
    label = 109;
    break;
   case 109:
    $cmp345 = ($cond344 | 0) == 0;
    if ($cmp345) {
      $obj_addr_1 = $obj_addr_0;
      $root_7 = $root_6;
      $me_1 = $me_0;
      $r_3 = $r_2;
      $l_3 = $l_2_ph459;
      label = 146;
      break;
    } else {
      label = 110;
      break;
    }
   case 110:
    $cmp348 = ($cond344 | 0) < 0;
    if ($cmp348) {
      label = 111;
      break;
    } else {
      label = 128;
      break;
    }
   case 111:
    $hl350 = $root_6 + 4 | 0;
    $_left351 = $hl350;
    $94 = HEAP32[$_left351 >> 2] | 0;
    $tobool352 = ($94 | 0) == 0;
    if ($tobool352) {
      label = 127;
      break;
    } else {
      label = 112;
      break;
    }
   case 112:
    if ($cmp317) {
      label = 113;
      break;
    } else {
      label = 114;
      break;
    }
   case 113:
    $obj356 = $94 + 8 | 0;
    $95 = $obj356;
    $96 = HEAP32[$95 >> 2] | 0;
    $cond361 = $96;
    label = 115;
    break;
   case 114:
    $97 = $94;
    $add_ptr359 = $97 + $idx_neg358 | 0;
    $cond361 = $add_ptr359;
    label = 115;
    break;
   case 115:
    $add_ptr364 = $cond361 + $4 | 0;
    if ($cmp325) {
      label = 116;
      break;
    } else {
      $cond368 = $add_ptr364;
      label = 117;
      break;
    }
   case 116:
    $98 = $add_ptr364;
    $99 = HEAP32[$98 >> 2] | 0;
    $cond368 = $99;
    label = 117;
    break;
   case 117:
    if ($tobool332) {
      label = 118;
      break;
    } else {
      label = 119;
      break;
    }
   case 118:
    $call371 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $key_0, $cond368, $3) | 0;
    $cond381 = $call371;
    label = 122;
    break;
   case 119:
    if ($cmp373) {
      label = 120;
      break;
    } else {
      label = 121;
      break;
    }
   case 120:
    $call375 = _strcmp($key_0 | 0, $cond368 | 0) | 0;
    $cond381 = $call375;
    label = 122;
    break;
   case 121:
    $call377 = _memcmp($key_0 | 0, $cond368 | 0, $5 | 0) | 0;
    $cond381 = $call377;
    label = 122;
    break;
   case 122:
    $cmp382 = ($cond381 | 0) < 0;
    if ($cmp382) {
      label = 123;
      break;
    } else {
      label = 124;
      break;
    }
   case 123:
    $right384 = $94 | 0;
    $100 = HEAP32[$right384 >> 2] | 0;
    $101 = $hl350 | 0;
    $_c403 = $100;
    HEAP32[$101 >> 2] = $_c403;
    HEAP32[$right384 >> 2] = $root_6;
    $102 = $r_2 + 4 | 0;
    $_c404 = $94;
    HEAP32[$102 >> 2] = $_c404;
    $hl390 = $94 + 4 | 0;
    $_left391 = $hl390;
    $103 = HEAP32[$_left391 >> 2] | 0;
    $tobool392 = ($103 | 0) == 0;
    if ($tobool392) {
      $l_3413 = $l_2_ph459;
      $r_3415 = $94;
      $me_1418 = $me_0;
      $obj_addr_1422 = $obj_addr_0;
      label = 207;
      break;
    } else {
      $root_6 = $103;
      $r_2 = $94;
      label = 99;
      break;
    }
   case 124:
    $cmp396 = ($cond381 | 0) == 0;
    if ($cmp396) {
      label = 125;
      break;
    } else {
      label = 126;
      break;
    }
   case 125:
    $104 = $r_2 + 4 | 0;
    $root_6_c402 = $root_6;
    HEAP32[$104 >> 2] = $root_6_c402;
    $obj_addr_1 = $obj_addr_0;
    $root_7 = $94;
    $me_1 = $me_0;
    $r_3 = $root_6;
    $l_3 = $l_2_ph459;
    label = 146;
    break;
   case 126:
    $right401 = $l_2_ph459 | 0;
    HEAP32[$right401 >> 2] = $94;
    $105 = $r_2 + 4 | 0;
    $root_6_c401 = $root_6;
    HEAP32[$105 >> 2] = $root_6_c401;
    $right404 = $94 | 0;
    $106 = HEAP32[$right404 >> 2] | 0;
    $tobool405 = ($106 | 0) == 0;
    if ($tobool405) {
      $l_3413 = $94;
      $r_3415 = $root_6;
      $me_1418 = $me_0;
      $obj_addr_1422 = $obj_addr_0;
      label = 207;
      break;
    } else {
      $root_6_ph461 = $106;
      $r_2_ph460 = $root_6;
      $l_2_ph459 = $94;
      label = 141;
      break;
    }
   case 127:
    $107 = $r_2 + 4 | 0;
    $root_6_c400 = $root_6;
    HEAP32[$107 >> 2] = $root_6_c400;
    $l_3413 = $l_2_ph459;
    $r_3415 = $root_6;
    $me_1418 = $me_0;
    $obj_addr_1422 = $obj_addr_0;
    label = 207;
    break;
   case 128:
    $right415 = $root_6 | 0;
    $108 = HEAP32[$right415 >> 2] | 0;
    $tobool416 = ($108 | 0) == 0;
    if ($tobool416) {
      label = 145;
      break;
    } else {
      label = 129;
      break;
    }
   case 129:
    if ($cmp317) {
      label = 130;
      break;
    } else {
      label = 131;
      break;
    }
   case 130:
    $obj420 = $108 + 8 | 0;
    $109 = $obj420;
    $110 = HEAP32[$109 >> 2] | 0;
    $cond425 = $110;
    label = 132;
    break;
   case 131:
    $111 = $108;
    $add_ptr423 = $111 + $idx_neg422 | 0;
    $cond425 = $add_ptr423;
    label = 132;
    break;
   case 132:
    $add_ptr428 = $cond425 + $4 | 0;
    if ($cmp325) {
      label = 133;
      break;
    } else {
      $cond432 = $add_ptr428;
      label = 134;
      break;
    }
   case 133:
    $112 = $add_ptr428;
    $113 = HEAP32[$112 >> 2] | 0;
    $cond432 = $113;
    label = 134;
    break;
   case 134:
    if ($tobool332) {
      label = 135;
      break;
    } else {
      label = 136;
      break;
    }
   case 135:
    $call435 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $key_0, $cond432, $3) | 0;
    $cond445 = $call435;
    label = 139;
    break;
   case 136:
    if ($cmp437) {
      label = 137;
      break;
    } else {
      label = 138;
      break;
    }
   case 137:
    $call439 = _strcmp($key_0 | 0, $cond432 | 0) | 0;
    $cond445 = $call439;
    label = 139;
    break;
   case 138:
    $call441 = _memcmp($key_0 | 0, $cond432 | 0, $5 | 0) | 0;
    $cond445 = $call441;
    label = 139;
    break;
   case 139:
    $cmp446 = ($cond445 | 0) > 0;
    if ($cmp446) {
      label = 140;
      break;
    } else {
      label = 142;
      break;
    }
   case 140:
    $hl448 = $108 + 4 | 0;
    $_left449 = $hl448;
    $114 = HEAP32[$_left449 >> 2] | 0;
    HEAP32[$right415 >> 2] = $114;
    $115 = $hl448 | 0;
    $root_6_c = $root_6;
    HEAP32[$115 >> 2] = $root_6_c;
    $right453 = $l_2_ph459 | 0;
    HEAP32[$right453 >> 2] = $108;
    $right454 = $108 | 0;
    $116 = HEAP32[$right454 >> 2] | 0;
    $tobool455 = ($116 | 0) == 0;
    if ($tobool455) {
      $l_3413 = $108;
      $r_3415 = $r_2;
      $me_1418 = $me_0;
      $obj_addr_1422 = $obj_addr_0;
      label = 207;
      break;
    } else {
      $root_6_ph461 = $116;
      $r_2_ph460 = $r_2;
      $l_2_ph459 = $108;
      label = 141;
      break;
    }
   case 141:
    $root_6 = $root_6_ph461;
    $r_2 = $r_2_ph460;
    label = 99;
    break;
   case 142:
    $cmp459 = ($cond445 | 0) == 0;
    if ($cmp459) {
      label = 143;
      break;
    } else {
      label = 144;
      break;
    }
   case 143:
    $right461 = $l_2_ph459 | 0;
    HEAP32[$right461 >> 2] = $root_6;
    $obj_addr_1 = $obj_addr_0;
    $root_7 = $108;
    $me_1 = $me_0;
    $r_3 = $r_2;
    $l_3 = $root_6;
    label = 146;
    break;
   case 144:
    $117 = $r_2 + 4 | 0;
    $_c399 = $108;
    HEAP32[$117 >> 2] = $_c399;
    $right465 = $l_2_ph459 | 0;
    HEAP32[$right465 >> 2] = $root_6;
    $hl466 = $108 + 4 | 0;
    $_left467 = $hl466;
    $118 = HEAP32[$_left467 >> 2] | 0;
    $tobool468 = ($118 | 0) == 0;
    if ($tobool468) {
      $l_3413 = $root_6;
      $r_3415 = $108;
      $me_1418 = $me_0;
      $obj_addr_1422 = $obj_addr_0;
      label = 207;
      break;
    } else {
      $root_6_ph461 = $118;
      $r_2_ph460 = $108;
      $l_2_ph459 = $root_6;
      label = 141;
      break;
    }
   case 145:
    $right474 = $l_2_ph459 | 0;
    HEAP32[$right474 >> 2] = $root_6;
    $l_3413 = $root_6;
    $r_3415 = $r_2;
    $me_1418 = $me_0;
    $obj_addr_1422 = $obj_addr_0;
    label = 207;
    break;
   case 146:
    $tobool482 = ($root_7 | 0) == 0;
    if ($tobool482) {
      $l_3413 = $l_3;
      $r_3415 = $r_3;
      $me_1418 = $me_1;
      $obj_addr_1422 = $obj_addr_1;
      label = 207;
      break;
    } else {
      label = 147;
      break;
    }
   case 147:
    $119 = HEAP32[$type5 >> 2] | 0;
    $or = $119 | 32768;
    HEAP32[$type5 >> 2] = $or;
    $hl485 = $root_7 + 4 | 0;
    $_left486 = $hl485;
    $120 = HEAP32[$_left486 >> 2] | 0;
    $right487 = $l_3 | 0;
    HEAP32[$right487 >> 2] = $120;
    $right488 = $root_7 | 0;
    $121 = HEAP32[$right488 >> 2] | 0;
    $122 = $r_3 + 4 | 0;
    $_c396 = $121;
    HEAP32[$122 >> 2] = $_c396;
    $and491 = $type & 516;
    $tobool492 = ($and491 | 0) == 0;
    if ($tobool492) {
      label = 174;
      break;
    } else {
      $root_8 = $root_7;
      label = 148;
      break;
    }
   case 148:
    $right494 = $link | 0;
    $123 = HEAP32[$right494 >> 2] | 0;
    $124 = $root_8 + 4 | 0;
    $_c391 = $123;
    HEAP32[$124 >> 2] = $_c391;
    $hl497 = $link + 4 | 0;
    $_left498 = $hl497;
    $125 = HEAP32[$_left498 >> 2] | 0;
    $right499 = $root_8 | 0;
    HEAP32[$right499 >> 2] = $125;
    $126 = HEAP32[$meth >> 2] | 0;
    $type501 = $126 + 4 | 0;
    $127 = HEAP32[$type501 >> 2] | 0;
    $and502 = $127 & 8;
    $tobool503 = ($and502 | 0) == 0;
    if ($tobool503) {
      $root_10 = $root_8;
      label = 171;
      break;
    } else {
      label = 149;
      break;
    }
   case 149:
    $and505 = $type & 516;
    $tobool506 = ($and505 | 0) == 0;
    if ($tobool506) {
      $root_10 = $root_8;
      label = 171;
      break;
    } else {
      label = 150;
      break;
    }
   case 150:
    $cmp508 = ($6 | 0) < 0;
    if ($cmp508) {
      label = 151;
      break;
    } else {
      label = 152;
      break;
    }
   case 151:
    $obj510 = $root_8 + 8 | 0;
    $128 = $obj510;
    $129 = HEAP32[$128 >> 2] | 0;
    $cond515 = $129;
    label = 153;
    break;
   case 152:
    $130 = $root_8;
    $idx_neg512 = -$6 | 0;
    $add_ptr513 = $130 + $idx_neg512 | 0;
    $cond515 = $add_ptr513;
    label = 153;
    break;
   case 153:
    $cmp516 = ($5 | 0) < 0;
    $add_ptr518 = $cond515 + $4 | 0;
    if ($cmp516) {
      label = 154;
      break;
    } else {
      $cond522 = $add_ptr518;
      label = 155;
      break;
    }
   case 154:
    $131 = $add_ptr518;
    $132 = HEAP32[$131 >> 2] | 0;
    $cond522 = $132;
    label = 155;
    break;
   case 155:
    $hl524442 = $root_8 + 4 | 0;
    $_left525443 = $hl524442;
    $133 = HEAP32[$_left525443 >> 2] | 0;
    $tobool526444 = ($133 | 0) == 0;
    if ($tobool526444) {
      $root_10 = $root_8;
      label = 171;
      break;
    } else {
      label = 156;
      break;
    }
   case 156:
    $tobool555 = ($7 | 0) == 0;
    $cmp559 = ($5 | 0) < 1;
    $idx_neg544 = -$6 | 0;
    $root_9445 = $root_8;
    $hl524446 = $hl524442;
    $134 = $133;
    label = 157;
    break;
   case 157:
    $right529436 = $134 | 0;
    $135 = HEAP32[$right529436 >> 2] | 0;
    $tobool530437 = ($135 | 0) == 0;
    if ($tobool530437) {
      $t_1_lcssa = $134;
      $right529_lcssa = $right529436;
      label = 159;
      break;
    } else {
      $t_1438 = $134;
      $right529439 = $right529436;
      $136 = $135;
      label = 158;
      break;
    }
   case 158:
    $hl532 = $136 + 4 | 0;
    $_left533 = $hl532;
    $137 = HEAP32[$_left533 >> 2] | 0;
    HEAP32[$right529439 >> 2] = $137;
    $138 = $hl532 | 0;
    $t_1_c393 = $t_1438;
    HEAP32[$138 >> 2] = $t_1_c393;
    $right529 = $136 | 0;
    $139 = HEAP32[$right529 >> 2] | 0;
    $tobool530 = ($139 | 0) == 0;
    if ($tobool530) {
      $t_1_lcssa = $136;
      $right529_lcssa = $right529;
      label = 159;
      break;
    } else {
      $t_1438 = $136;
      $right529439 = $right529;
      $136 = $139;
      label = 158;
      break;
    }
   case 159:
    $140 = $hl524446 | 0;
    $t_1_c = $t_1_lcssa;
    HEAP32[$140 >> 2] = $t_1_c;
    if ($cmp508) {
      label = 160;
      break;
    } else {
      label = 161;
      break;
    }
   case 160:
    $obj542 = $t_1_lcssa + 8 | 0;
    $141 = $obj542;
    $142 = HEAP32[$141 >> 2] | 0;
    $cond547 = $142;
    label = 162;
    break;
   case 161:
    $143 = $t_1_lcssa;
    $add_ptr545 = $143 + $idx_neg544 | 0;
    $cond547 = $add_ptr545;
    label = 162;
    break;
   case 162:
    $add_ptr550 = $cond547 + $4 | 0;
    if ($cmp516) {
      label = 163;
      break;
    } else {
      $cond554 = $add_ptr550;
      label = 164;
      break;
    }
   case 163:
    $144 = $add_ptr550;
    $145 = HEAP32[$144 >> 2] | 0;
    $cond554 = $145;
    label = 164;
    break;
   case 164:
    if ($tobool555) {
      label = 166;
      break;
    } else {
      label = 165;
      break;
    }
   case 165:
    $call557 = FUNCTION_TABLE_iiiii[$7 & 1023]($dt, $cond522, $cond554, $3) | 0;
    $cond567 = $call557;
    label = 169;
    break;
   case 166:
    if ($cmp559) {
      label = 167;
      break;
    } else {
      label = 168;
      break;
    }
   case 167:
    $call561 = _strcmp($cond522 | 0, $cond554 | 0) | 0;
    $cond567 = $call561;
    label = 169;
    break;
   case 168:
    $call563 = _memcmp($cond522 | 0, $cond554 | 0, $5 | 0) | 0;
    $cond567 = $call563;
    label = 169;
    break;
   case 169:
    $cmp568 = ($cond567 | 0) == 0;
    if ($cmp568) {
      label = 170;
      break;
    } else {
      $root_10 = $root_9445;
      label = 171;
      break;
    }
   case 170:
    $146 = HEAP32[$right529_lcssa >> 2] | 0;
    $_c392 = $146;
    HEAP32[$140 >> 2] = $_c392;
    HEAP32[$right529_lcssa >> 2] = $root_9445;
    $hl524 = $t_1_lcssa + 4 | 0;
    $_left525 = $hl524;
    $147 = HEAP32[$_left525 >> 2] | 0;
    $tobool526 = ($147 | 0) == 0;
    if ($tobool526) {
      $root_10 = $t_1_lcssa;
      label = 171;
      break;
    } else {
      $root_9445 = $t_1_lcssa;
      $hl524446 = $hl524;
      $134 = $147;
      label = 157;
      break;
    }
   case 171:
    $148 = HEAP32[$data >> 2] | 0;
    $here578 = $148 + 4 | 0;
    HEAP32[$here578 >> 2] = $root_10;
    $cmp579 = ($6 | 0) < 0;
    if ($cmp579) {
      label = 172;
      break;
    } else {
      label = 173;
      break;
    }
   case 172:
    $obj581 = $root_10 + 8 | 0;
    $149 = $obj581;
    $150 = HEAP32[$149 >> 2] | 0;
    $retval_0 = $150;
    label = 231;
    break;
   case 173:
    $151 = $root_10;
    $idx_neg583 = -$6 | 0;
    $add_ptr584 = $151 + $idx_neg583 | 0;
    $retval_0 = $add_ptr584;
    label = 231;
    break;
   case 174:
    $and588 = $type & 8;
    $tobool589 = ($and588 | 0) == 0;
    if ($tobool589) {
      label = 180;
      break;
    } else {
      label = 175;
      break;
    }
   case 175:
    $right591 = $link | 0;
    $152 = HEAP32[$right591 >> 2] | 0;
    $153 = $hl485 | 0;
    $_c398 = $152;
    HEAP32[$153 >> 2] = $_c398;
    HEAP32[$right488 >> 2] = 0;
    HEAP32[$right591 >> 2] = $root_7;
    $r_3414 = $r_3;
    $obj_addr_1421 = $obj_addr_1;
    label = 176;
    break;
   case 176:
    $hl596 = $link + 4 | 0;
    $_left597 = $hl596;
    $154 = HEAP32[$_left597 >> 2] | 0;
    $tobool598 = ($154 | 0) == 0;
    if ($tobool598) {
      $obj_addr_2_ph = $obj_addr_1421;
      $r_5_ph = $r_3414;
      label = 210;
      break;
    } else {
      label = 177;
      break;
    }
   case 177:
    $hl601453 = $154 + 4 | 0;
    $_left602454 = $hl601453;
    $155 = HEAP32[$_left602454 >> 2] | 0;
    $tobool603455 = ($155 | 0) == 0;
    if ($tobool603455) {
      $root_11_lcssa = $154;
      label = 179;
      break;
    } else {
      $root_11456 = $154;
      $hl601457 = $hl601453;
      $156 = $155;
      label = 178;
      break;
    }
   case 178:
    $right605 = $156 | 0;
    $157 = HEAP32[$right605 >> 2] | 0;
    $158 = $hl601457 | 0;
    $_c395 = $157;
    HEAP32[$158 >> 2] = $_c395;
    HEAP32[$right605 >> 2] = $root_11456;
    $hl601 = $156 + 4 | 0;
    $_left602 = $hl601;
    $159 = HEAP32[$_left602 >> 2] | 0;
    $tobool603 = ($159 | 0) == 0;
    if ($tobool603) {
      $root_11_lcssa = $156;
      label = 179;
      break;
    } else {
      $root_11456 = $156;
      $hl601457 = $hl601;
      $156 = $159;
      label = 178;
      break;
    }
   case 179:
    $right610 = $root_11_lcssa | 0;
    $160 = HEAP32[$right610 >> 2] | 0;
    $161 = $hl596 | 0;
    $_c394 = $160;
    HEAP32[$161 >> 2] = $_c394;
    $root_8 = $root_11_lcssa;
    label = 148;
    break;
   case 180:
    $and615 = $type & 16;
    $tobool616 = ($and615 | 0) == 0;
    if ($tobool616) {
      label = 186;
      break;
    } else {
      label = 181;
      break;
    }
   case 181:
    $hl618 = $link + 4 | 0;
    $_left619 = $hl618;
    $162 = HEAP32[$_left619 >> 2] | 0;
    HEAP32[$right488 >> 2] = $162;
    $163 = $hl485 | 0;
    HEAP32[$163 >> 2] = 0;
    $164 = $hl618 | 0;
    $root_7_c397 = $root_7;
    HEAP32[$164 >> 2] = $root_7_c397;
    $r_3416 = $r_3;
    $obj_addr_1424 = $obj_addr_1;
    label = 182;
    break;
   case 182:
    $right625 = $link | 0;
    $165 = HEAP32[$right625 >> 2] | 0;
    $tobool626 = ($165 | 0) == 0;
    if ($tobool626) {
      $obj_addr_2_ph = $obj_addr_1424;
      $r_5_ph = $r_3416;
      label = 210;
      break;
    } else {
      label = 183;
      break;
    }
   case 183:
    $right629448 = $165 | 0;
    $166 = HEAP32[$right629448 >> 2] | 0;
    $tobool630449 = ($166 | 0) == 0;
    if ($tobool630449) {
      $root_12_lcssa = $165;
      label = 185;
      break;
    } else {
      $root_12450 = $165;
      $right629451 = $right629448;
      $167 = $166;
      label = 184;
      break;
    }
   case 184:
    $hl632 = $167 + 4 | 0;
    $_left633 = $hl632;
    $168 = HEAP32[$_left633 >> 2] | 0;
    HEAP32[$right629451 >> 2] = $168;
    $169 = $hl632 | 0;
    $root_12_c = $root_12450;
    HEAP32[$169 >> 2] = $root_12_c;
    $right629 = $167 | 0;
    $170 = HEAP32[$right629 >> 2] | 0;
    $tobool630 = ($170 | 0) == 0;
    if ($tobool630) {
      $root_12_lcssa = $167;
      label = 185;
      break;
    } else {
      $root_12450 = $167;
      $right629451 = $right629;
      $167 = $170;
      label = 184;
      break;
    }
   case 185:
    $hl638 = $root_12_lcssa + 4 | 0;
    $_left639 = $hl638;
    $171 = HEAP32[$_left639 >> 2] | 0;
    HEAP32[$right625 >> 2] = $171;
    $root_8 = $root_12_lcssa;
    label = 148;
    break;
   case 186:
    $and643 = $type & 4098;
    $tobool644 = ($and643 | 0) == 0;
    if ($tobool644) {
      label = 197;
      break;
    } else {
      $root_13 = $root_7;
      $r_4 = $r_3;
      label = 187;
      break;
    }
   case 187:
    $cmp646 = ($6 | 0) < 0;
    if ($cmp646) {
      label = 188;
      break;
    } else {
      label = 189;
      break;
    }
   case 188:
    $obj648 = $root_13 + 8 | 0;
    $172 = $obj648;
    $173 = HEAP32[$172 >> 2] | 0;
    $cond653 = $173;
    label = 190;
    break;
   case 189:
    $174 = $root_13;
    $idx_neg650 = -$6 | 0;
    $add_ptr651 = $174 + $idx_neg650 | 0;
    $cond653 = $add_ptr651;
    label = 190;
    break;
   case 190:
    $freef654 = $3 + 16 | 0;
    $175 = HEAP32[$freef654 >> 2] | 0;
    $tobool655 = ($175 | 0) == 0;
    if ($tobool655) {
      label = 193;
      break;
    } else {
      label = 191;
      break;
    }
   case 191:
    $and657 = $type & 2;
    $tobool658 = ($and657 | 0) == 0;
    if ($tobool658) {
      label = 193;
      break;
    } else {
      label = 192;
      break;
    }
   case 192:
    FUNCTION_TABLE_viii[$175 & 1023]($dt, $cond653, $3);
    label = 193;
    break;
   case 193:
    $176 = HEAP32[$link4 >> 2] | 0;
    $cmp663 = ($176 | 0) < 0;
    if ($cmp663) {
      label = 194;
      break;
    } else {
      label = 195;
      break;
    }
   case 194:
    $memoryf665 = $dt + 12 | 0;
    $177 = HEAP32[$memoryf665 >> 2] | 0;
    $178 = $root_13;
    $call666 = FUNCTION_TABLE_iiiii[$177 & 1023]($dt, $178, 0, $3) | 0;
    label = 195;
    break;
   case 195:
    $179 = HEAP32[$data >> 2] | 0;
    $size669 = $179 + 16 | 0;
    $180 = HEAP32[$size669 >> 2] | 0;
    $sub = $180 - 1 | 0;
    HEAP32[$size669 >> 2] = $sub;
    $cmp670 = ($sub | 0) < 0;
    if ($cmp670) {
      label = 196;
      break;
    } else {
      $obj_addr_2_ph = $cond653;
      $r_5_ph = $r_4;
      label = 210;
      break;
    }
   case 196:
    $181 = HEAP32[$data >> 2] | 0;
    $size673 = $181 + 16 | 0;
    HEAP32[$size673 >> 2] = -1;
    $obj_addr_2_ph = $cond653;
    $r_5_ph = $r_4;
    label = 210;
    break;
   case 197:
    $and676 = $type & 2049;
    $tobool677 = ($and676 | 0) == 0;
    if ($tobool677) {
      label = 200;
      break;
    } else {
      label = 198;
      break;
    }
   case 198:
    $182 = HEAP32[$meth >> 2] | 0;
    $type680 = $182 + 4 | 0;
    $183 = HEAP32[$type680 >> 2] | 0;
    $and681 = $183 & 4;
    $tobool682 = ($and681 | 0) == 0;
    if ($tobool682) {
      label = 199;
      break;
    } else {
      $root_8 = $root_7;
      label = 148;
      break;
    }
   case 199:
    $184 = $hl485 | 0;
    HEAP32[$184 >> 2] = 0;
    $hl687 = $link + 4 | 0;
    $_left688 = $hl687;
    $185 = HEAP32[$_left688 >> 2] | 0;
    HEAP32[$right488 >> 2] = $185;
    $186 = $hl687 | 0;
    $root_7_c = $root_7;
    HEAP32[$186 >> 2] = $root_7_c;
    $r_3417 = $r_3;
    $root_7419 = $root_7;
    $obj_addr_1423 = $obj_addr_1;
    label = 214;
    break;
   case 200:
    $and693 = $type & 32;
    $tobool694 = ($and693 | 0) == 0;
    if ($tobool694) {
      $retval_0 = 0;
      label = 231;
      break;
    } else {
      label = 201;
      break;
    }
   case 201:
    $187 = HEAP32[$meth >> 2] | 0;
    $type697 = $187 + 4 | 0;
    $188 = HEAP32[$type697 >> 2] | 0;
    $and698 = $188 & 4;
    $tobool699 = ($and698 | 0) == 0;
    if ($tobool699) {
      label = 206;
      break;
    } else {
      label = 202;
      break;
    }
   case 202:
    $freef701 = $3 + 16 | 0;
    $189 = HEAP32[$freef701 >> 2] | 0;
    $tobool702 = ($189 | 0) == 0;
    if ($tobool702) {
      label = 204;
      break;
    } else {
      label = 203;
      break;
    }
   case 203:
    FUNCTION_TABLE_viii[$189 & 1023]($dt, $obj_addr_1, $3);
    label = 204;
    break;
   case 204:
    $190 = HEAP32[$link4 >> 2] | 0;
    $cmp707 = ($190 | 0) < 0;
    if ($cmp707) {
      label = 205;
      break;
    } else {
      $root_8 = $root_7;
      label = 148;
      break;
    }
   case 205:
    $memoryf709 = $dt + 12 | 0;
    $191 = HEAP32[$memoryf709 >> 2] | 0;
    $192 = $me_1;
    $call710 = FUNCTION_TABLE_iiiii[$191 & 1023]($dt, $192, 0, $3) | 0;
    $root_8 = $root_7;
    label = 148;
    break;
   case 206:
    $193 = $me_1 + 4 | 0;
    HEAP32[$193 >> 2] = 0;
    $hl715 = $link + 4 | 0;
    $_left716 = $hl715;
    $194 = HEAP32[$_left716 >> 2] | 0;
    $right717 = $me_1 | 0;
    HEAP32[$right717 >> 2] = $194;
    $195 = $hl715 | 0;
    $me_1_c = $me_1;
    HEAP32[$195 >> 2] = $me_1_c;
    $196 = HEAP32[$data >> 2] | 0;
    $size721 = $196 + 16 | 0;
    $197 = HEAP32[$size721 >> 2] | 0;
    $add722 = $197 + 1 | 0;
    HEAP32[$size721 >> 2] = $add722;
    $root_8 = $root_7;
    label = 148;
    break;
   case 207:
    $198 = $r_3415 + 4 | 0;
    HEAP32[$198 >> 2] = 0;
    $right733 = $l_3413 | 0;
    HEAP32[$right733 >> 2] = 0;
    $and734 = $type & 8;
    $tobool735 = ($and734 | 0) == 0;
    if ($tobool735) {
      label = 208;
      break;
    } else {
      $r_3414 = $r_3415;
      $obj_addr_1421 = $obj_addr_1422;
      label = 176;
      break;
    }
   case 208:
    $and738 = $type & 16;
    $tobool739 = ($and738 | 0) == 0;
    if ($tobool739) {
      label = 209;
      break;
    } else {
      $r_3416 = $r_3415;
      $obj_addr_1424 = $obj_addr_1422;
      label = 182;
      break;
    }
   case 209:
    $and742 = $type & 516;
    $tobool743 = ($and742 | 0) == 0;
    if ($tobool743) {
      label = 213;
      break;
    } else {
      $obj_addr_2_ph = $obj_addr_1422;
      $r_5_ph = $r_3415;
      label = 210;
      break;
    }
   case 210:
    $r_5 = $r_5_ph;
    label = 211;
    break;
   case 211:
    $hl746 = $r_5 + 4 | 0;
    $_left747 = $hl746;
    $199 = HEAP32[$_left747 >> 2] | 0;
    $tobool748 = ($199 | 0) == 0;
    if ($tobool748) {
      label = 212;
      break;
    } else {
      $r_5 = $199;
      label = 211;
      break;
    }
   case 212:
    $right751 = $link | 0;
    $200 = HEAP32[$right751 >> 2] | 0;
    $201 = $hl746 | 0;
    $_c390 = $200;
    HEAP32[$201 >> 2] = $_c390;
    $hl754 = $link + 4 | 0;
    $_left755 = $hl754;
    $202 = HEAP32[$_left755 >> 2] | 0;
    $203 = HEAP32[$data >> 2] | 0;
    $here757 = $203 + 4 | 0;
    HEAP32[$here757 >> 2] = $202;
    $and758 = $type & 2;
    $tobool759 = ($and758 | 0) != 0;
    $cond763 = $tobool759 ? $obj_addr_2_ph : 0;
    $retval_0 = $cond763;
    label = 231;
    break;
   case 213:
    $and765 = $type & 2049;
    $tobool766 = ($and765 | 0) == 0;
    if ($tobool766) {
      label = 229;
      break;
    } else {
      $r_3417 = $r_3415;
      $root_7419 = 0;
      $obj_addr_1423 = $obj_addr_1422;
      label = 214;
      break;
    }
   case 214:
    $makef = $3 + 12 | 0;
    $204 = HEAP32[$makef >> 2] | 0;
    $tobool768 = ($204 | 0) == 0;
    if ($tobool768) {
      $obj_addr_3 = $obj_addr_1423;
      label = 217;
      break;
    } else {
      label = 215;
      break;
    }
   case 215:
    $and770 = $type & 1;
    $tobool771 = ($and770 | 0) == 0;
    if ($tobool771) {
      $obj_addr_3 = $obj_addr_1423;
      label = 217;
      break;
    } else {
      label = 216;
      break;
    }
   case 216:
    $call774 = FUNCTION_TABLE_iiii[$204 & 1023]($dt, $obj_addr_1423, $3) | 0;
    $obj_addr_3 = $call774;
    label = 217;
    break;
   case 217:
    $tobool776 = ($obj_addr_3 | 0) == 0;
    if ($tobool776) {
      $root_14 = $root_7419;
      label = 226;
      break;
    } else {
      label = 218;
      break;
    }
   case 218:
    $cmp778 = ($6 | 0) > -1;
    if ($cmp778) {
      label = 219;
      break;
    } else {
      label = 220;
      break;
    }
   case 219:
    $add_ptr780 = $obj_addr_3 + $6 | 0;
    $205 = $add_ptr780;
    $root_14 = $205;
    label = 226;
    break;
   case 220:
    $memoryf782 = $dt + 12 | 0;
    $206 = HEAP32[$memoryf782 >> 2] | 0;
    $call783 = FUNCTION_TABLE_iiiii[$206 & 1023]($dt, 0, 12, $3) | 0;
    $207 = $call783;
    $tobool784 = ($call783 | 0) == 0;
    if ($tobool784) {
      label = 222;
      break;
    } else {
      label = 221;
      break;
    }
   case 221:
    $obj786 = $call783 + 8 | 0;
    $208 = $obj786;
    HEAP32[$208 >> 2] = $obj_addr_3;
    $root_14 = $207;
    label = 226;
    break;
   case 222:
    $209 = HEAP32[$makef >> 2] | 0;
    $tobool789 = ($209 | 0) == 0;
    if ($tobool789) {
      $root_14 = $207;
      label = 226;
      break;
    } else {
      label = 223;
      break;
    }
   case 223:
    $freef791 = $3 + 16 | 0;
    $210 = HEAP32[$freef791 >> 2] | 0;
    $tobool792 = ($210 | 0) == 0;
    if ($tobool792) {
      $root_14 = $207;
      label = 226;
      break;
    } else {
      label = 224;
      break;
    }
   case 224:
    $and794 = $type & 1;
    $tobool795 = ($and794 | 0) == 0;
    if ($tobool795) {
      $root_14 = $207;
      label = 226;
      break;
    } else {
      label = 225;
      break;
    }
   case 225:
    FUNCTION_TABLE_viii[$210 & 1023]($dt, $obj_addr_3, $3);
    $root_14 = $207;
    label = 226;
    break;
   case 226:
    $tobool802 = ($root_14 | 0) == 0;
    if ($tobool802) {
      $obj_addr_2_ph = $obj_addr_3;
      $r_5_ph = $r_3417;
      label = 210;
      break;
    } else {
      label = 227;
      break;
    }
   case 227:
    $211 = HEAP32[$data >> 2] | 0;
    $size805 = $211 + 16 | 0;
    $212 = HEAP32[$size805 >> 2] | 0;
    $cmp806 = ($212 | 0) > -1;
    if ($cmp806) {
      label = 228;
      break;
    } else {
      $root_8 = $root_14;
      label = 148;
      break;
    }
   case 228:
    $add810 = $212 + 1 | 0;
    HEAP32[$size805 >> 2] = $add810;
    $root_8 = $root_14;
    label = 148;
    break;
   case 229:
    $and814 = $type & 32;
    $tobool815 = ($and814 | 0) == 0;
    if ($tobool815) {
      $obj_addr_2_ph = 0;
      $r_5_ph = $r_3415;
      label = 210;
      break;
    } else {
      label = 230;
      break;
    }
   case 230:
    $213 = HEAP32[$data >> 2] | 0;
    $size818 = $213 + 16 | 0;
    $214 = HEAP32[$size818 >> 2] | 0;
    $add819 = $214 + 1 | 0;
    HEAP32[$size818 >> 2] = $add819;
    $root_8 = $me_1418;
    label = 148;
    break;
   case 231:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _inside($inside_context, $p) {
  $inside_context = $inside_context | 0;
  $p = $p | 0;
  var $1 = 0, $sub = 0.0, $sub13 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $1 = HEAP32[$inside_context >> 2] | 0;
  $sub = +HEAPF64[$p >> 3] - +HEAPF64[$1 >> 3];
  $sub13 = +HEAPF64[$p + 8 >> 3] - +HEAPF64[$1 + 8 >> 3];
  STACKTOP = __stackBase__;
  return $sub * $sub + $sub13 * $sub13 <= +HEAPF64[HEAP32[$inside_context + 4 >> 2] >> 3] & 1 | 0;
}
function _dtrestore($dt, $list) {
  $dt = $dt | 0;
  $list = $list | 0;
  var $meth = 0, $0 = 0, $searchf1 = 0, $1 = 0, $data = 0, $2 = 0, $type2 = 0, $3 = 0, $and = 0, $tobool = 0, $tobool3 = 0, $here = 0, $4 = 0, $size = 0, $5 = 0, $cmp = 0, $list_addr_0 = 0, $type_0 = 0, $6 = 0, $type11 = 0, $7 = 0, $and12 = 0, $8 = 0, $type14 = 0, $9 = 0, $and15 = 0, $tobool16 = 0, $here19 = 0, $tobool20 = 0, $10 = 0, $_htab = 0, $11 = 0, $ntab = 0, $12 = 0, $add_ptr = 0, $cmp2430 = 0, $list_addr_132 = 0, $s_031 = 0, $13 = 0, $tobool25 = 0, $right = 0, $14 = 0, $list_addr_2 = 0, $incdec_ptr = 0, $cmp24 = 0, $size31 = 0, $tobool3227 = 0, $list_addr_328 = 0, $right33 = 0, $15 = 0, $16 = 0, $call = 0, $tobool32 = 0, $and38 = 0, $tobool39 = 0, $here45 = 0, $17 = 0, $18 = 0, $list_addr_0_c = 0, $tobool49 = 0, $19 = 0, $size52 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meth = $dt + 16 | 0;
    $0 = HEAP32[$meth >> 2] | 0;
    $searchf1 = $0 | 0;
    $1 = HEAP32[$searchf1 >> 2] | 0;
    $data = $dt + 8 | 0;
    $2 = HEAP32[$data >> 2] | 0;
    $type2 = $2 | 0;
    $3 = HEAP32[$type2 >> 2] | 0;
    $and = $3 & 4096;
    $tobool = ($list | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $tobool3 = ($and | 0) == 0;
    if ($tobool3) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $here = $2 + 4 | 0;
    $4 = HEAP32[$here >> 2] | 0;
    $type_0 = $and;
    $list_addr_0 = $4;
    label = 6;
    break;
   case 5:
    $size = $2 + 16 | 0;
    $5 = HEAP32[$size >> 2] | 0;
    $cmp = ($5 | 0) == 0;
    if ($cmp) {
      $type_0 = 0;
      $list_addr_0 = $list;
      label = 6;
      break;
    } else {
      $retval_0 = -1;
      label = 19;
      break;
    }
   case 6:
    $6 = HEAP32[$data >> 2] | 0;
    $type11 = $6 | 0;
    $7 = HEAP32[$type11 >> 2] | 0;
    $and12 = $7 & -4097;
    HEAP32[$type11 >> 2] = $and12;
    $8 = HEAP32[$data >> 2] | 0;
    $type14 = $8 | 0;
    $9 = HEAP32[$type14 >> 2] | 0;
    $and15 = $9 & 3;
    $tobool16 = ($and15 | 0) == 0;
    if ($tobool16) {
      label = 14;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $here19 = $8 + 4 | 0;
    HEAP32[$here19 >> 2] = 0;
    $tobool20 = ($type_0 | 0) == 0;
    $10 = HEAP32[$data >> 2] | 0;
    if ($tobool20) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $_htab = $10 + 8 | 0;
    $11 = HEAP32[$_htab >> 2] | 0;
    $ntab = $10 + 12 | 0;
    $12 = HEAP32[$ntab >> 2] | 0;
    $add_ptr = $11 + ($12 << 2) | 0;
    $cmp2430 = ($12 | 0) > 0;
    if ($cmp2430) {
      $s_031 = $11;
      $list_addr_132 = $list_addr_0;
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 9:
    $13 = HEAP32[$s_031 >> 2] | 0;
    $tobool25 = ($13 | 0) == 0;
    if ($tobool25) {
      $list_addr_2 = $list_addr_132;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP32[$s_031 >> 2] = $list_addr_132;
    $right = $13 | 0;
    $14 = HEAP32[$right >> 2] | 0;
    HEAP32[$right >> 2] = 0;
    $list_addr_2 = $14;
    label = 11;
    break;
   case 11:
    $incdec_ptr = $s_031 + 4 | 0;
    $cmp24 = $incdec_ptr >>> 0 < $add_ptr >>> 0;
    if ($cmp24) {
      $s_031 = $incdec_ptr;
      $list_addr_132 = $list_addr_2;
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 12:
    $size31 = $10 + 16 | 0;
    HEAP32[$size31 >> 2] = 0;
    $tobool3227 = ($list_addr_0 | 0) == 0;
    if ($tobool3227) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      $list_addr_328 = $list_addr_0;
      label = 13;
      break;
    }
   case 13:
    $right33 = $list_addr_328 | 0;
    $15 = HEAP32[$right33 >> 2] | 0;
    $16 = $list_addr_328;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($dt, $16, 32) | 0;
    $tobool32 = ($15 | 0) == 0;
    if ($tobool32) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      $list_addr_328 = $15;
      label = 13;
      break;
    }
   case 14:
    $and38 = $9 & 12;
    $tobool39 = ($and38 | 0) == 0;
    $here45 = $8 + 4 | 0;
    if ($tobool39) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    HEAP32[$here45 >> 2] = $list_addr_0;
    label = 17;
    break;
   case 16:
    HEAP32[$here45 >> 2] = 0;
    $17 = HEAP32[$data >> 2] | 0;
    $18 = $17 + 8 | 0;
    $list_addr_0_c = $list_addr_0 | 0;
    HEAP32[$18 >> 2] = $list_addr_0_c;
    label = 17;
    break;
   case 17:
    $tobool49 = ($type_0 | 0) == 0;
    if ($tobool49) {
      label = 18;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 18:
    $19 = HEAP32[$data >> 2] | 0;
    $size52 = $19 + 16 | 0;
    HEAP32[$size52 >> 2] = -1;
    $retval_0 = 0;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtview($dt, $view) {
  $dt = $dt | 0;
  $view = $view | 0;
  var $data = 0, $0 = 0, $type = 0, $1 = 0, $and = 0, $tobool = 0, $call = 0, $tobool1 = 0, $data2 = 0, $2 = 0, $type3 = 0, $3 = 0, $and4 = 0, $tobool5 = 0, $call7 = 0, $meth = 0, $4 = 0, $meth11 = 0, $5 = 0, $cmp = 0, $tobool1423 = 0, $d_024 = 0, $cmp15 = 0, $view18 = 0, $6 = 0, $tobool14 = 0, $view19 = 0, $7 = 0, $tobool20 = 0, $nview = 0, $8 = 0, $sub = 0, $walk = 0, $meth26 = 0, $9 = 0, $searchf = 0, $10 = 0, $searchf27 = 0, $searchf30 = 0, $nview31 = 0, $11 = 0, $add = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $data = $dt + 8 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    $type = $0 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $and = $1 & 4096;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _dtrestore($dt, 0) | 0;
    label = 4;
    break;
   case 4:
    $tobool1 = ($view | 0) != 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 11;
      break;
    }
   case 5:
    $data2 = $view + 8 | 0;
    $2 = HEAP32[$data2 >> 2] | 0;
    $type3 = $2 | 0;
    $3 = HEAP32[$type3 >> 2] | 0;
    $and4 = $3 & 4096;
    $tobool5 = ($and4 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call7 = _dtrestore($view, 0) | 0;
    label = 7;
    break;
   case 7:
    $meth = $view + 16 | 0;
    $4 = HEAP32[$meth >> 2] | 0;
    $meth11 = $dt + 16 | 0;
    $5 = HEAP32[$meth11 >> 2] | 0;
    $cmp = ($4 | 0) == ($5 | 0);
    if ($cmp) {
      label = 8;
      break;
    } else {
      $retval_0 = 0;
      label = 16;
      break;
    }
   case 8:
    $tobool1423 = ($view | 0) == 0;
    if ($tobool1423) {
      label = 11;
      break;
    } else {
      $d_024 = $view;
      label = 9;
      break;
    }
   case 9:
    $cmp15 = ($d_024 | 0) == ($dt | 0);
    if ($cmp15) {
      $retval_0 = 0;
      label = 16;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $view18 = $d_024 + 28 | 0;
    $6 = HEAP32[$view18 >> 2] | 0;
    $tobool14 = ($6 | 0) == 0;
    if ($tobool14) {
      label = 11;
      break;
    } else {
      $d_024 = $6;
      label = 9;
      break;
    }
   case 11:
    $view19 = $dt + 28 | 0;
    $7 = HEAP32[$view19 >> 2] | 0;
    $tobool20 = ($7 | 0) == 0;
    if ($tobool20) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $nview = $7 + 24 | 0;
    $8 = HEAP32[$nview >> 2] | 0;
    $sub = $8 - 1 | 0;
    HEAP32[$nview >> 2] = $sub;
    label = 13;
    break;
   case 13:
    $walk = $dt + 32 | 0;
    HEAP32[$walk >> 2] = 0;
    HEAP32[$view19 >> 2] = 0;
    if ($tobool1) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $meth26 = $dt + 16 | 0;
    $9 = HEAP32[$meth26 >> 2] | 0;
    $searchf = $9 | 0;
    $10 = HEAP32[$searchf >> 2] | 0;
    $searchf27 = $dt | 0;
    HEAP32[$searchf27 >> 2] = $10;
    $retval_0 = $7;
    label = 16;
    break;
   case 15:
    HEAP32[$view19 >> 2] = $view;
    $searchf30 = $dt | 0;
    HEAP32[$searchf30 >> 2] = 650;
    $nview31 = $view + 24 | 0;
    $11 = HEAP32[$nview31 >> 2] | 0;
    $add = $11 + 1 | 0;
    HEAP32[$nview31 >> 2] = $add;
    $retval_0 = $view;
    label = 16;
    break;
   case 16:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtvsearch($dt, $obj, $type) {
  $dt = $dt | 0;
  $obj = $obj | 0;
  $type = $type | 0;
  var $and = 0, $tobool = 0, $meth = 0, $0 = 0, $searchf = 0, $1 = 0, $call = 0, $and1 = 0, $tobool2 = 0, $and3 = 0, $tobool4 = 0, $meth5 = 0, $2 = 0, $type6 = 0, $3 = 0, $and7 = 0, $tobool8 = 0, $tobool10100 = 0, $d_0101 = 0, $meth11 = 0, $4 = 0, $searchf12 = 0, $5 = 0, $call13 = 0, $tobool14 = 0, $view = 0, $6 = 0, $tobool10 = 0, $d_0_lcssa = 0, $o_1 = 0, $walk = 0, $meth18 = 0, $7 = 0, $type19 = 0, $8 = 0, $and20 = 0, $tobool21 = 0, $and23 = 0, $tobool24 = 0, $tobool2893 = 0, $and57 = 0, $tobool58 = 0, $and62 = 0, $tobool63 = 0, $d_197 = 0, $p_096 = 0, $nk_095 = 0, $n_094 = 0, $meth30 = 0, $9 = 0, $searchf31 = 0, $10 = 0, $call32 = 0, $tobool33 = 0, $disc = 0, $11 = 0, $key = 0, $12 = 0, $size = 0, $13 = 0, $comparf = 0, $14 = 0, $cmp39 = 0, $add_ptr = 0, $15 = 0, $16 = 0, $cond = 0, $tobool41 = 0, $tobool43 = 0, $17 = 0, $call46 = 0, $cmp48 = 0, $call50 = 0, $call52 = 0, $cond56 = 0, $cmp60 = 0, $or_cond = 0, $cmp65 = 0, $or_cond80 = 0, $or_cond112 = 0, $n_1 = 0, $nk_1 = 0, $p_1 = 0, $view70 = 0, $18 = 0, $tobool28 = 0, $p_0_lcssa = 0, $n_0_lcssa = 0, $walk72 = 0, $and74 = 0, $tobool75 = 0, $walk78 = 0, $19 = 0, $tobool79 = 0, $disc82 = 0, $20 = 0, $link83 = 0, $21 = 0, $cmp84 = 0, $data = 0, $22 = 0, $here = 0, $23 = 0, $obj87 = 0, $24 = 0, $25 = 0, $26 = 0, $idx_neg = 0, $add_ptr95 = 0, $cond97 = 0, $cmp98 = 0, $tobool10191 = 0, $d_292 = 0, $meth103 = 0, $27 = 0, $searchf104 = 0, $28 = 0, $call105 = 0, $tobool106 = 0, $view110 = 0, $29 = 0, $tobool101 = 0, $obj_addr_0 = 0, $30 = 0, $meth118 = 0, $31 = 0, $searchf119 = 0, $32 = 0, $call120 = 0, $and144 = 0, $tobool145 = 0, $d_3_ph = 0, $obj_addr_1_ph = 0, $tobool12288 = 0, $cmp12482 = 0, $meth136 = 0, $obj_addr_189 = 0, $p_283 = 0, $meth127 = 0, $33 = 0, $searchf128 = 0, $34 = 0, $call129 = 0, $tobool130 = 0, $view134 = 0, $35 = 0, $cmp124 = 0, $36 = 0, $searchf137 = 0, $37 = 0, $call138 = 0, $tobool122 = 0, $view139 = 0, $38 = 0, $tobool141 = 0, $meth147 = 0, $39 = 0, $searchf148 = 0, $40 = 0, $call149 = 0, $call153 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $and = $type & 99;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $meth = $dt + 16 | 0;
    $0 = HEAP32[$meth >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($dt, $obj, $type) | 0;
    $retval_0 = $call;
    label = 50;
    break;
   case 4:
    $and1 = $type & 516;
    $tobool2 = ($and1 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $and3 = $type & 384;
    $tobool4 = ($and3 | 0) == 0;
    if ($tobool4) {
      label = 11;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $meth5 = $dt + 16 | 0;
    $2 = HEAP32[$meth5 >> 2] | 0;
    $type6 = $2 + 4 | 0;
    $3 = HEAP32[$type6 >> 2] | 0;
    $and7 = $3 & 12;
    $tobool8 = ($and7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $tobool10100 = ($dt | 0) == 0;
    if ($tobool10100) {
      $o_1 = 0;
      $d_0_lcssa = 0;
      label = 10;
      break;
    } else {
      $d_0101 = $dt;
      label = 8;
      break;
    }
   case 8:
    $meth11 = $d_0101 + 16 | 0;
    $4 = HEAP32[$meth11 >> 2] | 0;
    $searchf12 = $4 | 0;
    $5 = HEAP32[$searchf12 >> 2] | 0;
    $call13 = FUNCTION_TABLE_iiii[$5 & 1023]($d_0101, $obj, $type) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 9;
      break;
    } else {
      $o_1 = $call13;
      $d_0_lcssa = $d_0101;
      label = 10;
      break;
    }
   case 9:
    $view = $d_0101 + 28 | 0;
    $6 = HEAP32[$view >> 2] | 0;
    $tobool10 = ($6 | 0) == 0;
    if ($tobool10) {
      $o_1 = 0;
      $d_0_lcssa = 0;
      label = 10;
      break;
    } else {
      $d_0101 = $6;
      label = 8;
      break;
    }
   case 10:
    $walk = $dt + 32 | 0;
    HEAP32[$walk >> 2] = $d_0_lcssa;
    $retval_0 = $o_1;
    label = 50;
    break;
   case 11:
    $meth18 = $dt + 16 | 0;
    $7 = HEAP32[$meth18 >> 2] | 0;
    $type19 = $7 + 4 | 0;
    $8 = HEAP32[$type19 >> 2] | 0;
    $and20 = $8 & 12;
    $tobool21 = ($and20 | 0) == 0;
    if ($tobool21) {
      label = 28;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $and23 = $type & 408;
    $tobool24 = ($and23 | 0) == 0;
    if ($tobool24) {
      $retval_0 = 0;
      label = 50;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $tobool2893 = ($dt | 0) == 0;
    if ($tobool2893) {
      $n_0_lcssa = 0;
      $p_0_lcssa = 0;
      label = 27;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $and57 = $type & 136;
    $tobool58 = ($and57 | 0) != 0;
    $and62 = $type & 272;
    $tobool63 = ($and62 | 0) != 0;
    $n_094 = 0;
    $nk_095 = 0;
    $p_096 = 0;
    $d_197 = $dt;
    label = 15;
    break;
   case 15:
    $meth30 = $d_197 + 16 | 0;
    $9 = HEAP32[$meth30 >> 2] | 0;
    $searchf31 = $9 | 0;
    $10 = HEAP32[$searchf31 >> 2] | 0;
    $call32 = FUNCTION_TABLE_iiii[$10 & 1023]($d_197, $obj, $type) | 0;
    $tobool33 = ($call32 | 0) == 0;
    if ($tobool33) {
      $p_1 = $p_096;
      $nk_1 = $nk_095;
      $n_1 = $n_094;
      label = 26;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $disc = $d_197 + 4 | 0;
    $11 = HEAP32[$disc >> 2] | 0;
    $key = $11 | 0;
    $12 = HEAP32[$key >> 2] | 0;
    $size = $11 + 4 | 0;
    $13 = HEAP32[$size >> 2] | 0;
    $comparf = $11 + 20 | 0;
    $14 = HEAP32[$comparf >> 2] | 0;
    $cmp39 = ($13 | 0) < 0;
    $add_ptr = $call32 + $12 | 0;
    if ($cmp39) {
      label = 17;
      break;
    } else {
      $cond = $add_ptr;
      label = 18;
      break;
    }
   case 17:
    $15 = $add_ptr;
    $16 = HEAP32[$15 >> 2] | 0;
    $cond = $16;
    label = 18;
    break;
   case 18:
    $tobool41 = ($n_094 | 0) == 0;
    if ($tobool41) {
      label = 25;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $tobool43 = ($14 | 0) == 0;
    if ($tobool43) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $17 = HEAP32[$disc >> 2] | 0;
    $call46 = FUNCTION_TABLE_iiiii[$14 & 1023]($d_197, $cond, $nk_095, $17) | 0;
    $cond56 = $call46;
    label = 24;
    break;
   case 21:
    $cmp48 = ($13 | 0) < 1;
    if ($cmp48) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $call50 = _strcmp($cond | 0, $nk_095 | 0) | 0;
    $cond56 = $call50;
    label = 24;
    break;
   case 23:
    $call52 = _memcmp($cond | 0, $nk_095 | 0, $13 | 0) | 0;
    $cond56 = $call52;
    label = 24;
    break;
   case 24:
    $cmp60 = ($cond56 | 0) < 0;
    $or_cond = $tobool58 & $cmp60;
    $cmp65 = ($cond56 | 0) > 0;
    $or_cond80 = $tobool63 & $cmp65;
    $or_cond112 = $or_cond | $or_cond80;
    if ($or_cond112) {
      label = 25;
      break;
    } else {
      $p_1 = $p_096;
      $nk_1 = $nk_095;
      $n_1 = $n_094;
      label = 26;
      break;
    }
   case 25:
    $p_1 = $d_197;
    $nk_1 = $cond;
    $n_1 = $call32;
    label = 26;
    break;
   case 26:
    $view70 = $d_197 + 28 | 0;
    $18 = HEAP32[$view70 >> 2] | 0;
    $tobool28 = ($18 | 0) == 0;
    if ($tobool28) {
      $n_0_lcssa = $n_1;
      $p_0_lcssa = $p_1;
      label = 27;
      break;
    } else {
      $n_094 = $n_1;
      $nk_095 = $nk_1;
      $p_096 = $p_1;
      $d_197 = $18;
      label = 15;
      break;
    }
   case 27:
    $walk72 = $dt + 32 | 0;
    HEAP32[$walk72 >> 2] = $p_0_lcssa;
    $retval_0 = $n_0_lcssa;
    label = 50;
    break;
   case 28:
    $and74 = $type & 24;
    $tobool75 = ($and74 | 0) == 0;
    if ($tobool75) {
      $retval_0 = 0;
      label = 50;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $walk78 = $dt + 32 | 0;
    $19 = HEAP32[$walk78 >> 2] | 0;
    $tobool79 = ($19 | 0) == 0;
    if ($tobool79) {
      label = 34;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $disc82 = $19 + 4 | 0;
    $20 = HEAP32[$disc82 >> 2] | 0;
    $link83 = $20 + 8 | 0;
    $21 = HEAP32[$link83 >> 2] | 0;
    $cmp84 = ($21 | 0) < 0;
    $data = $19 + 8 | 0;
    $22 = HEAP32[$data >> 2] | 0;
    $here = $22 + 4 | 0;
    $23 = HEAP32[$here >> 2] | 0;
    if ($cmp84) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    $obj87 = $23 + 8 | 0;
    $24 = $obj87;
    $25 = HEAP32[$24 >> 2] | 0;
    $cond97 = $25;
    label = 33;
    break;
   case 32:
    $26 = $23;
    $idx_neg = -$21 | 0;
    $add_ptr95 = $26 + $idx_neg | 0;
    $cond97 = $add_ptr95;
    label = 33;
    break;
   case 33:
    $cmp98 = ($cond97 | 0) == ($obj | 0);
    if ($cmp98) {
      $obj_addr_0 = $obj;
      label = 39;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $tobool10191 = ($dt | 0) == 0;
    if ($tobool10191) {
      label = 38;
      break;
    } else {
      $d_292 = $dt;
      label = 35;
      break;
    }
   case 35:
    $meth103 = $d_292 + 16 | 0;
    $27 = HEAP32[$meth103 >> 2] | 0;
    $searchf104 = $27 | 0;
    $28 = HEAP32[$searchf104 >> 2] | 0;
    $call105 = FUNCTION_TABLE_iiii[$28 & 1023]($d_292, $obj, 4) | 0;
    $tobool106 = ($call105 | 0) == 0;
    if ($tobool106) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    HEAP32[$walk78 >> 2] = $d_292;
    $obj_addr_0 = $call105;
    label = 39;
    break;
   case 37:
    $view110 = $d_292 + 28 | 0;
    $29 = HEAP32[$view110 >> 2] | 0;
    $tobool101 = ($29 | 0) == 0;
    if ($tobool101) {
      label = 38;
      break;
    } else {
      $d_292 = $29;
      label = 35;
      break;
    }
   case 38:
    HEAP32[$walk78 >> 2] = 0;
    $retval_0 = 0;
    label = 50;
    break;
   case 39:
    $30 = HEAP32[$walk78 >> 2] | 0;
    $meth118 = $30 + 16 | 0;
    $31 = HEAP32[$meth118 >> 2] | 0;
    $searchf119 = $31 | 0;
    $32 = HEAP32[$searchf119 >> 2] | 0;
    $call120 = FUNCTION_TABLE_iiii[$32 & 1023]($30, $obj_addr_0, $type) | 0;
    $and144 = $type & 8;
    $tobool145 = ($and144 | 0) == 0;
    $obj_addr_1_ph = $call120;
    $d_3_ph = $30;
    label = 40;
    break;
   case 40:
    $tobool12288 = ($obj_addr_1_ph | 0) == 0;
    if ($tobool12288) {
      label = 46;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $cmp12482 = ($d_3_ph | 0) == ($dt | 0);
    $meth136 = $d_3_ph + 16 | 0;
    $obj_addr_189 = $obj_addr_1_ph;
    label = 42;
    break;
   case 42:
    if ($cmp12482) {
      $retval_0 = $obj_addr_189;
      label = 50;
      break;
    } else {
      $p_283 = $dt;
      label = 43;
      break;
    }
   case 43:
    $meth127 = $p_283 + 16 | 0;
    $33 = HEAP32[$meth127 >> 2] | 0;
    $searchf128 = $33 | 0;
    $34 = HEAP32[$searchf128 >> 2] | 0;
    $call129 = FUNCTION_TABLE_iiii[$34 & 1023]($p_283, $obj_addr_189, 4) | 0;
    $tobool130 = ($call129 | 0) == 0;
    if ($tobool130) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    $view134 = $p_283 + 28 | 0;
    $35 = HEAP32[$view134 >> 2] | 0;
    $cmp124 = ($35 | 0) == ($d_3_ph | 0);
    if ($cmp124) {
      $retval_0 = $obj_addr_189;
      label = 50;
      break;
    } else {
      $p_283 = $35;
      label = 43;
      break;
    }
   case 45:
    $36 = HEAP32[$meth136 >> 2] | 0;
    $searchf137 = $36 | 0;
    $37 = HEAP32[$searchf137 >> 2] | 0;
    $call138 = FUNCTION_TABLE_iiii[$37 & 1023]($d_3_ph, $obj_addr_189, $type) | 0;
    $tobool122 = ($call138 | 0) == 0;
    if ($tobool122) {
      label = 46;
      break;
    } else {
      $obj_addr_189 = $call138;
      label = 42;
      break;
    }
   case 46:
    $view139 = $d_3_ph + 28 | 0;
    $38 = HEAP32[$view139 >> 2] | 0;
    HEAP32[$walk78 >> 2] = $38;
    $tobool141 = ($38 | 0) == 0;
    if ($tobool141) {
      $retval_0 = 0;
      label = 50;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $meth147 = $38 + 16 | 0;
    $39 = HEAP32[$meth147 >> 2] | 0;
    $searchf148 = $39 | 0;
    $40 = HEAP32[$searchf148 >> 2] | 0;
    if ($tobool145) {
      label = 49;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $call149 = FUNCTION_TABLE_iiii[$40 & 1023]($38, 0, 128) | 0;
    $obj_addr_1_ph = $call149;
    $d_3_ph = $38;
    label = 40;
    break;
   case 49:
    $call153 = FUNCTION_TABLE_iiii[$40 & 1023]($38, 0, 256) | 0;
    $obj_addr_1_ph = $call153;
    $d_3_ph = $38;
    label = 40;
    break;
   case 50:
    return $retval_0 | 0;
  }
  return 0;
}
function _dtwalk($dt, $userf, $data) {
  $dt = $dt | 0;
  $userf = $userf | 0;
  $data = $data | 0;
  var $searchf = 0, $0 = 0, $call = 0, $walk1 = 0, $callee_knr_cast = 0, $obj_0 = 0, $tobool = 0, $1 = 0, $tobool2 = 0, $dt_ = 0, $2 = 0, $call4 = 0, $call5 = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $searchf = $dt | 0;
    $0 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$0 & 1023]($dt, 0, 128) | 0;
    $walk1 = $dt + 32 | 0;
    $callee_knr_cast = $userf;
    $obj_0 = $call;
    label = 3;
    break;
   case 3:
    $tobool = ($obj_0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP32[$walk1 >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    $dt_ = $tobool2 ? $dt : $1;
    $2 = HEAP32[$searchf >> 2] | 0;
    $call4 = FUNCTION_TABLE_iiii[$2 & 1023]($dt, $obj_0, 8) | 0;
    $call5 = FUNCTION_TABLE_iiii[$callee_knr_cast & 1023]($dt_, $obj_0, $data) | 0;
    $cmp = ($call5 | 0) < 0;
    if ($cmp) {
      $retval_0 = $call5;
      label = 5;
      break;
    } else {
      $obj_0 = $call4;
      label = 3;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _arrow_flags($e, $sflag, $eflag) {
  $e = $e | 0;
  $sflag = $sflag | 0;
  $eflag = $eflag | 0;
  var $s0 = 0, $e0 = 0, $tail = 0, $0 = 0, $graph = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $and = 0, $5 = 0, $tobool1 = 0, $6 = 0, $index = 0, $7 = 0, $call = 0, $8 = 0, $tobool2 = 0, $9 = 0, $call10 = 0, $tobool11 = 0, $arrowdir_028_lcssa = 0, $sflag13 = 0, $10 = 0, $eflag14 = 0, $11 = 0, $12 = 0, $tobool16 = 0, $13 = 0, $cmp18 = 0, $14 = 0, $index21 = 0, $15 = 0, $call22 = 0, $16 = 0, $tobool25 = 0, $17 = 0, $tobool28 = 0, $18 = 0, $cmp30 = 0, $19 = 0, $index33 = 0, $20 = 0, $call34 = 0, $21 = 0, $tobool37 = 0, $conc_opp_flag = 0, $22 = 0, $tobool40 = 0, $head = 0, $23 = 0, $graph42 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $call45 = 0, $29 = 0, $30 = 0, $31 = 0, $or = 0, $32 = 0, $33 = 0, $or46 = 0, $call10_1 = 0, $tobool11_1 = 0, $call10_2 = 0, $tobool11_2 = 0, $cmp_3 = 0, $call10_3 = 0, $tobool11_3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s0 = __stackBase__ | 0;
    $e0 = __stackBase__ + 8 | 0;
    HEAP32[$sflag >> 2] = 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $2 = $1;
    $3 = HEAP32[$2 >> 2] | 0;
    $4 = $3 >>> 4;
    $and = $4 & 1;
    HEAP32[$eflag >> 2] = $and;
    $5 = HEAP32[41946] | 0;
    $tobool1 = ($5 | 0) == 0;
    if ($tobool1) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $6 = $e | 0;
    $index = $5 + 8 | 0;
    $7 = HEAP32[$index >> 2] | 0;
    $call = _agxget($6, $7) | 0;
    $8 = HEAP8[$call] | 0;
    $tobool2 = $8 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $9 = HEAP8[$call] | 0;
    if (($9 << 24 >> 24 | 0) == 102) {
      label = 5;
      break;
    } else if (($9 << 24 >> 24 | 0) == 98) {
      label = 18;
      break;
    } else if (($9 << 24 >> 24 | 0) == 110) {
      label = 21;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $call10 = _strcmp($call | 0, 139944) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      $arrowdir_028_lcssa = 168464;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $sflag13 = $arrowdir_028_lcssa + 4 | 0;
    $10 = HEAP32[$sflag13 >> 2] | 0;
    HEAP32[$sflag >> 2] = $10;
    $eflag14 = $arrowdir_028_lcssa + 8 | 0;
    $11 = HEAP32[$eflag14 >> 2] | 0;
    HEAP32[$eflag >> 2] = $11;
    label = 7;
    break;
   case 7:
    $12 = HEAP32[41964] | 0;
    $tobool16 = ($12 | 0) == 0;
    if ($tobool16) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $13 = HEAP32[$eflag >> 2] | 0;
    $cmp18 = ($13 | 0) == 1;
    if ($cmp18) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $14 = $e | 0;
    $index21 = $12 + 8 | 0;
    $15 = HEAP32[$index21 >> 2] | 0;
    $call22 = _agxget($14, $15) | 0;
    $16 = HEAP8[$call22] | 0;
    $tobool25 = $16 << 24 >> 24 == 0;
    if ($tobool25) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _arrow_match_name($call22, $eflag);
    label = 11;
    break;
   case 11:
    $17 = HEAP32[41960] | 0;
    $tobool28 = ($17 | 0) == 0;
    if ($tobool28) {
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $18 = HEAP32[$sflag >> 2] | 0;
    $cmp30 = ($18 | 0) == 1;
    if ($cmp30) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $19 = $e | 0;
    $index33 = $17 + 8 | 0;
    $20 = HEAP32[$index33 >> 2] | 0;
    $call34 = _agxget($19, $20) | 0;
    $21 = HEAP8[$call34] | 0;
    $tobool37 = $21 << 24 >> 24 == 0;
    if ($tobool37) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    _arrow_match_name($call34, $sflag);
    label = 15;
    break;
   case 15:
    $conc_opp_flag = $e + 169 | 0;
    $22 = HEAP8[$conc_opp_flag] | 0;
    $tobool40 = $22 << 24 >> 24 == 0;
    if ($tobool40) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $head = $e + 12 | 0;
    $23 = HEAP32[$head >> 2] | 0;
    $graph42 = $23 + 20 | 0;
    $24 = HEAP32[$graph42 >> 2] | 0;
    $25 = HEAP32[$tail >> 2] | 0;
    $26 = $24;
    $27 = $23;
    $28 = $25;
    $call45 = _agfindedge($26, $27, $28) | 0;
    $29 = $call45;
    _arrow_flags($29, $s0, $e0);
    $30 = HEAP32[$eflag >> 2] | 0;
    $31 = HEAP32[$s0 >> 2] | 0;
    $or = $31 | $30;
    HEAP32[$eflag >> 2] = $or;
    $32 = HEAP32[$sflag >> 2] | 0;
    $33 = HEAP32[$e0 >> 2] | 0;
    $or46 = $33 | $32;
    HEAP32[$sflag >> 2] = $or46;
    label = 17;
    break;
   case 17:
    STACKTOP = __stackBase__;
    return;
   case 18:
    $call10_1 = _strcmp($call | 0, 137248) | 0;
    $tobool11_1 = ($call10_1 | 0) == 0;
    if ($tobool11_1) {
      $arrowdir_028_lcssa = 168476;
      label = 6;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $call10_2 = _strcmp($call | 0, 134776) | 0;
    $tobool11_2 = ($call10_2 | 0) == 0;
    if ($tobool11_2) {
      $arrowdir_028_lcssa = 168488;
      label = 6;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $cmp_3 = $9 << 24 >> 24 == 110;
    if ($cmp_3) {
      label = 21;
      break;
    } else {
      label = 7;
      break;
    }
   case 21:
    $call10_3 = _strcmp($call | 0, 105072) | 0;
    $tobool11_3 = ($call10_3 | 0) == 0;
    if ($tobool11_3) {
      $arrowdir_028_lcssa = 168500;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
  }
}
function _arrow_match_name($name, $flag) {
  $name = $name | 0;
  $flag = $flag | 0;
  var $f = 0, $0 = 0, $cmp5 = 0, $i_07 = 0, $rest_06 = 0, $call = 0, $1 = 0, $mul = 0, $shl = 0, $2 = 0, $or = 0, $inc = 0, $3 = 0, $cmp = 0, $cmp2 = 0, $or_cond = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $f = __stackBase__ | 0;
    HEAP32[$flag >> 2] = 0;
    $0 = HEAP8[$name] | 0;
    $cmp5 = $0 << 24 >> 24 == 0;
    if ($cmp5) {
      label = 4;
      break;
    } else {
      $rest_06 = $name;
      $i_07 = 0;
      label = 3;
      break;
    }
   case 3:
    HEAP32[$f >> 2] = 0;
    $call = _arrow_match_shape($rest_06, $f) | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $mul = $i_07 << 3;
    $shl = $1 << $mul;
    $2 = HEAP32[$flag >> 2] | 0;
    $or = $2 | $shl;
    HEAP32[$flag >> 2] = $or;
    $inc = $i_07 + 1 | 0;
    $3 = HEAP8[$call] | 0;
    $cmp = $3 << 24 >> 24 != 0;
    $cmp2 = ($inc | 0) < 4;
    $or_cond = $cmp & $cmp2;
    if ($or_cond) {
      $rest_06 = $call;
      $i_07 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_length($e, $flag) {
  $e = $e | 0;
  $flag = $flag | 0;
  var $and = 0, $arrowtype_0 = 0, $gen = 0, $0 = 0, $tobool = 0, $type = 0, $1 = 0, $cmp3 = 0, $incdec_ptr = 0, $lenfact4 = 0, $2 = 0.0, $add = 0.0, $lenfact_1 = 0.0, $shr_110 = 0, $and_1 = 0, $arrowtype_0_1 = 0, $gen_1 = 0, $3 = 0, $tobool_1 = 0, $type_1 = 0, $4 = 0, $cmp3_1 = 0, $incdec_ptr_1 = 0, $lenfact4_1 = 0, $5 = 0.0, $add_1 = 0.0, $lenfact_1_1 = 0.0, $shr_211 = 0, $and_2 = 0, $arrowtype_0_2 = 0, $gen_2 = 0, $6 = 0, $tobool_2 = 0, $type_2 = 0, $7 = 0, $cmp3_2 = 0, $incdec_ptr_2 = 0, $lenfact4_2 = 0, $8 = 0.0, $add_2 = 0.0, $lenfact_1_2 = 0.0, $shr_312 = 0, $and_3 = 0, $arrowtype_0_3 = 0, $gen_3 = 0, $9 = 0, $tobool_3 = 0, $type_3 = 0, $10 = 0, $cmp3_3 = 0, $incdec_ptr_3 = 0, $lenfact4_3 = 0, $11 = 0.0, $add_3 = 0.0, $lenfact_1_3 = 0.0, $mul7 = 0.0, $12 = 0, $13 = 0, $call = 0.0, $mul8 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $and = $flag & 7;
    $arrowtype_0 = 168136;
    label = 3;
    break;
   case 3:
    $gen = $arrowtype_0 + 16 | 0;
    $0 = HEAP32[$gen >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $lenfact_1 = 0.0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $arrowtype_0 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $cmp3 = ($and | 0) == ($1 | 0);
    $incdec_ptr = $arrowtype_0 + 24 | 0;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $arrowtype_0 = $incdec_ptr;
      label = 3;
      break;
    }
   case 5:
    $lenfact4 = $arrowtype_0 + 8 | 0;
    $2 = +HEAPF64[$lenfact4 >> 3];
    $add = $2 + 0.0;
    $lenfact_1 = $add;
    label = 6;
    break;
   case 6:
    $shr_110 = $flag >>> 8;
    $and_1 = $shr_110 & 7;
    $arrowtype_0_1 = 168136;
    label = 7;
    break;
   case 7:
    $gen_1 = $arrowtype_0_1 + 16 | 0;
    $3 = HEAP32[$gen_1 >> 2] | 0;
    $tobool_1 = ($3 | 0) == 0;
    if ($tobool_1) {
      $lenfact_1_1 = $lenfact_1;
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type_1 = $arrowtype_0_1 | 0;
    $4 = HEAP32[$type_1 >> 2] | 0;
    $cmp3_1 = ($and_1 | 0) == ($4 | 0);
    $incdec_ptr_1 = $arrowtype_0_1 + 24 | 0;
    if ($cmp3_1) {
      label = 9;
      break;
    } else {
      $arrowtype_0_1 = $incdec_ptr_1;
      label = 7;
      break;
    }
   case 9:
    $lenfact4_1 = $arrowtype_0_1 + 8 | 0;
    $5 = +HEAPF64[$lenfact4_1 >> 3];
    $add_1 = $lenfact_1 + $5;
    $lenfact_1_1 = $add_1;
    label = 10;
    break;
   case 10:
    $shr_211 = $flag >>> 16;
    $and_2 = $shr_211 & 7;
    $arrowtype_0_2 = 168136;
    label = 11;
    break;
   case 11:
    $gen_2 = $arrowtype_0_2 + 16 | 0;
    $6 = HEAP32[$gen_2 >> 2] | 0;
    $tobool_2 = ($6 | 0) == 0;
    if ($tobool_2) {
      $lenfact_1_2 = $lenfact_1_1;
      label = 14;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $type_2 = $arrowtype_0_2 | 0;
    $7 = HEAP32[$type_2 >> 2] | 0;
    $cmp3_2 = ($and_2 | 0) == ($7 | 0);
    $incdec_ptr_2 = $arrowtype_0_2 + 24 | 0;
    if ($cmp3_2) {
      label = 13;
      break;
    } else {
      $arrowtype_0_2 = $incdec_ptr_2;
      label = 11;
      break;
    }
   case 13:
    $lenfact4_2 = $arrowtype_0_2 + 8 | 0;
    $8 = +HEAPF64[$lenfact4_2 >> 3];
    $add_2 = $lenfact_1_1 + $8;
    $lenfact_1_2 = $add_2;
    label = 14;
    break;
   case 14:
    $shr_312 = $flag >>> 24;
    $and_3 = $shr_312 & 7;
    $arrowtype_0_3 = 168136;
    label = 15;
    break;
   case 15:
    $gen_3 = $arrowtype_0_3 + 16 | 0;
    $9 = HEAP32[$gen_3 >> 2] | 0;
    $tobool_3 = ($9 | 0) == 0;
    if ($tobool_3) {
      $lenfact_1_3 = $lenfact_1_2;
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $type_3 = $arrowtype_0_3 | 0;
    $10 = HEAP32[$type_3 >> 2] | 0;
    $cmp3_3 = ($and_3 | 0) == ($10 | 0);
    $incdec_ptr_3 = $arrowtype_0_3 + 24 | 0;
    if ($cmp3_3) {
      label = 17;
      break;
    } else {
      $arrowtype_0_3 = $incdec_ptr_3;
      label = 15;
      break;
    }
   case 17:
    $lenfact4_3 = $arrowtype_0_3 + 8 | 0;
    $11 = +HEAPF64[$lenfact4_3 >> 3];
    $add_3 = $lenfact_1_2 + $11;
    $lenfact_1_3 = $add_3;
    label = 18;
    break;
   case 18:
    $mul7 = $lenfact_1_3 * 10.0;
    $12 = $e | 0;
    $13 = HEAP32[41962] | 0;
    $call = +_late_double($12, $13, 1.0, 0.0);
    $mul8 = $mul7 * $call;
    return +$mul8;
  }
  return 0.0;
}
function _arrowEndClip($e, $ps, $startp, $endp, $spl, $eflag) {
  $e = $e | 0;
  $ps = $ps | 0;
  $startp = $startp | 0;
  $endp = $endp | 0;
  $spl = $spl | 0;
  $eflag = $eflag | 0;
  var $inside_context = 0, $sp = 0, $elen2 = 0, $call = 0.0, $mul = 0.0, $eflag1 = 0, $ep = 0, $add = 0, $arrayidx = 0, $0 = 0, $1 = 0, $cmp = 0, $x = 0, $2 = 0.0, $x5 = 0, $3 = 0.0, $sub = 0.0, $mul12 = 0.0, $y = 0, $4 = 0.0, $y16 = 0, $5 = 0.0, $sub17 = 0.0, $mul24 = 0.0, $add25 = 0.0, $6 = 0.0, $cmp26 = 0, $sub27 = 0, $endp_addr_0 = 0, $arrayidx28 = 0, $arrayidx29 = 0, $7 = 0, $8 = 0, $arrayidx30 = 0, $add31 = 0, $arrayidx32 = 0, $9 = 0, $10 = 0, $arrayidx33 = 0, $add34 = 0, $arrayidx35 = 0, $11 = 0, $12 = 0, $arrayidx36 = 0, $13 = 0, $p = 0, $r = 0, $add48 = 0, $arrayidx49 = 0, $14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $inside_context = __stackBase__ | 0;
    $sp = __stackBase__ + 8 | 0;
    $elen2 = __stackBase__ + 72 | 0;
    $call = +_arrow_length($e, $eflag);
    $mul = $call * $call;
    HEAPF64[$elen2 >> 3] = $mul;
    $eflag1 = $spl + 12 | 0;
    HEAP32[$eflag1 >> 2] = $eflag;
    $ep = $spl + 32 | 0;
    $add = $endp + 3 | 0;
    $arrayidx = $ps + ($add << 4) | 0;
    $0 = $ep;
    $1 = $arrayidx;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $cmp = ($endp | 0) > ($startp | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $endp_addr_0 = $endp;
      label = 5;
      break;
    }
   case 3:
    $x = $ps + ($endp << 4) | 0;
    $2 = +HEAPF64[$x >> 3];
    $x5 = $arrayidx | 0;
    $3 = +HEAPF64[$x5 >> 3];
    $sub = $2 - $3;
    $mul12 = $sub * $sub;
    $y = $ps + ($endp << 4) + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y16 = $ps + ($add << 4) + 8 | 0;
    $5 = +HEAPF64[$y16 >> 3];
    $sub17 = $4 - $5;
    $mul24 = $sub17 * $sub17;
    $add25 = $mul12 + $mul24;
    $6 = +HEAPF64[$elen2 >> 3];
    $cmp26 = $add25 < $6;
    if ($cmp26) {
      label = 4;
      break;
    } else {
      $endp_addr_0 = $endp;
      label = 5;
      break;
    }
   case 4:
    $sub27 = $endp - 3 | 0;
    $endp_addr_0 = $sub27;
    label = 5;
    break;
   case 5:
    $arrayidx28 = $sp + 48 | 0;
    $arrayidx29 = $ps + ($endp_addr_0 << 4) | 0;
    $7 = $arrayidx28;
    $8 = $arrayidx29;
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $arrayidx30 = $sp + 32 | 0;
    $add31 = $endp_addr_0 + 1 | 0;
    $arrayidx32 = $ps + ($add31 << 4) | 0;
    $9 = $arrayidx30;
    $10 = $arrayidx32;
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $arrayidx33 = $sp + 16 | 0;
    $add34 = $endp_addr_0 + 2 | 0;
    $arrayidx35 = $ps + ($add34 << 4) | 0;
    $11 = $arrayidx33;
    $12 = $arrayidx35;
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    $arrayidx36 = $sp | 0;
    $13 = $sp;
    HEAP32[$13 >> 2] = HEAP32[$0 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$0 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$0 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$0 + 12 >> 2] | 0;
    $p = $inside_context | 0;
    HEAP32[$p >> 2] = $arrayidx36;
    $r = $inside_context + 4 | 0;
    HEAP32[$r >> 2] = $elen2;
    _bezier_clip($inside_context, 600, $arrayidx36, 1);
    HEAP32[$8 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    HEAP32[$10 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    HEAP32[$12 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    $add48 = $endp_addr_0 + 3 | 0;
    $arrayidx49 = $ps + ($add48 << 4) | 0;
    $14 = $arrayidx49;
    HEAP32[$14 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return $endp_addr_0 | 0;
  }
  return 0;
}
function _arrowStartClip($e, $ps, $startp, $endp, $spl, $sflag) {
  $e = $e | 0;
  $ps = $ps | 0;
  $startp = $startp | 0;
  $endp = $endp | 0;
  $spl = $spl | 0;
  $sflag = $sflag | 0;
  var $inside_context = 0, $sp = 0, $slen2 = 0, $call = 0.0, $mul = 0.0, $sflag1 = 0, $sp2 = 0, $arrayidx = 0, $0 = 0, $1 = 0, $cmp = 0, $x = 0, $2 = 0.0, $add = 0, $x5 = 0, $3 = 0.0, $sub = 0.0, $mul12 = 0.0, $y = 0, $4 = 0.0, $y16 = 0, $5 = 0.0, $sub17 = 0.0, $mul24 = 0.0, $add25 = 0.0, $6 = 0.0, $cmp26 = 0, $startp_addr_0 = 0, $arrayidx28 = 0, $add29 = 0, $arrayidx30 = 0, $7 = 0, $8 = 0, $arrayidx31 = 0, $add32 = 0, $arrayidx33 = 0, $9 = 0, $10 = 0, $arrayidx34 = 0, $add35 = 0, $arrayidx36 = 0, $11 = 0, $12 = 0, $arrayidx37 = 0, $13 = 0, $p = 0, $r = 0, $arrayidx41 = 0, $14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $inside_context = __stackBase__ | 0;
    $sp = __stackBase__ + 8 | 0;
    $slen2 = __stackBase__ + 72 | 0;
    $call = +_arrow_length($e, $sflag);
    $mul = $call * $call;
    HEAPF64[$slen2 >> 3] = $mul;
    $sflag1 = $spl + 8 | 0;
    HEAP32[$sflag1 >> 2] = $sflag;
    $sp2 = $spl + 16 | 0;
    $arrayidx = $ps + ($startp << 4) | 0;
    $0 = $sp2;
    $1 = $arrayidx;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $cmp = ($endp | 0) > ($startp | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $startp_addr_0 = $startp;
      label = 5;
      break;
    }
   case 3:
    $x = $arrayidx | 0;
    $2 = +HEAPF64[$x >> 3];
    $add = $startp + 3 | 0;
    $x5 = $ps + ($add << 4) | 0;
    $3 = +HEAPF64[$x5 >> 3];
    $sub = $2 - $3;
    $mul12 = $sub * $sub;
    $y = $ps + ($startp << 4) + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y16 = $ps + ($add << 4) + 8 | 0;
    $5 = +HEAPF64[$y16 >> 3];
    $sub17 = $4 - $5;
    $mul24 = $sub17 * $sub17;
    $add25 = $mul12 + $mul24;
    $6 = +HEAPF64[$slen2 >> 3];
    $cmp26 = $add25 < $6;
    if ($cmp26) {
      label = 4;
      break;
    } else {
      $startp_addr_0 = $startp;
      label = 5;
      break;
    }
   case 4:
    $startp_addr_0 = $add;
    label = 5;
    break;
   case 5:
    $arrayidx28 = $sp | 0;
    $add29 = $startp_addr_0 + 3 | 0;
    $arrayidx30 = $ps + ($add29 << 4) | 0;
    $7 = $sp;
    $8 = $arrayidx30;
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $arrayidx31 = $sp + 16 | 0;
    $add32 = $startp_addr_0 + 2 | 0;
    $arrayidx33 = $ps + ($add32 << 4) | 0;
    $9 = $arrayidx31;
    $10 = $arrayidx33;
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $arrayidx34 = $sp + 32 | 0;
    $add35 = $startp_addr_0 + 1 | 0;
    $arrayidx36 = $ps + ($add35 << 4) | 0;
    $11 = $arrayidx34;
    $12 = $arrayidx36;
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    $arrayidx37 = $sp + 48 | 0;
    $13 = $arrayidx37;
    HEAP32[$13 >> 2] = HEAP32[$0 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$0 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$0 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$0 + 12 >> 2] | 0;
    $p = $inside_context | 0;
    HEAP32[$p >> 2] = $arrayidx37;
    $r = $inside_context + 4 | 0;
    HEAP32[$r >> 2] = $slen2;
    _bezier_clip($inside_context, 600, $arrayidx28, 0);
    $arrayidx41 = $ps + ($startp_addr_0 << 4) | 0;
    $14 = $arrayidx41;
    HEAP32[$14 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    HEAP32[$12 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    HEAP32[$10 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    HEAP32[$8 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return $startp_addr_0 | 0;
  }
  return 0;
}
function _arrowOrthoClip($e, $ps, $startp, $endp, $spl, $sflag, $eflag) {
  $e = $e | 0;
  $ps = $ps | 0;
  $startp = $startp | 0;
  $endp = $endp | 0;
  $spl = $spl | 0;
  $sflag = $sflag | 0;
  $eflag = $eflag | 0;
  var $tobool = 0, $tobool1 = 0, $tobool1_not = 0, $or_cond_not = 0, $cmp = 0, $or_cond174 = 0, $arrayidx = 0, $p_sroa_0_0__idx93 = 0, $p_sroa_0_0_copyload94 = 0.0, $p_sroa_1_8__idx121 = 0, $p_sroa_1_8_copyload122 = 0.0, $add = 0, $arrayidx3 = 0, $q_sroa_0_0__idx45 = 0, $q_sroa_0_0_copyload46 = 0.0, $q_sroa_1_8__idx69 = 0, $q_sroa_1_8_copyload70 = 0.0, $call = 0.0, $call4 = 0.0, $sub = 0.0, $mul = 0.0, $sub10 = 0.0, $mul14 = 0.0, $add15 = 0.0, $call16 = 0.0, $add17 = 0.0, $cmp18 = 0, $div = 0.0, $tlen_0 = 0.0, $hlen_0 = 0.0, $cmp22 = 0, $cmp29 = 0, $sub32 = 0.0, $add35 = 0.0, $add38 = 0.0, $sub41 = 0.0, $cmp50 = 0, $sub53 = 0.0, $add56 = 0.0, $add60 = 0.0, $sub63 = 0.0, $s_sroa_1_0 = 0.0, $s_sroa_0_0 = 0.0, $t_sroa_1_0 = 0.0, $t_sroa_0_0 = 0.0, $add68 = 0, $arrayidx69 = 0, $s_sroa_0_0__idx = 0, $s_sroa_1_8__idx21 = 0, $0 = 0, $1 = 0, $add70 = 0, $arrayidx71 = 0, $2 = 0, $3 = 0, $eflag74 = 0, $p_sroa_0_0__idx85 = 0, $p_sroa_1_8__idx112 = 0, $sflag75 = 0, $call80 = 0.0, $p_sroa_0_0__idx83 = 0, $p_sroa_0_0_copyload84 = 0.0, $p_sroa_1_8__idx110 = 0, $p_sroa_1_8_copyload111 = 0.0, $add82 = 0, $arrayidx83 = 0, $q_sroa_0_0__idx37 = 0, $q_sroa_0_0_copyload38 = 0.0, $q_sroa_1_8__idx60 = 0, $q_sroa_1_8_copyload61 = 0.0, $sub86 = 0.0, $mul90 = 0.0, $sub93 = 0.0, $mul97 = 0.0, $add98 = 0.0, $call99 = 0.0, $mul100 = 0.0, $cmp101 = 0, $hlen_1 = 0.0, $cmp106 = 0, $cmp112 = 0, $sub115 = 0.0, $add119 = 0.0, $cmp127 = 0, $sub130 = 0.0, $add134 = 0.0, $r_sroa_1_0 = 0.0, $r_sroa_0_0 = 0.0, $add138 = 0, $p_sroa_0_0__idx77 = 0, $p_sroa_1_8__idx103 = 0, $add140 = 0, $arrayidx141 = 0, $4 = 0, $5 = 0, $eflag144 = 0, $q_sroa_0_0__idx31 = 0, $q_sroa_1_8__idx53 = 0, $hlen_2 = 0.0, $call149 = 0.0, $arrayidx150 = 0, $p_sroa_0_0__idx75 = 0, $p_sroa_0_0_copyload76 = 0.0, $p_sroa_1_8__idx101 = 0, $p_sroa_1_8_copyload102 = 0.0, $add151 = 0, $q_sroa_0_0__idx29 = 0, $q_sroa_0_0_copyload30 = 0.0, $q_sroa_1_8__idx51 = 0, $q_sroa_1_8_copyload52 = 0.0, $sub155 = 0.0, $mul159 = 0.0, $sub162 = 0.0, $mul166 = 0.0, $add167 = 0.0, $call168 = 0.0, $mul169 = 0.0, $cmp170 = 0, $tlen_1 = 0.0, $cmp175 = 0, $cmp181 = 0, $add184 = 0.0, $sub188 = 0.0, $cmp196 = 0, $add199 = 0.0, $sub203 = 0.0, $r_sroa_1_1 = 0.0, $r_sroa_0_1 = 0.0, $add208 = 0, $arrayidx209 = 0, $r_sroa_0_0__idx = 0, $r_sroa_1_8__idx24 = 0, $6 = 0, $7 = 0, $add210 = 0, $q_sroa_0_0__idx = 0, $q_sroa_1_8__idx47 = 0, $sflag212 = 0, $p_sroa_0_0__idx = 0, $p_sroa_1_8__idx95 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($sflag | 0) != 0;
    $tobool1 = ($eflag | 0) == 0;
    $tobool1_not = $tobool1 ^ 1;
    $or_cond_not = $tobool & $tobool1_not;
    $cmp = ($endp | 0) == ($startp | 0);
    $or_cond174 = $or_cond_not & $cmp;
    if ($or_cond174) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $arrayidx = $ps + ($endp << 4) | 0;
    $p_sroa_0_0__idx93 = $arrayidx | 0;
    $p_sroa_0_0_copyload94 = +HEAPF64[$p_sroa_0_0__idx93 >> 3];
    $p_sroa_1_8__idx121 = $ps + ($endp << 4) + 8 | 0;
    $p_sroa_1_8_copyload122 = +HEAPF64[$p_sroa_1_8__idx121 >> 3];
    $add = $endp + 3 | 0;
    $arrayidx3 = $ps + ($add << 4) | 0;
    $q_sroa_0_0__idx45 = $arrayidx3 | 0;
    $q_sroa_0_0_copyload46 = +HEAPF64[$q_sroa_0_0__idx45 >> 3];
    $q_sroa_1_8__idx69 = $ps + ($add << 4) + 8 | 0;
    $q_sroa_1_8_copyload70 = +HEAPF64[$q_sroa_1_8__idx69 >> 3];
    $call = +_arrow_length($e, $sflag);
    $call4 = +_arrow_length($e, $eflag);
    $sub = $p_sroa_0_0_copyload94 - $q_sroa_0_0_copyload46;
    $mul = $sub * $sub;
    $sub10 = $p_sroa_1_8_copyload122 - $q_sroa_1_8_copyload70;
    $mul14 = $sub10 * $sub10;
    $add15 = $mul + $mul14;
    $call16 = +Math_sqrt(+$add15);
    $add17 = $call + $call4;
    $cmp18 = $add17 < $call16;
    if ($cmp18) {
      $hlen_0 = $call4;
      $tlen_0 = $call;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $div = $call16 / 3.0;
    $hlen_0 = $div;
    $tlen_0 = $div;
    label = 5;
    break;
   case 5:
    $cmp22 = $p_sroa_1_8_copyload122 == $q_sroa_1_8_copyload70;
    if ($cmp22) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $cmp29 = $p_sroa_0_0_copyload94 < $q_sroa_0_0_copyload46;
    if ($cmp29) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $sub32 = $q_sroa_0_0_copyload46 - $hlen_0;
    $add35 = $p_sroa_0_0_copyload94 + $tlen_0;
    $t_sroa_0_0 = $sub32;
    $t_sroa_1_0 = $p_sroa_1_8_copyload122;
    $s_sroa_0_0 = $add35;
    $s_sroa_1_0 = $p_sroa_1_8_copyload122;
    label = 12;
    break;
   case 8:
    $add38 = $q_sroa_0_0_copyload46 + $hlen_0;
    $sub41 = $p_sroa_0_0_copyload94 - $tlen_0;
    $t_sroa_0_0 = $add38;
    $t_sroa_1_0 = $p_sroa_1_8_copyload122;
    $s_sroa_0_0 = $sub41;
    $s_sroa_1_0 = $p_sroa_1_8_copyload122;
    label = 12;
    break;
   case 9:
    $cmp50 = $p_sroa_1_8_copyload122 < $q_sroa_1_8_copyload70;
    if ($cmp50) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $sub53 = $q_sroa_1_8_copyload70 - $hlen_0;
    $add56 = $p_sroa_1_8_copyload122 + $tlen_0;
    $t_sroa_0_0 = $p_sroa_0_0_copyload94;
    $t_sroa_1_0 = $sub53;
    $s_sroa_0_0 = $p_sroa_0_0_copyload94;
    $s_sroa_1_0 = $add56;
    label = 12;
    break;
   case 11:
    $add60 = $q_sroa_1_8_copyload70 + $hlen_0;
    $sub63 = $p_sroa_1_8_copyload122 - $tlen_0;
    $t_sroa_0_0 = $p_sroa_0_0_copyload94;
    $t_sroa_1_0 = $add60;
    $s_sroa_0_0 = $p_sroa_0_0_copyload94;
    $s_sroa_1_0 = $sub63;
    label = 12;
    break;
   case 12:
    $add68 = $endp + 1 | 0;
    $arrayidx69 = $ps + ($add68 << 4) | 0;
    $s_sroa_0_0__idx = $arrayidx69 | 0;
    HEAPF64[$s_sroa_0_0__idx >> 3] = $s_sroa_0_0;
    $s_sroa_1_8__idx21 = $ps + ($add68 << 4) + 8 | 0;
    HEAPF64[$s_sroa_1_8__idx21 >> 3] = $s_sroa_1_0;
    $0 = $arrayidx;
    $1 = $arrayidx69;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $add70 = $endp + 2 | 0;
    $arrayidx71 = $ps + ($add70 << 4) | 0;
    HEAPF64[$q_sroa_0_0__idx45 >> 3] = $t_sroa_0_0;
    HEAPF64[$q_sroa_1_8__idx69 >> 3] = $t_sroa_1_0;
    $2 = $arrayidx71;
    $3 = $arrayidx3;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $eflag74 = $spl + 12 | 0;
    HEAP32[$eflag74 >> 2] = $eflag;
    $p_sroa_0_0__idx85 = $spl + 32 | 0;
    $p_sroa_1_8__idx112 = $spl + 40 | 0;
    $sflag75 = $spl + 8 | 0;
    HEAP32[$sflag75 >> 2] = $sflag;
    HEAPF64[$p_sroa_0_0__idx85 >> 3] = $q_sroa_0_0_copyload46;
    HEAPF64[$p_sroa_1_8__idx112 >> 3] = $q_sroa_1_8_copyload70;
    label = 31;
    break;
   case 13:
    if ($tobool1) {
      $hlen_2 = 0.0;
      label = 22;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call80 = +_arrow_length($e, $eflag);
    $p_sroa_0_0__idx83 = $ps + ($endp << 4) | 0;
    $p_sroa_0_0_copyload84 = +HEAPF64[$p_sroa_0_0__idx83 >> 3];
    $p_sroa_1_8__idx110 = $ps + ($endp << 4) + 8 | 0;
    $p_sroa_1_8_copyload111 = +HEAPF64[$p_sroa_1_8__idx110 >> 3];
    $add82 = $endp + 3 | 0;
    $arrayidx83 = $ps + ($add82 << 4) | 0;
    $q_sroa_0_0__idx37 = $arrayidx83 | 0;
    $q_sroa_0_0_copyload38 = +HEAPF64[$q_sroa_0_0__idx37 >> 3];
    $q_sroa_1_8__idx60 = $ps + ($add82 << 4) + 8 | 0;
    $q_sroa_1_8_copyload61 = +HEAPF64[$q_sroa_1_8__idx60 >> 3];
    $sub86 = $p_sroa_0_0_copyload84 - $q_sroa_0_0_copyload38;
    $mul90 = $sub86 * $sub86;
    $sub93 = $p_sroa_1_8_copyload111 - $q_sroa_1_8_copyload61;
    $mul97 = $sub93 * $sub93;
    $add98 = $mul90 + $mul97;
    $call99 = +Math_sqrt(+$add98);
    $mul100 = $call99 * .9;
    $cmp101 = $call80 < $mul100;
    $hlen_1 = $cmp101 ? $call80 : $mul100;
    $cmp106 = $p_sroa_1_8_copyload111 == $q_sroa_1_8_copyload61;
    if ($cmp106) {
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $cmp112 = $p_sroa_0_0_copyload84 < $q_sroa_0_0_copyload38;
    if ($cmp112) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $sub115 = $q_sroa_0_0_copyload38 - $hlen_1;
    $r_sroa_0_0 = $sub115;
    $r_sroa_1_0 = $p_sroa_1_8_copyload111;
    label = 21;
    break;
   case 17:
    $add119 = $q_sroa_0_0_copyload38 + $hlen_1;
    $r_sroa_0_0 = $add119;
    $r_sroa_1_0 = $p_sroa_1_8_copyload111;
    label = 21;
    break;
   case 18:
    $cmp127 = $p_sroa_1_8_copyload111 < $q_sroa_1_8_copyload61;
    if ($cmp127) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $sub130 = $q_sroa_1_8_copyload61 - $hlen_1;
    $r_sroa_0_0 = $p_sroa_0_0_copyload84;
    $r_sroa_1_0 = $sub130;
    label = 21;
    break;
   case 20:
    $add134 = $q_sroa_1_8_copyload61 + $hlen_1;
    $r_sroa_0_0 = $p_sroa_0_0_copyload84;
    $r_sroa_1_0 = $add134;
    label = 21;
    break;
   case 21:
    $add138 = $endp + 1 | 0;
    $p_sroa_0_0__idx77 = $ps + ($add138 << 4) | 0;
    HEAPF64[$p_sroa_0_0__idx77 >> 3] = $p_sroa_0_0_copyload84;
    $p_sroa_1_8__idx103 = $ps + ($add138 << 4) + 8 | 0;
    HEAPF64[$p_sroa_1_8__idx103 >> 3] = $p_sroa_1_8_copyload111;
    $add140 = $endp + 2 | 0;
    $arrayidx141 = $ps + ($add140 << 4) | 0;
    HEAPF64[$q_sroa_0_0__idx37 >> 3] = $r_sroa_0_0;
    HEAPF64[$q_sroa_1_8__idx60 >> 3] = $r_sroa_1_0;
    $4 = $arrayidx141;
    $5 = $arrayidx83;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $eflag144 = $spl + 12 | 0;
    HEAP32[$eflag144 >> 2] = $eflag;
    $q_sroa_0_0__idx31 = $spl + 32 | 0;
    HEAPF64[$q_sroa_0_0__idx31 >> 3] = $q_sroa_0_0_copyload38;
    $q_sroa_1_8__idx53 = $spl + 40 | 0;
    HEAPF64[$q_sroa_1_8__idx53 >> 3] = $q_sroa_1_8_copyload61;
    $hlen_2 = $hlen_1;
    label = 22;
    break;
   case 22:
    if ($tobool) {
      label = 23;
      break;
    } else {
      label = 31;
      break;
    }
   case 23:
    $call149 = +_arrow_length($e, $sflag);
    $arrayidx150 = $ps + ($startp << 4) | 0;
    $p_sroa_0_0__idx75 = $arrayidx150 | 0;
    $p_sroa_0_0_copyload76 = +HEAPF64[$p_sroa_0_0__idx75 >> 3];
    $p_sroa_1_8__idx101 = $ps + ($startp << 4) + 8 | 0;
    $p_sroa_1_8_copyload102 = +HEAPF64[$p_sroa_1_8__idx101 >> 3];
    $add151 = $startp + 3 | 0;
    $q_sroa_0_0__idx29 = $ps + ($add151 << 4) | 0;
    $q_sroa_0_0_copyload30 = +HEAPF64[$q_sroa_0_0__idx29 >> 3];
    $q_sroa_1_8__idx51 = $ps + ($add151 << 4) + 8 | 0;
    $q_sroa_1_8_copyload52 = +HEAPF64[$q_sroa_1_8__idx51 >> 3];
    $sub155 = $p_sroa_0_0_copyload76 - $q_sroa_0_0_copyload30;
    $mul159 = $sub155 * $sub155;
    $sub162 = $p_sroa_1_8_copyload102 - $q_sroa_1_8_copyload52;
    $mul166 = $sub162 * $sub162;
    $add167 = $mul159 + $mul166;
    $call168 = +Math_sqrt(+$add167);
    $mul169 = $call168 * .9;
    $cmp170 = $call149 < $mul169;
    $tlen_1 = $cmp170 ? $call149 : $mul169;
    $cmp175 = $p_sroa_1_8_copyload102 == $q_sroa_1_8_copyload52;
    if ($cmp175) {
      label = 24;
      break;
    } else {
      label = 27;
      break;
    }
   case 24:
    $cmp181 = $p_sroa_0_0_copyload76 < $q_sroa_0_0_copyload30;
    if ($cmp181) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $add184 = $p_sroa_0_0_copyload76 + $tlen_1;
    $r_sroa_0_1 = $add184;
    $r_sroa_1_1 = $p_sroa_1_8_copyload102;
    label = 30;
    break;
   case 26:
    $sub188 = $p_sroa_0_0_copyload76 - $hlen_2;
    $r_sroa_0_1 = $sub188;
    $r_sroa_1_1 = $p_sroa_1_8_copyload102;
    label = 30;
    break;
   case 27:
    $cmp196 = $p_sroa_1_8_copyload102 < $q_sroa_1_8_copyload52;
    if ($cmp196) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $add199 = $hlen_2 + $p_sroa_1_8_copyload102;
    $r_sroa_0_1 = $p_sroa_0_0_copyload76;
    $r_sroa_1_1 = $add199;
    label = 30;
    break;
   case 29:
    $sub203 = $p_sroa_1_8_copyload102 - $hlen_2;
    $r_sroa_0_1 = $p_sroa_0_0_copyload76;
    $r_sroa_1_1 = $sub203;
    label = 30;
    break;
   case 30:
    $add208 = $startp + 1 | 0;
    $arrayidx209 = $ps + ($add208 << 4) | 0;
    $r_sroa_0_0__idx = $arrayidx209 | 0;
    HEAPF64[$r_sroa_0_0__idx >> 3] = $r_sroa_0_1;
    $r_sroa_1_8__idx24 = $ps + ($add208 << 4) + 8 | 0;
    HEAPF64[$r_sroa_1_8__idx24 >> 3] = $r_sroa_1_1;
    $6 = $arrayidx150;
    $7 = $arrayidx209;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $add210 = $startp + 2 | 0;
    $q_sroa_0_0__idx = $ps + ($add210 << 4) | 0;
    HEAPF64[$q_sroa_0_0__idx >> 3] = $q_sroa_0_0_copyload30;
    $q_sroa_1_8__idx47 = $ps + ($add210 << 4) + 8 | 0;
    HEAPF64[$q_sroa_1_8__idx47 >> 3] = $q_sroa_1_8_copyload52;
    $sflag212 = $spl + 8 | 0;
    HEAP32[$sflag212 >> 2] = $sflag;
    $p_sroa_0_0__idx = $spl + 16 | 0;
    HEAPF64[$p_sroa_0_0__idx >> 3] = $p_sroa_0_0_copyload76;
    $p_sroa_1_8__idx95 = $spl + 24 | 0;
    HEAPF64[$p_sroa_1_8__idx95 >> 3] = $p_sroa_1_8_copyload102;
    label = 31;
    break;
   case 31:
    return;
  }
}
function _arrow_bb($agg_result, $p, $u, $arrowsize, $flag) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $flag = $flag | 0;
  var $x = 0, $x1 = 0, $y = 0, $y2 = 0, $sub3 = 0.0, $4 = 0.0, $div = 0.0, $5 = 0.0, $mul22 = 0.0, $8 = 0.0, $div24 = 0.0, $div26 = 0.0, $9 = 0.0, $sub28 = 0.0, $10 = 0.0, $sub30 = 0.0, $add32 = 0.0, $add34 = 0.0, $add36 = 0.0, $add38 = 0.0, $add40 = 0.0, $add42 = 0.0, $cond44 = 0.0, $add32_cond44 = 0.0, $cond80 = 0.0, $add34_cond80 = 0.0, $cond117 = 0.0, $add32_cond117 = 0.0, $cond153 = 0.0, $add34_cond153 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $x = $p | 0;
  $x1 = $u | 0;
  HEAPF64[$x1 >> 3] = +HEAPF64[$x1 >> 3] - +HEAPF64[$x >> 3];
  $y = $p + 8 | 0;
  $y2 = $u + 8 | 0;
  $sub3 = +HEAPF64[$y2 >> 3] - +HEAPF64[$y >> 3];
  HEAPF64[$y2 >> 3] = $sub3;
  $4 = +HEAPF64[$x1 >> 3];
  $div = $arrowsize * 10.0 / (+Math_sqrt(+($4 * $4 + $sub3 * $sub3)) + 1.0e-4);
  HEAPF64[$x1 >> 3] = $4 + ($4 >= 0.0 ? 1.0e-4 : -1.0e-4);
  $5 = +HEAPF64[$y2 >> 3];
  HEAPF64[$y2 >> 3] = $5 + ($5 >= 0.0 ? 1.0e-4 : -1.0e-4);
  HEAPF64[$x1 >> 3] = $div * +HEAPF64[$x1 >> 3];
  $mul22 = $div * +HEAPF64[$y2 >> 3];
  HEAPF64[$y2 >> 3] = $mul22;
  $8 = +HEAPF64[$x1 >> 3];
  $div24 = $8 * .5;
  $div26 = $mul22 * .5;
  $9 = +HEAPF64[$x >> 3];
  $sub28 = $9 - $div26;
  $10 = +HEAPF64[$y >> 3];
  $sub30 = $10 - $div24;
  $add32 = $9 + $div26;
  $add34 = $div24 + $10;
  $add36 = $8 + $sub28;
  $add38 = $mul22 + $sub30;
  $add40 = $8 + $add32;
  $add42 = $mul22 + $add34;
  $cond44 = $add36 > $add40 ? $add36 : $add40;
  $add32_cond44 = $add32 > $cond44 ? $add32 : $cond44;
  $cond80 = $add38 > $add42 ? $add38 : $add42;
  $add34_cond80 = $add34 > $cond80 ? $add34 : $cond80;
  $cond117 = $add36 < $add40 ? $add36 : $add40;
  $add32_cond117 = $add32 < $cond117 ? $add32 : $cond117;
  $cond153 = $add38 < $add42 ? $add38 : $add42;
  $add34_cond153 = $add34 < $cond153 ? $add34 : $cond153;
  HEAPF64[$agg_result >> 3] = $sub28 < $add32_cond117 ? $sub28 : $add32_cond117;
  HEAPF64[$agg_result + 8 >> 3] = $sub30 < $add34_cond153 ? $sub30 : $add34_cond153;
  HEAPF64[$agg_result + 16 >> 3] = $sub28 > $add32_cond44 ? $sub28 : $add32_cond44;
  HEAPF64[$agg_result + 24 >> 3] = $sub30 > $add34_cond80 ? $sub30 : $add34_cond80;
  STACKTOP = __stackBase__;
  return;
}
function _arrow_gen($job, $emit_state, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $emit_state = $emit_state | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $tmp = 0, $obj1 = 0, $0 = 0, $emit_state2 = 0, $1 = 0, $gvc = 0, $2 = 0, $defaultlinestyle = 0, $3 = 0, $x = 0, $4 = 0.0, $x4 = 0, $5 = 0.0, $sub = 0.0, $y = 0, $6 = 0.0, $y5 = 0, $7 = 0.0, $sub6 = 0.0, $8 = 0.0, $mul = 0.0, $mul11 = 0.0, $add = 0.0, $call = 0.0, $add12 = 0.0, $div = 0.0, $cmp = 0, $cond = 0.0, $add15 = 0.0, $9 = 0.0, $cmp17 = 0, $cond18 = 0.0, $add20 = 0.0, $10 = 0.0, $mul22 = 0.0, $11 = 0.0, $mul24 = 0.0, $12 = 0, $13 = 0, $i_010 = 0, $mul26 = 0, $shr = 0, $and = 0, $cmp27 = 0, $inc = 0, $cmp25 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $emit_state2 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state2 >> 2] | 0;
    HEAP32[$emit_state2 >> 2] = $emit_state;
    $gvc = $job | 0;
    $2 = HEAP32[$gvc >> 2] | 0;
    $defaultlinestyle = $2 + 304 | 0;
    $3 = HEAP32[$defaultlinestyle >> 2] | 0;
    _gvrender_set_style($job, $3);
    $x = $p | 0;
    $4 = +HEAPF64[$x >> 3];
    $x4 = $u | 0;
    $5 = +HEAPF64[$x4 >> 3];
    $sub = $5 - $4;
    HEAPF64[$x4 >> 3] = $sub;
    $y = $p + 8 | 0;
    $6 = +HEAPF64[$y >> 3];
    $y5 = $u + 8 | 0;
    $7 = +HEAPF64[$y5 >> 3];
    $sub6 = $7 - $6;
    HEAPF64[$y5 >> 3] = $sub6;
    $8 = +HEAPF64[$x4 >> 3];
    $mul = $8 * $8;
    $mul11 = $sub6 * $sub6;
    $add = $mul + $mul11;
    $call = +Math_sqrt(+$add);
    $add12 = $call + 1.0e-4;
    $div = 10.0 / $add12;
    $cmp = $8 >= 0.0;
    $cond = $cmp ? 1.0e-4 : -1.0e-4;
    $add15 = $8 + $cond;
    HEAPF64[$x4 >> 3] = $add15;
    $9 = +HEAPF64[$y5 >> 3];
    $cmp17 = $9 >= 0.0;
    $cond18 = $cmp17 ? 1.0e-4 : -1.0e-4;
    $add20 = $9 + $cond18;
    HEAPF64[$y5 >> 3] = $add20;
    $10 = +HEAPF64[$x4 >> 3];
    $mul22 = $div * $10;
    HEAPF64[$x4 >> 3] = $mul22;
    $11 = +HEAPF64[$y5 >> 3];
    $mul24 = $div * $11;
    HEAPF64[$y5 >> 3] = $mul24;
    $12 = $p;
    $13 = $tmp;
    $i_010 = 0;
    label = 3;
    break;
   case 3:
    $mul26 = $i_010 << 3;
    $shr = $flag >> $mul26;
    $and = $shr & 255;
    $cmp27 = ($and | 0) == 0;
    if ($cmp27) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _arrow_gen_type($tmp, $job, $p, $u, $arrowsize, $penwidth, $and);
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $inc = $i_010 + 1 | 0;
    $cmp25 = ($inc | 0) < 4;
    if ($cmp25) {
      $i_010 = $inc;
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP32[$emit_state2 >> 2] = $1;
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_gen_type($agg_result, $job, $p, $u, $arrowsize, $penwidth, $flag) {
  $agg_result = $agg_result | 0;
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $and = 0, $arrowtype_0 = 0, $type = 0, $0 = 0, $tobool = 0, $cmp = 0, $incdec_ptr = 0, $lenfact = 0, $1 = 0.0, $mul = 0.0, $x = 0, $2 = 0.0, $mul2 = 0.0, $3 = 0.0, $mul4 = 0.0, $y = 0, $4 = 0.0, $mul5 = 0.0, $gen = 0, $5 = 0, $x6 = 0, $6 = 0.0, $7 = 0.0, $add = 0.0, $y9 = 0, $8 = 0.0, $9 = 0.0, $add11 = 0.0, $10 = 0, $11 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $and = $flag & 7;
    $arrowtype_0 = 168136;
    label = 3;
    break;
   case 3:
    $type = $arrowtype_0 | 0;
    $0 = HEAP32[$type >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $cmp = ($and | 0) == ($0 | 0);
    $incdec_ptr = $arrowtype_0 + 24 | 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $arrowtype_0 = $incdec_ptr;
      label = 3;
      break;
    }
   case 5:
    $lenfact = $arrowtype_0 + 8 | 0;
    $1 = +HEAPF64[$lenfact >> 3];
    $mul = $1 * $arrowsize;
    $x = $u | 0;
    $2 = +HEAPF64[$x >> 3];
    $mul2 = $2 * $mul;
    HEAPF64[$x >> 3] = $mul2;
    $3 = +HEAPF64[$lenfact >> 3];
    $mul4 = $3 * $arrowsize;
    $y = $u + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $mul5 = $4 * $mul4;
    HEAPF64[$y >> 3] = $mul5;
    $gen = $arrowtype_0 + 16 | 0;
    $5 = HEAP32[$gen >> 2] | 0;
    FUNCTION_TABLE_viiiffi[$5 & 1023]($job, $p, $u, $arrowsize, $penwidth, $flag);
    $x6 = $p | 0;
    $6 = +HEAPF64[$x6 >> 3];
    $7 = +HEAPF64[$x >> 3];
    $add = $6 + $7;
    HEAPF64[$x6 >> 3] = $add;
    $y9 = $p + 8 | 0;
    $8 = +HEAPF64[$y9 >> 3];
    $9 = +HEAPF64[$y >> 3];
    $add11 = $8 + $9;
    HEAPF64[$y9 >> 3] = $add11;
    label = 6;
    break;
   case 6:
    $10 = $agg_result;
    $11 = $p;
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_type_normal($job, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $a = 0, $cmp = 0, $div = 0.0, $mul = 0.0, $arrowwidth_0 = 0.0, $y = 0, $0 = 0.0, $sub = 0.0, $mul1 = 0.0, $x2 = 0, $1 = 0.0, $mul3 = 0.0, $x5 = 0, $2 = 0.0, $add = 0.0, $y8 = 0, $3 = 0.0, $add10 = 0.0, $and = 0, $tobool = 0, $arrayidx = 0, $arrayidx13 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0.0, $sub16 = 0.0, $x18 = 0, $8 = 0.0, $sub21 = 0.0, $y23 = 0, $q_sroa_0_0__idx10 = 0, $q_sroa_1_8__idx14 = 0, $9 = 0.0, $add27 = 0.0, $x29 = 0, $10 = 0.0, $add32 = 0.0, $y34 = 0, $q_sroa_0_0__idx = 0, $q_sroa_1_8__idx13 = 0, $11 = 0, $sub39 = 0.0, $x41 = 0, $sub44 = 0.0, $y46 = 0, $arrayidx47 = 0, $12 = 0, $13 = 0, $add50 = 0.0, $x52 = 0, $add55 = 0.0, $y57 = 0, $and59 = 0, $tobool60 = 0, $and62 = 0, $and62_lobit = 0, $14 = 0, $conv = 0, $and65 = 0, $tobool66 = 0, $arrayidx68 = 0, $and69 = 0, $and69_lobit = 0, $15 = 0, $conv73 = 0, $arrayidx75 = 0, $and76 = 0, $and76_lobit = 0, $16 = 0, $conv80 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $a = __stackBase__ | 0;
    $cmp = $penwidth > 4.0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $arrowwidth_0 = .35;
      label = 4;
      break;
    }
   case 3:
    $div = $penwidth * .25;
    $mul = $div * .35;
    $arrowwidth_0 = $mul;
    label = 4;
    break;
   case 4:
    $y = $u + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $sub = -0.0 - $0;
    $mul1 = $arrowwidth_0 * $sub;
    $x2 = $u | 0;
    $1 = +HEAPF64[$x2 >> 3];
    $mul3 = $arrowwidth_0 * $1;
    $x5 = $p | 0;
    $2 = +HEAPF64[$x5 >> 3];
    $add = $1 + $2;
    $y8 = $p + 8 | 0;
    $3 = +HEAPF64[$y8 >> 3];
    $add10 = $0 + $3;
    $and = $flag & 16;
    $tobool = ($and | 0) == 0;
    $arrayidx = $a | 0;
    $arrayidx13 = $a + 64 | 0;
    $4 = $arrayidx13;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = $p;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $6 = $a;
    HEAP32[$6 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $7 = +HEAPF64[$x5 >> 3];
    $sub16 = $7 - $mul1;
    $x18 = $a + 16 | 0;
    HEAPF64[$x18 >> 3] = $sub16;
    $8 = +HEAPF64[$y8 >> 3];
    $sub21 = $8 - $mul3;
    $y23 = $a + 24 | 0;
    HEAPF64[$y23 >> 3] = $sub21;
    $q_sroa_0_0__idx10 = $a + 32 | 0;
    HEAPF64[$q_sroa_0_0__idx10 >> 3] = $add;
    $q_sroa_1_8__idx14 = $a + 40 | 0;
    HEAPF64[$q_sroa_1_8__idx14 >> 3] = $add10;
    $9 = +HEAPF64[$x5 >> 3];
    $add27 = $mul1 + $9;
    $x29 = $a + 48 | 0;
    HEAPF64[$x29 >> 3] = $add27;
    $10 = +HEAPF64[$y8 >> 3];
    $add32 = $mul3 + $10;
    $y34 = $a + 56 | 0;
    HEAPF64[$y34 >> 3] = $add32;
    label = 7;
    break;
   case 6:
    $q_sroa_0_0__idx = $a + 64 | 0;
    HEAPF64[$q_sroa_0_0__idx >> 3] = $add;
    $q_sroa_1_8__idx13 = $a + 72 | 0;
    HEAPF64[$q_sroa_1_8__idx13 >> 3] = $add10;
    $11 = $a;
    HEAP32[$11 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $sub39 = $add - $mul1;
    $x41 = $a + 16 | 0;
    HEAPF64[$x41 >> 3] = $sub39;
    $sub44 = $add10 - $mul3;
    $y46 = $a + 24 | 0;
    HEAPF64[$y46 >> 3] = $sub44;
    $arrayidx47 = $a + 32 | 0;
    $12 = $arrayidx47;
    $13 = $p;
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $add50 = $mul1 + $add;
    $x52 = $a + 48 | 0;
    HEAPF64[$x52 >> 3] = $add50;
    $add55 = $mul3 + $add10;
    $y57 = $a + 56 | 0;
    HEAPF64[$y57 >> 3] = $add55;
    label = 7;
    break;
   case 7:
    $and59 = $flag & 32;
    $tobool60 = ($and59 | 0) == 0;
    if ($tobool60) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $and62 = $flag >>> 3;
    $and62_lobit = $and62 & 1;
    $14 = $and62_lobit ^ 1;
    $conv = $14 & 255;
    _gvrender_polygon($job, $arrayidx, 3, $conv);
    label = 12;
    break;
   case 9:
    $and65 = $flag & 64;
    $tobool66 = ($and65 | 0) == 0;
    if ($tobool66) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $arrayidx68 = $a + 32 | 0;
    $and69 = $flag >>> 3;
    $and69_lobit = $and69 & 1;
    $15 = $and69_lobit ^ 1;
    $conv73 = $15 & 255;
    _gvrender_polygon($job, $arrayidx68, 3, $conv73);
    label = 12;
    break;
   case 11:
    $arrayidx75 = $a + 16 | 0;
    $and76 = $flag >>> 3;
    $and76_lobit = $and76 & 1;
    $16 = $and76_lobit ^ 1;
    $conv80 = $16 & 255;
    _gvrender_polygon($job, $arrayidx75, 3, $conv80);
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_type_crow($job, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $a = 0, $mul = 0.0, $cmp = 0, $and = 0, $tobool = 0, $div = 0.0, $mul2 = 0.0, $arrowwidth_0 = 0.0, $cmp3 = 0, $and5 = 0, $tobool6 = 0, $sub = 0.0, $mul8 = 0.0, $div9 = 0.0, $shaftwidth_0 = 0.0, $y = 0, $0 = 0.0, $sub11 = 0.0, $mul12 = 0.0, $x13 = 0, $1 = 0.0, $mul14 = 0.0, $mul18 = 0.0, $mul21 = 0.0, $x23 = 0, $2 = 0.0, $add = 0.0, $y26 = 0, $3 = 0.0, $add28 = 0.0, $mul32 = 0.0, $add33 = 0.0, $mul37 = 0.0, $add38 = 0.0, $and40 = 0, $tobool41 = 0, $arrayidx = 0, $arrayidx43 = 0, $4 = 0, $5 = 0, $6 = 0, $sub46 = 0.0, $x48 = 0, $sub51 = 0.0, $y53 = 0, $sub56 = 0.0, $x58 = 0, $sub61 = 0.0, $y63 = 0, $sub66 = 0.0, $x68 = 0, $sub71 = 0.0, $y73 = 0, $q_sroa_0_0__idx21 = 0, $q_sroa_1_8__idx27 = 0, $add77 = 0.0, $x79 = 0, $add82 = 0.0, $y84 = 0, $add87 = 0.0, $x89 = 0, $add92 = 0.0, $y94 = 0, $add97 = 0.0, $x99 = 0, $add102 = 0.0, $y104 = 0, $q_sroa_0_0__idx = 0, $q_sroa_1_8__idx25 = 0, $7 = 0, $8 = 0.0, $sub109 = 0.0, $x111 = 0, $9 = 0.0, $sub114 = 0.0, $y116 = 0, $sub119 = 0.0, $x121 = 0, $sub124 = 0.0, $y126 = 0, $10 = 0.0, $x129 = 0, $11 = 0.0, $y132 = 0, $arrayidx133 = 0, $12 = 0, $13 = 0, $14 = 0.0, $x136 = 0, $15 = 0.0, $y139 = 0, $add142 = 0.0, $x144 = 0, $add147 = 0.0, $y149 = 0, $16 = 0.0, $add152 = 0.0, $x154 = 0, $17 = 0.0, $add157 = 0.0, $y159 = 0, $and161 = 0, $tobool162 = 0, $and165 = 0, $tobool166 = 0, $arrayidx168 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $a = __stackBase__ | 0;
    $mul = $arrowsize * 4.0;
    $cmp = $mul < $penwidth;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $arrowwidth_0 = .45;
      label = 5;
      break;
    }
   case 3:
    $and = $flag & 16;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $arrowwidth_0 = .45;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $div = $penwidth / $mul;
    $mul2 = $div * .45;
    $arrowwidth_0 = $mul2;
    label = 5;
    break;
   case 5:
    $cmp3 = $penwidth > 1.0;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      $shaftwidth_0 = 0.0;
      label = 8;
      break;
    }
   case 6:
    $and5 = $flag & 16;
    $tobool6 = ($and5 | 0) == 0;
    if ($tobool6) {
      $shaftwidth_0 = 0.0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub = $penwidth + -1.0;
    $mul8 = $sub * .05;
    $div9 = $mul8 / $arrowsize;
    $shaftwidth_0 = $div9;
    label = 8;
    break;
   case 8:
    $y = $u + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $sub11 = -0.0 - $0;
    $mul12 = $arrowwidth_0 * $sub11;
    $x13 = $u | 0;
    $1 = +HEAPF64[$x13 >> 3];
    $mul14 = $arrowwidth_0 * $1;
    $mul18 = $shaftwidth_0 * $sub11;
    $mul21 = $shaftwidth_0 * $1;
    $x23 = $p | 0;
    $2 = +HEAPF64[$x23 >> 3];
    $add = $1 + $2;
    $y26 = $p + 8 | 0;
    $3 = +HEAPF64[$y26 >> 3];
    $add28 = $0 + $3;
    $mul32 = $1 * .5;
    $add33 = $2 + $mul32;
    $mul37 = $0 * .5;
    $add38 = $mul37 + $3;
    $and40 = $flag & 16;
    $tobool41 = ($and40 | 0) == 0;
    $arrayidx = $a | 0;
    $arrayidx43 = $a + 128 | 0;
    $4 = $arrayidx43;
    if ($tobool41) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $5 = $p;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $6 = $a;
    HEAP32[$6 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $sub46 = $add - $mul12;
    $x48 = $a + 16 | 0;
    HEAPF64[$x48 >> 3] = $sub46;
    $sub51 = $add28 - $mul14;
    $y53 = $a + 24 | 0;
    HEAPF64[$y53 >> 3] = $sub51;
    $sub56 = $add33 - $mul18;
    $x58 = $a + 32 | 0;
    HEAPF64[$x58 >> 3] = $sub56;
    $sub61 = $add38 - $mul21;
    $y63 = $a + 40 | 0;
    HEAPF64[$y63 >> 3] = $sub61;
    $sub66 = $add - $mul18;
    $x68 = $a + 48 | 0;
    HEAPF64[$x68 >> 3] = $sub66;
    $sub71 = $add28 - $mul21;
    $y73 = $a + 56 | 0;
    HEAPF64[$y73 >> 3] = $sub71;
    $q_sroa_0_0__idx21 = $a + 64 | 0;
    HEAPF64[$q_sroa_0_0__idx21 >> 3] = $add;
    $q_sroa_1_8__idx27 = $a + 72 | 0;
    HEAPF64[$q_sroa_1_8__idx27 >> 3] = $add28;
    $add77 = $mul18 + $add;
    $x79 = $a + 80 | 0;
    HEAPF64[$x79 >> 3] = $add77;
    $add82 = $mul21 + $add28;
    $y84 = $a + 88 | 0;
    HEAPF64[$y84 >> 3] = $add82;
    $add87 = $mul18 + $add33;
    $x89 = $a + 96 | 0;
    HEAPF64[$x89 >> 3] = $add87;
    $add92 = $mul21 + $add38;
    $y94 = $a + 104 | 0;
    HEAPF64[$y94 >> 3] = $add92;
    $add97 = $mul12 + $add;
    $x99 = $a + 112 | 0;
    HEAPF64[$x99 >> 3] = $add97;
    $add102 = $mul14 + $add28;
    $y104 = $a + 120 | 0;
    HEAPF64[$y104 >> 3] = $add102;
    label = 11;
    break;
   case 10:
    $q_sroa_0_0__idx = $a + 128 | 0;
    HEAPF64[$q_sroa_0_0__idx >> 3] = $add;
    $q_sroa_1_8__idx25 = $a + 136 | 0;
    HEAPF64[$q_sroa_1_8__idx25 >> 3] = $add28;
    $7 = $a;
    HEAP32[$7 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $8 = +HEAPF64[$x23 >> 3];
    $sub109 = $8 - $mul12;
    $x111 = $a + 16 | 0;
    HEAPF64[$x111 >> 3] = $sub109;
    $9 = +HEAPF64[$y26 >> 3];
    $sub114 = $9 - $mul14;
    $y116 = $a + 24 | 0;
    HEAPF64[$y116 >> 3] = $sub114;
    $sub119 = $add33 - $mul18;
    $x121 = $a + 32 | 0;
    HEAPF64[$x121 >> 3] = $sub119;
    $sub124 = $add38 - $mul21;
    $y126 = $a + 40 | 0;
    HEAPF64[$y126 >> 3] = $sub124;
    $10 = +HEAPF64[$x23 >> 3];
    $x129 = $a + 48 | 0;
    HEAPF64[$x129 >> 3] = $10;
    $11 = +HEAPF64[$y26 >> 3];
    $y132 = $a + 56 | 0;
    HEAPF64[$y132 >> 3] = $11;
    $arrayidx133 = $a + 64 | 0;
    $12 = $arrayidx133;
    $13 = $p;
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $14 = +HEAPF64[$x23 >> 3];
    $x136 = $a + 80 | 0;
    HEAPF64[$x136 >> 3] = $14;
    $15 = +HEAPF64[$y26 >> 3];
    $y139 = $a + 88 | 0;
    HEAPF64[$y139 >> 3] = $15;
    $add142 = $mul18 + $add33;
    $x144 = $a + 96 | 0;
    HEAPF64[$x144 >> 3] = $add142;
    $add147 = $mul21 + $add38;
    $y149 = $a + 104 | 0;
    HEAPF64[$y149 >> 3] = $add147;
    $16 = +HEAPF64[$x23 >> 3];
    $add152 = $mul12 + $16;
    $x154 = $a + 112 | 0;
    HEAPF64[$x154 >> 3] = $add152;
    $17 = +HEAPF64[$y26 >> 3];
    $add157 = $mul14 + $17;
    $y159 = $a + 120 | 0;
    HEAPF64[$y159 >> 3] = $add157;
    label = 11;
    break;
   case 11:
    $and161 = $flag & 32;
    $tobool162 = ($and161 | 0) == 0;
    if ($tobool162) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _gvrender_polygon($job, $arrayidx, 6, 1);
    label = 16;
    break;
   case 13:
    $and165 = $flag & 64;
    $tobool166 = ($and165 | 0) == 0;
    if ($tobool166) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $arrayidx168 = $a + 48 | 0;
    _gvrender_polygon($job, $arrayidx168, 6, 1);
    label = 16;
    break;
   case 15:
    _gvrender_polygon($job, $arrayidx, 9, 1);
    label = 16;
    break;
   case 16:
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_type_tee($job, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $a = 0, $y = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $x3 = 0, $2 = 0.0, $add = 0.0, $y6 = 0, $3 = 0.0, $add8 = 0.0, $mul = 0.0, $add12 = 0.0, $mul16 = 0.0, $add17 = 0.0, $mul21 = 0.0, $add22 = 0.0, $mul26 = 0.0, $add27 = 0.0, $add31 = 0.0, $arrayidx = 0, $x32 = 0, $add35 = 0.0, $y37 = 0, $sub40 = 0.0, $x42 = 0, $sub45 = 0.0, $y47 = 0, $sub50 = 0.0, $x52 = 0, $sub55 = 0.0, $y57 = 0, $add60 = 0.0, $x62 = 0, $add65 = 0.0, $y67 = 0, $and = 0, $tobool = 0, $and70 = 0, $tobool71 = 0, $4 = 0, $5 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $a = __stackBase__ | 0;
    $y = $u + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $x1 = $u | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $x3 = $p | 0;
    $2 = +HEAPF64[$x3 >> 3];
    $add = $1 + $2;
    $y6 = $p + 8 | 0;
    $3 = +HEAPF64[$y6 >> 3];
    $add8 = $0 + $3;
    $mul = $1 * .2;
    $add12 = $2 + $mul;
    $mul16 = $0 * .2;
    $add17 = $mul16 + $3;
    $mul21 = $1 * .6;
    $add22 = $2 + $mul21;
    $mul26 = $0 * .6;
    $add27 = $mul26 + $3;
    $add31 = $add12 - $0;
    $arrayidx = $a | 0;
    $x32 = $a | 0;
    HEAPF64[$x32 >> 3] = $add31;
    $add35 = $1 + $add17;
    $y37 = $a + 8 | 0;
    HEAPF64[$y37 >> 3] = $add35;
    $sub40 = $0 + $add12;
    $x42 = $a + 16 | 0;
    HEAPF64[$x42 >> 3] = $sub40;
    $sub45 = $add17 - $1;
    $y47 = $a + 24 | 0;
    HEAPF64[$y47 >> 3] = $sub45;
    $sub50 = $0 + $add22;
    $x52 = $a + 32 | 0;
    HEAPF64[$x52 >> 3] = $sub50;
    $sub55 = $add27 - $1;
    $y57 = $a + 40 | 0;
    HEAPF64[$y57 >> 3] = $sub55;
    $add60 = $add22 - $0;
    $x62 = $a + 48 | 0;
    HEAPF64[$x62 >> 3] = $add60;
    $add65 = $1 + $add27;
    $y67 = $a + 56 | 0;
    HEAPF64[$y67 >> 3] = $add65;
    $and = $flag & 32;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAPF64[$x32 >> 3] = $add12;
    HEAPF64[$y37 >> 3] = $add17;
    HEAPF64[$x62 >> 3] = $add22;
    HEAPF64[$y67 >> 3] = $add27;
    label = 6;
    break;
   case 4:
    $and70 = $flag & 64;
    $tobool71 = ($and70 | 0) == 0;
    if ($tobool71) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAPF64[$x42 >> 3] = $add12;
    HEAPF64[$y47 >> 3] = $add17;
    HEAPF64[$x52 >> 3] = $add22;
    HEAPF64[$y57 >> 3] = $add27;
    label = 6;
    break;
   case 6:
    _gvrender_polygon($job, $arrayidx, 4, 1);
    $4 = $a;
    $5 = $p;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    HEAPF64[$x42 >> 3] = $add;
    HEAPF64[$y47 >> 3] = $add8;
    _gvrender_polyline($job, $arrayidx, 2);
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_type_box($job, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $a = 0, $y = 0, $0 = 0.0, $mul = 0.0, $x1 = 0, $1 = 0.0, $mul2 = 0.0, $x4 = 0, $2 = 0.0, $mul6 = 0.0, $add = 0.0, $y8 = 0, $3 = 0.0, $mul10 = 0.0, $add11 = 0.0, $add15 = 0.0, $add19 = 0.0, $add23 = 0.0, $arrayidx = 0, $x24 = 0, $4 = 0.0, $add27 = 0.0, $y29 = 0, $5 = 0.0, $sub32 = 0.0, $arrayidx33 = 0, $x34 = 0, $6 = 0.0, $sub37 = 0.0, $y39 = 0, $sub42 = 0.0, $x44 = 0, $sub47 = 0.0, $y49 = 0, $add52 = 0.0, $x54 = 0, $add57 = 0.0, $y59 = 0, $and = 0, $tobool = 0, $7 = 0, $8 = 0, $and62 = 0, $tobool63 = 0, $9 = 0, $10 = 0, $and68 = 0, $and68_lobit = 0, $11 = 0, $conv = 0, $q_sroa_0_0__idx = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $a = __stackBase__ | 0;
    $y = $u + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $mul = $0 * -.4;
    $x1 = $u | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $mul2 = $1 * .4;
    $x4 = $p | 0;
    $2 = +HEAPF64[$x4 >> 3];
    $mul6 = $1 * .8;
    $add = $2 + $mul6;
    $y8 = $p + 8 | 0;
    $3 = +HEAPF64[$y8 >> 3];
    $mul10 = $0 * .8;
    $add11 = $mul10 + $3;
    $add15 = $1 + $2;
    $add19 = $0 + $3;
    $add23 = $mul + $2;
    $arrayidx = $a | 0;
    $x24 = $a | 0;
    HEAPF64[$x24 >> 3] = $add23;
    $4 = +HEAPF64[$y8 >> 3];
    $add27 = $mul2 + $4;
    $y29 = $a + 8 | 0;
    HEAPF64[$y29 >> 3] = $add27;
    $5 = +HEAPF64[$x4 >> 3];
    $sub32 = $5 - $mul;
    $arrayidx33 = $a + 16 | 0;
    $x34 = $arrayidx33 | 0;
    HEAPF64[$x34 >> 3] = $sub32;
    $6 = +HEAPF64[$y8 >> 3];
    $sub37 = $6 - $mul2;
    $y39 = $a + 24 | 0;
    HEAPF64[$y39 >> 3] = $sub37;
    $sub42 = $add - $mul;
    $x44 = $a + 32 | 0;
    HEAPF64[$x44 >> 3] = $sub42;
    $sub47 = $add11 - $mul2;
    $y49 = $a + 40 | 0;
    HEAPF64[$y49 >> 3] = $sub47;
    $add52 = $mul + $add;
    $x54 = $a + 48 | 0;
    HEAPF64[$x54 >> 3] = $add52;
    $add57 = $mul2 + $add11;
    $y59 = $a + 56 | 0;
    HEAPF64[$y59 >> 3] = $add57;
    $and = $flag & 32;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $7 = $a;
    $8 = $p;
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    HEAPF64[$x54 >> 3] = $add;
    HEAPF64[$y59 >> 3] = $add11;
    label = 6;
    break;
   case 4:
    $and62 = $flag & 64;
    $tobool63 = ($and62 | 0) == 0;
    if ($tobool63) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $9 = $arrayidx33;
    $10 = $p;
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    HEAPF64[$x44 >> 3] = $add;
    HEAPF64[$y49 >> 3] = $add11;
    label = 6;
    break;
   case 6:
    $and68 = $flag >>> 3;
    $and68_lobit = $and68 & 1;
    $11 = $and68_lobit ^ 1;
    $conv = $11 & 255;
    _gvrender_polygon($job, $arrayidx, 4, $conv);
    HEAPF64[$x24 >> 3] = $add;
    HEAPF64[$y29 >> 3] = $add11;
    $q_sroa_0_0__idx = $a + 16 | 0;
    HEAPF64[$q_sroa_0_0__idx >> 3] = $add15;
    HEAPF64[$y39 >> 3] = $add19;
    _gvrender_polyline($job, $arrayidx, 2);
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_type_diamond($job, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $a = 0, $y = 0, $0 = 0.0, $sub = 0.0, $div = 0.0, $x1 = 0, $1 = 0.0, $div2 = 0.0, $x4 = 0, $2 = 0.0, $div6 = 0.0, $add = 0.0, $y8 = 0, $3 = 0.0, $div10 = 0.0, $add11 = 0.0, $add15 = 0.0, $add19 = 0.0, $arrayidx = 0, $arrayidx21 = 0, $q_sroa_0_0__idx = 0, $q_sroa_1_8__idx5 = 0, $4 = 0, $5 = 0, $add24 = 0.0, $x26 = 0, $add29 = 0.0, $y31 = 0, $arrayidx32 = 0, $6 = 0, $7 = 0, $sub35 = 0.0, $x37 = 0, $sub40 = 0.0, $y42 = 0, $and = 0, $tobool = 0, $and44 = 0, $and44_lobit = 0, $8 = 0, $conv = 0, $and46 = 0, $tobool47 = 0, $and49 = 0, $and49_lobit = 0, $9 = 0, $conv53 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $a = __stackBase__ | 0;
    $y = $u + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $sub = -0.0 - $0;
    $div = $sub / 3.0;
    $x1 = $u | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $div2 = $1 / 3.0;
    $x4 = $p | 0;
    $2 = +HEAPF64[$x4 >> 3];
    $div6 = $1 * .5;
    $add = $div6 + $2;
    $y8 = $p + 8 | 0;
    $3 = +HEAPF64[$y8 >> 3];
    $div10 = $0 * .5;
    $add11 = $div10 + $3;
    $add15 = $1 + $2;
    $add19 = $0 + $3;
    $arrayidx = $a | 0;
    $arrayidx21 = $a + 64 | 0;
    $q_sroa_0_0__idx = $a + 64 | 0;
    HEAPF64[$q_sroa_0_0__idx >> 3] = $add15;
    $q_sroa_1_8__idx5 = $a + 72 | 0;
    HEAPF64[$q_sroa_1_8__idx5 >> 3] = $add19;
    $4 = $a;
    $5 = $arrayidx21;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $add24 = $div + $add;
    $x26 = $a + 16 | 0;
    HEAPF64[$x26 >> 3] = $add24;
    $add29 = $div2 + $add11;
    $y31 = $a + 24 | 0;
    HEAPF64[$y31 >> 3] = $add29;
    $arrayidx32 = $a + 32 | 0;
    $6 = $arrayidx32;
    $7 = $p;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $sub35 = $add - $div;
    $x37 = $a + 48 | 0;
    HEAPF64[$x37 >> 3] = $sub35;
    $sub40 = $add11 - $div2;
    $y42 = $a + 56 | 0;
    HEAPF64[$y42 >> 3] = $sub40;
    $and = $flag & 32;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $and44 = $flag >>> 3;
    $and44_lobit = $and44 & 1;
    $8 = $and44_lobit ^ 1;
    $conv = $8 & 255;
    _gvrender_polygon($job, $arrayidx32, 3, $conv);
    label = 7;
    break;
   case 4:
    $and46 = $flag & 64;
    $tobool47 = ($and46 | 0) == 0;
    $and49 = $flag >>> 3;
    $and49_lobit = $and49 & 1;
    $9 = $and49_lobit ^ 1;
    $conv53 = $9 & 255;
    if ($tobool47) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _gvrender_polygon($job, $arrayidx, 3, $conv53);
    label = 7;
    break;
   case 6:
    _gvrender_polygon($job, $arrayidx, 4, $conv53);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_type_dot($job, $p, $u, $arrowsize, $penwidth, $flag) {
  $job = $job | 0;
  $p = $p | 0;
  $u = $u | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  $flag = $flag | 0;
  var $AF = 0, $x = 0, $0 = 0.0, $y = 0, $1 = 0.0, $div = 0.0, $x4 = 0, $y9 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $AF = __stackBase__ | 0;
  $x = $u | 0;
  $0 = +HEAPF64[$x >> 3];
  $y = $u + 8 | 0;
  $1 = +HEAPF64[$y >> 3];
  $div = +Math_sqrt(+($0 * $0 + $1 * $1)) * .5;
  $x4 = $p | 0;
  HEAPF64[$AF >> 3] = $0 * .5 + +HEAPF64[$x4 >> 3] - $div;
  $y9 = $p + 8 | 0;
  HEAPF64[$AF + 8 >> 3] = +HEAPF64[$y9 >> 3] + +HEAPF64[$y >> 3] * .5 - $div;
  HEAPF64[$AF + 16 >> 3] = $div + (+HEAPF64[$x4 >> 3] + +HEAPF64[$x >> 3] * .5);
  HEAPF64[$AF + 24 >> 3] = $div + (+HEAPF64[$y9 >> 3] + +HEAPF64[$y >> 3] * .5);
  _gvrender_ellipse($job, $AF | 0, 0, ($flag >>> 3 & 1 ^ 1) & 255);
  STACKTOP = __stackBase__;
  return;
}
function _arrow_match_shape($name, $flag) {
  $name = $name | 0;
  $flag = $flag | 0;
  var $f = 0, $call = 0, $cmp = 0, $rest_0 = 0, $call1 = 0, $cmp2 = 0, $call3 = 0, $rest_1 = 0, $0 = 0, $tobool = 0, $and = 0, $tobool4 = 0, $or_cond = 0, $or = 0, $1 = 0, $2 = 0, $or7 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $f = __stackBase__ | 0;
    HEAP32[$f >> 2] = 0;
    $call = _arrow_match_name_frag($name, 168304, $f) | 0;
    $cmp = ($call | 0) == ($name | 0);
    if ($cmp) {
      $rest_0 = $call;
      label = 3;
      break;
    } else {
      $rest_1 = $call;
      label = 5;
      break;
    }
   case 3:
    $call1 = _arrow_match_name_frag($rest_0, 168416, $f) | 0;
    $cmp2 = ($rest_0 | 0) == ($call1 | 0);
    if ($cmp2) {
      label = 4;
      break;
    } else {
      $rest_0 = $call1;
      label = 3;
      break;
    }
   case 4:
    $call3 = _arrow_match_name_frag($call1, 168320, $f) | 0;
    $rest_1 = $call3;
    label = 5;
    break;
   case 5:
    $0 = HEAP32[$f >> 2] | 0;
    $tobool = ($0 | 0) != 0;
    $and = $0 & 7;
    $tobool4 = ($and | 0) == 0;
    $or_cond = $tobool & $tobool4;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $or = $0 | 1;
    HEAP32[$f >> 2] = $or;
    label = 7;
    break;
   case 7:
    $1 = HEAP32[$f >> 2] | 0;
    $2 = HEAP32[$flag >> 2] | 0;
    $or7 = $2 | $1;
    HEAP32[$flag >> 2] = $or7;
    STACKTOP = __stackBase__;
    return $rest_1 | 0;
  }
  return 0;
}
function _arrow_match_name_frag($name, $arrownames, $flag) {
  $name = $name | 0;
  $arrownames = $arrownames | 0;
  $flag = $flag | 0;
  var $arrowname_0 = 0, $name1 = 0, $0 = 0, $tobool = 0, $call = 0, $call4 = 0, $cmp = 0, $incdec_ptr = 0, $type = 0, $1 = 0, $2 = 0, $or = 0, $add_ptr = 0, $rest_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrowname_0 = $arrownames;
    label = 3;
    break;
   case 3:
    $name1 = $arrowname_0 | 0;
    $0 = HEAP32[$name1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $rest_0 = $name;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _strlen($0 | 0) | 0;
    $call4 = _strncmp($name | 0, $0 | 0, $call | 0) | 0;
    $cmp = ($call4 | 0) == 0;
    $incdec_ptr = $arrowname_0 + 8 | 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $arrowname_0 = $incdec_ptr;
      label = 3;
      break;
    }
   case 5:
    $type = $arrowname_0 + 4 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $2 = HEAP32[$flag >> 2] | 0;
    $or = $2 | $1;
    HEAP32[$flag >> 2] = $or;
    $add_ptr = $name + $call | 0;
    $rest_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    return $rest_0 | 0;
  }
  return 0;
}
function _init_xdot($g) {
  $g = $g | 0;
  var $stats = 0, $0 = 0, $call = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $2 = 0, $tobool2 = 0, $call4 = 0, $tobool5 = 0, $name = 0, $3 = 0, $call7 = 0, $call8 = 0, $4 = 0, $tobool10 = 0, $call12 = 0.0, $call13 = 0, $5 = 0, $cnt = 0, $6 = 0, $call14 = 0, $7 = 0, $n_polygon = 0, $8 = 0, $n_polygon_pts = 0, $9 = 0, $call15 = 0, $10 = 0, $n_polyline = 0, $11 = 0, $n_polyline_pts = 0, $12 = 0, $call16 = 0, $13 = 0, $n_bezier = 0, $14 = 0, $n_bezier_pts = 0, $15 = 0, $call17 = 0, $16 = 0, $n_ellipse = 0, $17 = 0, $call18 = 0, $18 = 0, $n_text = 0, $19 = 0, $call19 = 0, $xd_0 = 0, $20 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 56 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $stats = __stackBase__ | 0;
    $0 = $g | 0;
    $call = _agget($0, 132328) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $xd_0 = 0;
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    if ($tobool1) {
      $xd_0 = 0;
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP8[164912] | 0;
    $tobool2 = $2 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _start_timer();
    label = 6;
    break;
   case 6:
    $call4 = _parseXDotF($call | 0, 0, 96) | 0;
    $tobool5 = ($call4 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $name = $g + 12 | 0;
    $3 = HEAP32[$name >> 2] | 0;
    $call7 = _agerr(0, 155888, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $3, tempInt) | 0) | 0;
    $call8 = _agerr(3, 128168, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call, tempInt) | 0) | 0;
    label = 8;
    break;
   case 8:
    $4 = HEAP8[164912] | 0;
    $tobool10 = $4 << 24 >> 24 == 0;
    if ($tobool10) {
      $xd_0 = $call4;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call12 = +_elapsed_sec();
    $call13 = _statXDot($call4 | 0, $stats | 0) | 0;
    $5 = HEAP32[_stderr >> 2] | 0;
    $cnt = $stats | 0;
    $6 = HEAP32[$cnt >> 2] | 0;
    $call14 = _fprintf($5 | 0, 117616, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $6, HEAPF64[tempInt + 8 >> 3] = $call12, tempInt) | 0) | 0;
    $7 = HEAP32[_stderr >> 2] | 0;
    $n_polygon = $stats + 8 | 0;
    $8 = HEAP32[$n_polygon >> 2] | 0;
    $n_polygon_pts = $stats + 12 | 0;
    $9 = HEAP32[$n_polygon_pts >> 2] | 0;
    $call15 = _fprintf($7 | 0, 112264, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $8, HEAP32[tempInt + 8 >> 2] = $9, tempInt) | 0) | 0;
    $10 = HEAP32[_stderr >> 2] | 0;
    $n_polyline = $stats + 16 | 0;
    $11 = HEAP32[$n_polyline >> 2] | 0;
    $n_polyline_pts = $stats + 20 | 0;
    $12 = HEAP32[$n_polyline_pts >> 2] | 0;
    $call16 = _fprintf($10 | 0, 107904, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $11, HEAP32[tempInt + 8 >> 2] = $12, tempInt) | 0) | 0;
    $13 = HEAP32[_stderr >> 2] | 0;
    $n_bezier = $stats + 24 | 0;
    $14 = HEAP32[$n_bezier >> 2] | 0;
    $n_bezier_pts = $stats + 28 | 0;
    $15 = HEAP32[$n_bezier_pts >> 2] | 0;
    $call17 = _fprintf($13 | 0, 103872, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $14, HEAP32[tempInt + 8 >> 2] = $15, tempInt) | 0) | 0;
    $16 = HEAP32[_stderr >> 2] | 0;
    $n_ellipse = $stats + 4 | 0;
    $17 = HEAP32[$n_ellipse >> 2] | 0;
    $call18 = _fprintf($16 | 0, 99640, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $17, tempInt) | 0) | 0;
    $18 = HEAP32[_stderr >> 2] | 0;
    $n_text = $stats + 32 | 0;
    $19 = HEAP32[$n_text >> 2] | 0;
    $call19 = _fprintf($18 | 0, 95576, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $19, tempInt) | 0) | 0;
    $xd_0 = $call4;
    label = 10;
    break;
   case 10:
    $20 = $xd_0;
    STACKTOP = __stackBase__;
    return $20 | 0;
  }
  return 0;
}
function _push_obj_state($job) {
  $job = $job | 0;
  var $call = 0, $0 = 0, $tobool = 0, $call1 = 0, $obj2 = 0, $1 = 0, $parent3 = 0, $tobool5 = 0, $pencolor = 0, $pencolor7 = 0, $2 = 0, $fillcolor = 0, $fillcolor8 = 0, $3 = 0, $pen = 0, $4 = 0, $pen9 = 0, $5 = 0, $fill = 0, $6 = 0, $fill10 = 0, $7 = 0, $penwidth = 0, $8 = 0.0, $penwidth11 = 0, $9 = 0, $pen12 = 0, $10 = 0, $fill13 = 0, $11 = 0, $penwidth14 = 0, $12 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(256) | 0;
    $0 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call1 = _agerr(1, 92048, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    label = 4;
    break;
   case 4:
    $obj2 = $job + 16 | 0;
    $1 = HEAP32[$obj2 >> 2] | 0;
    $parent3 = $call;
    HEAP32[$parent3 >> 2] = $1;
    HEAP32[$obj2 >> 2] = $0;
    $tobool5 = ($1 | 0) == 0;
    if ($tobool5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $pencolor = $call + 16 | 0;
    $pencolor7 = $1 + 16 | 0;
    $2 = $pencolor7;
    HEAP32[$pencolor >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$pencolor + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$pencolor + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$pencolor + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    HEAP32[$pencolor + 16 >> 2] = HEAP32[$2 + 16 >> 2] | 0;
    HEAP32[$pencolor + 20 >> 2] = HEAP32[$2 + 20 >> 2] | 0;
    HEAP32[$pencolor + 24 >> 2] = HEAP32[$2 + 24 >> 2] | 0;
    HEAP32[$pencolor + 28 >> 2] = HEAP32[$2 + 28 >> 2] | 0;
    HEAP32[$pencolor + 32 >> 2] = HEAP32[$2 + 32 >> 2] | 0;
    HEAP32[$pencolor + 36 >> 2] = HEAP32[$2 + 36 >> 2] | 0;
    $fillcolor = $call + 56 | 0;
    $fillcolor8 = $1 + 56 | 0;
    $3 = $fillcolor8;
    HEAP32[$fillcolor >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$fillcolor + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$fillcolor + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$fillcolor + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    HEAP32[$fillcolor + 16 >> 2] = HEAP32[$3 + 16 >> 2] | 0;
    HEAP32[$fillcolor + 20 >> 2] = HEAP32[$3 + 20 >> 2] | 0;
    HEAP32[$fillcolor + 24 >> 2] = HEAP32[$3 + 24 >> 2] | 0;
    HEAP32[$fillcolor + 28 >> 2] = HEAP32[$3 + 28 >> 2] | 0;
    HEAP32[$fillcolor + 32 >> 2] = HEAP32[$3 + 32 >> 2] | 0;
    HEAP32[$fillcolor + 36 >> 2] = HEAP32[$3 + 36 >> 2] | 0;
    $pen = $1 + 96 | 0;
    $4 = HEAP32[$pen >> 2] | 0;
    $pen9 = $call + 96 | 0;
    $5 = $pen9;
    HEAP32[$5 >> 2] = $4;
    $fill = $1 + 100 | 0;
    $6 = HEAP32[$fill >> 2] | 0;
    $fill10 = $call + 100 | 0;
    $7 = $fill10;
    HEAP32[$7 >> 2] = $6;
    $penwidth = $1 + 104 | 0;
    $8 = +HEAPF64[$penwidth >> 3];
    $penwidth11 = $call + 104 | 0;
    $9 = $penwidth11;
    HEAPF64[$9 >> 3] = $8;
    label = 7;
    break;
   case 6:
    $pen12 = $call + 96 | 0;
    $10 = $pen12;
    HEAP32[$10 >> 2] = 3;
    $fill13 = $call + 100 | 0;
    $11 = $fill13;
    HEAP32[$11 >> 2] = 0;
    $penwidth14 = $call + 104 | 0;
    $12 = $penwidth14;
    HEAPF64[$12 >> 3] = 1.0;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $0 | 0;
  }
  return 0;
}
function _initMapData($job, $lbl, $url, $tooltip, $target, $id, $gobj) {
  $job = $job | 0;
  $lbl = $lbl | 0;
  $url = $url | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  $gobj = $gobj | 0;
  var $obj1 = 0, $0 = 0, $flags2 = 0, $1 = 0, $and = 0, $tobool = 0, $tobool3 = 0, $or_cond = 0, $label = 0, $and4 = 0, $tobool5 = 0, $call = 0, $id7 = 0, $tobool8 = 0, $2 = 0, $tobool10 = 0, $call12 = 0, $url13 = 0, $assigned_0 = 0, $and16 = 0, $tobool17 = 0, $tobool19 = 0, $3 = 0, $tobool23 = 0, $call25 = 0, $tooltip26 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $label27 = 0, $8 = 0, $tobool28 = 0, $call31 = 0, $tooltip32 = 0, $assigned_1 = 0, $and36 = 0, $tobool37 = 0, $tobool39 = 0, $or_cond23 = 0, $9 = 0, $tobool43 = 0, $call45 = 0, $target46 = 0, $assigned_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $flags2 = $job + 152 | 0;
    $1 = HEAP32[$flags2 >> 2] | 0;
    $and = $1 & 32768;
    $tobool = ($and | 0) == 0;
    $tobool3 = ($lbl | 0) == 0;
    $or_cond = $tobool | $tobool3;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $label = $0 + 144 | 0;
    HEAP32[$label >> 2] = $lbl;
    label = 4;
    break;
   case 4:
    $and4 = $1 & 65536;
    $tobool5 = ($and4 | 0) == 0;
    if ($tobool5) {
      $assigned_0 = 0;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call = _strdup_and_subst_obj($id, $gobj) | 0;
    $id7 = $0 + 164 | 0;
    HEAP32[$id7 >> 2] = $call;
    $tobool8 = ($url | 0) == 0;
    if ($tobool8) {
      $assigned_0 = 0;
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$url] | 0;
    $tobool10 = $2 << 24 >> 24 == 0;
    if ($tobool10) {
      $assigned_0 = 0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call12 = _strdup_and_subst_obj($url, $gobj) | 0;
    $url13 = $0 + 160 | 0;
    HEAP32[$url13 >> 2] = $call12;
    $assigned_0 = 1;
    label = 8;
    break;
   case 8:
    $and16 = $1 & 4194304;
    $tobool17 = ($and16 | 0) == 0;
    if ($tobool17) {
      $assigned_1 = $assigned_0;
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $tobool19 = ($tooltip | 0) == 0;
    if ($tobool19) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $3 = HEAP8[$tooltip] | 0;
    $tobool23 = $3 << 24 >> 24 == 0;
    if ($tobool23) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call25 = _strdup_and_subst_obj($tooltip, $gobj) | 0;
    $tooltip26 = $0 + 180 | 0;
    HEAP32[$tooltip26 >> 2] = $call25;
    $4 = $0 + 212 | 0;
    $5 = $4;
    $6 = HEAP32[$5 >> 2] | 0;
    $7 = $6 | 1;
    HEAP32[$5 >> 2] = $7;
    $assigned_1 = 1;
    label = 14;
    break;
   case 12:
    $label27 = $0 + 144 | 0;
    $8 = HEAP32[$label27 >> 2] | 0;
    $tobool28 = ($8 | 0) == 0;
    if ($tobool28) {
      $assigned_1 = $assigned_0;
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $call31 = _strdup($8 | 0) | 0;
    $tooltip32 = $0 + 180 | 0;
    HEAP32[$tooltip32 >> 2] = $call31;
    $assigned_1 = 1;
    label = 14;
    break;
   case 14:
    $and36 = $1 & 8388608;
    $tobool37 = ($and36 | 0) == 0;
    $tobool39 = ($target | 0) == 0;
    $or_cond23 = $tobool37 | $tobool39;
    if ($or_cond23) {
      $assigned_2 = $assigned_1;
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $9 = HEAP8[$target] | 0;
    $tobool43 = $9 << 24 >> 24 == 0;
    if ($tobool43) {
      $assigned_2 = $assigned_1;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call45 = _strdup_and_subst_obj($target, $gobj) | 0;
    $target46 = $0 + 196 | 0;
    HEAP32[$target46 >> 2] = $call45;
    $assigned_2 = 1;
    label = 17;
    break;
   case 17:
    return $assigned_2 | 0;
  }
  return 0;
}
function _getObjId($job, $obj, $xb) {
  $job = $job | 0;
  $obj = $obj | 0;
  $xb = $xb | 0;
  var $buf = 0, $gvc = 0, $0 = 0, $g = 0, $1 = 0, $drawing = 0, $2 = 0, $id1 = 0, $3 = 0, $call = 0, $tobool = 0, $4 = 0, $tobool2 = 0, $5 = 0, $6 = 0, $7 = 0, $bf_val_sext = 0, $meta_node = 0, $8 = 0, $9 = 0, $id3 = 0, $10 = 0, $id5 = 0, $11 = 0, $12 = 0, $id7 = 0, $13 = 0, $14 = 0, $idnum_0 = 0, $pfx_0 = 0, $tobool8 = 0, $call10 = 0, $ptr = 0, $15 = 0, $eptr = 0, $16 = 0, $cmp = 0, $call12 = 0, $17 = 0, $incdec_ptr = 0, $call15 = 0, $arraydecay = 0, $call16 = 0, $call18 = 0, $ptr19 = 0, $18 = 0, $eptr20 = 0, $19 = 0, $cmp21 = 0, $call24 = 0, $20 = 0, $buf30 = 0, $21 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $gvc = $job | 0;
    $0 = HEAP32[$gvc >> 2] | 0;
    $g = $0 + 128 | 0;
    $1 = HEAP32[$g >> 2] | 0;
    $drawing = $1 + 48 | 0;
    $2 = HEAP32[$drawing >> 2] | 0;
    $id1 = $2 + 92 | 0;
    $3 = HEAP32[$id1 >> 2] | 0;
    $call = _agget($obj, 155120) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = HEAP8[$call] | 0;
    $tobool2 = $4 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 4;
      break;
    } else {
      $retval_0 = $call;
      label = 15;
      break;
    }
   case 4:
    $5 = $obj;
    $6 = HEAP32[$5 >> 2] | 0;
    $7 = $6 << 28;
    $bf_val_sext = $7 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 5;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 6;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 7;
      break;
    } else {
      $pfx_0 = 0;
      $idnum_0 = 0;
      label = 8;
      break;
    }
   case 5:
    $meta_node = $obj + 36 | 0;
    $8 = $meta_node;
    $9 = HEAP32[$8 >> 2] | 0;
    $id3 = $9 + 16 | 0;
    $10 = HEAP32[$id3 >> 2] | 0;
    $pfx_0 = 151640;
    $idnum_0 = $10;
    label = 8;
    break;
   case 6:
    $id5 = $obj + 16 | 0;
    $11 = $id5;
    $12 = HEAP32[$11 >> 2] | 0;
    $pfx_0 = 148304;
    $idnum_0 = $12;
    label = 8;
    break;
   case 7:
    $id7 = $obj + 20 | 0;
    $13 = $id7;
    $14 = HEAP32[$13 >> 2] | 0;
    $pfx_0 = 145504;
    $idnum_0 = $14;
    label = 8;
    break;
   case 8:
    $tobool8 = ($3 | 0) == 0;
    if ($tobool8) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call10 = _agxbput($xb, $3) | 0;
    $ptr = $xb + 4 | 0;
    $15 = HEAP32[$ptr >> 2] | 0;
    $eptr = $xb + 8 | 0;
    $16 = HEAP32[$eptr >> 2] | 0;
    $cmp = $15 >>> 0 < $16 >>> 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call12 = _agxbmore($xb, 1) | 0;
    label = 11;
    break;
   case 11:
    $17 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $17 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$17] = 95;
    label = 12;
    break;
   case 12:
    $call15 = _agxbput($xb, $pfx_0) | 0;
    $arraydecay = $buf | 0;
    $call16 = _sprintf($arraydecay | 0, 142424, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $idnum_0, tempInt) | 0) | 0;
    $call18 = _agxbput($xb, $arraydecay) | 0;
    $ptr19 = $xb + 4 | 0;
    $18 = HEAP32[$ptr19 >> 2] | 0;
    $eptr20 = $xb + 8 | 0;
    $19 = HEAP32[$eptr20 >> 2] | 0;
    $cmp21 = $18 >>> 0 < $19 >>> 0;
    if ($cmp21) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $call24 = _agxbmore($xb, 1) | 0;
    label = 14;
    break;
   case 14:
    $20 = HEAP32[$ptr19 >> 2] | 0;
    HEAP8[$20] = 0;
    $buf30 = $xb | 0;
    $21 = HEAP32[$buf30 >> 2] | 0;
    HEAP32[$ptr19 >> 2] = $21;
    $retval_0 = $21;
    label = 15;
    break;
   case 15:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _emit_map_rect($job, $b) {
  $job = $job | 0;
  $b = $b | 0;
  var $obj1 = 0, $0 = 0, $flags2 = 0, $1 = 0, $and = 0, $tobool = 0, $and3 = 0, $tobool4 = 0, $url_map_shape = 0, $url_map_n = 0, $url_map_n7 = 0, $url_map_p = 0, $2 = 0, $3 = 0, $url_map_n8 = 0, $4 = 0, $mul = 0, $call = 0, $5 = 0, $6 = 0, $arrayidx10 = 0, $UR = 0, $7 = 0, $and11 = 0, $tobool12 = 0, $call14 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $flags2 = $job + 152 | 0;
    $1 = HEAP32[$flags2 >> 2] | 0;
    $and = $1 & 4259840;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $and3 = $1 & 131072;
    $tobool4 = ($and3 | 0) != 0;
    $url_map_shape = $0 + 216 | 0;
    if ($tobool4) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$url_map_shape >> 2] = 0;
    $url_map_n = $0 + 220 | 0;
    HEAP32[$url_map_n >> 2] = 2;
    label = 6;
    break;
   case 5:
    HEAP32[$url_map_shape >> 2] = 2;
    $url_map_n7 = $0 + 220 | 0;
    HEAP32[$url_map_n7 >> 2] = 4;
    label = 6;
    break;
   case 6:
    $url_map_p = $0 + 224 | 0;
    $2 = HEAP32[$url_map_p >> 2] | 0;
    $3 = $2;
    _free($3);
    $url_map_n8 = $0 + 220 | 0;
    $4 = HEAP32[$url_map_n8 >> 2] | 0;
    $mul = $4 << 4;
    $call = _zmalloc($mul) | 0;
    $5 = $call;
    HEAP32[$url_map_p >> 2] = $5;
    $6 = $b;
    HEAP32[$call >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$call + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$call + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$call + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    $arrayidx10 = $call + 16 | 0;
    $UR = $b + 16 | 0;
    $7 = $UR;
    HEAP32[$arrayidx10 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$arrayidx10 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$arrayidx10 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$arrayidx10 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $and11 = $1 & 8192;
    $tobool12 = ($and11 | 0) == 0;
    if ($tobool12) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call14 = _gvrender_ptf_A($job, $5, $5, 2) | 0;
    label = 8;
    break;
   case 8:
    if ($tobool4) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    _rect2poly($5);
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pop_obj_state($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $tobool = 0, $id = 0, $1 = 0, $url = 0, $2 = 0, $labelurl = 0, $3 = 0, $tailurl = 0, $4 = 0, $headurl = 0, $5 = 0, $tooltip = 0, $6 = 0, $labeltooltip = 0, $7 = 0, $tailtooltip = 0, $8 = 0, $headtooltip = 0, $9 = 0, $target = 0, $10 = 0, $labeltarget = 0, $11 = 0, $tailtarget = 0, $12 = 0, $headtarget = 0, $13 = 0, $url_map_p = 0, $14 = 0, $15 = 0, $url_bsplinemap_p = 0, $16 = 0, $17 = 0, $url_bsplinemap_n = 0, $18 = 0, $19 = 0, $parent = 0, $20 = 0, $21 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(162152, 110, 163952, 158632);
   case 4:
    $id = $0 + 164 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    _free($1);
    $url = $0 + 160 | 0;
    $2 = HEAP32[$url >> 2] | 0;
    _free($2);
    $labelurl = $0 + 168 | 0;
    $3 = HEAP32[$labelurl >> 2] | 0;
    _free($3);
    $tailurl = $0 + 172 | 0;
    $4 = HEAP32[$tailurl >> 2] | 0;
    _free($4);
    $headurl = $0 + 176 | 0;
    $5 = HEAP32[$headurl >> 2] | 0;
    _free($5);
    $tooltip = $0 + 180 | 0;
    $6 = HEAP32[$tooltip >> 2] | 0;
    _free($6);
    $labeltooltip = $0 + 184 | 0;
    $7 = HEAP32[$labeltooltip >> 2] | 0;
    _free($7);
    $tailtooltip = $0 + 188 | 0;
    $8 = HEAP32[$tailtooltip >> 2] | 0;
    _free($8);
    $headtooltip = $0 + 192 | 0;
    $9 = HEAP32[$headtooltip >> 2] | 0;
    _free($9);
    $target = $0 + 196 | 0;
    $10 = HEAP32[$target >> 2] | 0;
    _free($10);
    $labeltarget = $0 + 200 | 0;
    $11 = HEAP32[$labeltarget >> 2] | 0;
    _free($11);
    $tailtarget = $0 + 204 | 0;
    $12 = HEAP32[$tailtarget >> 2] | 0;
    _free($12);
    $headtarget = $0 + 208 | 0;
    $13 = HEAP32[$headtarget >> 2] | 0;
    _free($13);
    $url_map_p = $0 + 224 | 0;
    $14 = HEAP32[$url_map_p >> 2] | 0;
    $15 = $14;
    _free($15);
    $url_bsplinemap_p = $0 + 236 | 0;
    $16 = HEAP32[$url_bsplinemap_p >> 2] | 0;
    $17 = $16;
    _free($17);
    $url_bsplinemap_n = $0 + 232 | 0;
    $18 = HEAP32[$url_bsplinemap_n >> 2] | 0;
    $19 = $18;
    _free($19);
    $parent = $0 | 0;
    $20 = HEAP32[$parent >> 2] | 0;
    HEAP32[$obj1 >> 2] = $20;
    $21 = $0;
    _free($21);
    return;
  }
}
function _validlayer($job) {
  $job = $job | 0;
  return (HEAP32[$job + 160 >> 2] | 0) <= (HEAP32[$job + 156 >> 2] | 0) & 1 | 0;
}
function _firstpage($job) {
  $job = $job | 0;
  var $0 = 0, $1 = 0, $2$1 = 0;
  $0 = $job + 172 | 0;
  $1 = $job + 196 | 0;
  $2$1 = HEAP32[$0 + 4 >> 2] | 0;
  HEAP32[$1 >> 2] = HEAP32[$0 >> 2] | 0;
  HEAP32[$1 + 4 >> 2] = $2$1;
  return;
}
function _validpage($job) {
  $job = $job | 0;
  var $x = 0, $0 = 0, $cmp = 0, $x3 = 0, $1 = 0, $cmp4 = 0, $y = 0, $2 = 0, $cmp7 = 0, $y11 = 0, $3 = 0, $cmp12 = 0, $phitmp = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $job + 196 | 0;
    $0 = HEAP32[$x >> 2] | 0;
    $cmp = ($0 | 0) > -1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 3:
    $x3 = $job + 164 | 0;
    $1 = HEAP32[$x3 >> 2] | 0;
    $cmp4 = ($0 | 0) < ($1 | 0);
    if ($cmp4) {
      label = 4;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 4:
    $y = $job + 200 | 0;
    $2 = HEAP32[$y >> 2] | 0;
    $cmp7 = ($2 | 0) > -1;
    if ($cmp7) {
      label = 5;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 5:
    $y11 = $job + 168 | 0;
    $3 = HEAP32[$y11 >> 2] | 0;
    $cmp12 = ($2 | 0) < ($3 | 0);
    $phitmp = $cmp12 & 1;
    $4 = $phitmp;
    label = 6;
    break;
   case 6:
    return $4 | 0;
  }
  return 0;
}
function _nextlayer($job) {
  $job = $job | 0;
  var $layerNum = 0;
  $layerNum = $job + 160 | 0;
  HEAP32[$layerNum >> 2] = (HEAP32[$layerNum >> 2] | 0) + 1 | 0;
  return;
}
function _update_bb_bz($bb, $cp) {
  $bb = $bb | 0;
  $cp = $cp | 0;
  var $left = 0, $right = 0, $tmp = 0, $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x4 = 0, $2 = 0.0, $cmp5 = 0, $y = 0, $3 = 0.0, $y9 = 0, $4 = 0.0, $cmp10 = 0, $y15 = 0, $5 = 0.0, $cmp16 = 0, $x19 = 0, $6 = 0.0, $cmp22 = 0, $cmp28 = 0, $or_cond = 0, $y31 = 0, $7 = 0.0, $cmp34 = 0, $cmp40 = 0, $or_cond54 = 0, $x43 = 0, $8 = 0.0, $cmp46 = 0, $cmp52 = 0, $or_cond55 = 0, $y55 = 0, $9 = 0.0, $cmp58 = 0, $cmp64 = 0, $or_cond56 = 0, $x67 = 0, $10 = 0.0, $cmp70 = 0, $cmp76 = 0, $or_cond57 = 0, $y79 = 0, $11 = 0.0, $cmp82 = 0, $cmp88 = 0, $or_cond58 = 0, $call = 0, $tobool = 0, $y115 = 0, $y126 = 0, $x104 = 0, $x92 = 0, $12 = 0.0, $13 = 0.0, $cmp95 = 0, $14 = 0.0, $cmp105 = 0, $y113 = 0, $15 = 0.0, $16 = 0.0, $cmp116 = 0, $17 = 0.0, $cmp127 = 0, $x92_1 = 0, $18 = 0.0, $19 = 0.0, $cmp95_1 = 0, $arraydecay = 0, $arraydecay136 = 0, $20 = 0.0, $cmp105_1 = 0, $y113_1 = 0, $21 = 0.0, $22 = 0.0, $cmp116_1 = 0, $23 = 0.0, $cmp127_1 = 0, $x92_2 = 0, $24 = 0.0, $25 = 0.0, $cmp95_2 = 0, $26 = 0.0, $cmp105_2 = 0, $y113_2 = 0, $27 = 0.0, $28 = 0.0, $cmp116_2 = 0, $29 = 0.0, $cmp127_2 = 0, $x92_3 = 0, $30 = 0.0, $31 = 0.0, $cmp95_3 = 0, $32 = 0.0, $cmp105_3 = 0, $y113_3 = 0, $33 = 0.0, $34 = 0.0, $cmp116_3 = 0, $35 = 0.0, $cmp127_3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $left = __stackBase__ | 0;
    $right = __stackBase__ + 64 | 0;
    $tmp = __stackBase__ + 128 | 0;
    $x = $cp | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $bb + 16 | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 > $1;
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x4 = $bb | 0;
    $2 = +HEAPF64[$x4 >> 3];
    $cmp5 = $0 < $2;
    if ($cmp5) {
      label = 12;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $cp + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $y9 = $bb + 24 | 0;
    $4 = +HEAPF64[$y9 >> 3];
    $cmp10 = $3 > $4;
    if ($cmp10) {
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y15 = $bb + 8 | 0;
    $5 = +HEAPF64[$y15 >> 3];
    $cmp16 = $3 < $5;
    if ($cmp16) {
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x19 = $cp + 16 | 0;
    $6 = +HEAPF64[$x19 >> 3];
    $cmp22 = $6 > $1;
    $cmp28 = $6 < $2;
    $or_cond = $cmp22 | $cmp28;
    if ($or_cond) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $y31 = $cp + 24 | 0;
    $7 = +HEAPF64[$y31 >> 3];
    $cmp34 = $7 > $4;
    $cmp40 = $7 < $5;
    $or_cond54 = $cmp34 | $cmp40;
    if ($or_cond54) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $x43 = $cp + 32 | 0;
    $8 = +HEAPF64[$x43 >> 3];
    $cmp46 = $8 > $1;
    $cmp52 = $8 < $2;
    $or_cond55 = $cmp46 | $cmp52;
    if ($or_cond55) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $y55 = $cp + 40 | 0;
    $9 = +HEAPF64[$y55 >> 3];
    $cmp58 = $9 > $4;
    $cmp64 = $9 < $5;
    $or_cond56 = $cmp58 | $cmp64;
    if ($or_cond56) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $x67 = $cp + 48 | 0;
    $10 = +HEAPF64[$x67 >> 3];
    $cmp70 = $10 > $1;
    $cmp76 = $10 < $2;
    $or_cond57 = $cmp70 | $cmp76;
    if ($or_cond57) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $y79 = $cp + 56 | 0;
    $11 = +HEAPF64[$y79 >> 3];
    $cmp82 = $11 > $4;
    $cmp88 = $11 < $5;
    $or_cond58 = $cmp82 | $cmp88;
    if ($or_cond58) {
      label = 12;
      break;
    } else {
      label = 23;
      break;
    }
   case 12:
    $call = _check_control_points($cp) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 22;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $y115 = $bb + 24 | 0;
    $y126 = $bb + 8 | 0;
    $x104 = $bb | 0;
    $x92 = $cp | 0;
    $12 = +HEAPF64[$x92 >> 3];
    $13 = +HEAPF64[$x1 >> 3];
    $cmp95 = $12 > $13;
    if ($cmp95) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAPF64[$x1 >> 3] = $12;
    label = 17;
    break;
   case 15:
    $14 = +HEAPF64[$x104 >> 3];
    $cmp105 = $12 < $14;
    if ($cmp105) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    HEAPF64[$x104 >> 3] = $12;
    label = 17;
    break;
   case 17:
    $y113 = $cp + 8 | 0;
    $15 = +HEAPF64[$y113 >> 3];
    $16 = +HEAPF64[$y115 >> 3];
    $cmp116 = $15 > $16;
    if ($cmp116) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAPF64[$y115 >> 3] = $15;
    label = 21;
    break;
   case 19:
    $17 = +HEAPF64[$y126 >> 3];
    $cmp127 = $15 < $17;
    if ($cmp127) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    HEAPF64[$y126 >> 3] = $15;
    label = 21;
    break;
   case 21:
    $x92_1 = $cp + 16 | 0;
    $18 = +HEAPF64[$x92_1 >> 3];
    $19 = +HEAPF64[$x1 >> 3];
    $cmp95_1 = $18 > $19;
    if ($cmp95_1) {
      label = 26;
      break;
    } else {
      label = 24;
      break;
    }
   case 22:
    $arraydecay = $left | 0;
    $arraydecay136 = $right | 0;
    _Bezier($tmp, $cp, 3, .5, $arraydecay, $arraydecay136);
    _update_bb_bz($bb, $arraydecay);
    _update_bb_bz($bb, $arraydecay136);
    label = 23;
    break;
   case 23:
    STACKTOP = __stackBase__;
    return;
   case 24:
    $20 = +HEAPF64[$x104 >> 3];
    $cmp105_1 = $18 < $20;
    if ($cmp105_1) {
      label = 25;
      break;
    } else {
      label = 27;
      break;
    }
   case 25:
    HEAPF64[$x104 >> 3] = $18;
    label = 27;
    break;
   case 26:
    HEAPF64[$x1 >> 3] = $18;
    label = 27;
    break;
   case 27:
    $y113_1 = $cp + 24 | 0;
    $21 = +HEAPF64[$y113_1 >> 3];
    $22 = +HEAPF64[$y115 >> 3];
    $cmp116_1 = $21 > $22;
    if ($cmp116_1) {
      label = 30;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $23 = +HEAPF64[$y126 >> 3];
    $cmp127_1 = $21 < $23;
    if ($cmp127_1) {
      label = 29;
      break;
    } else {
      label = 31;
      break;
    }
   case 29:
    HEAPF64[$y126 >> 3] = $21;
    label = 31;
    break;
   case 30:
    HEAPF64[$y115 >> 3] = $21;
    label = 31;
    break;
   case 31:
    $x92_2 = $cp + 32 | 0;
    $24 = +HEAPF64[$x92_2 >> 3];
    $25 = +HEAPF64[$x1 >> 3];
    $cmp95_2 = $24 > $25;
    if ($cmp95_2) {
      label = 34;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $26 = +HEAPF64[$x104 >> 3];
    $cmp105_2 = $24 < $26;
    if ($cmp105_2) {
      label = 33;
      break;
    } else {
      label = 35;
      break;
    }
   case 33:
    HEAPF64[$x104 >> 3] = $24;
    label = 35;
    break;
   case 34:
    HEAPF64[$x1 >> 3] = $24;
    label = 35;
    break;
   case 35:
    $y113_2 = $cp + 40 | 0;
    $27 = +HEAPF64[$y113_2 >> 3];
    $28 = +HEAPF64[$y115 >> 3];
    $cmp116_2 = $27 > $28;
    if ($cmp116_2) {
      label = 38;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $29 = +HEAPF64[$y126 >> 3];
    $cmp127_2 = $27 < $29;
    if ($cmp127_2) {
      label = 37;
      break;
    } else {
      label = 39;
      break;
    }
   case 37:
    HEAPF64[$y126 >> 3] = $27;
    label = 39;
    break;
   case 38:
    HEAPF64[$y115 >> 3] = $27;
    label = 39;
    break;
   case 39:
    $x92_3 = $cp + 48 | 0;
    $30 = +HEAPF64[$x92_3 >> 3];
    $31 = +HEAPF64[$x1 >> 3];
    $cmp95_3 = $30 > $31;
    if ($cmp95_3) {
      label = 42;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $32 = +HEAPF64[$x104 >> 3];
    $cmp105_3 = $30 < $32;
    if ($cmp105_3) {
      label = 41;
      break;
    } else {
      label = 43;
      break;
    }
   case 41:
    HEAPF64[$x104 >> 3] = $30;
    label = 43;
    break;
   case 42:
    HEAPF64[$x1 >> 3] = $30;
    label = 43;
    break;
   case 43:
    $y113_3 = $cp + 56 | 0;
    $33 = +HEAPF64[$y113_3 >> 3];
    $34 = +HEAPF64[$y115 >> 3];
    $cmp116_3 = $33 > $34;
    if ($cmp116_3) {
      label = 46;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $35 = +HEAPF64[$y126 >> 3];
    $cmp127_3 = $33 < $35;
    if ($cmp127_3) {
      label = 45;
      break;
    } else {
      label = 23;
      break;
    }
   case 45:
    HEAPF64[$y126 >> 3] = $33;
    label = 23;
    break;
   case 46:
    HEAPF64[$y115 >> 3] = $33;
    label = 23;
    break;
  }
}
function _check_control_points($cp) {
  $cp = $cp | 0;
  var $arrayidx1 = 0, $call = 0.0;
  $arrayidx1 = $cp + 48 | 0;
  $call = +_ptToLine2($cp, $arrayidx1, $cp + 16 | 0);
  return $call < 4.0 & +_ptToLine2($cp, $arrayidx1, $cp + 32 | 0) < 4.0 & 1 | 0;
}
function _emit_graph($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $flags1 = 0, $0 = 0, $zoom = 0, $1 = 0.0, $x = 0, $2 = 0.0, $mul = 0.0, $div = 0.0, $x2 = 0, $3 = 0.0, $y = 0, $4 = 0.0, $mul5 = 0.0, $div6 = 0.0, $y8 = 0, $5 = 0.0, $div11 = 0.0, $x12 = 0, $6 = 0.0, $div15 = 0.0, $y17 = 0, $7 = 0, $and = 0, $8 = 0, $9 = 0, $10 = 0, $mul22 = 0.0, $rotation = 0, $11 = 0, $tobool23 = 0, $width = 0, $12 = 0, $conv = 0.0, $13 = 0.0, $div27 = 0.0, $y28 = 0, $height = 0, $14 = 0, $conv29 = 0.0, $15 = 0.0, $div32 = 0.0, $x34 = 0, $16 = 0.0, $div39 = 0.0, $x41 = 0, $height42 = 0, $17 = 0, $conv43 = 0.0, $18 = 0.0, $div46 = 0.0, $y48 = 0, $19 = 0, $call = 0, $call50 = 0, $and51 = 0, $tobool52 = 0, $20 = 0, $call55 = 0, $tobool5650 = 0, $n_0_in51 = 0, $state = 0, $21 = 0, $call57 = 0, $tobool56 = 0, $call5948 = 0, $tobool6049 = 0, $numLayers = 0, $22 = 0, $cmp = 0, $call6646 = 0, $tobool6747 = 0, $call66 = 0, $tobool67 = 0, $23 = 0, $cmp72 = 0, $call59 = 0, $tobool60 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $flags1 = $job + 152 | 0;
    $0 = HEAP32[$flags1 >> 2] | 0;
    $zoom = $job + 352 | 0;
    $1 = +HEAPF64[$zoom >> 3];
    $x = $job + 432 | 0;
    $2 = +HEAPF64[$x >> 3];
    $mul = $1 * $2;
    $div = $mul / 72.0;
    $x2 = $job + 488 | 0;
    HEAPF64[$x2 >> 3] = $div;
    $3 = +HEAPF64[$zoom >> 3];
    $y = $job + 440 | 0;
    $4 = +HEAPF64[$y >> 3];
    $mul5 = $3 * $4;
    $div6 = $mul5 / 72.0;
    $y8 = $job + 496 | 0;
    HEAPF64[$y8 >> 3] = $div6;
    $5 = +HEAPF64[$x >> 3];
    $div11 = $5 / 72.0;
    $x12 = $job + 520 | 0;
    HEAPF64[$x12 >> 3] = $div11;
    $6 = +HEAPF64[$y >> 3];
    $div15 = $6 / 72.0;
    $y17 = $job + 528 | 0;
    HEAPF64[$y17 >> 3] = $div15;
    $7 = HEAP32[$flags1 >> 2] | 0;
    $and = $7 & 4096;
    $8 = HEAP32[41182] | 0;
    $9 = $and | $8;
    $10 = ($9 | 0) == 0;
    if ($10) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $mul22 = $div15 * -1.0;
    HEAPF64[$y17 >> 3] = $mul22;
    label = 4;
    break;
   case 4:
    $rotation = $job + 360 | 0;
    $11 = HEAP32[$rotation >> 2] | 0;
    $tobool23 = ($11 | 0) == 0;
    $width = $job + 448 | 0;
    $12 = HEAP32[$width >> 2] | 0;
    $conv = +($12 >>> 0 >>> 0);
    if ($tobool23) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $13 = +HEAPF64[$y8 >> 3];
    $div27 = $conv / $13;
    $y28 = $job + 376 | 0;
    HEAPF64[$y28 >> 3] = $div27;
    $height = $job + 452 | 0;
    $14 = HEAP32[$height >> 2] | 0;
    $conv29 = +($14 >>> 0 >>> 0);
    $15 = +HEAPF64[$x2 >> 3];
    $div32 = $conv29 / $15;
    $x34 = $job + 368 | 0;
    HEAPF64[$x34 >> 3] = $div32;
    label = 7;
    break;
   case 6:
    $16 = +HEAPF64[$x2 >> 3];
    $div39 = $conv / $16;
    $x41 = $job + 368 | 0;
    HEAPF64[$x41 >> 3] = $div39;
    $height42 = $job + 452 | 0;
    $17 = HEAP32[$height42 >> 2] | 0;
    $conv43 = +($17 >>> 0 >>> 0);
    $18 = +HEAPF64[$y8 >> 3];
    $div46 = $conv43 / $18;
    $y48 = $job + 376 | 0;
    HEAPF64[$y48 >> 3] = $div46;
    label = 7;
    break;
   case 7:
    $19 = $g | 0;
    $call = _agfindattr($19, 138904) | 0;
    $call50 = _late_string($19, $call, 136112) | 0;
    _gvrender_comment($job, $call50);
    _emit_begin_graph($job, $g);
    $and51 = $0 & 2;
    $tobool52 = ($and51 | 0) == 0;
    if ($tobool52) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _emit_colors($job, $g);
    label = 9;
    break;
   case 9:
    $20 = $g;
    $call55 = _agfstnode($20) | 0;
    $tobool5650 = ($call55 | 0) == 0;
    if ($tobool5650) {
      label = 11;
      break;
    } else {
      $n_0_in51 = $call55;
      label = 10;
      break;
    }
   case 10:
    $state = $n_0_in51 + 132 | 0;
    $21 = $state;
    HEAP8[$21] = 0;
    $call57 = _agnxtnode($20, $n_0_in51) | 0;
    $tobool56 = ($call57 | 0) == 0;
    if ($tobool56) {
      label = 11;
      break;
    } else {
      $n_0_in51 = $call57;
      label = 10;
      break;
    }
   case 11:
    _firstlayer($job);
    $call5948 = _validlayer($job) | 0;
    $tobool6049 = $call5948 << 24 >> 24 == 0;
    if ($tobool6049) {
      label = 20;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $numLayers = $job + 156 | 0;
    label = 13;
    break;
   case 13:
    $22 = HEAP32[$numLayers >> 2] | 0;
    $cmp = ($22 | 0) > 1;
    if ($cmp) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    _gvrender_begin_layer($job);
    label = 15;
    break;
   case 15:
    _firstpage($job);
    $call6646 = _validpage($job) | 0;
    $tobool6747 = $call6646 << 24 >> 24 == 0;
    if ($tobool6747) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _emit_page($job, $g);
    _nextpage($job);
    $call66 = _validpage($job) | 0;
    $tobool67 = $call66 << 24 >> 24 == 0;
    if ($tobool67) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 17:
    $23 = HEAP32[$numLayers >> 2] | 0;
    $cmp72 = ($23 | 0) > 1;
    if ($cmp72) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    _gvrender_end_layer($job);
    label = 19;
    break;
   case 19:
    _nextlayer($job);
    $call59 = _validlayer($job) | 0;
    $tobool60 = $call59 << 24 >> 24 == 0;
    if ($tobool60) {
      label = 20;
      break;
    } else {
      label = 13;
      break;
    }
   case 20:
    _emit_end_graph($job);
    return;
  }
}
function _emit_begin_graph($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $call = 0;
  $call = _push_obj_state($job) | 0;
  HEAP32[$call + 4 >> 2] = 0;
  HEAP32[$call + 8 >> 2] = $g;
  HEAP32[$call + 12 >> 2] = 0;
  _initObjMapData($job, HEAP32[$g + 52 >> 2] | 0, $g | 0);
  _gvrender_begin_graph($job, $g);
  return;
}
function _emit_colors($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $0 = 0, $call = 0, $cmp = 0, $1 = 0, $tobool = 0, $call1 = 0, $cmp2 = 0, $2 = 0, $tobool7 = 0, $3 = 0, $call10 = 0, $tobool1147 = 0, $n_0_in48 = 0, $4 = 0, $call12 = 0, $cmp13 = 0, $5 = 0, $tobool18 = 0, $call21 = 0, $cmp22 = 0, $6 = 0, $tobool27 = 0, $call30 = 0, $cmp31 = 0, $7 = 0, $tobool36 = 0, $call39 = 0, $tobool4145 = 0, $e_0_in46 = 0, $8 = 0, $call43 = 0, $cmp44 = 0, $9 = 0, $tobool49 = 0, $call51 = 0, $tobool52 = 0, $call54 = 0, $call55 = 0, $tobool5743 = 0, $str_044 = 0, $10 = 0, $tobool60 = 0, $call63 = 0, $tobool57 = 0, $call66 = 0, $cmp67 = 0, $11 = 0, $tobool72 = 0, $call76 = 0, $tobool41 = 0, $call79 = 0, $tobool11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _gvrender_set_fillcolor($job, 117192);
    $0 = $g | 0;
    $call = _agget($0, 118488) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _gvrender_set_fillcolor($job, $call);
    label = 5;
    break;
   case 5:
    $call1 = _agget($0, 159088) | 0;
    $cmp2 = ($call1 | 0) == 0;
    if ($cmp2) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$call1] | 0;
    $tobool7 = $2 << 24 >> 24 == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _gvrender_set_pencolor($job, $call1);
    label = 8;
    break;
   case 8:
    _emit_cluster_colors($job, $g);
    $3 = $g;
    $call10 = _agfstnode($3) | 0;
    $tobool1147 = ($call10 | 0) == 0;
    if ($tobool1147) {
      label = 33;
      break;
    } else {
      $n_0_in48 = $call10;
      label = 9;
      break;
    }
   case 9:
    $4 = $n_0_in48 | 0;
    $call12 = _agget($4, 120080) | 0;
    $cmp13 = ($call12 | 0) == 0;
    if ($cmp13) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $5 = HEAP8[$call12] | 0;
    $tobool18 = $5 << 24 >> 24 == 0;
    if ($tobool18) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _gvrender_set_pencolor($job, $call12);
    label = 12;
    break;
   case 12:
    $call21 = _agget($4, 118936) | 0;
    $cmp22 = ($call21 | 0) == 0;
    if ($cmp22) {
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $6 = HEAP8[$call21] | 0;
    $tobool27 = $6 << 24 >> 24 == 0;
    if ($tobool27) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    _gvrender_set_fillcolor($job, $call21);
    label = 15;
    break;
   case 15:
    $call30 = _agget($4, 159088) | 0;
    $cmp31 = ($call30 | 0) == 0;
    if ($cmp31) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $7 = HEAP8[$call30] | 0;
    $tobool36 = $7 << 24 >> 24 == 0;
    if ($tobool36) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    _gvrender_set_pencolor($job, $call30);
    label = 18;
    break;
   case 18:
    $call39 = _agfstout($3, $n_0_in48) | 0;
    $tobool4145 = ($call39 | 0) == 0;
    if ($tobool4145) {
      label = 32;
      break;
    } else {
      $e_0_in46 = $call39;
      label = 19;
      break;
    }
   case 19:
    $8 = $e_0_in46 | 0;
    $call43 = _agget($8, 120080) | 0;
    $cmp44 = ($call43 | 0) == 0;
    if ($cmp44) {
      label = 28;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $9 = HEAP8[$call43] | 0;
    $tobool49 = $9 << 24 >> 24 == 0;
    if ($tobool49) {
      label = 28;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $call51 = _strchr($call43 | 0, 58) | 0;
    $tobool52 = ($call51 | 0) == 0;
    if ($tobool52) {
      label = 27;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $call54 = _strdup($call43 | 0) | 0;
    $call55 = _strtok($call54 | 0, 98688) | 0;
    $tobool5743 = ($call55 | 0) == 0;
    if ($tobool5743) {
      label = 26;
      break;
    } else {
      $str_044 = $call55;
      label = 23;
      break;
    }
   case 23:
    $10 = HEAP8[$str_044] | 0;
    $tobool60 = $10 << 24 >> 24 == 0;
    if ($tobool60) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    _gvrender_set_pencolor($job, $str_044);
    label = 25;
    break;
   case 25:
    $call63 = _strtok(0, 98688) | 0;
    $tobool57 = ($call63 | 0) == 0;
    if ($tobool57) {
      label = 26;
      break;
    } else {
      $str_044 = $call63;
      label = 23;
      break;
    }
   case 26:
    _free($call54);
    label = 28;
    break;
   case 27:
    _gvrender_set_pencolor($job, $call43);
    label = 28;
    break;
   case 28:
    $call66 = _agget($8, 159088) | 0;
    $cmp67 = ($call66 | 0) == 0;
    if ($cmp67) {
      label = 31;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $11 = HEAP8[$call66] | 0;
    $tobool72 = $11 << 24 >> 24 == 0;
    if ($tobool72) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    _gvrender_set_pencolor($job, $call66);
    label = 31;
    break;
   case 31:
    $call76 = _agnxtout($3, $e_0_in46) | 0;
    $tobool41 = ($call76 | 0) == 0;
    if ($tobool41) {
      label = 32;
      break;
    } else {
      $e_0_in46 = $call76;
      label = 19;
      break;
    }
   case 32:
    $call79 = _agnxtnode($3, $n_0_in48) | 0;
    $tobool11 = ($call79 | 0) == 0;
    if ($tobool11) {
      label = 33;
      break;
    } else {
      $n_0_in48 = $call79;
      label = 9;
      break;
    }
   case 33:
    return;
  }
}
function _firstlayer($job) {
  $job = $job | 0;
  var $gvc = 0, $0 = 0, $numLayers = 0, $1 = 0, $numLayers1 = 0, $cmp = 0, $flags = 0, $2 = 0, $and = 0, $tobool = 0, $output_langname = 0, $3 = 0, $call = 0, $layerNum = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc = $job | 0;
    $0 = HEAP32[$gvc >> 2] | 0;
    $numLayers = $0 + 284 | 0;
    $1 = HEAP32[$numLayers >> 2] | 0;
    $numLayers1 = $job + 156 | 0;
    HEAP32[$numLayers1 >> 2] = $1;
    $cmp = ($1 | 0) > 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $flags = $job + 152 | 0;
    $2 = HEAP32[$flags >> 2] | 0;
    $and = $2 & 64;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $output_langname = $job + 52 | 0;
    $3 = HEAP32[$output_langname >> 2] | 0;
    $call = _agerr(0, 159544, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $3, tempInt) | 0) | 0;
    HEAP32[$numLayers1 >> 2] = 1;
    label = 5;
    break;
   case 5:
    $layerNum = $job + 160 | 0;
    HEAP32[$layerNum >> 2] = 1;
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_page($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $obj1 = 0, $0 = 0, $flags2 = 0, $1 = 0, $2 = 0, $call = 0, $and = 0, $tobool = 0, $url = 0, $3 = 0, $tobool3 = 0, $4 = 0, $5 = 0, $6 = 0, $_mask53 = 0, $tobool4 = 0, $and5 = 0, $tobool6 = 0, $and8 = 0, $tobool9 = 0, $url_map_shape = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $11 = 0, $mul = 0, $call12 = 0, $12 = 0, $pageBox = 0, $13 = 0, $arrayidx13 = 0, $UR = 0, $14 = 0, $nump_1 = 0, $p_0 = 0, $and20 = 0, $tobool21 = 0, $call23 = 0, $url_map_p = 0, $url_map_n = 0, $and26 = 0, $tobool27 = 0, $label = 0, $15 = 0, $tobool29 = 0, $text = 0, $16 = 0, $label31 = 0, $and33 = 0, $tobool34 = 0, $url36 = 0, $17 = 0, $tobool37 = 0, $18 = 0, $19 = 0, $20 = 0, $_mask = 0, $tobool42 = 0, $clip = 0, $21 = 0, $tooltip = 0, $22 = 0, $target = 0, $23 = 0, $id = 0, $24 = 0, $numLayers = 0, $25 = 0, $cmp = 0, $label49 = 0, $26 = 0, $tobool50 = 0, $url58 = 0, $27 = 0, $tobool59 = 0, $28 = 0, $29 = 0, $30 = 0, $_mask52 = 0, $tobool64 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $flags2 = $job + 152 | 0;
    $1 = HEAP32[$flags2 >> 2] | 0;
    $2 = $g | 0;
    $call = _agget($2, 133704) | 0;
    _setColorScheme($call);
    _setup_page($job);
    _gvrender_begin_page($job);
    _gvrender_set_pencolor($job, 117856);
    _gvrender_set_fillcolor($job, 117192);
    $and = $1 & 4259840;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $url = $0 + 160 | 0;
    $3 = HEAP32[$url >> 2] | 0;
    $tobool3 = ($3 | 0) == 0;
    if ($tobool3) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $4 = $0 + 212 | 0;
    $5 = $4;
    $6 = HEAP32[$5 >> 2] | 0;
    $_mask53 = $6 & 1;
    $tobool4 = ($_mask53 | 0) == 0;
    if ($tobool4) {
      label = 11;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $and5 = $1 & 655360;
    $tobool6 = ($and5 | 0) == 0;
    if ($tobool6) {
      $p_0 = 0;
      $nump_1 = 0;
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $and8 = $1 & 131072;
    $tobool9 = ($and8 | 0) == 0;
    $url_map_shape = $0 + 216 | 0;
    $7 = $and8 >>> 16;
    $8 = $7 ^ 2;
    $9 = $and8 >>> 16;
    $10 = $9 ^ 2;
    $11 = $10 + 2 | 0;
    HEAP32[$url_map_shape >> 2] = $8;
    $mul = $11 << 4;
    $call12 = _zmalloc($mul) | 0;
    $12 = $call12;
    $pageBox = $job + 288 | 0;
    $13 = $pageBox;
    HEAP32[$call12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$call12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$call12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$call12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $arrayidx13 = $call12 + 16 | 0;
    $UR = $job + 304 | 0;
    $14 = $UR;
    HEAP32[$arrayidx13 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$arrayidx13 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$arrayidx13 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$arrayidx13 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    if ($tobool9) {
      label = 7;
      break;
    } else {
      $p_0 = $12;
      $nump_1 = $11;
      label = 8;
      break;
    }
   case 7:
    _rect2poly($12);
    $p_0 = $12;
    $nump_1 = $11;
    label = 8;
    break;
   case 8:
    $and20 = $1 & 8192;
    $tobool21 = ($and20 | 0) == 0;
    if ($tobool21) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $call23 = _gvrender_ptf_A($job, $p_0, $p_0, $nump_1) | 0;
    label = 10;
    break;
   case 10:
    $url_map_p = $0 + 224 | 0;
    HEAP32[$url_map_p >> 2] = $p_0;
    $url_map_n = $0 + 220 | 0;
    HEAP32[$url_map_n >> 2] = $nump_1;
    label = 11;
    break;
   case 11:
    $and26 = $1 & 32768;
    $tobool27 = ($and26 | 0) == 0;
    if ($tobool27) {
      label = 14;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $label = $g + 52 | 0;
    $15 = HEAP32[$label >> 2] | 0;
    $tobool29 = ($15 | 0) == 0;
    if ($tobool29) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $text = $15 | 0;
    $16 = HEAP32[$text >> 2] | 0;
    $label31 = $0 + 144 | 0;
    HEAP32[$label31 >> 2] = $16;
    label = 14;
    break;
   case 14:
    $and33 = $1 & 4;
    $tobool34 = ($and33 | 0) != 0;
    if ($tobool34) {
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $url36 = $0 + 160 | 0;
    $17 = HEAP32[$url36 >> 2] | 0;
    $tobool37 = ($17 | 0) == 0;
    if ($tobool37) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $18 = $0 + 212 | 0;
    $19 = $18;
    $20 = HEAP32[$19 >> 2] | 0;
    $_mask = $20 & 1;
    $tobool42 = ($_mask | 0) == 0;
    if ($tobool42) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $clip = $job + 256 | 0;
    _emit_map_rect($job, $clip);
    $21 = HEAP32[$url36 >> 2] | 0;
    $tooltip = $0 + 180 | 0;
    $22 = HEAP32[$tooltip >> 2] | 0;
    $target = $0 + 196 | 0;
    $23 = HEAP32[$target >> 2] | 0;
    $id = $0 + 164 | 0;
    $24 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $21, $22, $23, $24);
    label = 18;
    break;
   case 18:
    $numLayers = $job + 156 | 0;
    $25 = HEAP32[$numLayers >> 2] | 0;
    $cmp = ($25 | 0) == 1;
    if ($cmp) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    _emit_background($job, $g);
    label = 20;
    break;
   case 20:
    $label49 = $g + 52 | 0;
    $26 = HEAP32[$label49 >> 2] | 0;
    $tobool50 = ($26 | 0) == 0;
    if ($tobool50) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    _emit_label($job, 4, $26);
    label = 22;
    break;
   case 22:
    if ($tobool34) {
      label = 26;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $url58 = $0 + 160 | 0;
    $27 = HEAP32[$url58 >> 2] | 0;
    $tobool59 = ($27 | 0) == 0;
    if ($tobool59) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $28 = $0 + 212 | 0;
    $29 = $28;
    $30 = HEAP32[$29 >> 2] | 0;
    $_mask52 = $30 & 1;
    $tobool64 = ($_mask52 | 0) == 0;
    if ($tobool64) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    _gvrender_end_anchor($job);
    label = 26;
    break;
   case 26:
    _emit_view($job, $g, $1);
    _gvrender_end_page($job);
    return;
  }
}
function _nextpage($job) {
  $job = $job | 0;
  var $tmp = 0, $tmpcast = 0, $tmp13 = 0, $tmpcast11 = 0, $pagesArrayElem = 0, $pagesArrayMinor = 0, $0 = 0, $ld$0$0 = 0, $1$0 = 0, $ld$1$1 = 0, $1$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $call = 0, $cmp = 0, $pagesArrayMajor = 0, $y = 0, $2 = 0, $tobool = 0, $x = 0, $3 = 0, $x5 = 0, $y7 = 0, $4 = 0, $y9 = 0, $ld$4$0 = 0, $5$0 = 0, $ld$5$1 = 0, $5$1 = 0, $st$6$0 = 0, $st$7$1 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmpcast = $tmp;
    $tmp13 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast11 = $tmp13;
    $pagesArrayElem = $job + 196 | 0;
    $pagesArrayMinor = $job + 188 | 0;
    _add_point($tmpcast, $pagesArrayElem, $pagesArrayMinor);
    $0 = $pagesArrayElem;
    $ld$0$0 = $tmp | 0;
    $1$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $tmp + 4 | 0;
    $1$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $0 | 0;
    HEAP32[$st$2$0 >> 2] = $1$0;
    $st$3$1 = $0 + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $1$1;
    $call = _validpage($job) | 0;
    $cmp = $call << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $pagesArrayMajor = $job + 180 | 0;
    $y = $job + 184 | 0;
    $2 = HEAP32[$y >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $x = $job + 172 | 0;
    $3 = HEAP32[$x >> 2] | 0;
    $x5 = $pagesArrayElem | 0;
    HEAP32[$x5 >> 2] = $3;
    label = 6;
    break;
   case 5:
    $y7 = $job + 176 | 0;
    $4 = HEAP32[$y7 >> 2] | 0;
    $y9 = $job + 200 | 0;
    HEAP32[$y9 >> 2] = $4;
    label = 6;
    break;
   case 6:
    _add_point($tmpcast11, $pagesArrayElem, $pagesArrayMajor);
    $ld$4$0 = $tmp13 | 0;
    $5$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $tmp13 + 4 | 0;
    $5$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $0 | 0;
    HEAP32[$st$6$0 >> 2] = $5$0;
    $st$7$1 = $0 + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $5$1;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_end_graph($job) {
  $job = $job | 0;
  _gvrender_end_graph($job);
  _pop_obj_state($job);
  return;
}
function _emit_once($str) {
  $str = $str | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $searchf = 0, $4 = 0, $call1 = 0, $tobool = 0, $5 = 0, $searchf3 = 0, $6 = 0, $call4 = 0, $call5 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1014] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $1 = HEAP32[41978] | 0;
    $2 = $1;
    $call = _dtopen(4064, $2) | 0;
    HEAP32[1014] = $call;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[1014] | 0;
    $searchf = $3 | 0;
    $4 = HEAP32[$searchf >> 2] | 0;
    $call1 = FUNCTION_TABLE_iiii[$4 & 1023]($3, $str, 4) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 5:
    $5 = HEAP32[1014] | 0;
    $searchf3 = $5 | 0;
    $6 = HEAP32[$searchf3 >> 2] | 0;
    $call4 = _agstrdup($str) | 0;
    $call5 = FUNCTION_TABLE_iiii[$6 & 1023]($5, $call4, 1) | 0;
    $retval_0 = 1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _emit_once_reset() {
  var $0 = 0, $tobool = 0, $call = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1014] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _dtclose($0) | 0;
    HEAP32[1014] = 0;
    label = 4;
    break;
   case 4:
    return;
  }
}
function _emit_clusters($job, $g, $flags) {
  $job = $job | 0;
  $g = $g | 0;
  $flags = $flags | 0;
  var $istyle = 0, $AF = 0, $n_cluster = 0, $0 = 0, $cmp103 = 0, $clust = 0, $and = 0, $tobool = 0, $obj6 = 0, $and186 = 0, $tobool187 = 0, $arrayidx125 = 0, $1 = 0, $arrayidx128 = 0, $2 = 0, $x = 0, $x133 = 0, $y = 0, $y136 = 0, $x138 = 0, $x140 = 0, $y142 = 0, $y144 = 0, $c_0104 = 0, $3 = 0, $arrayidx = 0, $4 = 0, $call = 0, $cmp2 = 0, $5 = 0, $url = 0, $6 = 0, $tobool7 = 0, $7 = 0, $8 = 0, $9 = 0, $_mask = 0, $tobool8 = 0, $10 = 0, $11 = 0, $call9 = 0, $_not = 0, $brmerge = 0, $bb = 0, $12 = 0, $tooltip = 0, $13 = 0, $target = 0, $14 = 0, $id = 0, $15 = 0, $call17 = 0, $tobool18 = 0, $16 = 0, $and20 = 0, $filled_0 = 0, $gui_state = 0, $17 = 0, $conv26 = 0, $and27 = 0, $tobool28 = 0, $18 = 0, $call30 = 0, $19 = 0, $call31 = 0, $and35 = 0, $tobool36 = 0, $20 = 0, $call38 = 0, $21 = 0, $call39 = 0, $and44 = 0, $tobool45 = 0, $22 = 0, $call47 = 0, $23 = 0, $call48 = 0, $and53 = 0, $tobool54 = 0, $24 = 0, $call56 = 0, $25 = 0, $call57 = 0, $call59 = 0, $cmp60 = 0, $26 = 0, $tobool65 = 0, $_call59 = 0, $pencolor_0 = 0, $call68 = 0, $cmp69 = 0, $27 = 0, $tobool74 = 0, $pencolor_0_call68 = 0, $pencolor_1 = 0, $call77 = 0, $cmp78 = 0, $28 = 0, $tobool83 = 0, $pencolor_0_call77 = 0, $fillcolor_1 = 0, $tobool86 = 0, $call88 = 0, $cmp89 = 0, $29 = 0, $tobool94 = 0, $fillcolor_1_call88 = 0, $filled_0_ = 0, $pencolor_2 = 0, $fillcolor_2 = 0, $filled_1 = 0, $tobool101 = 0, $_pencolor_2 = 0, $tobool104 = 0, $fillcolor_3 = 0, $30 = 0, $tobool107 = 0, $index = 0, $31 = 0, $call109 = 0, $tobool110 = 0, $32 = 0, $tobool114 = 0, $call116 = 0.0, $33 = 0, $and118 = 0, $tobool119 = 0, $34 = 0, $call121 = 0, $35 = 0, $36 = 0, $bb127 = 0, $37 = 0, $UR = 0, $38 = 0, $39 = 0.0, $40 = 0.0, $41 = 0.0, $42 = 0.0, $43 = 0, $and145 = 0, $44 = 0, $call148 = 0, $tobool149 = 0, $bb152 = 0, $conv153 = 0, $tobool155 = 0, $cmp159 = 0, $bb164 = 0, $conv165 = 0, $label = 0, $45 = 0, $tobool170 = 0, $bb179 = 0, $46 = 0, $tooltip181 = 0, $47 = 0, $target182 = 0, $48 = 0, $id183 = 0, $49 = 0, $50 = 0, $call189 = 0, $tobool191101 = 0, $n_0_in102 = 0, $n_0 = 0, $call193 = 0, $tobool19599 = 0, $e_0_in100 = 0, $e_0 = 0, $call197 = 0, $tobool195 = 0, $call199 = 0, $tobool191 = 0, $inc = 0, $51 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 72 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $istyle = __stackBase__ | 0;
    $AF = __stackBase__ + 8 | 0;
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp103 = ($0 | 0) < 1;
    if ($cmp103) {
      label = 57;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $and = $flags & 4;
    $tobool = ($and | 0) != 0;
    $obj6 = $job + 16 | 0;
    $and186 = $flags & 8;
    $tobool187 = ($and186 | 0) == 0;
    $arrayidx125 = $AF | 0;
    $1 = $AF;
    $arrayidx128 = $AF + 32 | 0;
    $2 = $arrayidx128;
    $x = $arrayidx128 | 0;
    $x133 = $AF + 16 | 0;
    $y = $AF + 8 | 0;
    $y136 = $AF + 24 | 0;
    $x138 = $AF | 0;
    $x140 = $AF + 48 | 0;
    $y142 = $AF + 40 | 0;
    $y144 = $AF + 56 | 0;
    $c_0104 = 1;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $3 + ($c_0104 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $call = _clust_in_layer($job, $4) | 0;
    $cmp2 = $call << 24 >> 24 == 0;
    if ($cmp2) {
      label = 56;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    _emit_clusters($job, $4, $flags);
    label = 7;
    break;
   case 7:
    _emit_begin_cluster($job, $4);
    $5 = HEAP32[$obj6 >> 2] | 0;
    $url = $5 + 160 | 0;
    $6 = HEAP32[$url >> 2] | 0;
    $tobool7 = ($6 | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      $10 = 1;
      label = 9;
      break;
    }
   case 8:
    $7 = $5 + 212 | 0;
    $8 = $7;
    $9 = HEAP32[$8 >> 2] | 0;
    $_mask = $9 & 1;
    $tobool8 = ($_mask | 0) != 0;
    $10 = $tobool8;
    label = 9;
    break;
   case 9:
    $11 = $4 | 0;
    $call9 = _agget($11, 133704) | 0;
    _setColorScheme($call9);
    $_not = $10 ^ 1;
    $brmerge = $tobool | $_not;
    if ($brmerge) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $bb = $4 + 56 | 0;
    _emit_map_rect($job, $bb);
    $12 = HEAP32[$url >> 2] | 0;
    $tooltip = $5 + 180 | 0;
    $13 = HEAP32[$tooltip >> 2] | 0;
    $target = $5 + 196 | 0;
    $14 = HEAP32[$target >> 2] | 0;
    $id = $5 + 164 | 0;
    $15 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $12, $13, $14, $15);
    label = 11;
    break;
   case 11:
    HEAP32[$istyle >> 2] = 0;
    $call17 = _checkClusterStyle($4, $istyle) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      $filled_0 = 0;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _gvrender_set_style($job, $call17);
    $16 = HEAP32[$istyle >> 2] | 0;
    $and20 = $16 & 1;
    $filled_0 = $and20;
    label = 13;
    break;
   case 13:
    $gui_state = $4 + 152 | 0;
    $17 = HEAP8[$gui_state] | 0;
    $conv26 = $17 & 255;
    $and27 = $conv26 & 1;
    $tobool28 = ($and27 | 0) == 0;
    if ($tobool28) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $18 = HEAP32[41872] | 0;
    $call30 = _late_nnstring($11, $18, 131512) | 0;
    $19 = HEAP32[41874] | 0;
    $call31 = _late_nnstring($11, $19, 130536) | 0;
    $filled_1 = 1;
    $fillcolor_2 = $call31;
    $pencolor_2 = $call30;
    label = 30;
    break;
   case 15:
    $and35 = $conv26 & 2;
    $tobool36 = ($and35 | 0) == 0;
    if ($tobool36) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $20 = HEAP32[41872] | 0;
    $call38 = _late_nnstring($11, $20, 128656) | 0;
    $21 = HEAP32[41874] | 0;
    $call39 = _late_nnstring($11, $21, 126080) | 0;
    $filled_1 = 1;
    $fillcolor_2 = $call39;
    $pencolor_2 = $call38;
    label = 30;
    break;
   case 17:
    $and44 = $conv26 & 8;
    $tobool45 = ($and44 | 0) == 0;
    if ($tobool45) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $22 = HEAP32[41868] | 0;
    $call47 = _late_nnstring($11, $22, 122664) | 0;
    $23 = HEAP32[41870] | 0;
    $call48 = _late_nnstring($11, $23, 121984) | 0;
    $filled_1 = 1;
    $fillcolor_2 = $call48;
    $pencolor_2 = $call47;
    label = 30;
    break;
   case 19:
    $and53 = $conv26 & 4;
    $tobool54 = ($and53 | 0) == 0;
    if ($tobool54) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $24 = HEAP32[41858] | 0;
    $call56 = _late_nnstring($11, $24, 121456) | 0;
    $25 = HEAP32[41860] | 0;
    $call57 = _late_nnstring($11, $25, 120728) | 0;
    $filled_1 = 1;
    $fillcolor_2 = $call57;
    $pencolor_2 = $call56;
    label = 30;
    break;
   case 21:
    $call59 = _agget($11, 120080) | 0;
    $cmp60 = ($call59 | 0) == 0;
    if ($cmp60) {
      $pencolor_0 = 0;
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $26 = HEAP8[$call59] | 0;
    $tobool65 = $26 << 24 >> 24 == 0;
    $_call59 = $tobool65 ? 0 : $call59;
    $pencolor_0 = $_call59;
    label = 23;
    break;
   case 23:
    $call68 = _agget($11, 119480) | 0;
    $cmp69 = ($call68 | 0) == 0;
    if ($cmp69) {
      $pencolor_1 = $pencolor_0;
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $27 = HEAP8[$call68] | 0;
    $tobool74 = $27 << 24 >> 24 == 0;
    $pencolor_0_call68 = $tobool74 ? $pencolor_0 : $call68;
    $pencolor_1 = $pencolor_0_call68;
    label = 25;
    break;
   case 25:
    $call77 = _agget($11, 118936) | 0;
    $cmp78 = ($call77 | 0) == 0;
    if ($cmp78) {
      $fillcolor_1 = $pencolor_0;
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $28 = HEAP8[$call77] | 0;
    $tobool83 = $28 << 24 >> 24 == 0;
    $pencolor_0_call77 = $tobool83 ? $pencolor_0 : $call77;
    $fillcolor_1 = $pencolor_0_call77;
    label = 27;
    break;
   case 27:
    $tobool86 = ($filled_0 | 0) == 0;
    if ($tobool86) {
      label = 28;
      break;
    } else {
      $filled_1 = $filled_0;
      $fillcolor_2 = $fillcolor_1;
      $pencolor_2 = $pencolor_1;
      label = 30;
      break;
    }
   case 28:
    $call88 = _agget($11, 118488) | 0;
    $cmp89 = ($call88 | 0) == 0;
    if ($cmp89) {
      $filled_1 = 0;
      $fillcolor_2 = $fillcolor_1;
      $pencolor_2 = $pencolor_1;
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $29 = HEAP8[$call88] | 0;
    $tobool94 = $29 << 24 >> 24 == 0;
    $fillcolor_1_call88 = $tobool94 ? $fillcolor_1 : $call88;
    $filled_0_ = $tobool94 ? $filled_0 : 1;
    $filled_1 = $filled_0_;
    $fillcolor_2 = $fillcolor_1_call88;
    $pencolor_2 = $pencolor_1;
    label = 30;
    break;
   case 30:
    $tobool101 = ($pencolor_2 | 0) == 0;
    $_pencolor_2 = $tobool101 ? 117856 : $pencolor_2;
    $tobool104 = ($fillcolor_2 | 0) == 0;
    $fillcolor_3 = $tobool104 ? 117192 : $fillcolor_2;
    $30 = HEAP32[41864] | 0;
    $tobool107 = ($30 | 0) == 0;
    if ($tobool107) {
      label = 34;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $index = $30 + 8 | 0;
    $31 = HEAP32[$index >> 2] | 0;
    $call109 = _agxget($11, $31) | 0;
    $tobool110 = ($call109 | 0) == 0;
    if ($tobool110) {
      label = 34;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $32 = HEAP8[$call109] | 0;
    $tobool114 = $32 << 24 >> 24 == 0;
    if ($tobool114) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $call116 = +_late_double($11, $30, 1.0, 0.0);
    _gvrender_set_penwidth($job, $call116);
    label = 34;
    break;
   case 34:
    $33 = HEAP32[$istyle >> 2] | 0;
    $and118 = $33 & 2;
    $tobool119 = ($and118 | 0) == 0;
    if ($tobool119) {
      label = 37;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $34 = HEAP32[41862] | 0;
    $call121 = _late_int($11, $34, 1, 0) | 0;
    $35 = $call121 | $filled_1;
    $36 = ($35 | 0) == 0;
    if ($36) {
      label = 43;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $bb127 = $4 + 56 | 0;
    $37 = $bb127;
    HEAP32[$1 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    $UR = $4 + 72 | 0;
    $38 = $UR;
    HEAP32[$2 >> 2] = HEAP32[$38 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$38 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$38 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$38 + 12 >> 2] | 0;
    $39 = +HEAPF64[$x >> 3];
    HEAPF64[$x133 >> 3] = $39;
    $40 = +HEAPF64[$y >> 3];
    HEAPF64[$y136 >> 3] = $40;
    $41 = +HEAPF64[$x138 >> 3];
    HEAPF64[$x140 >> 3] = $41;
    $42 = +HEAPF64[$y142 >> 3];
    HEAPF64[$y144 >> 3] = $42;
    $43 = HEAP32[$istyle >> 2] | 0;
    $and145 = $43 & 1;
    _round_corners($job, $fillcolor_3, $_pencolor_2, $arrayidx125, 4, $43, $and145);
    label = 43;
    break;
   case 37:
    _gvrender_set_pencolor($job, $_pencolor_2);
    _gvrender_set_fillcolor($job, $fillcolor_3);
    $44 = HEAP32[41862] | 0;
    $call148 = _late_int($11, $44, 1, 0) | 0;
    $tobool149 = ($call148 | 0) == 0;
    if ($tobool149) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $bb152 = $4 + 56 | 0;
    $conv153 = $filled_1 & 255;
    _gvrender_box($job, $bb152, $conv153);
    label = 43;
    break;
   case 39:
    $tobool155 = ($filled_1 | 0) == 0;
    if ($tobool155) {
      label = 43;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $cmp159 = ($fillcolor_3 | 0) == ($_pencolor_2 | 0);
    if ($cmp159) {
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    _gvrender_set_pencolor($job, $fillcolor_3);
    label = 42;
    break;
   case 42:
    $bb164 = $4 + 56 | 0;
    $conv165 = $filled_1 & 255;
    _gvrender_box($job, $bb164, $conv165);
    label = 43;
    break;
   case 43:
    $label = $4 + 52 | 0;
    $45 = HEAP32[$label >> 2] | 0;
    $tobool170 = ($45 | 0) == 0;
    if ($tobool170) {
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    _emit_label($job, 5, $45);
    label = 45;
    break;
   case 45:
    if ($10) {
      label = 46;
      break;
    } else {
      label = 49;
      break;
    }
   case 46:
    if ($tobool) {
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    $bb179 = $4 + 56 | 0;
    _emit_map_rect($job, $bb179);
    $46 = HEAP32[$url >> 2] | 0;
    $tooltip181 = $5 + 180 | 0;
    $47 = HEAP32[$tooltip181 >> 2] | 0;
    $target182 = $5 + 196 | 0;
    $48 = HEAP32[$target182 >> 2] | 0;
    $id183 = $5 + 164 | 0;
    $49 = HEAP32[$id183 >> 2] | 0;
    _gvrender_begin_anchor($job, $46, $47, $48, $49);
    label = 48;
    break;
   case 48:
    _gvrender_end_anchor($job);
    label = 49;
    break;
   case 49:
    if ($tobool187) {
      label = 54;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $50 = $4;
    $call189 = _agfstnode($50) | 0;
    $tobool191101 = ($call189 | 0) == 0;
    if ($tobool191101) {
      label = 54;
      break;
    } else {
      $n_0_in102 = $call189;
      label = 51;
      break;
    }
   case 51:
    $n_0 = $n_0_in102;
    _emit_node($job, $n_0);
    $call193 = _agfstout($50, $n_0_in102) | 0;
    $tobool19599 = ($call193 | 0) == 0;
    if ($tobool19599) {
      label = 53;
      break;
    } else {
      $e_0_in100 = $call193;
      label = 52;
      break;
    }
   case 52:
    $e_0 = $e_0_in100;
    _emit_edge($job, $e_0);
    $call197 = _agnxtout($50, $e_0_in100) | 0;
    $tobool195 = ($call197 | 0) == 0;
    if ($tobool195) {
      label = 53;
      break;
    } else {
      $e_0_in100 = $call197;
      label = 52;
      break;
    }
   case 53:
    $call199 = _agnxtnode($50, $n_0_in102) | 0;
    $tobool191 = ($call199 | 0) == 0;
    if ($tobool191) {
      label = 54;
      break;
    } else {
      $n_0_in102 = $call199;
      label = 51;
      break;
    }
   case 54:
    _emit_end_cluster($job, $g);
    if ($tobool) {
      label = 56;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    _emit_clusters($job, $4, $flags);
    label = 56;
    break;
   case 56:
    $inc = $c_0104 + 1 | 0;
    $51 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($51 | 0);
    if ($cmp) {
      label = 57;
      break;
    } else {
      $c_0104 = $inc;
      label = 4;
      break;
    }
   case 57:
    STACKTOP = __stackBase__;
    return;
  }
}
function _clust_in_layer($job, $sg) {
  $job = $job | 0;
  $sg = $sg | 0;
  var $numLayers = 0, $0 = 0, $cmp = 0, $1 = 0, $call = 0, $call1 = 0, $call2 = 0, $tobool = 0, $2 = 0, $tobool5 = 0, $3 = 0, $call8 = 0, $tobool910 = 0, $n_0_in11 = 0, $n_0 = 0, $call10 = 0, $tobool11 = 0, $call14 = 0, $tobool9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $numLayers = $job + 156 | 0;
    $0 = HEAP32[$numLayers >> 2] | 0;
    $cmp = ($0 | 0) < 2;
    if ($cmp) {
      $retval_0 = 1;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $sg | 0;
    $call = _agfindattr($1, 160880) | 0;
    $call1 = _late_string($1, $call, 136112) | 0;
    $call2 = _selectedlayer($job, $call1) | 0;
    $tobool = $call2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 8;
      break;
    }
   case 4:
    $2 = HEAP8[$call1] | 0;
    $tobool5 = $2 << 24 >> 24 == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 8;
      break;
    }
   case 5:
    $3 = $sg;
    $call8 = _agfstnode($3) | 0;
    $tobool910 = ($call8 | 0) == 0;
    if ($tobool910) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      $n_0_in11 = $call8;
      label = 6;
      break;
    }
   case 6:
    $n_0 = $n_0_in11;
    $call10 = _node_in_layer($job, $sg, $n_0) | 0;
    $tobool11 = $call10 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 8;
      break;
    }
   case 7:
    $call14 = _agnxtnode($3, $n_0_in11) | 0;
    $tobool9 = ($call14 | 0) == 0;
    if ($tobool9) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      $n_0_in11 = $call14;
      label = 6;
      break;
    }
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _emit_begin_cluster($job, $sg) {
  $job = $job | 0;
  $sg = $sg | 0;
  var $call = 0;
  $call = _push_obj_state($job) | 0;
  HEAP32[$call + 4 >> 2] = 1;
  HEAP32[$call + 8 >> 2] = $sg;
  HEAP32[$call + 12 >> 2] = 1;
  _initObjMapData($job, HEAP32[$sg + 52 >> 2] | 0, $sg | 0);
  _gvrender_begin_cluster($job, 0);
  return;
}
function _checkClusterStyle($sg, $flagp) {
  $sg = $sg | 0;
  $flagp = $flagp | 0;
  var $0 = 0, $call = 0, $cmp = 0, $1 = 0, $tobool = 0, $call1 = 0, $or11 = 0, $istyle_0_ph = 0, $pp_0_ph = 0, $pp_0 = 0, $2 = 0, $tobool2 = 0, $call3 = 0, $cmp4 = 0, $or = 0, $incdec_ptr = 0, $call7 = 0, $cmp8 = 0, $incdec_ptr15 = 0, $qp_0 = 0, $incdec_ptr12 = 0, $3 = 0, $4 = 0, $tobool13 = 0, $istyle_1 = 0, $pstyle_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $sg | 0;
    $call = _agget($0, 161504) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      $pstyle_0 = 0;
      $istyle_1 = 0;
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      $pstyle_0 = 0;
      $istyle_1 = 0;
      label = 12;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call1 = _parse_style($call) | 0;
    $pp_0_ph = 7280;
    $istyle_0_ph = 0;
    label = 6;
    break;
   case 5:
    $or11 = $istyle_0_ph | 2;
    $pp_0_ph = $pp_0;
    $istyle_0_ph = $or11;
    label = 6;
    break;
   case 6:
    $pp_0 = $pp_0_ph;
    label = 7;
    break;
   case 7:
    $2 = HEAP32[$pp_0 >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      $pstyle_0 = 7280;
      $istyle_1 = $istyle_0_ph;
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call3 = _strcmp($2 | 0, 161792) | 0;
    $cmp4 = ($call3 | 0) == 0;
    if ($cmp4) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $or = $istyle_0_ph | 1;
    $incdec_ptr = $pp_0 + 4 | 0;
    $pp_0_ph = $incdec_ptr;
    $istyle_0_ph = $or;
    label = 6;
    break;
   case 10:
    $call7 = _strcmp($2 | 0, 161224) | 0;
    $cmp8 = ($call7 | 0) == 0;
    $incdec_ptr15 = $pp_0 + 4 | 0;
    if ($cmp8) {
      $qp_0 = $pp_0;
      label = 11;
      break;
    } else {
      $pp_0 = $incdec_ptr15;
      label = 7;
      break;
    }
   case 11:
    $incdec_ptr12 = $qp_0 + 4 | 0;
    $3 = HEAP32[$incdec_ptr12 >> 2] | 0;
    HEAP32[$qp_0 >> 2] = $3;
    $4 = HEAP32[$incdec_ptr12 >> 2] | 0;
    $tobool13 = ($4 | 0) == 0;
    if ($tobool13) {
      label = 5;
      break;
    } else {
      $qp_0 = $incdec_ptr12;
      label = 11;
      break;
    }
   case 12:
    HEAP32[$flagp >> 2] = $istyle_1;
    return $pstyle_0 | 0;
  }
  return 0;
}
function _emit_node($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $gvc1 = 0, $0 = 0, $shape = 0, $1 = 0, $tobool = 0, $graph = 0, $2 = 0, $call = 0, $tobool2 = 0, $clip = 0, $call4 = 0, $tobool6 = 0, $state = 0, $3 = 0, $conv9 = 0, $viewNum = 0, $4 = 0, $cmp = 0, $conv13 = 0, $name = 0, $5 = 0, $6 = 0, $7 = 0, $call16 = 0, $8 = 0, $tobool17 = 0, $9 = 0, $call19 = 0, $10 = 0, $tobool21 = 0, $call23 = 0, $11 = 0, $tobool2426 = 0, $12 = 0, $incdec_ptr27 = 0, $13 = 0, $cmp27 = 0, $incdec_ptr = 0, $14 = 0, $tobool24 = 0, $call30 = 0, $tobool31 = 0, $15 = 0, $fns = 0, $16 = 0, $codefn = 0, $17 = 0, $xlabel = 0, $18 = 0, $tobool38 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $shape = $n + 24 | 0;
    $1 = HEAP32[$shape >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 16;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $graph = $n + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $call = _node_in_layer($job, $2, $n) | 0;
    $tobool2 = $call << 24 >> 24 == 0;
    if ($tobool2) {
      label = 16;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $clip = $job + 256 | 0;
    $call4 = _node_in_box($n, $clip) | 0;
    $tobool6 = $call4 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 16;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $state = $n + 132 | 0;
    $3 = HEAP8[$state] | 0;
    $conv9 = $3 << 24 >> 24;
    $viewNum = $0 + 28 | 0;
    $4 = HEAP32[$viewNum >> 2] | 0;
    $cmp = ($conv9 | 0) == ($4 | 0);
    if ($cmp) {
      label = 16;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $conv13 = $4 & 255;
    HEAP8[$state] = $conv13;
    $name = $n + 12 | 0;
    $5 = HEAP32[$name >> 2] | 0;
    _gvrender_comment($job, $5);
    $6 = $n | 0;
    $7 = HEAP32[41614] | 0;
    $call16 = _late_string($6, $7, 136112) | 0;
    $8 = HEAP8[$call16] | 0;
    $tobool17 = $8 << 24 >> 24 == 0;
    if ($tobool17) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _gvrender_comment($job, $call16);
    label = 8;
    break;
   case 8:
    $9 = HEAP32[41560] | 0;
    $call19 = _late_string($6, $9, 136112) | 0;
    $10 = HEAP8[$call19] | 0;
    $tobool21 = $10 << 24 >> 24 == 0;
    if ($tobool21) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call23 = _parse_style($call19) | 0;
    $11 = HEAP32[1820] | 0;
    $tobool2426 = ($11 | 0) == 0;
    if ($tobool2426) {
      label = 13;
      break;
    } else {
      $incdec_ptr27 = 7284;
      $12 = $11;
      label = 10;
      break;
    }
   case 10:
    $13 = HEAP8[$12] | 0;
    $cmp27 = $13 << 24 >> 24 == 105;
    if ($cmp27) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $incdec_ptr = $incdec_ptr27 + 4 | 0;
    $14 = HEAP32[$incdec_ptr27 >> 2] | 0;
    $tobool24 = ($14 | 0) == 0;
    if ($tobool24) {
      label = 13;
      break;
    } else {
      $incdec_ptr27 = $incdec_ptr;
      $12 = $14;
      label = 10;
      break;
    }
   case 12:
    $call30 = _strcmp($12 | 0, 101752) | 0;
    $tobool31 = ($call30 | 0) == 0;
    if ($tobool31) {
      label = 16;
      break;
    } else {
      label = 11;
      break;
    }
   case 13:
    _emit_begin_node($job, $n);
    $15 = HEAP32[$shape >> 2] | 0;
    $fns = $15 + 4 | 0;
    $16 = HEAP32[$fns >> 2] | 0;
    $codefn = $16 + 20 | 0;
    $17 = HEAP32[$codefn >> 2] | 0;
    FUNCTION_TABLE_vii[$17 & 1023]($job, $n);
    $xlabel = $n + 124 | 0;
    $18 = HEAP32[$xlabel >> 2] | 0;
    $tobool38 = ($18 | 0) == 0;
    if ($tobool38) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    _emit_label($job, 10, $18);
    label = 15;
    break;
   case 15:
    _emit_end_node($job);
    label = 16;
    break;
   case 16:
    return;
  }
}
function _emit_edge($job, $e) {
  $job = $job | 0;
  $e = $e | 0;
  var $clip = 0, $call = 0, $tobool = 0, $head = 0, $call1 = 0, $tobool3 = 0, $tail = 0, $0 = 0, $name = 0, $1 = 0, $call4 = 0, $2 = 0, $name6 = 0, $3 = 0, $call7 = 0, $add8 = 0, $add9 = 0, $call10 = 0, $4 = 0, $name12 = 0, $5 = 0, $call13 = 0, $6 = 0, $graph15 = 0, $7 = 0, $8 = 0, $9 = 0, $and = 0, $tobool16 = 0, $strlen = 0, $endptr = 0, $10 = 0, $name21 = 0, $11 = 0, $call22 = 0, $12 = 0, $13 = 0, $call23 = 0, $14 = 0, $tobool24 = 0, $15 = 0, $call27 = 0, $16 = 0, $tobool29 = 0, $call31 = 0, $17 = 0, $tobool3231 = 0, $18 = 0, $incdec_ptr32 = 0, $19 = 0, $cmp = 0, $incdec_ptr = 0, $20 = 0, $tobool32 = 0, $call37 = 0, $tobool38 = 0, $styles_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $clip = $job + 256 | 0;
    $call = _edge_in_box($e, $clip) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $e + 12 | 0;
    $call1 = _edge_in_layer($job, $e) | 0;
    $tobool3 = $call1 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 15;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $name = $0 + 12 | 0;
    $1 = HEAP32[$name >> 2] | 0;
    $call4 = _strlen($1 | 0) | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $name6 = $2 + 12 | 0;
    $3 = HEAP32[$name6 >> 2] | 0;
    $call7 = _strlen($3 | 0) | 0;
    $add8 = $call4 + 3 | 0;
    $add9 = $add8 + $call7 | 0;
    $call10 = _malloc($add9) | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $name12 = $4 + 12 | 0;
    $5 = HEAP32[$name12 >> 2] | 0;
    $call13 = _strcpy($call10 | 0, $5 | 0) | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $graph15 = $6 + 20 | 0;
    $7 = HEAP32[$graph15 >> 2] | 0;
    $8 = $7;
    $9 = HEAP32[$8 >> 2] | 0;
    $and = $9 & 16;
    $tobool16 = ($and | 0) == 0;
    $strlen = _strlen($call10 | 0) | 0;
    $endptr = $call10 + $strlen | 0;
    if ($tobool16) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP8[$endptr] = HEAP8[102616] | 0;
    HEAP8[$endptr + 1 | 0] = HEAP8[102617 | 0] | 0;
    HEAP8[$endptr + 2 | 0] = HEAP8[102618 | 0] | 0;
    label = 7;
    break;
   case 6:
    HEAP8[$endptr] = HEAP8[102232] | 0;
    HEAP8[$endptr + 1 | 0] = HEAP8[102233 | 0] | 0;
    HEAP8[$endptr + 2 | 0] = HEAP8[102234 | 0] | 0;
    label = 7;
    break;
   case 7:
    $10 = HEAP32[$head >> 2] | 0;
    $name21 = $10 + 12 | 0;
    $11 = HEAP32[$name21 >> 2] | 0;
    $call22 = _strcat($call10 | 0, $11 | 0) | 0;
    _gvrender_comment($job, $call10);
    _free($call10);
    $12 = $e | 0;
    $13 = HEAP32[41956] | 0;
    $call23 = _late_string($12, $13, 136112) | 0;
    $14 = HEAP8[$call23] | 0;
    $tobool24 = $14 << 24 >> 24 == 0;
    if ($tobool24) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _gvrender_comment($job, $call23);
    label = 9;
    break;
   case 9:
    $15 = HEAP32[41904] | 0;
    $call27 = _late_string($12, $15, 136112) | 0;
    $16 = HEAP8[$call27] | 0;
    $tobool29 = $16 << 24 >> 24 == 0;
    if ($tobool29) {
      $styles_0 = 0;
      label = 14;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call31 = _parse_style($call27) | 0;
    $17 = HEAP32[1820] | 0;
    $tobool3231 = ($17 | 0) == 0;
    if ($tobool3231) {
      $styles_0 = 7280;
      label = 14;
      break;
    } else {
      $incdec_ptr32 = 7284;
      $18 = $17;
      label = 11;
      break;
    }
   case 11:
    $19 = HEAP8[$18] | 0;
    $cmp = $19 << 24 >> 24 == 105;
    if ($cmp) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $incdec_ptr = $incdec_ptr32 + 4 | 0;
    $20 = HEAP32[$incdec_ptr32 >> 2] | 0;
    $tobool32 = ($20 | 0) == 0;
    if ($tobool32) {
      $styles_0 = 7280;
      label = 14;
      break;
    } else {
      $incdec_ptr32 = $incdec_ptr;
      $18 = $20;
      label = 11;
      break;
    }
   case 13:
    $call37 = _strcmp($18 | 0, 101752) | 0;
    $tobool38 = ($call37 | 0) == 0;
    if ($tobool38) {
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 14:
    _emit_begin_edge($job, $e, $styles_0);
    _emit_edge_graphics($job, $e, $styles_0);
    _emit_end_edge($job);
    label = 15;
    break;
   case 15:
    return;
  }
}
function _emit_end_cluster($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  _gvrender_end_cluster($job, 0);
  _pop_obj_state($job);
  return;
}
function _parse_style($s) {
  $s = $s | 0;
  var $buf = 0, $p = 0, $xb = 0, $_b = 0, $arraydecay = 0, $ptr = 0, $eptr = 0, $buf34 = 0, $fun_0_ph = 0, $in_parens_0_ph = 0, $in_parens_0 = 0, $call = 0, $tobool1 = 0, $call3 = 0, $cmp6 = 0, $call9 = 0, $cmp12 = 0, $cmp15 = 0, $call18 = 0, $arrayidx = 0, $0 = 0, $1 = 0, $cmp20 = 0, $call22 = 0, $2 = 0, $incdec_ptr = 0, $3 = 0, $inc = 0, $arrayidx23 = 0, $fun_1 = 0, $4 = 0, $5 = 0, $cmp25 = 0, $call28 = 0, $6 = 0, $7 = 0, $call36 = 0, $8 = 0, $9 = 0, $cmp37 = 0, $call40 = 0, $10 = 0, $incdec_ptr44 = 0, $tobool45 = 0, $call47 = 0, $arrayidx49 = 0, $11 = 0, $12 = 0, $cmp50 = 0, $call53 = 0, $13 = 0, $14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 152 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $p = __stackBase__ + 128 | 0;
    $xb = __stackBase__ + 136 | 0;
    $_b = HEAP8[7536] | 0;
    if ($_b) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _agxbinit(4840, 128, 9008);
    HEAP8[7536] = 1;
    label = 4;
    break;
   case 4:
    $arraydecay = $buf | 0;
    _agxbinit($xb, 128, $arraydecay);
    HEAP32[$p >> 2] = $s;
    $ptr = $xb + 4 | 0;
    $eptr = $xb + 8 | 0;
    $buf34 = $xb | 0;
    $in_parens_0_ph = 0;
    $fun_0_ph = 0;
    label = 5;
    break;
   case 5:
    $in_parens_0 = $in_parens_0_ph;
    label = 6;
    break;
   case 6:
    $call = _style_token($p, $xb) | 0;
    if (($call | 0) == 40) {
      label = 7;
      break;
    } else if (($call | 0) == 41) {
      label = 9;
      break;
    } else if (($call | 0) == 0) {
      label = 22;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $tobool1 = $in_parens_0 << 24 >> 24 == 0;
    if ($tobool1) {
      $in_parens_0 = 1;
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call3 = _agerr(1, 116624, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    HEAP32[1820] = 0;
    _agxbfree($xb);
    label = 27;
    break;
   case 9:
    $cmp6 = $in_parens_0 << 24 >> 24 == 0;
    if ($cmp6) {
      label = 10;
      break;
    } else {
      $in_parens_0 = 0;
      label = 6;
      break;
    }
   case 10:
    $call9 = _agerr(1, 116144, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    HEAP32[1820] = 0;
    _agxbfree($xb);
    label = 27;
    break;
   case 11:
    $cmp12 = $in_parens_0 << 24 >> 24 == 0;
    if ($cmp12) {
      label = 12;
      break;
    } else {
      $fun_1 = $fun_0_ph;
      label = 17;
      break;
    }
   case 12:
    $cmp15 = ($fun_0_ph | 0) == 63;
    if ($cmp15) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $call18 = _agerr(0, 115648, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    $arrayidx = 7280 + ($fun_0_ph << 2) | 0;
    HEAP32[$arrayidx >> 2] = 0;
    _agxbfree($xb);
    label = 27;
    break;
   case 14:
    $0 = HEAP32[1211] | 0;
    $1 = HEAP32[1212] | 0;
    $cmp20 = $0 >>> 0 < $1 >>> 0;
    if ($cmp20) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call22 = _agxbmore(4840, 1) | 0;
    label = 16;
    break;
   case 16:
    $2 = HEAP32[1211] | 0;
    $incdec_ptr = $2 + 1 | 0;
    HEAP32[1211] = $incdec_ptr;
    HEAP8[$2] = 0;
    $3 = HEAP32[1211] | 0;
    $inc = $fun_0_ph + 1 | 0;
    $arrayidx23 = 7280 + ($fun_0_ph << 2) | 0;
    HEAP32[$arrayidx23 >> 2] = $3;
    $fun_1 = $inc;
    label = 17;
    break;
   case 17:
    $4 = HEAP32[$ptr >> 2] | 0;
    $5 = HEAP32[$eptr >> 2] | 0;
    $cmp25 = $4 >>> 0 < $5 >>> 0;
    if ($cmp25) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call28 = _agxbmore($xb, 1) | 0;
    label = 19;
    break;
   case 19:
    $6 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$6] = 0;
    $7 = HEAP32[$buf34 >> 2] | 0;
    HEAP32[$ptr >> 2] = $7;
    $call36 = _agxbput(4840, $7) | 0;
    $8 = HEAP32[1211] | 0;
    $9 = HEAP32[1212] | 0;
    $cmp37 = $8 >>> 0 < $9 >>> 0;
    if ($cmp37) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call40 = _agxbmore(4840, 1) | 0;
    label = 21;
    break;
   case 21:
    $10 = HEAP32[1211] | 0;
    $incdec_ptr44 = $10 + 1 | 0;
    HEAP32[1211] = $incdec_ptr44;
    HEAP8[$10] = 0;
    $in_parens_0_ph = $in_parens_0;
    $fun_0_ph = $fun_1;
    label = 5;
    break;
   case 22:
    $tobool45 = $in_parens_0 << 24 >> 24 == 0;
    if ($tobool45) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $call47 = _agerr(1, 115096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    HEAP32[1820] = 0;
    _agxbfree($xb);
    label = 27;
    break;
   case 24:
    $arrayidx49 = 7280 + ($fun_0_ph << 2) | 0;
    HEAP32[$arrayidx49 >> 2] = 0;
    _agxbfree($xb);
    $11 = HEAP32[1211] | 0;
    $12 = HEAP32[1212] | 0;
    $cmp50 = $11 >>> 0 < $12 >>> 0;
    if ($cmp50) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $call53 = _agxbmore(4840, 1) | 0;
    label = 26;
    break;
   case 26:
    $13 = HEAP32[1211] | 0;
    HEAP8[$13] = 0;
    $14 = HEAP32[1210] | 0;
    HEAP32[1211] = $14;
    label = 27;
    break;
   case 27:
    STACKTOP = __stackBase__;
    return 7280;
  }
  return 0;
}
function _style_token($s, $xb) {
  $s = $s | 0;
  $xb = $xb | 0;
  var $0 = 0, $1 = 0, $tobool16 = 0, $2 = 0, $p_017 = 0, $conv = 0, $call = 0, $tobool2 = 0, $3 = 0, $cmp = 0, $incdec_ptr = 0, $4 = 0, $tobool = 0, $p_0_lcssa = 0, $5 = 0, $conv5 = 0, $6 = 0, $conv1012 = 0, $call1113 = 0, $lnot14 = 0, $ptr = 0, $eptr = 0, $incdec_ptr7 = 0, $7 = 0, $conv8 = 0, $8 = 0, $p_115 = 0, $9 = 0, $10 = 0, $cmp14 = 0, $call16 = 0, $11 = 0, $incdec_ptr18 = 0, $incdec_ptr20 = 0, $12 = 0, $conv10 = 0, $call11 = 0, $lnot = 0, $token_0 = 0, $p_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$s >> 2] | 0;
    $1 = HEAP8[$0] | 0;
    $tobool16 = $1 << 24 >> 24 == 0;
    if ($tobool16) {
      $p_0_lcssa = $0;
      label = 6;
      break;
    } else {
      $p_017 = $0;
      $2 = $1;
      label = 3;
      break;
    }
   case 3:
    $conv = $2 << 24 >> 24;
    $call = _isspace($conv | 0) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $3 = HEAP8[$p_017] | 0;
    $cmp = $3 << 24 >> 24 == 44;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $p_0_lcssa = $p_017;
      label = 6;
      break;
    }
   case 5:
    $incdec_ptr = $p_017 + 1 | 0;
    $4 = HEAP8[$incdec_ptr] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    if ($tobool) {
      $p_0_lcssa = $incdec_ptr;
      label = 6;
      break;
    } else {
      $p_017 = $incdec_ptr;
      $2 = $4;
      label = 3;
      break;
    }
   case 6:
    $5 = HEAP8[$p_0_lcssa] | 0;
    $conv5 = $5 << 24 >> 24;
    if (($conv5 | 0) == 40 | ($conv5 | 0) == 41) {
      label = 9;
      break;
    } else if (($conv5 | 0) == 0) {
      $p_2 = $p_0_lcssa;
      $token_0 = 0;
      label = 13;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $6 = HEAP8[$p_0_lcssa] | 0;
    $conv1012 = $6 << 24 >> 24;
    $call1113 = _is_style_delim($conv1012) | 0;
    $lnot14 = $call1113 << 24 >> 24 == 0;
    if ($lnot14) {
      label = 8;
      break;
    } else {
      $p_2 = $p_0_lcssa;
      $token_0 = 1;
      label = 13;
      break;
    }
   case 8:
    $ptr = $xb + 4 | 0;
    $eptr = $xb + 8 | 0;
    $p_115 = $p_0_lcssa;
    $8 = $6;
    label = 10;
    break;
   case 9:
    $incdec_ptr7 = $p_0_lcssa + 1 | 0;
    $7 = HEAP8[$p_0_lcssa] | 0;
    $conv8 = $7 << 24 >> 24;
    $p_2 = $incdec_ptr7;
    $token_0 = $conv8;
    label = 13;
    break;
   case 10:
    $9 = HEAP32[$ptr >> 2] | 0;
    $10 = HEAP32[$eptr >> 2] | 0;
    $cmp14 = $9 >>> 0 < $10 >>> 0;
    if ($cmp14) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call16 = _agxbmore($xb, 1) | 0;
    label = 12;
    break;
   case 12:
    $11 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr18 = $11 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr18;
    HEAP8[$11] = $8;
    $incdec_ptr20 = $p_115 + 1 | 0;
    $12 = HEAP8[$incdec_ptr20] | 0;
    $conv10 = $12 << 24 >> 24;
    $call11 = _is_style_delim($conv10) | 0;
    $lnot = $call11 << 24 >> 24 == 0;
    if ($lnot) {
      $p_115 = $incdec_ptr20;
      $8 = $12;
      label = 10;
      break;
    } else {
      $p_2 = $incdec_ptr20;
      $token_0 = 1;
      label = 13;
      break;
    }
   case 13:
    HEAP32[$s >> 2] = $p_2;
    return $token_0 | 0;
  }
  return 0;
}
function _gv_fixLocale($set) {
  $set = $set | 0;
  var $tobool = 0, $0 = 0, $inc = 0, $cmp = 0, $call = 0, $call2 = 0, $call3 = 0, $cmp4 = 0, $dec = 0, $cmp6 = 0, $1 = 0, $call8 = 0, $2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($set | 0) == 0;
    $0 = HEAP32[4042] | 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $inc = $0 + 1 | 0;
    HEAP32[4042] = $inc;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $call = _setlocale(4, 0) | 0;
    $call2 = _strdup($call | 0) | 0;
    HEAP32[4040] = $call2;
    $call3 = _setlocale(4, 114568) | 0;
    label = 8;
    break;
   case 5:
    $cmp4 = ($0 | 0) > 0;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $dec = $0 - 1 | 0;
    HEAP32[4042] = $dec;
    $cmp6 = ($dec | 0) == 0;
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $1 = HEAP32[4040] | 0;
    $call8 = _setlocale(4, $1 | 0) | 0;
    $2 = HEAP32[4040] | 0;
    _free($2);
    label = 8;
    break;
   case 8:
    return;
  }
}
function _gvRenderJobs($gvc, $g) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  var $drawing = 0, $0 = 0, $tobool = 0, $call = 0, $keybindings = 0, $1 = 0, $numkeys = 0, $call1 = 0, $tobool257 = 0, $gvg = 0, $common = 0, $type = 0, $active_jobs = 0, $viewNum = 0, $job_058 = 0, $2 = 0, $tobool3 = 0, $input_filename = 0, $3 = 0, $input_filename6 = 0, $4 = 0, $graph_index = 0, $5 = 0, $graph_index8 = 0, $input_filename9 = 0, $graph_index10 = 0, $common12 = 0, $6 = 0, $layout_type = 0, $7 = 0, $tobool15 = 0, $call17 = 0, $output_langname = 0, $8 = 0, $call19 = 0, $output_lang = 0, $9 = 0, $call23 = 0, $flags = 0, $10 = 0, $or = 0, $flags27 = 0, $11 = 0, $or28 = 0, $call29 = 0, $flags30 = 0, $12 = 0, $or31 = 0, $13 = 0, $tobool32 = 0, $flags34 = 0, $14 = 0, $and = 0, $tobool35 = 0, $15 = 0, $output_langname37 = 0, $16 = 0, $call38 = 0, $tobool39 = 0, $_pr = 0, $tobool46 = 0, $next_active = 0, $17 = 0, $output_file = 0, $18 = 0, $output_file48 = 0, $call50 = 0, $tobool51 = 0, $next_active56 = 0, $callbacks = 0, $flags57 = 0, $19 = 0, $and58 = 0, $tobool59 = 0, $20 = 0, $21 = 0, $show_boxes = 0, $call63 = 0, $tobool2 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $drawing = $g + 48 | 0;
    $0 = HEAP32[$drawing >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agerr(1, 113984, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $retval_0 = -1;
    label = 30;
    break;
   case 4:
    _init_bb($g);
    _init_gvc($gvc, $g);
    _init_layering($gvc, $g);
    $keybindings = $gvc + 104 | 0;
    HEAP32[$keybindings >> 2] = 15480;
    $1 = HEAP32[3868] | 0;
    $numkeys = $gvc + 108 | 0;
    HEAP32[$numkeys >> 2] = $1;
    _gv_fixLocale(1);
    $call1 = _gvjobs_first($gvc) | 0;
    $tobool257 = ($call1 | 0) == 0;
    if ($tobool257) {
      label = 29;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $gvg = $gvc + 56 | 0;
    $common = $gvc | 0;
    $type = $gvc + 156 | 0;
    $active_jobs = $gvc + 164 | 0;
    $viewNum = $gvc + 28 | 0;
    $job_058 = $call1;
    label = 6;
    break;
   case 6:
    $2 = HEAP32[$gvg >> 2] | 0;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $input_filename = $2 + 8 | 0;
    $3 = HEAP32[$input_filename >> 2] | 0;
    $input_filename6 = $job_058 + 20 | 0;
    HEAP32[$input_filename6 >> 2] = $3;
    $4 = HEAP32[$gvg >> 2] | 0;
    $graph_index = $4 + 12 | 0;
    $5 = HEAP32[$graph_index >> 2] | 0;
    $graph_index8 = $job_058 + 24 | 0;
    HEAP32[$graph_index8 >> 2] = $5;
    label = 9;
    break;
   case 8:
    $input_filename9 = $job_058 + 20 | 0;
    HEAP32[$input_filename9 >> 2] = 0;
    $graph_index10 = $job_058 + 24 | 0;
    HEAP32[$graph_index10 >> 2] = 0;
    label = 9;
    break;
   case 9:
    $common12 = $job_058 + 12 | 0;
    HEAP32[$common12 >> 2] = $common;
    $6 = HEAP32[$type >> 2] | 0;
    $layout_type = $job_058 + 28 | 0;
    HEAP32[$layout_type >> 2] = $6;
    $7 = HEAP32[$drawing >> 2] | 0;
    $tobool15 = ($7 | 0) == 0;
    if ($tobool15) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $call17 = _agerr(1, 113528, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _gv_fixLocale(0);
    $retval_0 = -1;
    label = 30;
    break;
   case 11:
    $output_langname = $job_058 + 52 | 0;
    $8 = HEAP32[$output_langname >> 2] | 0;
    $call19 = _gvrender_select($job_058, $8) | 0;
    $output_lang = $job_058 + 56 | 0;
    HEAP32[$output_lang >> 2] = $call19;
    if (($call19 | 0) == 999) {
      label = 12;
      break;
    } else if (($call19 | 0) == 21) {
      label = 13;
      break;
    } else if (($call19 | 0) == 24) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 12:
    $9 = HEAP32[$output_langname >> 2] | 0;
    $call23 = _agerr(1, 113096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $9, tempInt) | 0) | 0;
    _gv_fixLocale(0);
    $retval_0 = -1;
    label = 30;
    break;
   case 13:
    $flags = $job_058 + 152 | 0;
    $10 = HEAP32[$flags >> 2] | 0;
    $or = $10 | 1;
    HEAP32[$flags >> 2] = $or;
    label = 16;
    break;
   case 14:
    $flags27 = $job_058 + 152 | 0;
    $11 = HEAP32[$flags27 >> 2] | 0;
    $or28 = $11 | 520;
    HEAP32[$flags27 >> 2] = $or28;
    label = 16;
    break;
   case 15:
    $call29 = _chkOrder($g) | 0;
    $flags30 = $job_058 + 152 | 0;
    $12 = HEAP32[$flags30 >> 2] | 0;
    $or31 = $12 | $call29;
    HEAP32[$flags30 >> 2] = $or31;
    label = 16;
    break;
   case 16:
    $13 = HEAP32[$active_jobs >> 2] | 0;
    $tobool32 = ($13 | 0) == 0;
    if ($tobool32) {
      label = 20;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $flags34 = $13 + 152 | 0;
    $14 = HEAP32[$flags34 >> 2] | 0;
    $and = $14 & 32;
    $tobool35 = ($and | 0) == 0;
    if ($tobool35) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $15 = HEAP32[$output_langname >> 2] | 0;
    $output_langname37 = $13 + 52 | 0;
    $16 = HEAP32[$output_langname37 >> 2] | 0;
    $call38 = _strcmp($15 | 0, $16 | 0) | 0;
    $tobool39 = ($call38 | 0) == 0;
    if ($tobool39) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _gvrender_end_job($13);
    HEAP32[$active_jobs >> 2] = 0;
    HEAP32[$viewNum >> 2] = 0;
    HEAP32[4044] = 0;
    label = 23;
    break;
   case 20:
    HEAP32[4044] = 0;
    label = 23;
    break;
   case 21:
    $_pr = HEAP32[4044] | 0;
    $tobool46 = ($_pr | 0) == 0;
    if ($tobool46) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $next_active = $_pr + 8 | 0;
    HEAP32[$next_active >> 2] = $job_058;
    $17 = HEAP32[4044] | 0;
    $output_file = $17 + 36 | 0;
    $18 = HEAP32[$output_file >> 2] | 0;
    $output_file48 = $job_058 + 36 | 0;
    HEAP32[$output_file48 >> 2] = $18;
    label = 25;
    break;
   case 23:
    $call50 = _gvrender_begin_job($job_058) | 0;
    $tobool51 = ($call50 | 0) == 0;
    if ($tobool51) {
      label = 24;
      break;
    } else {
      label = 28;
      break;
    }
   case 24:
    HEAP32[$active_jobs >> 2] = $job_058;
    label = 25;
    break;
   case 25:
    $next_active56 = $job_058 + 8 | 0;
    HEAP32[$next_active56 >> 2] = 0;
    $callbacks = $job_058 + 104 | 0;
    HEAP32[$callbacks >> 2] = 16120;
    _init_job_pad($job_058);
    _init_job_margin($job_058);
    _init_job_dpi($job_058, $g);
    _init_job_viewport($job_058, $g);
    _init_job_pagination($job_058, $g);
    $flags57 = $job_058 + 152 | 0;
    $19 = HEAP32[$flags57 >> 2] | 0;
    $and58 = $19 & 128;
    $tobool59 = ($and58 | 0) == 0;
    if ($tobool59) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $20 = HEAP32[41362] | 0;
    $21 = HEAP32[$common12 >> 2] | 0;
    $show_boxes = $21 + 20 | 0;
    HEAP32[$show_boxes >> 2] = $20;
    _emit_graph($job_058, $g);
    label = 27;
    break;
   case 27:
    HEAP32[4044] = $job_058;
    label = 28;
    break;
   case 28:
    $call63 = _gvjobs_next($gvc) | 0;
    $tobool2 = ($call63 | 0) == 0;
    if ($tobool2) {
      label = 29;
      break;
    } else {
      $job_058 = $call63;
      label = 6;
      break;
    }
   case 29:
    _gv_fixLocale(0);
    $retval_0 = 0;
    label = 30;
    break;
   case 30:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _init_bb($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool5 = 0, $n_0_in6 = 0, $n_0 = 0, $call1 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool5 = ($call | 0) == 0;
    if ($tobool5) {
      label = 4;
      break;
    } else {
      $n_0_in6 = $call;
      label = 3;
      break;
    }
   case 3:
    $n_0 = $n_0_in6;
    _init_bb_node($g, $n_0);
    $call1 = _agnxtnode($0, $n_0_in6) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_0_in6 = $call1;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _init_gvc($gvc, $g) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  var $xf = 0, $yf = 0, $g1 = 0, $graph_sets_margin = 0, $0 = 0, $call = 0, $tobool = 0, $call2 = 0, $cmp = 0, $1 = 0.0, $mul = 0.0, $y = 0, $x = 0, $cmp5 = 0, $2 = 0.0, $mul7 = 0.0, $graph_sets_pad = 0, $call13 = 0, $tobool14 = 0, $call16 = 0, $cmp17 = 0, $3 = 0.0, $mul19 = 0.0, $y20 = 0, $x22 = 0, $cmp23 = 0, $4 = 0.0, $mul25 = 0.0, $graph_sets_pageSize = 0, $pageSize = 0, $drawing = 0, $5 = 0, $page = 0, $6 = 0, $7 = 0, $8 = 0, $x35 = 0, $9 = 0.0, $cmp36 = 0, $y40 = 0, $10 = 0.0, $cmp41 = 0, $11 = 0, $landscape = 0, $12 = 0, $tobool47 = 0, $rotation = 0, $_ = 0, $pagedir = 0, $call51 = 0, $tobool52 = 0, $13 = 0, $tobool54 = 0, $bb = 0, $bb59 = 0, $14 = 0, $15 = 0, $root = 0, $16 = 0, $17 = 0, $call60 = 0, $18 = 0, $19 = 0, $call62 = 0, $proto = 0, $20 = 0, $n = 0, $21 = 0, $22 = 0, $23 = 0, $call63 = 0, $defaultfontname = 0, $24 = 0, $n65 = 0, $25 = 0, $26 = 0, $27 = 0, $call66 = 0.0, $defaultfontsize = 0, $defaultlinestyle = 0, $name = 0, $28 = 0, $graphname = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $xf = __stackBase__ | 0;
    $yf = __stackBase__ + 8 | 0;
    $g1 = $gvc + 128 | 0;
    HEAP32[$g1 >> 2] = $g;
    $graph_sets_margin = $gvc + 269 | 0;
    HEAP8[$graph_sets_margin] = 0;
    $0 = $g | 0;
    $call = _agget($0, 107616) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call2 = _sscanf($call | 0, 107216, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $xf, HEAP32[tempInt + 8 >> 2] = $yf, tempInt) | 0) | 0;
    $cmp = ($call2 | 0) > 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $1 = +HEAPF64[$xf >> 3];
    $mul = $1 * 72.0;
    $y = $gvc + 184 | 0;
    HEAPF64[$y >> 3] = $mul;
    $x = $gvc + 176 | 0;
    HEAPF64[$x >> 3] = $mul;
    $cmp5 = ($call2 | 0) > 1;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $2 = +HEAPF64[$yf >> 3];
    $mul7 = $2 * 72.0;
    HEAPF64[$y >> 3] = $mul7;
    label = 6;
    break;
   case 6:
    HEAP8[$graph_sets_margin] = 1;
    label = 7;
    break;
   case 7:
    $graph_sets_pad = $gvc + 268 | 0;
    HEAP8[$graph_sets_pad] = 0;
    $call13 = _agget($0, 106880) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call16 = _sscanf($call13 | 0, 107216, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $xf, HEAP32[tempInt + 8 >> 2] = $yf, tempInt) | 0) | 0;
    $cmp17 = ($call16 | 0) > 0;
    if ($cmp17) {
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 9:
    $3 = +HEAPF64[$xf >> 3];
    $mul19 = $3 * 72.0;
    $y20 = $gvc + 200 | 0;
    HEAPF64[$y20 >> 3] = $mul19;
    $x22 = $gvc + 192 | 0;
    HEAPF64[$x22 >> 3] = $mul19;
    $cmp23 = ($call16 | 0) > 1;
    if ($cmp23) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $4 = +HEAPF64[$yf >> 3];
    $mul25 = $4 * 72.0;
    HEAPF64[$y20 >> 3] = $mul25;
    label = 11;
    break;
   case 11:
    HEAP8[$graph_sets_pad] = 1;
    label = 12;
    break;
   case 12:
    $graph_sets_pageSize = $gvc + 270 | 0;
    HEAP8[$graph_sets_pageSize] = 0;
    $pageSize = $gvc + 208 | 0;
    $drawing = $g + 48 | 0;
    $5 = HEAP32[$drawing >> 2] | 0;
    $page = $5 + 48 | 0;
    $6 = $pageSize;
    $7 = $page;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $8 = HEAP32[$drawing >> 2] | 0;
    $x35 = $8 + 48 | 0;
    $9 = +HEAPF64[$x35 >> 3];
    $cmp36 = $9 > .001;
    if ($cmp36) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $y40 = $8 + 56 | 0;
    $10 = +HEAPF64[$y40 >> 3];
    $cmp41 = $10 > .001;
    if ($cmp41) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP8[$graph_sets_pageSize] = 1;
    label = 15;
    break;
   case 15:
    $11 = HEAP32[$drawing >> 2] | 0;
    $landscape = $11 + 81 | 0;
    $12 = HEAP8[$landscape] | 0;
    $tobool47 = $12 << 24 >> 24 == 0;
    $rotation = $gvc + 264 | 0;
    $_ = $tobool47 ? 0 : 90;
    HEAP32[$rotation >> 2] = $_;
    $pagedir = $gvc + 168 | 0;
    HEAP32[$pagedir >> 2] = 106496;
    $call51 = _agget($0, 106088) | 0;
    $tobool52 = ($call51 | 0) == 0;
    if ($tobool52) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $13 = HEAP8[$call51] | 0;
    $tobool54 = $13 << 24 >> 24 == 0;
    if ($tobool54) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    HEAP32[$pagedir >> 2] = $call51;
    label = 18;
    break;
   case 18:
    $bb = $gvc + 232 | 0;
    $bb59 = $g + 56 | 0;
    $14 = $bb;
    $15 = $bb59;
    HEAP32[$14 >> 2] = HEAP32[$15 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$15 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$15 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$15 + 12 >> 2] | 0;
    HEAP32[$14 + 16 >> 2] = HEAP32[$15 + 16 >> 2] | 0;
    HEAP32[$14 + 20 >> 2] = HEAP32[$15 + 20 >> 2] | 0;
    HEAP32[$14 + 24 >> 2] = HEAP32[$15 + 24 >> 2] | 0;
    HEAP32[$14 + 28 >> 2] = HEAP32[$15 + 28 >> 2] | 0;
    $root = $g + 32 | 0;
    $16 = HEAP32[$root >> 2] | 0;
    $17 = $16 | 0;
    $call60 = _agfindattr($17, 105760) | 0;
    HEAP32[41862] = $call60;
    $18 = HEAP32[$root >> 2] | 0;
    $19 = $18 | 0;
    $call62 = _agfindattr($19, 105376) | 0;
    HEAP32[41864] = $call62;
    $proto = $g + 40 | 0;
    $20 = HEAP32[$proto >> 2] | 0;
    $n = $20 | 0;
    $21 = HEAP32[$n >> 2] | 0;
    $22 = $21 | 0;
    $23 = HEAP32[41598] | 0;
    $call63 = _late_nnstring($22, $23, 105056) | 0;
    $defaultfontname = $gvc + 288 | 0;
    HEAP32[$defaultfontname >> 2] = $call63;
    $24 = HEAP32[$proto >> 2] | 0;
    $n65 = $24 | 0;
    $25 = HEAP32[$n65 >> 2] | 0;
    $26 = $25 | 0;
    $27 = HEAP32[41596] | 0;
    $call66 = +_late_double($26, $27, 14.0, 1.0);
    $defaultfontsize = $gvc + 296 | 0;
    HEAPF64[$defaultfontsize >> 3] = $call66;
    $defaultlinestyle = $gvc + 304 | 0;
    HEAP32[$defaultlinestyle >> 2] = 21184;
    $name = $g + 12 | 0;
    $28 = HEAP32[$name >> 2] | 0;
    $graphname = $gvc + 160 | 0;
    HEAP32[$graphname >> 2] = $28;
    STACKTOP = __stackBase__;
    return;
  }
}
function _init_layering($gvc, $g) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  var $layers = 0, $0 = 0, $tobool = 0, $layerIDs = 0, $1 = 0, $tobool3 = 0, $2 = 0, $3 = 0, $call = 0, $cmp = 0, $call9 = 0, $numLayers = 0, $numLayers11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $layers = $gvc + 276 | 0;
    $0 = HEAP32[$layers >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _free($0);
    HEAP32[$layers >> 2] = 0;
    label = 4;
    break;
   case 4:
    $layerIDs = $gvc + 280 | 0;
    $1 = HEAP32[$layerIDs >> 2] | 0;
    $tobool3 = ($1 | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = $1;
    _free($2);
    HEAP32[$layerIDs >> 2] = 0;
    label = 6;
    break;
   case 6:
    $3 = $g | 0;
    $call = _agget($3, 109136) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call9 = _parse_layers($gvc, $g, $call) | 0;
    $numLayers = $gvc + 284 | 0;
    HEAP32[$numLayers >> 2] = $call9;
    label = 9;
    break;
   case 8:
    HEAP32[$layerIDs >> 2] = 0;
    $numLayers11 = $gvc + 284 | 0;
    HEAP32[$numLayers11 >> 2] = 1;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _chkOrder($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $add_ptr = 0, $call2 = 0, $tobool3 = 0, $add_ptr9 = 0, $call10 = 0, $tobool11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 110256) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    if (($1 << 24 >> 24 | 0) == 110) {
      label = 4;
      break;
    } else if (($1 << 24 >> 24 | 0) == 101) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $add_ptr = $call + 1 | 0;
    $call2 = _strcmp($add_ptr | 0, 109848) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      $retval_0 = 1;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $add_ptr9 = $call + 1 | 0;
    $call10 = _strcmp($add_ptr9 | 0, 109496) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      $retval_0 = 16;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $retval_0 = 0;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _init_job_pad($job) {
  $job = $job | 0;
  var $gvc1 = 0, $0 = 0, $graph_sets_pad = 0, $1 = 0, $tobool = 0, $pad = 0, $pad2 = 0, $2 = 0, $3 = 0, $output_lang = 0, $4 = 0, $cond = 0, $features = 0, $5 = 0, $default_pad = 0, $6 = 0.0, $y = 0, $x = 0, $y6 = 0, $x8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $graph_sets_pad = $0 + 268 | 0;
    $1 = HEAP8[$graph_sets_pad] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $pad = $job + 240 | 0;
    $pad2 = $0 + 192 | 0;
    $2 = $pad;
    $3 = $pad2;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    label = 7;
    break;
   case 4:
    $output_lang = $job + 56 | 0;
    $4 = HEAP32[$output_lang >> 2] | 0;
    $cond = ($4 | 0) == 300;
    if ($cond) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $features = $job + 68 | 0;
    $5 = HEAP32[$features >> 2] | 0;
    $default_pad = $5 + 8 | 0;
    $6 = +HEAPF64[$default_pad >> 3];
    $y = $job + 248 | 0;
    HEAPF64[$y >> 3] = $6;
    $x = $job + 240 | 0;
    HEAPF64[$x >> 3] = $6;
    label = 7;
    break;
   case 6:
    $y6 = $job + 248 | 0;
    HEAPF64[$y6 >> 3] = 4.0;
    $x8 = $job + 240 | 0;
    HEAPF64[$x8 >> 3] = 4.0;
    label = 7;
    break;
   case 7:
    return;
  }
}
function _init_job_margin($job) {
  $job = $job | 0;
  var $gvc1 = 0, $0 = 0, $graph_sets_margin = 0, $1 = 0, $tobool = 0, $margin = 0, $margin2 = 0, $2 = 0, $3 = 0, $output_lang = 0, $4 = 0, $margin3 = 0, $features = 0, $5 = 0, $default_margin = 0, $6 = 0, $7 = 0, $y = 0, $x = 0, $x10 = 0, $8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $graph_sets_margin = $0 + 269 | 0;
    $1 = HEAP8[$graph_sets_margin] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $margin = $job + 416 | 0;
    $margin2 = $0 + 176 | 0;
    $2 = $margin;
    $3 = $margin2;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    label = 8;
    break;
   case 4:
    $output_lang = $job + 56 | 0;
    $4 = HEAP32[$output_lang >> 2] | 0;
    if (($4 | 0) == 300) {
      label = 5;
      break;
    } else if (($4 | 0) == 2 | ($4 | 0) == 3 | ($4 | 0) == 4 | ($4 | 0) == 22 | ($4 | 0) == 21 | ($4 | 0) == 30) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $margin3 = $job + 416 | 0;
    $features = $job + 84 | 0;
    $5 = HEAP32[$features >> 2] | 0;
    $default_margin = $5 + 8 | 0;
    $6 = $margin3;
    $7 = $default_margin;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    label = 8;
    break;
   case 6:
    $y = $job + 424 | 0;
    HEAPF64[$y >> 3] = 36.0;
    $x = $job + 416 | 0;
    HEAPF64[$x >> 3] = 36.0;
    label = 8;
    break;
   case 7:
    $x10 = $job + 416 | 0;
    $8 = $x10;
    _memset($8 | 0, 0, 16);
    label = 8;
    break;
   case 8:
    return;
  }
}
function _init_job_dpi($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $gvc = 0, $0 = 0, $active_jobs = 0, $1 = 0, $drawing = 0, $2 = 0, $dpi = 0, $3 = 0.0, $cmp = 0, $y = 0, $x = 0, $tobool = 0, $device_sets_dpi = 0, $4 = 0, $tobool6 = 0, $dpi8 = 0, $device_dpi = 0, $5 = 0, $6 = 0, $output_lang = 0, $7 = 0, $cond = 0, $dpi10 = 0, $features = 0, $8 = 0, $default_dpi = 0, $9 = 0, $10 = 0, $y12 = 0, $x14 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc = $job | 0;
    $0 = HEAP32[$gvc >> 2] | 0;
    $active_jobs = $0 + 164 | 0;
    $1 = HEAP32[$active_jobs >> 2] | 0;
    $drawing = $g + 48 | 0;
    $2 = HEAP32[$drawing >> 2] | 0;
    $dpi = $2 + 24 | 0;
    $3 = +HEAPF64[$dpi >> 3];
    $cmp = $3 != 0.0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $y = $job + 440 | 0;
    HEAPF64[$y >> 3] = $3;
    $x = $job + 432 | 0;
    HEAPF64[$x >> 3] = $3;
    label = 10;
    break;
   case 4:
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $device_sets_dpi = $1 + 128 | 0;
    $4 = HEAP8[$device_sets_dpi] | 0;
    $tobool6 = $4 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $dpi8 = $job + 432 | 0;
    $device_dpi = $1 + 112 | 0;
    $5 = $dpi8;
    $6 = $device_dpi;
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    label = 10;
    break;
   case 7:
    $output_lang = $job + 56 | 0;
    $7 = HEAP32[$output_lang >> 2] | 0;
    $cond = ($7 | 0) == 300;
    $dpi10 = $job + 432 | 0;
    if ($cond) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $features = $job + 84 | 0;
    $8 = HEAP32[$features >> 2] | 0;
    $default_dpi = $8 + 40 | 0;
    $9 = $dpi10;
    $10 = $default_dpi;
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    label = 10;
    break;
   case 9:
    $y12 = $job + 440 | 0;
    HEAPF64[$y12 >> 3] = 96.0;
    $x14 = $dpi10 | 0;
    HEAPF64[$x14 >> 3] = 96.0;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _init_job_viewport($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $X = 0, $Y = 0, $Z = 0, $x = 0, $y = 0, $gvc1 = 0, $0 = 0, $UR_sroa_0_0__idx = 0, $UR_sroa_0_0_copyload = 0.0, $UR_sroa_1_8__idx33 = 0, $UR_sroa_1_8_copyload = 0.0, $LL_sroa_0_0__idx = 0, $LL_sroa_0_0_copyload = 0.0, $LL_sroa_1_8__idx36 = 0, $LL_sroa_1_8_copyload = 0.0, $x6 = 0, $1 = 0.0, $sub = 0.0, $x9 = 0, $y12 = 0, $2 = 0.0, $sub13 = 0.0, $y16 = 0, $3 = 0.0, $add = 0.0, $x22 = 0, $4 = 0.0, $add26 = 0.0, $y29 = 0, $5 = 0.0, $6 = 0.0, $sub36 = 0.0, $7 = 0.0, $sub44 = 0.0, $drawing = 0, $8 = 0, $x47 = 0, $9 = 0.0, $cmp = 0, $y51 = 0, $10 = 0.0, $cmp52 = 0, $cmp58 = 0, $cmp61 = 0, $or_cond = 0, $filled = 0, $11 = 0, $tobool = 0, $cmp68 = 0, $or_cond63 = 0, $cmp73 = 0, $or_cond64 = 0, $div = 0.0, $div80 = 0.0, $cmp81 = 0, $div_div80 = 0.0, $add92 = 0.0, $div93 = 0.0, $add96 = 0.0, $div97 = 0.0, $12 = 0, $rotation = 0, $13 = 0, $rotation99 = 0, $14 = 0.0, $mul = 0.0, $mul102 = 0.0, $15 = 0, $call = 0, $tobool103 = 0, $call105 = 0, $add106 = 0, $call107 = 0, $call108 = 0, $add109 = 0, $call110 = 0, $call111 = 0, $cmp112 = 0, $root = 0, $16 = 0, $17 = 0, $call115 = 0, $tobool116 = 0, $u118 = 0, $coord = 0, $x119 = 0, $18 = 0.0, $y122 = 0, $19 = 0, $20 = 0.0, $call124 = 0, $cmp125 = 0, $root128 = 0, $21 = 0, $22 = 0, $call129 = 0, $tobool130 = 0, $u132 = 0, $coord133 = 0, $x134 = 0, $23 = 0.0, $y137 = 0, $24 = 0, $25 = 0.0, $call140 = 0, $26 = 0.0, $x144 = 0, $27 = 0.0, $y146 = 0, $28 = 0.0, $zoom = 0, $29 = 0.0, $x147 = 0, $30 = 0.0, $y149 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $X = __stackBase__ | 0;
    $Y = __stackBase__ + 8 | 0;
    $Z = __stackBase__ + 16 | 0;
    $x = __stackBase__ + 24 | 0;
    $y = __stackBase__ + 32 | 0;
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $UR_sroa_0_0__idx = $0 + 248 | 0;
    $UR_sroa_0_0_copyload = +HEAPF64[$UR_sroa_0_0__idx >> 3];
    $UR_sroa_1_8__idx33 = $0 + 256 | 0;
    $UR_sroa_1_8_copyload = +HEAPF64[$UR_sroa_1_8__idx33 >> 3];
    $LL_sroa_0_0__idx = $0 + 232 | 0;
    $LL_sroa_0_0_copyload = +HEAPF64[$LL_sroa_0_0__idx >> 3];
    $LL_sroa_1_8__idx36 = $0 + 240 | 0;
    $LL_sroa_1_8_copyload = +HEAPF64[$LL_sroa_1_8__idx36 >> 3];
    $x6 = $job + 240 | 0;
    $1 = +HEAPF64[$x6 >> 3];
    $sub = $LL_sroa_0_0_copyload - $1;
    $x9 = $job + 208 | 0;
    HEAPF64[$x9 >> 3] = $sub;
    $y12 = $job + 248 | 0;
    $2 = +HEAPF64[$y12 >> 3];
    $sub13 = $LL_sroa_1_8_copyload - $2;
    $y16 = $job + 216 | 0;
    HEAPF64[$y16 >> 3] = $sub13;
    $3 = +HEAPF64[$x6 >> 3];
    $add = $UR_sroa_0_0_copyload + $3;
    $x22 = $job + 224 | 0;
    HEAPF64[$x22 >> 3] = $add;
    $4 = +HEAPF64[$y12 >> 3];
    $add26 = $UR_sroa_1_8_copyload + $4;
    $y29 = $job + 232 | 0;
    HEAPF64[$y29 >> 3] = $add26;
    $5 = +HEAPF64[$x22 >> 3];
    $6 = +HEAPF64[$x9 >> 3];
    $sub36 = $5 - $6;
    $7 = +HEAPF64[$y16 >> 3];
    $sub44 = $add26 - $7;
    HEAPF64[$Z >> 3] = 1.0;
    $drawing = $g + 48 | 0;
    $8 = HEAP32[$drawing >> 2] | 0;
    $x47 = $8 + 64 | 0;
    $9 = +HEAPF64[$x47 >> 3];
    $cmp = $9 > .001;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $y51 = $8 + 72 | 0;
    $10 = +HEAPF64[$y51 >> 3];
    $cmp52 = $10 > .001;
    if ($cmp52) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $cmp58 = $9 < $sub36;
    $cmp61 = $10 < $sub44;
    $or_cond = $cmp58 | $cmp61;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $filled = $8 + 80 | 0;
    $11 = HEAP8[$filled] | 0;
    $tobool = $11 << 24 >> 24 != 0;
    $cmp68 = $9 > $sub36;
    $or_cond63 = $tobool & $cmp68;
    $cmp73 = $10 > $sub44;
    $or_cond64 = $or_cond63 & $cmp73;
    if ($or_cond64) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $div = $9 / $sub36;
    $div80 = $10 / $sub44;
    $cmp81 = $div < $div80;
    $div_div80 = $cmp81 ? $div : $div80;
    HEAPF64[$Z >> 3] = $div_div80;
    label = 7;
    break;
   case 7:
    $add92 = $UR_sroa_0_0_copyload + $LL_sroa_0_0_copyload;
    $div93 = $add92 * .5;
    HEAPF64[$x >> 3] = $div93;
    $add96 = $UR_sroa_1_8_copyload + $LL_sroa_1_8_copyload;
    $div97 = $add96 * .5;
    HEAPF64[$y >> 3] = $div97;
    $12 = HEAP32[$gvc1 >> 2] | 0;
    $rotation = $12 + 264 | 0;
    $13 = HEAP32[$rotation >> 2] | 0;
    $rotation99 = $job + 360 | 0;
    HEAP32[$rotation99 >> 2] = $13;
    $14 = +HEAPF64[$Z >> 3];
    $mul = $sub36 * $14;
    HEAPF64[$X >> 3] = $mul;
    $mul102 = $sub44 * $14;
    HEAPF64[$Y >> 3] = $mul102;
    $15 = $g | 0;
    $call = _agget($15, 111960) | 0;
    $tobool103 = ($call | 0) == 0;
    if ($tobool103) {
      label = 16;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call105 = _strlen($call | 0) | 0;
    $add106 = $call105 + 1 | 0;
    $call107 = _malloc($add106) | 0;
    $call108 = _strlen($call | 0) | 0;
    $add109 = $call108 + 1 | 0;
    $call110 = _malloc($add109) | 0;
    $call111 = _sscanf($call | 0, 111496, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $X, HEAP32[tempInt + 8 >> 2] = $Y, HEAP32[tempInt + 16 >> 2] = $Z, HEAP32[tempInt + 24 >> 2] = $call107, tempInt) | 0) | 0;
    $cmp112 = ($call111 | 0) == 4;
    if ($cmp112) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $root = $g + 32 | 0;
    $16 = HEAP32[$root >> 2] | 0;
    $17 = $16;
    $call115 = _agfindnode($17, $call107) | 0;
    $tobool116 = ($call115 | 0) == 0;
    if ($tobool116) {
      label = 15;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $u118 = $call115 + 24 | 0;
    $coord = $u118 + 8 | 0;
    $x119 = $coord;
    $18 = +HEAPF64[$x119 >> 3];
    HEAPF64[$x >> 3] = $18;
    $y122 = $u118 + 16 | 0;
    $19 = $y122;
    $20 = +HEAPF64[$19 >> 3];
    HEAPF64[$y >> 3] = $20;
    label = 15;
    break;
   case 11:
    $call124 = _sscanf($call | 0, 111064, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = $X, HEAP32[tempInt + 8 >> 2] = $Y, HEAP32[tempInt + 16 >> 2] = $Z, HEAP32[tempInt + 24 >> 2] = $call107, HEAP32[tempInt + 32 >> 2] = $call110, tempInt) | 0) | 0;
    $cmp125 = ($call124 | 0) == 4;
    if ($cmp125) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $root128 = $g + 32 | 0;
    $21 = HEAP32[$root128 >> 2] | 0;
    $22 = $21;
    $call129 = _agfindnode($22, $call107) | 0;
    $tobool130 = ($call129 | 0) == 0;
    if ($tobool130) {
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $u132 = $call129 + 24 | 0;
    $coord133 = $u132 + 8 | 0;
    $x134 = $coord133;
    $23 = +HEAPF64[$x134 >> 3];
    HEAPF64[$x >> 3] = $23;
    $y137 = $u132 + 16 | 0;
    $24 = $y137;
    $25 = +HEAPF64[$24 >> 3];
    HEAPF64[$y >> 3] = $25;
    label = 15;
    break;
   case 14:
    $call140 = _sscanf($call | 0, 110680, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = $X, HEAP32[tempInt + 8 >> 2] = $Y, HEAP32[tempInt + 16 >> 2] = $Z, HEAP32[tempInt + 24 >> 2] = $x, HEAP32[tempInt + 32 >> 2] = $y, tempInt) | 0) | 0;
    label = 15;
    break;
   case 15:
    _free($call107);
    _free($call110);
    label = 16;
    break;
   case 16:
    $26 = +HEAPF64[$X >> 3];
    $x144 = $job + 368 | 0;
    HEAPF64[$x144 >> 3] = $26;
    $27 = +HEAPF64[$Y >> 3];
    $y146 = $job + 376 | 0;
    HEAPF64[$y146 >> 3] = $27;
    $28 = +HEAPF64[$Z >> 3];
    $zoom = $job + 352 | 0;
    HEAPF64[$zoom >> 3] = $28;
    $29 = +HEAPF64[$x >> 3];
    $x147 = $job + 336 | 0;
    HEAPF64[$x147 >> 3] = $29;
    $30 = +HEAPF64[$y >> 3];
    $y149 = $job + 344 | 0;
    HEAPF64[$y149 >> 3] = $30;
    STACKTOP = __stackBase__;
    return;
  }
}
function _exch_xyf($agg_result, $p) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  var $1 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $1 = +HEAPF64[$p >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p + 8 >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $1;
  STACKTOP = __stackBase__;
  return;
}
function _pagecode($agg_result, $job, $c) {
  $agg_result = $agg_result | 0;
  $job = $job | 0;
  $c = $c | 0;
  var $conv = 0, $y1 = 0, $0 = 0, $sub = 0, $y2 = 0, $x10 = 0, $1 = 0, $sub11 = 0, $x13 = 0, $rv_sroa_1_0 = 0, $rv_sroa_0_0 = 0, $rv_sroa_0_0__idx = 0, $rv_sroa_1_4__idx1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $conv = $c << 24 >> 24;
    if (($conv | 0) == 84) {
      label = 3;
      break;
    } else if (($conv | 0) == 66) {
      label = 4;
      break;
    } else if (($conv | 0) == 76) {
      label = 5;
      break;
    } else if (($conv | 0) == 82) {
      label = 6;
      break;
    } else {
      $rv_sroa_0_0 = 0;
      $rv_sroa_1_0 = 0;
      label = 7;
      break;
    }
   case 3:
    $y1 = $job + 168 | 0;
    $0 = HEAP32[$y1 >> 2] | 0;
    $sub = $0 - 1 | 0;
    $y2 = $job + 176 | 0;
    HEAP32[$y2 >> 2] = $sub;
    $rv_sroa_0_0 = 0;
    $rv_sroa_1_0 = -1;
    label = 7;
    break;
   case 4:
    $rv_sroa_0_0 = 0;
    $rv_sroa_1_0 = 1;
    label = 7;
    break;
   case 5:
    $rv_sroa_0_0 = 1;
    $rv_sroa_1_0 = 0;
    label = 7;
    break;
   case 6:
    $x10 = $job + 164 | 0;
    $1 = HEAP32[$x10 >> 2] | 0;
    $sub11 = $1 - 1 | 0;
    $x13 = $job + 172 | 0;
    HEAP32[$x13 >> 2] = $sub11;
    $rv_sroa_0_0 = -1;
    $rv_sroa_1_0 = 0;
    label = 7;
    break;
   case 7:
    $rv_sroa_0_0__idx = $agg_result | 0;
    HEAP32[$rv_sroa_0_0__idx >> 2] = $rv_sroa_0_0;
    $rv_sroa_1_4__idx1 = $agg_result + 4 | 0;
    HEAP32[$rv_sroa_1_4__idx1 >> 2] = $rv_sroa_1_0;
    return;
  }
}
function _exch_xy($agg_result, $p) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  var $1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  $1 = HEAP32[$p >> 2] | 0;
  HEAP32[$agg_result >> 2] = HEAP32[$p + 4 >> 2] | 0;
  HEAP32[$agg_result + 4 >> 2] = $1;
  STACKTOP = __stackBase__;
  return;
}
function _init_job_pagination($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $pageSize = 0, $imageSize = 0, $margin = 0, $centering = 0, $tmp = 0, $tmp219 = 0, $tmpcast = 0, $tmp223 = 0, $tmpcast85 = 0, $tmp241 = 0, $tmpcast88 = 0, $tmp243 = 0, $tmpcast89 = 0, $tmp275 = 0, $tmp276 = 0, $tmp277 = 0, $tmp278 = 0, $tmp456 = 0, $tmpcast86 = 0, $tmp461 = 0, $tmpcast87 = 0, $gvc1 = 0, $0 = 0, $1 = 0, $view = 0, $2 = 0, $3 = 0, $rotation = 0, $4 = 0, $tobool = 0, $5 = 0, $margin2 = 0, $6 = 0, $7 = 0, $graph_sets_pageSize = 0, $8 = 0, $tobool3 = 0, $flags = 0, $9 = 0, $and = 0, $tobool4 = 0, $x = 0, $10 = 0.0, $x7 = 0, $11 = 0.0, $mul = 0.0, $sub = 0.0, $x8 = 0, $y = 0, $12 = 0.0, $y10 = 0, $13 = 0.0, $mul11 = 0.0, $sub12 = 0.0, $y13 = 0, $14 = 0.0, $cmp = 0, $x17 = 0, $x18 = 0, $15 = 0.0, $div = 0.0, $conv20 = 0, $x22 = 0, $16 = 0.0, $conv26 = 0.0, $17 = 0.0, $mul28 = 0.0, $sub29 = 0.0, $cmp30 = 0, $inc = 0, $18 = 0.0, $cmp38 = 0, $y42 = 0, $y44 = 0, $19 = 0.0, $div46 = 0.0, $conv47 = 0, $y49 = 0, $20 = 0.0, $conv53 = 0.0, $21 = 0.0, $mul55 = 0.0, $sub56 = 0.0, $cmp57 = 0, $inc62 = 0, $x66 = 0, $22 = 0, $y68 = 0, $23 = 0, $mul69 = 0, $numPages = 0, $x70 = 0, $24 = 0.0, $25 = 0.0, $cmp72 = 0, $_ = 0.0, $y77 = 0, $26 = 0.0, $27 = 0.0, $cmp79 = 0, $cond86 = 0.0, $features = 0, $28 = 0, $tobool89 = 0, $features91 = 0, $29 = 0, $x92 = 0, $30 = 0.0, $x93 = 0, $31 = 0.0, $mul94 = 0.0, $sub95 = 0.0, $x96 = 0, $cmp98 = 0, $storemerge = 0.0, $32 = 0, $y106 = 0, $33 = 0.0, $y107 = 0, $34 = 0.0, $mul108 = 0.0, $sub109 = 0.0, $y110 = 0, $cmp112 = 0, $35 = 0, $numPages121 = 0, $y123 = 0, $x125 = 0, $x126 = 0, $36 = 0.0, $x127 = 0, $37 = 0.0, $cmp128 = 0, $y134 = 0, $38 = 0.0, $y135 = 0, $39 = 0.0, $cmp136 = 0, $x143 = 0, $40 = 0.0, $x144 = 0, $41 = 0.0, $mul145 = 0.0, $add = 0.0, $x146 = 0, $42 = 0.0, $mul147 = 0.0, $div148 = 0.0, $cmp149 = 0, $add160 = 0.0, $sub171 = 0.0, $add160_sink = 0.0, $conv161 = 0, $width = 0, $y175 = 0, $43 = 0.0, $y176 = 0, $44 = 0.0, $mul177 = 0.0, $add178 = 0.0, $y180 = 0, $45 = 0.0, $mul181 = 0.0, $div182 = 0.0, $cmp183 = 0, $add194 = 0.0, $sub205 = 0.0, $add194_sink = 0.0, $conv195 = 0, $height = 0, $pagesArrayMinor = 0, $x211 = 0, $pagesArrayMajor = 0, $x214 = 0, $x217 = 0, $pagedir = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $ld$0$0 = 0, $50$0 = 0, $ld$1$1 = 0, $50$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $51 = 0, $arrayidx222 = 0, $52 = 0, $53 = 0, $ld$4$0 = 0, $54$0 = 0, $ld$5$1 = 0, $54$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $55 = 0, $56 = 0, $add228 = 0, $ispos = 0, $neg = 0, $call = 0, $cmp229 = 0, $y212 = 0, $y209 = 0, $57 = 0, $58 = 0, $add235 = 0, $ispos90 = 0, $neg91 = 0, $call236 = 0, $cmp237 = 0, $ld$8$0 = 0, $59$0 = 0, $ld$9$1 = 0, $59$1 = 0, $st$10$0 = 0, $st$11$1 = 0, $ld$12$0 = 0, $60$0 = 0, $ld$13$1 = 0, $60$1 = 0, $st$14$0 = 0, $st$15$1 = 0, $61 = 0, $call245 = 0, $drawing = 0, $62 = 0, $centered = 0, $63 = 0, $tobool247 = 0, $64 = 0.0, $x250 = 0, $65 = 0.0, $cmp251 = 0, $sub256 = 0.0, $div257 = 0.0, $x258 = 0, $66 = 0.0, $y261 = 0, $67 = 0.0, $cmp262 = 0, $sub267 = 0.0, $div268 = 0.0, $y269 = 0, $68 = 0, $tobool273 = 0, $69 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0.0, $x281 = 0, $75 = 0.0, $add282 = 0.0, $x283 = 0, $76 = 0.0, $y285 = 0, $77 = 0.0, $add286 = 0.0, $y289 = 0, $78 = 0.0, $79 = 0.0, $add292 = 0.0, $x293 = 0, $80 = 0.0, $add294 = 0.0, $x296 = 0, $81 = 0.0, $82 = 0.0, $add299 = 0.0, $y300 = 0, $83 = 0.0, $add301 = 0.0, $y304 = 0, $84 = 0.0, $zoom = 0, $85 = 0.0, $div306 = 0.0, $x308 = 0, $86 = 0.0, $87 = 0.0, $div311 = 0.0, $y313 = 0, $88 = 0.0, $89 = 0.0, $mul319 = 0.0, $div320 = 0.0, $cmp321 = 0, $add331 = 0.0, $sub341 = 0.0, $add331_sink = 0.0, $conv332 = 0, $pageBoundingBox = 0, $LL345 = 0, $x346 = 0, $90 = 0.0, $91 = 0.0, $mul352 = 0.0, $div353 = 0.0, $cmp354 = 0, $add364 = 0.0, $sub374 = 0.0, $add364_sink = 0.0, $conv365 = 0, $y380 = 0, $92 = 0.0, $93 = 0.0, $mul386 = 0.0, $div387 = 0.0, $cmp388 = 0, $add398 = 0.0, $sub408 = 0.0, $add398_sink = 0.0, $conv399 = 0, $UR413 = 0, $x414 = 0, $94 = 0.0, $95 = 0.0, $mul420 = 0.0, $div421 = 0.0, $cmp422 = 0, $add432 = 0.0, $sub442 = 0.0, $add432_sink = 0.0, $conv433 = 0, $y448 = 0, $96 = 0, $tobool450 = 0, $97 = 0, $ld$16$0 = 0, $98$0 = 0, $ld$17$1 = 0, $98$1 = 0, $st$18$0 = 0, $st$19$1 = 0, $99 = 0, $ld$20$0 = 0, $100$0 = 0, $ld$21$1 = 0, $100$1 = 0, $st$22$0 = 0, $st$23$1 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 88 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pageSize = __stackBase__ | 0;
    $imageSize = __stackBase__ + 16 | 0;
    $margin = __stackBase__ + 32 | 0;
    $centering = __stackBase__ + 48 | 0;
    $tmp = __stackBase__ + 64 | 0;
    $tmp219 = __stackBase__ + 80 | 0;
    $tmpcast = $tmp219;
    $tmp223 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast85 = $tmp223;
    $tmp241 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast88 = $tmp241;
    $tmp243 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast89 = $tmp243;
    $tmp275 = STACKTOP;
    STACKTOP = STACKTOP + 16 | 0;
    $tmp276 = STACKTOP;
    STACKTOP = STACKTOP + 16 | 0;
    $tmp277 = STACKTOP;
    STACKTOP = STACKTOP + 16 | 0;
    $tmp278 = STACKTOP;
    STACKTOP = STACKTOP + 16 | 0;
    $tmp456 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast86 = $tmp456;
    $tmp461 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast87 = $tmp461;
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $1 = $centering;
    _memset($1 | 0, 0, 16);
    $view = $job + 368 | 0;
    $2 = $imageSize;
    $3 = $view;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $rotation = $job + 360 | 0;
    $4 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _exch_xyf($tmp, $imageSize);
    $5 = $tmp;
    HEAP32[$2 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    label = 4;
    break;
   case 4:
    $margin2 = $job + 416 | 0;
    $6 = $margin;
    $7 = $margin2;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $graph_sets_pageSize = $0 + 270 | 0;
    $8 = HEAP8[$graph_sets_pageSize] | 0;
    $tobool3 = $8 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 15;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $flags = $job + 152 | 0;
    $9 = HEAP32[$flags >> 2] | 0;
    $and = $9 & 32;
    $tobool4 = ($and | 0) == 0;
    if ($tobool4) {
      label = 15;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x = $0 + 208 | 0;
    $10 = +HEAPF64[$x >> 3];
    $x7 = $margin | 0;
    $11 = +HEAPF64[$x7 >> 3];
    $mul = $11 * 2.0;
    $sub = $10 - $mul;
    $x8 = $pageSize | 0;
    HEAPF64[$x8 >> 3] = $sub;
    $y = $0 + 216 | 0;
    $12 = +HEAPF64[$y >> 3];
    $y10 = $margin + 8 | 0;
    $13 = +HEAPF64[$y10 >> 3];
    $mul11 = $13 * 2.0;
    $sub12 = $12 - $mul11;
    $y13 = $pageSize + 8 | 0;
    HEAPF64[$y13 >> 3] = $sub12;
    $14 = +HEAPF64[$x8 >> 3];
    $cmp = $14 < 1.0e-4;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $x17 = $job + 164 | 0;
    HEAP32[$x17 >> 2] = 1;
    label = 10;
    break;
   case 8:
    $x18 = $imageSize | 0;
    $15 = +HEAPF64[$x18 >> 3];
    $div = $15 / $14;
    $conv20 = ~~$div;
    $x22 = $job + 164 | 0;
    HEAP32[$x22 >> 2] = $conv20;
    $16 = +HEAPF64[$x18 >> 3];
    $conv26 = +($conv20 | 0);
    $17 = +HEAPF64[$x8 >> 3];
    $mul28 = $conv26 * $17;
    $sub29 = $16 - $mul28;
    $cmp30 = $sub29 > 1.0e-4;
    if ($cmp30) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $inc = $conv20 + 1 | 0;
    HEAP32[$x22 >> 2] = $inc;
    label = 10;
    break;
   case 10:
    $18 = +HEAPF64[$y13 >> 3];
    $cmp38 = $18 < 1.0e-4;
    if ($cmp38) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $y42 = $job + 168 | 0;
    HEAP32[$y42 >> 2] = 1;
    label = 14;
    break;
   case 12:
    $y44 = $imageSize + 8 | 0;
    $19 = +HEAPF64[$y44 >> 3];
    $div46 = $19 / $18;
    $conv47 = ~~$div46;
    $y49 = $job + 168 | 0;
    HEAP32[$y49 >> 2] = $conv47;
    $20 = +HEAPF64[$y44 >> 3];
    $conv53 = +($conv47 | 0);
    $21 = +HEAPF64[$y13 >> 3];
    $mul55 = $conv53 * $21;
    $sub56 = $20 - $mul55;
    $cmp57 = $sub56 > 1.0e-4;
    if ($cmp57) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $inc62 = $conv47 + 1 | 0;
    HEAP32[$y49 >> 2] = $inc62;
    label = 14;
    break;
   case 14:
    $x66 = $job + 164 | 0;
    $22 = HEAP32[$x66 >> 2] | 0;
    $y68 = $job + 168 | 0;
    $23 = HEAP32[$y68 >> 2] | 0;
    $mul69 = Math_imul($23, $22);
    $numPages = $job + 204 | 0;
    HEAP32[$numPages >> 2] = $mul69;
    $x70 = $imageSize | 0;
    $24 = +HEAPF64[$x70 >> 3];
    $25 = +HEAPF64[$x8 >> 3];
    $cmp72 = $24 < $25;
    $_ = $cmp72 ? $24 : $25;
    HEAPF64[$x70 >> 3] = $_;
    $y77 = $imageSize + 8 | 0;
    $26 = +HEAPF64[$y77 >> 3];
    $27 = +HEAPF64[$y13 >> 3];
    $cmp79 = $26 < $27;
    $cond86 = $cmp79 ? $26 : $27;
    HEAPF64[$y77 >> 3] = $cond86;
    label = 23;
    break;
   case 15:
    $features = $job + 68 | 0;
    $28 = HEAP32[$features >> 2] | 0;
    $tobool89 = ($28 | 0) == 0;
    if ($tobool89) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $features91 = $job + 84 | 0;
    $29 = HEAP32[$features91 >> 2] | 0;
    $x92 = $29 + 24 | 0;
    $30 = +HEAPF64[$x92 >> 3];
    $x93 = $margin | 0;
    $31 = +HEAPF64[$x93 >> 3];
    $mul94 = $31 * 2.0;
    $sub95 = $30 - $mul94;
    $x96 = $pageSize | 0;
    $cmp98 = $sub95 < 0.0;
    $storemerge = $cmp98 ? 0.0 : $sub95;
    HEAPF64[$x96 >> 3] = $storemerge;
    $32 = HEAP32[$features91 >> 2] | 0;
    $y106 = $32 + 32 | 0;
    $33 = +HEAPF64[$y106 >> 3];
    $y107 = $margin + 8 | 0;
    $34 = +HEAPF64[$y107 >> 3];
    $mul108 = $34 * 2.0;
    $sub109 = $33 - $mul108;
    $y110 = $pageSize + 8 | 0;
    HEAPF64[$y110 >> 3] = $sub109;
    $cmp112 = $sub109 < 0.0;
    if ($cmp112) {
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 17:
    HEAPF64[$y110 >> 3] = 0.0;
    label = 19;
    break;
   case 18:
    $35 = $pageSize;
    _memset($35 | 0, 0, 16);
    label = 19;
    break;
   case 19:
    $numPages121 = $job + 204 | 0;
    HEAP32[$numPages121 >> 2] = 1;
    $y123 = $job + 168 | 0;
    HEAP32[$y123 >> 2] = 1;
    $x125 = $job + 164 | 0;
    HEAP32[$x125 >> 2] = 1;
    $x126 = $pageSize | 0;
    $36 = +HEAPF64[$x126 >> 3];
    $x127 = $imageSize | 0;
    $37 = +HEAPF64[$x127 >> 3];
    $cmp128 = $36 < $37;
    if ($cmp128) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    HEAPF64[$x126 >> 3] = $37;
    label = 21;
    break;
   case 21:
    $y134 = $pageSize + 8 | 0;
    $38 = +HEAPF64[$y134 >> 3];
    $y135 = $imageSize + 8 | 0;
    $39 = +HEAPF64[$y135 >> 3];
    $cmp136 = $38 < $39;
    if ($cmp136) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    HEAPF64[$y134 >> 3] = $39;
    label = 23;
    break;
   case 23:
    $x143 = $pageSize | 0;
    $40 = +HEAPF64[$x143 >> 3];
    $x144 = $margin | 0;
    $41 = +HEAPF64[$x144 >> 3];
    $mul145 = $41 * 2.0;
    $add = $40 + $mul145;
    $x146 = $job + 432 | 0;
    $42 = +HEAPF64[$x146 >> 3];
    $mul147 = $42 * $add;
    $div148 = $mul147 / 72.0;
    $cmp149 = $div148 < 0.0;
    if ($cmp149) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $add160 = $div148 + .5;
    $add160_sink = $add160;
    label = 26;
    break;
   case 25:
    $sub171 = $div148 + -.5;
    $add160_sink = $sub171;
    label = 26;
    break;
   case 26:
    $conv161 = ~~$add160_sink;
    $width = $job + 448 | 0;
    HEAP32[$width >> 2] = $conv161;
    $y175 = $pageSize + 8 | 0;
    $43 = +HEAPF64[$y175 >> 3];
    $y176 = $margin + 8 | 0;
    $44 = +HEAPF64[$y176 >> 3];
    $mul177 = $44 * 2.0;
    $add178 = $43 + $mul177;
    $y180 = $job + 440 | 0;
    $45 = +HEAPF64[$y180 >> 3];
    $mul181 = $45 * $add178;
    $div182 = $mul181 / 72.0;
    $cmp183 = $div182 < 0.0;
    if ($cmp183) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $add194 = $div182 + .5;
    $add194_sink = $add194;
    label = 29;
    break;
   case 28:
    $sub205 = $div182 + -.5;
    $add194_sink = $sub205;
    label = 29;
    break;
   case 29:
    $conv195 = ~~$add194_sink;
    $height = $job + 452 | 0;
    HEAP32[$height >> 2] = $conv195;
    $pagesArrayMinor = $job + 188 | 0;
    $x211 = $pagesArrayMinor | 0;
    $pagesArrayMajor = $job + 180 | 0;
    $x214 = $pagesArrayMajor | 0;
    $x217 = $job + 172 | 0;
    $pagedir = $0 + 168 | 0;
    $46 = $x217;
    _memset($46 | 0, 0, 24);
    $47 = HEAP32[$pagedir >> 2] | 0;
    $48 = HEAP8[$47] | 0;
    _pagecode($tmpcast, $job, $48);
    $49 = $pagesArrayMajor;
    $ld$0$0 = $tmp219 | 0;
    $50$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $tmp219 + 4 | 0;
    $50$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $49 | 0;
    HEAP32[$st$2$0 >> 2] = $50$0;
    $st$3$1 = $49 + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $50$1;
    $51 = HEAP32[$pagedir >> 2] | 0;
    $arrayidx222 = $51 + 1 | 0;
    $52 = HEAP8[$arrayidx222] | 0;
    _pagecode($tmpcast85, $job, $52);
    $53 = $pagesArrayMinor;
    $ld$4$0 = $tmp223 | 0;
    $54$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $tmp223 + 4 | 0;
    $54$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $53 | 0;
    HEAP32[$st$6$0 >> 2] = $54$0;
    $st$7$1 = $53 + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $54$1;
    $55 = HEAP32[$x214 >> 2] | 0;
    $56 = HEAP32[$x211 >> 2] | 0;
    $add228 = $56 + $55 | 0;
    $ispos = ($add228 | 0) > -1;
    $neg = -$add228 | 0;
    $call = $ispos ? $add228 : $neg;
    $cmp229 = ($call | 0) == 1;
    if ($cmp229) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $y212 = $job + 184 | 0;
    $y209 = $job + 192 | 0;
    $57 = HEAP32[$y212 >> 2] | 0;
    $58 = HEAP32[$y209 >> 2] | 0;
    $add235 = $58 + $57 | 0;
    $ispos90 = ($add235 | 0) > -1;
    $neg91 = -$add235 | 0;
    $call236 = $ispos90 ? $add235 : $neg91;
    $cmp237 = ($call236 | 0) == 1;
    if ($cmp237) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    _pagecode($tmpcast88, $job, 66);
    $ld$8$0 = $tmp241 | 0;
    $59$0 = HEAP32[$ld$8$0 >> 2] | 0;
    $ld$9$1 = $tmp241 + 4 | 0;
    $59$1 = HEAP32[$ld$9$1 >> 2] | 0;
    $st$10$0 = $49 | 0;
    HEAP32[$st$10$0 >> 2] = $59$0;
    $st$11$1 = $49 + 4 | 0;
    HEAP32[$st$11$1 >> 2] = $59$1;
    _pagecode($tmpcast89, $job, 76);
    $ld$12$0 = $tmp243 | 0;
    $60$0 = HEAP32[$ld$12$0 >> 2] | 0;
    $ld$13$1 = $tmp243 + 4 | 0;
    $60$1 = HEAP32[$ld$13$1 >> 2] | 0;
    $st$14$0 = $53 | 0;
    HEAP32[$st$14$0 >> 2] = $60$0;
    $st$15$1 = $53 + 4 | 0;
    HEAP32[$st$15$1 >> 2] = $60$1;
    $61 = HEAP32[$pagedir >> 2] | 0;
    $call245 = _agerr(0, 112488, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $61, tempInt) | 0) | 0;
    label = 32;
    break;
   case 32:
    $drawing = $g + 48 | 0;
    $62 = HEAP32[$drawing >> 2] | 0;
    $centered = $62 + 82 | 0;
    $63 = HEAP8[$centered] | 0;
    $tobool247 = $63 << 24 >> 24 == 0;
    if ($tobool247) {
      label = 37;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $64 = +HEAPF64[$x143 >> 3];
    $x250 = $imageSize | 0;
    $65 = +HEAPF64[$x250 >> 3];
    $cmp251 = $64 > $65;
    if ($cmp251) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    $sub256 = $64 - $65;
    $div257 = $sub256 * .5;
    $x258 = $centering | 0;
    HEAPF64[$x258 >> 3] = $div257;
    label = 35;
    break;
   case 35:
    $66 = +HEAPF64[$y175 >> 3];
    $y261 = $imageSize + 8 | 0;
    $67 = +HEAPF64[$y261 >> 3];
    $cmp262 = $66 > $67;
    if ($cmp262) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    $sub267 = $66 - $67;
    $div268 = $sub267 * .5;
    $y269 = $centering + 8 | 0;
    HEAPF64[$y269 >> 3] = $div268;
    label = 37;
    break;
   case 37:
    $68 = HEAP32[$rotation >> 2] | 0;
    $tobool273 = ($68 | 0) == 0;
    if ($tobool273) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    _exch_xyf($tmp275, $imageSize);
    $69 = $tmp275;
    HEAP32[$2 >> 2] = HEAP32[$69 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$69 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$69 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$69 + 12 >> 2] | 0;
    _exch_xyf($tmp276, $pageSize);
    $70 = $pageSize;
    $71 = $tmp276;
    HEAP32[$70 >> 2] = HEAP32[$71 >> 2] | 0;
    HEAP32[$70 + 4 >> 2] = HEAP32[$71 + 4 >> 2] | 0;
    HEAP32[$70 + 8 >> 2] = HEAP32[$71 + 8 >> 2] | 0;
    HEAP32[$70 + 12 >> 2] = HEAP32[$71 + 12 >> 2] | 0;
    _exch_xyf($tmp277, $margin);
    $72 = $tmp277;
    HEAP32[$6 >> 2] = HEAP32[$72 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$72 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$72 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$72 + 12 >> 2] | 0;
    _exch_xyf($tmp278, $centering);
    $73 = $tmp278;
    HEAP32[$1 >> 2] = HEAP32[$73 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$73 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$73 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$73 + 12 >> 2] | 0;
    label = 39;
    break;
   case 39:
    $74 = +HEAPF64[$x144 >> 3];
    $x281 = $centering | 0;
    $75 = +HEAPF64[$x281 >> 3];
    $add282 = $74 + $75;
    $x283 = $job + 384 | 0;
    HEAPF64[$x283 >> 3] = $add282;
    $76 = +HEAPF64[$y176 >> 3];
    $y285 = $centering + 8 | 0;
    $77 = +HEAPF64[$y285 >> 3];
    $add286 = $76 + $77;
    $y289 = $job + 392 | 0;
    HEAPF64[$y289 >> 3] = $add286;
    $78 = +HEAPF64[$x144 >> 3];
    $79 = +HEAPF64[$x281 >> 3];
    $add292 = $78 + $79;
    $x293 = $imageSize | 0;
    $80 = +HEAPF64[$x293 >> 3];
    $add294 = $add292 + $80;
    $x296 = $job + 400 | 0;
    HEAPF64[$x296 >> 3] = $add294;
    $81 = +HEAPF64[$y176 >> 3];
    $82 = +HEAPF64[$y285 >> 3];
    $add299 = $81 + $82;
    $y300 = $imageSize + 8 | 0;
    $83 = +HEAPF64[$y300 >> 3];
    $add301 = $add299 + $83;
    $y304 = $job + 408 | 0;
    HEAPF64[$y304 >> 3] = $add301;
    $84 = +HEAPF64[$x293 >> 3];
    $zoom = $job + 352 | 0;
    $85 = +HEAPF64[$zoom >> 3];
    $div306 = $84 / $85;
    $x308 = $job + 320 | 0;
    HEAPF64[$x308 >> 3] = $div306;
    $86 = +HEAPF64[$y300 >> 3];
    $87 = +HEAPF64[$zoom >> 3];
    $div311 = $86 / $87;
    $y313 = $job + 328 | 0;
    HEAPF64[$y313 >> 3] = $div311;
    $88 = +HEAPF64[$x283 >> 3];
    $89 = +HEAPF64[$x146 >> 3];
    $mul319 = $88 * $89;
    $div320 = $mul319 / 72.0;
    $cmp321 = $div320 < 0.0;
    if ($cmp321) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $add331 = $div320 + .5;
    $add331_sink = $add331;
    label = 42;
    break;
   case 41:
    $sub341 = $div320 + -.5;
    $add331_sink = $sub341;
    label = 42;
    break;
   case 42:
    $conv332 = ~~$add331_sink;
    $pageBoundingBox = $job + 456 | 0;
    $LL345 = $pageBoundingBox | 0;
    $x346 = $pageBoundingBox | 0;
    HEAP32[$x346 >> 2] = $conv332;
    $90 = +HEAPF64[$y289 >> 3];
    $91 = +HEAPF64[$y180 >> 3];
    $mul352 = $90 * $91;
    $div353 = $mul352 / 72.0;
    $cmp354 = $div353 < 0.0;
    if ($cmp354) {
      label = 44;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $add364 = $div353 + .5;
    $add364_sink = $add364;
    label = 45;
    break;
   case 44:
    $sub374 = $div353 + -.5;
    $add364_sink = $sub374;
    label = 45;
    break;
   case 45:
    $conv365 = ~~$add364_sink;
    $y380 = $job + 460 | 0;
    HEAP32[$y380 >> 2] = $conv365;
    $92 = +HEAPF64[$x296 >> 3];
    $93 = +HEAPF64[$x146 >> 3];
    $mul386 = $92 * $93;
    $div387 = $mul386 / 72.0;
    $cmp388 = $div387 < 0.0;
    if ($cmp388) {
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $add398 = $div387 + .5;
    $add398_sink = $add398;
    label = 48;
    break;
   case 47:
    $sub408 = $div387 + -.5;
    $add398_sink = $sub408;
    label = 48;
    break;
   case 48:
    $conv399 = ~~$add398_sink;
    $UR413 = $job + 464 | 0;
    $x414 = $UR413 | 0;
    HEAP32[$x414 >> 2] = $conv399;
    $94 = +HEAPF64[$y304 >> 3];
    $95 = +HEAPF64[$y180 >> 3];
    $mul420 = $94 * $95;
    $div421 = $mul420 / 72.0;
    $cmp422 = $div421 < 0.0;
    if ($cmp422) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $add432 = $div421 + .5;
    $add432_sink = $add432;
    label = 51;
    break;
   case 50:
    $sub442 = $div421 + -.5;
    $add432_sink = $sub442;
    label = 51;
    break;
   case 51:
    $conv433 = ~~$add432_sink;
    $y448 = $job + 468 | 0;
    HEAP32[$y448 >> 2] = $conv433;
    $96 = HEAP32[$rotation >> 2] | 0;
    $tobool450 = ($96 | 0) == 0;
    if ($tobool450) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    _exch_xy($tmpcast86, $LL345);
    $97 = $pageBoundingBox;
    $ld$16$0 = $tmp456 | 0;
    $98$0 = HEAP32[$ld$16$0 >> 2] | 0;
    $ld$17$1 = $tmp456 + 4 | 0;
    $98$1 = HEAP32[$ld$17$1 >> 2] | 0;
    $st$18$0 = $97 | 0;
    HEAP32[$st$18$0 >> 2] = $98$0;
    $st$19$1 = $97 + 4 | 0;
    HEAP32[$st$19$1 >> 2] = $98$1;
    _exch_xy($tmpcast87, $UR413);
    $99 = $UR413;
    $ld$20$0 = $tmp461 | 0;
    $100$0 = HEAP32[$ld$20$0 >> 2] | 0;
    $ld$21$1 = $tmp461 + 4 | 0;
    $100$1 = HEAP32[$ld$21$1 >> 2] | 0;
    $st$22$0 = $99 | 0;
    HEAP32[$st$22$0 >> 2] = $100$0;
    $st$23$1 = $99 + 4 | 0;
    HEAP32[$st$23$1 >> 2] = $100$1;
    label = 53;
    break;
   case 53:
    STACKTOP = __stackBase__;
    return;
  }
}
function _parse_layers($gvc, $g, $p) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  $p = $p | 0;
  var $0 = 0, $call = 0, $layerDelims = 0, $tobool = 0, $_call = 0, $call3 = 0, $layers = 0, $1 = 0, $call6 = 0, $tobool724 = 0, $layerIDs = 0, $layerIDs16 = 0, $sz_027 = 0, $tok_026 = 0, $ntok_025 = 0, $inc = 0, $cmp = 0, $add = 0, $2 = 0, $tobool9 = 0, $3 = 0, $mul = 0, $call11 = 0, $mul12 = 0, $call13 = 0, $call11_sink = 0, $4 = 0, $sz_1 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $call18 = 0, $tobool7 = 0, $tobool19 = 0, $layerIDs21 = 0, $7 = 0, $8 = 0, $add22 = 0, $mul23 = 0, $call24 = 0, $9 = 0, $add28 = 0, $10 = 0, $arrayidx30 = 0, $ntok_0_lcssa29 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 108728) | 0;
    $layerDelims = $gvc + 272 | 0;
    $tobool = ($call | 0) == 0;
    $_call = $tobool ? 108104 : $call;
    HEAP32[$layerDelims >> 2] = $_call;
    $call3 = _strdup($p | 0) | 0;
    $layers = $gvc + 276 | 0;
    HEAP32[$layers >> 2] = $call3;
    $1 = HEAP32[$layerDelims >> 2] | 0;
    $call6 = _strtok($call3 | 0, $1 | 0) | 0;
    $tobool724 = ($call6 | 0) == 0;
    if ($tobool724) {
      $ntok_0_lcssa29 = 0;
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $layerIDs = $gvc + 280 | 0;
    $layerIDs16 = $gvc + 280 | 0;
    $ntok_025 = 0;
    $tok_026 = $call6;
    $sz_027 = 0;
    label = 4;
    break;
   case 4:
    $inc = $ntok_025 + 1 | 0;
    $cmp = ($inc | 0) > ($sz_027 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $sz_1 = $sz_027;
      label = 9;
      break;
    }
   case 5:
    $add = $sz_027 + 128 | 0;
    $2 = HEAP32[$layerIDs >> 2] | 0;
    $tobool9 = ($2 | 0) == 0;
    if ($tobool9) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = $2;
    $mul = $add << 2;
    $call11 = _grealloc($3, $mul) | 0;
    $call11_sink = $call11;
    label = 8;
    break;
   case 7:
    $mul12 = $add << 2;
    $call13 = _gmalloc($mul12) | 0;
    $call11_sink = $call13;
    label = 8;
    break;
   case 8:
    $4 = $call11_sink;
    HEAP32[$layerIDs >> 2] = $4;
    $sz_1 = $add;
    label = 9;
    break;
   case 9:
    $5 = HEAP32[$layerIDs16 >> 2] | 0;
    $arrayidx = $5 + ($inc << 2) | 0;
    HEAP32[$arrayidx >> 2] = $tok_026;
    $6 = HEAP32[$layerDelims >> 2] | 0;
    $call18 = _strtok(0, $6 | 0) | 0;
    $tobool7 = ($call18 | 0) == 0;
    if ($tobool7) {
      label = 10;
      break;
    } else {
      $ntok_025 = $inc;
      $tok_026 = $call18;
      $sz_027 = $sz_1;
      label = 4;
      break;
    }
   case 10:
    $tobool19 = ($inc | 0) == 0;
    if ($tobool19) {
      $ntok_0_lcssa29 = 0;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $layerIDs21 = $gvc + 280 | 0;
    $7 = HEAP32[$layerIDs21 >> 2] | 0;
    $8 = $7;
    $add22 = $inc << 2;
    $mul23 = $add22 + 8 | 0;
    $call24 = _grealloc($8, $mul23) | 0;
    $9 = $call24;
    HEAP32[$layerIDs21 >> 2] = $9;
    HEAP32[$9 >> 2] = 0;
    $add28 = $ntok_025 + 2 | 0;
    $10 = HEAP32[$layerIDs21 >> 2] | 0;
    $arrayidx30 = $10 + ($add28 << 2) | 0;
    HEAP32[$arrayidx30 >> 2] = 0;
    $ntok_0_lcssa29 = $inc;
    label = 12;
    break;
   case 12:
    return $ntok_0_lcssa29 | 0;
  }
  return 0;
}
function _init_bb_node($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $x = 0, $0 = 0.0, $lw = 0, $1 = 0.0, $sub = 0.0, $x3 = 0, $y = 0, $2 = 0.0, $ht = 0, $3 = 0.0, $div = 0.0, $sub7 = 0.0, $y11 = 0, $4 = 0.0, $rw = 0, $5 = 0.0, $add = 0.0, $x18 = 0, $6 = 0.0, $7 = 0.0, $div24 = 0.0, $add25 = 0.0, $y29 = 0, $8 = 0, $9 = 0, $call = 0, $tobool16 = 0, $e_0_in17 = 0, $e_0 = 0, $call30 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $n + 32 | 0;
    $0 = +HEAPF64[$x >> 3];
    $lw = $n + 104 | 0;
    $1 = +HEAPF64[$lw >> 3];
    $sub = $0 - $1;
    $x3 = $n + 64 | 0;
    HEAPF64[$x3 >> 3] = $sub;
    $y = $n + 40 | 0;
    $2 = +HEAPF64[$y >> 3];
    $ht = $n + 96 | 0;
    $3 = +HEAPF64[$ht >> 3];
    $div = $3 * .5;
    $sub7 = $2 - $div;
    $y11 = $n + 72 | 0;
    HEAPF64[$y11 >> 3] = $sub7;
    $4 = +HEAPF64[$x >> 3];
    $rw = $n + 112 | 0;
    $5 = +HEAPF64[$rw >> 3];
    $add = $4 + $5;
    $x18 = $n + 80 | 0;
    HEAPF64[$x18 >> 3] = $add;
    $6 = +HEAPF64[$y >> 3];
    $7 = +HEAPF64[$ht >> 3];
    $div24 = $7 * .5;
    $add25 = $6 + $div24;
    $y29 = $n + 88 | 0;
    HEAPF64[$y29 >> 3] = $add25;
    $8 = $g;
    $9 = $n;
    $call = _agfstout($8, $9) | 0;
    $tobool16 = ($call | 0) == 0;
    if ($tobool16) {
      label = 4;
      break;
    } else {
      $e_0_in17 = $call;
      label = 3;
      break;
    }
   case 3:
    $e_0 = $e_0_in17;
    _init_bb_edge($e_0);
    $call30 = _agnxtout($8, $e_0_in17) | 0;
    $tobool = ($call30 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $e_0_in17 = $call30;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _init_bb_edge($e) {
  $e = $e | 0;
  var $spl1 = 0, $0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $spl1 = $e + 24 | 0;
    $0 = HEAP32[$spl1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _init_splines_bb($0);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _init_splines_bb($spl) {
  $spl = $spl | 0;
  var $bz = 0, $tmp = 0, $tmp6 = 0, $tmp66 = 0, $tmp134 = 0, $size = 0, $0 = 0, $cmp = 0, $list = 0, $1 = 0, $2 = 0, $3 = 0, $bb_sroa_0_0__idx40 = 0, $bb_sroa_0_0_copyload41 = 0.0, $bb_sroa_1_8__idx48 = 0, $bb_sroa_1_8_copyload49 = 0.0, $bb_sroa_2_16__idx56 = 0, $bb_sroa_2_16_copyload57 = 0.0, $bb_sroa_3_24__idx64 = 0, $bb_sroa_3_24_copyload65 = 0.0, $4 = 0, $cmp278 = 0, $b_sroa_0_0__idx3 = 0, $b_sroa_1_8__idx13 = 0, $b_sroa_2_16__idx23 = 0, $b_sroa_3_24__idx33 = 0, $sflag = 0, $eflag = 0, $ep = 0, $size130 = 0, $list131 = 0, $b_sroa_0_0__idx = 0, $b_sroa_1_8__idx10 = 0, $b_sroa_2_16__idx20 = 0, $b_sroa_3_24__idx30 = 0, $sp = 0, $list63 = 0, $b_sroa_0_0__idx1 = 0, $b_sroa_1_8__idx11 = 0, $b_sroa_2_16__idx21 = 0, $b_sroa_3_24__idx31 = 0, $bb_sroa_0_083 = 0.0, $bb_sroa_1_082 = 0.0, $bb_sroa_2_081 = 0.0, $bb_sroa_3_080 = 0.0, $i_079 = 0, $cmp3 = 0, $5 = 0, $arrayidx5 = 0, $6 = 0, $b_sroa_0_0_copyload4 = 0.0, $b_sroa_1_8_copyload14 = 0.0, $b_sroa_2_16_copyload24 = 0.0, $b_sroa_3_24_copyload34 = 0.0, $cmp9 = 0, $bb_sroa_0_0_b_sroa_0_0_copyload4 = 0.0, $cmp22 = 0, $cond30 = 0.0, $cmp36 = 0, $bb_sroa_2_0_b_sroa_2_16_copyload24 = 0.0, $cmp51 = 0, $cond59 = 0.0, $bb_sroa_3_1 = 0.0, $bb_sroa_2_1 = 0.0, $bb_sroa_1_1 = 0.0, $bb_sroa_0_1 = 0.0, $7 = 0, $tobool = 0, $8 = 0, $b_sroa_0_0_copyload2 = 0.0, $b_sroa_1_8_copyload12 = 0.0, $b_sroa_2_16_copyload22 = 0.0, $b_sroa_3_24_copyload32 = 0.0, $cmp71 = 0, $bb_sroa_0_1_b_sroa_0_0_copyload2 = 0.0, $cmp86 = 0, $cond94 = 0.0, $cmp101 = 0, $bb_sroa_2_1_b_sroa_2_16_copyload22 = 0.0, $cmp116 = 0, $cond124 = 0.0, $bb_sroa_3_2 = 0.0, $bb_sroa_2_2 = 0.0, $bb_sroa_1_2 = 0.0, $bb_sroa_0_2 = 0.0, $9 = 0, $tobool128 = 0, $10 = 0, $sub = 0, $11 = 0, $arrayidx132 = 0, $b_sroa_0_0_copyload = 0.0, $b_sroa_1_8_copyload = 0.0, $b_sroa_2_16_copyload = 0.0, $b_sroa_3_24_copyload = 0.0, $cmp139 = 0, $bb_sroa_0_2_b_sroa_0_0_copyload = 0.0, $cmp154 = 0, $cond162 = 0.0, $cmp169 = 0, $bb_sroa_2_2_b_sroa_2_16_copyload = 0.0, $cmp184 = 0, $cond192 = 0.0, $bb_sroa_3_3 = 0.0, $bb_sroa_2_3 = 0.0, $bb_sroa_1_3 = 0.0, $bb_sroa_0_3 = 0.0, $inc = 0, $12 = 0, $cmp2 = 0, $bb_sroa_0_0_lcssa = 0.0, $bb_sroa_1_0_lcssa = 0.0, $bb_sroa_2_0_lcssa = 0.0, $bb_sroa_3_0_lcssa = 0.0, $bb_sroa_0_0__idx = 0, $bb_sroa_1_8__idx47 = 0, $bb_sroa_2_16__idx55 = 0, $bb_sroa_3_24__idx63 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 176 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $bz = __stackBase__ | 0;
    $tmp = __stackBase__ + 48 | 0;
    $tmp6 = __stackBase__ + 80 | 0;
    $tmp66 = __stackBase__ + 112 | 0;
    $tmp134 = __stackBase__ + 144 | 0;
    $size = $spl + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(162152, 3408, 164200, 103680);
   case 4:
    $list = $spl | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = $bz;
    $3 = $1;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    HEAP32[$2 + 16 >> 2] = HEAP32[$3 + 16 >> 2] | 0;
    HEAP32[$2 + 20 >> 2] = HEAP32[$3 + 20 >> 2] | 0;
    HEAP32[$2 + 24 >> 2] = HEAP32[$3 + 24 >> 2] | 0;
    HEAP32[$2 + 28 >> 2] = HEAP32[$3 + 28 >> 2] | 0;
    HEAP32[$2 + 32 >> 2] = HEAP32[$3 + 32 >> 2] | 0;
    HEAP32[$2 + 36 >> 2] = HEAP32[$3 + 36 >> 2] | 0;
    HEAP32[$2 + 40 >> 2] = HEAP32[$3 + 40 >> 2] | 0;
    HEAP32[$2 + 44 >> 2] = HEAP32[$3 + 44 >> 2] | 0;
    _bezier_bb($tmp, $bz);
    $bb_sroa_0_0__idx40 = $tmp | 0;
    $bb_sroa_0_0_copyload41 = +HEAPF64[$bb_sroa_0_0__idx40 >> 3];
    $bb_sroa_1_8__idx48 = $tmp + 8 | 0;
    $bb_sroa_1_8_copyload49 = +HEAPF64[$bb_sroa_1_8__idx48 >> 3];
    $bb_sroa_2_16__idx56 = $tmp + 16 | 0;
    $bb_sroa_2_16_copyload57 = +HEAPF64[$bb_sroa_2_16__idx56 >> 3];
    $bb_sroa_3_24__idx64 = $tmp + 24 | 0;
    $bb_sroa_3_24_copyload65 = +HEAPF64[$bb_sroa_3_24__idx64 >> 3];
    $4 = HEAP32[$size >> 2] | 0;
    $cmp278 = ($4 | 0) > 0;
    if ($cmp278) {
      label = 5;
      break;
    } else {
      $bb_sroa_3_0_lcssa = $bb_sroa_3_24_copyload65;
      $bb_sroa_2_0_lcssa = $bb_sroa_2_16_copyload57;
      $bb_sroa_1_0_lcssa = $bb_sroa_1_8_copyload49;
      $bb_sroa_0_0_lcssa = $bb_sroa_0_0_copyload41;
      label = 13;
      break;
    }
   case 5:
    $b_sroa_0_0__idx3 = $tmp6 | 0;
    $b_sroa_1_8__idx13 = $tmp6 + 8 | 0;
    $b_sroa_2_16__idx23 = $tmp6 + 16 | 0;
    $b_sroa_3_24__idx33 = $tmp6 + 24 | 0;
    $sflag = $bz + 8 | 0;
    $eflag = $bz + 12 | 0;
    $ep = $bz + 32 | 0;
    $size130 = $bz + 4 | 0;
    $list131 = $bz | 0;
    $b_sroa_0_0__idx = $tmp134 | 0;
    $b_sroa_1_8__idx10 = $tmp134 + 8 | 0;
    $b_sroa_2_16__idx20 = $tmp134 + 16 | 0;
    $b_sroa_3_24__idx30 = $tmp134 + 24 | 0;
    $sp = $bz + 16 | 0;
    $list63 = $bz | 0;
    $b_sroa_0_0__idx1 = $tmp66 | 0;
    $b_sroa_1_8__idx11 = $tmp66 + 8 | 0;
    $b_sroa_2_16__idx21 = $tmp66 + 16 | 0;
    $b_sroa_3_24__idx31 = $tmp66 + 24 | 0;
    $i_079 = 0;
    $bb_sroa_3_080 = $bb_sroa_3_24_copyload65;
    $bb_sroa_2_081 = $bb_sroa_2_16_copyload57;
    $bb_sroa_1_082 = $bb_sroa_1_8_copyload49;
    $bb_sroa_0_083 = $bb_sroa_0_0_copyload41;
    label = 6;
    break;
   case 6:
    $cmp3 = ($i_079 | 0) > 0;
    if ($cmp3) {
      label = 7;
      break;
    } else {
      $bb_sroa_0_1 = $bb_sroa_0_083;
      $bb_sroa_1_1 = $bb_sroa_1_082;
      $bb_sroa_2_1 = $bb_sroa_2_081;
      $bb_sroa_3_1 = $bb_sroa_3_080;
      label = 8;
      break;
    }
   case 7:
    $5 = HEAP32[$list >> 2] | 0;
    $arrayidx5 = $5 + ($i_079 * 48 & -1) | 0;
    $6 = $arrayidx5;
    HEAP32[$2 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    HEAP32[$2 + 16 >> 2] = HEAP32[$6 + 16 >> 2] | 0;
    HEAP32[$2 + 20 >> 2] = HEAP32[$6 + 20 >> 2] | 0;
    HEAP32[$2 + 24 >> 2] = HEAP32[$6 + 24 >> 2] | 0;
    HEAP32[$2 + 28 >> 2] = HEAP32[$6 + 28 >> 2] | 0;
    HEAP32[$2 + 32 >> 2] = HEAP32[$6 + 32 >> 2] | 0;
    HEAP32[$2 + 36 >> 2] = HEAP32[$6 + 36 >> 2] | 0;
    HEAP32[$2 + 40 >> 2] = HEAP32[$6 + 40 >> 2] | 0;
    HEAP32[$2 + 44 >> 2] = HEAP32[$6 + 44 >> 2] | 0;
    _bezier_bb($tmp6, $bz);
    $b_sroa_0_0_copyload4 = +HEAPF64[$b_sroa_0_0__idx3 >> 3];
    $b_sroa_1_8_copyload14 = +HEAPF64[$b_sroa_1_8__idx13 >> 3];
    $b_sroa_2_16_copyload24 = +HEAPF64[$b_sroa_2_16__idx23 >> 3];
    $b_sroa_3_24_copyload34 = +HEAPF64[$b_sroa_3_24__idx33 >> 3];
    $cmp9 = $bb_sroa_0_083 < $b_sroa_0_0_copyload4;
    $bb_sroa_0_0_b_sroa_0_0_copyload4 = $cmp9 ? $bb_sroa_0_083 : $b_sroa_0_0_copyload4;
    $cmp22 = $bb_sroa_1_082 < $b_sroa_1_8_copyload14;
    $cond30 = $cmp22 ? $bb_sroa_1_082 : $b_sroa_1_8_copyload14;
    $cmp36 = $bb_sroa_2_081 > $b_sroa_2_16_copyload24;
    $bb_sroa_2_0_b_sroa_2_16_copyload24 = $cmp36 ? $bb_sroa_2_081 : $b_sroa_2_16_copyload24;
    $cmp51 = $bb_sroa_3_080 > $b_sroa_3_24_copyload34;
    $cond59 = $cmp51 ? $bb_sroa_3_080 : $b_sroa_3_24_copyload34;
    $bb_sroa_0_1 = $bb_sroa_0_0_b_sroa_0_0_copyload4;
    $bb_sroa_1_1 = $cond30;
    $bb_sroa_2_1 = $bb_sroa_2_0_b_sroa_2_16_copyload24;
    $bb_sroa_3_1 = $cond59;
    label = 8;
    break;
   case 8:
    $7 = HEAP32[$sflag >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      $bb_sroa_0_2 = $bb_sroa_0_1;
      $bb_sroa_1_2 = $bb_sroa_1_1;
      $bb_sroa_2_2 = $bb_sroa_2_1;
      $bb_sroa_3_2 = $bb_sroa_3_1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $8 = HEAP32[$list63 >> 2] | 0;
    _arrow_bb($tmp66, $sp, $8, 1.0, 0);
    $b_sroa_0_0_copyload2 = +HEAPF64[$b_sroa_0_0__idx1 >> 3];
    $b_sroa_1_8_copyload12 = +HEAPF64[$b_sroa_1_8__idx11 >> 3];
    $b_sroa_2_16_copyload22 = +HEAPF64[$b_sroa_2_16__idx21 >> 3];
    $b_sroa_3_24_copyload32 = +HEAPF64[$b_sroa_3_24__idx31 >> 3];
    $cmp71 = $bb_sroa_0_1 < $b_sroa_0_0_copyload2;
    $bb_sroa_0_1_b_sroa_0_0_copyload2 = $cmp71 ? $bb_sroa_0_1 : $b_sroa_0_0_copyload2;
    $cmp86 = $bb_sroa_1_1 < $b_sroa_1_8_copyload12;
    $cond94 = $cmp86 ? $bb_sroa_1_1 : $b_sroa_1_8_copyload12;
    $cmp101 = $bb_sroa_2_1 > $b_sroa_2_16_copyload22;
    $bb_sroa_2_1_b_sroa_2_16_copyload22 = $cmp101 ? $bb_sroa_2_1 : $b_sroa_2_16_copyload22;
    $cmp116 = $bb_sroa_3_1 > $b_sroa_3_24_copyload32;
    $cond124 = $cmp116 ? $bb_sroa_3_1 : $b_sroa_3_24_copyload32;
    $bb_sroa_0_2 = $bb_sroa_0_1_b_sroa_0_0_copyload2;
    $bb_sroa_1_2 = $cond94;
    $bb_sroa_2_2 = $bb_sroa_2_1_b_sroa_2_16_copyload22;
    $bb_sroa_3_2 = $cond124;
    label = 10;
    break;
   case 10:
    $9 = HEAP32[$eflag >> 2] | 0;
    $tobool128 = ($9 | 0) == 0;
    if ($tobool128) {
      $bb_sroa_0_3 = $bb_sroa_0_2;
      $bb_sroa_1_3 = $bb_sroa_1_2;
      $bb_sroa_2_3 = $bb_sroa_2_2;
      $bb_sroa_3_3 = $bb_sroa_3_2;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $10 = HEAP32[$size130 >> 2] | 0;
    $sub = $10 - 1 | 0;
    $11 = HEAP32[$list131 >> 2] | 0;
    $arrayidx132 = $11 + ($sub << 4) | 0;
    _arrow_bb($tmp134, $ep, $arrayidx132, 1.0, 0);
    $b_sroa_0_0_copyload = +HEAPF64[$b_sroa_0_0__idx >> 3];
    $b_sroa_1_8_copyload = +HEAPF64[$b_sroa_1_8__idx10 >> 3];
    $b_sroa_2_16_copyload = +HEAPF64[$b_sroa_2_16__idx20 >> 3];
    $b_sroa_3_24_copyload = +HEAPF64[$b_sroa_3_24__idx30 >> 3];
    $cmp139 = $bb_sroa_0_2 < $b_sroa_0_0_copyload;
    $bb_sroa_0_2_b_sroa_0_0_copyload = $cmp139 ? $bb_sroa_0_2 : $b_sroa_0_0_copyload;
    $cmp154 = $bb_sroa_1_2 < $b_sroa_1_8_copyload;
    $cond162 = $cmp154 ? $bb_sroa_1_2 : $b_sroa_1_8_copyload;
    $cmp169 = $bb_sroa_2_2 > $b_sroa_2_16_copyload;
    $bb_sroa_2_2_b_sroa_2_16_copyload = $cmp169 ? $bb_sroa_2_2 : $b_sroa_2_16_copyload;
    $cmp184 = $bb_sroa_3_2 > $b_sroa_3_24_copyload;
    $cond192 = $cmp184 ? $bb_sroa_3_2 : $b_sroa_3_24_copyload;
    $bb_sroa_0_3 = $bb_sroa_0_2_b_sroa_0_0_copyload;
    $bb_sroa_1_3 = $cond162;
    $bb_sroa_2_3 = $bb_sroa_2_2_b_sroa_2_16_copyload;
    $bb_sroa_3_3 = $cond192;
    label = 12;
    break;
   case 12:
    $inc = $i_079 + 1 | 0;
    $12 = HEAP32[$size >> 2] | 0;
    $cmp2 = ($inc | 0) < ($12 | 0);
    if ($cmp2) {
      $i_079 = $inc;
      $bb_sroa_3_080 = $bb_sroa_3_3;
      $bb_sroa_2_081 = $bb_sroa_2_3;
      $bb_sroa_1_082 = $bb_sroa_1_3;
      $bb_sroa_0_083 = $bb_sroa_0_3;
      label = 6;
      break;
    } else {
      $bb_sroa_3_0_lcssa = $bb_sroa_3_3;
      $bb_sroa_2_0_lcssa = $bb_sroa_2_3;
      $bb_sroa_1_0_lcssa = $bb_sroa_1_3;
      $bb_sroa_0_0_lcssa = $bb_sroa_0_3;
      label = 13;
      break;
    }
   case 13:
    $bb_sroa_0_0__idx = $spl + 8 | 0;
    HEAPF64[$bb_sroa_0_0__idx >> 3] = $bb_sroa_0_0_lcssa;
    $bb_sroa_1_8__idx47 = $spl + 16 | 0;
    HEAPF64[$bb_sroa_1_8__idx47 >> 3] = $bb_sroa_1_0_lcssa;
    $bb_sroa_2_16__idx55 = $spl + 24 | 0;
    HEAPF64[$bb_sroa_2_16__idx55 >> 3] = $bb_sroa_2_0_lcssa;
    $bb_sroa_3_24__idx63 = $spl + 32 | 0;
    HEAPF64[$bb_sroa_3_24__idx63 >> 3] = $bb_sroa_3_0_lcssa;
    STACKTOP = __stackBase__;
    return;
  }
}
function _is_style_delim($c) {
  $c = $c | 0;
  var $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($c | 0) == 40 | ($c | 0) == 41 | ($c | 0) == 44 | ($c | 0) == 0) {
      $retval_0 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _edge_in_box($e, $b) {
  $e = $e | 0;
  $b = $b | 0;
  var $spl1 = 0, $0 = 0, $tobool = 0, $bb = 0, $call = 0, $tobool2 = 0, $label = 0, $1 = 0, $tobool4 = 0, $call6 = 0, $tobool7 = 0, $xlabel = 0, $2 = 0, $tobool11 = 0, $call13 = 0, $tobool15 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $spl1 = $e + 24 | 0;
    $0 = HEAP32[$spl1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $bb = $0 + 8 | 0;
    $call = _boxf_overlap($bb, $b) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 9;
      break;
    }
   case 4:
    $label = $e + 112 | 0;
    $1 = HEAP32[$label >> 2] | 0;
    $tobool4 = ($1 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call6 = _overlap_label($1, $b) | 0;
    $tobool7 = $call6 << 24 >> 24 == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 9;
      break;
    }
   case 6:
    $xlabel = $e + 124 | 0;
    $2 = HEAP32[$xlabel >> 2] | 0;
    $tobool11 = ($2 | 0) == 0;
    if ($tobool11) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call13 = _overlap_label($2, $b) | 0;
    $tobool15 = $call13 << 24 >> 24 == 0;
    if ($tobool15) {
      label = 8;
      break;
    } else {
      $retval_0 = 1;
      label = 9;
      break;
    }
   case 8:
    $retval_0 = 0;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _edge_in_layer($job, $e) {
  $job = $job | 0;
  $e = $e | 0;
  var $numLayers = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $call = 0, $call1 = 0, $tobool = 0, $3 = 0, $tobool4 = 0, $tail = 0, $head = 0, $cnt_0 = 0, $cmp7 = 0, $cmp8 = 0, $cond_in = 0, $cond = 0, $4 = 0, $5 = 0, $call9 = 0, $6 = 0, $cmp11 = 0, $call13 = 0, $tobool15 = 0, $inc = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $numLayers = $job + 156 | 0;
    $0 = HEAP32[$numLayers >> 2] | 0;
    $cmp = ($0 | 0) < 2;
    if ($cmp) {
      $retval_0 = 1;
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $e | 0;
    $2 = HEAP32[41920] | 0;
    $call = _late_string($1, $2, 136112) | 0;
    $call1 = _selectedlayer($job, $call) | 0;
    $tobool = $call1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 9;
      break;
    }
   case 4:
    $3 = HEAP8[$call] | 0;
    $tobool4 = $3 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 9;
      break;
    }
   case 5:
    $tail = $e + 16 | 0;
    $head = $e + 12 | 0;
    $cnt_0 = 0;
    label = 6;
    break;
   case 6:
    $cmp7 = ($cnt_0 | 0) < 2;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      $retval_0 = 0;
      label = 9;
      break;
    }
   case 7:
    $cmp8 = ($cnt_0 | 0) < 1;
    $cond_in = $cmp8 ? $tail : $head;
    $cond = HEAP32[$cond_in >> 2] | 0;
    $4 = $cond | 0;
    $5 = HEAP32[41586] | 0;
    $call9 = _late_string($4, $5, 136112) | 0;
    $6 = HEAP8[$call9] | 0;
    $cmp11 = $6 << 24 >> 24 == 0;
    if ($cmp11) {
      $retval_0 = 1;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call13 = _selectedlayer($job, $call9) | 0;
    $tobool15 = $call13 << 24 >> 24 == 0;
    $inc = $cnt_0 + 1 | 0;
    if ($tobool15) {
      $cnt_0 = $inc;
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 9;
      break;
    }
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _bezier_bb($agg_result, $bz) {
  $agg_result = $agg_result | 0;
  $bz = $bz | 0;
  var $size = 0, $0 = 0, $cmp = 0, $rem = 0, $cmp2 = 0, $list = 0, $1 = 0, $bb_sroa_1_sroa_0_0_bb_sroa_1_16__cast35_idx = 0, $bb_sroa_1_sroa_0_0_copyload = 0.0, $bb_sroa_1_sroa_1_8_bb_sroa_1_16__cast35_idx42 = 0, $bb_sroa_1_sroa_1_8_copyload = 0.0, $2 = 0, $cmp780 = 0, $3 = 0, $4 = 0, $bb_sroa_1_sroa_0_085 = 0.0, $bb_sroa_1_sroa_1_084 = 0.0, $bb_sroa_0_sroa_0_083 = 0.0, $bb_sroa_0_sroa_1_082 = 0.0, $i_081 = 0, $p1_sroa_0_0__idx = 0, $p1_sroa_0_0_copyload = 0.0, $p1_sroa_1_8__idx58 = 0, $p1_sroa_1_8_copyload = 0.0, $inc = 0, $p2_sroa_0_0__idx = 0, $p2_sroa_0_0_copyload = 0.0, $p2_sroa_1_8__idx57 = 0, $p2_sroa_1_8_copyload = 0.0, $inc12 = 0, $add = 0.0, $div = 0.0, $add16 = 0.0, $div17 = 0.0, $cmp22 = 0, $bb_sroa_0_sroa_0_0_div = 0.0, $cmp34 = 0, $cond41 = 0.0, $cmp47 = 0, $bb_sroa_1_sroa_0_0_div = 0.0, $cmp60 = 0, $cond67 = 0.0, $p_sroa_0_0__idx = 0, $p_sroa_0_0_copyload = 0.0, $p_sroa_1_8__idx69 = 0, $p_sroa_1_8_copyload = 0.0, $cmp75 = 0, $bb_sroa_0_sroa_0_0_div_p_sroa_0_0_copyload = 0.0, $cmp88 = 0, $cond95 = 0.0, $cmp101 = 0, $bb_sroa_1_sroa_0_0_div_p_sroa_0_0_copyload = 0.0, $cmp114 = 0, $cond121 = 0.0, $inc124 = 0, $cmp7 = 0, $bb_sroa_1_sroa_0_0_lcssa = 0.0, $bb_sroa_1_sroa_1_0_lcssa = 0.0, $bb_sroa_0_sroa_0_0_lcssa = 0.0, $bb_sroa_0_sroa_1_0_lcssa = 0.0, $bb_sroa_0_sroa_0_0_bb_sroa_0_0__cast_idx = 0, $bb_sroa_0_sroa_1_8_bb_sroa_0_0__cast_idx56 = 0, $bb_sroa_1_sroa_0_0_bb_sroa_1_16__cast_idx = 0, $bb_sroa_1_sroa_1_8_bb_sroa_1_16__cast_idx48 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $bz;
  $bz = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  _memcpy($bz, tempParam, 48);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $bz + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(162152, 3382, 164608, 103312);
   case 4:
    $rem = ($0 | 0) % 3;
    $cmp2 = ($rem | 0) == 1;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    ___assert_func(162152, 3383, 164608, 102936);
   case 6:
    $list = $bz | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $bb_sroa_1_sroa_0_0_bb_sroa_1_16__cast35_idx = $1 | 0;
    $bb_sroa_1_sroa_0_0_copyload = +HEAPF64[$bb_sroa_1_sroa_0_0_bb_sroa_1_16__cast35_idx >> 3];
    $bb_sroa_1_sroa_1_8_bb_sroa_1_16__cast35_idx42 = $1 + 8 | 0;
    $bb_sroa_1_sroa_1_8_copyload = +HEAPF64[$bb_sroa_1_sroa_1_8_bb_sroa_1_16__cast35_idx42 >> 3];
    $2 = HEAP32[$size >> 2] | 0;
    $cmp780 = ($2 | 0) > 1;
    if ($cmp780) {
      label = 7;
      break;
    } else {
      $bb_sroa_0_sroa_1_0_lcssa = $bb_sroa_1_sroa_1_8_copyload;
      $bb_sroa_0_sroa_0_0_lcssa = $bb_sroa_1_sroa_0_0_copyload;
      $bb_sroa_1_sroa_1_0_lcssa = $bb_sroa_1_sroa_1_8_copyload;
      $bb_sroa_1_sroa_0_0_lcssa = $bb_sroa_1_sroa_0_0_copyload;
      label = 9;
      break;
    }
   case 7:
    $3 = HEAP32[$list >> 2] | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $i_081 = 1;
    $bb_sroa_0_sroa_1_082 = $bb_sroa_1_sroa_1_8_copyload;
    $bb_sroa_0_sroa_0_083 = $bb_sroa_1_sroa_0_0_copyload;
    $bb_sroa_1_sroa_1_084 = $bb_sroa_1_sroa_1_8_copyload;
    $bb_sroa_1_sroa_0_085 = $bb_sroa_1_sroa_0_0_copyload;
    label = 8;
    break;
   case 8:
    $p1_sroa_0_0__idx = $3 + ($i_081 << 4) | 0;
    $p1_sroa_0_0_copyload = +HEAPF64[$p1_sroa_0_0__idx >> 3];
    $p1_sroa_1_8__idx58 = $3 + ($i_081 << 4) + 8 | 0;
    $p1_sroa_1_8_copyload = +HEAPF64[$p1_sroa_1_8__idx58 >> 3];
    $inc = $i_081 + 1 | 0;
    $p2_sroa_0_0__idx = $3 + ($inc << 4) | 0;
    $p2_sroa_0_0_copyload = +HEAPF64[$p2_sroa_0_0__idx >> 3];
    $p2_sroa_1_8__idx57 = $3 + ($inc << 4) + 8 | 0;
    $p2_sroa_1_8_copyload = +HEAPF64[$p2_sroa_1_8__idx57 >> 3];
    $inc12 = $i_081 + 2 | 0;
    $add = $p1_sroa_0_0_copyload + $p2_sroa_0_0_copyload;
    $div = $add * .5;
    $add16 = $p1_sroa_1_8_copyload + $p2_sroa_1_8_copyload;
    $div17 = $add16 * .5;
    $cmp22 = $bb_sroa_0_sroa_0_083 < $div;
    $bb_sroa_0_sroa_0_0_div = $cmp22 ? $bb_sroa_0_sroa_0_083 : $div;
    $cmp34 = $bb_sroa_0_sroa_1_082 < $div17;
    $cond41 = $cmp34 ? $bb_sroa_0_sroa_1_082 : $div17;
    $cmp47 = $bb_sroa_1_sroa_0_085 > $div;
    $bb_sroa_1_sroa_0_0_div = $cmp47 ? $bb_sroa_1_sroa_0_085 : $div;
    $cmp60 = $bb_sroa_1_sroa_1_084 > $div17;
    $cond67 = $cmp60 ? $bb_sroa_1_sroa_1_084 : $div17;
    $p_sroa_0_0__idx = $3 + ($inc12 << 4) | 0;
    $p_sroa_0_0_copyload = +HEAPF64[$p_sroa_0_0__idx >> 3];
    $p_sroa_1_8__idx69 = $3 + ($inc12 << 4) + 8 | 0;
    $p_sroa_1_8_copyload = +HEAPF64[$p_sroa_1_8__idx69 >> 3];
    $cmp75 = $bb_sroa_0_sroa_0_0_div < $p_sroa_0_0_copyload;
    $bb_sroa_0_sroa_0_0_div_p_sroa_0_0_copyload = $cmp75 ? $bb_sroa_0_sroa_0_0_div : $p_sroa_0_0_copyload;
    $cmp88 = $cond41 < $p_sroa_1_8_copyload;
    $cond95 = $cmp88 ? $cond41 : $p_sroa_1_8_copyload;
    $cmp101 = $bb_sroa_1_sroa_0_0_div > $p_sroa_0_0_copyload;
    $bb_sroa_1_sroa_0_0_div_p_sroa_0_0_copyload = $cmp101 ? $bb_sroa_1_sroa_0_0_div : $p_sroa_0_0_copyload;
    $cmp114 = $cond67 > $p_sroa_1_8_copyload;
    $cond121 = $cmp114 ? $cond67 : $p_sroa_1_8_copyload;
    $inc124 = $i_081 + 3 | 0;
    $cmp7 = ($inc124 | 0) < ($4 | 0);
    if ($cmp7) {
      $i_081 = $inc124;
      $bb_sroa_0_sroa_1_082 = $cond95;
      $bb_sroa_0_sroa_0_083 = $bb_sroa_0_sroa_0_0_div_p_sroa_0_0_copyload;
      $bb_sroa_1_sroa_1_084 = $cond121;
      $bb_sroa_1_sroa_0_085 = $bb_sroa_1_sroa_0_0_div_p_sroa_0_0_copyload;
      label = 8;
      break;
    } else {
      $bb_sroa_0_sroa_1_0_lcssa = $cond95;
      $bb_sroa_0_sroa_0_0_lcssa = $bb_sroa_0_sroa_0_0_div_p_sroa_0_0_copyload;
      $bb_sroa_1_sroa_1_0_lcssa = $cond121;
      $bb_sroa_1_sroa_0_0_lcssa = $bb_sroa_1_sroa_0_0_div_p_sroa_0_0_copyload;
      label = 9;
      break;
    }
   case 9:
    $bb_sroa_0_sroa_0_0_bb_sroa_0_0__cast_idx = $agg_result | 0;
    HEAPF64[$bb_sroa_0_sroa_0_0_bb_sroa_0_0__cast_idx >> 3] = $bb_sroa_0_sroa_0_0_lcssa;
    $bb_sroa_0_sroa_1_8_bb_sroa_0_0__cast_idx56 = $agg_result + 8 | 0;
    HEAPF64[$bb_sroa_0_sroa_1_8_bb_sroa_0_0__cast_idx56 >> 3] = $bb_sroa_0_sroa_1_0_lcssa;
    $bb_sroa_1_sroa_0_0_bb_sroa_1_16__cast_idx = $agg_result + 16 | 0;
    HEAPF64[$bb_sroa_1_sroa_0_0_bb_sroa_1_16__cast_idx >> 3] = $bb_sroa_1_sroa_0_0_lcssa;
    $bb_sroa_1_sroa_1_8_bb_sroa_1_16__cast_idx48 = $agg_result + 24 | 0;
    HEAPF64[$bb_sroa_1_sroa_1_8_bb_sroa_1_16__cast_idx48 >> 3] = $bb_sroa_1_sroa_1_0_lcssa;
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_begin_edge($job, $e, $styles) {
  $job = $job | 0;
  $e = $e | 0;
  $styles = $styles | 0;
  var $pbs = 0, $pbs_n = 0, $pbs_poly_n = 0, $xb = 0, $xbuf = 0, $flags1 = 0, $0 = 0, $call = 0, $type = 0, $1 = 0, $e_c = 0, $emit_state = 0, $tobool = 0, $spl = 0, $2 = 0, $tobool4 = 0, $3 = 0, $tobool5 = 0, $4 = 0, $index = 0, $5 = 0, $call7 = 0, $tobool8 = 0, $6 = 0, $tobool10 = 0, $call12 = 0.0, $and = 0, $tobool14 = 0, $tail = 0, $7 = 0, $graph = 0, $8 = 0, $odim = 0, $9 = 0, $cmp = 0, $pos = 0, $10 = 0, $arrayidx22 = 0, $11 = 0.0, $mul = 0.0, $cmp23 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv30 = 0, $conv37 = 0.0, $tail_z = 0, $head = 0, $12 = 0, $pos39 = 0, $13 = 0, $arrayidx40 = 0, $14 = 0.0, $mul41 = 0.0, $cmp42 = 0, $add50 = 0.0, $sub58 = 0.0, $add50_sink = 0.0, $conv51 = 0, $conv62 = 0.0, $head_z = 0, $tail_z64 = 0, $15 = 0, $and67 = 0, $tobool68 = 0, $label = 0, $16 = 0, $tobool71 = 0, $text = 0, $17 = 0, $label73 = 0, $label75 = 0, $18 = 0, $xlabel = 0, $headlabel = 0, $taillabel = 0, $xlabel77 = 0, $19 = 0, $tobool78 = 0, $text80 = 0, $20 = 0, $tail_label = 0, $21 = 0, $tobool84 = 0, $text86 = 0, $22 = 0, $head_label = 0, $23 = 0, $tobool90 = 0, $text92 = 0, $24 = 0, $and96 = 0, $tobool97 = 0, $arraydecay = 0, $25 = 0, $call99 = 0, $call100 = 0, $id = 0, $call101 = 0, $tobool102 = 0, $26 = 0, $tobool106 = 0, $call107 = 0, $tobool108 = 0, $27 = 0, $tobool112 = 0, $s_0 = 0, $call114 = 0, $dflt_url_0 = 0, $call116 = 0, $tobool117 = 0, $28 = 0, $tobool121 = 0, $call123 = 0, $tobool124 = 0, $29 = 0, $tobool128 = 0, $s_1 = 0, $call130 = 0, $url = 0, $tobool132 = 0, $call134 = 0, $url135 = 0, $call138 = 0, $tobool139 = 0, $30 = 0, $tobool143 = 0, $call145 = 0, $tobool146 = 0, $31 = 0, $tobool150 = 0, $s_2 = 0, $call152 = 0, $labelurl = 0, $tobool154 = 0, $call156 = 0, $labelurl157 = 0, $call160 = 0, $tobool161 = 0, $32 = 0, $tobool165 = 0, $call167 = 0, $tobool168 = 0, $33 = 0, $tobool172 = 0, $s_3 = 0, $call174 = 0, $tailurl = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $tobool176 = 0, $call178 = 0, $tailurl179 = 0, $call182 = 0, $tobool183 = 0, $38 = 0, $tobool187 = 0, $call189 = 0, $tobool190 = 0, $39 = 0, $tobool194 = 0, $s_4 = 0, $call196 = 0, $headurl = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $tobool199 = 0, $call201 = 0, $headurl202 = 0, $dflt_url_1 = 0, $and206 = 0, $tobool207 = 0, $44 = 0, $call209 = 0, $tobool210 = 0, $45 = 0, $tobool214 = 0, $call216 = 0, $dflt_target_0 = 0, $call218 = 0, $tobool219 = 0, $46 = 0, $tobool223 = 0, $47 = 0, $48 = 0, $49 = 0, $50 = 0, $call226 = 0, $target = 0, $tobool228 = 0, $call230 = 0, $target231 = 0, $call234 = 0, $tobool235 = 0, $51 = 0, $tobool239 = 0, $call241 = 0, $labeltarget = 0, $tobool243 = 0, $call245 = 0, $labeltarget246 = 0, $call249 = 0, $tobool250 = 0, $52 = 0, $tobool254 = 0, $call256 = 0, $tailtarget = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $tobool259 = 0, $call261 = 0, $tailtarget262 = 0, $call265 = 0, $tobool266 = 0, $57 = 0, $tobool270 = 0, $58 = 0, $59 = 0, $60 = 0, $61 = 0, $call273 = 0, $headtarget = 0, $tobool275 = 0, $call277 = 0, $headtarget278 = 0, $dflt_target_1 = 0, $and282 = 0, $tobool283 = 0, $62 = 0, $call285 = 0, $tobool286 = 0, $63 = 0, $tobool290 = 0, $call292 = 0, $tobool293 = 0, $64 = 0, $tobool297 = 0, $s_5 = 0, $call299 = 0, $tooltip = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $label302 = 0, $69 = 0, $tobool303 = 0, $call306 = 0, $tooltip307 = 0, $call310 = 0, $tobool311 = 0, $70 = 0, $tobool315 = 0, $call317 = 0, $labeltooltip = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $label320 = 0, $75 = 0, $tobool321 = 0, $call324 = 0, $labeltooltip325 = 0, $call328 = 0, $tobool329 = 0, $76 = 0, $tobool333 = 0, $call335 = 0, $tailtooltip = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $taillabel338 = 0, $81 = 0, $tobool339 = 0, $call342 = 0, $tailtooltip343 = 0, $call346 = 0, $tobool347 = 0, $82 = 0, $tobool351 = 0, $call353 = 0, $headtooltip = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $headlabel356 = 0, $87 = 0, $tobool357 = 0, $call360 = 0, $headtooltip361 = 0, $and365 = 0, $tobool366 = 0, $spl369 = 0, $88 = 0, $tobool370 = 0, $url372 = 0, $89 = 0, $tobool373 = 0, $tooltip375 = 0, $90 = 0, $tobool376 = 0, $and378 = 0, $tobool379 = 0, $obj382 = 0, $91 = 0, $penwidth383 = 0, $92 = 0.0, $div = 0.0, $cmp384 = 0, $cond392 = 0.0, $93 = 0, $size = 0, $94 = 0, $cmp395201 = 0, $list = 0, $i_0202 = 0, $95 = 0, $add_ptr = 0, $inc = 0, $cmp395 = 0, $96 = 0, $url_bsplinemap_poly_n = 0, $97 = 0, $url_bsplinemap_n = 0, $and397 = 0, $tobool398 = 0, $98 = 0, $cmp401198 = 0, $99 = 0, $100 = 0, $nump_0200 = 0, $i_1199 = 0, $arrayidx404 = 0, $101 = 0, $add405 = 0, $inc407 = 0, $cmp401 = 0, $nump_0_lcssa = 0, $102 = 0, $call409 = 0, $103 = 0, $url_bsplinemap_p = 0, $url_map_shape = 0, $104 = 0, $url_map_p = 0, $105 = 0, $106 = 0, $url_map_n = 0, $url414 = 0, $107 = 0, $tobool415 = 0, $108 = 0, $109 = 0, $110 = 0, $_mask = 0, $tobool418 = 0, $111 = 0, $tooltip421 = 0, $112 = 0, $target422 = 0, $113 = 0, $id423 = 0, $114 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 168 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pbs = __stackBase__ | 0;
    $pbs_n = __stackBase__ + 8 | 0;
    $pbs_poly_n = __stackBase__ + 16 | 0;
    $xb = __stackBase__ + 24 | 0;
    $xbuf = __stackBase__ + 40 | 0;
    $flags1 = $job + 152 | 0;
    $0 = HEAP32[$flags1 >> 2] | 0;
    HEAP32[$pbs >> 2] = 0;
    HEAP32[$pbs_n >> 2] = 0;
    HEAP32[$pbs_poly_n >> 2] = 0;
    $call = _push_obj_state($job) | 0;
    $type = $call + 4 | 0;
    HEAP32[$type >> 2] = 3;
    $1 = $call + 8 | 0;
    $e_c = $e;
    HEAP32[$1 >> 2] = $e_c;
    $emit_state = $call + 12 | 0;
    HEAP32[$emit_state >> 2] = 9;
    $tobool = ($styles | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $spl = $e + 24 | 0;
    $2 = HEAP32[$spl >> 2] | 0;
    $tobool4 = ($2 | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _gvrender_set_style($job, $styles);
    label = 5;
    break;
   case 5:
    $3 = HEAP32[41916] | 0;
    $tobool5 = ($3 | 0) == 0;
    if ($tobool5) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = $e | 0;
    $index = $3 + 8 | 0;
    $5 = HEAP32[$index >> 2] | 0;
    $call7 = _agxget($4, $5) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $6 = HEAP8[$call7] | 0;
    $tobool10 = $6 << 24 >> 24 == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call12 = +_late_double($4, $3, 1.0, 0.0);
    _gvrender_set_penwidth($job, $call12);
    label = 9;
    break;
   case 9:
    $and = $0 & 16777216;
    $tobool14 = ($and | 0) == 0;
    if ($tobool14) {
      label = 19;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $tail = $e + 16 | 0;
    $7 = HEAP32[$tail >> 2] | 0;
    $graph = $7 + 20 | 0;
    $8 = HEAP32[$graph >> 2] | 0;
    $odim = $8 + 210 | 0;
    $9 = HEAP16[$odim >> 1] | 0;
    $cmp = ($9 & 65535) > 2;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 18;
      break;
    }
   case 11:
    $pos = $7 + 148 | 0;
    $10 = HEAP32[$pos >> 2] | 0;
    $arrayidx22 = $10 + 16 | 0;
    $11 = +HEAPF64[$arrayidx22 >> 3];
    $mul = $11 * 72.0;
    $cmp23 = $mul < 0.0;
    if ($cmp23) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add = $mul + .5;
    $add_sink = $add;
    label = 14;
    break;
   case 13:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 14;
    break;
   case 14:
    $conv30 = ~~$add_sink;
    $conv37 = +($conv30 | 0);
    $tail_z = $call + 128 | 0;
    HEAPF64[$tail_z >> 3] = $conv37;
    $head = $e + 12 | 0;
    $12 = HEAP32[$head >> 2] | 0;
    $pos39 = $12 + 148 | 0;
    $13 = HEAP32[$pos39 >> 2] | 0;
    $arrayidx40 = $13 + 16 | 0;
    $14 = +HEAPF64[$arrayidx40 >> 3];
    $mul41 = $14 * 72.0;
    $cmp42 = $mul41 < 0.0;
    if ($cmp42) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add50 = $mul41 + .5;
    $add50_sink = $add50;
    label = 17;
    break;
   case 16:
    $sub58 = $mul41 + -.5;
    $add50_sink = $sub58;
    label = 17;
    break;
   case 17:
    $conv51 = ~~$add50_sink;
    $conv62 = +($conv51 | 0);
    $head_z = $call + 136 | 0;
    HEAPF64[$head_z >> 3] = $conv62;
    label = 19;
    break;
   case 18:
    $tail_z64 = $call + 128 | 0;
    $15 = $tail_z64;
    _memset($15 | 0, 0, 16);
    label = 19;
    break;
   case 19:
    $and67 = $0 & 32768;
    $tobool68 = ($and67 | 0) == 0;
    if ($tobool68) {
      label = 28;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $label = $e + 112 | 0;
    $16 = HEAP32[$label >> 2] | 0;
    $tobool71 = ($16 | 0) == 0;
    if ($tobool71) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $text = $16 | 0;
    $17 = HEAP32[$text >> 2] | 0;
    $label73 = $call + 144 | 0;
    HEAP32[$label73 >> 2] = $17;
    label = 22;
    break;
   case 22:
    $label75 = $call + 144 | 0;
    $18 = HEAP32[$label75 >> 2] | 0;
    $xlabel = $call + 148 | 0;
    HEAP32[$xlabel >> 2] = $18;
    $headlabel = $call + 156 | 0;
    HEAP32[$headlabel >> 2] = $18;
    $taillabel = $call + 152 | 0;
    HEAP32[$taillabel >> 2] = $18;
    $xlabel77 = $e + 124 | 0;
    $19 = HEAP32[$xlabel77 >> 2] | 0;
    $tobool78 = ($19 | 0) == 0;
    if ($tobool78) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $text80 = $19 | 0;
    $20 = HEAP32[$text80 >> 2] | 0;
    HEAP32[$xlabel >> 2] = $20;
    label = 24;
    break;
   case 24:
    $tail_label = $e + 120 | 0;
    $21 = HEAP32[$tail_label >> 2] | 0;
    $tobool84 = ($21 | 0) == 0;
    if ($tobool84) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $text86 = $21 | 0;
    $22 = HEAP32[$text86 >> 2] | 0;
    HEAP32[$taillabel >> 2] = $22;
    label = 26;
    break;
   case 26:
    $head_label = $e + 116 | 0;
    $23 = HEAP32[$head_label >> 2] | 0;
    $tobool90 = ($23 | 0) == 0;
    if ($tobool90) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $text92 = $23 | 0;
    $24 = HEAP32[$text92 >> 2] | 0;
    HEAP32[$headlabel >> 2] = $24;
    label = 28;
    break;
   case 28:
    $and96 = $0 & 65536;
    $tobool97 = ($and96 | 0) == 0;
    if ($tobool97) {
      $dflt_url_1 = 0;
      label = 62;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $arraydecay = $xbuf | 0;
    _agxbinit($xb, 128, $arraydecay);
    $25 = $e | 0;
    $call99 = _getObjId($job, $25, $xb) | 0;
    $call100 = _strdup_and_subst_obj($call99, $25) | 0;
    $id = $call + 164 | 0;
    HEAP32[$id >> 2] = $call100;
    _agxbfree($xb);
    $call101 = _agget($25, 95856) | 0;
    $tobool102 = ($call101 | 0) == 0;
    if ($tobool102) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $26 = HEAP8[$call101] | 0;
    $tobool106 = $26 << 24 >> 24 == 0;
    if ($tobool106) {
      label = 31;
      break;
    } else {
      $s_0 = $call101;
      label = 33;
      break;
    }
   case 31:
    $call107 = _agget($25, 95472) | 0;
    $tobool108 = ($call107 | 0) == 0;
    if ($tobool108) {
      $dflt_url_0 = 0;
      label = 34;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $27 = HEAP8[$call107] | 0;
    $tobool112 = $27 << 24 >> 24 == 0;
    if ($tobool112) {
      $dflt_url_0 = 0;
      label = 34;
      break;
    } else {
      $s_0 = $call107;
      label = 33;
      break;
    }
   case 33:
    $call114 = _strdup_and_subst_obj($s_0, $25) | 0;
    $dflt_url_0 = $call114;
    label = 34;
    break;
   case 34:
    $call116 = _agget($25, 95120) | 0;
    $tobool117 = ($call116 | 0) == 0;
    if ($tobool117) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $28 = HEAP8[$call116] | 0;
    $tobool121 = $28 << 24 >> 24 == 0;
    if ($tobool121) {
      label = 36;
      break;
    } else {
      $s_1 = $call116;
      label = 38;
      break;
    }
   case 36:
    $call123 = _agget($25, 94832) | 0;
    $tobool124 = ($call123 | 0) == 0;
    if ($tobool124) {
      label = 39;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $29 = HEAP8[$call123] | 0;
    $tobool128 = $29 << 24 >> 24 == 0;
    if ($tobool128) {
      label = 39;
      break;
    } else {
      $s_1 = $call123;
      label = 38;
      break;
    }
   case 38:
    $call130 = _strdup_and_subst_obj($s_1, $25) | 0;
    $url = $call + 160 | 0;
    HEAP32[$url >> 2] = $call130;
    label = 41;
    break;
   case 39:
    $tobool132 = ($dflt_url_0 | 0) == 0;
    if ($tobool132) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $call134 = _strdup($dflt_url_0 | 0) | 0;
    $url135 = $call + 160 | 0;
    HEAP32[$url135 >> 2] = $call134;
    label = 41;
    break;
   case 41:
    $call138 = _agget($25, 94544) | 0;
    $tobool139 = ($call138 | 0) == 0;
    if ($tobool139) {
      label = 43;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $30 = HEAP8[$call138] | 0;
    $tobool143 = $30 << 24 >> 24 == 0;
    if ($tobool143) {
      label = 43;
      break;
    } else {
      $s_2 = $call138;
      label = 45;
      break;
    }
   case 43:
    $call145 = _agget($25, 94208) | 0;
    $tobool146 = ($call145 | 0) == 0;
    if ($tobool146) {
      label = 46;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $31 = HEAP8[$call145] | 0;
    $tobool150 = $31 << 24 >> 24 == 0;
    if ($tobool150) {
      label = 46;
      break;
    } else {
      $s_2 = $call145;
      label = 45;
      break;
    }
   case 45:
    $call152 = _strdup_and_subst_obj($s_2, $25) | 0;
    $labelurl = $call + 168 | 0;
    HEAP32[$labelurl >> 2] = $call152;
    label = 48;
    break;
   case 46:
    $tobool154 = ($dflt_url_0 | 0) == 0;
    if ($tobool154) {
      label = 48;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $call156 = _strdup($dflt_url_0 | 0) | 0;
    $labelurl157 = $call + 168 | 0;
    HEAP32[$labelurl157 >> 2] = $call156;
    label = 48;
    break;
   case 48:
    $call160 = _agget($25, 93872) | 0;
    $tobool161 = ($call160 | 0) == 0;
    if ($tobool161) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $32 = HEAP8[$call160] | 0;
    $tobool165 = $32 << 24 >> 24 == 0;
    if ($tobool165) {
      label = 50;
      break;
    } else {
      $s_3 = $call160;
      label = 52;
      break;
    }
   case 50:
    $call167 = _agget($25, 93488) | 0;
    $tobool168 = ($call167 | 0) == 0;
    if ($tobool168) {
      label = 53;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $33 = HEAP8[$call167] | 0;
    $tobool172 = $33 << 24 >> 24 == 0;
    if ($tobool172) {
      label = 53;
      break;
    } else {
      $s_3 = $call167;
      label = 52;
      break;
    }
   case 52:
    $call174 = _strdup_and_subst_obj($s_3, $25) | 0;
    $tailurl = $call + 172 | 0;
    HEAP32[$tailurl >> 2] = $call174;
    $34 = $call + 212 | 0;
    $35 = $34;
    $36 = HEAP32[$35 >> 2] | 0;
    $37 = $36 | 128;
    HEAP32[$35 >> 2] = $37;
    label = 55;
    break;
   case 53:
    $tobool176 = ($dflt_url_0 | 0) == 0;
    if ($tobool176) {
      label = 55;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    $call178 = _strdup($dflt_url_0 | 0) | 0;
    $tailurl179 = $call + 172 | 0;
    HEAP32[$tailurl179 >> 2] = $call178;
    label = 55;
    break;
   case 55:
    $call182 = _agget($25, 93168) | 0;
    $tobool183 = ($call182 | 0) == 0;
    if ($tobool183) {
      label = 57;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $38 = HEAP8[$call182] | 0;
    $tobool187 = $38 << 24 >> 24 == 0;
    if ($tobool187) {
      label = 57;
      break;
    } else {
      $s_4 = $call182;
      label = 59;
      break;
    }
   case 57:
    $call189 = _agget($25, 92824) | 0;
    $tobool190 = ($call189 | 0) == 0;
    if ($tobool190) {
      label = 60;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $39 = HEAP8[$call189] | 0;
    $tobool194 = $39 << 24 >> 24 == 0;
    if ($tobool194) {
      label = 60;
      break;
    } else {
      $s_4 = $call189;
      label = 59;
      break;
    }
   case 59:
    $call196 = _strdup_and_subst_obj($s_4, $25) | 0;
    $headurl = $call + 176 | 0;
    HEAP32[$headurl >> 2] = $call196;
    $40 = $call + 212 | 0;
    $41 = $40;
    $42 = HEAP32[$41 >> 2] | 0;
    $43 = $42 | 256;
    HEAP32[$41 >> 2] = $43;
    $dflt_url_1 = $dflt_url_0;
    label = 62;
    break;
   case 60:
    $tobool199 = ($dflt_url_0 | 0) == 0;
    if ($tobool199) {
      $dflt_url_1 = 0;
      label = 62;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    $call201 = _strdup($dflt_url_0 | 0) | 0;
    $headurl202 = $call + 176 | 0;
    HEAP32[$headurl202 >> 2] = $call201;
    $dflt_url_1 = $dflt_url_0;
    label = 62;
    break;
   case 62:
    $and206 = $0 & 8388608;
    $tobool207 = ($and206 | 0) == 0;
    if ($tobool207) {
      $dflt_target_1 = 0;
      label = 86;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $44 = $e | 0;
    $call209 = _agget($44, 92456) | 0;
    $tobool210 = ($call209 | 0) == 0;
    if ($tobool210) {
      $dflt_target_0 = 0;
      label = 66;
      break;
    } else {
      label = 64;
      break;
    }
   case 64:
    $45 = HEAP8[$call209] | 0;
    $tobool214 = $45 << 24 >> 24 == 0;
    if ($tobool214) {
      $dflt_target_0 = 0;
      label = 66;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $call216 = _strdup_and_subst_obj($call209, $44) | 0;
    $dflt_target_0 = $call216;
    label = 66;
    break;
   case 66:
    $call218 = _agget($44, 91968) | 0;
    $tobool219 = ($call218 | 0) == 0;
    if ($tobool219) {
      label = 69;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $46 = HEAP8[$call218] | 0;
    $tobool223 = $46 << 24 >> 24 == 0;
    if ($tobool223) {
      label = 69;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $47 = $call + 212 | 0;
    $48 = $47;
    $49 = HEAP32[$48 >> 2] | 0;
    $50 = $49 | 64;
    HEAP32[$48 >> 2] = $50;
    $call226 = _strdup_and_subst_obj($call218, $44) | 0;
    $target = $call + 196 | 0;
    HEAP32[$target >> 2] = $call226;
    label = 71;
    break;
   case 69:
    $tobool228 = ($dflt_target_0 | 0) == 0;
    if ($tobool228) {
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $call230 = _strdup($dflt_target_0 | 0) | 0;
    $target231 = $call + 196 | 0;
    HEAP32[$target231 >> 2] = $call230;
    label = 71;
    break;
   case 71:
    $call234 = _agget($44, 91616) | 0;
    $tobool235 = ($call234 | 0) == 0;
    if ($tobool235) {
      label = 74;
      break;
    } else {
      label = 72;
      break;
    }
   case 72:
    $51 = HEAP8[$call234] | 0;
    $tobool239 = $51 << 24 >> 24 == 0;
    if ($tobool239) {
      label = 74;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $call241 = _strdup_and_subst_obj($call234, $44) | 0;
    $labeltarget = $call + 200 | 0;
    HEAP32[$labeltarget >> 2] = $call241;
    label = 76;
    break;
   case 74:
    $tobool243 = ($dflt_target_0 | 0) == 0;
    if ($tobool243) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $call245 = _strdup($dflt_target_0 | 0) | 0;
    $labeltarget246 = $call + 200 | 0;
    HEAP32[$labeltarget246 >> 2] = $call245;
    label = 76;
    break;
   case 76:
    $call249 = _agget($44, 91328) | 0;
    $tobool250 = ($call249 | 0) == 0;
    if ($tobool250) {
      label = 79;
      break;
    } else {
      label = 77;
      break;
    }
   case 77:
    $52 = HEAP8[$call249] | 0;
    $tobool254 = $52 << 24 >> 24 == 0;
    if ($tobool254) {
      label = 79;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $call256 = _strdup_and_subst_obj($call249, $44) | 0;
    $tailtarget = $call + 204 | 0;
    HEAP32[$tailtarget >> 2] = $call256;
    $53 = $call + 212 | 0;
    $54 = $53;
    $55 = HEAP32[$54 >> 2] | 0;
    $56 = $55 | 16;
    HEAP32[$54 >> 2] = $56;
    label = 81;
    break;
   case 79:
    $tobool259 = ($dflt_target_0 | 0) == 0;
    if ($tobool259) {
      label = 81;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    $call261 = _strdup($dflt_target_0 | 0) | 0;
    $tailtarget262 = $call + 204 | 0;
    HEAP32[$tailtarget262 >> 2] = $call261;
    label = 81;
    break;
   case 81:
    $call265 = _agget($44, 90976) | 0;
    $tobool266 = ($call265 | 0) == 0;
    if ($tobool266) {
      label = 84;
      break;
    } else {
      label = 82;
      break;
    }
   case 82:
    $57 = HEAP8[$call265] | 0;
    $tobool270 = $57 << 24 >> 24 == 0;
    if ($tobool270) {
      label = 84;
      break;
    } else {
      label = 83;
      break;
    }
   case 83:
    $58 = $call + 212 | 0;
    $59 = $58;
    $60 = HEAP32[$59 >> 2] | 0;
    $61 = $60 | 32;
    HEAP32[$59 >> 2] = $61;
    $call273 = _strdup_and_subst_obj($call265, $44) | 0;
    $headtarget = $call + 208 | 0;
    HEAP32[$headtarget >> 2] = $call273;
    $dflt_target_1 = $dflt_target_0;
    label = 86;
    break;
   case 84:
    $tobool275 = ($dflt_target_0 | 0) == 0;
    if ($tobool275) {
      $dflt_target_1 = 0;
      label = 86;
      break;
    } else {
      label = 85;
      break;
    }
   case 85:
    $call277 = _strdup($dflt_target_0 | 0) | 0;
    $headtarget278 = $call + 208 | 0;
    HEAP32[$headtarget278 >> 2] = $call277;
    $dflt_target_1 = $dflt_target_0;
    label = 86;
    break;
   case 86:
    $and282 = $0 & 4194304;
    $tobool283 = ($and282 | 0) == 0;
    if ($tobool283) {
      label = 109;
      break;
    } else {
      label = 87;
      break;
    }
   case 87:
    $62 = $e | 0;
    $call285 = _agget($62, 90704) | 0;
    $tobool286 = ($call285 | 0) == 0;
    if ($tobool286) {
      label = 89;
      break;
    } else {
      label = 88;
      break;
    }
   case 88:
    $63 = HEAP8[$call285] | 0;
    $tobool290 = $63 << 24 >> 24 == 0;
    if ($tobool290) {
      label = 89;
      break;
    } else {
      $s_5 = $call285;
      label = 91;
      break;
    }
   case 89:
    $call292 = _agget($62, 90384) | 0;
    $tobool293 = ($call292 | 0) == 0;
    if ($tobool293) {
      label = 92;
      break;
    } else {
      label = 90;
      break;
    }
   case 90:
    $64 = HEAP8[$call292] | 0;
    $tobool297 = $64 << 24 >> 24 == 0;
    if ($tobool297) {
      label = 92;
      break;
    } else {
      $s_5 = $call292;
      label = 91;
      break;
    }
   case 91:
    $call299 = _strdup_and_subst_obj($s_5, $62) | 0;
    $tooltip = $call + 180 | 0;
    HEAP32[$tooltip >> 2] = $call299;
    $65 = $call + 212 | 0;
    $66 = $65;
    $67 = HEAP32[$66 >> 2] | 0;
    $68 = $67 | 1;
    HEAP32[$66 >> 2] = $68;
    label = 94;
    break;
   case 92:
    $label302 = $call + 144 | 0;
    $69 = HEAP32[$label302 >> 2] | 0;
    $tobool303 = ($69 | 0) == 0;
    if ($tobool303) {
      label = 94;
      break;
    } else {
      label = 93;
      break;
    }
   case 93:
    $call306 = _strdup($69 | 0) | 0;
    $tooltip307 = $call + 180 | 0;
    HEAP32[$tooltip307 >> 2] = $call306;
    label = 94;
    break;
   case 94:
    $call310 = _agget($62, 90080) | 0;
    $tobool311 = ($call310 | 0) == 0;
    if ($tobool311) {
      label = 97;
      break;
    } else {
      label = 95;
      break;
    }
   case 95:
    $70 = HEAP8[$call310] | 0;
    $tobool315 = $70 << 24 >> 24 == 0;
    if ($tobool315) {
      label = 97;
      break;
    } else {
      label = 96;
      break;
    }
   case 96:
    $call317 = _strdup_and_subst_obj($call310, $62) | 0;
    $labeltooltip = $call + 184 | 0;
    HEAP32[$labeltooltip >> 2] = $call317;
    $71 = $call + 212 | 0;
    $72 = $71;
    $73 = HEAP32[$72 >> 2] | 0;
    $74 = $73 | 8;
    HEAP32[$72 >> 2] = $74;
    label = 99;
    break;
   case 97:
    $label320 = $call + 144 | 0;
    $75 = HEAP32[$label320 >> 2] | 0;
    $tobool321 = ($75 | 0) == 0;
    if ($tobool321) {
      label = 99;
      break;
    } else {
      label = 98;
      break;
    }
   case 98:
    $call324 = _strdup($75 | 0) | 0;
    $labeltooltip325 = $call + 184 | 0;
    HEAP32[$labeltooltip325 >> 2] = $call324;
    label = 99;
    break;
   case 99:
    $call328 = _agget($62, 163232) | 0;
    $tobool329 = ($call328 | 0) == 0;
    if ($tobool329) {
      label = 102;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $76 = HEAP8[$call328] | 0;
    $tobool333 = $76 << 24 >> 24 == 0;
    if ($tobool333) {
      label = 102;
      break;
    } else {
      label = 101;
      break;
    }
   case 101:
    $call335 = _strdup_and_subst_obj($call328, $62) | 0;
    $tailtooltip = $call + 188 | 0;
    HEAP32[$tailtooltip >> 2] = $call335;
    $77 = $call + 212 | 0;
    $78 = $77;
    $79 = HEAP32[$78 >> 2] | 0;
    $80 = $79 | 2;
    HEAP32[$78 >> 2] = $80;
    label = 104;
    break;
   case 102:
    $taillabel338 = $call + 152 | 0;
    $81 = HEAP32[$taillabel338 >> 2] | 0;
    $tobool339 = ($81 | 0) == 0;
    if ($tobool339) {
      label = 104;
      break;
    } else {
      label = 103;
      break;
    }
   case 103:
    $call342 = _strdup($81 | 0) | 0;
    $tailtooltip343 = $call + 188 | 0;
    HEAP32[$tailtooltip343 >> 2] = $call342;
    label = 104;
    break;
   case 104:
    $call346 = _agget($62, 162944) | 0;
    $tobool347 = ($call346 | 0) == 0;
    if ($tobool347) {
      label = 107;
      break;
    } else {
      label = 105;
      break;
    }
   case 105:
    $82 = HEAP8[$call346] | 0;
    $tobool351 = $82 << 24 >> 24 == 0;
    if ($tobool351) {
      label = 107;
      break;
    } else {
      label = 106;
      break;
    }
   case 106:
    $call353 = _strdup_and_subst_obj($call346, $62) | 0;
    $headtooltip = $call + 192 | 0;
    HEAP32[$headtooltip >> 2] = $call353;
    $83 = $call + 212 | 0;
    $84 = $83;
    $85 = HEAP32[$84 >> 2] | 0;
    $86 = $85 | 4;
    HEAP32[$84 >> 2] = $86;
    label = 109;
    break;
   case 107:
    $headlabel356 = $call + 156 | 0;
    $87 = HEAP32[$headlabel356 >> 2] | 0;
    $tobool357 = ($87 | 0) == 0;
    if ($tobool357) {
      label = 109;
      break;
    } else {
      label = 108;
      break;
    }
   case 108:
    $call360 = _strdup($87 | 0) | 0;
    $headtooltip361 = $call + 192 | 0;
    HEAP32[$headtooltip361 >> 2] = $call360;
    label = 109;
    break;
   case 109:
    _free($dflt_url_1);
    _free($dflt_target_1);
    $and365 = $0 & 4259840;
    $tobool366 = ($and365 | 0) == 0;
    if ($tobool366) {
      label = 123;
      break;
    } else {
      label = 110;
      break;
    }
   case 110:
    $spl369 = $e + 24 | 0;
    $88 = HEAP32[$spl369 >> 2] | 0;
    $tobool370 = ($88 | 0) == 0;
    if ($tobool370) {
      label = 123;
      break;
    } else {
      label = 111;
      break;
    }
   case 111:
    $url372 = $call + 160 | 0;
    $89 = HEAP32[$url372 >> 2] | 0;
    $tobool373 = ($89 | 0) == 0;
    if ($tobool373) {
      label = 112;
      break;
    } else {
      label = 113;
      break;
    }
   case 112:
    $tooltip375 = $call + 180 | 0;
    $90 = HEAP32[$tooltip375 >> 2] | 0;
    $tobool376 = ($90 | 0) == 0;
    if ($tobool376) {
      label = 123;
      break;
    } else {
      label = 113;
      break;
    }
   case 113:
    $and378 = $0 & 524288;
    $tobool379 = ($and378 | 0) == 0;
    if ($tobool379) {
      label = 123;
      break;
    } else {
      label = 114;
      break;
    }
   case 114:
    $obj382 = $job + 16 | 0;
    $91 = HEAP32[$obj382 >> 2] | 0;
    $penwidth383 = $91 + 104 | 0;
    $92 = +HEAPF64[$penwidth383 >> 3];
    $div = $92 * .5;
    $cmp384 = $div > 2.0;
    $cond392 = $cmp384 ? $div : 2.0;
    $93 = HEAP32[$spl369 >> 2] | 0;
    $size = $93 + 4 | 0;
    $94 = HEAP32[$size >> 2] | 0;
    $cmp395201 = ($94 | 0) > 0;
    if ($cmp395201) {
      label = 115;
      break;
    } else {
      label = 117;
      break;
    }
   case 115:
    $list = $93 | 0;
    $i_0202 = 0;
    label = 116;
    break;
   case 116:
    $95 = HEAP32[$list >> 2] | 0;
    $add_ptr = $95 + ($i_0202 * 48 & -1) | 0;
    _map_output_bspline($pbs, $pbs_n, $pbs_poly_n, $add_ptr, $cond392);
    $inc = $i_0202 + 1 | 0;
    $cmp395 = ($inc | 0) < ($94 | 0);
    if ($cmp395) {
      $i_0202 = $inc;
      label = 116;
      break;
    } else {
      label = 117;
      break;
    }
   case 117:
    $96 = HEAP32[$pbs_poly_n >> 2] | 0;
    $url_bsplinemap_poly_n = $call + 228 | 0;
    HEAP32[$url_bsplinemap_poly_n >> 2] = $96;
    $97 = HEAP32[$pbs_n >> 2] | 0;
    $url_bsplinemap_n = $call + 232 | 0;
    HEAP32[$url_bsplinemap_n >> 2] = $97;
    $and397 = $0 & 8192;
    $tobool398 = ($and397 | 0) == 0;
    if ($tobool398) {
      label = 118;
      break;
    } else {
      label = 122;
      break;
    }
   case 118:
    $98 = HEAP32[$pbs_poly_n >> 2] | 0;
    $cmp401198 = ($98 | 0) > 0;
    if ($cmp401198) {
      label = 119;
      break;
    } else {
      $nump_0_lcssa = 0;
      label = 121;
      break;
    }
   case 119:
    $99 = HEAP32[$pbs_n >> 2] | 0;
    $100 = HEAP32[$pbs_poly_n >> 2] | 0;
    $i_1199 = 0;
    $nump_0200 = 0;
    label = 120;
    break;
   case 120:
    $arrayidx404 = $99 + ($i_1199 << 2) | 0;
    $101 = HEAP32[$arrayidx404 >> 2] | 0;
    $add405 = $101 + $nump_0200 | 0;
    $inc407 = $i_1199 + 1 | 0;
    $cmp401 = ($inc407 | 0) < ($100 | 0);
    if ($cmp401) {
      $i_1199 = $inc407;
      $nump_0200 = $add405;
      label = 120;
      break;
    } else {
      $nump_0_lcssa = $add405;
      label = 121;
      break;
    }
   case 121:
    $102 = HEAP32[$pbs >> 2] | 0;
    $call409 = _gvrender_ptf_A($job, $102, $102, $nump_0_lcssa) | 0;
    label = 122;
    break;
   case 122:
    $103 = HEAP32[$pbs >> 2] | 0;
    $url_bsplinemap_p = $call + 236 | 0;
    HEAP32[$url_bsplinemap_p >> 2] = $103;
    $url_map_shape = $call + 216 | 0;
    HEAP32[$url_map_shape >> 2] = 2;
    $104 = HEAP32[$pbs >> 2] | 0;
    $url_map_p = $call + 224 | 0;
    HEAP32[$url_map_p >> 2] = $104;
    $105 = HEAP32[$pbs_n >> 2] | 0;
    $106 = HEAP32[$105 >> 2] | 0;
    $url_map_n = $call + 220 | 0;
    HEAP32[$url_map_n >> 2] = $106;
    label = 123;
    break;
   case 123:
    _gvrender_begin_edge($job, 0);
    $url414 = $call + 160 | 0;
    $107 = HEAP32[$url414 >> 2] | 0;
    $tobool415 = ($107 | 0) == 0;
    if ($tobool415) {
      label = 124;
      break;
    } else {
      label = 125;
      break;
    }
   case 124:
    $108 = $call + 212 | 0;
    $109 = $108;
    $110 = HEAP32[$109 >> 2] | 0;
    $_mask = $110 & 1;
    $tobool418 = ($_mask | 0) == 0;
    if ($tobool418) {
      label = 126;
      break;
    } else {
      label = 125;
      break;
    }
   case 125:
    $111 = HEAP32[$url414 >> 2] | 0;
    $tooltip421 = $call + 180 | 0;
    $112 = HEAP32[$tooltip421 >> 2] | 0;
    $target422 = $call + 196 | 0;
    $113 = HEAP32[$target422 >> 2] | 0;
    $id423 = $call + 164 | 0;
    $114 = HEAP32[$id423 >> 2] | 0;
    _gvrender_begin_anchor($job, $111, $112, $113, $114);
    label = 126;
    break;
   case 126:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_edge_graphics($job, $e, $styles) {
  $job = $job | 0;
  $e = $e | 0;
  $styles = $styles | 0;
  var $bz = 0, $pf0 = 0, $pf1 = 0, $pf2 = 0, $pf3 = 0, $tmp = 0, $tmp128 = 0, $tmp140 = 0, $tmp193 = 0, $0 = 0, $obj = 0, $1 = 0, $penwidth1 = 0, $2 = 0.0, $3 = 0, $call = 0, $spl = 0, $4 = 0, $tobool = 0, $5 = 0, $call2 = 0.0, $6 = 0, $call3 = 0, $numcomma_0 = 0, $numc_0 = 0, $p_0 = 0, $7 = 0, $inc = 0, $inc11 = 0, $numcomma_1 = 0, $numc_1 = 0, $incdec_ptr = 0, $tobool13 = 0, $tobool14 = 0, $or_cond = 0, $add = 0, $call16 = 0, $tobool17 = 0, $color_0 = 0, $gui_state = 0, $8 = 0, $conv23 = 0, $and = 0, $tobool24 = 0, $9 = 0, $call26 = 0, $call27 = 0, $10 = 0, $call28 = 0, $and33 = 0, $tobool34 = 0, $11 = 0, $call36 = 0, $call37 = 0, $12 = 0, $call38 = 0, $and43 = 0, $tobool44 = 0, $13 = 0, $call46 = 0, $call47 = 0, $14 = 0, $call48 = 0, $and53 = 0, $tobool54 = 0, $15 = 0, $call56 = 0, $call57 = 0, $16 = 0, $call58 = 0, $fillcolor_0 = 0, $pencolor_0 = 0, $cmp63 = 0, $cmp67 = 0, $pencolor_0191193 = 0, $17 = 0, $size = 0, $18 = 0, $mul = 0, $call78 = 0, $19 = 0, $call81 = 0, $20 = 0, $add83 = 0, $conv84 = 0.0, $div = 0.0, $cmp87216 = 0, $21 = 0, $size93 = 0, $list112 = 0, $22 = 0, $23 = 0, $x194 = 0, $y201 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $x = 0, $y = 0, $x153 = 0, $y162 = 0, $x171 = 0, $y180 = 0, $28 = 0, $i_0217 = 0, $29 = 0, $list92 = 0, $30 = 0, $arrayidx = 0, $31 = 0, $32 = 0, $size96 = 0, $size99 = 0, $33 = 0, $mul101 = 0, $call102 = 0, $34 = 0, $list105 = 0, $35 = 0, $mul107 = 0, $call108 = 0, $36 = 0, $list111 = 0, $37 = 0, $38 = 0, $39 = 0, $sub212 = 0, $cmp116213 = 0, $j_0214 = 0, $add119 = 0, $40 = 0, $arrayidx121 = 0, $41 = 0, $cmp122 = 0, $arrayidx125 = 0, $42 = 0, $43 = 0, $add130 = 0, $44 = 0, $arrayidx132 = 0, $45 = 0, $add133 = 0, $46 = 0, $arrayidx135 = 0, $47 = 0, $arrayidx137 = 0, $arrayidx139 = 0, $48 = 0, $49 = 0, $50 = 0.0, $x142 = 0, $51 = 0.0, $mul143 = 0.0, $sub144 = 0.0, $x146 = 0, $52 = 0.0, $y148 = 0, $53 = 0.0, $mul149 = 0.0, $sub150 = 0.0, $y152 = 0, $54 = 0.0, $x156 = 0, $55 = 0.0, $mul157 = 0.0, $sub158 = 0.0, $x161 = 0, $56 = 0.0, $y165 = 0, $57 = 0.0, $mul166 = 0.0, $sub167 = 0.0, $y170 = 0, $58 = 0.0, $x174 = 0, $59 = 0.0, $mul175 = 0.0, $sub176 = 0.0, $x179 = 0, $60 = 0.0, $y183 = 0, $61 = 0.0, $mul184 = 0.0, $sub185 = 0.0, $y188 = 0, $62 = 0, $sub = 0, $cmp116 = 0, $j_0_lcssa = 0, $arrayidx192 = 0, $63 = 0, $64 = 0.0, $x196 = 0, $65 = 0.0, $mul197 = 0.0, $sub198 = 0.0, $x200 = 0, $66 = 0.0, $y203 = 0, $67 = 0.0, $mul204 = 0.0, $sub205 = 0.0, $y207 = 0, $inc209 = 0, $cmp87 = 0, $call211 = 0, $call212 = 0, $tobool214203 = 0, $cmp241201 = 0, $cnum_0208 = 0, $color_1207 = 0, $lastcolor_0206 = 0, $tailcolor_0205 = 0, $headcolor_0204 = 0, $68 = 0, $tobool217 = 0, $_color_1 = 0, $cmp220 = 0, $69 = 0, $and226 = 0, $tobool227 = 0, $lastcolor_1 = 0, $cmp231 = 0, $_color_1_headcolor_0 = 0, $_color_1_tailcolor_0 = 0, $cmp235 = 0, $tailcolor_2 = 0, $i_1202 = 0, $list246 = 0, $70 = 0, $list249 = 0, $71 = 0, $size253 = 0, $72 = 0, $cmp254199 = 0, $j_1200 = 0, $x258 = 0, $73 = 0.0, $x260 = 0, $74 = 0.0, $add261 = 0.0, $y263 = 0, $75 = 0.0, $y265 = 0, $76 = 0.0, $add266 = 0.0, $inc268 = 0, $77 = 0, $cmp254 = 0, $_lcssa = 0, $inc274 = 0, $cmp241 = 0, $inc277 = 0, $call278 = 0, $tobool214 = 0, $tailcolor_0_lcssa = 0, $headcolor_0_lcssa = 0, $sflag = 0, $78 = 0, $tobool280 = 0, $cmp282 = 0, $79 = 0, $and288 = 0, $tobool289 = 0, $color_3 = 0, $sp = 0, $list293 = 0, $80 = 0, $81 = 0, $color_4 = 0, $eflag = 0, $82 = 0, $tobool297 = 0, $cmp299 = 0, $83 = 0, $and305 = 0, $tobool306 = 0, $ep = 0, $size310 = 0, $84 = 0, $sub311 = 0, $list312 = 0, $85 = 0, $arrayidx313 = 0, $86 = 0, $cmp318197 = 0, $i_2198 = 0, $list323 = 0, $87 = 0, $88 = 0, $list326 = 0, $89 = 0, $90 = 0, $inc328 = 0, $cmp318 = 0, $91 = 0, $and336 = 0, $tobool337 = 0, $92 = 0, $tobool340 = 0, $93 = 0, $size348194 = 0, $94 = 0, $cmp349195 = 0, $95 = 0, $flags = 0, $list359 = 0, $size360 = 0, $sflag366 = 0, $eflag374 = 0, $tobool395 = 0, $tobool395_old = 0, $ep377 = 0, $sp369 = 0, $sflag361 = 0, $eflag362 = 0, $96 = 0, $i_3196 = 0, $list354 = 0, $97 = 0, $arrayidx355 = 0, $98 = 0, $99 = 0, $and356 = 0, $tobool357 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $tobool367 = 0, $105 = 0, $106 = 0, $tobool375 = 0, $107 = 0, $sub379 = 0, $108 = 0, $arrayidx381 = 0, $109 = 0, $size386 = 0, $110 = 0, $cmp387 = 0, $111 = 0, $tobool391 = 0, $112 = 0, $tobool393 = 0, $or_cond188 = 0, $inc400 = 0, $113 = 0, $size348 = 0, $114 = 0, $cmp349 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 176 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $bz = __stackBase__ | 0;
    $pf0 = __stackBase__ + 48 | 0;
    $pf1 = __stackBase__ + 64 | 0;
    $pf2 = __stackBase__ + 80 | 0;
    $pf3 = __stackBase__ + 96 | 0;
    $tmp = __stackBase__ + 112 | 0;
    $tmp128 = __stackBase__ + 128 | 0;
    $tmp140 = __stackBase__ + 144 | 0;
    $tmp193 = __stackBase__ + 160 | 0;
    $0 = $pf2;
    _memset($0 | 0, 0, 16);
    $obj = $job + 16 | 0;
    $1 = HEAP32[$obj >> 2] | 0;
    $penwidth1 = $1 + 104 | 0;
    $2 = +HEAPF64[$penwidth1 >> 3];
    $3 = $e | 0;
    $call = _agget($3, 133704) | 0;
    _setColorScheme($call);
    $spl = $e + 24 | 0;
    $4 = HEAP32[$spl >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      label = 72;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $5 = HEAP32[41962] | 0;
    $call2 = +_late_double($3, $5, 1.0, 0.0);
    $6 = HEAP32[41958] | 0;
    $call3 = _late_string($3, $6, 136112) | 0;
    $p_0 = $call3;
    $numc_0 = 0;
    $numcomma_0 = 0;
    label = 4;
    break;
   case 4:
    $7 = HEAP8[$p_0] | 0;
    if (($7 << 24 >> 24 | 0) == 58) {
      label = 5;
      break;
    } else if (($7 << 24 >> 24 | 0) == 44) {
      label = 6;
      break;
    } else if (($7 << 24 >> 24 | 0) == 0) {
      label = 8;
      break;
    } else {
      $numc_1 = $numc_0;
      $numcomma_1 = $numcomma_0;
      label = 7;
      break;
    }
   case 5:
    $inc = $numc_0 + 1 | 0;
    $numc_1 = $inc;
    $numcomma_1 = $numcomma_0;
    label = 7;
    break;
   case 6:
    $inc11 = $numcomma_0 + 1 | 0;
    $numc_1 = $numc_0;
    $numcomma_1 = $inc11;
    label = 7;
    break;
   case 7:
    $incdec_ptr = $p_0 + 1 | 0;
    $p_0 = $incdec_ptr;
    $numc_0 = $numc_1;
    $numcomma_0 = $numcomma_1;
    label = 4;
    break;
   case 8:
    $tobool13 = ($numcomma_0 | 0) == 0;
    $tobool14 = ($numc_0 | 0) == 0;
    $or_cond = $tobool13 | $tobool14;
    if ($or_cond) {
      $color_0 = $call3;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add = $numc_0 + 1 | 0;
    $call16 = _multicolor($job, $e, $styles, $call3, $add, $call2, $2) | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      label = 72;
      break;
    } else {
      $color_0 = 117856;
      label = 10;
      break;
    }
   case 10:
    $gui_state = $e + 131 | 0;
    $8 = HEAP8[$gui_state] | 0;
    $conv23 = $8 & 255;
    $and = $conv23 & 1;
    $tobool24 = ($and | 0) == 0;
    if ($tobool24) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $9 = HEAP32[41966] | 0;
    $call26 = _default_pencolor($color_0, 131512) | 0;
    $call27 = _late_nnstring($3, $9, $call26) | 0;
    $10 = HEAP32[41968] | 0;
    $call28 = _late_nnstring($3, $10, 130536) | 0;
    $pencolor_0 = $call27;
    $fillcolor_0 = $call28;
    label = 18;
    break;
   case 12:
    $and33 = $conv23 & 2;
    $tobool34 = ($and33 | 0) == 0;
    if ($tobool34) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $11 = HEAP32[41908] | 0;
    $call36 = _default_pencolor($color_0, 128656) | 0;
    $call37 = _late_nnstring($3, $11, $call36) | 0;
    $12 = HEAP32[41910] | 0;
    $call38 = _late_nnstring($3, $12, 126080) | 0;
    $pencolor_0 = $call37;
    $fillcolor_0 = $call38;
    label = 18;
    break;
   case 14:
    $and43 = $conv23 & 8;
    $tobool44 = ($and43 | 0) == 0;
    if ($tobool44) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $13 = HEAP32[41948] | 0;
    $call46 = _default_pencolor($color_0, 122664) | 0;
    $call47 = _late_nnstring($3, $13, $call46) | 0;
    $14 = HEAP32[41950] | 0;
    $call48 = _late_nnstring($3, $14, 121984) | 0;
    $pencolor_0 = $call47;
    $fillcolor_0 = $call48;
    label = 18;
    break;
   case 16:
    $and53 = $conv23 & 4;
    $tobool54 = ($and53 | 0) == 0;
    if ($tobool54) {
      $pencolor_0191193 = $color_0;
      label = 22;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $15 = HEAP32[41896] | 0;
    $call56 = _default_pencolor($color_0, 121456) | 0;
    $call57 = _late_nnstring($3, $15, $call56) | 0;
    $16 = HEAP32[41898] | 0;
    $call58 = _late_nnstring($3, $16, 120728) | 0;
    $pencolor_0 = $call57;
    $fillcolor_0 = $call58;
    label = 18;
    break;
   case 18:
    $cmp63 = ($pencolor_0 | 0) == ($color_0 | 0);
    if ($cmp63) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _gvrender_set_pencolor($job, $pencolor_0);
    label = 20;
    break;
   case 20:
    $cmp67 = ($fillcolor_0 | 0) == ($color_0 | 0);
    if ($cmp67) {
      $pencolor_0191193 = $pencolor_0;
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    _gvrender_set_fillcolor($job, $fillcolor_0);
    $pencolor_0191193 = $pencolor_0;
    label = 22;
    break;
   case 22:
    if ($tobool14) {
      label = 54;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $17 = HEAP32[$spl >> 2] | 0;
    $size = $17 + 4 | 0;
    $18 = HEAP32[$size >> 2] | 0;
    $mul = $18 * 48 & -1;
    $call78 = _malloc($mul) | 0;
    $19 = $call78;
    $call81 = _malloc($mul) | 0;
    $20 = $call81;
    $add83 = $numc_0 + 2 | 0;
    $conv84 = +($add83 | 0);
    $div = $conv84 * .5;
    $cmp87216 = ($18 | 0) > 0;
    if ($cmp87216) {
      label = 24;
      break;
    } else {
      label = 31;
      break;
    }
   case 24:
    $21 = $bz;
    $size93 = $bz + 4 | 0;
    $list112 = $bz | 0;
    $22 = $pf3;
    $23 = $tmp193;
    $x194 = $pf3 | 0;
    $y201 = $pf3 + 8 | 0;
    $24 = $pf0;
    $25 = $pf1;
    $26 = $tmp;
    $27 = $tmp140;
    $x = $pf0 | 0;
    $y = $pf0 + 8 | 0;
    $x153 = $pf1 | 0;
    $y162 = $pf1 + 8 | 0;
    $x171 = $pf2 | 0;
    $y180 = $pf2 + 8 | 0;
    $28 = $tmp128;
    $i_0217 = 0;
    label = 25;
    break;
   case 25:
    $29 = HEAP32[$spl >> 2] | 0;
    $list92 = $29 | 0;
    $30 = HEAP32[$list92 >> 2] | 0;
    $arrayidx = $30 + ($i_0217 * 48 & -1) | 0;
    $31 = $arrayidx;
    HEAP32[$21 >> 2] = HEAP32[$31 >> 2] | 0;
    HEAP32[$21 + 4 >> 2] = HEAP32[$31 + 4 >> 2] | 0;
    HEAP32[$21 + 8 >> 2] = HEAP32[$31 + 8 >> 2] | 0;
    HEAP32[$21 + 12 >> 2] = HEAP32[$31 + 12 >> 2] | 0;
    HEAP32[$21 + 16 >> 2] = HEAP32[$31 + 16 >> 2] | 0;
    HEAP32[$21 + 20 >> 2] = HEAP32[$31 + 20 >> 2] | 0;
    HEAP32[$21 + 24 >> 2] = HEAP32[$31 + 24 >> 2] | 0;
    HEAP32[$21 + 28 >> 2] = HEAP32[$31 + 28 >> 2] | 0;
    HEAP32[$21 + 32 >> 2] = HEAP32[$31 + 32 >> 2] | 0;
    HEAP32[$21 + 36 >> 2] = HEAP32[$31 + 36 >> 2] | 0;
    HEAP32[$21 + 40 >> 2] = HEAP32[$31 + 40 >> 2] | 0;
    HEAP32[$21 + 44 >> 2] = HEAP32[$31 + 44 >> 2] | 0;
    $32 = HEAP32[$size93 >> 2] | 0;
    $size96 = $19 + ($i_0217 * 48 & -1) + 4 | 0;
    HEAP32[$size96 >> 2] = $32;
    $size99 = $20 + ($i_0217 * 48 & -1) + 4 | 0;
    HEAP32[$size99 >> 2] = $32;
    $33 = HEAP32[$size93 >> 2] | 0;
    $mul101 = $33 << 4;
    $call102 = _malloc($mul101) | 0;
    $34 = $call102;
    $list105 = $19 + ($i_0217 * 48 & -1) | 0;
    HEAP32[$list105 >> 2] = $34;
    $35 = HEAP32[$size93 >> 2] | 0;
    $mul107 = $35 << 4;
    $call108 = _malloc($mul107) | 0;
    $36 = $call108;
    $list111 = $20 + ($i_0217 * 48 & -1) | 0;
    HEAP32[$list111 >> 2] = $36;
    $37 = HEAP32[$list112 >> 2] | 0;
    $38 = $37;
    HEAP32[$22 >> 2] = HEAP32[$38 >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$38 + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$38 + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$38 + 12 >> 2] | 0;
    $39 = HEAP32[$size93 >> 2] | 0;
    $sub212 = $39 - 1 | 0;
    $cmp116213 = ($sub212 | 0) > 0;
    if ($cmp116213) {
      $j_0214 = 0;
      label = 26;
      break;
    } else {
      $j_0_lcssa = 0;
      label = 30;
      break;
    }
   case 26:
    HEAP32[$24 >> 2] = HEAP32[$22 >> 2] | 0;
    HEAP32[$24 + 4 >> 2] = HEAP32[$22 + 4 >> 2] | 0;
    HEAP32[$24 + 8 >> 2] = HEAP32[$22 + 8 >> 2] | 0;
    HEAP32[$24 + 12 >> 2] = HEAP32[$22 + 12 >> 2] | 0;
    $add119 = $j_0214 + 1 | 0;
    $40 = HEAP32[$list112 >> 2] | 0;
    $arrayidx121 = $40 + ($add119 << 4) | 0;
    $41 = $arrayidx121;
    HEAP32[$25 >> 2] = HEAP32[$41 >> 2] | 0;
    HEAP32[$25 + 4 >> 2] = HEAP32[$41 + 4 >> 2] | 0;
    HEAP32[$25 + 8 >> 2] = HEAP32[$41 + 8 >> 2] | 0;
    HEAP32[$25 + 12 >> 2] = HEAP32[$41 + 12 >> 2] | 0;
    $cmp122 = ($j_0214 | 0) == 0;
    $arrayidx125 = $34 + ($j_0214 << 4) | 0;
    if ($cmp122) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    _computeoffset_p($tmp, $pf0, $pf1);
    $42 = $arrayidx125;
    HEAP32[$42 >> 2] = HEAP32[$26 >> 2] | 0;
    HEAP32[$42 + 4 >> 2] = HEAP32[$26 + 4 >> 2] | 0;
    HEAP32[$42 + 8 >> 2] = HEAP32[$26 + 8 >> 2] | 0;
    HEAP32[$42 + 12 >> 2] = HEAP32[$26 + 12 >> 2] | 0;
    label = 29;
    break;
   case 28:
    _computeoffset_p($tmp128, $pf2, $pf1);
    $43 = $arrayidx125;
    HEAP32[$43 >> 2] = HEAP32[$28 >> 2] | 0;
    HEAP32[$43 + 4 >> 2] = HEAP32[$28 + 4 >> 2] | 0;
    HEAP32[$43 + 8 >> 2] = HEAP32[$28 + 8 >> 2] | 0;
    HEAP32[$43 + 12 >> 2] = HEAP32[$28 + 12 >> 2] | 0;
    label = 29;
    break;
   case 29:
    $add130 = $j_0214 + 2 | 0;
    $44 = HEAP32[$list112 >> 2] | 0;
    $arrayidx132 = $44 + ($add130 << 4) | 0;
    $45 = $arrayidx132;
    HEAP32[$0 >> 2] = HEAP32[$45 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$45 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$45 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$45 + 12 >> 2] | 0;
    $add133 = $j_0214 + 3 | 0;
    $46 = HEAP32[$list112 >> 2] | 0;
    $arrayidx135 = $46 + ($add133 << 4) | 0;
    $47 = $arrayidx135;
    HEAP32[$22 >> 2] = HEAP32[$47 >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$47 + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$47 + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$47 + 12 >> 2] | 0;
    $arrayidx137 = $34 + ($add119 << 4) | 0;
    $arrayidx139 = $34 + ($add130 << 4) | 0;
    _computeoffset_qr($tmp140, $pf0, $pf1, $pf2, $pf3);
    $48 = $arrayidx139;
    HEAP32[$48 >> 2] = HEAP32[$27 >> 2] | 0;
    HEAP32[$48 + 4 >> 2] = HEAP32[$27 + 4 >> 2] | 0;
    HEAP32[$48 + 8 >> 2] = HEAP32[$27 + 8 >> 2] | 0;
    HEAP32[$48 + 12 >> 2] = HEAP32[$27 + 12 >> 2] | 0;
    $49 = $arrayidx137;
    HEAP32[$49 >> 2] = HEAP32[$27 >> 2] | 0;
    HEAP32[$49 + 4 >> 2] = HEAP32[$27 + 4 >> 2] | 0;
    HEAP32[$49 + 8 >> 2] = HEAP32[$27 + 8 >> 2] | 0;
    HEAP32[$49 + 12 >> 2] = HEAP32[$27 + 12 >> 2] | 0;
    $50 = +HEAPF64[$x >> 3];
    $x142 = $arrayidx125 | 0;
    $51 = +HEAPF64[$x142 >> 3];
    $mul143 = $div * $51;
    $sub144 = $50 - $mul143;
    $x146 = $36 + ($j_0214 << 4) | 0;
    HEAPF64[$x146 >> 3] = $sub144;
    $52 = +HEAPF64[$y >> 3];
    $y148 = $34 + ($j_0214 << 4) + 8 | 0;
    $53 = +HEAPF64[$y148 >> 3];
    $mul149 = $div * $53;
    $sub150 = $52 - $mul149;
    $y152 = $36 + ($j_0214 << 4) + 8 | 0;
    HEAPF64[$y152 >> 3] = $sub150;
    $54 = +HEAPF64[$x153 >> 3];
    $x156 = $arrayidx137 | 0;
    $55 = +HEAPF64[$x156 >> 3];
    $mul157 = $div * $55;
    $sub158 = $54 - $mul157;
    $x161 = $36 + ($add119 << 4) | 0;
    HEAPF64[$x161 >> 3] = $sub158;
    $56 = +HEAPF64[$y162 >> 3];
    $y165 = $34 + ($add119 << 4) + 8 | 0;
    $57 = +HEAPF64[$y165 >> 3];
    $mul166 = $div * $57;
    $sub167 = $56 - $mul166;
    $y170 = $36 + ($add119 << 4) + 8 | 0;
    HEAPF64[$y170 >> 3] = $sub167;
    $58 = +HEAPF64[$x171 >> 3];
    $x174 = $arrayidx139 | 0;
    $59 = +HEAPF64[$x174 >> 3];
    $mul175 = $div * $59;
    $sub176 = $58 - $mul175;
    $x179 = $36 + ($add130 << 4) | 0;
    HEAPF64[$x179 >> 3] = $sub176;
    $60 = +HEAPF64[$y180 >> 3];
    $y183 = $34 + ($add130 << 4) + 8 | 0;
    $61 = +HEAPF64[$y183 >> 3];
    $mul184 = $div * $61;
    $sub185 = $60 - $mul184;
    $y188 = $36 + ($add130 << 4) + 8 | 0;
    HEAPF64[$y188 >> 3] = $sub185;
    $62 = HEAP32[$size93 >> 2] | 0;
    $sub = $62 - 1 | 0;
    $cmp116 = ($add133 | 0) < ($sub | 0);
    if ($cmp116) {
      $j_0214 = $add133;
      label = 26;
      break;
    } else {
      $j_0_lcssa = $add133;
      label = 30;
      break;
    }
   case 30:
    $arrayidx192 = $34 + ($j_0_lcssa << 4) | 0;
    _computeoffset_p($tmp193, $pf2, $pf3);
    $63 = $arrayidx192;
    HEAP32[$63 >> 2] = HEAP32[$23 >> 2] | 0;
    HEAP32[$63 + 4 >> 2] = HEAP32[$23 + 4 >> 2] | 0;
    HEAP32[$63 + 8 >> 2] = HEAP32[$23 + 8 >> 2] | 0;
    HEAP32[$63 + 12 >> 2] = HEAP32[$23 + 12 >> 2] | 0;
    $64 = +HEAPF64[$x194 >> 3];
    $x196 = $arrayidx192 | 0;
    $65 = +HEAPF64[$x196 >> 3];
    $mul197 = $div * $65;
    $sub198 = $64 - $mul197;
    $x200 = $36 + ($j_0_lcssa << 4) | 0;
    HEAPF64[$x200 >> 3] = $sub198;
    $66 = +HEAPF64[$y201 >> 3];
    $y203 = $34 + ($j_0_lcssa << 4) + 8 | 0;
    $67 = +HEAPF64[$y203 >> 3];
    $mul204 = $div * $67;
    $sub205 = $66 - $mul204;
    $y207 = $36 + ($j_0_lcssa << 4) + 8 | 0;
    HEAPF64[$y207 >> 3] = $sub205;
    $inc209 = $i_0217 + 1 | 0;
    $cmp87 = ($inc209 | 0) < ($18 | 0);
    if ($cmp87) {
      $i_0217 = $inc209;
      label = 25;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $call211 = _strdup($pencolor_0191193 | 0) | 0;
    $call212 = _strtok($call211 | 0, 98688) | 0;
    $tobool214203 = ($call212 | 0) == 0;
    if ($tobool214203) {
      $headcolor_0_lcssa = $pencolor_0191193;
      $tailcolor_0_lcssa = $pencolor_0191193;
      label = 41;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $cmp241201 = ($18 | 0) > 0;
    $headcolor_0204 = $pencolor_0191193;
    $tailcolor_0205 = $pencolor_0191193;
    $lastcolor_0206 = $pencolor_0191193;
    $color_1207 = $call212;
    $cnum_0208 = 0;
    label = 33;
    break;
   case 33:
    $68 = HEAP8[$color_1207] | 0;
    $tobool217 = $68 << 24 >> 24 == 0;
    $_color_1 = $tobool217 ? 117856 : $color_1207;
    $cmp220 = ($_color_1 | 0) == ($lastcolor_0206 | 0);
    if ($cmp220) {
      $lastcolor_1 = $lastcolor_0206;
      label = 36;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $69 = HEAP8[$gui_state] | 0;
    $and226 = $69 & 3;
    $tobool227 = $and226 << 24 >> 24 == 0;
    if ($tobool227) {
      label = 35;
      break;
    } else {
      $lastcolor_1 = $_color_1;
      label = 36;
      break;
    }
   case 35:
    _gvrender_set_pencolor($job, $_color_1);
    _gvrender_set_fillcolor($job, $_color_1);
    $lastcolor_1 = $_color_1;
    label = 36;
    break;
   case 36:
    $cmp231 = ($cnum_0208 | 0) == 0;
    $_color_1_headcolor_0 = $cmp231 ? $_color_1 : $headcolor_0204;
    $_color_1_tailcolor_0 = $cmp231 ? $_color_1 : $tailcolor_0205;
    $cmp235 = ($cnum_0208 | 0) == 1;
    $tailcolor_2 = $cmp235 ? $_color_1 : $_color_1_tailcolor_0;
    if ($cmp241201) {
      $i_1202 = 0;
      label = 37;
      break;
    } else {
      label = 40;
      break;
    }
   case 37:
    $list246 = $20 + ($i_1202 * 48 & -1) | 0;
    $70 = HEAP32[$list246 >> 2] | 0;
    $list249 = $19 + ($i_1202 * 48 & -1) | 0;
    $71 = HEAP32[$list249 >> 2] | 0;
    $size253 = $20 + ($i_1202 * 48 & -1) + 4 | 0;
    $72 = HEAP32[$size253 >> 2] | 0;
    $cmp254199 = ($72 | 0) > 0;
    if ($cmp254199) {
      $j_1200 = 0;
      label = 38;
      break;
    } else {
      $_lcssa = $72;
      label = 39;
      break;
    }
   case 38:
    $x258 = $71 + ($j_1200 << 4) | 0;
    $73 = +HEAPF64[$x258 >> 3];
    $x260 = $70 + ($j_1200 << 4) | 0;
    $74 = +HEAPF64[$x260 >> 3];
    $add261 = $73 + $74;
    HEAPF64[$x260 >> 3] = $add261;
    $y263 = $71 + ($j_1200 << 4) + 8 | 0;
    $75 = +HEAPF64[$y263 >> 3];
    $y265 = $70 + ($j_1200 << 4) + 8 | 0;
    $76 = +HEAPF64[$y265 >> 3];
    $add266 = $75 + $76;
    HEAPF64[$y265 >> 3] = $add266;
    $inc268 = $j_1200 + 1 | 0;
    $77 = HEAP32[$size253 >> 2] | 0;
    $cmp254 = ($inc268 | 0) < ($77 | 0);
    if ($cmp254) {
      $j_1200 = $inc268;
      label = 38;
      break;
    } else {
      $_lcssa = $77;
      label = 39;
      break;
    }
   case 39:
    _gvrender_beziercurve($job, $70, $_lcssa, 0, 0, 0);
    $inc274 = $i_1202 + 1 | 0;
    $cmp241 = ($inc274 | 0) < ($18 | 0);
    if ($cmp241) {
      $i_1202 = $inc274;
      label = 37;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $inc277 = $cnum_0208 + 1 | 0;
    $call278 = _strtok(0, 98688) | 0;
    $tobool214 = ($call278 | 0) == 0;
    if ($tobool214) {
      $headcolor_0_lcssa = $_color_1_headcolor_0;
      $tailcolor_0_lcssa = $tailcolor_2;
      label = 41;
      break;
    } else {
      $headcolor_0204 = $_color_1_headcolor_0;
      $tailcolor_0205 = $tailcolor_2;
      $lastcolor_0206 = $lastcolor_1;
      $color_1207 = $call278;
      $cnum_0208 = $inc277;
      label = 33;
      break;
    }
   case 41:
    $sflag = $bz + 8 | 0;
    $78 = HEAP32[$sflag >> 2] | 0;
    $tobool280 = ($78 | 0) == 0;
    if ($tobool280) {
      $color_4 = 0;
      label = 46;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $cmp282 = ($tailcolor_0_lcssa | 0) == 0;
    if ($cmp282) {
      $color_3 = 0;
      label = 45;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $79 = HEAP8[$gui_state] | 0;
    $and288 = $79 & 3;
    $tobool289 = $and288 << 24 >> 24 == 0;
    if ($tobool289) {
      label = 44;
      break;
    } else {
      $color_3 = $tailcolor_0_lcssa;
      label = 45;
      break;
    }
   case 44:
    _gvrender_set_pencolor($job, $tailcolor_0_lcssa);
    _gvrender_set_fillcolor($job, $tailcolor_0_lcssa);
    $color_3 = $tailcolor_0_lcssa;
    label = 45;
    break;
   case 45:
    $sp = $bz + 16 | 0;
    $list293 = $bz | 0;
    $80 = HEAP32[$list293 >> 2] | 0;
    $81 = HEAP32[$sflag >> 2] | 0;
    _arrow_gen($job, 2, $sp, $80, $call2, $2, $81);
    $color_4 = $color_3;
    label = 46;
    break;
   case 46:
    $eflag = $bz + 12 | 0;
    $82 = HEAP32[$eflag >> 2] | 0;
    $tobool297 = ($82 | 0) == 0;
    if ($tobool297) {
      label = 51;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $cmp299 = ($color_4 | 0) == ($headcolor_0_lcssa | 0);
    if ($cmp299) {
      label = 50;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $83 = HEAP8[$gui_state] | 0;
    $and305 = $83 & 3;
    $tobool306 = $and305 << 24 >> 24 == 0;
    if ($tobool306) {
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 49:
    _gvrender_set_pencolor($job, $headcolor_0_lcssa);
    _gvrender_set_fillcolor($job, $headcolor_0_lcssa);
    label = 50;
    break;
   case 50:
    $ep = $bz + 32 | 0;
    $size310 = $bz + 4 | 0;
    $84 = HEAP32[$size310 >> 2] | 0;
    $sub311 = $84 - 1 | 0;
    $list312 = $bz | 0;
    $85 = HEAP32[$list312 >> 2] | 0;
    $arrayidx313 = $85 + ($sub311 << 4) | 0;
    $86 = HEAP32[$eflag >> 2] | 0;
    _arrow_gen($job, 3, $ep, $arrayidx313, $call2, $2, $86);
    label = 51;
    break;
   case 51:
    _free($call211);
    $cmp318197 = ($18 | 0) > 0;
    if ($cmp318197) {
      $i_2198 = 0;
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 52:
    $list323 = $19 + ($i_2198 * 48 & -1) | 0;
    $87 = HEAP32[$list323 >> 2] | 0;
    $88 = $87;
    _free($88);
    $list326 = $20 + ($i_2198 * 48 & -1) | 0;
    $89 = HEAP32[$list326 >> 2] | 0;
    $90 = $89;
    _free($90);
    $inc328 = $i_2198 + 1 | 0;
    $cmp318 = ($inc328 | 0) < ($18 | 0);
    if ($cmp318) {
      $i_2198 = $inc328;
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    _free($call78);
    _free($call81);
    label = 72;
    break;
   case 54:
    $91 = HEAP8[$gui_state] | 0;
    $and336 = $91 & 3;
    $tobool337 = $and336 << 24 >> 24 == 0;
    if ($tobool337) {
      label = 55;
      break;
    } else {
      label = 58;
      break;
    }
   case 55:
    $92 = HEAP8[$pencolor_0191193] | 0;
    $tobool340 = $92 << 24 >> 24 == 0;
    if ($tobool340) {
      label = 57;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    _gvrender_set_pencolor($job, $pencolor_0191193);
    _gvrender_set_fillcolor($job, $pencolor_0191193);
    label = 58;
    break;
   case 57:
    _gvrender_set_pencolor($job, 117856);
    _gvrender_set_fillcolor($job, 117856);
    label = 58;
    break;
   case 58:
    $93 = HEAP32[$spl >> 2] | 0;
    $size348194 = $93 + 4 | 0;
    $94 = HEAP32[$size348194 >> 2] | 0;
    $cmp349195 = ($94 | 0) > 0;
    if ($cmp349195) {
      label = 59;
      break;
    } else {
      label = 72;
      break;
    }
   case 59:
    $95 = $bz;
    $flags = $job + 152 | 0;
    $list359 = $bz | 0;
    $size360 = $bz + 4 | 0;
    $sflag366 = $bz + 8 | 0;
    $eflag374 = $bz + 12 | 0;
    $tobool395 = ($styles | 0) == 0;
    $tobool395_old = ($styles | 0) == 0;
    $ep377 = $bz + 32 | 0;
    $sp369 = $bz + 16 | 0;
    $sflag361 = $bz + 8 | 0;
    $eflag362 = $bz + 12 | 0;
    $i_3196 = 0;
    $96 = $93;
    label = 60;
    break;
   case 60:
    $list354 = $96 | 0;
    $97 = HEAP32[$list354 >> 2] | 0;
    $arrayidx355 = $97 + ($i_3196 * 48 & -1) | 0;
    $98 = $arrayidx355;
    HEAP32[$95 >> 2] = HEAP32[$98 >> 2] | 0;
    HEAP32[$95 + 4 >> 2] = HEAP32[$98 + 4 >> 2] | 0;
    HEAP32[$95 + 8 >> 2] = HEAP32[$98 + 8 >> 2] | 0;
    HEAP32[$95 + 12 >> 2] = HEAP32[$98 + 12 >> 2] | 0;
    HEAP32[$95 + 16 >> 2] = HEAP32[$98 + 16 >> 2] | 0;
    HEAP32[$95 + 20 >> 2] = HEAP32[$98 + 20 >> 2] | 0;
    HEAP32[$95 + 24 >> 2] = HEAP32[$98 + 24 >> 2] | 0;
    HEAP32[$95 + 28 >> 2] = HEAP32[$98 + 28 >> 2] | 0;
    HEAP32[$95 + 32 >> 2] = HEAP32[$98 + 32 >> 2] | 0;
    HEAP32[$95 + 36 >> 2] = HEAP32[$98 + 36 >> 2] | 0;
    HEAP32[$95 + 40 >> 2] = HEAP32[$98 + 40 >> 2] | 0;
    HEAP32[$95 + 44 >> 2] = HEAP32[$98 + 44 >> 2] | 0;
    $99 = HEAP32[$flags >> 2] | 0;
    $and356 = $99 & 16384;
    $tobool357 = ($and356 | 0) == 0;
    $100 = HEAP32[$list359 >> 2] | 0;
    $101 = HEAP32[$size360 >> 2] | 0;
    if ($tobool357) {
      label = 62;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    $102 = HEAP32[$sflag361 >> 2] | 0;
    $103 = HEAP32[$eflag362 >> 2] | 0;
    _gvrender_beziercurve($job, $100, $101, $102, $103, 0);
    label = 71;
    break;
   case 62:
    _gvrender_beziercurve($job, $100, $101, 0, 0, 0);
    $104 = HEAP32[$sflag366 >> 2] | 0;
    $tobool367 = ($104 | 0) == 0;
    if ($tobool367) {
      label = 64;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $105 = HEAP32[$list359 >> 2] | 0;
    _arrow_gen($job, 2, $sp369, $105, $call2, $2, $104);
    label = 64;
    break;
   case 64:
    $106 = HEAP32[$eflag374 >> 2] | 0;
    $tobool375 = ($106 | 0) == 0;
    if ($tobool375) {
      label = 66;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $107 = HEAP32[$size360 >> 2] | 0;
    $sub379 = $107 - 1 | 0;
    $108 = HEAP32[$list359 >> 2] | 0;
    $arrayidx381 = $108 + ($sub379 << 4) | 0;
    _arrow_gen($job, 3, $ep377, $arrayidx381, $call2, $2, $106);
    label = 66;
    break;
   case 66:
    $109 = HEAP32[$spl >> 2] | 0;
    $size386 = $109 + 4 | 0;
    $110 = HEAP32[$size386 >> 2] | 0;
    $cmp387 = ($110 | 0) > 1;
    if ($cmp387) {
      label = 67;
      break;
    } else {
      label = 71;
      break;
    }
   case 67:
    $111 = HEAP32[$sflag366 >> 2] | 0;
    $tobool391 = ($111 | 0) == 0;
    if ($tobool391) {
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 68:
    $112 = HEAP32[$eflag374 >> 2] | 0;
    $tobool393 = ($112 | 0) == 0;
    $or_cond188 = $tobool393 | $tobool395;
    if ($or_cond188) {
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 69:
    if ($tobool395_old) {
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    _gvrender_set_style($job, $styles);
    label = 71;
    break;
   case 71:
    $inc400 = $i_3196 + 1 | 0;
    $113 = HEAP32[$spl >> 2] | 0;
    $size348 = $113 + 4 | 0;
    $114 = HEAP32[$size348 >> 2] | 0;
    $cmp349 = ($inc400 | 0) < ($114 | 0);
    if ($cmp349) {
      $i_3196 = $inc400;
      $96 = $113;
      label = 60;
      break;
    } else {
      label = 72;
      break;
    }
   case 72:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_end_edge($job) {
  $job = $job | 0;
  var $p = 0, $bz_sroa_4 = 0, $obj1 = 0, $0 = 0, $u = 0, $e2 = 0, $1 = 0, $url = 0, $2 = 0, $tobool = 0, $3 = 0, $4 = 0, $5 = 0, $_mask = 0, $tobool3 = 0, $url_bsplinemap_poly_n = 0, $6 = 0, $tobool4 = 0, $url_bsplinemap_n = 0, $7 = 0, $cmp95 = 0, $8 = 0, $9 = 0, $url_map_n = 0, $url_bsplinemap_p = 0, $url_map_p = 0, $tooltip = 0, $target = 0, $id = 0, $nump_097 = 0, $i_096 = 0, $10 = 0, $arrayidx8 = 0, $11 = 0, $12 = 0, $arrayidx9 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $arrayidx12 = 0, $18 = 0, $add = 0, $inc = 0, $19 = 0, $cmp = 0, $url_map_n14 = 0, $url_map_p15 = 0, $spl = 0, $20 = 0, $tobool17 = 0, $list = 0, $21 = 0, $bz_sroa_0_0__idx2 = 0, $bz_sroa_0_0_copyload3 = 0, $bz_sroa_2_8__idx8 = 0, $bz_sroa_2_8_copyload9 = 0, $bz_sroa_4_16__idx13 = 0, $bz_sroa_4_16__cast14 = 0, $bz_sroa_4_16_cast15 = 0, $tobool22 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $bf_val_sext29 = 0, $conv = 0, $tailurl = 0, $29 = 0, $30 = 0, $31 = 0, $bf_val_sext32 = 0, $conv33 = 0, $32 = 0, $33 = 0, $bf_val_sext36 = 0, $conv37 = 0, $34 = 0, $size = 0, $35 = 0, $sub = 0, $list42 = 0, $36 = 0, $bz_sroa_0_0__idx = 0, $bz_sroa_0_0_copyload = 0, $bz_sroa_1_4__idx4 = 0, $bz_sroa_1_4_copyload = 0, $bz_sroa_3_12__idx10 = 0, $bz_sroa_3_12_copyload = 0, $bz_sroa_4_16__idx = 0, $bz_sroa_4_16__cast = 0, $tobool44 = 0, $bz_sroa_4_32_idx = 0, $bz_sroa_4_32_cast = 0, $sub48 = 0, $arrayidx50 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $bf_val_sext54 = 0, $conv55 = 0, $headurl = 0, $41 = 0, $42 = 0, $43 = 0, $bf_val_sext58 = 0, $conv59 = 0, $44 = 0, $45 = 0, $bf_val_sext62 = 0, $conv63 = 0, $label = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, $bf_val_sext68 = 0, $labelurl = 0, $52 = 0, $labeltooltip = 0, $53 = 0, $labeltarget = 0, $54 = 0, $id69 = 0, $55 = 0, $56 = 0, $57 = 0, $call = 0, $call70 = 0, $tobool72 = 0, $58 = 0, $cond = 0, $xlabel = 0, $59 = 0, $60 = 0, $61 = 0, $62 = 0, $bf_val_sext81 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $call86 = 0, $call87 = 0, $tobool89 = 0, $68 = 0, $cond99 = 0, $head_label = 0, $69 = 0, $70 = 0, $71 = 0, $72 = 0, $bf_val_sext103 = 0, $headurl104 = 0, $73 = 0, $headtooltip105 = 0, $74 = 0, $headtarget106 = 0, $75 = 0, $76 = 0, $tail_label = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $bf_val_sext111 = 0, $tailurl112 = 0, $81 = 0, $tailtooltip113 = 0, $82 = 0, $tailtarget114 = 0, $83 = 0, $84 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = __stackBase__ | 0;
    $bz_sroa_4 = __stackBase__ + 16 | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $u = $0 + 8 | 0;
    $e2 = $u;
    $1 = HEAP32[$e2 >> 2] | 0;
    $url = $0 + 160 | 0;
    $2 = HEAP32[$url >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $3 = $0 + 212 | 0;
    $4 = $3;
    $5 = HEAP32[$4 >> 2] | 0;
    $_mask = $5 & 1;
    $tobool3 = ($_mask | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _gvrender_end_anchor($job);
    $url_bsplinemap_poly_n = $0 + 228 | 0;
    $6 = HEAP32[$url_bsplinemap_poly_n >> 2] | 0;
    $tobool4 = ($6 | 0) == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $url_bsplinemap_n = $0 + 232 | 0;
    $7 = HEAP32[$url_bsplinemap_poly_n >> 2] | 0;
    $cmp95 = ($7 | 0) > 1;
    if ($cmp95) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $8 = HEAP32[$url_bsplinemap_n >> 2] | 0;
    $9 = HEAP32[$8 >> 2] | 0;
    $url_map_n = $0 + 220 | 0;
    $url_bsplinemap_p = $0 + 236 | 0;
    $url_map_p = $0 + 224 | 0;
    $tooltip = $0 + 180 | 0;
    $target = $0 + 196 | 0;
    $id = $0 + 164 | 0;
    $i_096 = 1;
    $nump_097 = $9;
    label = 7;
    break;
   case 7:
    $10 = HEAP32[$url_bsplinemap_n >> 2] | 0;
    $arrayidx8 = $10 + ($i_096 << 2) | 0;
    $11 = HEAP32[$arrayidx8 >> 2] | 0;
    HEAP32[$url_map_n >> 2] = $11;
    $12 = HEAP32[$url_bsplinemap_p >> 2] | 0;
    $arrayidx9 = $12 + ($nump_097 << 4) | 0;
    HEAP32[$url_map_p >> 2] = $arrayidx9;
    $13 = HEAP32[$url >> 2] | 0;
    $14 = HEAP32[$tooltip >> 2] | 0;
    $15 = HEAP32[$target >> 2] | 0;
    $16 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $13, $14, $15, $16);
    _gvrender_end_anchor($job);
    $17 = HEAP32[$url_bsplinemap_n >> 2] | 0;
    $arrayidx12 = $17 + ($i_096 << 2) | 0;
    $18 = HEAP32[$arrayidx12 >> 2] | 0;
    $add = $18 + $nump_097 | 0;
    $inc = $i_096 + 1 | 0;
    $19 = HEAP32[$url_bsplinemap_poly_n >> 2] | 0;
    $cmp = ($inc | 0) < ($19 | 0);
    if ($cmp) {
      $i_096 = $inc;
      $nump_097 = $add;
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $url_map_n14 = $0 + 220 | 0;
    HEAP32[$url_map_n14 >> 2] = 0;
    $url_map_p15 = $0 + 224 | 0;
    HEAP32[$url_map_p15 >> 2] = 0;
    $spl = $1 + 24 | 0;
    $20 = HEAP32[$spl >> 2] | 0;
    $tobool17 = ($20 | 0) == 0;
    if ($tobool17) {
      label = 16;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $list = $20 | 0;
    $21 = HEAP32[$list >> 2] | 0;
    $bz_sroa_0_0__idx2 = $21 | 0;
    $bz_sroa_0_0_copyload3 = HEAP32[$bz_sroa_0_0__idx2 >> 2] | 0;
    $bz_sroa_2_8__idx8 = $21 + 8 | 0;
    $bz_sroa_2_8_copyload9 = HEAP32[$bz_sroa_2_8__idx8 >> 2] | 0;
    $bz_sroa_4_16__idx13 = $21 + 16 | 0;
    $bz_sroa_4_16__cast14 = $bz_sroa_4_16__idx13;
    $bz_sroa_4_16_cast15 = $bz_sroa_4;
    HEAP32[$bz_sroa_4_16_cast15 >> 2] = HEAP32[$bz_sroa_4_16__cast14 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 4 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 4 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 8 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 8 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 12 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 12 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 16 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 16 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 20 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 20 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 24 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 24 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 28 >> 2] = HEAP32[$bz_sroa_4_16__cast14 + 28 >> 2] | 0;
    $tobool22 = ($bz_sroa_2_8_copyload9 | 0) == 0;
    $22 = $p;
    if ($tobool22) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP32[$22 >> 2] = HEAP32[$bz_sroa_4_16_cast15 >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$bz_sroa_4_16_cast15 + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$bz_sroa_4_16_cast15 + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$bz_sroa_4_16_cast15 + 12 >> 2] | 0;
    label = 12;
    break;
   case 11:
    $23 = $bz_sroa_0_0_copyload3;
    HEAP32[$22 >> 2] = HEAP32[$23 >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$23 + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$23 + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$23 + 12 >> 2] | 0;
    label = 12;
    break;
   case 12:
    $24 = $0 + 212 | 0;
    $25 = $24;
    $26 = HEAP32[$25 >> 2] | 0;
    $27 = $26 >>> 7;
    $28 = $27 << 31;
    $bf_val_sext29 = $28 >> 31;
    $conv = $bf_val_sext29 & 255;
    $tailurl = $0 + 172 | 0;
    $29 = HEAP32[$tailurl >> 2] | 0;
    $30 = $26 >>> 1;
    $31 = $30 << 31;
    $bf_val_sext32 = $31 >> 31;
    $conv33 = $bf_val_sext32 & 255;
    $32 = $26 >>> 4;
    $33 = $32 << 31;
    $bf_val_sext36 = $33 >> 31;
    $conv37 = $bf_val_sext36 & 255;
    _nodeIntersect($job, $p, $conv, $29, $conv33, $conv37);
    $34 = HEAP32[$spl >> 2] | 0;
    $size = $34 + 4 | 0;
    $35 = HEAP32[$size >> 2] | 0;
    $sub = $35 - 1 | 0;
    $list42 = $34 | 0;
    $36 = HEAP32[$list42 >> 2] | 0;
    $bz_sroa_0_0__idx = $36 + ($sub * 48 & -1) | 0;
    $bz_sroa_0_0_copyload = HEAP32[$bz_sroa_0_0__idx >> 2] | 0;
    $bz_sroa_1_4__idx4 = $36 + ($sub * 48 & -1) + 4 | 0;
    $bz_sroa_1_4_copyload = HEAP32[$bz_sroa_1_4__idx4 >> 2] | 0;
    $bz_sroa_3_12__idx10 = $36 + ($sub * 48 & -1) + 12 | 0;
    $bz_sroa_3_12_copyload = HEAP32[$bz_sroa_3_12__idx10 >> 2] | 0;
    $bz_sroa_4_16__idx = $36 + ($sub * 48 & -1) + 16 | 0;
    $bz_sroa_4_16__cast = $bz_sroa_4_16__idx;
    HEAP32[$bz_sroa_4_16_cast15 >> 2] = HEAP32[$bz_sroa_4_16__cast >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 4 >> 2] = HEAP32[$bz_sroa_4_16__cast + 4 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 8 >> 2] = HEAP32[$bz_sroa_4_16__cast + 8 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 12 >> 2] = HEAP32[$bz_sroa_4_16__cast + 12 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 16 >> 2] = HEAP32[$bz_sroa_4_16__cast + 16 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 20 >> 2] = HEAP32[$bz_sroa_4_16__cast + 20 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 24 >> 2] = HEAP32[$bz_sroa_4_16__cast + 24 >> 2] | 0;
    HEAP32[$bz_sroa_4_16_cast15 + 28 >> 2] = HEAP32[$bz_sroa_4_16__cast + 28 >> 2] | 0;
    $tobool44 = ($bz_sroa_3_12_copyload | 0) == 0;
    if ($tobool44) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $bz_sroa_4_32_idx = $bz_sroa_4 + 16 | 0;
    $bz_sroa_4_32_cast = $bz_sroa_4_32_idx;
    HEAP32[$22 >> 2] = HEAP32[$bz_sroa_4_32_cast >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$bz_sroa_4_32_cast + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$bz_sroa_4_32_cast + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$bz_sroa_4_32_cast + 12 >> 2] | 0;
    label = 15;
    break;
   case 14:
    $sub48 = $bz_sroa_1_4_copyload - 1 | 0;
    $arrayidx50 = $bz_sroa_0_0_copyload + ($sub48 << 4) | 0;
    $37 = $arrayidx50;
    HEAP32[$22 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    label = 15;
    break;
   case 15:
    $38 = HEAP32[$25 >> 2] | 0;
    $39 = $38 >>> 8;
    $40 = $39 << 31;
    $bf_val_sext54 = $40 >> 31;
    $conv55 = $bf_val_sext54 & 255;
    $headurl = $0 + 176 | 0;
    $41 = HEAP32[$headurl >> 2] | 0;
    $42 = $38 >>> 2;
    $43 = $42 << 31;
    $bf_val_sext58 = $43 >> 31;
    $conv59 = $bf_val_sext58 & 255;
    $44 = $38 >>> 5;
    $45 = $44 << 31;
    $bf_val_sext62 = $45 >> 31;
    $conv63 = $bf_val_sext62 & 255;
    _nodeIntersect($job, $p, $conv55, $41, $conv59, $conv63);
    label = 16;
    break;
   case 16:
    $label = $1 + 112 | 0;
    $46 = HEAP32[$label >> 2] | 0;
    $47 = $0 + 212 | 0;
    $48 = $47;
    $49 = HEAP32[$48 >> 2] | 0;
    $50 = $49 >>> 3;
    $51 = $50 << 31;
    $bf_val_sext68 = $51 >> 31;
    $labelurl = $0 + 168 | 0;
    $52 = HEAP32[$labelurl >> 2] | 0;
    $labeltooltip = $0 + 184 | 0;
    $53 = HEAP32[$labeltooltip >> 2] | 0;
    $labeltarget = $0 + 200 | 0;
    $54 = HEAP32[$labeltarget >> 2] | 0;
    $id69 = $0 + 164 | 0;
    $55 = HEAP32[$id69 >> 2] | 0;
    $56 = $1 | 0;
    $57 = HEAP32[41952] | 0;
    $call = _late_string($56, $57, 101168) | 0;
    $call70 = _mapbool($call) | 0;
    $tobool72 = $call70 << 24 >> 24 == 0;
    if ($tobool72) {
      $cond = 0;
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $58 = HEAP32[$spl >> 2] | 0;
    $cond = $58;
    label = 18;
    break;
   case 18:
    _emit_edge_label($job, $46, 11, $bf_val_sext68, $52, $53, $54, $55, $cond);
    $xlabel = $1 + 124 | 0;
    $59 = HEAP32[$xlabel >> 2] | 0;
    $60 = HEAP32[$48 >> 2] | 0;
    $61 = $60 >>> 3;
    $62 = $61 << 31;
    $bf_val_sext81 = $62 >> 31;
    $63 = HEAP32[$labelurl >> 2] | 0;
    $64 = HEAP32[$labeltooltip >> 2] | 0;
    $65 = HEAP32[$labeltarget >> 2] | 0;
    $66 = HEAP32[$id69 >> 2] | 0;
    $67 = HEAP32[41952] | 0;
    $call86 = _late_string($56, $67, 101168) | 0;
    $call87 = _mapbool($call86) | 0;
    $tobool89 = $call87 << 24 >> 24 == 0;
    if ($tobool89) {
      $cond99 = 0;
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $68 = HEAP32[$spl >> 2] | 0;
    $cond99 = $68;
    label = 20;
    break;
   case 20:
    _emit_edge_label($job, $59, 11, $bf_val_sext81, $63, $64, $65, $66, $cond99);
    $head_label = $1 + 116 | 0;
    $69 = HEAP32[$head_label >> 2] | 0;
    $70 = HEAP32[$48 >> 2] | 0;
    $71 = $70 >>> 2;
    $72 = $71 << 31;
    $bf_val_sext103 = $72 >> 31;
    $headurl104 = $0 + 176 | 0;
    $73 = HEAP32[$headurl104 >> 2] | 0;
    $headtooltip105 = $0 + 192 | 0;
    $74 = HEAP32[$headtooltip105 >> 2] | 0;
    $headtarget106 = $0 + 208 | 0;
    $75 = HEAP32[$headtarget106 >> 2] | 0;
    $76 = HEAP32[$id69 >> 2] | 0;
    _emit_edge_label($job, $69, 7, $bf_val_sext103, $73, $74, $75, $76, 0);
    $tail_label = $1 + 120 | 0;
    $77 = HEAP32[$tail_label >> 2] | 0;
    $78 = HEAP32[$48 >> 2] | 0;
    $79 = $78 >>> 1;
    $80 = $79 << 31;
    $bf_val_sext111 = $80 >> 31;
    $tailurl112 = $0 + 172 | 0;
    $81 = HEAP32[$tailurl112 >> 2] | 0;
    $tailtooltip113 = $0 + 188 | 0;
    $82 = HEAP32[$tailtooltip113 >> 2] | 0;
    $tailtarget114 = $0 + 204 | 0;
    $83 = HEAP32[$tailtarget114 >> 2] | 0;
    $84 = HEAP32[$id69 >> 2] | 0;
    _emit_edge_label($job, $77, 6, $bf_val_sext111, $81, $82, $83, $84, 0);
    _gvrender_end_edge($job);
    _pop_obj_state($job);
    STACKTOP = __stackBase__;
    return;
  }
}
function _nodeIntersect($job, $p, $explicit_iurl, $iurl, $explicit_itooltip, $explicit_itarget) {
  $job = $job | 0;
  $p = $p | 0;
  $explicit_iurl = $explicit_iurl | 0;
  $iurl = $iurl | 0;
  $explicit_itooltip = $explicit_itooltip | 0;
  $explicit_itarget = $explicit_itarget | 0;
  var $obj1 = 0, $0 = 0, $tobool = 0, $url2 = 0, $1 = 0, $url_0 = 0, $tobool3 = 0, $2 = 0, $3 = 0, $4 = 0, $_mask = 0, $tobool24 = 0, $tobool25 = 0, $or_cond = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $tobool = $explicit_iurl << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $url_0 = $iurl;
      label = 4;
      break;
    }
   case 3:
    $url2 = $0 + 160 | 0;
    $1 = HEAP32[$url2 >> 2] | 0;
    $url_0 = $1;
    label = 4;
    break;
   case 4:
    $tobool3 = $explicit_itooltip << 24 >> 24 == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $2 = $0 + 212 | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $_mask = $4 & 1;
    $tobool24 = ($url_0 | 0) == 0;
    $tobool25 = ($_mask | 0) == 0;
    $or_cond = $tobool24 & $tobool25;
    if ($or_cond) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _map_point($job, $p);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pointfof($agg_result, $x, $y) {
  $agg_result = $agg_result | 0;
  $x = +$x;
  $y = +$y;
  HEAPF64[$agg_result >> 3] = $x;
  HEAPF64[$agg_result + 8 >> 3] = $y;
  return;
}
function _map_label($job, $lab) {
  $job = $job | 0;
  $lab = $lab | 0;
  var $obj1 = 0, $0 = 0, $flags2 = 0, $1 = 0, $and = 0, $tobool = 0, $and3 = 0, $tobool4 = 0, $url_map_shape = 0, $url_map_n = 0, $url_map_n7 = 0, $url_map_p = 0, $2 = 0, $3 = 0, $url_map_n8 = 0, $4 = 0, $mul = 0, $call = 0, $5 = 0, $x = 0, $6 = 0.0, $x10 = 0, $7 = 0.0, $div = 0.0, $sub = 0.0, $x11 = 0, $y = 0, $8 = 0.0, $y14 = 0, $9 = 0.0, $div15 = 0.0, $sub16 = 0.0, $y18 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $div23 = 0.0, $add = 0.0, $arrayidx24 = 0, $x25 = 0, $13 = 0.0, $14 = 0.0, $div30 = 0.0, $add31 = 0.0, $y33 = 0, $15 = 0, $and34 = 0, $tobool35 = 0, $call37 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $flags2 = $job + 152 | 0;
    $1 = HEAP32[$flags2 >> 2] | 0;
    $and = $1 & 4259840;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $and3 = $1 & 131072;
    $tobool4 = ($and3 | 0) != 0;
    $url_map_shape = $0 + 216 | 0;
    if ($tobool4) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$url_map_shape >> 2] = 0;
    $url_map_n = $0 + 220 | 0;
    HEAP32[$url_map_n >> 2] = 2;
    label = 6;
    break;
   case 5:
    HEAP32[$url_map_shape >> 2] = 2;
    $url_map_n7 = $0 + 220 | 0;
    HEAP32[$url_map_n7 >> 2] = 4;
    label = 6;
    break;
   case 6:
    $url_map_p = $0 + 224 | 0;
    $2 = HEAP32[$url_map_p >> 2] | 0;
    $3 = $2;
    _free($3);
    $url_map_n8 = $0 + 220 | 0;
    $4 = HEAP32[$url_map_n8 >> 2] | 0;
    $mul = $4 << 4;
    $call = _zmalloc($mul) | 0;
    $5 = $call;
    HEAP32[$url_map_p >> 2] = $5;
    $x = $lab + 56 | 0;
    $6 = +HEAPF64[$x >> 3];
    $x10 = $lab + 24 | 0;
    $7 = +HEAPF64[$x10 >> 3];
    $div = $7 * .5;
    $sub = $6 - $div;
    $x11 = $call;
    HEAPF64[$x11 >> 3] = $sub;
    $y = $lab + 64 | 0;
    $8 = +HEAPF64[$y >> 3];
    $y14 = $lab + 32 | 0;
    $9 = +HEAPF64[$y14 >> 3];
    $div15 = $9 * .5;
    $sub16 = $8 - $div15;
    $y18 = $call + 8 | 0;
    $10 = $y18;
    HEAPF64[$10 >> 3] = $sub16;
    $11 = +HEAPF64[$x >> 3];
    $12 = +HEAPF64[$x10 >> 3];
    $div23 = $12 * .5;
    $add = $11 + $div23;
    $arrayidx24 = $call + 16 | 0;
    $x25 = $arrayidx24;
    HEAPF64[$x25 >> 3] = $add;
    $13 = +HEAPF64[$y >> 3];
    $14 = +HEAPF64[$y14 >> 3];
    $div30 = $14 * .5;
    $add31 = $13 + $div30;
    $y33 = $call + 24 | 0;
    $15 = $y33;
    HEAPF64[$15 >> 3] = $add31;
    $and34 = $1 & 8192;
    $tobool35 = ($and34 | 0) == 0;
    if ($tobool35) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call37 = _gvrender_ptf_A($job, $5, $5, 2) | 0;
    label = 8;
    break;
   case 8:
    if ($tobool4) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    _rect2poly($5);
    label = 10;
    break;
   case 10:
    return;
  }
}
function _emit_attachment($job, $lp, $spl) {
  $job = $job | 0;
  $lp = $lp | 0;
  $spl = $spl | 0;
  var $AF = 0, $tmp18 = 0, $tmp21 = 0, $text = 0, $0 = 0, $s_0 = 0, $1 = 0, $tobool = 0, $conv = 0, $call = 0, $cmp = 0, $incdec_ptr = 0, $_pr = 0, $cmp3 = 0, $sz_sroa_0_0__idx = 0, $sz_sroa_0_0_copyload = 0.0, $sz_sroa_1_8__idx5 = 0, $sz_sroa_1_8_copyload = 0.0, $arrayidx = 0, $pos = 0, $x = 0, $2 = 0.0, $div = 0.0, $add = 0.0, $y = 0, $3 = 0.0, $div10 = 0.0, $sub = 0.0, $AF17 = 0, $arrayidx11 = 0, $x13 = 0, $4 = 0.0, $sub15 = 0.0, $y17 = 0, $5 = 0.0, $6 = 0, $7 = 0, $arrayidx19 = 0, $8 = 0, $9 = 0, $gvc = 0, $10 = 0, $defaultlinestyle = 0, $11 = 0, $fontcolor = 0, $12 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $AF = __stackBase__ | 0;
    $tmp18 = __stackBase__ + 48 | 0;
    $tmp21 = __stackBase__ + 64 | 0;
    $text = $lp | 0;
    $0 = HEAP32[$text >> 2] | 0;
    $s_0 = $0;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$s_0] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $1 & 255;
    $call = _isspace($conv | 0) | 0;
    $cmp = ($call | 0) == 0;
    $incdec_ptr = $s_0 + 1 | 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $s_0 = $incdec_ptr;
      label = 3;
      break;
    }
   case 5:
    $_pr = HEAP8[$s_0] | 0;
    $cmp3 = $_pr << 24 >> 24 == 0;
    if ($cmp3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $sz_sroa_0_0__idx = $lp + 24 | 0;
    $sz_sroa_0_0_copyload = +HEAPF64[$sz_sroa_0_0__idx >> 3];
    $sz_sroa_1_8__idx5 = $lp + 32 | 0;
    $sz_sroa_1_8_copyload = +HEAPF64[$sz_sroa_1_8__idx5 >> 3];
    $arrayidx = $AF | 0;
    $pos = $lp + 56 | 0;
    $x = $pos | 0;
    $2 = +HEAPF64[$x >> 3];
    $div = $sz_sroa_0_0_copyload * .5;
    $add = $div + $2;
    $y = $lp + 64 | 0;
    $3 = +HEAPF64[$y >> 3];
    $div10 = $sz_sroa_1_8_copyload * .5;
    $sub = $3 - $div10;
    $AF17 = $AF | 0;
    _pointfof($AF17, $add, $sub);
    $arrayidx11 = $AF + 16 | 0;
    $x13 = $AF | 0;
    $4 = +HEAPF64[$x13 >> 3];
    $sub15 = $4 - $sz_sroa_0_0_copyload;
    $y17 = $AF + 8 | 0;
    $5 = +HEAPF64[$y17 >> 3];
    _pointfof($tmp18, $sub15, $5);
    $6 = $arrayidx11;
    $7 = $tmp18;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $arrayidx19 = $AF + 32 | 0;
    _dotneato_closest($tmp21, $spl, $pos);
    $8 = $arrayidx19;
    $9 = $tmp21;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $gvc = $job | 0;
    $10 = HEAP32[$gvc >> 2] | 0;
    $defaultlinestyle = $10 + 304 | 0;
    $11 = HEAP32[$defaultlinestyle >> 2] | 0;
    _gvrender_set_style($job, $11);
    $fontcolor = $lp + 8 | 0;
    $12 = HEAP32[$fontcolor >> 2] | 0;
    _gvrender_set_pencolor($job, $12);
    _gvrender_polyline($job, $arrayidx, 3);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _map_point($job, $pf) {
  $job = $job | 0;
  $pf = $pf | 0;
  var $obj1 = 0, $0 = 0, $flags2 = 0, $1 = 0, $and = 0, $tobool = 0, $and3 = 0, $tobool4 = 0, $url_map_shape = 0, $url_map_n = 0, $url_map_n7 = 0, $url_map_p = 0, $2 = 0, $3 = 0, $url_map_n8 = 0, $4 = 0, $mul = 0, $call = 0, $5 = 0, $x = 0, $6 = 0.0, $sub = 0.0, $x10 = 0, $y = 0, $7 = 0.0, $sub11 = 0.0, $y13 = 0, $8 = 0, $9 = 0.0, $add = 0.0, $arrayidx15 = 0, $x16 = 0, $10 = 0.0, $add18 = 0.0, $y20 = 0, $11 = 0, $and21 = 0, $tobool22 = 0, $call24 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pf;
  $pf = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pf >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pf + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pf + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pf + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $flags2 = $job + 152 | 0;
    $1 = HEAP32[$flags2 >> 2] | 0;
    $and = $1 & 4259840;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $and3 = $1 & 131072;
    $tobool4 = ($and3 | 0) != 0;
    $url_map_shape = $0 + 216 | 0;
    if ($tobool4) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$url_map_shape >> 2] = 0;
    $url_map_n = $0 + 220 | 0;
    HEAP32[$url_map_n >> 2] = 2;
    label = 6;
    break;
   case 5:
    HEAP32[$url_map_shape >> 2] = 2;
    $url_map_n7 = $0 + 220 | 0;
    HEAP32[$url_map_n7 >> 2] = 4;
    label = 6;
    break;
   case 6:
    $url_map_p = $0 + 224 | 0;
    $2 = HEAP32[$url_map_p >> 2] | 0;
    $3 = $2;
    _free($3);
    $url_map_n8 = $0 + 220 | 0;
    $4 = HEAP32[$url_map_n8 >> 2] | 0;
    $mul = $4 << 4;
    $call = _zmalloc($mul) | 0;
    $5 = $call;
    HEAP32[$url_map_p >> 2] = $5;
    $x = $pf | 0;
    $6 = +HEAPF64[$x >> 3];
    $sub = $6 + -3.0;
    $x10 = $call;
    HEAPF64[$x10 >> 3] = $sub;
    $y = $pf + 8 | 0;
    $7 = +HEAPF64[$y >> 3];
    $sub11 = $7 + -3.0;
    $y13 = $call + 8 | 0;
    $8 = $y13;
    HEAPF64[$8 >> 3] = $sub11;
    $9 = +HEAPF64[$x >> 3];
    $add = $9 + 3.0;
    $arrayidx15 = $call + 16 | 0;
    $x16 = $arrayidx15;
    HEAPF64[$x16 >> 3] = $add;
    $10 = +HEAPF64[$y >> 3];
    $add18 = $10 + 3.0;
    $y20 = $call + 24 | 0;
    $11 = $y20;
    HEAPF64[$11 >> 3] = $add18;
    $and21 = $1 & 8192;
    $tobool22 = ($and21 | 0) == 0;
    if ($tobool22) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call24 = _gvrender_ptf_A($job, $5, $5, 2) | 0;
    label = 8;
    break;
   case 8:
    if ($tobool4) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    _rect2poly($5);
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return;
  }
}
function _multicolor($job, $e, $styles, $colors, $num, $arrowsize, $penwidth) {
  $job = $job | 0;
  $e = $e | 0;
  $styles = $styles | 0;
  $colors = $colors | 0;
  $num = $num | 0;
  $arrowsize = +$arrowsize;
  $penwidth = +$penwidth;
  var $bz = 0, $bz0 = 0, $bz_l = 0, $bz_r = 0, $segs = 0, $call = 0, $cmp = 0, $tail = 0, $0 = 0, $graph = 0, $1 = 0, $name = 0, $2 = 0, $3 = 0, $4 = 0, $and = 0, $tobool = 0, $cond = 0, $head = 0, $5 = 0, $name2 = 0, $6 = 0, $call3 = 0, $cmp4 = 0, $cmp6 = 0, $spl = 0, $7 = 0, $size36 = 0, $8 = 0, $cmp1037 = 0, $9 = 0, $sflag = 0, $eflag = 0, $tobool68 = 0, $tobool68_old = 0, $ep = 0, $size53 = 0, $list54 = 0, $sp = 0, $list47 = 0, $list21 = 0, $size22 = 0, $10 = 0, $11 = 0, $list30 = 0, $list31 = 0, $size32 = 0, $list36 = 0, $size37 = 0, $12 = 0, $endcolor_039 = 0, $i_038 = 0, $list = 0, $13 = 0, $arrayidx = 0, $14 = 0, $15 = 0, $segs13 = 0, $16 = 0, $color31 = 0, $17 = 0, $tobool1532 = 0, $18 = 0, $color35 = 0, $endcolor_134 = 0, $indvars = 0, $19 = 0, $segs18 = 0, $20 = 0, $cmp19 = 0, $t = 0, $21 = 0, $22 = 0.0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $cmp26 = 0, $27 = 0.0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $endcolor_2 = 0, $incdec_ptr = 0, $39 = 0, $tobool15 = 0, $endcolor_1_lcssa = 0, $40 = 0, $tobool41 = 0, $41 = 0, $segs43 = 0, $42 = 0, $color44 = 0, $43 = 0, $44 = 0, $segs45 = 0, $45 = 0, $color46 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $tobool51 = 0, $50 = 0, $sub = 0, $51 = 0, $arrayidx55 = 0, $52 = 0, $53 = 0, $size60 = 0, $54 = 0, $cmp61 = 0, $55 = 0, $tobool64 = 0, $56 = 0, $tobool66 = 0, $or_cond = 0, $inc = 0, $57 = 0, $size = 0, $58 = 0, $cmp10 = 0, $59 = 0, $60 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 200 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $bz = __stackBase__ | 0;
    $bz0 = __stackBase__ + 48 | 0;
    $bz_l = __stackBase__ + 96 | 0;
    $bz_r = __stackBase__ + 144 | 0;
    $segs = __stackBase__ + 192 | 0;
    $call = _parseSegs($colors, $num, $segs) | 0;
    $cmp = ($call | 0) > 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $name = $0 + 12 | 0;
    $2 = HEAP32[$name >> 2] | 0;
    $3 = $1;
    $4 = HEAP32[$3 >> 2] | 0;
    $and = $4 & 16;
    $tobool = ($and | 0) != 0;
    $cond = $tobool ? 97952 : 97448;
    $head = $e + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $name2 = $5 + 12 | 0;
    $6 = HEAP32[$name2 >> 2] | 0;
    $call3 = _agerr(3, 98296, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $2, HEAP32[tempInt + 8 >> 2] = $cond, HEAP32[tempInt + 16 >> 2] = $6, tempInt) | 0) | 0;
    $cmp4 = ($call | 0) == 2;
    if ($cmp4) {
      $retval_0 = 1;
      label = 25;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $cmp6 = ($call | 0) == 1;
    if ($cmp6) {
      $retval_0 = 1;
      label = 25;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $spl = $e + 24 | 0;
    $7 = HEAP32[$spl >> 2] | 0;
    $size36 = $7 + 4 | 0;
    $8 = HEAP32[$size36 >> 2] | 0;
    $cmp1037 = ($8 | 0) > 0;
    if ($cmp1037) {
      label = 6;
      break;
    } else {
      label = 24;
      break;
    }
   case 6:
    $9 = $bz;
    $sflag = $bz + 8 | 0;
    $eflag = $bz + 12 | 0;
    $tobool68 = ($styles | 0) == 0;
    $tobool68_old = ($styles | 0) == 0;
    $ep = $bz + 32 | 0;
    $size53 = $bz + 4 | 0;
    $list54 = $bz | 0;
    $sp = $bz + 16 | 0;
    $list47 = $bz | 0;
    $list21 = $bz_l | 0;
    $size22 = $bz_l + 4 | 0;
    $10 = $bz0;
    $11 = $bz_r;
    $list30 = $bz0 | 0;
    $list31 = $bz_l | 0;
    $size32 = $bz_l + 4 | 0;
    $list36 = $bz_r | 0;
    $size37 = $bz_r + 4 | 0;
    $i_038 = 0;
    $endcolor_039 = 0;
    $12 = $7;
    label = 7;
    break;
   case 7:
    $list = $12 | 0;
    $13 = HEAP32[$list >> 2] | 0;
    $arrayidx = $13 + ($i_038 * 48 & -1) | 0;
    $14 = $arrayidx;
    HEAP32[$9 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    HEAP32[$9 + 16 >> 2] = HEAP32[$14 + 16 >> 2] | 0;
    HEAP32[$9 + 20 >> 2] = HEAP32[$14 + 20 >> 2] | 0;
    HEAP32[$9 + 24 >> 2] = HEAP32[$14 + 24 >> 2] | 0;
    HEAP32[$9 + 28 >> 2] = HEAP32[$14 + 28 >> 2] | 0;
    HEAP32[$9 + 32 >> 2] = HEAP32[$14 + 32 >> 2] | 0;
    HEAP32[$9 + 36 >> 2] = HEAP32[$14 + 36 >> 2] | 0;
    HEAP32[$9 + 40 >> 2] = HEAP32[$14 + 40 >> 2] | 0;
    HEAP32[$9 + 44 >> 2] = HEAP32[$14 + 44 >> 2] | 0;
    $15 = HEAP32[$segs >> 2] | 0;
    $segs13 = $15 + 4 | 0;
    $16 = HEAP32[$segs13 >> 2] | 0;
    $color31 = $16 | 0;
    $17 = HEAP32[$color31 >> 2] | 0;
    $tobool1532 = ($17 | 0) == 0;
    if ($tobool1532) {
      $endcolor_1_lcssa = $endcolor_039;
      label = 14;
      break;
    } else {
      $endcolor_134 = $endcolor_039;
      $color35 = $color31;
      $18 = $17;
      label = 8;
      break;
    }
   case 8:
    $indvars = $color35;
    _gvrender_set_pencolor($job, $18);
    $19 = HEAP32[$segs >> 2] | 0;
    $segs18 = $19 + 4 | 0;
    $20 = HEAP32[$segs18 >> 2] | 0;
    $cmp19 = ($indvars | 0) == ($20 | 0);
    $t = $color35 + 4 | 0;
    $21 = $t;
    $22 = +HEAPF32[$21 >> 2];
    if ($cmp19) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    _splitBSpline($bz, $22, $bz_l, $bz_r);
    $23 = HEAP32[$list21 >> 2] | 0;
    $24 = HEAP32[$size22 >> 2] | 0;
    _gvrender_beziercurve($job, $23, $24, 0, 0, 0);
    $25 = HEAP32[$list21 >> 2] | 0;
    $26 = $25;
    _free($26);
    $endcolor_2 = $endcolor_134;
    label = 13;
    break;
   case 10:
    $cmp26 = $22 < 1.0;
    if ($cmp26) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    HEAP32[$10 + 16 >> 2] = HEAP32[$11 + 16 >> 2] | 0;
    HEAP32[$10 + 20 >> 2] = HEAP32[$11 + 20 >> 2] | 0;
    HEAP32[$10 + 24 >> 2] = HEAP32[$11 + 24 >> 2] | 0;
    HEAP32[$10 + 28 >> 2] = HEAP32[$11 + 28 >> 2] | 0;
    HEAP32[$10 + 32 >> 2] = HEAP32[$11 + 32 >> 2] | 0;
    HEAP32[$10 + 36 >> 2] = HEAP32[$11 + 36 >> 2] | 0;
    HEAP32[$10 + 40 >> 2] = HEAP32[$11 + 40 >> 2] | 0;
    HEAP32[$10 + 44 >> 2] = HEAP32[$11 + 44 >> 2] | 0;
    $27 = +HEAPF32[$21 >> 2];
    _splitBSpline($bz0, $27, $bz_l, $bz_r);
    $28 = HEAP32[$list30 >> 2] | 0;
    $29 = $28;
    _free($29);
    $30 = HEAP32[$list31 >> 2] | 0;
    $31 = HEAP32[$size32 >> 2] | 0;
    _gvrender_beziercurve($job, $30, $31, 0, 0, 0);
    $32 = HEAP32[$list31 >> 2] | 0;
    $33 = $32;
    _free($33);
    $endcolor_2 = $endcolor_134;
    label = 13;
    break;
   case 12:
    $34 = HEAP32[$color35 >> 2] | 0;
    $35 = HEAP32[$list36 >> 2] | 0;
    $36 = HEAP32[$size37 >> 2] | 0;
    _gvrender_beziercurve($job, $35, $36, 0, 0, 0);
    $37 = HEAP32[$list36 >> 2] | 0;
    $38 = $37;
    _free($38);
    $endcolor_2 = $34;
    label = 13;
    break;
   case 13:
    $incdec_ptr = $color35 + 8 | 0;
    $39 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool15 = ($39 | 0) == 0;
    if ($tobool15) {
      $endcolor_1_lcssa = $endcolor_2;
      label = 14;
      break;
    } else {
      $endcolor_134 = $endcolor_2;
      $color35 = $incdec_ptr;
      $18 = $39;
      label = 8;
      break;
    }
   case 14:
    $40 = HEAP32[$sflag >> 2] | 0;
    $tobool41 = ($40 | 0) == 0;
    if ($tobool41) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $41 = HEAP32[$segs >> 2] | 0;
    $segs43 = $41 + 4 | 0;
    $42 = HEAP32[$segs43 >> 2] | 0;
    $color44 = $42 | 0;
    $43 = HEAP32[$color44 >> 2] | 0;
    _gvrender_set_pencolor($job, $43);
    $44 = HEAP32[$segs >> 2] | 0;
    $segs45 = $44 + 4 | 0;
    $45 = HEAP32[$segs45 >> 2] | 0;
    $color46 = $45 | 0;
    $46 = HEAP32[$color46 >> 2] | 0;
    _gvrender_set_fillcolor($job, $46);
    $47 = HEAP32[$list47 >> 2] | 0;
    $48 = HEAP32[$sflag >> 2] | 0;
    _arrow_gen($job, 2, $sp, $47, $arrowsize, $penwidth, $48);
    label = 16;
    break;
   case 16:
    $49 = HEAP32[$eflag >> 2] | 0;
    $tobool51 = ($49 | 0) == 0;
    if ($tobool51) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    _gvrender_set_pencolor($job, $endcolor_1_lcssa);
    _gvrender_set_fillcolor($job, $endcolor_1_lcssa);
    $50 = HEAP32[$size53 >> 2] | 0;
    $sub = $50 - 1 | 0;
    $51 = HEAP32[$list54 >> 2] | 0;
    $arrayidx55 = $51 + ($sub << 4) | 0;
    $52 = HEAP32[$eflag >> 2] | 0;
    _arrow_gen($job, 3, $ep, $arrayidx55, $arrowsize, $penwidth, $52);
    label = 18;
    break;
   case 18:
    $53 = HEAP32[$spl >> 2] | 0;
    $size60 = $53 + 4 | 0;
    $54 = HEAP32[$size60 >> 2] | 0;
    $cmp61 = ($54 | 0) > 1;
    if ($cmp61) {
      label = 19;
      break;
    } else {
      label = 23;
      break;
    }
   case 19:
    $55 = HEAP32[$sflag >> 2] | 0;
    $tobool64 = ($55 | 0) == 0;
    if ($tobool64) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $56 = HEAP32[$eflag >> 2] | 0;
    $tobool66 = ($56 | 0) == 0;
    $or_cond = $tobool66 | $tobool68;
    if ($or_cond) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    if ($tobool68_old) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    _gvrender_set_style($job, $styles);
    label = 23;
    break;
   case 23:
    $inc = $i_038 + 1 | 0;
    $57 = HEAP32[$spl >> 2] | 0;
    $size = $57 + 4 | 0;
    $58 = HEAP32[$size >> 2] | 0;
    $cmp10 = ($inc | 0) < ($58 | 0);
    if ($cmp10) {
      $i_038 = $inc;
      $endcolor_039 = $endcolor_1_lcssa;
      $12 = $57;
      label = 7;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $59 = HEAP32[$segs >> 2] | 0;
    $60 = $59;
    _free($60);
    $retval_0 = 0;
    label = 25;
    break;
   case 25:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _default_pencolor($pencolor, $deflt) {
  $pencolor = $pencolor | 0;
  $deflt = $deflt | 0;
  var $p_0 = 0, $ncol_0 = 0, $0 = 0, $inc = 0, $ncol_1 = 0, $incdec_ptr = 0, $call = 0, $add = 0, $mul = 0, $1 = 0, $cmp2 = 0, $add5 = 0, $2 = 0, $call6 = 0, $3 = 0, $call8 = 0, $dec8 = 0, $tobool99 = 0, $4 = 0, $5 = 0, $dec10 = 0, $strlen = 0, $endptr = 0, $6 = 0, $7 = 0, $call11 = 0, $dec = 0, $tobool9 = 0, $8 = 0, $_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ncol_0 = 1;
    $p_0 = $pencolor;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$p_0] | 0;
    if (($0 << 24 >> 24 | 0) == 58) {
      label = 4;
      break;
    } else if (($0 << 24 >> 24 | 0) == 0) {
      label = 6;
      break;
    } else {
      $ncol_1 = $ncol_0;
      label = 5;
      break;
    }
   case 4:
    $inc = $ncol_0 + 1 | 0;
    $ncol_1 = $inc;
    label = 5;
    break;
   case 5:
    $incdec_ptr = $p_0 + 1 | 0;
    $ncol_0 = $ncol_1;
    $p_0 = $incdec_ptr;
    label = 3;
    break;
   case 6:
    $call = _strlen($deflt | 0) | 0;
    $add = $call + 1 | 0;
    $mul = Math_imul($add, $ncol_0);
    $1 = HEAP32[5300] | 0;
    $cmp2 = ($1 | 0) < ($mul | 0);
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $add5 = $mul + 10 | 0;
    HEAP32[5300] = $add5;
    $2 = HEAP32[5302] | 0;
    $call6 = _realloc($2, $add5) | 0;
    HEAP32[5302] = $call6;
    label = 8;
    break;
   case 8:
    $3 = HEAP32[5302] | 0;
    $call8 = _strcpy($3 | 0, $deflt | 0) | 0;
    $dec8 = $ncol_0 - 1 | 0;
    $tobool99 = ($dec8 | 0) == 0;
    $4 = HEAP32[5302] | 0;
    if ($tobool99) {
      $_lcssa = $4;
      label = 10;
      break;
    } else {
      $dec10 = $dec8;
      $5 = $4;
      label = 9;
      break;
    }
   case 9:
    $strlen = _strlen($5 | 0) | 0;
    $endptr = $5 + $strlen | 0;
    $6 = $endptr;
    tempBigInt = 58;
    HEAP8[$6] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$6 + 1 | 0] = tempBigInt & 255;
    $7 = HEAP32[5302] | 0;
    $call11 = _strcat($7 | 0, $deflt | 0) | 0;
    $dec = $dec10 - 1 | 0;
    $tobool9 = ($dec | 0) == 0;
    $8 = HEAP32[5302] | 0;
    if ($tobool9) {
      $_lcssa = $8;
      label = 10;
      break;
    } else {
      $dec10 = $dec;
      $5 = $8;
      label = 9;
      break;
    }
   case 10:
    return $_lcssa | 0;
  }
  return 0;
}
function _computeoffset_p($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $sub = 0.0, $sub5 = 0.0, $div = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $sub = +HEAPF64[$p >> 3] - +HEAPF64[$q >> 3];
  $sub5 = +HEAPF64[$p + 8 >> 3] - +HEAPF64[$q + 8 >> 3];
  $div = 2.0 / +Math_sqrt(+($sub * $sub + $sub5 * $sub5 + 1.0e-4));
  HEAPF64[$agg_result >> 3] = $sub5 * $div;
  HEAPF64[$agg_result + 8 >> 3] = $div * (-0.0 - $sub);
  STACKTOP = __stackBase__;
  return;
}
function _computeoffset_qr($agg_result, $p, $q, $r, $s) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  $r = $r | 0;
  $s = $s | 0;
  var $x1 = 0, $0 = 0.0, $x2 = 0, $1 = 0.0, $sub = 0.0, $y3 = 0, $2 = 0.0, $y4 = 0, $3 = 0.0, $sub5 = 0.0, $mul = 0.0, $mul6 = 0.0, $add = 0.0, $call = 0.0, $cmp = 0, $x7 = 0, $4 = 0.0, $x8 = 0, $5 = 0.0, $sub9 = 0.0, $y10 = 0, $6 = 0.0, $y11 = 0, $7 = 0.0, $sub12 = 0.0, $mul13 = 0.0, $mul14 = 0.0, $add15 = 0.0, $add16 = 0.0, $call17 = 0.0, $len_0 = 0.0, $x_0 = 0.0, $y_0 = 0.0, $div = 0.0, $mul18 = 0.0, $sub20 = 0.0, $mul21 = 0.0, $res_sroa_0_0__idx = 0, $res_sroa_1_8__idx10 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $r;
  $r = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$r >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$r + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$r + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$r + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $s;
  $s = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$s >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$s + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$s + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$s + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x1 = $q | 0;
    $0 = +HEAPF64[$x1 >> 3];
    $x2 = $r | 0;
    $1 = +HEAPF64[$x2 >> 3];
    $sub = $0 - $1;
    $y3 = $q + 8 | 0;
    $2 = +HEAPF64[$y3 >> 3];
    $y4 = $r + 8 | 0;
    $3 = +HEAPF64[$y4 >> 3];
    $sub5 = $2 - $3;
    $mul = $sub * $sub;
    $mul6 = $sub5 * $sub5;
    $add = $mul + $mul6;
    $call = +Math_sqrt(+$add);
    $cmp = $call < 1.0e-4;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $y_0 = $sub5;
      $x_0 = $sub;
      $len_0 = $call;
      label = 4;
      break;
    }
   case 3:
    $x7 = $p | 0;
    $4 = +HEAPF64[$x7 >> 3];
    $x8 = $s | 0;
    $5 = +HEAPF64[$x8 >> 3];
    $sub9 = $4 - $5;
    $y10 = $p + 8 | 0;
    $6 = +HEAPF64[$y10 >> 3];
    $y11 = $s + 8 | 0;
    $7 = +HEAPF64[$y11 >> 3];
    $sub12 = $6 - $7;
    $mul13 = $sub9 * $sub9;
    $mul14 = $sub12 * $sub12;
    $add15 = $mul13 + $mul14;
    $add16 = $add15 + 1.0e-4;
    $call17 = +Math_sqrt(+$add16);
    $y_0 = $sub12;
    $x_0 = $sub9;
    $len_0 = $call17;
    label = 4;
    break;
   case 4:
    $div = 2.0 / $len_0;
    $mul18 = $y_0 * $div;
    $sub20 = -0.0 - $x_0;
    $mul21 = $div * $sub20;
    $res_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$res_sroa_0_0__idx >> 3] = $mul18;
    $res_sroa_1_8__idx10 = $agg_result + 8 | 0;
    HEAPF64[$res_sroa_1_8__idx10 >> 3] = $mul21;
    STACKTOP = __stackBase__;
    return;
  }
}
function _parseSegs($clrs, $nseg, $psegs) {
  $clrs = $clrs | 0;
  $nseg = $nseg | 0;
  $psegs = $psegs | 0;
  var $call = 0, $0 = 0, $add = 0, $mul = 0, $call1 = 0, $call2 = 0, $base = 0, $call5 = 0, $1 = 0, $segs6 = 0, $2 = 0, $call7 = 0, $tobool32 = 0, $rval_037 = 0, $prev_v_036 = 0.0, $nseg_addr_035 = 0, $cnum_034 = 0, $color_033 = 0, $sub = 0, $cmp = 0, $cmp8 = 0, $call10 = 0, $tobool11 = 0, $color13 = 0, $inc = 0, $t = 0, $call16 = 0.0, $cmp17 = 0, $cmp19 = 0, $color22 = 0, $sub23 = 0.0, $sub24 = 0.0, $div = 0.0, $conv = 0.0, $inc25 = 0, $t27 = 0, $_b29 = 0, $call31 = 0, $_b = 0, $call37 = 0, $rval_1 = 0, $cnum_1 = 0, $nseg_addr_1 = 0, $prev_v_1 = 0.0, $rval_2 = 0, $call42 = 0, $tobool = 0, $cmp43 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(8) | 0;
    $0 = $call;
    $add = $nseg << 3;
    $mul = $add + 8 | 0;
    $call1 = _zmalloc($mul) | 0;
    $call2 = _strdup($clrs | 0) | 0;
    $base = $call;
    HEAP32[$base >> 2] = $call2;
    $call5 = _zmalloc($mul) | 0;
    $1 = $call5;
    $segs6 = $call + 4 | 0;
    $2 = $segs6;
    HEAP32[$2 >> 2] = $1;
    $call7 = _strtok($call2 | 0, 98688) | 0;
    $tobool32 = ($call7 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      $color_033 = $call7;
      $cnum_034 = 0;
      $nseg_addr_035 = $nseg;
      $prev_v_036 = 0.0;
      $rval_037 = 0;
      label = 3;
      break;
    }
   case 3:
    $sub = $nseg_addr_035 - 1 | 0;
    $cmp = ($cnum_034 | 0) == ($sub | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $cmp8 = $prev_v_036 < 1.0;
    if ($cmp8) {
      label = 5;
      break;
    } else {
      $rval_2 = $rval_037;
      $prev_v_1 = $prev_v_036;
      $nseg_addr_1 = $nseg_addr_035;
      $cnum_1 = $cnum_034;
      label = 16;
      break;
    }
   case 5:
    $call10 = _strchr($color_033 | 0, 44) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    HEAP8[$call10] = 0;
    label = 7;
    break;
   case 7:
    $color13 = $1 + ($cnum_034 << 3) | 0;
    HEAP32[$color13 >> 2] = $color_033;
    $inc = $cnum_034 + 1 | 0;
    $t = $1 + ($cnum_034 << 3) + 4 | 0;
    HEAPF32[$t >> 2] = 1.0;
    $rval_2 = $rval_037;
    $prev_v_1 = $prev_v_036;
    $nseg_addr_1 = $nseg_addr_035;
    $cnum_1 = $inc;
    label = 16;
    break;
   case 8:
    $call16 = +_getSegLen($color_033, $prev_v_036);
    $cmp17 = $call16 < 0.0;
    if ($cmp17) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp19 = $prev_v_036 < $call16;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $color22 = $1 + ($cnum_034 << 3) | 0;
    HEAP32[$color22 >> 2] = $color_033;
    $sub23 = $call16 - $prev_v_036;
    $sub24 = 1.0 - $prev_v_036;
    $div = $sub23 / $sub24;
    $conv = $div;
    $inc25 = $cnum_034 + 1 | 0;
    $t27 = $1 + ($cnum_034 << 3) + 4 | 0;
    HEAPF32[$t27 >> 2] = $conv;
    $rval_2 = $rval_037;
    $prev_v_1 = $call16;
    $nseg_addr_1 = $nseg_addr_035;
    $cnum_1 = $inc25;
    label = 16;
    break;
   case 11:
    $_b29 = HEAP8[7544] | 0;
    if ($_b29) {
      $rval_2 = $rval_037;
      $prev_v_1 = $prev_v_036;
      $nseg_addr_1 = $sub;
      $cnum_1 = $cnum_034;
      label = 16;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call31 = _agerr(0, 97080, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $clrs, tempInt) | 0) | 0;
    HEAP8[7544] = 1;
    $rval_2 = 3;
    $prev_v_1 = $prev_v_036;
    $nseg_addr_1 = $sub;
    $cnum_1 = $cnum_034;
    label = 16;
    break;
   case 13:
    $_b = HEAP8[7544] | 0;
    if ($_b) {
      $rval_1 = 1;
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call37 = _agerr(1, 96608, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $clrs, tempInt) | 0) | 0;
    HEAP8[7544] = 1;
    $rval_1 = 2;
    label = 15;
    break;
   case 15:
    _freeSegs($0);
    $retval_0 = $rval_1;
    label = 20;
    break;
   case 16:
    $call42 = _strtok(0, 98688) | 0;
    $tobool = ($call42 | 0) == 0;
    if ($tobool) {
      label = 17;
      break;
    } else {
      $color_033 = $call42;
      $cnum_034 = $cnum_1;
      $nseg_addr_035 = $nseg_addr_1;
      $prev_v_036 = $prev_v_1;
      $rval_037 = $rval_2;
      label = 3;
      break;
    }
   case 17:
    $cmp43 = ($cnum_1 | 0) == 0;
    if ($cmp43) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    _freeSegs($0);
    $retval_0 = 1;
    label = 20;
    break;
   case 19:
    HEAP32[$psegs >> 2] = $0;
    $retval_0 = $rval_2;
    label = 20;
    break;
   case 20:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _splitBSpline($bz, $t, $left, $right) {
  $bz = $bz | 0;
  $t = +$t;
  $left = $left | 0;
  $right = $right | 0;
  var $tmp = 0, $tmp84 = 0, $size = 0, $0 = 0, $sub = 0, $div = 0, $sub_off = 0, $1 = 0, $size1 = 0, $call = 0, $2 = 0, $list = 0, $size2 = 0, $call3 = 0, $3 = 0, $list4 = 0, $list5 = 0, $4 = 0, $conv = 0.0, $5 = 0, $mul = 0, $call8 = 0, $6 = 0, $list9 = 0, $cmp1060 = 0, $7 = 0, $i_063 = 0, $pts_062 = 0, $sum_061 = 0.0, $call12 = 0.0, $arrayidx = 0, $add = 0.0, $add_ptr = 0, $inc = 0, $cmp10 = 0, $sum_0_lcssa = 0.0, $conv14 = 0.0, $mul15 = 0.0, $sum_1 = 0.0, $i_1 = 0, $cmp17 = 0, $arrayidx20 = 0, $8 = 0.0, $add21 = 0.0, $cmp22 = 0, $inc27 = 0, $sum_2 = 0.0, $9 = 0, $add31 = 0, $size32 = 0, $mul34 = 0, $call35 = 0, $10 = 0, $list36 = 0, $sub37 = 0, $mul38 = 0, $add39 = 0, $size40 = 0, $mul42 = 0, $call43 = 0, $11 = 0, $list44 = 0, $12 = 0, $cmp4758 = 0, $j_059 = 0, $13 = 0, $arrayidx51 = 0, $14 = 0, $arrayidx53 = 0, $15 = 0, $16 = 0, $inc55 = 0, $17 = 0, $cmp47 = 0, $phitmp = 0, $j_0_lcssa = 0, $18 = 0, $cmp6055 = 0, $j_157 = 0, $k_056 = 0, $19 = 0, $arrayidx64 = 0, $inc65 = 0, $20 = 0, $arrayidx67 = 0, $21 = 0, $22 = 0, $inc69 = 0, $23 = 0, $cmp60 = 0, $arrayidx71 = 0, $24 = 0.0, $sub72 = 0.0, $sub73 = 0.0, $div74 = 0.0, $conv75 = 0.0, $25 = 0, $mul77 = 0, $add_ptr78 = 0, $conv79 = 0.0, $26 = 0, $add_ptr82 = 0, $27 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp84 = __stackBase__ + 16 | 0;
    $size = $bz + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $sub = $0 - 1 | 0;
    $div = ($sub | 0) / 3 & -1;
    $sub_off = $0 - 4 | 0;
    $1 = $sub_off >>> 0 < 3;
    if ($1) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $size1 = $left + 4 | 0;
    HEAP32[$size1 >> 2] = 4;
    $call = _zmalloc(64) | 0;
    $2 = $call;
    $list = $left | 0;
    HEAP32[$list >> 2] = $2;
    $size2 = $right + 4 | 0;
    HEAP32[$size2 >> 2] = 4;
    $call3 = _zmalloc(64) | 0;
    $3 = $call3;
    $list4 = $right | 0;
    HEAP32[$list4 >> 2] = $3;
    $list5 = $bz | 0;
    $4 = HEAP32[$list5 >> 2] | 0;
    $conv = $t;
    $5 = HEAP32[$list >> 2] | 0;
    _Bezier($tmp, $4, 3, $conv, $5, $3);
    label = 16;
    break;
   case 4:
    $mul = $div << 3;
    $call8 = _zmalloc($mul) | 0;
    $6 = $call8;
    $list9 = $bz | 0;
    $cmp1060 = ($sub | 0) > 2;
    if ($cmp1060) {
      label = 5;
      break;
    } else {
      $sum_0_lcssa = 0.0;
      label = 7;
      break;
    }
   case 5:
    $7 = HEAP32[$list9 >> 2] | 0;
    $sum_061 = 0.0;
    $pts_062 = $7;
    $i_063 = 0;
    label = 6;
    break;
   case 6:
    $call12 = +_approxLen($pts_062);
    $arrayidx = $6 + ($i_063 << 3) | 0;
    HEAPF64[$arrayidx >> 3] = $call12;
    $add = $sum_061 + $call12;
    $add_ptr = $pts_062 + 48 | 0;
    $inc = $i_063 + 1 | 0;
    $cmp10 = ($inc | 0) < ($div | 0);
    if ($cmp10) {
      $sum_061 = $add;
      $pts_062 = $add_ptr;
      $i_063 = $inc;
      label = 6;
      break;
    } else {
      $sum_0_lcssa = $add;
      label = 7;
      break;
    }
   case 7:
    $conv14 = $t;
    $mul15 = $conv14 * $sum_0_lcssa;
    $i_1 = 0;
    $sum_1 = 0.0;
    label = 8;
    break;
   case 8:
    $cmp17 = ($i_1 | 0) < ($div | 0);
    if ($cmp17) {
      label = 9;
      break;
    } else {
      $sum_2 = $sum_1;
      label = 10;
      break;
    }
   case 9:
    $arrayidx20 = $6 + ($i_1 << 3) | 0;
    $8 = +HEAPF64[$arrayidx20 >> 3];
    $add21 = $sum_1 + $8;
    $cmp22 = $add21 < $mul15;
    $inc27 = $i_1 + 1 | 0;
    if ($cmp22) {
      $i_1 = $inc27;
      $sum_1 = $add21;
      label = 8;
      break;
    } else {
      $sum_2 = $add21;
      label = 10;
      break;
    }
   case 10:
    $9 = $i_1 * 3 & -1;
    $add31 = $9 + 4 | 0;
    $size32 = $left + 4 | 0;
    HEAP32[$size32 >> 2] = $add31;
    $mul34 = $add31 << 4;
    $call35 = _zmalloc($mul34) | 0;
    $10 = $call35;
    $list36 = $left | 0;
    HEAP32[$list36 >> 2] = $10;
    $sub37 = $div - $i_1 | 0;
    $mul38 = $sub37 * 3 & -1;
    $add39 = $mul38 + 1 | 0;
    $size40 = $right + 4 | 0;
    HEAP32[$size40 >> 2] = $add39;
    $mul42 = $add39 << 4;
    $call43 = _zmalloc($mul42) | 0;
    $11 = $call43;
    $list44 = $right | 0;
    HEAP32[$list44 >> 2] = $11;
    $12 = HEAP32[$size32 >> 2] | 0;
    $cmp4758 = ($12 | 0) > 0;
    if ($cmp4758) {
      $j_059 = 0;
      label = 11;
      break;
    } else {
      $j_0_lcssa = -4;
      label = 13;
      break;
    }
   case 11:
    $13 = HEAP32[$list36 >> 2] | 0;
    $arrayidx51 = $13 + ($j_059 << 4) | 0;
    $14 = HEAP32[$list9 >> 2] | 0;
    $arrayidx53 = $14 + ($j_059 << 4) | 0;
    $15 = $arrayidx51;
    $16 = $arrayidx53;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $inc55 = $j_059 + 1 | 0;
    $17 = HEAP32[$size32 >> 2] | 0;
    $cmp47 = ($inc55 | 0) < ($17 | 0);
    if ($cmp47) {
      $j_059 = $inc55;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $phitmp = $j_059 - 3 | 0;
    $j_0_lcssa = $phitmp;
    label = 13;
    break;
   case 13:
    $18 = HEAP32[$size40 >> 2] | 0;
    $cmp6055 = ($18 | 0) > 0;
    if ($cmp6055) {
      $k_056 = $j_0_lcssa;
      $j_157 = 0;
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $19 = HEAP32[$list44 >> 2] | 0;
    $arrayidx64 = $19 + ($j_157 << 4) | 0;
    $inc65 = $k_056 + 1 | 0;
    $20 = HEAP32[$list9 >> 2] | 0;
    $arrayidx67 = $20 + ($k_056 << 4) | 0;
    $21 = $arrayidx64;
    $22 = $arrayidx67;
    HEAP32[$21 >> 2] = HEAP32[$22 >> 2] | 0;
    HEAP32[$21 + 4 >> 2] = HEAP32[$22 + 4 >> 2] | 0;
    HEAP32[$21 + 8 >> 2] = HEAP32[$22 + 8 >> 2] | 0;
    HEAP32[$21 + 12 >> 2] = HEAP32[$22 + 12 >> 2] | 0;
    $inc69 = $j_157 + 1 | 0;
    $23 = HEAP32[$size40 >> 2] | 0;
    $cmp60 = ($inc69 | 0) < ($23 | 0);
    if ($cmp60) {
      $k_056 = $inc65;
      $j_157 = $inc69;
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $arrayidx71 = $6 + ($i_1 << 3) | 0;
    $24 = +HEAPF64[$arrayidx71 >> 3];
    $sub72 = $sum_2 - $24;
    $sub73 = $mul15 - $sub72;
    $div74 = $sub73 / $24;
    $conv75 = $div74;
    $25 = HEAP32[$list9 >> 2] | 0;
    $mul77 = $i_1 * 3 & -1;
    $add_ptr78 = $25 + ($mul77 << 4) | 0;
    $conv79 = $conv75;
    $26 = HEAP32[$list36 >> 2] | 0;
    $add_ptr82 = $26 + ($mul77 << 4) | 0;
    $27 = HEAP32[$list44 >> 2] | 0;
    _Bezier($tmp84, $add_ptr78, 3, $conv79, $add_ptr82, $27);
    _free($call8);
    label = 16;
    break;
   case 16:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_edge_label($job, $lbl, $lkind, $explicit, $url, $tooltip, $target, $id, $spl) {
  $job = $job | 0;
  $lbl = $lbl | 0;
  $lkind = $lkind | 0;
  $explicit = $explicit | 0;
  $url = $url | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  $spl = $spl | 0;
  var $flags1 = 0, $0 = 0, $cmp = 0, $tobool = 0, $call = 0, $add = 0, $call3 = 0, $type_0 = 0, $call6 = 0, $newid_0 = 0, $obj = 0, $1 = 0, $emit_state = 0, $2 = 0, $tobool10_not = 0, $tobool11 = 0, $or_cond = 0, $and = 0, $tobool12 = 0, $tobool15 = 0, $and22 = 0, $tobool23 = 0, $tobool27 = 0, $3 = 0, $emit_state31 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $flags1 = $job + 152 | 0;
    $0 = HEAP32[$flags1 >> 2] | 0;
    $cmp = ($lbl | 0) == 0;
    if ($cmp) {
      label = 21;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool = ($id | 0) == 0;
    if ($tobool) {
      $newid_0 = 0;
      label = 9;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _strlen($id | 0) | 0;
    $add = $call + 11 | 0;
    $call3 = _zmalloc($add) | 0;
    if (($lkind | 0) == 7) {
      label = 5;
      break;
    } else if (($lkind | 0) == 6) {
      label = 6;
      break;
    } else if (($lkind | 0) == 11) {
      $type_0 = 100816;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $type_0 = 100448;
    label = 8;
    break;
   case 6:
    $type_0 = 99968;
    label = 8;
    break;
   case 7:
    ___assert_func(162152, 2201, 164336, 99512);
   case 8:
    $call6 = _sprintf($call3 | 0, 99144, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $id, HEAP32[tempInt + 8 >> 2] = $type_0, tempInt) | 0) | 0;
    $newid_0 = $call3;
    label = 9;
    break;
   case 9:
    $obj = $job + 16 | 0;
    $1 = HEAP32[$obj >> 2] | 0;
    $emit_state = $1 + 12 | 0;
    $2 = HEAP32[$emit_state >> 2] | 0;
    HEAP32[$emit_state >> 2] = $lkind;
    $tobool10_not = ($url | 0) == 0;
    $tobool11 = ($explicit | 0) == 0;
    $or_cond = $tobool10_not & $tobool11;
    if ($or_cond) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $and = $0 & 4;
    $tobool12 = ($and | 0) == 0;
    if ($tobool12) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _map_label($job, $lbl);
    _gvrender_begin_anchor($job, $url, $tooltip, $target, $newid_0);
    label = 12;
    break;
   case 12:
    _emit_label($job, $lkind, $lbl);
    $tobool15 = ($spl | 0) == 0;
    if ($tobool15) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _emit_attachment($job, $lbl, $spl);
    label = 14;
    break;
   case 14:
    if ($or_cond) {
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $and22 = $0 & 4;
    $tobool23 = ($and22 | 0) == 0;
    if ($tobool23) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _map_label($job, $lbl);
    _gvrender_begin_anchor($job, $url, $tooltip, $target, $newid_0);
    label = 17;
    break;
   case 17:
    _gvrender_end_anchor($job);
    label = 18;
    break;
   case 18:
    $tobool27 = ($newid_0 | 0) == 0;
    if ($tobool27) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _free($newid_0);
    label = 20;
    break;
   case 20:
    $3 = HEAP32[$obj >> 2] | 0;
    $emit_state31 = $3 + 12 | 0;
    HEAP32[$emit_state31 >> 2] = $2;
    label = 21;
    break;
   case 21:
    STACKTOP = __stackBase__;
    return;
  }
}
function _is_natural_number($sstr) {
  $sstr = $sstr | 0;
  var $str_0 = 0, $0 = 0, $tobool = 0, $incdec_ptr = 0, $conv = 0, $isdigittmp = 0, $isdigit = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $str_0 = $sstr;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$str_0] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $str_0 + 1 | 0;
    $conv = $0 & 255;
    $isdigittmp = $conv - 48 | 0;
    $isdigit = $isdigittmp >>> 0 < 10;
    if ($isdigit) {
      $str_0 = $incdec_ptr;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _boxf_overlap($b0, $b1) {
  $b0 = $b0 | 0;
  $b1 = $b1 | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x3 = 0, $2 = 0.0, $x5 = 0, $3 = 0.0, $cmp6 = 0, $y = 0, $4 = 0.0, $y10 = 0, $5 = 0.0, $cmp11 = 0, $y13 = 0, $6 = 0.0, $y15 = 0, $7 = 0.0, $cmp16 = 0, $phitmp = 0, $8 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b0;
  $b0 = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b0, tempParam, 32);
  tempParam = $b1;
  $b1 = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b1, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $b0 + 16 | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $b1 | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 < $1;
    if ($cmp) {
      $8 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x3 = $b1 + 16 | 0;
    $2 = +HEAPF64[$x3 >> 3];
    $x5 = $b0 | 0;
    $3 = +HEAPF64[$x5 >> 3];
    $cmp6 = $2 < $3;
    if ($cmp6) {
      $8 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $b0 + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y10 = $b1 + 8 | 0;
    $5 = +HEAPF64[$y10 >> 3];
    $cmp11 = $4 < $5;
    if ($cmp11) {
      $8 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y13 = $b1 + 24 | 0;
    $6 = +HEAPF64[$y13 >> 3];
    $y15 = $b0 + 8 | 0;
    $7 = +HEAPF64[$y15 >> 3];
    $cmp16 = $6 >= $7;
    $phitmp = $cmp16 & 1;
    $8 = $phitmp;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $8 | 0;
  }
  return 0;
}
function _approxLen($pts) {
  $pts = $pts | 0;
  var $1 = 0.0, $sub = 0.0, $3 = 0.0, $sub11 = 0.0, $call = 0.0, $4 = 0.0, $sub22 = 0.0, $5 = 0.0, $sub33 = 0.0, $add42 = 0.0, $sub47 = 0.0, $sub58 = 0.0;
  $1 = +HEAPF64[$pts + 16 >> 3];
  $sub = +HEAPF64[$pts >> 3] - $1;
  $3 = +HEAPF64[$pts + 24 >> 3];
  $sub11 = +HEAPF64[$pts + 8 >> 3] - $3;
  $call = +Math_sqrt(+($sub * $sub + $sub11 * $sub11));
  $4 = +HEAPF64[$pts + 32 >> 3];
  $sub22 = $1 - $4;
  $5 = +HEAPF64[$pts + 40 >> 3];
  $sub33 = $3 - $5;
  $add42 = $call + +Math_sqrt(+($sub22 * $sub22 + $sub33 * $sub33));
  $sub47 = $4 - +HEAPF64[$pts + 48 >> 3];
  $sub58 = $5 - +HEAPF64[$pts + 56 >> 3];
  return +($add42 + +Math_sqrt(+($sub47 * $sub47 + $sub58 * $sub58)));
}
function _getSegLen($s, $prev_v) {
  $s = $s | 0;
  $prev_v = +$prev_v;
  var $endp = 0, $call = 0, $tobool = 0, $call1 = 0, $incdec_ptr = 0, $call2 = 0.0, $0 = 0, $cmp = 0, $cmp4 = 0, $cmp5 = 0, $or_cond = 0, $retval_0 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $endp = __stackBase__ | 0;
    $call = _strchr($s | 0, 44) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call1 = _agerr(1, 96248, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    $retval_0 = -1.0;
    label = 7;
    break;
   case 4:
    $incdec_ptr = $call + 1 | 0;
    HEAP8[$call] = 0;
    $call2 = +_strtod($incdec_ptr, $endp);
    $0 = HEAP32[$endp >> 2] | 0;
    $cmp = ($0 | 0) == ($incdec_ptr | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp4 = $call2 >= $prev_v;
    $cmp5 = $call2 <= 1.0;
    $or_cond = $cmp4 & $cmp5;
    if ($or_cond) {
      $retval_0 = $call2;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $retval_0 = -1.0;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return +$retval_0;
  }
  return 0.0;
}
function _freeSegs($segs) {
  $segs = $segs | 0;
  _free(HEAP32[$segs >> 2] | 0);
  _free(HEAP32[$segs + 4 >> 2] | 0);
  _free($segs);
  return;
}
function _map_output_bspline($pbs, $pbs_n, $pbs_poly_n, $bp, $w2) {
  $pbs = $pbs | 0;
  $pbs_n = $pbs_n | 0;
  $pbs_poly_n = $pbs_poly_n | 0;
  $bp = $bp | 0;
  $w2 = +$w2;
  var $pts = 0, $pt1 = 0, $pt2 = 0, $call = 0, $0 = 0, $next = 0, $1 = 0, $size = 0, $2 = 0, $sub = 0, $div = 0, $cmp32 = 0, $list = 0, $arraydecay = 0, $tobool27 = 0, $arraydecay11 = 0, $arraydecay10 = 0, $3 = 0, $4 = 0, $j_034 = 0, $segp_033 = 0, $mul = 0, $5 = 0, $arrayidx4 = 0, $6 = 0, $7 = 0, $arrayidx_1 = 0, $add_1 = 0, $8 = 0, $arrayidx4_1 = 0, $9 = 0, $10 = 0, $arrayidx_2 = 0, $add_2 = 0, $11 = 0, $arrayidx4_2 = 0, $12 = 0, $13 = 0, $arrayidx_3 = 0, $add_3 = 0, $14 = 0, $arrayidx4_3 = 0, $15 = 0, $16 = 0, $call5 = 0, $inc7 = 0, $cmp = 0, $tobool2525 = 0, $cnt_030 = 0, $segp_129 = 0, $segprev_028 = 0, $next9 = 0, $17 = 0, $add_ptr = 0, $add_ptr12 = 0, $inc13 = 0, $cmp14 = 0, $cmp15 = 0, $or_cond = 0, $cnt_0_be = 0, $tobool = 0, $18 = 0, $19 = 0, $segl_026 = 0, $next27 = 0, $20 = 0, $21 = 0, $tobool25 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1664 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pts = __stackBase__ | 0;
    $pt1 = __stackBase__ + 64 | 0;
    $pt2 = __stackBase__ + 864 | 0;
    $call = _gmalloc(24) | 0;
    $0 = $call;
    $next = $call + 16 | 0;
    $1 = $next;
    HEAP32[$1 >> 2] = 1;
    $size = $bp + 4 | 0;
    $2 = HEAP32[$size >> 2] | 0;
    $sub = $2 - 1 | 0;
    $div = ($sub | 0) / 3 & -1;
    $cmp32 = ($sub | 0) > 2;
    if ($cmp32) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $list = $bp | 0;
    $arraydecay = $pts | 0;
    $segp_033 = $0;
    $j_034 = 0;
    label = 6;
    break;
   case 4:
    $tobool27 = ($call | 0) == 0;
    if ($tobool27) {
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $arraydecay11 = $pt2 | 0;
    $arraydecay10 = $pt1 | 0;
    $3 = $pt1;
    $4 = $pt2;
    $segprev_028 = 0;
    $segp_129 = $0;
    $cnt_030 = 0;
    label = 8;
    break;
   case 6:
    $mul = $j_034 * 3 & -1;
    $5 = HEAP32[$list >> 2] | 0;
    $arrayidx4 = $5 + ($mul << 4) | 0;
    $6 = $pts;
    $7 = $arrayidx4;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $arrayidx_1 = $pts + 16 | 0;
    $add_1 = $mul + 1 | 0;
    $8 = HEAP32[$list >> 2] | 0;
    $arrayidx4_1 = $8 + ($add_1 << 4) | 0;
    $9 = $arrayidx_1;
    $10 = $arrayidx4_1;
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $arrayidx_2 = $pts + 32 | 0;
    $add_2 = $mul + 2 | 0;
    $11 = HEAP32[$list >> 2] | 0;
    $arrayidx4_2 = $11 + ($add_2 << 4) | 0;
    $12 = $arrayidx_2;
    $13 = $arrayidx4_2;
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $arrayidx_3 = $pts + 48 | 0;
    $add_3 = $mul + 3 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $arrayidx4_3 = $14 + ($add_3 << 4) | 0;
    $15 = $arrayidx_3;
    $16 = $arrayidx4_3;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $call5 = _approx_bezier($arraydecay, $segp_033) | 0;
    $inc7 = $j_034 + 1 | 0;
    $cmp = ($inc7 | 0) < ($div | 0);
    if ($cmp) {
      $segp_033 = $call5;
      $j_034 = $inc7;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 7:
    $tobool2525 = ($call | 0) == 0;
    if ($tobool2525) {
      label = 12;
      break;
    } else {
      $segl_026 = $0;
      label = 11;
      break;
    }
   case 8:
    $next9 = $segp_129 + 16 | 0;
    $17 = HEAP32[$next9 >> 2] | 0;
    $add_ptr = $pt1 + ($cnt_030 << 4) | 0;
    $add_ptr12 = $pt2 + ($cnt_030 << 4) | 0;
    _mkSegPts($segprev_028, $segp_129, $17, $add_ptr, $add_ptr12, $w2);
    $inc13 = $cnt_030 + 1 | 0;
    $cmp14 = ($17 | 0) == 0;
    $cmp15 = ($inc13 | 0) == 50;
    $or_cond = $cmp14 | $cmp15;
    if ($or_cond) {
      label = 10;
      break;
    } else {
      $cnt_0_be = $inc13;
      label = 9;
      break;
    }
   case 9:
    $tobool = ($17 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $segprev_028 = $segp_129;
      $segp_129 = $17;
      $cnt_030 = $cnt_0_be;
      label = 8;
      break;
    }
   case 10:
    _map_bspline_poly($pbs, $pbs_n, $pbs_poly_n, $inc13, $arraydecay10, $arraydecay11);
    $18 = $add_ptr;
    HEAP32[$3 >> 2] = HEAP32[$18 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$18 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$18 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$18 + 12 >> 2] | 0;
    $19 = $add_ptr12;
    HEAP32[$4 >> 2] = HEAP32[$19 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$19 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$19 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$19 + 12 >> 2] | 0;
    $cnt_0_be = 1;
    label = 9;
    break;
   case 11:
    $next27 = $segl_026 + 16 | 0;
    $20 = HEAP32[$next27 >> 2] | 0;
    $21 = $segl_026;
    _free($21);
    $tobool25 = ($20 | 0) == 0;
    if ($tobool25) {
      label = 12;
      break;
    } else {
      $segl_026 = $20;
      label = 11;
      break;
    }
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _approx_bezier($cp, $lp) {
  $cp = $cp | 0;
  $lp = $lp | 0;
  var $left = 0, $right = 0, $tmp = 0, $call = 0, $tobool = 0, $next = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $arrayidx3 = 0, $call4 = 0, $arraydecay = 0, $arraydecay5 = 0, $call7 = 0, $call9 = 0, $lp_addr_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $left = __stackBase__ | 0;
    $right = __stackBase__ + 64 | 0;
    $tmp = __stackBase__ + 128 | 0;
    $call = _check_control_points($cp) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $next = $lp + 16 | 0;
    $0 = HEAP32[$next >> 2] | 0;
    $cmp = ($0 | 0) == 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$next >> 2] = 0;
    $1 = $lp;
    $2 = $cp;
    HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    label = 5;
    break;
   case 5:
    $arrayidx3 = $cp + 48 | 0;
    $call4 = _appendSeg($arrayidx3, $lp) | 0;
    $lp_addr_0 = $call4;
    label = 7;
    break;
   case 6:
    $arraydecay = $left | 0;
    $arraydecay5 = $right | 0;
    _Bezier($tmp, $cp, 3, .5, $arraydecay, $arraydecay5);
    $call7 = _approx_bezier($arraydecay, $lp) | 0;
    $call9 = _approx_bezier($arraydecay5, $call7) | 0;
    $lp_addr_0 = $call9;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $lp_addr_0 | 0;
  }
  return 0;
}
function _mkSegPts($prv, $cur, $nxt, $p1, $p2, $w2) {
  $prv = $prv | 0;
  $cur = $cur | 0;
  $nxt = $nxt | 0;
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  $w2 = +$w2;
  var $cp = 0, $pp = 0, $np = 0, $0 = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $tobool5 = 0, $4 = 0, $5 = 0, $x = 0, $6 = 0.0, $mul = 0.0, $x8 = 0, $7 = 0.0, $sub = 0.0, $x9 = 0, $y = 0, $8 = 0.0, $mul10 = 0.0, $y11 = 0, $9 = 0.0, $sub12 = 0.0, $y13 = 0, $10 = 0, $11 = 0, $x16 = 0, $12 = 0.0, $mul17 = 0.0, $x18 = 0, $13 = 0.0, $sub19 = 0.0, $x20 = 0, $y21 = 0, $14 = 0.0, $mul22 = 0.0, $y23 = 0, $15 = 0.0, $sub24 = 0.0, $y25 = 0, $call = 0.0, $call27 = 0.0, $mul28 = 0.0, $call29 = 0.0, $mul30 = 0.0, $x31 = 0, $16 = 0.0, $add = 0.0, $y33 = 0, $17 = 0.0, $add34 = 0.0, $p_sroa_0_0__idx1 = 0, $p_sroa_1_8__idx4 = 0, $18 = 0.0, $sub37 = 0.0, $19 = 0.0, $sub40 = 0.0, $p_sroa_0_0__idx = 0, $p_sroa_1_8__idx3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cp = __stackBase__ | 0;
    $pp = __stackBase__ + 16 | 0;
    $np = __stackBase__ + 32 | 0;
    $0 = $cp;
    $1 = $cur;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $tobool = ($prv | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $pp;
    $3 = $prv;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $tobool5 = ($nxt | 0) == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = $np;
    $5 = $nxt;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    label = 7;
    break;
   case 5:
    $x = $cp | 0;
    $6 = +HEAPF64[$x >> 3];
    $mul = $6 * 2.0;
    $x8 = $pp | 0;
    $7 = +HEAPF64[$x8 >> 3];
    $sub = $mul - $7;
    $x9 = $np | 0;
    HEAPF64[$x9 >> 3] = $sub;
    $y = $cp + 8 | 0;
    $8 = +HEAPF64[$y >> 3];
    $mul10 = $8 * 2.0;
    $y11 = $pp + 8 | 0;
    $9 = +HEAPF64[$y11 >> 3];
    $sub12 = $mul10 - $9;
    $y13 = $np + 8 | 0;
    HEAPF64[$y13 >> 3] = $sub12;
    label = 7;
    break;
   case 6:
    $10 = $np;
    $11 = $nxt;
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    $x16 = $cp | 0;
    $12 = +HEAPF64[$x16 >> 3];
    $mul17 = $12 * 2.0;
    $x18 = $np | 0;
    $13 = +HEAPF64[$x18 >> 3];
    $sub19 = $mul17 - $13;
    $x20 = $pp | 0;
    HEAPF64[$x20 >> 3] = $sub19;
    $y21 = $cp + 8 | 0;
    $14 = +HEAPF64[$y21 >> 3];
    $mul22 = $14 * 2.0;
    $y23 = $np + 8 | 0;
    $15 = +HEAPF64[$y23 >> 3];
    $sub24 = $mul22 - $15;
    $y25 = $pp + 8 | 0;
    HEAPF64[$y25 >> 3] = $sub24;
    label = 7;
    break;
   case 7:
    $call = +_bisect($pp, $cp, $np);
    $call27 = +Math_cos(+$call);
    $mul28 = $call27 * $w2;
    $call29 = +Math_sin(+$call);
    $mul30 = $call29 * $w2;
    $x31 = $cp | 0;
    $16 = +HEAPF64[$x31 >> 3];
    $add = $mul28 + $16;
    $y33 = $cp + 8 | 0;
    $17 = +HEAPF64[$y33 >> 3];
    $add34 = $mul30 + $17;
    $p_sroa_0_0__idx1 = $p1 | 0;
    HEAPF64[$p_sroa_0_0__idx1 >> 3] = $add;
    $p_sroa_1_8__idx4 = $p1 + 8 | 0;
    HEAPF64[$p_sroa_1_8__idx4 >> 3] = $add34;
    $18 = +HEAPF64[$x31 >> 3];
    $sub37 = $18 - $mul28;
    $19 = +HEAPF64[$y33 >> 3];
    $sub40 = $19 - $mul30;
    $p_sroa_0_0__idx = $p2 | 0;
    HEAPF64[$p_sroa_0_0__idx >> 3] = $sub37;
    $p_sroa_1_8__idx3 = $p2 + 8 | 0;
    HEAPF64[$p_sroa_1_8__idx3 >> 3] = $sub40;
    STACKTOP = __stackBase__;
    return;
  }
}
function _map_bspline_poly($pbs_p, $pbs_n, $pbs_poly_n, $n, $p1, $p2) {
  $pbs_p = $pbs_p | 0;
  $pbs_n = $pbs_n | 0;
  $pbs_poly_n = $pbs_poly_n | 0;
  $n = $n | 0;
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  var $mul = 0, $sub = 0, $0 = 0, $cmp26 = 0, $1 = 0, $2 = 0, $3 = 0, $i_028 = 0, $nump_027 = 0, $arrayidx = 0, $4 = 0, $add = 0, $inc = 0, $cmp = 0, $smax = 0, $_lcssa = 0, $i_0_lcssa = 0, $nump_0_lcssa = 0, $inc1 = 0, $5 = 0, $6 = 0, $mul2 = 0, $call = 0, $7 = 0, $arrayidx4 = 0, $8 = 0, $9 = 0, $add6 = 0, $mul7 = 0, $call8 = 0, $10 = 0, $cmp1024 = 0, $add15 = 0, $i_125 = 0, $add12 = 0, $11 = 0, $arrayidx13 = 0, $arrayidx14 = 0, $12 = 0, $13 = 0, $sub16 = 0, $14 = 0, $arrayidx17 = 0, $arrayidx18 = 0, $15 = 0, $16 = 0, $inc20 = 0, $cmp10 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $mul = $n << 1;
    $sub = $mul - 1 | 0;
    $0 = HEAP32[$pbs_poly_n >> 2] | 0;
    $cmp26 = ($0 | 0) > 0;
    if ($cmp26) {
      label = 3;
      break;
    } else {
      $nump_0_lcssa = 0;
      $i_0_lcssa = 0;
      $_lcssa = $0;
      label = 6;
      break;
    }
   case 3:
    $1 = HEAP32[$pbs_n >> 2] | 0;
    $2 = HEAP32[$pbs_poly_n >> 2] | 0;
    $3 = ($2 | 0) > 1;
    $nump_027 = 0;
    $i_028 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx = $1 + ($i_028 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $add = $4 + $nump_027 | 0;
    $inc = $i_028 + 1 | 0;
    $cmp = ($inc | 0) < ($2 | 0);
    if ($cmp) {
      $nump_027 = $add;
      $i_028 = $inc;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $smax = $3 ? $2 : 1;
    $nump_0_lcssa = $add;
    $i_0_lcssa = $smax;
    $_lcssa = $2;
    label = 6;
    break;
   case 6:
    $inc1 = $_lcssa + 1 | 0;
    HEAP32[$pbs_poly_n >> 2] = $inc1;
    $5 = HEAP32[$pbs_n >> 2] | 0;
    $6 = $5;
    $mul2 = $inc1 << 2;
    $call = _grealloc($6, $mul2) | 0;
    $7 = $call;
    HEAP32[$pbs_n >> 2] = $7;
    $arrayidx4 = $7 + ($i_0_lcssa << 2) | 0;
    HEAP32[$arrayidx4 >> 2] = $mul;
    $8 = HEAP32[$pbs_p >> 2] | 0;
    $9 = $8;
    $add6 = $nump_0_lcssa + $mul | 0;
    $mul7 = $add6 << 4;
    $call8 = _grealloc($9, $mul7) | 0;
    $10 = $call8;
    HEAP32[$pbs_p >> 2] = $10;
    $cmp1024 = ($n | 0) > 0;
    if ($cmp1024) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $add15 = $sub + $nump_0_lcssa | 0;
    $i_125 = 0;
    label = 8;
    break;
   case 8:
    $add12 = $i_125 + $nump_0_lcssa | 0;
    $11 = HEAP32[$pbs_p >> 2] | 0;
    $arrayidx13 = $11 + ($add12 << 4) | 0;
    $arrayidx14 = $p1 + ($i_125 << 4) | 0;
    $12 = $arrayidx13;
    $13 = $arrayidx14;
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $sub16 = $add15 - $i_125 | 0;
    $14 = HEAP32[$pbs_p >> 2] | 0;
    $arrayidx17 = $14 + ($sub16 << 4) | 0;
    $arrayidx18 = $p2 + ($i_125 << 4) | 0;
    $15 = $arrayidx17;
    $16 = $arrayidx18;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $inc20 = $i_125 + 1 | 0;
    $cmp10 = ($inc20 | 0) < ($n | 0);
    if ($cmp10) {
      $i_125 = $inc20;
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    return;
  }
}
function _bisect($pp, $cp, $np) {
  $pp = $pp | 0;
  $cp = $cp | 0;
  $np = $np | 0;
  var $y = 0, $0 = 0.0, $y1 = 0, $1 = 0.0, $sub = 0.0, $x = 0, $2 = 0.0, $x2 = 0, $3 = 0.0, $sub3 = 0.0, $call = 0.0, $y4 = 0, $4 = 0.0, $sub6 = 0.0, $x7 = 0, $5 = 0.0, $sub9 = 0.0, $call10 = 0.0, $sub11 = 0.0, $cmp = 0, $sub12 = 0.0, $ang_0 = 0.0, $div = 0.0, $add = 0.0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pp;
  $pp = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pp + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pp + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $cp;
  $cp = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$cp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$cp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$cp + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$cp + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $np;
  $np = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$np >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$np + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$np + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$np + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $y = $np + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $y1 = $cp + 8 | 0;
    $1 = +HEAPF64[$y1 >> 3];
    $sub = $0 - $1;
    $x = $np | 0;
    $2 = +HEAPF64[$x >> 3];
    $x2 = $cp | 0;
    $3 = +HEAPF64[$x2 >> 3];
    $sub3 = $2 - $3;
    $call = +Math_atan2(+$sub, +$sub3);
    $y4 = $pp + 8 | 0;
    $4 = +HEAPF64[$y4 >> 3];
    $sub6 = $4 - $1;
    $x7 = $pp | 0;
    $5 = +HEAPF64[$x7 >> 3];
    $sub9 = $5 - $3;
    $call10 = +Math_atan2(+$sub6, +$sub9);
    $sub11 = $call - $call10;
    $cmp = $sub11 > 0.0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $ang_0 = $sub11;
      label = 4;
      break;
    }
   case 3:
    $sub12 = $sub11 - 6.283185307179586;
    $ang_0 = $sub12;
    label = 4;
    break;
   case 4:
    $div = $ang_0 * .5;
    $add = $call10 + $div;
    STACKTOP = __stackBase__;
    return +$add;
  }
  return 0.0;
}
function _appendSeg($p, $lp) {
  $p = $p | 0;
  $lp = $lp | 0;
  var $call = 0, $0 = 0, $2 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $call = _gmalloc(24) | 0;
  $0 = $call;
  HEAP32[$call + 16 >> 2] = 0;
  $2 = $p;
  HEAP32[$call >> 2] = HEAP32[$2 >> 2] | 0;
  HEAP32[$call + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
  HEAP32[$call + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
  HEAP32[$call + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
  HEAP32[$lp + 16 >> 2] = $0;
  STACKTOP = __stackBase__;
  return $0 | 0;
}
function _selectedlayer($job, $spec) {
  $job = $job | 0;
  $spec = $spec | 0;
  var $buf = 0, $xb = 0, $gvc1 = 0, $0 = 0, $arraydecay = 0, $call = 0, $ptr = 0, $1 = 0, $eptr = 0, $2 = 0, $cmp = 0, $call2 = 0, $3 = 0, $buf4 = 0, $4 = 0, $layerDelims = 0, $5 = 0, $call6 = 0, $tobool = 0, $6 = 0, $call8 = 0, $w1_0 = 0, $conv = 0, $cmp10 = 0, $conv11 = 0, $add = 0, $layerNum = 0, $7 = 0, $call13 = 0, $8 = 0, $cmp15 = 0, $conv17 = 0, $call19 = 0, $numLayers = 0, $9 = 0, $call20 = 0, $10 = 0, $or_cond_not = 0, $cmp26 = 0, $or_cond21 = 0, $n0_0 = 0, $layerNum31 = 0, $11 = 0, $cmp32 = 0, $n1_0 = 0, $cmp35 = 0, $phitmp = 0, $rval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $xb = __stackBase__ + 128 | 0;
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $arraydecay = $buf | 0;
    _agxbinit($xb, 128, $arraydecay);
    $call = _agxbput($xb, $spec) | 0;
    $ptr = $xb + 4 | 0;
    $1 = HEAP32[$ptr >> 2] | 0;
    $eptr = $xb + 8 | 0;
    $2 = HEAP32[$eptr >> 2] | 0;
    $cmp = $1 >>> 0 < $2 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call2 = _agxbmore($xb, 1) | 0;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$3] = 0;
    $buf4 = $xb | 0;
    $4 = HEAP32[$buf4 >> 2] | 0;
    HEAP32[$ptr >> 2] = $4;
    $layerDelims = $0 + 272 | 0;
    $5 = HEAP32[$layerDelims >> 2] | 0;
    $call6 = _strtok($4 | 0, $5 | 0) | 0;
    $tobool = ($call6 | 0) != 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $w1_0 = 0;
      label = 6;
      break;
    }
   case 5:
    $6 = HEAP32[$layerDelims >> 2] | 0;
    $call8 = _strtok(0, $6 | 0) | 0;
    $w1_0 = $call8;
    label = 6;
    break;
   case 6:
    $conv = $tobool & 1;
    $cmp10 = ($w1_0 | 0) != 0;
    $conv11 = $cmp10 & 1;
    $add = $conv11 + $conv | 0;
    if (($add | 0) == 1) {
      label = 7;
      break;
    } else if (($add | 0) == 2) {
      label = 8;
      break;
    } else {
      $rval_0 = 0;
      label = 10;
      break;
    }
   case 7:
    $layerNum = $job + 160 | 0;
    $7 = HEAP32[$layerNum >> 2] | 0;
    $call13 = _layer_index($0, $call6, $7) | 0;
    $8 = HEAP32[$layerNum >> 2] | 0;
    $cmp15 = ($call13 | 0) == ($8 | 0);
    $conv17 = $cmp15 & 1;
    $rval_0 = $conv17;
    label = 10;
    break;
   case 8:
    $call19 = _layer_index($0, $call6, 0) | 0;
    $numLayers = $job + 156 | 0;
    $9 = HEAP32[$numLayers >> 2] | 0;
    $call20 = _layer_index($0, $w1_0, $9) | 0;
    $10 = $call20 | $call19;
    $or_cond_not = ($10 | 0) > -1;
    $cmp26 = ($call19 | 0) > ($call20 | 0);
    $or_cond21 = $or_cond_not & $cmp26;
    $n0_0 = $or_cond21 ? $call20 : $call19;
    $layerNum31 = $job + 160 | 0;
    $11 = HEAP32[$layerNum31 >> 2] | 0;
    $cmp32 = ($n0_0 | 0) > ($11 | 0);
    if ($cmp32) {
      $rval_0 = 0;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $n1_0 = $or_cond21 ? $call19 : $call20;
    $cmp35 = ($11 | 0) <= ($n1_0 | 0);
    $phitmp = $cmp35 & 1;
    $rval_0 = $phitmp;
    label = 10;
    break;
   case 10:
    _agxbfree($xb);
    STACKTOP = __stackBase__;
    return $rval_0 | 0;
  }
  return 0;
}
function _layer_index($gvc, $str, $all) {
  $gvc = $gvc | 0;
  $str = $str | 0;
  $all = $all | 0;
  var $job1 = 0, $0 = 0, $1 = 0, $cmp = 0, $call = 0, $tobool = 0, $call4 = 0, $tobool5 = 0, $call7 = 0, $layerIDs = 0, $2 = 0, $tobool9 = 0, $numLayers = 0, $3 = 0, $cmp1113 = 0, $4 = 0, $5 = 0, $i_014 = 0, $arrayidx = 0, $6 = 0, $7 = 0, $cmp16 = 0, $call21 = 0, $tobool22 = 0, $inc = 0, $8 = 0, $cmp11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $job1 = $gvc + 124 | 0;
    $0 = HEAP32[$job1 >> 2] | 0;
    $1 = HEAP8[$str] | 0;
    $cmp = $1 << 24 >> 24 == 97;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _strcmp($str | 0, 162624) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = $all;
      label = 12;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call4 = _is_natural_number($str) | 0;
    $tobool5 = $call4 << 24 >> 24 == 0;
    if ($tobool5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call7 = _atoi($str | 0) | 0;
    $retval_0 = $call7;
    label = 12;
    break;
   case 6:
    $layerIDs = $gvc + 280 | 0;
    $2 = HEAP32[$layerIDs >> 2] | 0;
    $tobool9 = ($2 | 0) == 0;
    if ($tobool9) {
      $retval_0 = -1;
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $numLayers = $0 + 156 | 0;
    $3 = HEAP32[$numLayers >> 2] | 0;
    $cmp1113 = ($3 | 0) < 1;
    if ($cmp1113) {
      $retval_0 = -1;
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $4 = HEAP8[$str] | 0;
    $5 = HEAP32[$layerIDs >> 2] | 0;
    $i_014 = 1;
    label = 9;
    break;
   case 9:
    $arrayidx = $5 + ($i_014 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    $7 = HEAP8[$6] | 0;
    $cmp16 = $4 << 24 >> 24 == $7 << 24 >> 24;
    if ($cmp16) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $call21 = _strcmp($str | 0, $6 | 0) | 0;
    $tobool22 = ($call21 | 0) == 0;
    if ($tobool22) {
      $retval_0 = $i_014;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $inc = $i_014 + 1 | 0;
    $8 = HEAP32[$numLayers >> 2] | 0;
    $cmp11 = ($inc | 0) > ($8 | 0);
    if ($cmp11) {
      $retval_0 = -1;
      label = 12;
      break;
    } else {
      $i_014 = $inc;
      label = 9;
      break;
    }
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _node_in_layer($job, $g, $n) {
  $job = $job | 0;
  $g = $g | 0;
  $n = $n | 0;
  var $numLayers = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $call = 0, $call1 = 0, $tobool = 0, $3 = 0, $tobool4 = 0, $4 = 0, $5 = 0, $call7 = 0, $cmp8 = 0, $call11 = 0, $tobool1212 = 0, $e_0_in13 = 0, $6 = 0, $7 = 0, $call13 = 0, $8 = 0, $cmp15 = 0, $call17 = 0, $tobool19 = 0, $call22 = 0, $tobool12 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $numLayers = $job + 156 | 0;
    $0 = HEAP32[$numLayers >> 2] | 0;
    $cmp = ($0 | 0) < 2;
    if ($cmp) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $n | 0;
    $2 = HEAP32[41586] | 0;
    $call = _late_string($1, $2, 136112) | 0;
    $call1 = _selectedlayer($job, $call) | 0;
    $tobool = $call1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 10;
      break;
    }
   case 4:
    $3 = HEAP8[$call] | 0;
    $tobool4 = $3 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 10;
      break;
    }
   case 5:
    $4 = $g;
    $5 = $n;
    $call7 = _agfstedge($4, $5) | 0;
    $cmp8 = ($call7 | 0) == 0;
    if ($cmp8) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call11 = _agfstedge($4, $5) | 0;
    $tobool1212 = ($call11 | 0) == 0;
    if ($tobool1212) {
      $retval_0 = 0;
      label = 10;
      break;
    } else {
      $e_0_in13 = $call11;
      label = 7;
      break;
    }
   case 7:
    $6 = $e_0_in13 | 0;
    $7 = HEAP32[41920] | 0;
    $call13 = _late_string($6, $7, 136112) | 0;
    $8 = HEAP8[$call13] | 0;
    $cmp15 = $8 << 24 >> 24 == 0;
    if ($cmp15) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call17 = _selectedlayer($job, $call13) | 0;
    $tobool19 = $call17 << 24 >> 24 == 0;
    if ($tobool19) {
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 10;
      break;
    }
   case 9:
    $call22 = _agnxtedge($4, $e_0_in13, $5) | 0;
    $tobool12 = ($call22 | 0) == 0;
    if ($tobool12) {
      $retval_0 = 0;
      label = 10;
      break;
    } else {
      $e_0_in13 = $call22;
      label = 7;
      break;
    }
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _node_in_box($n, $b) {
  $n = $n | 0;
  $b = $b | 0;
  var $conv = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  $conv = _boxf_overlap($n + 64 | 0, $b) & 255;
  STACKTOP = __stackBase__;
  return $conv | 0;
}
function _isRect($p) {
  $p = $p | 0;
  var $sides = 0, $0 = 0, $cmp = 0, $orientation = 0, $1 = 0.0, $cmp1 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $rem = 0, $cmp5 = 0, $distortion = 0, $2 = 0.0, $cmp8 = 0, $skew = 0, $3 = 0.0, $cmp10 = 0, $phitmp = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sides = $p + 8 | 0;
    $0 = HEAP32[$sides >> 2] | 0;
    $cmp = ($0 | 0) == 4;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $4 = 0;
      label = 9;
      break;
    }
   case 3:
    $orientation = $p + 16 | 0;
    $1 = +HEAPF64[$orientation >> 3];
    $cmp1 = $1 < 0.0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $add = $1 + .5;
    $add_sink = $add;
    label = 6;
    break;
   case 5:
    $sub = $1 + -.5;
    $add_sink = $sub;
    label = 6;
    break;
   case 6:
    $conv = ~~$add_sink;
    $rem = ($conv | 0) % 90;
    $cmp5 = ($rem | 0) == 0;
    if ($cmp5) {
      label = 7;
      break;
    } else {
      $4 = 0;
      label = 9;
      break;
    }
   case 7:
    $distortion = $p + 24 | 0;
    $2 = +HEAPF64[$distortion >> 3];
    $cmp8 = $2 == 0.0;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      $4 = 0;
      label = 9;
      break;
    }
   case 8:
    $skew = $p + 32 | 0;
    $3 = +HEAPF64[$skew >> 3];
    $cmp10 = $3 == 0.0;
    $phitmp = $cmp10 & 1;
    $4 = $phitmp;
    label = 9;
    break;
   case 9:
    return $4 | 0;
  }
  return 0;
}
function _add_point($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $add4 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  $add4 = (HEAP32[$q + 4 >> 2] | 0) + (HEAP32[$p + 4 >> 2] | 0) | 0;
  HEAP32[$agg_result >> 2] = (HEAP32[$q >> 2] | 0) + (HEAP32[$p >> 2] | 0) | 0;
  HEAP32[$agg_result + 4 >> 2] = $add4;
  STACKTOP = __stackBase__;
  return;
}
function _emit_begin_node($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $flags1 = 0, $0 = 0, $call = 0, $type = 0, $1 = 0, $n_c = 0, $emit_state = 0, $and = 0, $tobool = 0, $graph = 0, $2 = 0, $odim = 0, $3 = 0, $cmp = 0, $pos = 0, $4 = 0, $arrayidx = 0, $5 = 0.0, $mul = 0.0, $cmp7 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv13 = 0, $conv19 = 0.0, $z = 0, $z20 = 0, $label = 0, $6 = 0, $7 = 0, $and23 = 0, $tobool24 = 0, $url = 0, $8 = 0, $tobool25 = 0, $9 = 0, $10 = 0, $11 = 0, $_mask = 0, $tobool26 = 0, $call28 = 0, $coord_sroa_0_0__idx = 0, $coord_sroa_0_0_copyload = 0.0, $coord_sroa_1_8__idx21 = 0, $coord_sroa_1_8_copyload = 0.0, $call31 = 0, $shape_info = 0, $12 = 0, $13 = 0, $call39 = 0, $tobool41 = 0, $peripheries43 = 0, $14 = 0, $15 = 0, $16 = 0, $phitmp = 0, $rect_0 = 0, $tobool50 = 0, $or_cond138 = 0, $and54 = 0, $tobool55 = 0, $sides57 = 0, $17 = 0, $18 = 0, $cmp58 = 0, $_ = 0, $peripheries64 = 0, $19 = 0, $20 = 0, $cmp65 = 0, $peripheries_0 = 0, $vertices71 = 0, $21 = 0, $22 = 0, $call72 = 0, $tobool73 = 0, $call75 = 0, $nump_0 = 0, $nump_0_off = 0, $23 = 0, $_nump_0 = 0, $24 = 0, $25 = 0, $26 = 0, $url_map_shape = 0, $call91 = 0, $27 = 0, $lw = 0, $28 = 0.0, $sub93 = 0.0, $x95 = 0, $ht = 0, $29 = 0.0, $div = 0.0, $sub97 = 0.0, $y99 = 0, $30 = 0, $31 = 0.0, $add103 = 0.0, $arrayidx104 = 0, $x105 = 0, $32 = 0.0, $div109 = 0.0, $add110 = 0.0, $y112 = 0, $33 = 0, $34 = 0, $cmp115 = 0, $skew = 0, $35 = 0, $36 = 0.0, $cmp118 = 0, $distortion = 0, $37 = 0, $38 = 0.0, $cmp121 = 0, $regular = 0, $39 = 0, $tobool124 = 0, $url_map_shape126 = 0, $call128 = 0, $40 = 0, $x131 = 0, $y134 = 0, $41 = 0, $mul136 = 0, $sub137 = 0, $x139 = 0, $42 = 0.0, $add140 = 0.0, $arrayidx141 = 0, $x142 = 0, $y147 = 0, $43 = 0.0, $add148 = 0.0, $y150 = 0, $44 = 0, $mul153 = 0, $sub154 = 0, $x156 = 0, $45 = 0.0, $y160 = 0, $46 = 0.0, $call161 = 0, $cmp162144 = 0, $i_0145 = 0, $x166 = 0, $47 = 0.0, $add167 = 0.0, $y170 = 0, $48 = 0.0, $add171 = 0.0, $inc = 0, $cmp162 = 0, $sub174 = 0, $49 = 0, $mul176 = 0, $url_map_shape177 = 0, $50 = 0, $cmp179 = 0, $div183 = 0, $mul184 = 0, $call185 = 0, $51 = 0, $cmp187150 = 0, $i_1152 = 0, $j_0151 = 0, $add191 = 0, $x193 = 0, $52 = 0.0, $add194 = 0.0, $x196 = 0, $y200 = 0, $53 = 0.0, $add201 = 0.0, $y203 = 0, $add205 = 0, $inc206 = 0, $cmp187 = 0, $mul209 = 0, $call210 = 0, $54 = 0, $cmp212147 = 0, $i_2148 = 0, $add216 = 0, $x218 = 0, $55 = 0.0, $add219 = 0.0, $x221 = 0, $y225 = 0, $56 = 0.0, $add226 = 0.0, $y228 = 0, $inc230 = 0, $cmp212 = 0, $url_map_shape236 = 0, $call238 = 0, $57 = 0, $lw241 = 0, $58 = 0.0, $sub242 = 0.0, $x244 = 0, $ht247 = 0, $59 = 0.0, $div248 = 0.0, $sub249 = 0.0, $y251 = 0, $60 = 0, $rw = 0, $61 = 0.0, $add254 = 0.0, $arrayidx255 = 0, $x256 = 0, $62 = 0.0, $div260 = 0.0, $add261 = 0.0, $y263 = 0, $63 = 0, $nump_2 = 0, $p_0 = 0, $and265 = 0, $tobool266 = 0, $call268 = 0, $url_map_p = 0, $url_map_n = 0, $call271 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $flags1 = $job + 152 | 0;
    $0 = HEAP32[$flags1 >> 2] | 0;
    $call = _push_obj_state($job) | 0;
    $type = $call + 4 | 0;
    HEAP32[$type >> 2] = 2;
    $1 = $call + 8 | 0;
    $n_c = $n;
    HEAP32[$1 >> 2] = $n_c;
    $emit_state = $call + 12 | 0;
    HEAP32[$emit_state >> 2] = 8;
    $and = $0 & 16777216;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $graph = $n + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $odim = $2 + 210 | 0;
    $3 = HEAP16[$odim >> 1] | 0;
    $cmp = ($3 & 65535) > 2;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $pos = $n + 148 | 0;
    $4 = HEAP32[$pos >> 2] | 0;
    $arrayidx = $4 + 16 | 0;
    $5 = +HEAPF64[$arrayidx >> 3];
    $mul = $5 * 72.0;
    $cmp7 = $mul < 0.0;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add = $mul + .5;
    $add_sink = $add;
    label = 7;
    break;
   case 6:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 7;
    break;
   case 7:
    $conv13 = ~~$add_sink;
    $conv19 = +($conv13 | 0);
    $z = $call + 120 | 0;
    HEAPF64[$z >> 3] = $conv19;
    label = 9;
    break;
   case 8:
    $z20 = $call + 120 | 0;
    HEAPF64[$z20 >> 3] = 0.0;
    label = 9;
    break;
   case 9:
    $label = $n + 120 | 0;
    $6 = HEAP32[$label >> 2] | 0;
    $7 = $n | 0;
    _initObjMapData($job, $6, $7);
    $and23 = $0 & 4259840;
    $tobool24 = ($and23 | 0) == 0;
    if ($tobool24) {
      label = 37;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $url = $call + 160 | 0;
    $8 = HEAP32[$url >> 2] | 0;
    $tobool25 = ($8 | 0) == 0;
    if ($tobool25) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $9 = $call + 212 | 0;
    $10 = $9;
    $11 = HEAP32[$10 >> 2] | 0;
    $_mask = $11 & 1;
    $tobool26 = ($_mask | 0) == 0;
    if ($tobool26) {
      label = 37;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call28 = _shapeOf($n) | 0;
    $coord_sroa_0_0__idx = $n + 32 | 0;
    $coord_sroa_0_0_copyload = +HEAPF64[$coord_sroa_0_0__idx >> 3];
    $coord_sroa_1_8__idx21 = $n + 40 | 0;
    $coord_sroa_1_8_copyload = +HEAPF64[$coord_sroa_1_8__idx21 >> 3];
    $call31 = _ifFilled($n) | 0;
    if (($call28 | 0) == 3 | ($call28 | 0) == 1) {
      label = 13;
      break;
    } else {
      label = 33;
      break;
    }
   case 13:
    $shape_info = $n + 28 | 0;
    $12 = HEAP32[$shape_info >> 2] | 0;
    $13 = $12;
    $call39 = _isRect($13) | 0;
    $tobool41 = $call39 << 24 >> 24 == 0;
    if ($tobool41) {
      $rect_0 = 1;
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $peripheries43 = $12 + 4 | 0;
    $14 = $peripheries43;
    $15 = HEAP32[$14 >> 2] | 0;
    $16 = $15 | $call31;
    $phitmp = ($16 | 0) == 0;
    $rect_0 = $phitmp;
    label = 15;
    break;
   case 15:
    $tobool50 = ($12 | 0) != 0;
    $or_cond138 = $tobool50 & $rect_0;
    if ($or_cond138) {
      label = 16;
      break;
    } else {
      label = 33;
      break;
    }
   case 16:
    $and54 = $0 & 524288;
    $tobool55 = ($and54 | 0) == 0;
    if ($tobool55) {
      label = 33;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $sides57 = $12 + 8 | 0;
    $17 = $sides57;
    $18 = HEAP32[$17 >> 2] | 0;
    $cmp58 = ($18 | 0) < 3;
    $_ = $cmp58 ? 1 : $18;
    $peripheries64 = $12 + 4 | 0;
    $19 = $peripheries64;
    $20 = HEAP32[$19 >> 2] | 0;
    $cmp65 = ($20 | 0) > 1;
    $peripheries_0 = $cmp65 ? $20 : 1;
    $vertices71 = $12 + 44 | 0;
    $21 = $vertices71;
    $22 = HEAP32[$21 >> 2] | 0;
    $call72 = _agget($7, 162160) | 0;
    $tobool73 = ($call72 | 0) == 0;
    if ($tobool73) {
      $nump_0 = 0;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call75 = _atoi($call72 | 0) | 0;
    $nump_0 = $call75;
    label = 19;
    break;
   case 19:
    $nump_0_off = $nump_0 - 4 | 0;
    $23 = $nump_0_off >>> 0 > 56;
    $_nump_0 = $23 ? 20 : $nump_0;
    $24 = HEAP32[$19 >> 2] | 0;
    $25 = $24 | $call31;
    $26 = ($25 | 0) == 0;
    if ($26) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $url_map_shape = $call + 216 | 0;
    HEAP32[$url_map_shape >> 2] = 0;
    $call91 = _zmalloc(32) | 0;
    $27 = $call91;
    $lw = $n + 104 | 0;
    $28 = +HEAPF64[$lw >> 3];
    $sub93 = $coord_sroa_0_0_copyload - $28;
    $x95 = $call91;
    HEAPF64[$x95 >> 3] = $sub93;
    $ht = $n + 96 | 0;
    $29 = +HEAPF64[$ht >> 3];
    $div = $29 * .5;
    $sub97 = $coord_sroa_1_8_copyload - $div;
    $y99 = $call91 + 8 | 0;
    $30 = $y99;
    HEAPF64[$30 >> 3] = $sub97;
    $31 = +HEAPF64[$lw >> 3];
    $add103 = $coord_sroa_0_0_copyload + $31;
    $arrayidx104 = $call91 + 16 | 0;
    $x105 = $arrayidx104;
    HEAPF64[$x105 >> 3] = $add103;
    $32 = +HEAPF64[$ht >> 3];
    $div109 = $32 * .5;
    $add110 = $coord_sroa_1_8_copyload + $div109;
    $y112 = $call91 + 24 | 0;
    $33 = $y112;
    HEAPF64[$33 >> 3] = $add110;
    $p_0 = $27;
    $nump_2 = 2;
    label = 34;
    break;
   case 21:
    $34 = HEAP32[$17 >> 2] | 0;
    $cmp115 = ($34 | 0) < 3;
    if ($cmp115) {
      label = 22;
      break;
    } else {
      label = 28;
      break;
    }
   case 22:
    $skew = $12 + 32 | 0;
    $35 = $skew;
    $36 = +HEAPF64[$35 >> 3];
    $cmp118 = $36 == 0.0;
    if ($cmp118) {
      label = 23;
      break;
    } else {
      label = 28;
      break;
    }
   case 23:
    $distortion = $12 + 24 | 0;
    $37 = $distortion;
    $38 = +HEAPF64[$37 >> 3];
    $cmp121 = $38 == 0.0;
    if ($cmp121) {
      label = 24;
      break;
    } else {
      label = 28;
      break;
    }
   case 24:
    $regular = $12;
    $39 = HEAP32[$regular >> 2] | 0;
    $tobool124 = ($39 | 0) == 0;
    $url_map_shape126 = $call + 216 | 0;
    if ($tobool124) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    HEAP32[$url_map_shape126 >> 2] = 1;
    $call128 = _zmalloc(32) | 0;
    $40 = $call128;
    $x131 = $call128;
    HEAPF64[$x131 >> 3] = $coord_sroa_0_0_copyload;
    $y134 = $call128 + 8 | 0;
    $41 = $y134;
    HEAPF64[$41 >> 3] = $coord_sroa_1_8_copyload;
    $mul136 = $peripheries_0 << 1;
    $sub137 = $mul136 - 1 | 0;
    $x139 = $22 + ($sub137 << 4) | 0;
    $42 = +HEAPF64[$x139 >> 3];
    $add140 = $coord_sroa_0_0_copyload + $42;
    $arrayidx141 = $call128 + 16 | 0;
    $x142 = $arrayidx141;
    HEAPF64[$x142 >> 3] = $add140;
    $y147 = $22 + ($sub137 << 4) + 8 | 0;
    $43 = +HEAPF64[$y147 >> 3];
    $add148 = $coord_sroa_1_8_copyload + $43;
    $y150 = $call128 + 24 | 0;
    $44 = $y150;
    HEAPF64[$44 >> 3] = $add148;
    $p_0 = $40;
    $nump_2 = 2;
    label = 34;
    break;
   case 26:
    HEAP32[$url_map_shape126 >> 2] = 2;
    $mul153 = $peripheries_0 << 1;
    $sub154 = $mul153 - 1 | 0;
    $x156 = $22 + ($sub154 << 4) | 0;
    $45 = +HEAPF64[$x156 >> 3];
    $y160 = $22 + ($sub154 << 4) + 8 | 0;
    $46 = +HEAPF64[$y160 >> 3];
    $call161 = _pEllipse($45, $46, $_nump_0) | 0;
    $cmp162144 = ($_nump_0 | 0) > 0;
    if ($cmp162144) {
      $i_0145 = 0;
      label = 27;
      break;
    } else {
      $p_0 = $call161;
      $nump_2 = $_nump_0;
      label = 34;
      break;
    }
   case 27:
    $x166 = $call161 + ($i_0145 << 4) | 0;
    $47 = +HEAPF64[$x166 >> 3];
    $add167 = $coord_sroa_0_0_copyload + $47;
    HEAPF64[$x166 >> 3] = $add167;
    $y170 = $call161 + ($i_0145 << 4) + 8 | 0;
    $48 = +HEAPF64[$y170 >> 3];
    $add171 = $coord_sroa_1_8_copyload + $48;
    HEAPF64[$y170 >> 3] = $add171;
    $inc = $i_0145 + 1 | 0;
    $cmp162 = ($inc | 0) < ($_nump_0 | 0);
    if ($cmp162) {
      $i_0145 = $inc;
      label = 27;
      break;
    } else {
      $p_0 = $call161;
      $nump_2 = $_nump_0;
      label = 34;
      break;
    }
   case 28:
    $sub174 = $peripheries_0 - 1 | 0;
    $49 = HEAP32[$17 >> 2] | 0;
    $mul176 = Math_imul($49, $sub174);
    $url_map_shape177 = $call + 216 | 0;
    HEAP32[$url_map_shape177 >> 2] = 2;
    $50 = HEAP32[$17 >> 2] | 0;
    $cmp179 = ($50 | 0) < ($_nump_0 | 0);
    if ($cmp179) {
      label = 31;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $div183 = ($50 | 0) / ($_nump_0 | 0) & -1;
    $mul184 = $_nump_0 << 4;
    $call185 = _zmalloc($mul184) | 0;
    $51 = $call185;
    $cmp187150 = ($_nump_0 | 0) > 0;
    if ($cmp187150) {
      $j_0151 = 0;
      $i_1152 = 0;
      label = 30;
      break;
    } else {
      $p_0 = $51;
      $nump_2 = $_nump_0;
      label = 34;
      break;
    }
   case 30:
    $add191 = $i_1152 + $mul176 | 0;
    $x193 = $22 + ($add191 << 4) | 0;
    $52 = +HEAPF64[$x193 >> 3];
    $add194 = $coord_sroa_0_0_copyload + $52;
    $x196 = $51 + ($j_0151 << 4) | 0;
    HEAPF64[$x196 >> 3] = $add194;
    $y200 = $22 + ($add191 << 4) + 8 | 0;
    $53 = +HEAPF64[$y200 >> 3];
    $add201 = $coord_sroa_1_8_copyload + $53;
    $y203 = $51 + ($j_0151 << 4) + 8 | 0;
    HEAPF64[$y203 >> 3] = $add201;
    $add205 = $i_1152 + $div183 | 0;
    $inc206 = $j_0151 + 1 | 0;
    $cmp187 = ($inc206 | 0) < ($_nump_0 | 0);
    if ($cmp187) {
      $j_0151 = $inc206;
      $i_1152 = $add205;
      label = 30;
      break;
    } else {
      $p_0 = $51;
      $nump_2 = $_nump_0;
      label = 34;
      break;
    }
   case 31:
    $mul209 = $_ << 4;
    $call210 = _zmalloc($mul209) | 0;
    $54 = $call210;
    $cmp212147 = ($_ | 0) > 0;
    if ($cmp212147) {
      $i_2148 = 0;
      label = 32;
      break;
    } else {
      $p_0 = $54;
      $nump_2 = $_;
      label = 34;
      break;
    }
   case 32:
    $add216 = $i_2148 + $mul176 | 0;
    $x218 = $22 + ($add216 << 4) | 0;
    $55 = +HEAPF64[$x218 >> 3];
    $add219 = $coord_sroa_0_0_copyload + $55;
    $x221 = $54 + ($i_2148 << 4) | 0;
    HEAPF64[$x221 >> 3] = $add219;
    $y225 = $22 + ($add216 << 4) + 8 | 0;
    $56 = +HEAPF64[$y225 >> 3];
    $add226 = $coord_sroa_1_8_copyload + $56;
    $y228 = $54 + ($i_2148 << 4) + 8 | 0;
    HEAPF64[$y228 >> 3] = $add226;
    $inc230 = $i_2148 + 1 | 0;
    $cmp212 = ($inc230 | 0) < ($_ | 0);
    if ($cmp212) {
      $i_2148 = $inc230;
      label = 32;
      break;
    } else {
      $p_0 = $54;
      $nump_2 = $_;
      label = 34;
      break;
    }
   case 33:
    $url_map_shape236 = $call + 216 | 0;
    HEAP32[$url_map_shape236 >> 2] = 0;
    $call238 = _zmalloc(32) | 0;
    $57 = $call238;
    $lw241 = $n + 104 | 0;
    $58 = +HEAPF64[$lw241 >> 3];
    $sub242 = $coord_sroa_0_0_copyload - $58;
    $x244 = $call238;
    HEAPF64[$x244 >> 3] = $sub242;
    $ht247 = $n + 96 | 0;
    $59 = +HEAPF64[$ht247 >> 3];
    $div248 = $59 * .5;
    $sub249 = $coord_sroa_1_8_copyload - $div248;
    $y251 = $call238 + 8 | 0;
    $60 = $y251;
    HEAPF64[$60 >> 3] = $sub249;
    $rw = $n + 112 | 0;
    $61 = +HEAPF64[$rw >> 3];
    $add254 = $coord_sroa_0_0_copyload + $61;
    $arrayidx255 = $call238 + 16 | 0;
    $x256 = $arrayidx255;
    HEAPF64[$x256 >> 3] = $add254;
    $62 = +HEAPF64[$ht247 >> 3];
    $div260 = $62 * .5;
    $add261 = $coord_sroa_1_8_copyload + $div260;
    $y263 = $call238 + 24 | 0;
    $63 = $y263;
    HEAPF64[$63 >> 3] = $add261;
    $p_0 = $57;
    $nump_2 = 2;
    label = 34;
    break;
   case 34:
    $and265 = $0 & 8192;
    $tobool266 = ($and265 | 0) == 0;
    if ($tobool266) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $call268 = _gvrender_ptf_A($job, $p_0, $p_0, $nump_2) | 0;
    label = 36;
    break;
   case 36:
    $url_map_p = $call + 224 | 0;
    HEAP32[$url_map_p >> 2] = $p_0;
    $url_map_n = $call + 220 | 0;
    HEAP32[$url_map_n >> 2] = $nump_2;
    label = 37;
    break;
   case 37:
    $call271 = _agget($7, 133704) | 0;
    _setColorScheme($call271);
    _gvrender_begin_node($job, 0);
    return;
  }
}
function _emit_end_node($job) {
  $job = $job | 0;
  _gvrender_end_node($job);
  _pop_obj_state($job);
  return;
}
function _initObjMapData($job, $lab, $gobj) {
  $job = $job | 0;
  $lab = $lab | 0;
  $gobj = $gobj | 0;
  var $buf = 0, $xb = 0, $call = 0, $call1 = 0, $call2 = 0, $arraydecay = 0, $tobool = 0, $text = 0, $0 = 0, $lbl_0 = 0, $tobool3 = 0, $1 = 0, $tobool4 = 0, $call6 = 0, $url_0 = 0, $call8 = 0, $call9 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $xb = __stackBase__ + 128 | 0;
    $call = _agget($gobj, 95856) | 0;
    $call1 = _agget($gobj, 90704) | 0;
    $call2 = _agget($gobj, 92456) | 0;
    $arraydecay = $buf | 0;
    _agxbinit($xb, 128, $arraydecay);
    $tobool = ($lab | 0) == 0;
    if ($tobool) {
      $lbl_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $text = $lab | 0;
    $0 = HEAP32[$text >> 2] | 0;
    $lbl_0 = $0;
    label = 4;
    break;
   case 4:
    $tobool3 = ($call | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $1 = HEAP8[$call] | 0;
    $tobool4 = $1 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      $url_0 = $call;
      label = 7;
      break;
    }
   case 6:
    $call6 = _agget($gobj, 95472) | 0;
    $url_0 = $call6;
    label = 7;
    break;
   case 7:
    $call8 = _getObjId($job, $gobj, $xb) | 0;
    $call9 = _initMapData($job, $lbl_0, $url_0, $call1, $call2, $call8, $gobj) | 0;
    _agxbfree($xb);
    STACKTOP = __stackBase__;
    return;
  }
}
function _ifFilled($n) {
  $n = $n | 0;
  var $0 = 0, $1 = 0, $call = 0, $2 = 0, $tobool = 0, $call1 = 0, $3 = 0, $tobool23 = 0, $4 = 0, $r_05 = 0, $pp_04 = 0, $call3 = 0, $cmp = 0, $_r_0 = 0, $incdec_ptr = 0, $5 = 0, $tobool2 = 0, $r_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $1 = HEAP32[41560] | 0;
    $call = _late_nnstring($0, $1, 136112) | 0;
    $2 = HEAP8[$call] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      $r_2 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _parse_style($call) | 0;
    $3 = HEAP32[1820] | 0;
    $tobool23 = ($3 | 0) == 0;
    if ($tobool23) {
      $r_2 = 0;
      label = 5;
      break;
    } else {
      $pp_04 = 7280;
      $r_05 = 0;
      $4 = $3;
      label = 4;
      break;
    }
   case 4:
    $call3 = _strcmp($4 | 0, 161792) | 0;
    $cmp = ($call3 | 0) == 0;
    $_r_0 = $cmp ? 1 : $r_05;
    $incdec_ptr = $pp_04 + 4 | 0;
    $5 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool2 = ($5 | 0) == 0;
    if ($tobool2) {
      $r_2 = $_r_0;
      label = 5;
      break;
    } else {
      $pp_04 = $incdec_ptr;
      $r_05 = $_r_0;
      $4 = $5;
      label = 4;
      break;
    }
   case 5:
    return $r_2 | 0;
  }
  return 0;
}
function _pEllipse($a, $b, $np) {
  $a = +$a;
  $b = +$b;
  $np = $np | 0;
  var $conv = 0.0, $div = 0.0, $mul = 0, $call = 0, $0 = 0, $cmp10 = 0, $theta_012 = 0.0, $i_011 = 0, $call2 = 0.0, $mul3 = 0.0, $x = 0, $call4 = 0.0, $mul5 = 0.0, $y = 0, $add = 0.0, $inc = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $conv = +($np | 0);
    $div = 6.283185307179586 / $conv;
    $mul = $np << 4;
    $call = _zmalloc($mul) | 0;
    $0 = $call;
    $cmp10 = ($np | 0) > 0;
    if ($cmp10) {
      $i_011 = 0;
      $theta_012 = 0.0;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call2 = +Math_cos(+$theta_012);
    $mul3 = $call2 * $a;
    $x = $0 + ($i_011 << 4) | 0;
    HEAPF64[$x >> 3] = $mul3;
    $call4 = +Math_sin(+$theta_012);
    $mul5 = $call4 * $b;
    $y = $0 + ($i_011 << 4) + 8 | 0;
    HEAPF64[$y >> 3] = $mul5;
    $add = $div + $theta_012;
    $inc = $i_011 + 1 | 0;
    $cmp = ($inc | 0) < ($np | 0);
    if ($cmp) {
      $i_011 = $inc;
      $theta_012 = $add;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    return $0 | 0;
  }
  return 0;
}
function _free_string_entry($dict, $key, $disc) {
  $dict = $dict | 0;
  $key = $key | 0;
  $disc = $disc | 0;
  _agstrfree($key);
  return;
}
function _setup_page($job) {
  $job = $job | 0;
  var $pagesArrayElem = 0, $tmpcast = 0, $pagesArraySize = 0, $tmpcast1 = 0, $tmp = 0, $tmp3 = 0, $pagesArrayElem1 = 0, $0 = 0, $ld$0$0 = 0, $1$0 = 0, $ld$1$1 = 0, $1$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $pagesArraySize2 = 0, $2 = 0, $ld$4$0 = 0, $3$0 = 0, $ld$5$1 = 0, $3$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $rotation = 0, $4 = 0, $tobool = 0, $tmpcast3 = 0, $tmpcast2 = 0, $ld$8$0 = 0, $5$0 = 0, $ld$9$1 = 0, $5$1 = 0, $st$10$0 = 0, $st$11$1 = 0, $ld$12$0 = 0, $6$0 = 0, $ld$13$1 = 0, $6$1 = 0, $st$14$0 = 0, $st$15$1 = 0, $x = 0, $7 = 0, $conv = 0.0, $x4 = 0, $8 = 0.0, $mul = 0.0, $x5 = 0, $9 = 0.0, $sub = 0.0, $x6 = 0, $y = 0, $10 = 0, $conv7 = 0.0, $y9 = 0, $11 = 0.0, $mul10 = 0.0, $y12 = 0, $12 = 0.0, $sub13 = 0.0, $y16 = 0, $13 = 0.0, $14 = 0.0, $add = 0.0, $x23 = 0, $15 = 0.0, $16 = 0.0, $add29 = 0.0, $y32 = 0, $common = 0, $17 = 0, $viewNum = 0, $18 = 0, $cmp = 0, $boundingBox = 0, $pageBoundingBox = 0, $19 = 0, $20 = 0, $x37 = 0, $21 = 0, $x40 = 0, $22 = 0, $cmp41 = 0, $_ = 0, $y54 = 0, $23 = 0, $y57 = 0, $24 = 0, $cmp58 = 0, $cond69 = 0, $x75 = 0, $25 = 0, $x78 = 0, $26 = 0, $cmp79 = 0, $_4 = 0, $y96 = 0, $27 = 0, $y99 = 0, $28 = 0, $cmp100 = 0, $cond111 = 0, $flags = 0, $29 = 0, $and = 0, $tobool116 = 0, $x118 = 0, $30 = 0.0, $x119 = 0, $31 = 0.0, $div = 0.0, $sub120 = 0.0, $x122 = 0, $y124 = 0, $32 = 0.0, $y126 = 0, $33 = 0.0, $div127 = 0.0, $sub128 = 0.0, $y131 = 0, $34 = 0.0, $35 = 0.0, $div136 = 0.0, $add137 = 0.0, $x140 = 0, $36 = 0.0, $37 = 0.0, $div145 = 0.0, $add146 = 0.0, $y149 = 0, $38 = 0.0, $39 = 0, $conv156 = 0.0, $x157 = 0, $40 = 0, $conv158 = 0.0, $div159 = 0.0, $sub160 = 0.0, $mul161 = 0.0, $add162 = 0.0, $x165 = 0, $y167 = 0, $41 = 0.0, $42 = 0.0, $43 = 0, $conv171 = 0.0, $y172 = 0, $44 = 0, $conv173 = 0.0, $div174 = 0.0, $sub175 = 0.0, $mul176 = 0.0, $add177 = 0.0, $sub178 = 0.0, $y181 = 0, $45 = 0.0, $46 = 0.0, $add187 = 0.0, $add188 = 0.0, $x191 = 0, $47 = 0.0, $48 = 0.0, $add197 = 0.0, $add198 = 0.0, $y201 = 0, $49 = 0, $tobool204 = 0, $clip206 = 0, $y208 = 0, $50 = 0.0, $sub209 = 0.0, $LL210 = 0, $y211 = 0, $51 = 0.0, $zoom = 0, $52 = 0.0, $div212 = 0.0, $sub213 = 0.0, $translation = 0, $y214 = 0, $53 = 0, $and216 = 0, $54 = 0, $55 = 0, $56 = 0, $x222 = 0, $57 = 0.0, $sub223 = 0.0, $x226 = 0, $58 = 0.0, $59 = 0.0, $div228 = 0.0, $sub229 = 0.0, $x231 = 0, $x235 = 0, $60 = 0.0, $x239 = 0, $61 = 0.0, $62 = 0.0, $div241 = 0.0, $add242 = 0.0, $x244 = 0, $x249 = 0, $63 = 0.0, $x253 = 0, $64 = 0.0, $zoom254 = 0, $65 = 0.0, $div255 = 0.0, $add256 = 0.0, $x258 = 0, $66 = 0, $and260 = 0, $67 = 0, $68 = 0, $69 = 0, $y267 = 0, $70 = 0.0, $sub268 = 0.0, $y271 = 0, $71 = 0.0, $72 = 0.0, $div273 = 0.0, $sub274 = 0.0, $y276 = 0, $y280 = 0, $73 = 0.0, $y284 = 0, $74 = 0.0, $75 = 0.0, $div286 = 0.0, $add287 = 0.0, $y289 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pagesArrayElem = __stackBase__ | 0;
    $tmpcast = $pagesArrayElem;
    $pagesArraySize = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast1 = $pagesArraySize;
    $tmp = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmp3 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $pagesArrayElem1 = $job + 196 | 0;
    $0 = $pagesArrayElem1;
    $ld$0$0 = $0 | 0;
    $1$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $0 + 4 | 0;
    $1$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $pagesArrayElem | 0;
    HEAP32[$st$2$0 >> 2] = $1$0;
    $st$3$1 = $pagesArrayElem + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $1$1;
    $pagesArraySize2 = $job + 164 | 0;
    $2 = $pagesArraySize2;
    $ld$4$0 = $2 | 0;
    $3$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $2 + 4 | 0;
    $3$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $pagesArraySize | 0;
    HEAP32[$st$6$0 >> 2] = $3$0;
    $st$7$1 = $pagesArraySize + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $3$1;
    $rotation = $job + 360 | 0;
    $4 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tmpcast3 = $tmp3;
    $tmpcast2 = $tmp;
    _exch_xy($tmpcast2, $tmpcast);
    $ld$8$0 = $tmp | 0;
    $5$0 = HEAP32[$ld$8$0 >> 2] | 0;
    $ld$9$1 = $tmp + 4 | 0;
    $5$1 = HEAP32[$ld$9$1 >> 2] | 0;
    $st$10$0 = $pagesArrayElem | 0;
    HEAP32[$st$10$0 >> 2] = $5$0;
    $st$11$1 = $pagesArrayElem + 4 | 0;
    HEAP32[$st$11$1 >> 2] = $5$1;
    _exch_xy($tmpcast3, $tmpcast1);
    $ld$12$0 = $tmp3 | 0;
    $6$0 = HEAP32[$ld$12$0 >> 2] | 0;
    $ld$13$1 = $tmp3 + 4 | 0;
    $6$1 = HEAP32[$ld$13$1 >> 2] | 0;
    $st$14$0 = $pagesArraySize | 0;
    HEAP32[$st$14$0 >> 2] = $6$0;
    $st$15$1 = $pagesArraySize + 4 | 0;
    HEAP32[$st$15$1 >> 2] = $6$1;
    label = 4;
    break;
   case 4:
    $x = $pagesArrayElem;
    $7 = HEAP32[$x >> 2] | 0;
    $conv = +($7 | 0);
    $x4 = $job + 320 | 0;
    $8 = +HEAPF64[$x4 >> 3];
    $mul = $conv * $8;
    $x5 = $job + 240 | 0;
    $9 = +HEAPF64[$x5 >> 3];
    $sub = $mul - $9;
    $x6 = $job + 288 | 0;
    HEAPF64[$x6 >> 3] = $sub;
    $y = $tmpcast + 4 | 0;
    $10 = HEAP32[$y >> 2] | 0;
    $conv7 = +($10 | 0);
    $y9 = $job + 328 | 0;
    $11 = +HEAPF64[$y9 >> 3];
    $mul10 = $conv7 * $11;
    $y12 = $job + 248 | 0;
    $12 = +HEAPF64[$y12 >> 3];
    $sub13 = $mul10 - $12;
    $y16 = $job + 296 | 0;
    HEAPF64[$y16 >> 3] = $sub13;
    $13 = +HEAPF64[$x6 >> 3];
    $14 = +HEAPF64[$x4 >> 3];
    $add = $13 + $14;
    $x23 = $job + 304 | 0;
    HEAPF64[$x23 >> 3] = $add;
    $15 = +HEAPF64[$y16 >> 3];
    $16 = +HEAPF64[$y9 >> 3];
    $add29 = $15 + $16;
    $y32 = $job + 312 | 0;
    HEAPF64[$y32 >> 3] = $add29;
    $common = $job + 12 | 0;
    $17 = HEAP32[$common >> 2] | 0;
    $viewNum = $17 + 28 | 0;
    $18 = HEAP32[$viewNum >> 2] | 0;
    $cmp = ($18 | 0) == 0;
    $boundingBox = $job + 472 | 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $pageBoundingBox = $job + 456 | 0;
    $19 = $boundingBox;
    $20 = $pageBoundingBox;
    HEAP32[$19 >> 2] = HEAP32[$20 >> 2] | 0;
    HEAP32[$19 + 4 >> 2] = HEAP32[$20 + 4 >> 2] | 0;
    HEAP32[$19 + 8 >> 2] = HEAP32[$20 + 8 >> 2] | 0;
    HEAP32[$19 + 12 >> 2] = HEAP32[$20 + 12 >> 2] | 0;
    label = 7;
    break;
   case 6:
    $x37 = $boundingBox | 0;
    $21 = HEAP32[$x37 >> 2] | 0;
    $x40 = $job + 456 | 0;
    $22 = HEAP32[$x40 >> 2] | 0;
    $cmp41 = ($21 | 0) < ($22 | 0);
    $_ = $cmp41 ? $21 : $22;
    HEAP32[$x37 >> 2] = $_;
    $y54 = $job + 476 | 0;
    $23 = HEAP32[$y54 >> 2] | 0;
    $y57 = $job + 460 | 0;
    $24 = HEAP32[$y57 >> 2] | 0;
    $cmp58 = ($23 | 0) < ($24 | 0);
    $cond69 = $cmp58 ? $23 : $24;
    HEAP32[$y54 >> 2] = $cond69;
    $x75 = $job + 480 | 0;
    $25 = HEAP32[$x75 >> 2] | 0;
    $x78 = $job + 464 | 0;
    $26 = HEAP32[$x78 >> 2] | 0;
    $cmp79 = ($25 | 0) > ($26 | 0);
    $_4 = $cmp79 ? $25 : $26;
    HEAP32[$x75 >> 2] = $_4;
    $y96 = $job + 484 | 0;
    $27 = HEAP32[$y96 >> 2] | 0;
    $y99 = $job + 468 | 0;
    $28 = HEAP32[$y99 >> 2] | 0;
    $cmp100 = ($27 | 0) > ($28 | 0);
    $cond111 = $cmp100 ? $27 : $28;
    HEAP32[$y96 >> 2] = $cond111;
    label = 7;
    break;
   case 7:
    $flags = $job + 152 | 0;
    $29 = HEAP32[$flags >> 2] | 0;
    $and = $29 & 128;
    $tobool116 = ($and | 0) == 0;
    $x118 = $job + 336 | 0;
    $30 = +HEAPF64[$x118 >> 3];
    if ($tobool116) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $x119 = $job + 368 | 0;
    $31 = +HEAPF64[$x119 >> 3];
    $div = $31 * .5;
    $sub120 = $30 - $div;
    $x122 = $job + 256 | 0;
    HEAPF64[$x122 >> 3] = $sub120;
    $y124 = $job + 344 | 0;
    $32 = +HEAPF64[$y124 >> 3];
    $y126 = $job + 376 | 0;
    $33 = +HEAPF64[$y126 >> 3];
    $div127 = $33 * .5;
    $sub128 = $32 - $div127;
    $y131 = $job + 264 | 0;
    HEAPF64[$y131 >> 3] = $sub128;
    $34 = +HEAPF64[$x118 >> 3];
    $35 = +HEAPF64[$x119 >> 3];
    $div136 = $35 * .5;
    $add137 = $34 + $div136;
    $x140 = $job + 272 | 0;
    HEAPF64[$x140 >> 3] = $add137;
    $36 = +HEAPF64[$y124 >> 3];
    $37 = +HEAPF64[$y126 >> 3];
    $div145 = $37 * .5;
    $add146 = $36 + $div145;
    $y149 = $job + 280 | 0;
    HEAPF64[$y149 >> 3] = $add146;
    label = 10;
    break;
   case 9:
    $38 = +HEAPF64[$x4 >> 3];
    $39 = HEAP32[$x >> 2] | 0;
    $conv156 = +($39 | 0);
    $x157 = $pagesArraySize;
    $40 = HEAP32[$x157 >> 2] | 0;
    $conv158 = +($40 | 0);
    $div159 = $conv158 * .5;
    $sub160 = $conv156 - $div159;
    $mul161 = $38 * $sub160;
    $add162 = $30 + $mul161;
    $x165 = $job + 256 | 0;
    HEAPF64[$x165 >> 3] = $add162;
    $y167 = $job + 344 | 0;
    $41 = +HEAPF64[$y167 >> 3];
    $42 = +HEAPF64[$y9 >> 3];
    $43 = HEAP32[$y >> 2] | 0;
    $conv171 = +($43 | 0);
    $y172 = $tmpcast1 + 4 | 0;
    $44 = HEAP32[$y172 >> 2] | 0;
    $conv173 = +($44 | 0);
    $div174 = $conv173 * .5;
    $sub175 = $conv171 - $div174;
    $mul176 = $42 * $sub175;
    $add177 = $41 + $mul176;
    $sub178 = $add177 + -1.0;
    $y181 = $job + 264 | 0;
    HEAPF64[$y181 >> 3] = $sub178;
    $45 = +HEAPF64[$x165 >> 3];
    $46 = +HEAPF64[$x4 >> 3];
    $add187 = $45 + $46;
    $add188 = $add187 + 1.0;
    $x191 = $job + 272 | 0;
    HEAPF64[$x191 >> 3] = $add188;
    $47 = +HEAPF64[$y181 >> 3];
    $48 = +HEAPF64[$y9 >> 3];
    $add197 = $47 + $48;
    $add198 = $add197 + 1.0;
    $y201 = $job + 280 | 0;
    HEAPF64[$y201 >> 3] = $add198;
    label = 10;
    break;
   case 10:
    $49 = HEAP32[$rotation >> 2] | 0;
    $tobool204 = ($49 | 0) == 0;
    $clip206 = $job + 256 | 0;
    if ($tobool204) {
      label = 14;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $y208 = $job + 280 | 0;
    $50 = +HEAPF64[$y208 >> 3];
    $sub209 = -0.0 - $50;
    $LL210 = $job + 384 | 0;
    $y211 = $job + 392 | 0;
    $51 = +HEAPF64[$y211 >> 3];
    $zoom = $job + 352 | 0;
    $52 = +HEAPF64[$zoom >> 3];
    $div212 = $51 / $52;
    $sub213 = $sub209 - $div212;
    $translation = $job + 504 | 0;
    $y214 = $job + 512 | 0;
    HEAPF64[$y214 >> 3] = $sub213;
    $53 = HEAP32[$flags >> 2] | 0;
    $and216 = $53 & 4096;
    $54 = HEAP32[41182] | 0;
    $55 = $and216 | $54;
    $56 = ($55 | 0) == 0;
    if ($56) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $x222 = $job + 272 | 0;
    $57 = +HEAPF64[$x222 >> 3];
    $sub223 = -0.0 - $57;
    $x226 = $LL210 | 0;
    $58 = +HEAPF64[$x226 >> 3];
    $59 = +HEAPF64[$zoom >> 3];
    $div228 = $58 / $59;
    $sub229 = $sub223 - $div228;
    $x231 = $translation | 0;
    HEAPF64[$x231 >> 3] = $sub229;
    label = 17;
    break;
   case 13:
    $x235 = $clip206 | 0;
    $60 = +HEAPF64[$x235 >> 3];
    $x239 = $LL210 | 0;
    $61 = +HEAPF64[$x239 >> 3];
    $62 = +HEAPF64[$zoom >> 3];
    $div241 = $61 / $62;
    $add242 = $div241 - $60;
    $x244 = $translation | 0;
    HEAPF64[$x244 >> 3] = $add242;
    label = 17;
    break;
   case 14:
    $x249 = $clip206 | 0;
    $63 = +HEAPF64[$x249 >> 3];
    $x253 = $job + 384 | 0;
    $64 = +HEAPF64[$x253 >> 3];
    $zoom254 = $job + 352 | 0;
    $65 = +HEAPF64[$zoom254 >> 3];
    $div255 = $64 / $65;
    $add256 = $div255 - $63;
    $x258 = $job + 504 | 0;
    HEAPF64[$x258 >> 3] = $add256;
    $66 = HEAP32[$flags >> 2] | 0;
    $and260 = $66 & 4096;
    $67 = HEAP32[41182] | 0;
    $68 = $and260 | $67;
    $69 = ($68 | 0) == 0;
    if ($69) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $y267 = $job + 280 | 0;
    $70 = +HEAPF64[$y267 >> 3];
    $sub268 = -0.0 - $70;
    $y271 = $job + 392 | 0;
    $71 = +HEAPF64[$y271 >> 3];
    $72 = +HEAPF64[$zoom254 >> 3];
    $div273 = $71 / $72;
    $sub274 = $sub268 - $div273;
    $y276 = $job + 512 | 0;
    HEAPF64[$y276 >> 3] = $sub274;
    label = 17;
    break;
   case 16:
    $y280 = $job + 264 | 0;
    $73 = +HEAPF64[$y280 >> 3];
    $y284 = $job + 392 | 0;
    $74 = +HEAPF64[$y284 >> 3];
    $75 = +HEAPF64[$zoom254 >> 3];
    $div286 = $74 / $75;
    $add287 = $div286 - $73;
    $y289 = $job + 512 | 0;
    HEAPF64[$y289 >> 3] = $add287;
    label = 17;
    break;
   case 17:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_background($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $_call = 0, $_ = 0, $str_0 = 0, $dfltColor_0 = 0, $flags = 0, $2 = 0, $and = 0, $tobool2 = 0, $3 = 0, $cmp = 0, $call8 = 0, $tobool9 = 0, $_str_0 = 0, $str_1 = 0, $4 = 0, $and13 = 0, $tobool14 = 0, $5 = 0, $cmp18 = 0, $call21 = 0, $tobool22 = 0, $6 = 0, $and24 = 0, $tobool25 = 0, $tobool27 = 0, $or_cond = 0, $clip = 0, $drawing = 0, $7 = 0, $xdots = 0, $8 = 0, $tobool30 = 0, $9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 118488) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $dfltColor_0 = 1;
      $str_0 = 160560;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    $_call = $tobool1 ? 160560 : $call;
    $_ = $tobool1 & 1;
    $dfltColor_0 = $_;
    $str_0 = $_call;
    label = 4;
    break;
   case 4:
    $flags = $job + 152 | 0;
    $2 = HEAP32[$flags >> 2] | 0;
    $and = $2 & 256;
    $tobool2 = ($and | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      $str_1 = $str_0;
      label = 7;
      break;
    }
   case 5:
    $3 = HEAP8[$str_0] | 0;
    $cmp = $3 << 24 >> 24 == 116;
    if ($cmp) {
      label = 6;
      break;
    } else {
      $str_1 = $str_0;
      label = 7;
      break;
    }
   case 6:
    $call8 = _strcmp($str_0 | 0, 160216) | 0;
    $tobool9 = ($call8 | 0) == 0;
    $_str_0 = $tobool9 ? 160560 : $str_0;
    $str_1 = $_str_0;
    label = 7;
    break;
   case 7:
    $4 = HEAP32[$flags >> 2] | 0;
    $and13 = $4 & 256;
    $tobool14 = ($and13 | 0) == 0;
    if ($tobool14) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $5 = HEAP8[$str_1] | 0;
    $cmp18 = $5 << 24 >> 24 == 116;
    if ($cmp18) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $call21 = _strcmp($str_1 | 0, 160216) | 0;
    $tobool22 = ($call21 | 0) == 0;
    if ($tobool22) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $6 = HEAP32[$flags >> 2] | 0;
    $and24 = $6 & 33554432;
    $tobool25 = ($and24 | 0) == 0;
    $tobool27 = ($dfltColor_0 | 0) == 0;
    $or_cond = $tobool25 | $tobool27;
    if ($or_cond) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _gvrender_set_fillcolor($job, $str_1);
    _gvrender_set_pencolor($job, $str_1);
    $clip = $job + 256 | 0;
    _gvrender_box($job, $clip, 1);
    label = 12;
    break;
   case 12:
    $drawing = $g + 48 | 0;
    $7 = HEAP32[$drawing >> 2] | 0;
    $xdots = $7 + 88 | 0;
    $8 = HEAP32[$xdots >> 2] | 0;
    $tobool30 = ($8 | 0) == 0;
    if ($tobool30) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $9 = $8;
    _emit_xdot($job, $9);
    label = 14;
    break;
   case 14:
    return;
  }
}
function _enqueue($q, $n) {
  $q = $q | 0;
  $n = $n | 0;
  var $tail = 0, $0 = 0, $incdec_ptr = 0, $1 = 0, $limit = 0, $2 = 0, $cmp = 0, $store = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $q + 12 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $incdec_ptr = $0 + 4 | 0;
    HEAP32[$tail >> 2] = $incdec_ptr;
    HEAP32[$0 >> 2] = $n;
    $1 = HEAP32[$tail >> 2] | 0;
    $limit = $q + 4 | 0;
    $2 = HEAP32[$limit >> 2] | 0;
    $cmp = $1 >>> 0 < $2 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $store = $q | 0;
    $3 = HEAP32[$store >> 2] | 0;
    HEAP32[$tail >> 2] = $3;
    label = 4;
    break;
   case 4:
    return;
  }
}
function _dequeue($q) {
  $q = $q | 0;
  var $head = 0, $0 = 0, $tail = 0, $1 = 0, $cmp = 0, $incdec_ptr = 0, $2 = 0, $limit = 0, $3 = 0, $cmp3 = 0, $store = 0, $4 = 0, $n_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $head = $q + 8 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $tail = $q + 12 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $cmp = ($0 | 0) == ($1 | 0);
    if ($cmp) {
      $n_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $incdec_ptr = $0 + 4 | 0;
    HEAP32[$head >> 2] = $incdec_ptr;
    $2 = HEAP32[$0 >> 2] | 0;
    $limit = $q + 4 | 0;
    $3 = HEAP32[$limit >> 2] | 0;
    $cmp3 = $incdec_ptr >>> 0 < $3 >>> 0;
    if ($cmp3) {
      $n_0 = $2;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $store = $q | 0;
    $4 = HEAP32[$store >> 2] | 0;
    HEAP32[$head >> 2] = $4;
    $n_0 = $2;
    label = 5;
    break;
   case 5:
    return $n_0 | 0;
  }
  return 0;
}
function _UF_find($n) {
  $n = $n | 0;
  var $UF_parent7 = 0, $0 = 0, $cmp8 = 0, $not_tobool9 = 0, $_cmp10 = 0, $1 = 0, $UF_parent11 = 0, $UF_parent6 = 0, $2 = 0, $tobool7 = 0, $3 = 0, $UF_parent = 0, $4 = 0, $cmp = 0, $not_tobool = 0, $_cmp = 0, $n_addr_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $UF_parent7 = $n + 224 | 0;
    $0 = HEAP32[$UF_parent7 >> 2] | 0;
    $cmp8 = ($0 | 0) != ($n | 0);
    $not_tobool9 = ($0 | 0) != 0;
    $_cmp10 = $cmp8 & $not_tobool9;
    if ($_cmp10) {
      $UF_parent11 = $UF_parent7;
      $1 = $0;
      label = 3;
      break;
    } else {
      $n_addr_0_lcssa = $n;
      label = 6;
      break;
    }
   case 3:
    $UF_parent6 = $1 + 224 | 0;
    $2 = HEAP32[$UF_parent6 >> 2] | 0;
    $tobool7 = ($2 | 0) == 0;
    if ($tobool7) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[$UF_parent11 >> 2] = $2;
    label = 5;
    break;
   case 5:
    $3 = HEAP32[$UF_parent11 >> 2] | 0;
    $UF_parent = $3 + 224 | 0;
    $4 = HEAP32[$UF_parent >> 2] | 0;
    $cmp = ($4 | 0) != ($3 | 0);
    $not_tobool = ($4 | 0) != 0;
    $_cmp = $cmp & $not_tobool;
    if ($_cmp) {
      $UF_parent11 = $UF_parent;
      $1 = $4;
      label = 3;
      break;
    } else {
      $n_addr_0_lcssa = $3;
      label = 6;
      break;
    }
   case 6:
    return $n_addr_0_lcssa | 0;
  }
  return 0;
}
function _UF_singleton($u) {
  $u = $u | 0;
  HEAP32[$u + 220 >> 2] = 1;
  HEAP32[$u + 224 >> 2] = 0;
  HEAP8[$u + 165 | 0] = 0;
  return;
}
function _emit_view($job, $g, $flags) {
  $job = $job | 0;
  $g = $g | 0;
  $flags = $flags | 0;
  var $gvc1 = 0, $0 = 0, $viewNum = 0, $1 = 0, $inc = 0, $and = 0, $tobool = 0, $and2 = 0, $tobool3 = 0, $2 = 0, $call = 0, $tobool5111 = 0, $n_0_in112 = 0, $n_0 = 0, $call6 = 0, $tobool5 = 0, $call7 = 0, $tobool9109 = 0, $n_1_in110 = 0, $call11 = 0, $tobool13107 = 0, $e_0_in108 = 0, $e_0 = 0, $call16 = 0, $tobool13 = 0, $call19 = 0, $tobool9 = 0, $and21 = 0, $tobool22 = 0, $3 = 0, $call24 = 0, $tobool26105 = 0, $n_2_in106 = 0, $call28 = 0, $tobool30103 = 0, $e_1_in104 = 0, $e_1 = 0, $call33 = 0, $tobool30 = 0, $call36 = 0, $tobool26 = 0, $call38 = 0, $tobool40101 = 0, $n_3_in102 = 0, $n_3 = 0, $call43 = 0, $tobool40 = 0, $and46 = 0, $tobool47 = 0, $4 = 0, $call49 = 0, $tobool5198 = 0, $n_4100_in = 0, $n_4100 = 0, $call53 = 0, $tobool54 = 0, $call58 = 0, $tobool51 = 0, $call60 = 0, $tobool6295 = 0, $n_5_in96 = 0, $call64 = 0, $tobool6692 = 0, $e_294_in = 0, $e_294 = 0, $call68 = 0, $tobool69 = 0, $call73 = 0, $tobool66 = 0, $call76 = 0, $tobool62 = 0, $5 = 0, $call79 = 0, $tobool8189 = 0, $n_6_in90 = 0, $n_6 = 0, $call83 = 0, $tobool8587 = 0, $e_3_in88 = 0, $e_3 = 0, $head = 0, $6 = 0, $7 = 0, $call88 = 0, $tobool85 = 0, $call91 = 0, $tobool81 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $viewNum = $0 + 28 | 0;
    $1 = HEAP32[$viewNum >> 2] | 0;
    $inc = $1 + 1 | 0;
    HEAP32[$viewNum >> 2] = $inc;
    $and = $flags & 4;
    $tobool = ($and | 0) != 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _emit_clusters($job, $g, $flags);
    label = 4;
    break;
   case 4:
    $and2 = $flags & 1;
    $tobool3 = ($and2 | 0) == 0;
    if ($tobool3) {
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _gvrender_begin_nodes($job);
    $2 = $g;
    $call = _agfstnode($2) | 0;
    $tobool5111 = ($call | 0) == 0;
    if ($tobool5111) {
      label = 7;
      break;
    } else {
      $n_0_in112 = $call;
      label = 6;
      break;
    }
   case 6:
    $n_0 = $n_0_in112;
    _emit_node($job, $n_0);
    $call6 = _agnxtnode($2, $n_0_in112) | 0;
    $tobool5 = ($call6 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      $n_0_in112 = $call6;
      label = 6;
      break;
    }
   case 7:
    _gvrender_end_nodes($job);
    _gvrender_begin_edges($job);
    $call7 = _agfstnode($2) | 0;
    $tobool9109 = ($call7 | 0) == 0;
    if ($tobool9109) {
      label = 11;
      break;
    } else {
      $n_1_in110 = $call7;
      label = 8;
      break;
    }
   case 8:
    $call11 = _agfstout($2, $n_1_in110) | 0;
    $tobool13107 = ($call11 | 0) == 0;
    if ($tobool13107) {
      label = 10;
      break;
    } else {
      $e_0_in108 = $call11;
      label = 9;
      break;
    }
   case 9:
    $e_0 = $e_0_in108;
    _emit_edge($job, $e_0);
    $call16 = _agnxtout($2, $e_0_in108) | 0;
    $tobool13 = ($call16 | 0) == 0;
    if ($tobool13) {
      label = 10;
      break;
    } else {
      $e_0_in108 = $call16;
      label = 9;
      break;
    }
   case 10:
    $call19 = _agnxtnode($2, $n_1_in110) | 0;
    $tobool9 = ($call19 | 0) == 0;
    if ($tobool9) {
      label = 11;
      break;
    } else {
      $n_1_in110 = $call19;
      label = 8;
      break;
    }
   case 11:
    _gvrender_end_edges($job);
    label = 36;
    break;
   case 12:
    $and21 = $flags & 16;
    $tobool22 = ($and21 | 0) == 0;
    if ($tobool22) {
      label = 20;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _gvrender_begin_edges($job);
    $3 = $g;
    $call24 = _agfstnode($3) | 0;
    $tobool26105 = ($call24 | 0) == 0;
    if ($tobool26105) {
      label = 17;
      break;
    } else {
      $n_2_in106 = $call24;
      label = 14;
      break;
    }
   case 14:
    $call28 = _agfstout($3, $n_2_in106) | 0;
    $tobool30103 = ($call28 | 0) == 0;
    if ($tobool30103) {
      label = 16;
      break;
    } else {
      $e_1_in104 = $call28;
      label = 15;
      break;
    }
   case 15:
    $e_1 = $e_1_in104;
    _emit_edge($job, $e_1);
    $call33 = _agnxtout($3, $e_1_in104) | 0;
    $tobool30 = ($call33 | 0) == 0;
    if ($tobool30) {
      label = 16;
      break;
    } else {
      $e_1_in104 = $call33;
      label = 15;
      break;
    }
   case 16:
    $call36 = _agnxtnode($3, $n_2_in106) | 0;
    $tobool26 = ($call36 | 0) == 0;
    if ($tobool26) {
      label = 17;
      break;
    } else {
      $n_2_in106 = $call36;
      label = 14;
      break;
    }
   case 17:
    _gvrender_end_edges($job);
    _gvrender_begin_nodes($job);
    $call38 = _agfstnode($3) | 0;
    $tobool40101 = ($call38 | 0) == 0;
    if ($tobool40101) {
      label = 19;
      break;
    } else {
      $n_3_in102 = $call38;
      label = 18;
      break;
    }
   case 18:
    $n_3 = $n_3_in102;
    _emit_node($job, $n_3);
    $call43 = _agnxtnode($3, $n_3_in102) | 0;
    $tobool40 = ($call43 | 0) == 0;
    if ($tobool40) {
      label = 19;
      break;
    } else {
      $n_3_in102 = $call43;
      label = 18;
      break;
    }
   case 19:
    _gvrender_end_nodes($job);
    label = 36;
    break;
   case 20:
    $and46 = $flags & 8;
    $tobool47 = ($and46 | 0) == 0;
    if ($tobool47) {
      label = 32;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    _gvrender_begin_nodes($job);
    $4 = $g;
    $call49 = _agfstnode($4) | 0;
    $tobool5198 = ($call49 | 0) == 0;
    if ($tobool5198) {
      label = 25;
      break;
    } else {
      $n_4100_in = $call49;
      label = 22;
      break;
    }
   case 22:
    $n_4100 = $n_4100_in;
    $call53 = _write_node_test($g, $n_4100) | 0;
    $tobool54 = $call53 << 24 >> 24 == 0;
    if ($tobool54) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    _emit_node($job, $n_4100);
    label = 24;
    break;
   case 24:
    $call58 = _agnxtnode($4, $n_4100_in) | 0;
    $tobool51 = ($call58 | 0) == 0;
    if ($tobool51) {
      label = 25;
      break;
    } else {
      $n_4100_in = $call58;
      label = 22;
      break;
    }
   case 25:
    _gvrender_end_nodes($job);
    _gvrender_begin_edges($job);
    $call60 = _agfstnode($4) | 0;
    $tobool6295 = ($call60 | 0) == 0;
    if ($tobool6295) {
      label = 31;
      break;
    } else {
      $n_5_in96 = $call60;
      label = 26;
      break;
    }
   case 26:
    $call64 = _agfstout($4, $n_5_in96) | 0;
    $tobool6692 = ($call64 | 0) == 0;
    if ($tobool6692) {
      label = 30;
      break;
    } else {
      $e_294_in = $call64;
      label = 27;
      break;
    }
   case 27:
    $e_294 = $e_294_in;
    $call68 = _write_edge_test($g, $e_294) | 0;
    $tobool69 = $call68 << 24 >> 24 == 0;
    if ($tobool69) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    _emit_edge($job, $e_294);
    label = 29;
    break;
   case 29:
    $call73 = _agnxtout($4, $e_294_in) | 0;
    $tobool66 = ($call73 | 0) == 0;
    if ($tobool66) {
      label = 30;
      break;
    } else {
      $e_294_in = $call73;
      label = 27;
      break;
    }
   case 30:
    $call76 = _agnxtnode($4, $n_5_in96) | 0;
    $tobool62 = ($call76 | 0) == 0;
    if ($tobool62) {
      label = 31;
      break;
    } else {
      $n_5_in96 = $call76;
      label = 26;
      break;
    }
   case 31:
    _gvrender_end_edges($job);
    label = 36;
    break;
   case 32:
    $5 = $g;
    $call79 = _agfstnode($5) | 0;
    $tobool8189 = ($call79 | 0) == 0;
    if ($tobool8189) {
      label = 36;
      break;
    } else {
      $n_6_in90 = $call79;
      label = 33;
      break;
    }
   case 33:
    $n_6 = $n_6_in90;
    _emit_node($job, $n_6);
    $call83 = _agfstout($5, $n_6_in90) | 0;
    $tobool8587 = ($call83 | 0) == 0;
    if ($tobool8587) {
      label = 35;
      break;
    } else {
      $e_3_in88 = $call83;
      label = 34;
      break;
    }
   case 34:
    $e_3 = $e_3_in88;
    $head = $e_3_in88 + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $7 = $6;
    _emit_node($job, $7);
    _emit_edge($job, $e_3);
    $call88 = _agnxtout($5, $e_3_in88) | 0;
    $tobool85 = ($call88 | 0) == 0;
    if ($tobool85) {
      label = 35;
      break;
    } else {
      $e_3_in88 = $call88;
      label = 34;
      break;
    }
   case 35:
    $call91 = _agnxtnode($5, $n_6_in90) | 0;
    $tobool81 = ($call91 | 0) == 0;
    if ($tobool81) {
      label = 36;
      break;
    } else {
      $n_6_in90 = $call91;
      label = 33;
      break;
    }
   case 36:
    if ($tobool) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    _emit_clusters($job, $g, $flags);
    label = 38;
    break;
   case 38:
    return;
  }
}
function _write_node_test($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $clust = 0, $n_cluster = 0, $0 = 0, $c_0 = 0, $1 = 0, $cmp = 0, $2 = 0, $arrayidx = 0, $3 = 0, $4 = 0, $call = 0, $tobool = 0, $inc = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $clust = $g + 216 | 0;
    $n_cluster = $g + 212 | 0;
    $0 = $n | 0;
    $c_0 = 1;
    label = 3;
    break;
   case 3:
    $1 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($c_0 | 0) > ($1 | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $2 + ($c_0 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $4 = $3;
    $call = _agcontains($4, $0) | 0;
    $tobool = ($call | 0) == 0;
    $inc = $c_0 + 1 | 0;
    if ($tobool) {
      $c_0 = $inc;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _write_edge_test($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $clust = 0, $n_cluster = 0, $0 = 0, $c_0 = 0, $1 = 0, $cmp = 0, $2 = 0, $arrayidx = 0, $3 = 0, $4 = 0, $call = 0, $tobool = 0, $inc = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $clust = $g + 216 | 0;
    $n_cluster = $g + 212 | 0;
    $0 = $e | 0;
    $c_0 = 1;
    label = 3;
    break;
   case 3:
    $1 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($c_0 | 0) > ($1 | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $2 + ($c_0 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $4 = $3;
    $call = _agcontains($4, $0) | 0;
    $tobool = ($call | 0) == 0;
    $inc = $c_0 + 1 | 0;
    if ($tobool) {
      $c_0 = $inc;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _emit_xdot($job, $xd) {
  $job = $job | 0;
  $xd = $xd | 0;
  var $ptsize = 0, $call = 0, $0 = 0, $cnt = 0, $1 = 0, $cmp64 = 0, $ops = 0, $2 = 0, $3 = 0, $clip = 0, $clip35 = 0, $clip59 = 0, $clip83 = 0, $clip102 = 0, $styles_070 = 0, $i_069 = 0, $op_067 = 0, $image_warn_066 = 0, $pts_065 = 0, $kind = 0, $4 = 0, $bb = 0, $call2 = 0, $tobool = 0, $x = 0, $5 = 0.0, $w = 0, $6 = 0, $7 = 0.0, $sub = 0.0, $x7 = 0, $8 = 0, $9 = 0.0, $10 = 0, $11 = 0.0, $sub14 = 0.0, $y16 = 0, $12 = 0.0, $x22 = 0, $13 = 0.0, $y28 = 0, $14 = 0, $cmp31 = 0, $conv32 = 0, $bb34 = 0, $call36 = 0, $tobool37 = 0, $u40 = 0, $polygon = 0, $pts41 = 0, $15 = 0, $cnt45 = 0, $16 = 0, $call46 = 0, $17 = 0, $18 = 0, $cmp53 = 0, $conv55 = 0, $bb58 = 0, $call60 = 0, $tobool61 = 0, $u64 = 0, $bezier = 0, $pts65 = 0, $19 = 0, $cnt69 = 0, $20 = 0, $call70 = 0, $21 = 0, $22 = 0, $cmp77 = 0, $conv79 = 0, $bb82 = 0, $call84 = 0, $tobool85 = 0, $u88 = 0, $polyline = 0, $pts89 = 0, $23 = 0, $cnt93 = 0, $24 = 0, $call94 = 0, $25 = 0, $bb101 = 0, $call103 = 0, $tobool104 = 0, $x108 = 0, $26 = 0.0, $x110 = 0, $y114 = 0, $27 = 0.0, $y116 = 0, $para = 0, $28 = 0, $u121 = 0, $color = 0, $29 = 0, $u124 = 0, $color125 = 0, $30 = 0, $u134 = 0, $style = 0, $31 = 0, $call135 = 0, $tobool137 = 0, $call139 = 0, $pts_1 = 0, $image_warn_1 = 0, $styles_1 = 0, $incdec_ptr = 0, $inc = 0, $32 = 0, $cmp = 0, $tobool141 = 0, $gvc = 0, $33 = 0, $defaultlinestyle = 0, $34 = 0, $pts_0_lcssa73 = 0, $35 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptsize = __stackBase__ | 0;
    HEAP32[$ptsize >> 2] = 1e3;
    $call = _gmalloc(16e3) | 0;
    $0 = $call;
    $cnt = $xd | 0;
    $1 = HEAP32[$cnt >> 2] | 0;
    $cmp64 = ($1 | 0) > 0;
    if ($cmp64) {
      label = 3;
      break;
    } else {
      $pts_0_lcssa73 = $0;
      label = 23;
      break;
    }
   case 3:
    $ops = $xd + 8 | 0;
    $2 = HEAP32[$ops >> 2] | 0;
    $3 = $2;
    $clip = $job + 256 | 0;
    $clip35 = $job + 256 | 0;
    $clip59 = $job + 256 | 0;
    $clip83 = $job + 256 | 0;
    $clip102 = $job + 256 | 0;
    $pts_065 = $0;
    $image_warn_066 = 1;
    $op_067 = $3;
    $i_069 = 0;
    $styles_070 = 0;
    label = 4;
    break;
   case 4:
    $kind = $op_067 | 0;
    $4 = HEAP32[$kind >> 2] | 0;
    if (($4 | 0) == 0 | ($4 | 0) == 1) {
      label = 5;
      break;
    } else if (($4 | 0) == 2 | ($4 | 0) == 3) {
      label = 7;
      break;
    } else if (($4 | 0) == 4 | ($4 | 0) == 5) {
      label = 9;
      break;
    } else if (($4 | 0) == 6) {
      label = 11;
      break;
    } else if (($4 | 0) == 7) {
      label = 13;
      break;
    } else if (($4 | 0) == 8) {
      label = 15;
      break;
    } else if (($4 | 0) == 9) {
      label = 16;
      break;
    } else if (($4 | 0) == 11) {
      label = 17;
      break;
    } else if (($4 | 0) == 12) {
      label = 18;
      break;
    } else {
      $styles_1 = $styles_070;
      $image_warn_1 = $image_warn_066;
      $pts_1 = $pts_065;
      label = 20;
      break;
    }
   case 5:
    $bb = $op_067 + 56 | 0;
    $call2 = _boxf_overlap($bb, $clip) | 0;
    $tobool = ($call2 | 0) == 0;
    if ($tobool) {
      $styles_1 = $styles_070;
      $image_warn_1 = $image_warn_066;
      $pts_1 = $pts_065;
      label = 20;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x = $op_067 + 8 | 0;
    $5 = +HEAPF64[$x >> 3];
    $w = $op_067 + 24 | 0;
    $6 = $w;
    $7 = +HEAPF64[$6 >> 3];
    $sub = $5 - $7;
    $x7 = $pts_065 | 0;
    HEAPF64[$x7 >> 3] = $sub;
    $8 = $op_067 + 16 | 0;
    $9 = +HEAPF64[$8 >> 3];
    $10 = $op_067 + 32 | 0;
    $11 = +HEAPF64[$10 >> 3];
    $sub14 = $9 - $11;
    $y16 = $pts_065 + 8 | 0;
    HEAPF64[$y16 >> 3] = $sub14;
    $12 = +HEAPF64[$6 >> 3];
    $x22 = $pts_065 + 16 | 0;
    HEAPF64[$x22 >> 3] = $12;
    $13 = +HEAPF64[$10 >> 3];
    $y28 = $pts_065 + 24 | 0;
    HEAPF64[$y28 >> 3] = $13;
    $14 = HEAP32[$kind >> 2] | 0;
    $cmp31 = ($14 | 0) == 0;
    $conv32 = $cmp31 & 1;
    _gvrender_ellipse($job, $pts_065, 0, $conv32);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $pts_065;
    label = 20;
    break;
   case 7:
    $bb34 = $op_067 + 56 | 0;
    $call36 = _boxf_overlap($bb34, $clip35) | 0;
    $tobool37 = ($call36 | 0) == 0;
    if ($tobool37) {
      $styles_1 = $styles_070;
      $image_warn_1 = $image_warn_066;
      $pts_1 = $pts_065;
      label = 20;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $u40 = $op_067 + 8 | 0;
    $polygon = $u40;
    $pts41 = $polygon + 4 | 0;
    $15 = HEAP32[$pts41 >> 2] | 0;
    $cnt45 = $u40;
    $16 = HEAP32[$cnt45 >> 2] | 0;
    $call46 = _copyPts($pts_065, $ptsize, $15, $16) | 0;
    $17 = HEAP32[$cnt45 >> 2] | 0;
    $18 = HEAP32[$kind >> 2] | 0;
    $cmp53 = ($18 | 0) == 2;
    $conv55 = $cmp53 & 1;
    _gvrender_polygon($job, $call46, $17, $conv55);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $call46;
    label = 20;
    break;
   case 9:
    $bb58 = $op_067 + 56 | 0;
    $call60 = _boxf_overlap($bb58, $clip59) | 0;
    $tobool61 = ($call60 | 0) == 0;
    if ($tobool61) {
      $styles_1 = $styles_070;
      $image_warn_1 = $image_warn_066;
      $pts_1 = $pts_065;
      label = 20;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $u64 = $op_067 + 8 | 0;
    $bezier = $u64;
    $pts65 = $bezier + 4 | 0;
    $19 = HEAP32[$pts65 >> 2] | 0;
    $cnt69 = $u64;
    $20 = HEAP32[$cnt69 >> 2] | 0;
    $call70 = _copyPts($pts_065, $ptsize, $19, $20) | 0;
    $21 = HEAP32[$cnt69 >> 2] | 0;
    $22 = HEAP32[$kind >> 2] | 0;
    $cmp77 = ($22 | 0) == 4;
    $conv79 = $cmp77 & 1;
    _gvrender_beziercurve($job, $call70, $21, 0, 0, $conv79);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $call70;
    label = 20;
    break;
   case 11:
    $bb82 = $op_067 + 56 | 0;
    $call84 = _boxf_overlap($bb82, $clip83) | 0;
    $tobool85 = ($call84 | 0) == 0;
    if ($tobool85) {
      $styles_1 = $styles_070;
      $image_warn_1 = $image_warn_066;
      $pts_1 = $pts_065;
      label = 20;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $u88 = $op_067 + 8 | 0;
    $polyline = $u88;
    $pts89 = $polyline + 4 | 0;
    $23 = HEAP32[$pts89 >> 2] | 0;
    $cnt93 = $u88;
    $24 = HEAP32[$cnt93 >> 2] | 0;
    $call94 = _copyPts($pts_065, $ptsize, $23, $24) | 0;
    $25 = HEAP32[$cnt93 >> 2] | 0;
    _gvrender_polyline($job, $call94, $25);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $call94;
    label = 20;
    break;
   case 13:
    $bb101 = $op_067 + 56 | 0;
    $call103 = _boxf_overlap($bb101, $clip102) | 0;
    $tobool104 = ($call103 | 0) == 0;
    if ($tobool104) {
      $styles_1 = $styles_070;
      $image_warn_1 = $image_warn_066;
      $pts_1 = $pts_065;
      label = 20;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $x108 = $op_067 + 8 | 0;
    $26 = +HEAPF64[$x108 >> 3];
    $x110 = $pts_065 | 0;
    HEAPF64[$x110 >> 3] = $26;
    $y114 = $op_067 + 16 | 0;
    $27 = +HEAPF64[$y114 >> 3];
    $y116 = $pts_065 + 8 | 0;
    HEAPF64[$y116 >> 3] = $27;
    $para = $op_067 + 88 | 0;
    $28 = HEAP32[$para >> 2] | 0;
    _gvrender_textpara($job, $pts_065, $28);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $pts_065;
    label = 20;
    break;
   case 15:
    $u121 = $op_067 + 8 | 0;
    $color = $u121;
    $29 = HEAP32[$color >> 2] | 0;
    _gvrender_set_fillcolor($job, $29);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $pts_065;
    label = 20;
    break;
   case 16:
    $u124 = $op_067 + 8 | 0;
    $color125 = $u124;
    $30 = HEAP32[$color125 >> 2] | 0;
    _gvrender_set_pencolor($job, $30);
    $styles_1 = $styles_070;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $pts_065;
    label = 20;
    break;
   case 17:
    $u134 = $op_067 + 8 | 0;
    $style = $u134;
    $31 = HEAP32[$style >> 2] | 0;
    $call135 = _parse_style($31) | 0;
    _gvrender_set_style($job, 7280);
    $styles_1 = 7280;
    $image_warn_1 = $image_warn_066;
    $pts_1 = $pts_065;
    label = 20;
    break;
   case 18:
    $tobool137 = ($image_warn_066 | 0) == 0;
    if ($tobool137) {
      $styles_1 = $styles_070;
      $image_warn_1 = 0;
      $pts_1 = $pts_065;
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $call139 = _agerr(0, 159856, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $styles_1 = $styles_070;
    $image_warn_1 = 0;
    $pts_1 = $pts_065;
    label = 20;
    break;
   case 20:
    $incdec_ptr = $op_067 + 96 | 0;
    $inc = $i_069 + 1 | 0;
    $32 = HEAP32[$cnt >> 2] | 0;
    $cmp = ($inc | 0) < ($32 | 0);
    if ($cmp) {
      $pts_065 = $pts_1;
      $image_warn_066 = $image_warn_1;
      $op_067 = $incdec_ptr;
      $i_069 = $inc;
      $styles_070 = $styles_1;
      label = 4;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $tobool141 = ($styles_1 | 0) == 0;
    if ($tobool141) {
      $pts_0_lcssa73 = $pts_1;
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $gvc = $job | 0;
    $33 = HEAP32[$gvc >> 2] | 0;
    $defaultlinestyle = $33 + 304 | 0;
    $34 = HEAP32[$defaultlinestyle >> 2] | 0;
    _gvrender_set_style($job, $34);
    $pts_0_lcssa73 = $pts_1;
    label = 23;
    break;
   case 23:
    $35 = $pts_0_lcssa73;
    _free($35);
    STACKTOP = __stackBase__;
    return;
  }
}
function _copyPts($pts, $ptsize, $inpts, $numpts) {
  $pts = $pts | 0;
  $ptsize = $ptsize | 0;
  $inpts = $inpts | 0;
  $numpts = $numpts | 0;
  var $0 = 0, $cmp = 0, $mul = 0, $cmp1 = 0, $mul_numpts = 0, $1 = 0, $mul3 = 0, $call = 0, $2 = 0, $pts_addr_0 = 0, $cmp418 = 0, $i_019 = 0, $x = 0, $3 = 0.0, $x6 = 0, $y = 0, $4 = 0.0, $y9 = 0, $inc = 0, $cmp4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$ptsize >> 2] | 0;
    $cmp = ($0 | 0) < ($numpts | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $pts_addr_0 = $pts;
      label = 4;
      break;
    }
   case 3:
    $mul = $0 << 1;
    $cmp1 = ($mul | 0) > ($numpts | 0);
    $mul_numpts = $cmp1 ? $mul : $numpts;
    $1 = $pts;
    $mul3 = $mul_numpts << 4;
    $call = _grealloc($1, $mul3) | 0;
    $2 = $call;
    HEAP32[$ptsize >> 2] = $mul_numpts;
    $pts_addr_0 = $2;
    label = 4;
    break;
   case 4:
    $cmp418 = ($numpts | 0) > 0;
    if ($cmp418) {
      $i_019 = 0;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $x = $inpts + ($i_019 * 24 & -1) | 0;
    $3 = +HEAPF64[$x >> 3];
    $x6 = $pts_addr_0 + ($i_019 << 4) | 0;
    HEAPF64[$x6 >> 3] = $3;
    $y = $inpts + ($i_019 * 24 & -1) + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y9 = $pts_addr_0 + ($i_019 << 4) + 8 | 0;
    HEAPF64[$y9 >> 3] = $4;
    $inc = $i_019 + 1 | 0;
    $cmp4 = ($inc | 0) < ($numpts | 0);
    if ($cmp4) {
      $i_019 = $inc;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    return $pts_addr_0 | 0;
  }
  return 0;
}
function _emit_cluster_colors($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp15 = 0, $clust = 0, $c_016 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $3 = 0, $call = 0, $cmp2 = 0, $4 = 0, $tobool = 0, $call4 = 0, $cmp5 = 0, $5 = 0, $tobool10 = 0, $call13 = 0, $cmp14 = 0, $6 = 0, $tobool19 = 0, $inc = 0, $7 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp15 = ($0 | 0) < 1;
    if ($cmp15) {
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_016 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($c_016 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _emit_cluster_colors($job, $2);
    $3 = $2 | 0;
    $call = _agget($3, 120080) | 0;
    $cmp2 = ($call | 0) == 0;
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = HEAP8[$call] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _gvrender_set_pencolor($job, $call);
    label = 7;
    break;
   case 7:
    $call4 = _agget($3, 118936) | 0;
    $cmp5 = ($call4 | 0) == 0;
    if ($cmp5) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $5 = HEAP8[$call4] | 0;
    $tobool10 = $5 << 24 >> 24 == 0;
    if ($tobool10) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    _gvrender_set_fillcolor($job, $call4);
    label = 10;
    break;
   case 10:
    $call13 = _agget($3, 159088) | 0;
    $cmp14 = ($call13 | 0) == 0;
    if ($cmp14) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $6 = HEAP8[$call13] | 0;
    $tobool19 = $6 << 24 >> 24 == 0;
    if ($tobool19) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _gvrender_set_pencolor($job, $call13);
    label = 13;
    break;
   case 13:
    $inc = $c_016 + 1 | 0;
    $7 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($7 | 0);
    if ($cmp) {
      label = 14;
      break;
    } else {
      $c_016 = $inc;
      label = 4;
      break;
    }
   case 14:
    return;
  }
}
function _new_queue($sz) {
  $sz = $sz | 0;
  var $call = 0, $_sz = 0, $1 = 0, $store = 0;
  $call = _zmalloc(16) | 0;
  $_sz = ($sz | 0) < 2 ? 2 : $sz;
  $1 = _zmalloc($_sz << 2) | 0;
  $store = $call;
  HEAP32[$store >> 2] = $1;
  HEAP32[$call + 12 >> 2] = $1;
  HEAP32[$call + 8 >> 2] = $1;
  HEAP32[$call + 4 >> 2] = (HEAP32[$store >> 2] | 0) + ($_sz << 2) | 0;
  return $call | 0;
}
function _free_queue($q) {
  $q = $q | 0;
  _free(HEAP32[$q >> 2] | 0);
  _free($q);
  return;
}
function _late_int($obj, $attr, $def, $low) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  $def = $def | 0;
  $low = $low | 0;
  var $cmp = 0, $index = 0, $0 = 0, $call = 0, $tobool = 0, $1 = 0, $cmp1 = 0, $call5 = 0, $cmp6 = 0, $low_call5 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($attr | 0) == 0;
    if ($cmp) {
      $retval_0 = $def;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $index = $attr + 8 | 0;
    $0 = HEAP32[$index >> 2] | 0;
    $call = _agxget($obj, $0) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = $def;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP8[$call] | 0;
    $cmp1 = $1 << 24 >> 24 == 0;
    if ($cmp1) {
      $retval_0 = $def;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call5 = _atoi($call | 0) | 0;
    $cmp6 = ($call5 | 0) < ($low | 0);
    $low_call5 = $cmp6 ? $low : $call5;
    $retval_0 = $low_call5;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _late_double($obj, $attr, $def, $low) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  $def = +$def;
  $low = +$low;
  var $tobool = 0, $tobool1 = 0, $or_cond = 0, $index = 0, $0 = 0, $call = 0, $tobool2 = 0, $1 = 0, $cmp = 0, $call7 = 0.0, $cmp8 = 0, $rv_0 = 0.0, $retval_0 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($attr | 0) == 0;
    $tobool1 = ($obj | 0) == 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      $retval_0 = $def;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $index = $attr + 8 | 0;
    $0 = HEAP32[$index >> 2] | 0;
    $call = _agxget($obj, $0) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      $retval_0 = $def;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP8[$call] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = $def;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call7 = +_atof($call);
    $cmp8 = $call7 < $low;
    $rv_0 = $cmp8 ? $low : $call7;
    $retval_0 = $rv_0;
    label = 6;
    break;
   case 6:
    return +$retval_0;
  }
  return 0.0;
}
function _late_string($obj, $attr, $def) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  $def = $def | 0;
  var $tobool = 0, $tobool1 = 0, $or_cond = 0, $index = 0, $0 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($attr | 0) == 0;
    $tobool1 = ($obj | 0) == 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      $retval_0 = $def;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $index = $attr + 8 | 0;
    $0 = HEAP32[$index >> 2] | 0;
    $call = _agxget($obj, $0) | 0;
    $retval_0 = $call;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _late_nnstring($obj, $attr, $def) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  $def = $def | 0;
  var $call = 0, $tobool = 0, $0 = 0, $cmp = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _late_string($obj, $attr, $def) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$call] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $rv_0 = $call;
      label = 5;
      break;
    }
   case 4:
    $rv_0 = $def;
    label = 5;
    break;
   case 5:
    return $rv_0 | 0;
  }
  return 0;
}
function _mapbool($p) {
  $p = $p | 0;
  return _mapBool($p, 0) | 0;
}
function _UF_union($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  var $cmp = 0, $UF_parent = 0, $0 = 0, $cmp2 = 0, $UF_size = 0, $call = 0, $u_addr_0 = 0, $UF_parent9 = 0, $1 = 0, $cmp10 = 0, $UF_size15 = 0, $call17 = 0, $v_addr_0 = 0, $id = 0, $2 = 0, $id19 = 0, $3 = 0, $cmp20 = 0, $UF_parent23 = 0, $UF_size25 = 0, $4 = 0, $UF_size27 = 0, $5 = 0, $add = 0, $UF_parent30 = 0, $UF_size32 = 0, $6 = 0, $UF_size34 = 0, $7 = 0, $add35 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($u | 0) == ($v | 0);
    if ($cmp) {
      $retval_0 = $u;
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $UF_parent = $u + 224 | 0;
    $0 = HEAP32[$UF_parent >> 2] | 0;
    $cmp2 = ($0 | 0) == 0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$UF_parent >> 2] = $u;
    $UF_size = $u + 220 | 0;
    HEAP32[$UF_size >> 2] = 1;
    $u_addr_0 = $u;
    label = 6;
    break;
   case 5:
    $call = _UF_find($u) | 0;
    $u_addr_0 = $call;
    label = 6;
    break;
   case 6:
    $UF_parent9 = $v + 224 | 0;
    $1 = HEAP32[$UF_parent9 >> 2] | 0;
    $cmp10 = ($1 | 0) == 0;
    if ($cmp10) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$UF_parent9 >> 2] = $v;
    $UF_size15 = $v + 220 | 0;
    HEAP32[$UF_size15 >> 2] = 1;
    $v_addr_0 = $v;
    label = 9;
    break;
   case 8:
    $call17 = _UF_find($v) | 0;
    $v_addr_0 = $call17;
    label = 9;
    break;
   case 9:
    $id = $u_addr_0 + 16 | 0;
    $2 = HEAP32[$id >> 2] | 0;
    $id19 = $v_addr_0 + 16 | 0;
    $3 = HEAP32[$id19 >> 2] | 0;
    $cmp20 = ($2 | 0) > ($3 | 0);
    if ($cmp20) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $UF_parent23 = $u_addr_0 + 224 | 0;
    HEAP32[$UF_parent23 >> 2] = $v_addr_0;
    $UF_size25 = $u_addr_0 + 220 | 0;
    $4 = HEAP32[$UF_size25 >> 2] | 0;
    $UF_size27 = $v_addr_0 + 220 | 0;
    $5 = HEAP32[$UF_size27 >> 2] | 0;
    $add = $5 + $4 | 0;
    HEAP32[$UF_size27 >> 2] = $add;
    $retval_0 = $v_addr_0;
    label = 12;
    break;
   case 11:
    $UF_parent30 = $v_addr_0 + 224 | 0;
    HEAP32[$UF_parent30 >> 2] = $u_addr_0;
    $UF_size32 = $v_addr_0 + 220 | 0;
    $6 = HEAP32[$UF_size32 >> 2] | 0;
    $UF_size34 = $u_addr_0 + 220 | 0;
    $7 = HEAP32[$UF_size34 >> 2] | 0;
    $add35 = $7 + $6 | 0;
    HEAP32[$UF_size34 >> 2] = $add35;
    $retval_0 = $u_addr_0;
    label = 12;
    break;
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _UF_setname($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  var $call = 0, $cmp = 0, $UF_parent = 0, $UF_size = 0, $0 = 0, $UF_size4 = 0, $1 = 0, $add = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _UF_find($u) | 0;
    $cmp = ($call | 0) == ($u | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(158664, 198, 164680, 130200);
   case 4:
    $UF_parent = $u + 224 | 0;
    HEAP32[$UF_parent >> 2] = $v;
    $UF_size = $u + 220 | 0;
    $0 = HEAP32[$UF_size >> 2] | 0;
    $UF_size4 = $v + 220 | 0;
    $1 = HEAP32[$UF_size4 >> 2] | 0;
    $add = $1 + $0 | 0;
    HEAP32[$UF_size4 >> 2] = $add;
    return;
  }
}
function _Bezier($agg_result, $V, $degree, $t, $Left, $Right) {
  $agg_result = $agg_result | 0;
  $V = $V | 0;
  $degree = $degree | 0;
  $t = +$t;
  $Left = $Left | 0;
  $Right = $Right | 0;
  var $Vtemp = 0, $cmp49 = 0, $cmp446 = 0, $sub9 = 0.0, $j_050 = 0, $arrayidx1 = 0, $arrayidx2 = 0, $0 = 0, $1 = 0, $inc = 0, $cmp = 0, $i_047 = 0, $sub = 0, $cmp744 = 0, $sub10 = 0, $j_145 = 0, $x = 0, $2 = 0.0, $mul = 0.0, $add = 0, $x16 = 0, $3 = 0.0, $mul17 = 0.0, $add18 = 0.0, $x21 = 0, $y = 0, $4 = 0.0, $mul26 = 0.0, $y31 = 0, $5 = 0.0, $mul32 = 0.0, $add33 = 0.0, $y36 = 0, $cmp7 = 0, $inc41 = 0, $cmp4 = 0, $cmp43 = 0, $cmp4542 = 0, $or_cond = 0, $j_243 = 0, $arrayidx47 = 0, $arrayidx49 = 0, $6 = 0, $7 = 0, $inc51 = 0, $cmp45 = 0, $cmp53 = 0, $cmp5640 = 0, $or_cond52 = 0, $j_341 = 0, $arrayidx58 = 0, $sub59 = 0, $arrayidx61 = 0, $8 = 0, $9 = 0, $inc63 = 0, $cmp56 = 0, $arrayidx67 = 0, $10 = 0, $11 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 576 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $Vtemp = __stackBase__ | 0;
    $cmp49 = ($degree | 0) < 0;
    if ($cmp49) {
      label = 10;
      break;
    } else {
      $j_050 = 0;
      label = 5;
      break;
    }
   case 3:
    $cmp446 = ($degree | 0) < 1;
    if ($cmp446) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $sub9 = 1.0 - $t;
    $i_047 = 1;
    label = 6;
    break;
   case 5:
    $arrayidx1 = $Vtemp + ($j_050 << 4) | 0;
    $arrayidx2 = $V + ($j_050 << 4) | 0;
    $0 = $arrayidx1;
    $1 = $arrayidx2;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $inc = $j_050 + 1 | 0;
    $cmp = ($inc | 0) > ($degree | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $j_050 = $inc;
      label = 5;
      break;
    }
   case 6:
    $sub = $degree - $i_047 | 0;
    $cmp744 = ($sub | 0) < 0;
    if ($cmp744) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub10 = $i_047 - 1 | 0;
    $j_145 = 0;
    label = 8;
    break;
   case 8:
    $x = $Vtemp + ($sub10 * 96 & -1) + ($j_145 << 4) | 0;
    $2 = +HEAPF64[$x >> 3];
    $mul = $sub9 * $2;
    $add = $j_145 + 1 | 0;
    $x16 = $Vtemp + ($sub10 * 96 & -1) + ($add << 4) | 0;
    $3 = +HEAPF64[$x16 >> 3];
    $mul17 = $3 * $t;
    $add18 = $mul + $mul17;
    $x21 = $Vtemp + ($i_047 * 96 & -1) + ($j_145 << 4) | 0;
    HEAPF64[$x21 >> 3] = $add18;
    $y = $Vtemp + ($sub10 * 96 & -1) + ($j_145 << 4) + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $mul26 = $sub9 * $4;
    $y31 = $Vtemp + ($sub10 * 96 & -1) + ($add << 4) + 8 | 0;
    $5 = +HEAPF64[$y31 >> 3];
    $mul32 = $5 * $t;
    $add33 = $mul26 + $mul32;
    $y36 = $Vtemp + ($i_047 * 96 & -1) + ($j_145 << 4) + 8 | 0;
    HEAPF64[$y36 >> 3] = $add33;
    $cmp7 = ($add | 0) > ($sub | 0);
    if ($cmp7) {
      label = 9;
      break;
    } else {
      $j_145 = $add;
      label = 8;
      break;
    }
   case 9:
    $inc41 = $i_047 + 1 | 0;
    $cmp4 = ($inc41 | 0) > ($degree | 0);
    if ($cmp4) {
      label = 10;
      break;
    } else {
      $i_047 = $inc41;
      label = 6;
      break;
    }
   case 10:
    $cmp43 = ($Left | 0) == 0;
    $cmp4542 = ($degree | 0) < 0;
    $or_cond = $cmp43 | $cmp4542;
    if ($or_cond) {
      label = 12;
      break;
    } else {
      $j_243 = 0;
      label = 11;
      break;
    }
   case 11:
    $arrayidx47 = $Left + ($j_243 << 4) | 0;
    $arrayidx49 = $Vtemp + ($j_243 * 96 & -1) | 0;
    $6 = $arrayidx47;
    $7 = $arrayidx49;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $inc51 = $j_243 + 1 | 0;
    $cmp45 = ($inc51 | 0) > ($degree | 0);
    if ($cmp45) {
      label = 12;
      break;
    } else {
      $j_243 = $inc51;
      label = 11;
      break;
    }
   case 12:
    $cmp53 = ($Right | 0) == 0;
    $cmp5640 = ($degree | 0) < 0;
    $or_cond52 = $cmp53 | $cmp5640;
    if ($or_cond52) {
      label = 14;
      break;
    } else {
      $j_341 = 0;
      label = 13;
      break;
    }
   case 13:
    $arrayidx58 = $Right + ($j_341 << 4) | 0;
    $sub59 = $degree - $j_341 | 0;
    $arrayidx61 = $Vtemp + ($sub59 * 96 & -1) + ($j_341 << 4) | 0;
    $8 = $arrayidx58;
    $9 = $arrayidx61;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $inc63 = $j_341 + 1 | 0;
    $cmp56 = ($inc63 | 0) > ($degree | 0);
    if ($cmp56) {
      label = 14;
      break;
    } else {
      $j_341 = $inc63;
      label = 13;
      break;
    }
   case 14:
    $arrayidx67 = $Vtemp + ($degree * 96 & -1) | 0;
    $10 = $agg_result;
    $11 = $arrayidx67;
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _Fgets($fp) {
  $fp = $fp | 0;
  var $len_0 = 0, $0 = 0, $sub = 0, $cmp = 0, $add = 0, $1 = 0, $call = 0, $2 = 0, $add_ptr = 0, $3 = 0, $sub1 = 0, $call2 = 0, $cmp3 = 0, $call6 = 0, $add7 = 0, $sub8 = 0, $4 = 0, $arrayidx = 0, $5 = 0, $cmp9 = 0, $len_1 = 0, $cmp11 = 0, $6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $len_0 = 0;
    label = 3;
    break;
   case 3:
    $0 = HEAP32[41888] | 0;
    $sub = $0 - $len_0 | 0;
    $cmp = ($sub | 0) < 1024;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $add = $0 + 1024 | 0;
    HEAP32[41888] = $add;
    $1 = HEAP32[41886] | 0;
    $call = _grealloc($1, $add) | 0;
    HEAP32[41886] = $call;
    label = 5;
    break;
   case 5:
    $2 = HEAP32[41886] | 0;
    $add_ptr = $2 + $len_0 | 0;
    $3 = HEAP32[41888] | 0;
    $sub1 = $3 - $len_0 | 0;
    $call2 = _fgets($add_ptr | 0, $sub1 | 0, $fp | 0) | 0;
    $cmp3 = ($call2 | 0) == 0;
    if ($cmp3) {
      $len_1 = $len_0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call6 = _strlen($call2 | 0) | 0;
    $add7 = $call6 + $len_0 | 0;
    $sub8 = $add7 - 1 | 0;
    $4 = HEAP32[41886] | 0;
    $arrayidx = $4 + $sub8 | 0;
    $5 = HEAP8[$arrayidx] | 0;
    $cmp9 = $5 << 24 >> 24 == 10;
    if ($cmp9) {
      $len_1 = $add7;
      label = 7;
      break;
    } else {
      $len_0 = $add7;
      label = 3;
      break;
    }
   case 7:
    $cmp11 = ($len_1 | 0) > 0;
    $6 = HEAP32[41886] | 0;
    $retval_0 = $cmp11 ? $6 : 0;
    return $retval_0 | 0;
  }
  return 0;
}
function _safefile($filename) {
  $filename = $filename | 0;
  var $tobool = 0, $0 = 0, $tobool1 = 0, $1 = 0, $tobool2 = 0, $2 = 0, $tobool4 = 0, $_b21 = 0, $call = 0, $_b22 = 0, $call12 = 0, $call13 = 0, $tobool1423 = 0, $3 = 0, $4 = 0, $dir_025 = 0, $cnt_024 = 0, $tobool15 = 0, $5 = 0, $add = 0, $mul = 0, $call16 = 0, $add17 = 0, $mul18 = 0, $call19 = 0, $call16_sink = 0, $6 = 0, $inc = 0, $arrayidx20 = 0, $7 = 0, $call21 = 0, $cmp = 0, $_call21 = 0, $call27 = 0, $tobool14 = 0, $8 = 0, $_lcssa = 0, $cnt_0_lcssa = 0, $arrayidx28 = 0, $call30 = 0, $tobool31 = 0, $incdec_ptr = 0, $filename_incdec_ptr = 0, $call34 = 0, $tobool35 = 0, $incdec_ptr37 = 0, $str_1 = 0, $call39 = 0, $tobool40 = 0, $incdec_ptr42 = 0, $str_1_incdec_ptr42 = 0, $_b = 0, $cmp45 = 0, $or_cond = 0, $9 = 0, $call48 = 0, $10 = 0, $11 = 0, $call50 = 0, $add51 = 0, $add52 = 0, $call53 = 0, $12 = 0, $dp_0 = 0, $13 = 0, $tobool55 = 0, $14 = 0, $call57 = 0, $15 = 0, $call58 = 0, $cmp59 = 0, $incdec_ptr64 = 0, $16 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($filename | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 21;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$filename] | 0;
    $tobool1 = $0 << 24 >> 24 == 0;
    if ($tobool1) {
      $retval_0 = 0;
      label = 21;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP32[41772] | 0;
    $tobool2 = ($1 | 0) == 0;
    if ($tobool2) {
      $retval_0 = $filename;
      label = 21;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP32[41788] | 0;
    $tobool4 = ($2 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $_b21 = HEAP8[4248] | 0;
    if ($_b21) {
      $retval_0 = 0;
      label = 21;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call = _agerr(0, 118280, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $1, tempInt) | 0) | 0;
    HEAP8[4248] = 1;
    $retval_0 = 0;
    label = 21;
    break;
   case 8:
    $_b22 = HEAP8[4264] | 0;
    if ($_b22) {
      label = 15;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call12 = _strdup($2 | 0) | 0;
    $call13 = _strtok($call12 | 0, 113024) | 0;
    $tobool1423 = ($call13 | 0) == 0;
    $3 = HEAP32[1068] | 0;
    if ($tobool1423) {
      $cnt_0_lcssa = 0;
      $_lcssa = $3;
      label = 14;
      break;
    } else {
      $cnt_024 = 0;
      $dir_025 = $call13;
      $4 = $3;
      label = 10;
      break;
    }
   case 10:
    $tobool15 = ($4 | 0) == 0;
    if ($tobool15) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $5 = $4;
    $add = $cnt_024 << 2;
    $mul = $add + 8 | 0;
    $call16 = _grealloc($5, $mul) | 0;
    $call16_sink = $call16;
    label = 13;
    break;
   case 12:
    $add17 = $cnt_024 << 2;
    $mul18 = $add17 + 8 | 0;
    $call19 = _gmalloc($mul18) | 0;
    $call16_sink = $call19;
    label = 13;
    break;
   case 13:
    $6 = $call16_sink;
    HEAP32[1068] = $6;
    $inc = $cnt_024 + 1 | 0;
    $arrayidx20 = $6 + ($cnt_024 << 2) | 0;
    HEAP32[$arrayidx20 >> 2] = $dir_025;
    $7 = HEAP32[1064] | 0;
    $call21 = _strlen($dir_025 | 0) | 0;
    $cmp = $7 >>> 0 > $call21 >>> 0;
    $_call21 = $cmp ? $7 : $call21;
    HEAP32[1064] = $_call21;
    $call27 = _strtok(0, 113024) | 0;
    $tobool14 = ($call27 | 0) == 0;
    $8 = HEAP32[1068] | 0;
    if ($tobool14) {
      $cnt_0_lcssa = $inc;
      $_lcssa = $8;
      label = 14;
      break;
    } else {
      $cnt_024 = $inc;
      $dir_025 = $call27;
      $4 = $8;
      label = 10;
      break;
    }
   case 14:
    $arrayidx28 = $_lcssa + ($cnt_0_lcssa << 2) | 0;
    HEAP32[$arrayidx28 >> 2] = 0;
    HEAP8[4264] = 1;
    label = 15;
    break;
   case 15:
    $call30 = _strrchr($filename | 0, 47) | 0;
    $tobool31 = ($call30 | 0) == 0;
    $incdec_ptr = $call30 + 1 | 0;
    $filename_incdec_ptr = $tobool31 ? $filename : $incdec_ptr;
    $call34 = _strrchr($filename_incdec_ptr | 0, 92) | 0;
    $tobool35 = ($call34 | 0) == 0;
    $incdec_ptr37 = $call34 + 1 | 0;
    $str_1 = $tobool35 ? $filename_incdec_ptr : $incdec_ptr37;
    $call39 = _strrchr($str_1 | 0, 58) | 0;
    $tobool40 = ($call39 | 0) == 0;
    $incdec_ptr42 = $call39 + 1 | 0;
    $str_1_incdec_ptr42 = $tobool40 ? $str_1 : $incdec_ptr42;
    $_b = HEAP8[4248] | 0;
    $cmp45 = ($str_1_incdec_ptr42 | 0) == ($filename | 0);
    $or_cond = $_b | $cmp45;
    if ($or_cond) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $9 = HEAP32[41788] | 0;
    $call48 = _agerr(0, 108488, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $filename, HEAP32[tempInt + 8 >> 2] = $9, tempInt) | 0) | 0;
    HEAP8[4248] = 1;
    label = 17;
    break;
   case 17:
    $10 = HEAP32[1060] | 0;
    $11 = HEAP32[1064] | 0;
    $call50 = _strlen($str_1_incdec_ptr42 | 0) | 0;
    $add51 = $11 + 2 | 0;
    $add52 = $add51 + $call50 | 0;
    $call53 = _realloc($10, $add52) | 0;
    HEAP32[1060] = $call53;
    $12 = HEAP32[1068] | 0;
    $dp_0 = $12;
    label = 18;
    break;
   case 18:
    $13 = HEAP32[$dp_0 >> 2] | 0;
    $tobool55 = ($13 | 0) == 0;
    if ($tobool55) {
      $retval_0 = 0;
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $14 = HEAP32[1060] | 0;
    $call57 = _sprintf($14 | 0, 104552, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $13, HEAP32[tempInt + 8 >> 2] = 100320, HEAP32[tempInt + 16 >> 2] = $str_1_incdec_ptr42, tempInt) | 0) | 0;
    $15 = HEAP32[1060] | 0;
    $call58 = _access($15 | 0, 4) | 0;
    $cmp59 = ($call58 | 0) == 0;
    $incdec_ptr64 = $dp_0 + 4 | 0;
    if ($cmp59) {
      label = 20;
      break;
    } else {
      $dp_0 = $incdec_ptr64;
      label = 18;
      break;
    }
   case 20:
    $16 = HEAP32[1060] | 0;
    $retval_0 = $16;
    label = 21;
    break;
   case 21:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _maptoken($p, $name, $val) {
  $p = $p | 0;
  $name = $name | 0;
  $val = $val | 0;
  var $0 = 0, $cmp6 = 0, $tobool = 0, $1 = 0, $i_07 = 0, $2 = 0, $3 = 0, $cmp2 = 0, $call = 0, $tobool5 = 0, $inc = 0, $arrayidx = 0, $4 = 0, $cmp = 0, $i_0_lcssa = 0, $arrayidx6 = 0, $5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$name >> 2] | 0;
    $cmp6 = ($0 | 0) == 0;
    if ($cmp6) {
      $i_0_lcssa = 0;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool = ($p | 0) == 0;
    $i_07 = 0;
    $1 = $0;
    label = 4;
    break;
   case 4:
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP8[$p] | 0;
    $3 = HEAP8[$1] | 0;
    $cmp2 = $2 << 24 >> 24 == $3 << 24 >> 24;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call = _strcmp($p | 0, $1 | 0) | 0;
    $tobool5 = ($call | 0) == 0;
    if ($tobool5) {
      $i_0_lcssa = $i_07;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $inc = $i_07 + 1 | 0;
    $arrayidx = $name + ($inc << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $cmp = ($4 | 0) == 0;
    if ($cmp) {
      $i_0_lcssa = $inc;
      label = 8;
      break;
    } else {
      $i_07 = $inc;
      $1 = $4;
      label = 4;
      break;
    }
   case 8:
    $arrayidx6 = $val + ($i_0_lcssa << 2) | 0;
    $5 = HEAP32[$arrayidx6 >> 2] | 0;
    return $5 | 0;
  }
  return 0;
}
function _mapBool($p, $dflt) {
  $p = $p | 0;
  $dflt = $dflt | 0;
  var $tobool = 0, $0 = 0, $cmp = 0, $call = 0, $tobool2 = 0, $call5 = 0, $tobool6 = 0, $call9 = 0, $tobool10 = 0, $call13 = 0, $tobool14 = 0, $1 = 0, $conv17 = 0, $isdigittmp = 0, $isdigit = 0, $call21 = 0, $conv22 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($p | 0) == 0;
    if ($tobool) {
      $retval_0 = $dflt;
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$p] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = $dflt;
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _strcasecmp($p, 96120) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      $retval_0 = 0;
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call5 = _strcasecmp($p, 92720) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      $retval_0 = 0;
      label = 10;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call9 = _strcasecmp($p, 162824) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call13 = _strcasecmp($p, 159408) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $1 = HEAP8[$p] | 0;
    $conv17 = $1 << 24 >> 24;
    $isdigittmp = $conv17 - 48 | 0;
    $isdigit = $isdigittmp >>> 0 < 10;
    if ($isdigit) {
      label = 9;
      break;
    } else {
      $retval_0 = $dflt;
      label = 10;
      break;
    }
   case 9:
    $call21 = _atoi($p | 0) | 0;
    $conv22 = $call21 & 255;
    $retval_0 = $conv22;
    label = 10;
    break;
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _strcasecmp($s1, $s2) {
  $s1 = $s1 | 0;
  $s2 = $s2 | 0;
  var $0 = 0, $cmp6 = 0, $1 = 0, $s2_addr_08 = 0, $s1_addr_07 = 0, $conv2 = 0, $call = 0, $2 = 0, $conv3 = 0, $call4 = 0, $cmp5 = 0, $incdec_ptr = 0, $incdec_ptr7 = 0, $3 = 0, $cmp = 0, $s2_addr_0_lcssa = 0, $s1_addr_0_lcssa = 0, $4 = 0, $conv8 = 0, $call9 = 0, $5 = 0, $conv10 = 0, $call11 = 0, $sub = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$s1] | 0;
    $cmp6 = $0 << 24 >> 24 == 0;
    if ($cmp6) {
      $s1_addr_0_lcssa = $s1;
      $s2_addr_0_lcssa = $s2;
      label = 5;
      break;
    } else {
      $s1_addr_07 = $s1;
      $s2_addr_08 = $s2;
      $1 = $0;
      label = 3;
      break;
    }
   case 3:
    $conv2 = $1 & 255;
    $call = _tolower($conv2 | 0) | 0;
    $2 = HEAP8[$s2_addr_08] | 0;
    $conv3 = $2 & 255;
    $call4 = _tolower($conv3 | 0) | 0;
    $cmp5 = ($call | 0) == ($call4 | 0);
    if ($cmp5) {
      label = 4;
      break;
    } else {
      $s1_addr_0_lcssa = $s1_addr_07;
      $s2_addr_0_lcssa = $s2_addr_08;
      label = 5;
      break;
    }
   case 4:
    $incdec_ptr = $s1_addr_07 + 1 | 0;
    $incdec_ptr7 = $s2_addr_08 + 1 | 0;
    $3 = HEAP8[$incdec_ptr] | 0;
    $cmp = $3 << 24 >> 24 == 0;
    if ($cmp) {
      $s1_addr_0_lcssa = $incdec_ptr;
      $s2_addr_0_lcssa = $incdec_ptr7;
      label = 5;
      break;
    } else {
      $s1_addr_07 = $incdec_ptr;
      $s2_addr_08 = $incdec_ptr7;
      $1 = $3;
      label = 3;
      break;
    }
   case 5:
    $4 = HEAP8[$s1_addr_0_lcssa] | 0;
    $conv8 = $4 & 255;
    $call9 = _tolower($conv8 | 0) | 0;
    $5 = HEAP8[$s2_addr_0_lcssa] | 0;
    $conv10 = $5 & 255;
    $call11 = _tolower($conv10 | 0) | 0;
    $sub = $call9 - $call11 | 0;
    return $sub | 0;
  }
  return 0;
}
function _dotneato_closest($agg_result, $spl, $pt) {
  $agg_result = $agg_result | 0;
  $spl = $spl | 0;
  $pt = $pt | 0;
  var $c = 0, $tmp = 0, $size = 0, $0 = 0, $cmp74 = 0, $list = 0, $1 = 0, $2 = 0, $3 = 0, $x12 = 0, $4 = 0.0, $y17 = 0, $5 = 0.0, $6 = 0, $i_078 = 0, $besti_077 = 0, $bestj_076 = 0, $bestdist2_075 = 0.0, $bz_sroa_0_0__idx6 = 0, $bz_sroa_0_0_copyload7 = 0, $bz_sroa_1_4__idx9 = 0, $bz_sroa_1_4_copyload10 = 0, $cmp365 = 0, $j_069 = 0, $besti_168 = 0, $bestj_167 = 0, $bestdist2_166 = 0.0, $x = 0, $7 = 0.0, $y = 0, $8 = 0.0, $sub = 0.0, $mul = 0.0, $sub18 = 0.0, $mul22 = 0.0, $add = 0.0, $cmp23 = 0, $cmp24 = 0, $or_cond = 0, $bestdist2_2 = 0.0, $bestj_2 = 0, $besti_2 = 0, $inc = 0, $cmp3 = 0, $besti_1_lcssa = 0, $bestj_1_lcssa = 0, $bestdist2_1_lcssa = 0.0, $inc26 = 0, $cmp = 0, $_lcssa73 = 0, $_lcssa = 0, $besti_0_lcssa = 0, $bestj_0_lcssa = 0, $bz_sroa_0_0__idx = 0, $bz_sroa_0_0_copyload = 0, $div = 0, $not_cmp31 = 0, $dec = 0, $j_1 = 0, $x40 = 0, $9 = 0.0, $x42 = 0, $y46 = 0, $10 = 0.0, $y48 = 0, $add37_1 = 0, $x40_1 = 0, $11 = 0.0, $x42_1 = 0, $y46_1 = 0, $12 = 0.0, $y48_1 = 0, $add37_2 = 0, $x40_2 = 0, $13 = 0.0, $x42_2 = 0, $y46_2 = 0, $14 = 0.0, $y48_2 = 0, $add37_3 = 0, $x40_3 = 0, $15 = 0.0, $x42_3 = 0, $y46_3 = 0, $16 = 0.0, $y48_3 = 0, $arrayidx52 = 0, $x53 = 0, $17 = 0.0, $x54 = 0, $18 = 0.0, $sub55 = 0.0, $mul60 = 0.0, $y62 = 0, $19 = 0.0, $y63 = 0, $20 = 0.0, $sub64 = 0.0, $mul69 = 0.0, $add70 = 0.0, $x72 = 0, $21 = 0.0, $sub74 = 0.0, $mul79 = 0.0, $y81 = 0, $22 = 0.0, $sub83 = 0.0, $mul88 = 0.0, $add89 = 0.0, $pt2_sroa_0_0__idx17 = 0, $pt2_sroa_0_0_copyload1851 = 0.0, $pt2_sroa_1_8__idx23 = 0, $pt2_sroa_1_8_copyload2452 = 0.0, $sub9253 = 0.0, $call54 = 0.0, $cmp9355 = 0, $23 = 0.0, $24 = 0.0, $pt2_sroa_1_8_copyload2462 = 0.0, $pt2_sroa_0_0_copyload1861 = 0.0, $div9160 = 0.0, $high_059 = 0.0, $low_058 = 0.0, $dhigh2_057 = 0.0, $dlow2_056 = 0.0, $sub96 = 0.0, $call97 = 0.0, $cmp98 = 0, $cmp101 = 0, $sub105 = 0.0, $mul109 = 0.0, $sub112 = 0.0, $mul116 = 0.0, $add117 = 0.0, $dlow2_0_add117 = 0.0, $add117_dhigh2_0 = 0.0, $low_0_div91 = 0.0, $div91_high_0 = 0.0, $add90 = 0.0, $div91 = 0.0, $pt2_sroa_0_0_copyload18 = 0.0, $pt2_sroa_1_8_copyload24 = 0.0, $sub92 = 0.0, $call = 0.0, $cmp93 = 0, $pt2_sroa_1_8_copyload24_lcssa = 0.0, $pt2_sroa_0_0_copyload18_lcssa = 0.0, $pt2_sroa_0_0__idx = 0, $pt2_sroa_1_8__idx19 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  tempParam = $pt;
  $pt = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pt >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pt + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pt + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pt + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $c = __stackBase__ | 0;
    $tmp = __stackBase__ + 64 | 0;
    $size = $spl + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp74 = ($0 | 0) > 0;
    $list = $spl | 0;
    $1 = HEAP32[$list >> 2] | 0;
    if ($cmp74) {
      label = 3;
      break;
    } else {
      $bestj_0_lcssa = -1;
      $besti_0_lcssa = -1;
      $_lcssa = $0;
      $_lcssa73 = $1;
      label = 7;
      break;
    }
   case 3:
    $2 = HEAP32[$size >> 2] | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $x12 = $pt | 0;
    $4 = +HEAPF64[$x12 >> 3];
    $y17 = $pt + 8 | 0;
    $5 = +HEAPF64[$y17 >> 3];
    $bestdist2_075 = 1.0e+38;
    $bestj_076 = -1;
    $besti_077 = -1;
    $i_078 = 0;
    $6 = $1;
    label = 4;
    break;
   case 4:
    $bz_sroa_0_0__idx6 = $6 + ($i_078 * 48 & -1) | 0;
    $bz_sroa_0_0_copyload7 = HEAP32[$bz_sroa_0_0__idx6 >> 2] | 0;
    $bz_sroa_1_4__idx9 = $6 + ($i_078 * 48 & -1) + 4 | 0;
    $bz_sroa_1_4_copyload10 = HEAP32[$bz_sroa_1_4__idx9 >> 2] | 0;
    $cmp365 = ($bz_sroa_1_4_copyload10 | 0) > 0;
    if ($cmp365) {
      $bestdist2_166 = $bestdist2_075;
      $bestj_167 = $bestj_076;
      $besti_168 = $besti_077;
      $j_069 = 0;
      label = 5;
      break;
    } else {
      $bestdist2_1_lcssa = $bestdist2_075;
      $bestj_1_lcssa = $bestj_076;
      $besti_1_lcssa = $besti_077;
      label = 6;
      break;
    }
   case 5:
    $x = $bz_sroa_0_0_copyload7 + ($j_069 << 4) | 0;
    $7 = +HEAPF64[$x >> 3];
    $y = $bz_sroa_0_0_copyload7 + ($j_069 << 4) + 8 | 0;
    $8 = +HEAPF64[$y >> 3];
    $sub = $7 - $4;
    $mul = $sub * $sub;
    $sub18 = $8 - $5;
    $mul22 = $sub18 * $sub18;
    $add = $mul + $mul22;
    $cmp23 = ($bestj_167 | 0) == -1;
    $cmp24 = $add < $bestdist2_166;
    $or_cond = $cmp23 | $cmp24;
    $bestdist2_2 = $or_cond ? $add : $bestdist2_166;
    $bestj_2 = $or_cond ? $j_069 : $bestj_167;
    $besti_2 = $or_cond ? $i_078 : $besti_168;
    $inc = $j_069 + 1 | 0;
    $cmp3 = ($inc | 0) < ($bz_sroa_1_4_copyload10 | 0);
    if ($cmp3) {
      $bestdist2_166 = $bestdist2_2;
      $bestj_167 = $bestj_2;
      $besti_168 = $besti_2;
      $j_069 = $inc;
      label = 5;
      break;
    } else {
      $bestdist2_1_lcssa = $bestdist2_2;
      $bestj_1_lcssa = $bestj_2;
      $besti_1_lcssa = $besti_2;
      label = 6;
      break;
    }
   case 6:
    $inc26 = $i_078 + 1 | 0;
    $cmp = ($inc26 | 0) < ($2 | 0);
    if ($cmp) {
      $bestdist2_075 = $bestdist2_1_lcssa;
      $bestj_076 = $bestj_1_lcssa;
      $besti_077 = $besti_1_lcssa;
      $i_078 = $inc26;
      $6 = $3;
      label = 4;
      break;
    } else {
      $bestj_0_lcssa = $bestj_1_lcssa;
      $besti_0_lcssa = $besti_1_lcssa;
      $_lcssa = $2;
      $_lcssa73 = $3;
      label = 7;
      break;
    }
   case 7:
    $bz_sroa_0_0__idx = $_lcssa73 + ($besti_0_lcssa * 48 & -1) | 0;
    $bz_sroa_0_0_copyload = HEAP32[$bz_sroa_0_0__idx >> 2] | 0;
    $div = ($bestj_0_lcssa | 0) / 3 & -1;
    $not_cmp31 = ($div | 0) >= ($_lcssa | 0);
    $dec = $not_cmp31 << 31 >> 31;
    $j_1 = $dec + $div | 0;
    $x40 = $bz_sroa_0_0_copyload + ($j_1 << 4) | 0;
    $9 = +HEAPF64[$x40 >> 3];
    $x42 = $c | 0;
    HEAPF64[$x42 >> 3] = $9;
    $y46 = $bz_sroa_0_0_copyload + ($j_1 << 4) + 8 | 0;
    $10 = +HEAPF64[$y46 >> 3];
    $y48 = $c + 8 | 0;
    HEAPF64[$y48 >> 3] = $10;
    $add37_1 = $j_1 + 1 | 0;
    $x40_1 = $bz_sroa_0_0_copyload + ($add37_1 << 4) | 0;
    $11 = +HEAPF64[$x40_1 >> 3];
    $x42_1 = $c + 16 | 0;
    HEAPF64[$x42_1 >> 3] = $11;
    $y46_1 = $bz_sroa_0_0_copyload + ($add37_1 << 4) + 8 | 0;
    $12 = +HEAPF64[$y46_1 >> 3];
    $y48_1 = $c + 24 | 0;
    HEAPF64[$y48_1 >> 3] = $12;
    $add37_2 = $j_1 + 2 | 0;
    $x40_2 = $bz_sroa_0_0_copyload + ($add37_2 << 4) | 0;
    $13 = +HEAPF64[$x40_2 >> 3];
    $x42_2 = $c + 32 | 0;
    HEAPF64[$x42_2 >> 3] = $13;
    $y46_2 = $bz_sroa_0_0_copyload + ($add37_2 << 4) + 8 | 0;
    $14 = +HEAPF64[$y46_2 >> 3];
    $y48_2 = $c + 40 | 0;
    HEAPF64[$y48_2 >> 3] = $14;
    $add37_3 = $j_1 + 3 | 0;
    $x40_3 = $bz_sroa_0_0_copyload + ($add37_3 << 4) | 0;
    $15 = +HEAPF64[$x40_3 >> 3];
    $x42_3 = $c + 48 | 0;
    HEAPF64[$x42_3 >> 3] = $15;
    $y46_3 = $bz_sroa_0_0_copyload + ($add37_3 << 4) + 8 | 0;
    $16 = +HEAPF64[$y46_3 >> 3];
    $y48_3 = $c + 56 | 0;
    HEAPF64[$y48_3 >> 3] = $16;
    $arrayidx52 = $c | 0;
    $x53 = $c | 0;
    $17 = +HEAPF64[$x53 >> 3];
    $x54 = $pt | 0;
    $18 = +HEAPF64[$x54 >> 3];
    $sub55 = $17 - $18;
    $mul60 = $sub55 * $sub55;
    $y62 = $c + 8 | 0;
    $19 = +HEAPF64[$y62 >> 3];
    $y63 = $pt + 8 | 0;
    $20 = +HEAPF64[$y63 >> 3];
    $sub64 = $19 - $20;
    $mul69 = $sub64 * $sub64;
    $add70 = $mul60 + $mul69;
    $x72 = $c + 48 | 0;
    $21 = +HEAPF64[$x72 >> 3];
    $sub74 = $21 - $18;
    $mul79 = $sub74 * $sub74;
    $y81 = $c + 56 | 0;
    $22 = +HEAPF64[$y81 >> 3];
    $sub83 = $22 - $20;
    $mul88 = $sub83 * $sub83;
    $add89 = $mul79 + $mul88;
    _Bezier($tmp, $arrayidx52, 3, .5, 0, 0);
    $pt2_sroa_0_0__idx17 = $tmp | 0;
    $pt2_sroa_0_0_copyload1851 = +HEAPF64[$pt2_sroa_0_0__idx17 >> 3];
    $pt2_sroa_1_8__idx23 = $tmp + 8 | 0;
    $pt2_sroa_1_8_copyload2452 = +HEAPF64[$pt2_sroa_1_8__idx23 >> 3];
    $sub9253 = $add70 - $add89;
    $call54 = +Math_abs(+$sub9253);
    $cmp9355 = $call54 < 1.0;
    if ($cmp9355) {
      $pt2_sroa_0_0_copyload18_lcssa = $pt2_sroa_0_0_copyload1851;
      $pt2_sroa_1_8_copyload24_lcssa = $pt2_sroa_1_8_copyload2452;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $23 = +HEAPF64[$x54 >> 3];
    $24 = +HEAPF64[$y63 >> 3];
    $dlow2_056 = $add70;
    $dhigh2_057 = $add89;
    $low_058 = 0.0;
    $high_059 = 1.0;
    $div9160 = .5;
    $pt2_sroa_0_0_copyload1861 = $pt2_sroa_0_0_copyload1851;
    $pt2_sroa_1_8_copyload2462 = $pt2_sroa_1_8_copyload2452;
    label = 9;
    break;
   case 9:
    $sub96 = $high_059 - $low_058;
    $call97 = +Math_abs(+$sub96);
    $cmp98 = $call97 < 1.0e-5;
    if ($cmp98) {
      $pt2_sroa_0_0_copyload18_lcssa = $pt2_sroa_0_0_copyload1861;
      $pt2_sroa_1_8_copyload24_lcssa = $pt2_sroa_1_8_copyload2462;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $cmp101 = $dlow2_056 < $dhigh2_057;
    $sub105 = $pt2_sroa_0_0_copyload1861 - $23;
    $mul109 = $sub105 * $sub105;
    $sub112 = $pt2_sroa_1_8_copyload2462 - $24;
    $mul116 = $sub112 * $sub112;
    $add117 = $mul109 + $mul116;
    $dlow2_0_add117 = $cmp101 ? $dlow2_056 : $add117;
    $add117_dhigh2_0 = $cmp101 ? $add117 : $dhigh2_057;
    $low_0_div91 = $cmp101 ? $low_058 : $div9160;
    $div91_high_0 = $cmp101 ? $div9160 : $high_059;
    $add90 = $low_0_div91 + $div91_high_0;
    $div91 = $add90 * .5;
    _Bezier($tmp, $arrayidx52, 3, $div91, 0, 0);
    $pt2_sroa_0_0_copyload18 = +HEAPF64[$pt2_sroa_0_0__idx17 >> 3];
    $pt2_sroa_1_8_copyload24 = +HEAPF64[$pt2_sroa_1_8__idx23 >> 3];
    $sub92 = $dlow2_0_add117 - $add117_dhigh2_0;
    $call = +Math_abs(+$sub92);
    $cmp93 = $call < 1.0;
    if ($cmp93) {
      $pt2_sroa_0_0_copyload18_lcssa = $pt2_sroa_0_0_copyload18;
      $pt2_sroa_1_8_copyload24_lcssa = $pt2_sroa_1_8_copyload24;
      label = 11;
      break;
    } else {
      $dlow2_056 = $dlow2_0_add117;
      $dhigh2_057 = $add117_dhigh2_0;
      $low_058 = $low_0_div91;
      $high_059 = $div91_high_0;
      $div9160 = $div91;
      $pt2_sroa_0_0_copyload1861 = $pt2_sroa_0_0_copyload18;
      $pt2_sroa_1_8_copyload2462 = $pt2_sroa_1_8_copyload24;
      label = 9;
      break;
    }
   case 11:
    $pt2_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$pt2_sroa_0_0__idx >> 3] = $pt2_sroa_0_0_copyload18_lcssa;
    $pt2_sroa_1_8__idx19 = $agg_result + 8 | 0;
    HEAPF64[$pt2_sroa_1_8__idx19 >> 3] = $pt2_sroa_1_8_copyload24_lcssa;
    STACKTOP = __stackBase__;
    return;
  }
}
function _common_init_node($n) {
  $n = $n | 0;
  var $0 = 0, $1 = 0, $call = 0.0, $width = 0, $2 = 0, $call1 = 0.0, $height = 0, $3 = 0, $call3 = 0, $call4 = 0, $shape = 0, $4 = 0, $index = 0, $5 = 0, $call6 = 0, $6 = 0, $call7 = 0.0, $7 = 0, $call8 = 0, $8 = 0, $call9 = 0, $call10 = 0, $tobool = 0, $cond = 0, $call11 = 0, $cmp = 0, $cond12 = 0, $or = 0, $call16 = 0, $label = 0, $9 = 0, $tobool18 = 0, $index19 = 0, $10 = 0, $call20 = 0, $tobool21 = 0, $11 = 0, $tobool23 = 0, $call24 = 0, $tobool25 = 0, $cond26 = 0, $call30 = 0, $xlabel = 0, $graph = 0, $12 = 0, $has_labels = 0, $13 = 0, $or34 = 0, $14 = 0, $call36 = 0, $conv37 = 0, $showboxes = 0, $15 = 0, $fns = 0, $16 = 0, $initfn = 0, $17 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $1 = HEAP32[41552] | 0;
    $call = +_late_double($0, $1, .75, .01);
    $width = $n + 48 | 0;
    HEAPF64[$width >> 3] = $call;
    $2 = HEAP32[41592] | 0;
    $call1 = +_late_double($0, $2, .5, .02);
    $height = $n + 56 | 0;
    HEAPF64[$height >> 3] = $call1;
    $3 = HEAP32[41568] | 0;
    $call3 = _late_nnstring($0, $3, 152400) | 0;
    $call4 = _bind_shape($call3, $n) | 0;
    $shape = $n + 24 | 0;
    HEAP32[$shape >> 2] = $call4;
    $4 = HEAP32[41588] | 0;
    $index = $4 + 8 | 0;
    $5 = HEAP32[$index >> 2] | 0;
    $call6 = _agxget($0, $5) | 0;
    $6 = HEAP32[41596] | 0;
    $call7 = +_late_double($0, $6, 14.0, 1.0);
    $7 = HEAP32[41598] | 0;
    $call8 = _late_nnstring($0, $7, 149008) | 0;
    $8 = HEAP32[41600] | 0;
    $call9 = _late_nnstring($0, $8, 146208) | 0;
    $call10 = _aghtmlstr($call6) | 0;
    $tobool = ($call10 | 0) != 0;
    $cond = $tobool ? 2 : 0;
    $call11 = _shapeOf($n) | 0;
    $cmp = ($call11 | 0) == 2;
    $cond12 = $cmp ? 4 : 0;
    $or = $cond12 | $cond;
    $call16 = _make_label($0, $call6, $or, $call7, $call8, $call9) | 0;
    $label = $n + 120 | 0;
    HEAP32[$label >> 2] = $call16;
    $9 = HEAP32[41550] | 0;
    $tobool18 = ($9 | 0) == 0;
    if ($tobool18) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $index19 = $9 + 8 | 0;
    $10 = HEAP32[$index19 >> 2] | 0;
    $call20 = _agxget($0, $10) | 0;
    $tobool21 = ($call20 | 0) == 0;
    if ($tobool21) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $11 = HEAP8[$call20] | 0;
    $tobool23 = $11 << 24 >> 24 == 0;
    if ($tobool23) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call24 = _aghtmlstr($call20) | 0;
    $tobool25 = ($call24 | 0) != 0;
    $cond26 = $tobool25 ? 2 : 0;
    $call30 = _make_label($0, $call20, $cond26, $call7, $call8, $call9) | 0;
    $xlabel = $n + 124 | 0;
    HEAP32[$xlabel >> 2] = $call30;
    $graph = $n + 20 | 0;
    $12 = HEAP32[$graph >> 2] | 0;
    $has_labels = $12 + 153 | 0;
    $13 = HEAP8[$has_labels] | 0;
    $or34 = $13 | 16;
    HEAP8[$has_labels] = $or34;
    label = 6;
    break;
   case 6:
    $14 = HEAP32[41566] | 0;
    $call36 = _late_int($0, $14, 0, 0) | 0;
    $conv37 = $call36 & 255;
    $showboxes = $n + 160 | 0;
    HEAP8[$showboxes] = $conv37;
    $15 = HEAP32[$shape >> 2] | 0;
    $fns = $15 + 4 | 0;
    $16 = HEAP32[$fns >> 2] | 0;
    $initfn = $16 | 0;
    $17 = HEAP32[$initfn >> 2] | 0;
    FUNCTION_TABLE_vi[$17 & 1023]($n);
    return;
  }
}
function _common_init_edge($e) {
  $e = $e | 0;
  var $fi = 0, $lfi = 0, $tmp = 0, $tmp132 = 0, $tail = 0, $0 = 0, $graph = 0, $1 = 0, $fontname = 0, $fontname1 = 0, $2 = 0, $tobool = 0, $3 = 0, $index = 0, $4 = 0, $call = 0, $tobool2 = 0, $5 = 0, $tobool4 = 0, $call5 = 0, $tobool6 = 0, $cond = 0, $fontsize = 0, $6 = 0.0, $7 = 0, $fontcolor = 0, $8 = 0, $call8 = 0, $label = 0, $has_labels = 0, $9 = 0, $or = 0, $10 = 0, $call12 = 0, $call13 = 0, $label_ontop = 0, $r_0 = 0, $11 = 0, $tobool15 = 0, $12 = 0, $index17 = 0, $13 = 0, $call18 = 0, $tobool19 = 0, $14 = 0, $tobool23 = 0, $15 = 0, $tobool26 = 0, $call29 = 0, $tobool30 = 0, $cond31 = 0, $fontsize32 = 0, $16 = 0.0, $17 = 0, $fontcolor34 = 0, $18 = 0, $call35 = 0, $xlabel = 0, $has_labels38 = 0, $19 = 0, $or40 = 0, $20 = 0, $tobool43 = 0, $21 = 0, $index45 = 0, $22 = 0, $call46 = 0, $tobool47 = 0, $23 = 0, $tobool51 = 0, $call53 = 0, $tobool54 = 0, $cond55 = 0, $fontsize56 = 0, $24 = 0.0, $25 = 0, $fontcolor58 = 0, $26 = 0, $call59 = 0, $head_label = 0, $has_labels62 = 0, $27 = 0, $or64 = 0, $28 = 0, $tobool67 = 0, $29 = 0, $index69 = 0, $30 = 0, $call70 = 0, $tobool71 = 0, $31 = 0, $tobool75 = 0, $32 = 0, $tobool78 = 0, $call81 = 0, $tobool82 = 0, $cond83 = 0, $fontsize84 = 0, $33 = 0.0, $34 = 0, $fontcolor86 = 0, $35 = 0, $call87 = 0, $tail_label = 0, $has_labels90 = 0, $36 = 0, $or92 = 0, $37 = 0, $call95 = 0, $tobool96 = 0, $38 = 0, $tobool100 = 0, $39 = 0, $has_port = 0, $tail_port = 0, $40 = 0, $shape = 0, $41 = 0, $fns = 0, $42 = 0, $portfn = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $call109 = 0, $tobool110 = 0, $clip = 0, $call115 = 0, $tobool116 = 0, $47 = 0, $tobool120 = 0, $head = 0, $48 = 0, $has_port123 = 0, $head_port = 0, $head126 = 0, $49 = 0, $shape128 = 0, $50 = 0, $fns129 = 0, $51 = 0, $portfn130 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $call133 = 0, $tobool134 = 0, $clip138 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 112 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fi = __stackBase__ | 0;
    $lfi = __stackBase__ + 16 | 0;
    $tmp = __stackBase__ + 32 | 0;
    $tmp132 = __stackBase__ + 72 | 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $fontname = $fi + 8 | 0;
    HEAP32[$fontname >> 2] = 0;
    $fontname1 = $lfi + 8 | 0;
    HEAP32[$fontname1 >> 2] = 0;
    $2 = HEAP32[41934] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      $r_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $3 = $e | 0;
    $index = $2 + 8 | 0;
    $4 = HEAP32[$index >> 2] | 0;
    $call = _agxget($3, $4) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      $r_0 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $5 = HEAP8[$call] | 0;
    $tobool4 = $5 << 24 >> 24 == 0;
    if ($tobool4) {
      $r_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _initFontEdgeAttr($e, $fi);
    $call5 = _aghtmlstr($call) | 0;
    $tobool6 = ($call5 | 0) != 0;
    $cond = $tobool6 ? 2 : 0;
    $fontsize = $fi | 0;
    $6 = +HEAPF64[$fontsize >> 3];
    $7 = HEAP32[$fontname >> 2] | 0;
    $fontcolor = $fi + 12 | 0;
    $8 = HEAP32[$fontcolor >> 2] | 0;
    $call8 = _make_label($3, $call, $cond, $6, $7, $8) | 0;
    $label = $e + 112 | 0;
    HEAP32[$label >> 2] = $call8;
    $has_labels = $1 + 153 | 0;
    $9 = HEAP8[$has_labels] | 0;
    $or = $9 | 1;
    HEAP8[$has_labels] = $or;
    $10 = HEAP32[41932] | 0;
    $call12 = _late_string($3, $10, 96120) | 0;
    $call13 = _mapbool($call12) | 0;
    $label_ontop = $e + 130 | 0;
    HEAP8[$label_ontop] = $call13;
    $r_0 = 1;
    label = 6;
    break;
   case 6:
    $11 = HEAP32[41892] | 0;
    $tobool15 = ($11 | 0) == 0;
    if ($tobool15) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $12 = $e | 0;
    $index17 = $11 + 8 | 0;
    $13 = HEAP32[$index17 >> 2] | 0;
    $call18 = _agxget($12, $13) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $14 = HEAP8[$call18] | 0;
    $tobool23 = $14 << 24 >> 24 == 0;
    if ($tobool23) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $15 = HEAP32[$fontname >> 2] | 0;
    $tobool26 = ($15 | 0) == 0;
    if ($tobool26) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _initFontEdgeAttr($e, $fi);
    label = 11;
    break;
   case 11:
    $call29 = _aghtmlstr($call18) | 0;
    $tobool30 = ($call29 | 0) != 0;
    $cond31 = $tobool30 ? 2 : 0;
    $fontsize32 = $fi | 0;
    $16 = +HEAPF64[$fontsize32 >> 3];
    $17 = HEAP32[$fontname >> 2] | 0;
    $fontcolor34 = $fi + 12 | 0;
    $18 = HEAP32[$fontcolor34 >> 2] | 0;
    $call35 = _make_label($12, $call18, $cond31, $16, $17, $18) | 0;
    $xlabel = $e + 124 | 0;
    HEAP32[$xlabel >> 2] = $call35;
    $has_labels38 = $1 + 153 | 0;
    $19 = HEAP8[$has_labels38] | 0;
    $or40 = $19 | 32;
    HEAP8[$has_labels38] = $or40;
    label = 12;
    break;
   case 12:
    $20 = HEAP32[41936] | 0;
    $tobool43 = ($20 | 0) == 0;
    if ($tobool43) {
      label = 16;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $21 = $e | 0;
    $index45 = $20 + 8 | 0;
    $22 = HEAP32[$index45 >> 2] | 0;
    $call46 = _agxget($21, $22) | 0;
    $tobool47 = ($call46 | 0) == 0;
    if ($tobool47) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $23 = HEAP8[$call46] | 0;
    $tobool51 = $23 << 24 >> 24 == 0;
    if ($tobool51) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    _initFontLabelEdgeAttr($e, $fi, $lfi);
    $call53 = _aghtmlstr($call46) | 0;
    $tobool54 = ($call53 | 0) != 0;
    $cond55 = $tobool54 ? 2 : 0;
    $fontsize56 = $lfi | 0;
    $24 = +HEAPF64[$fontsize56 >> 3];
    $25 = HEAP32[$fontname1 >> 2] | 0;
    $fontcolor58 = $lfi + 12 | 0;
    $26 = HEAP32[$fontcolor58 >> 2] | 0;
    $call59 = _make_label($21, $call46, $cond55, $24, $25, $26) | 0;
    $head_label = $e + 116 | 0;
    HEAP32[$head_label >> 2] = $call59;
    $has_labels62 = $1 + 153 | 0;
    $27 = HEAP8[$has_labels62] | 0;
    $or64 = $27 | 2;
    HEAP8[$has_labels62] = $or64;
    label = 16;
    break;
   case 16:
    $28 = HEAP32[41900] | 0;
    $tobool67 = ($28 | 0) == 0;
    if ($tobool67) {
      label = 22;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $29 = $e | 0;
    $index69 = $28 + 8 | 0;
    $30 = HEAP32[$index69 >> 2] | 0;
    $call70 = _agxget($29, $30) | 0;
    $tobool71 = ($call70 | 0) == 0;
    if ($tobool71) {
      label = 22;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $31 = HEAP8[$call70] | 0;
    $tobool75 = $31 << 24 >> 24 == 0;
    if ($tobool75) {
      label = 22;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $32 = HEAP32[$fontname1 >> 2] | 0;
    $tobool78 = ($32 | 0) == 0;
    if ($tobool78) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    _initFontLabelEdgeAttr($e, $fi, $lfi);
    label = 21;
    break;
   case 21:
    $call81 = _aghtmlstr($call70) | 0;
    $tobool82 = ($call81 | 0) != 0;
    $cond83 = $tobool82 ? 2 : 0;
    $fontsize84 = $lfi | 0;
    $33 = +HEAPF64[$fontsize84 >> 3];
    $34 = HEAP32[$fontname1 >> 2] | 0;
    $fontcolor86 = $lfi + 12 | 0;
    $35 = HEAP32[$fontcolor86 >> 2] | 0;
    $call87 = _make_label($29, $call70, $cond83, $33, $34, $35) | 0;
    $tail_label = $e + 120 | 0;
    HEAP32[$tail_label >> 2] = $call87;
    $has_labels90 = $1 + 153 | 0;
    $36 = HEAP8[$has_labels90] | 0;
    $or92 = $36 | 4;
    HEAP8[$has_labels90] = $or92;
    label = 22;
    break;
   case 22:
    $37 = $e | 0;
    $call95 = _agget($37, 143224) | 0;
    $tobool96 = ($call95 | 0) == 0;
    if ($tobool96) {
      label = 25;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $38 = HEAP8[$call95] | 0;
    $tobool100 = $38 << 24 >> 24 == 0;
    if ($tobool100) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $39 = HEAP32[$tail >> 2] | 0;
    $has_port = $39 + 161 | 0;
    HEAP8[$has_port] = 1;
    label = 25;
    break;
   case 25:
    $tail_port = $e + 32 | 0;
    $40 = HEAP32[$tail >> 2] | 0;
    $shape = $40 + 24 | 0;
    $41 = HEAP32[$shape >> 2] | 0;
    $fns = $41 + 4 | 0;
    $42 = HEAP32[$fns >> 2] | 0;
    $portfn = $42 + 8 | 0;
    $43 = HEAP32[$portfn >> 2] | 0;
    _chkPort($tmp, $43, $40, $call95);
    $44 = $tail_port;
    $45 = $tmp;
    HEAP32[$44 >> 2] = HEAP32[$45 >> 2] | 0;
    HEAP32[$44 + 4 >> 2] = HEAP32[$45 + 4 >> 2] | 0;
    HEAP32[$44 + 8 >> 2] = HEAP32[$45 + 8 >> 2] | 0;
    HEAP32[$44 + 12 >> 2] = HEAP32[$45 + 12 >> 2] | 0;
    HEAP32[$44 + 16 >> 2] = HEAP32[$45 + 16 >> 2] | 0;
    HEAP32[$44 + 20 >> 2] = HEAP32[$45 + 20 >> 2] | 0;
    HEAP32[$44 + 24 >> 2] = HEAP32[$45 + 24 >> 2] | 0;
    HEAP32[$44 + 28 >> 2] = HEAP32[$45 + 28 >> 2] | 0;
    HEAP32[$44 + 32 >> 2] = HEAP32[$45 + 32 >> 2] | 0;
    HEAP32[$44 + 36 >> 2] = HEAP32[$45 + 36 >> 2] | 0;
    $46 = HEAP32[41902] | 0;
    $call109 = _noClip($e, $46) | 0;
    $tobool110 = $call109 << 24 >> 24 == 0;
    if ($tobool110) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $clip = $e + 62 | 0;
    HEAP8[$clip] = 0;
    label = 27;
    break;
   case 27:
    $call115 = _agget($37, 139592) | 0;
    $tobool116 = ($call115 | 0) == 0;
    if ($tobool116) {
      label = 30;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $47 = HEAP8[$call115] | 0;
    $tobool120 = $47 << 24 >> 24 == 0;
    if ($tobool120) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $head = $e + 12 | 0;
    $48 = HEAP32[$head >> 2] | 0;
    $has_port123 = $48 + 161 | 0;
    HEAP8[$has_port123] = 1;
    label = 30;
    break;
   case 30:
    $head_port = $e + 72 | 0;
    $head126 = $e + 12 | 0;
    $49 = HEAP32[$head126 >> 2] | 0;
    $shape128 = $49 + 24 | 0;
    $50 = HEAP32[$shape128 >> 2] | 0;
    $fns129 = $50 + 4 | 0;
    $51 = HEAP32[$fns129 >> 2] | 0;
    $portfn130 = $51 + 8 | 0;
    $52 = HEAP32[$portfn130 >> 2] | 0;
    _chkPort($tmp132, $52, $49, $call115);
    $53 = $head_port;
    $54 = $tmp132;
    HEAP32[$53 >> 2] = HEAP32[$54 >> 2] | 0;
    HEAP32[$53 + 4 >> 2] = HEAP32[$54 + 4 >> 2] | 0;
    HEAP32[$53 + 8 >> 2] = HEAP32[$54 + 8 >> 2] | 0;
    HEAP32[$53 + 12 >> 2] = HEAP32[$54 + 12 >> 2] | 0;
    HEAP32[$53 + 16 >> 2] = HEAP32[$54 + 16 >> 2] | 0;
    HEAP32[$53 + 20 >> 2] = HEAP32[$54 + 20 >> 2] | 0;
    HEAP32[$53 + 24 >> 2] = HEAP32[$54 + 24 >> 2] | 0;
    HEAP32[$53 + 28 >> 2] = HEAP32[$54 + 28 >> 2] | 0;
    HEAP32[$53 + 32 >> 2] = HEAP32[$54 + 32 >> 2] | 0;
    HEAP32[$53 + 36 >> 2] = HEAP32[$54 + 36 >> 2] | 0;
    $55 = HEAP32[41938] | 0;
    $call133 = _noClip($e, $55) | 0;
    $tobool134 = $call133 << 24 >> 24 == 0;
    if ($tobool134) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $clip138 = $e + 102 | 0;
    HEAP8[$clip138] = 0;
    label = 32;
    break;
   case 32:
    STACKTOP = __stackBase__;
    return $r_0 | 0;
  }
  return 0;
}
function _initFontEdgeAttr($e, $fi) {
  $e = $e | 0;
  $fi = $fi | 0;
  var $0 = 0;
  $0 = $e | 0;
  HEAPF64[$fi >> 3] = +_late_double($0, HEAP32[41940] | 0, 14.0, 1.0);
  HEAP32[$fi + 8 >> 2] = _late_nnstring($0, HEAP32[41942] | 0, 149008) | 0;
  HEAP32[$fi + 12 >> 2] = _late_nnstring($0, HEAP32[41944] | 0, 146208) | 0;
  return;
}
function _sub_pointf($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $sub4 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $sub4 = +HEAPF64[$p + 8 >> 3] - +HEAPF64[$q + 8 >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p >> 3] - +HEAPF64[$q >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $sub4;
  STACKTOP = __stackBase__;
  return;
}
function _add_pointf($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $add4 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $add4 = +HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p >> 3] + +HEAPF64[$q >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $add4;
  STACKTOP = __stackBase__;
  return;
}
function _initFontLabelEdgeAttr($e, $fi, $lfi) {
  $e = $e | 0;
  $fi = $fi | 0;
  $lfi = $lfi | 0;
  var $fontname = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $fontsize = 0, $3 = 0.0, $call = 0.0, $fontsize1 = 0, $4 = 0, $5 = 0, $call3 = 0, $fontname4 = 0, $6 = 0, $fontcolor = 0, $7 = 0, $call5 = 0, $fontcolor6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fontname = $fi + 8 | 0;
    $0 = HEAP32[$fontname >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _initFontEdgeAttr($e, $fi);
    label = 4;
    break;
   case 4:
    $1 = $e | 0;
    $2 = HEAP32[41922] | 0;
    $fontsize = $fi | 0;
    $3 = +HEAPF64[$fontsize >> 3];
    $call = +_late_double($1, $2, $3, 1.0);
    $fontsize1 = $lfi | 0;
    HEAPF64[$fontsize1 >> 3] = $call;
    $4 = HEAP32[41924] | 0;
    $5 = HEAP32[$fontname >> 2] | 0;
    $call3 = _late_nnstring($1, $4, $5) | 0;
    $fontname4 = $lfi + 8 | 0;
    HEAP32[$fontname4 >> 2] = $call3;
    $6 = HEAP32[41926] | 0;
    $fontcolor = $fi + 12 | 0;
    $7 = HEAP32[$fontcolor >> 2] | 0;
    $call5 = _late_nnstring($1, $6, $7) | 0;
    $fontcolor6 = $lfi + 12 | 0;
    HEAP32[$fontcolor6 >> 2] = $call5;
    return;
  }
}
function _chkPort($agg_result, $pf, $n, $s) {
  $agg_result = $agg_result | 0;
  $pf = $pf | 0;
  $n = $n | 0;
  $s = $s | 0;
  var $pt_sroa_0 = 0, $tmp = 0, $tmp2 = 0, $call = 0, $tobool = 0, $add_ptr = 0, $pt_sroa_0_0__cast7 = 0, $pt_sroa_0_0_idx8 = 0, $pt_sroa_0_0__cast5 = 0, $pt_sroa_0_0_idx6 = 0, $pt_sroa_0_0__cast = 0, $pt_sroa_0_0_idx = 0, $pt_sroa_1_36__idx9 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 120 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pt_sroa_0 = __stackBase__ | 0;
    $tmp = __stackBase__ + 40 | 0;
    $tmp2 = __stackBase__ + 80 | 0;
    $call = _strchr($s | 0, 58) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP8[$call] = 0;
    $add_ptr = $call + 1 | 0;
    FUNCTION_TABLE_viiii[$pf & 1023]($tmp, $n, $s, $add_ptr);
    $pt_sroa_0_0__cast7 = $tmp;
    $pt_sroa_0_0_idx8 = $pt_sroa_0 | 0;
    HEAP32[$pt_sroa_0_0_idx8 >> 2] = HEAP32[$pt_sroa_0_0__cast7 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 4 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 4 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 8 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 8 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 12 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 12 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 16 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 16 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 20 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 20 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 24 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 24 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 28 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 28 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx8 + 32 >> 2] = HEAP32[$pt_sroa_0_0__cast7 + 32 >> 2] | 0;
    HEAP8[$call] = 58;
    label = 5;
    break;
   case 4:
    FUNCTION_TABLE_viiii[$pf & 1023]($tmp2, $n, $s, 0);
    $pt_sroa_0_0__cast5 = $tmp2;
    $pt_sroa_0_0_idx6 = $pt_sroa_0 | 0;
    HEAP32[$pt_sroa_0_0_idx6 >> 2] = HEAP32[$pt_sroa_0_0__cast5 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 4 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 4 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 8 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 8 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 12 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 12 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 16 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 16 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 20 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 20 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 24 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 24 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 28 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 28 >> 2] | 0;
    HEAP32[$pt_sroa_0_0_idx6 + 32 >> 2] = HEAP32[$pt_sroa_0_0__cast5 + 32 >> 2] | 0;
    label = 5;
    break;
   case 5:
    $pt_sroa_0_0__cast = $agg_result;
    $pt_sroa_0_0_idx = $pt_sroa_0 | 0;
    HEAP32[$pt_sroa_0_0__cast >> 2] = HEAP32[$pt_sroa_0_0_idx >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 4 >> 2] = HEAP32[$pt_sroa_0_0_idx + 4 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 8 >> 2] = HEAP32[$pt_sroa_0_0_idx + 8 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 12 >> 2] = HEAP32[$pt_sroa_0_0_idx + 12 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 16 >> 2] = HEAP32[$pt_sroa_0_0_idx + 16 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 20 >> 2] = HEAP32[$pt_sroa_0_0_idx + 20 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 24 >> 2] = HEAP32[$pt_sroa_0_0_idx + 24 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 28 >> 2] = HEAP32[$pt_sroa_0_0_idx + 28 >> 2] | 0;
    HEAP32[$pt_sroa_0_0__cast + 32 >> 2] = HEAP32[$pt_sroa_0_0_idx + 32 >> 2] | 0;
    $pt_sroa_1_36__idx9 = $agg_result + 36 | 0;
    HEAP32[$pt_sroa_1_36__idx9 >> 2] = $s;
    STACKTOP = __stackBase__;
    return;
  }
}
function _noClip($e, $sym) {
  $e = $e | 0;
  $sym = $sym | 0;
  var $tobool = 0, $0 = 0, $index = 0, $1 = 0, $call = 0, $tobool1 = 0, $2 = 0, $tobool2 = 0, $call4 = 0, $lnot = 0, $conv6 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($sym | 0) == 0;
    if ($tobool) {
      $rv_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = $e | 0;
    $index = $sym + 8 | 0;
    $1 = HEAP32[$index >> 2] | 0;
    $call = _agxget($0, $1) | 0;
    $tobool1 = ($call | 0) == 0;
    if ($tobool1) {
      $rv_0 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP8[$call] | 0;
    $tobool2 = $2 << 24 >> 24 == 0;
    if ($tobool2) {
      $rv_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call4 = _mapbool($call) | 0;
    $lnot = $call4 << 24 >> 24 == 0;
    $conv6 = $lnot & 1;
    $rv_0 = $conv6;
    label = 6;
    break;
   case 6:
    return $rv_0 | 0;
  }
  return 0;
}
function _updateBB($g, $lp) {
  $g = $g | 0;
  $lp = $lp | 0;
  var $tmp = 0, $bb = 0, $1 = 0, $2 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  $tmp = __stackBase__ | 0;
  $bb = $g + 56 | 0;
  _addLabelBB($tmp, $bb, $lp, HEAP32[$g + 156 >> 2] & 1);
  $1 = $bb;
  $2 = $tmp;
  HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
  HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
  HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
  HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
  HEAP32[$1 + 16 >> 2] = HEAP32[$2 + 16 >> 2] | 0;
  HEAP32[$1 + 20 >> 2] = HEAP32[$2 + 20 >> 2] | 0;
  HEAP32[$1 + 24 >> 2] = HEAP32[$2 + 24 >> 2] | 0;
  HEAP32[$1 + 28 >> 2] = HEAP32[$2 + 28 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _addLabelBB($agg_result, $bb, $lp, $flipxy) {
  $agg_result = $agg_result | 0;
  $bb = $bb | 0;
  $lp = $lp | 0;
  $flipxy = $flipxy | 0;
  var $p_sroa_0_0__idx = 0, $p_sroa_0_0_copyload = 0.0, $p_sroa_1_8__idx9 = 0, $p_sroa_1_8_copyload = 0.0, $tobool = 0, $x = 0, $0 = 0.0, $y5 = 0, $1 = 0.0, $_ = 0.0, $_15 = 0.0, $div = 0.0, $sub = 0.0, $add = 0.0, $x9 = 0, $2 = 0.0, $cmp = 0, $x14 = 0, $3 = 0.0, $cmp15 = 0, $div21 = 0.0, $sub22 = 0.0, $add25 = 0.0, $y27 = 0, $4 = 0.0, $cmp28 = 0, $y34 = 0, $5 = 0.0, $cmp35 = 0, $6 = 0, $7 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $bb;
  $bb = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($bb, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p_sroa_0_0__idx = $lp + 56 | 0;
    $p_sroa_0_0_copyload = +HEAPF64[$p_sroa_0_0__idx >> 3];
    $p_sroa_1_8__idx9 = $lp + 64 | 0;
    $p_sroa_1_8_copyload = +HEAPF64[$p_sroa_1_8__idx9 >> 3];
    $tobool = $flipxy << 24 >> 24 == 0;
    $x = $lp + 24 | 0;
    $0 = +HEAPF64[$x >> 3];
    $y5 = $lp + 32 | 0;
    $1 = +HEAPF64[$y5 >> 3];
    $_ = $tobool ? $1 : $0;
    $_15 = $tobool ? $0 : $1;
    $div = $_15 * .5;
    $sub = $p_sroa_0_0_copyload - $div;
    $add = $p_sroa_0_0_copyload + $div;
    $x9 = $bb | 0;
    $2 = +HEAPF64[$x9 >> 3];
    $cmp = $sub < $2;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAPF64[$x9 >> 3] = $sub;
    label = 4;
    break;
   case 4:
    $x14 = $bb + 16 | 0;
    $3 = +HEAPF64[$x14 >> 3];
    $cmp15 = $add > $3;
    if ($cmp15) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAPF64[$x14 >> 3] = $add;
    label = 6;
    break;
   case 6:
    $div21 = $_ * .5;
    $sub22 = $p_sroa_1_8_copyload - $div21;
    $add25 = $p_sroa_1_8_copyload + $div21;
    $y27 = $bb + 8 | 0;
    $4 = +HEAPF64[$y27 >> 3];
    $cmp28 = $sub22 < $4;
    if ($cmp28) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAPF64[$y27 >> 3] = $sub22;
    label = 8;
    break;
   case 8:
    $y34 = $bb + 24 | 0;
    $5 = +HEAPF64[$y34 >> 3];
    $cmp35 = $add25 > $5;
    if ($cmp35) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    HEAPF64[$y34 >> 3] = $add25;
    label = 10;
    break;
   case 10:
    $6 = $agg_result;
    $7 = $bb;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    HEAP32[$6 + 16 >> 2] = HEAP32[$7 + 16 >> 2] | 0;
    HEAP32[$6 + 20 >> 2] = HEAP32[$7 + 20 >> 2] | 0;
    HEAP32[$6 + 24 >> 2] = HEAP32[$7 + 24 >> 2] | 0;
    HEAP32[$6 + 28 >> 2] = HEAP32[$7 + 28 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _strncasecmp($s1, $s2, $n) {
  $s1 = $s1 | 0;
  $s2 = $s2 | 0;
  $n = $n | 0;
  var $cmp = 0, $dec15_in = 0, $s2_addr_014 = 0, $s1_addr_013 = 0, $dec15 = 0, $0 = 0, $conv = 0, $call = 0, $1 = 0, $conv2 = 0, $call3 = 0, $cmp4 = 0, $cmp6 = 0, $2 = 0, $cmp9 = 0, $3 = 0, $cmp13 = 0, $incdec_ptr = 0, $incdec_ptr17 = 0, $cmp1 = 0, $s2_addr_0_lcssa = 0, $s1_addr_0_lcssa = 0, $4 = 0, $conv18 = 0, $call19 = 0, $5 = 0, $conv20 = 0, $call21 = 0, $sub = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($n | 0) == 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      $s1_addr_013 = $s1;
      $s2_addr_014 = $s2;
      $dec15_in = $n;
      label = 3;
      break;
    }
   case 3:
    $dec15 = $dec15_in - 1 | 0;
    $0 = HEAP8[$s1_addr_013] | 0;
    $conv = $0 & 255;
    $call = _tolower($conv | 0) | 0;
    $1 = HEAP8[$s2_addr_014] | 0;
    $conv2 = $1 & 255;
    $call3 = _tolower($conv2 | 0) | 0;
    $cmp4 = ($call | 0) == ($call3 | 0);
    if ($cmp4) {
      label = 4;
      break;
    } else {
      $s1_addr_0_lcssa = $s1_addr_013;
      $s2_addr_0_lcssa = $s2_addr_014;
      label = 8;
      break;
    }
   case 4:
    $cmp6 = ($dec15 | 0) == 0;
    if ($cmp6) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP8[$s1_addr_013] | 0;
    $cmp9 = $2 << 24 >> 24 == 0;
    if ($cmp9) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP8[$s2_addr_014] | 0;
    $cmp13 = $3 << 24 >> 24 == 0;
    if ($cmp13) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $incdec_ptr = $s1_addr_013 + 1 | 0;
    $incdec_ptr17 = $s2_addr_014 + 1 | 0;
    $cmp1 = ($dec15 | 0) == 0;
    if ($cmp1) {
      $s1_addr_0_lcssa = $incdec_ptr;
      $s2_addr_0_lcssa = $incdec_ptr17;
      label = 8;
      break;
    } else {
      $s1_addr_013 = $incdec_ptr;
      $s2_addr_014 = $incdec_ptr17;
      $dec15_in = $dec15;
      label = 3;
      break;
    }
   case 8:
    $4 = HEAP8[$s1_addr_0_lcssa] | 0;
    $conv18 = $4 & 255;
    $call19 = _tolower($conv18 | 0) | 0;
    $5 = HEAP8[$s2_addr_0_lcssa] | 0;
    $conv20 = $5 & 255;
    $call21 = _tolower($conv20 | 0) | 0;
    $sub = $call19 - $call21 | 0;
    $retval_0 = $sub;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _undoClusterEdges($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $call1 = 0, $tobool20 = 0, $n_0_in21 = 0, $call2 = 0, $tobool418 = 0, $e_0_in19 = 0, $e_0 = 0, $call6 = 0, $tobool4 = 0, $call8 = 0, $tobool = 0, $3 = 0, $call10 = 0, $tobool1216 = 0, $n_1_in17 = 0, $4 = 0, $call15 = 0, $tobool12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agsubg($0, 132056) | 0;
    $1 = $call;
    $2 = $g;
    $call1 = _agfstnode($2) | 0;
    $tobool20 = ($call1 | 0) == 0;
    if ($tobool20) {
      label = 6;
      break;
    } else {
      $n_0_in21 = $call1;
      label = 3;
      break;
    }
   case 3:
    $call2 = _agfstout($2, $n_0_in21) | 0;
    $tobool418 = ($call2 | 0) == 0;
    if ($tobool418) {
      label = 5;
      break;
    } else {
      $e_0_in19 = $call2;
      label = 4;
      break;
    }
   case 4:
    $e_0 = $e_0_in19;
    _undoCompound($e_0, $1);
    $call6 = _agnxtout($2, $e_0_in19) | 0;
    $tobool4 = ($call6 | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      $e_0_in19 = $call6;
      label = 4;
      break;
    }
   case 5:
    $call8 = _agnxtnode($2, $n_0_in21) | 0;
    $tobool = ($call8 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_0_in21 = $call8;
      label = 3;
      break;
    }
   case 6:
    $3 = $call;
    $call10 = _agfstnode($3) | 0;
    $tobool1216 = ($call10 | 0) == 0;
    if ($tobool1216) {
      label = 8;
      break;
    } else {
      $n_1_in17 = $call10;
      label = 7;
      break;
    }
   case 7:
    $4 = $n_1_in17 | 0;
    _agdelete($0, $4);
    $call15 = _agnxtnode($3, $n_1_in17) | 0;
    $tobool12 = ($call15 | 0) == 0;
    if ($tobool12) {
      label = 8;
      break;
    } else {
      $n_1_in17 = $call15;
      label = 7;
      break;
    }
   case 8:
    _agclose($call);
    return;
  }
}
function _undoCompound($e, $clg) {
  $e = $e | 0;
  $clg = $clg | 0;
  var $tail = 0, $0 = 0, $head = 0, $1 = 0, $clustnode = 0, $2 = 0, $tobool = 0, $clustnode2 = 0, $3 = 0, $tobool4 = 0, $call = 0, $call5 = 0, $call6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $clustnode = $0 + 134 | 0;
    $2 = HEAP8[$clustnode] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $clustnode2 = $1 + 134 | 0;
    $3 = HEAP8[$clustnode2] | 0;
    $tobool4 = $3 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _mapN($0, $clg) | 0;
    $call5 = _mapN($1, $clg) | 0;
    $call6 = _cloneEdge($e, $call, $call5) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _safe_dcl($g, $obj, $name, $def, $fun) {
  $g = $g | 0;
  $obj = $obj | 0;
  $name = $name | 0;
  $def = $def | 0;
  $fun = $fun | 0;
  var $call = 0, $cmp = 0, $call1 = 0, $a_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfindattr($obj, $name) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $a_0 = $call;
      label = 4;
      break;
    }
   case 3:
    $call1 = FUNCTION_TABLE_iiii[$fun & 1023]($g, $name, $def) | 0;
    $a_0 = $call1;
    label = 4;
    break;
   case 4:
    return $a_0 | 0;
  }
  return 0;
}
function _scanEntity($t, $xb) {
  $t = $t | 0;
  $xb = $xb | 0;
  var $key = 0, $buf = 0, $call = 0, $ptr = 0, $0 = 0, $eptr = 0, $1 = 0, $cmp = 0, $call1 = 0, $2 = 0, $incdec_ptr = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $sub_ptr_sub_off = 0, $3 = 0, $arraydecay = 0, $call7 = 0, $arrayidx = 0, $name = 0, $4 = 0, $call9 = 0, $tobool10 = 0, $value = 0, $5 = 0, $6 = 0, $call14 = 0, $7 = 0, $8 = 0, $cmp17 = 0, $call19 = 0, $9 = 0, $incdec_ptr24 = 0, $call26 = 0, $10 = 0, $11 = 0, $cmp29 = 0, $call31 = 0, $12 = 0, $incdec_ptr36 = 0, $add_ptr = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 24 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $buf = __stackBase__ + 8 | 0;
    $call = _strchr($t | 0, 59) | 0;
    $ptr = $xb + 4 | 0;
    $0 = HEAP32[$ptr >> 2] | 0;
    $eptr = $xb + 8 | 0;
    $1 = HEAP32[$eptr >> 2] | 0;
    $cmp = $0 >>> 0 < $1 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _agxbmore($xb, 1) | 0;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $2 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$2] = 38;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = $t;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $sub_ptr_lhs_cast = $call;
    $sub_ptr_rhs_cast = $t;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $sub_ptr_sub_off = $sub_ptr_sub - 2 | 0;
    $3 = $sub_ptr_sub_off >>> 0 > 6;
    if ($3) {
      $retval_0 = $t;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $arraydecay = $buf | 0;
    $call7 = _strncpy($arraydecay | 0, $t | 0, $sub_ptr_sub | 0) | 0;
    $arrayidx = $buf + $sub_ptr_sub | 0;
    HEAP8[$arrayidx] = 0;
    $name = $key | 0;
    HEAP32[$name >> 2] = $arraydecay;
    $4 = $key;
    $call9 = _bsearch($4 | 0, 18184, 252, 8, 176) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      $retval_0 = $t;
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $value = $call9 + 4 | 0;
    $5 = $value;
    $6 = HEAP32[$5 >> 2] | 0;
    $call14 = _sprintf($arraydecay | 0, 130264, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $6, tempInt) | 0) | 0;
    $7 = HEAP32[$ptr >> 2] | 0;
    $8 = HEAP32[$eptr >> 2] | 0;
    $cmp17 = $7 >>> 0 < $8 >>> 0;
    if ($cmp17) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call19 = _agxbmore($xb, 1) | 0;
    label = 9;
    break;
   case 9:
    $9 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr24 = $9 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr24;
    HEAP8[$9] = 35;
    $call26 = _agxbput($xb, $arraydecay) | 0;
    $10 = HEAP32[$ptr >> 2] | 0;
    $11 = HEAP32[$eptr >> 2] | 0;
    $cmp29 = $10 >>> 0 < $11 >>> 0;
    if ($cmp29) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call31 = _agxbmore($xb, 1) | 0;
    label = 11;
    break;
   case 11:
    $12 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr36 = $12 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr36;
    HEAP8[$12] = 59;
    $add_ptr = $call + 1 | 0;
    $retval_0 = $add_ptr;
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _comp_entities($e1, $e2) {
  $e1 = $e1 | 0;
  $e2 = $e2 | 0;
  return _strcmp(HEAP32[$e1 >> 2] | 0, HEAP32[$e2 >> 2] | 0) | 0;
}
function _htmlEntityUTF8($s) {
  $s = $s | 0;
  var $s_addr = 0, $xb = 0, $buf = 0, $arraydecay = 0, $0 = 0, $incdec_ptr17 = 0, $1 = 0, $tobool18 = 0, $ptr = 0, $eptr = 0, $ptr142 = 0, $eptr143 = 0, $ptr78 = 0, $eptr79 = 0, $ptr108 = 0, $eptr109 = 0, $2 = 0, $incdec_ptr19 = 0, $3 = 0, $cmp = 0, $cmp3 = 0, $call = 0, $tobool6 = 0, $cmp8 = 0, $conv11 = 0, $cmp12 = 0, $4 = 0, $5 = 0, $cmp15 = 0, $call17 = 0, $shr = 0, $or = 0, $conv20 = 0, $6 = 0, $incdec_ptr22 = 0, $and = 0, $or24 = 0, $conv25 = 0, $call32 = 0, $shr36 = 0, $or39 = 0, $conv40 = 0, $7 = 0, $incdec_ptr42 = 0, $8 = 0, $9 = 0, $cmp46 = 0, $call49 = 0, $shr53 = 0, $conv56 = 0, $or57 = 0, $conv58 = 0, $10 = 0, $incdec_ptr60 = 0, $and62 = 0, $or63 = 0, $conv64 = 0, $cmp70 = 0, $11 = 0, $and74 = 0, $cmp75 = 0, $12 = 0, $13 = 0, $cmp80 = 0, $call83 = 0, $14 = 0, $incdec_ptr88 = 0, $15 = 0, $incdec_ptr90 = 0, $16 = 0, $call92 = 0, $cmp96 = 0, $17 = 0, $and100 = 0, $cmp101 = 0, $arrayidx = 0, $18 = 0, $and104 = 0, $cmp105 = 0, $19 = 0, $20 = 0, $cmp110 = 0, $call113 = 0, $21 = 0, $incdec_ptr118 = 0, $22 = 0, $incdec_ptr120 = 0, $23 = 0, $24 = 0, $25 = 0, $cmp123 = 0, $call126 = 0, $26 = 0, $incdec_ptr131 = 0, $27 = 0, $incdec_ptr133 = 0, $28 = 0, $call135 = 0, $call138 = 0, $c_0 = 0, $29 = 0, $30 = 0, $cmp144 = 0, $call147 = 0, $31 = 0, $incdec_ptr152 = 0, $32 = 0, $incdec_ptr = 0, $33 = 0, $tobool = 0, $ptr154 = 0, $34 = 0, $eptr155 = 0, $35 = 0, $cmp156 = 0, $call159 = 0, $36 = 0, $buf165 = 0, $37 = 0, $call167 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1048 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s_addr = __stackBase__ | 0;
    $xb = __stackBase__ + 8 | 0;
    $buf = __stackBase__ + 24 | 0;
    HEAP32[$s_addr >> 2] = $s;
    $arraydecay = $buf | 0;
    _agxbinit($xb, 1024, $arraydecay);
    $0 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr17 = $0 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr17;
    $1 = HEAP8[$0] | 0;
    $tobool18 = $1 << 24 >> 24 == 0;
    if ($tobool18) {
      label = 37;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $ptr = $xb + 4 | 0;
    $eptr = $xb + 8 | 0;
    $ptr142 = $xb + 4 | 0;
    $eptr143 = $xb + 8 | 0;
    $ptr78 = $xb + 4 | 0;
    $eptr79 = $xb + 8 | 0;
    $ptr108 = $xb + 4 | 0;
    $eptr109 = $xb + 8 | 0;
    $3 = $0;
    $incdec_ptr19 = $incdec_ptr17;
    $2 = $1;
    label = 4;
    break;
   case 4:
    $cmp = ($2 & 255) < 192;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 18;
      break;
    }
   case 5:
    $cmp3 = $2 << 24 >> 24 == 38;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      $c_0 = $2;
      label = 34;
      break;
    }
   case 6:
    $call = _htmlEntity($s_addr) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      $c_0 = 38;
      label = 34;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp8 = $call >>> 0 < 127;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $conv11 = $call & 255;
    $c_0 = $conv11;
    label = 34;
    break;
   case 9:
    $cmp12 = $call >>> 0 < 2047;
    $4 = HEAP32[$ptr >> 2] | 0;
    $5 = HEAP32[$eptr >> 2] | 0;
    $cmp15 = $4 >>> 0 >= $5 >>> 0;
    if ($cmp12) {
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    if ($cmp15) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $call17 = _agxbmore($xb, 1) | 0;
    label = 12;
    break;
   case 12:
    $shr = $call >>> 6;
    $or = $shr | 192;
    $conv20 = $or & 255;
    $6 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr22 = $6 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr22;
    HEAP8[$6] = $conv20;
    $and = $call & 63;
    $or24 = $and | 128;
    $conv25 = $or24 & 255;
    $c_0 = $conv25;
    label = 34;
    break;
   case 13:
    if ($cmp15) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $call32 = _agxbmore($xb, 1) | 0;
    label = 15;
    break;
   case 15:
    $shr36 = $call >>> 12;
    $or39 = $shr36 | 224;
    $conv40 = $or39 & 255;
    $7 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr42 = $7 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr42;
    HEAP8[$7] = $conv40;
    $8 = HEAP32[$ptr >> 2] | 0;
    $9 = HEAP32[$eptr >> 2] | 0;
    $cmp46 = $8 >>> 0 < $9 >>> 0;
    if ($cmp46) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call49 = _agxbmore($xb, 1) | 0;
    label = 17;
    break;
   case 17:
    $shr53 = $call >>> 6;
    $conv56 = $shr53 & 63;
    $or57 = $conv56 | 128;
    $conv58 = $or57 & 255;
    $10 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr60 = $10 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr60;
    HEAP8[$10] = $conv58;
    $and62 = $call & 63;
    $or63 = $and62 | 128;
    $conv64 = $or63 & 255;
    $c_0 = $conv64;
    label = 34;
    break;
   case 18:
    $cmp70 = ($2 & 255) < 224;
    if ($cmp70) {
      label = 19;
      break;
    } else {
      label = 24;
      break;
    }
   case 19:
    $11 = HEAP8[$incdec_ptr19] | 0;
    $and74 = $11 & -64;
    $cmp75 = $and74 << 24 >> 24 == -128;
    if ($cmp75) {
      label = 20;
      break;
    } else {
      label = 23;
      break;
    }
   case 20:
    $12 = HEAP32[$ptr78 >> 2] | 0;
    $13 = HEAP32[$eptr79 >> 2] | 0;
    $cmp80 = $12 >>> 0 < $13 >>> 0;
    if ($cmp80) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $call83 = _agxbmore($xb, 1) | 0;
    label = 22;
    break;
   case 22:
    $14 = HEAP32[$ptr78 >> 2] | 0;
    $incdec_ptr88 = $14 + 1 | 0;
    HEAP32[$ptr78 >> 2] = $incdec_ptr88;
    HEAP8[$14] = $2;
    $15 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr90 = $15 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr90;
    $16 = HEAP8[$15] | 0;
    $c_0 = $16;
    label = 34;
    break;
   case 23:
    $call92 = _agerr(1, 128248, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _exit(1);
    return 0;
   case 24:
    $cmp96 = ($2 & 255) < 240;
    if ($cmp96) {
      label = 25;
      break;
    } else {
      label = 33;
      break;
    }
   case 25:
    $17 = HEAP8[$incdec_ptr19] | 0;
    $and100 = $17 & -64;
    $cmp101 = $and100 << 24 >> 24 == -128;
    if ($cmp101) {
      label = 26;
      break;
    } else {
      label = 32;
      break;
    }
   case 26:
    $arrayidx = $3 + 2 | 0;
    $18 = HEAP8[$arrayidx] | 0;
    $and104 = $18 & -64;
    $cmp105 = $and104 << 24 >> 24 == -128;
    if ($cmp105) {
      label = 27;
      break;
    } else {
      label = 32;
      break;
    }
   case 27:
    $19 = HEAP32[$ptr108 >> 2] | 0;
    $20 = HEAP32[$eptr109 >> 2] | 0;
    $cmp110 = $19 >>> 0 < $20 >>> 0;
    if ($cmp110) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $call113 = _agxbmore($xb, 1) | 0;
    label = 29;
    break;
   case 29:
    $21 = HEAP32[$ptr108 >> 2] | 0;
    $incdec_ptr118 = $21 + 1 | 0;
    HEAP32[$ptr108 >> 2] = $incdec_ptr118;
    HEAP8[$21] = $2;
    $22 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr120 = $22 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr120;
    $23 = HEAP8[$22] | 0;
    $24 = HEAP32[$ptr108 >> 2] | 0;
    $25 = HEAP32[$eptr109 >> 2] | 0;
    $cmp123 = $24 >>> 0 < $25 >>> 0;
    if ($cmp123) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $call126 = _agxbmore($xb, 1) | 0;
    label = 31;
    break;
   case 31:
    $26 = HEAP32[$ptr108 >> 2] | 0;
    $incdec_ptr131 = $26 + 1 | 0;
    HEAP32[$ptr108 >> 2] = $incdec_ptr131;
    HEAP8[$26] = $23;
    $27 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr133 = $27 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr133;
    $28 = HEAP8[$27] | 0;
    $c_0 = $28;
    label = 34;
    break;
   case 32:
    $call135 = _agerr(1, 125632, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _exit(1);
    return 0;
   case 33:
    $call138 = _agerr(1, 123560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _exit(1);
    return 0;
   case 34:
    $29 = HEAP32[$ptr142 >> 2] | 0;
    $30 = HEAP32[$eptr143 >> 2] | 0;
    $cmp144 = $29 >>> 0 < $30 >>> 0;
    if ($cmp144) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $call147 = _agxbmore($xb, 1) | 0;
    label = 36;
    break;
   case 36:
    $31 = HEAP32[$ptr142 >> 2] | 0;
    $incdec_ptr152 = $31 + 1 | 0;
    HEAP32[$ptr142 >> 2] = $incdec_ptr152;
    HEAP8[$31] = $c_0;
    $32 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr = $32 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr;
    $33 = HEAP8[$32] | 0;
    $tobool = $33 << 24 >> 24 == 0;
    if ($tobool) {
      label = 37;
      break;
    } else {
      $3 = $32;
      $incdec_ptr19 = $incdec_ptr;
      $2 = $33;
      label = 4;
      break;
    }
   case 37:
    $ptr154 = $xb + 4 | 0;
    $34 = HEAP32[$ptr154 >> 2] | 0;
    $eptr155 = $xb + 8 | 0;
    $35 = HEAP32[$eptr155 >> 2] | 0;
    $cmp156 = $34 >>> 0 < $35 >>> 0;
    if ($cmp156) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $call159 = _agxbmore($xb, 1) | 0;
    label = 39;
    break;
   case 39:
    $36 = HEAP32[$ptr154 >> 2] | 0;
    HEAP8[$36] = 0;
    $buf165 = $xb | 0;
    $37 = HEAP32[$buf165 >> 2] | 0;
    HEAP32[$ptr154 >> 2] = $37;
    $call167 = _strdup($37 | 0) | 0;
    _agxbfree($xb);
    STACKTOP = __stackBase__;
    return $call167 | 0;
  }
  return 0;
}
function _mid_pointf($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $div5 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $div5 = (+HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3]) * .5;
  HEAPF64[$agg_result >> 3] = (+HEAPF64[$p >> 3] + +HEAPF64[$q >> 3]) * .5;
  HEAPF64[$agg_result + 8 >> 3] = $div5;
  STACKTOP = __stackBase__;
  return;
}
function _boxf_overlap246($b0, $b1) {
  $b0 = $b0 | 0;
  $b1 = $b1 | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x3 = 0, $2 = 0.0, $x5 = 0, $3 = 0.0, $cmp6 = 0, $y = 0, $4 = 0.0, $y10 = 0, $5 = 0.0, $cmp11 = 0, $y13 = 0, $6 = 0.0, $y15 = 0, $7 = 0.0, $cmp16 = 0, $phitmp = 0, $8 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b0;
  $b0 = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b0, tempParam, 32);
  tempParam = $b1;
  $b1 = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b1, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $b0 + 16 | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $b1 | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 < $1;
    if ($cmp) {
      $8 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x3 = $b1 + 16 | 0;
    $2 = +HEAPF64[$x3 >> 3];
    $x5 = $b0 | 0;
    $3 = +HEAPF64[$x5 >> 3];
    $cmp6 = $2 < $3;
    if ($cmp6) {
      $8 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $b0 + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y10 = $b1 + 8 | 0;
    $5 = +HEAPF64[$y10 >> 3];
    $cmp11 = $4 < $5;
    if ($cmp11) {
      $8 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y13 = $b1 + 24 | 0;
    $6 = +HEAPF64[$y13 >> 3];
    $y15 = $b0 + 8 | 0;
    $7 = +HEAPF64[$y15 >> 3];
    $cmp16 = $6 >= $7;
    $phitmp = $cmp16 & 1;
    $8 = $phitmp;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $8 | 0;
  }
  return 0;
}
function _htmlEntity($s) {
  $s = $s | 0;
  var $key = 0, $entity_name_buf = 0, $0 = 0, $1 = 0, $cmp = 0, $add_ptr = 0, $2 = 0, $add_ptr10 = 0, $3 = 0, $conv11 = 0, $_off44 = 0, $4 = 0, $add = 0, $_off45 = 0, $5 = 0, $add24 = 0, $_off46 = 0, $6 = 0, $sub32 = 0, $byte_1 = 0, $add_ptr10_1 = 0, $7 = 0, $conv11_1 = 0, $_off44_1 = 0, $8 = 0, $add_ptr42 = 0, $9 = 0, $conv43 = 0, $_off = 0, $10 = 0, $add52 = 0, $add_ptr42_1 = 0, $11 = 0, $conv43_1 = 0, $_off_1 = 0, $12 = 0, $byte_3 = 0, $i_2 = 0, $n_2 = 0, $cmp59 = 0, $add_ptr63 = 0, $arraydecay = 0, $name = 0, $13 = 0, $p_055_lcssa58 = 0, $i_356_lcssa57 = 0, $14 = 0, $call = 0, $tobool = 0, $value = 0, $15 = 0, $16 = 0, $add_ptr82 = 0, $incdec_ptr86 = 0, $add_ptr71_1 = 0, $17 = 0, $str_0 = 0, $n_3 = 0, $mul50_1 = 0, $sub51_1 = 0, $add52_1 = 0, $add_ptr42_2 = 0, $18 = 0, $conv43_2 = 0, $_off_2 = 0, $19 = 0, $mul50_2 = 0, $sub51_2 = 0, $add52_2 = 0, $add_ptr42_3 = 0, $20 = 0, $conv43_3 = 0, $_off_3 = 0, $21 = 0, $mul50_3 = 0, $sub51_3 = 0, $add52_3 = 0, $add_ptr42_4 = 0, $22 = 0, $conv43_4 = 0, $_off_4 = 0, $23 = 0, $mul50_4 = 0, $sub51_4 = 0, $add52_4 = 0, $add_ptr42_5 = 0, $24 = 0, $conv43_5 = 0, $_off_5 = 0, $25 = 0, $mul50_5 = 0, $sub51_5 = 0, $add52_5 = 0, $add_ptr42_6 = 0, $26 = 0, $conv43_6 = 0, $_off_6 = 0, $27 = 0, $mul50_6 = 0, $sub51_6 = 0, $add52_6 = 0, $_off45_1 = 0, $28 = 0, $_off46_1 = 0, $29 = 0, $sub32_1 = 0, $add24_1 = 0, $add_1 = 0, $byte_1_1 = 0, $mul_1 = 0, $add36_1 = 0, $add_ptr10_2 = 0, $30 = 0, $conv11_2 = 0, $_off44_2 = 0, $31 = 0, $_off45_2 = 0, $32 = 0, $_off46_2 = 0, $33 = 0, $sub32_2 = 0, $add24_2 = 0, $add_2 = 0, $byte_1_2 = 0, $mul_2 = 0, $add36_2 = 0, $add_ptr10_3 = 0, $34 = 0, $conv11_3 = 0, $_off44_3 = 0, $35 = 0, $_off45_3 = 0, $36 = 0, $_off46_3 = 0, $37 = 0, $sub32_3 = 0, $add24_3 = 0, $add_3 = 0, $byte_1_3 = 0, $mul_3 = 0, $add36_3 = 0, $add_ptr10_4 = 0, $38 = 0, $conv11_4 = 0, $_off44_4 = 0, $39 = 0, $_off45_4 = 0, $40 = 0, $_off46_4 = 0, $41 = 0, $sub32_4 = 0, $add24_4 = 0, $add_4 = 0, $byte_1_4 = 0, $mul_4 = 0, $add36_4 = 0, $add_ptr10_5 = 0, $42 = 0, $conv11_5 = 0, $_off44_5 = 0, $43 = 0, $_off45_5 = 0, $44 = 0, $_off46_5 = 0, $45 = 0, $sub32_5 = 0, $add24_5 = 0, $add_5 = 0, $byte_1_5 = 0, $mul_5 = 0, $add36_5 = 0, $incdec_ptr86_1 = 0, $add_ptr71_2 = 0, $46 = 0, $incdec_ptr86_2 = 0, $add_ptr71_3 = 0, $47 = 0, $incdec_ptr86_3 = 0, $add_ptr71_4 = 0, $48 = 0, $incdec_ptr86_4 = 0, $add_ptr71_5 = 0, $49 = 0, $incdec_ptr86_5 = 0, $add_ptr71_6 = 0, $50 = 0, $incdec_ptr86_6 = 0, $add_ptr71_7 = 0, $51 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 24 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $entity_name_buf = __stackBase__ + 8 | 0;
    $0 = HEAP32[$s >> 2] | 0;
    $1 = HEAP8[$0] | 0;
    $cmp = $1 << 24 >> 24 == 35;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 15;
      break;
    }
   case 3:
    $add_ptr = $0 + 1 | 0;
    $2 = HEAP8[$add_ptr] | 0;
    if (($2 << 24 >> 24 | 0) == 120 | ($2 << 24 >> 24 | 0) == 88) {
      label = 4;
      break;
    } else {
      label = 11;
      break;
    }
   case 4:
    $add_ptr10 = $0 + 2 | 0;
    $3 = HEAP8[$add_ptr10] | 0;
    $conv11 = $3 & 255;
    $_off44 = $3 - 65 & 255;
    $4 = ($_off44 & 255) < 6;
    if ($4) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $add = $conv11 - 55 | 0;
    $byte_1 = $add;
    label = 10;
    break;
   case 6:
    $_off45 = $3 - 97 & 255;
    $5 = ($_off45 & 255) < 6;
    if ($5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $add24 = $conv11 - 87 | 0;
    $byte_1 = $add24;
    label = 10;
    break;
   case 8:
    $_off46 = $3 - 48 & 255;
    $6 = ($_off46 & 255) < 10;
    if ($6) {
      label = 9;
      break;
    } else {
      $n_2 = 0;
      $i_2 = 3;
      $byte_3 = $conv11;
      label = 13;
      break;
    }
   case 9:
    $sub32 = $conv11 - 48 | 0;
    $byte_1 = $sub32;
    label = 10;
    break;
   case 10:
    $add_ptr10_1 = $0 + 3 | 0;
    $7 = HEAP8[$add_ptr10_1] | 0;
    $conv11_1 = $7 & 255;
    $_off44_1 = $7 - 65 & 255;
    $8 = ($_off44_1 & 255) < 6;
    if ($8) {
      label = 30;
      break;
    } else {
      label = 26;
      break;
    }
   case 11:
    $add_ptr42 = $0 + 1 | 0;
    $9 = HEAP8[$add_ptr42] | 0;
    $conv43 = $9 & 255;
    $_off = $9 - 48 & 255;
    $10 = ($_off & 255) < 10;
    if ($10) {
      label = 12;
      break;
    } else {
      $n_2 = 0;
      $i_2 = 2;
      $byte_3 = $conv43;
      label = 13;
      break;
    }
   case 12:
    $add52 = $conv43 - 48 | 0;
    $add_ptr42_1 = $0 + 2 | 0;
    $11 = HEAP8[$add_ptr42_1] | 0;
    $conv43_1 = $11 & 255;
    $_off_1 = $11 - 48 & 255;
    $12 = ($_off_1 & 255) < 10;
    if ($12) {
      label = 20;
      break;
    } else {
      $n_2 = $add52;
      $i_2 = 3;
      $byte_3 = $conv43_1;
      label = 13;
      break;
    }
   case 13:
    $cmp59 = ($byte_3 | 0) == 59;
    if ($cmp59) {
      label = 14;
      break;
    } else {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    }
   case 14:
    $add_ptr63 = $0 + $i_2 | 0;
    $n_3 = $n_2;
    $str_0 = $add_ptr63;
    label = 19;
    break;
   case 15:
    $arraydecay = $entity_name_buf | 0;
    $name = $key | 0;
    HEAP32[$name >> 2] = $arraydecay;
    $13 = HEAP8[$0] | 0;
    if (($13 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 1;
      $p_055_lcssa58 = $arraydecay;
      label = 16;
      break;
    } else if (($13 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 16:
    HEAP8[$p_055_lcssa58] = 0;
    $14 = $key;
    $call = _bsearch($14 | 0, 18184, 252, 8, 176) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $value = $call + 4 | 0;
    $15 = $value;
    $16 = HEAP32[$15 >> 2] | 0;
    $add_ptr82 = $0 + $i_356_lcssa57 | 0;
    $n_3 = $16;
    $str_0 = $add_ptr82;
    label = 19;
    break;
   case 18:
    $incdec_ptr86 = $entity_name_buf + 1 | 0;
    HEAP8[$arraydecay] = $13;
    $add_ptr71_1 = $0 + 1 | 0;
    $17 = HEAP8[$add_ptr71_1] | 0;
    if (($17 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 2;
      $p_055_lcssa58 = $incdec_ptr86;
      label = 16;
      break;
    } else if (($17 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 56;
      break;
    }
   case 19:
    HEAP32[$s >> 2] = $str_0;
    STACKTOP = __stackBase__;
    return $n_3 | 0;
   case 20:
    $mul50_1 = $add52 * 10 & -1;
    $sub51_1 = $mul50_1 - 48 | 0;
    $add52_1 = $sub51_1 + $conv43_1 | 0;
    $add_ptr42_2 = $0 + 3 | 0;
    $18 = HEAP8[$add_ptr42_2] | 0;
    $conv43_2 = $18 & 255;
    $_off_2 = $18 - 48 & 255;
    $19 = ($_off_2 & 255) < 10;
    if ($19) {
      label = 21;
      break;
    } else {
      $n_2 = $add52_1;
      $i_2 = 4;
      $byte_3 = $conv43_2;
      label = 13;
      break;
    }
   case 21:
    $mul50_2 = $add52_1 * 10 & -1;
    $sub51_2 = $mul50_2 - 48 | 0;
    $add52_2 = $sub51_2 + $conv43_2 | 0;
    $add_ptr42_3 = $0 + 4 | 0;
    $20 = HEAP8[$add_ptr42_3] | 0;
    $conv43_3 = $20 & 255;
    $_off_3 = $20 - 48 & 255;
    $21 = ($_off_3 & 255) < 10;
    if ($21) {
      label = 22;
      break;
    } else {
      $n_2 = $add52_2;
      $i_2 = 5;
      $byte_3 = $conv43_3;
      label = 13;
      break;
    }
   case 22:
    $mul50_3 = $add52_2 * 10 & -1;
    $sub51_3 = $mul50_3 - 48 | 0;
    $add52_3 = $sub51_3 + $conv43_3 | 0;
    $add_ptr42_4 = $0 + 5 | 0;
    $22 = HEAP8[$add_ptr42_4] | 0;
    $conv43_4 = $22 & 255;
    $_off_4 = $22 - 48 & 255;
    $23 = ($_off_4 & 255) < 10;
    if ($23) {
      label = 23;
      break;
    } else {
      $n_2 = $add52_3;
      $i_2 = 6;
      $byte_3 = $conv43_4;
      label = 13;
      break;
    }
   case 23:
    $mul50_4 = $add52_3 * 10 & -1;
    $sub51_4 = $mul50_4 - 48 | 0;
    $add52_4 = $sub51_4 + $conv43_4 | 0;
    $add_ptr42_5 = $0 + 6 | 0;
    $24 = HEAP8[$add_ptr42_5] | 0;
    $conv43_5 = $24 & 255;
    $_off_5 = $24 - 48 & 255;
    $25 = ($_off_5 & 255) < 10;
    if ($25) {
      label = 24;
      break;
    } else {
      $n_2 = $add52_4;
      $i_2 = 7;
      $byte_3 = $conv43_5;
      label = 13;
      break;
    }
   case 24:
    $mul50_5 = $add52_4 * 10 & -1;
    $sub51_5 = $mul50_5 - 48 | 0;
    $add52_5 = $sub51_5 + $conv43_5 | 0;
    $add_ptr42_6 = $0 + 7 | 0;
    $26 = HEAP8[$add_ptr42_6] | 0;
    $conv43_6 = $26 & 255;
    $_off_6 = $26 - 48 & 255;
    $27 = ($_off_6 & 255) < 10;
    if ($27) {
      label = 25;
      break;
    } else {
      $n_2 = $add52_5;
      $i_2 = 8;
      $byte_3 = $conv43_6;
      label = 13;
      break;
    }
   case 25:
    $mul50_6 = $add52_5 * 10 & -1;
    $sub51_6 = $mul50_6 - 48 | 0;
    $add52_6 = $sub51_6 + $conv43_6 | 0;
    $n_2 = $add52_6;
    $i_2 = 9;
    $byte_3 = $conv43_6;
    label = 13;
    break;
   case 26:
    $_off45_1 = $7 - 97 & 255;
    $28 = ($_off45_1 & 255) < 6;
    if ($28) {
      label = 29;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $_off46_1 = $7 - 48 & 255;
    $29 = ($_off46_1 & 255) < 10;
    if ($29) {
      label = 28;
      break;
    } else {
      $n_2 = $byte_1;
      $i_2 = 4;
      $byte_3 = $conv11_1;
      label = 13;
      break;
    }
   case 28:
    $sub32_1 = $conv11_1 - 48 | 0;
    $byte_1_1 = $sub32_1;
    label = 31;
    break;
   case 29:
    $add24_1 = $conv11_1 - 87 | 0;
    $byte_1_1 = $add24_1;
    label = 31;
    break;
   case 30:
    $add_1 = $conv11_1 - 55 | 0;
    $byte_1_1 = $add_1;
    label = 31;
    break;
   case 31:
    $mul_1 = $byte_1 << 4;
    $add36_1 = $byte_1_1 + $mul_1 | 0;
    $add_ptr10_2 = $0 + 4 | 0;
    $30 = HEAP8[$add_ptr10_2] | 0;
    $conv11_2 = $30 & 255;
    $_off44_2 = $30 - 65 & 255;
    $31 = ($_off44_2 & 255) < 6;
    if ($31) {
      label = 36;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $_off45_2 = $30 - 97 & 255;
    $32 = ($_off45_2 & 255) < 6;
    if ($32) {
      label = 35;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $_off46_2 = $30 - 48 & 255;
    $33 = ($_off46_2 & 255) < 10;
    if ($33) {
      label = 34;
      break;
    } else {
      $n_2 = $add36_1;
      $i_2 = 5;
      $byte_3 = $conv11_2;
      label = 13;
      break;
    }
   case 34:
    $sub32_2 = $conv11_2 - 48 | 0;
    $byte_1_2 = $sub32_2;
    label = 37;
    break;
   case 35:
    $add24_2 = $conv11_2 - 87 | 0;
    $byte_1_2 = $add24_2;
    label = 37;
    break;
   case 36:
    $add_2 = $conv11_2 - 55 | 0;
    $byte_1_2 = $add_2;
    label = 37;
    break;
   case 37:
    $mul_2 = $add36_1 << 4;
    $add36_2 = $byte_1_2 + $mul_2 | 0;
    $add_ptr10_3 = $0 + 5 | 0;
    $34 = HEAP8[$add_ptr10_3] | 0;
    $conv11_3 = $34 & 255;
    $_off44_3 = $34 - 65 & 255;
    $35 = ($_off44_3 & 255) < 6;
    if ($35) {
      label = 42;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $_off45_3 = $34 - 97 & 255;
    $36 = ($_off45_3 & 255) < 6;
    if ($36) {
      label = 41;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $_off46_3 = $34 - 48 & 255;
    $37 = ($_off46_3 & 255) < 10;
    if ($37) {
      label = 40;
      break;
    } else {
      $n_2 = $add36_2;
      $i_2 = 6;
      $byte_3 = $conv11_3;
      label = 13;
      break;
    }
   case 40:
    $sub32_3 = $conv11_3 - 48 | 0;
    $byte_1_3 = $sub32_3;
    label = 43;
    break;
   case 41:
    $add24_3 = $conv11_3 - 87 | 0;
    $byte_1_3 = $add24_3;
    label = 43;
    break;
   case 42:
    $add_3 = $conv11_3 - 55 | 0;
    $byte_1_3 = $add_3;
    label = 43;
    break;
   case 43:
    $mul_3 = $add36_2 << 4;
    $add36_3 = $byte_1_3 + $mul_3 | 0;
    $add_ptr10_4 = $0 + 6 | 0;
    $38 = HEAP8[$add_ptr10_4] | 0;
    $conv11_4 = $38 & 255;
    $_off44_4 = $38 - 65 & 255;
    $39 = ($_off44_4 & 255) < 6;
    if ($39) {
      label = 48;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $_off45_4 = $38 - 97 & 255;
    $40 = ($_off45_4 & 255) < 6;
    if ($40) {
      label = 47;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $_off46_4 = $38 - 48 & 255;
    $41 = ($_off46_4 & 255) < 10;
    if ($41) {
      label = 46;
      break;
    } else {
      $n_2 = $add36_3;
      $i_2 = 7;
      $byte_3 = $conv11_4;
      label = 13;
      break;
    }
   case 46:
    $sub32_4 = $conv11_4 - 48 | 0;
    $byte_1_4 = $sub32_4;
    label = 49;
    break;
   case 47:
    $add24_4 = $conv11_4 - 87 | 0;
    $byte_1_4 = $add24_4;
    label = 49;
    break;
   case 48:
    $add_4 = $conv11_4 - 55 | 0;
    $byte_1_4 = $add_4;
    label = 49;
    break;
   case 49:
    $mul_4 = $add36_3 << 4;
    $add36_4 = $byte_1_4 + $mul_4 | 0;
    $add_ptr10_5 = $0 + 7 | 0;
    $42 = HEAP8[$add_ptr10_5] | 0;
    $conv11_5 = $42 & 255;
    $_off44_5 = $42 - 65 & 255;
    $43 = ($_off44_5 & 255) < 6;
    if ($43) {
      label = 54;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $_off45_5 = $42 - 97 & 255;
    $44 = ($_off45_5 & 255) < 6;
    if ($44) {
      label = 53;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $_off46_5 = $42 - 48 & 255;
    $45 = ($_off46_5 & 255) < 10;
    if ($45) {
      label = 52;
      break;
    } else {
      $n_2 = $add36_4;
      $i_2 = 8;
      $byte_3 = $conv11_5;
      label = 13;
      break;
    }
   case 52:
    $sub32_5 = $conv11_5 - 48 | 0;
    $byte_1_5 = $sub32_5;
    label = 55;
    break;
   case 53:
    $add24_5 = $conv11_5 - 87 | 0;
    $byte_1_5 = $add24_5;
    label = 55;
    break;
   case 54:
    $add_5 = $conv11_5 - 55 | 0;
    $byte_1_5 = $add_5;
    label = 55;
    break;
   case 55:
    $mul_5 = $add36_4 << 4;
    $add36_5 = $byte_1_5 + $mul_5 | 0;
    $n_2 = $add36_5;
    $i_2 = 9;
    $byte_3 = $byte_1_5;
    label = 13;
    break;
   case 56:
    $incdec_ptr86_1 = $entity_name_buf + 2 | 0;
    HEAP8[$incdec_ptr86] = $17;
    $add_ptr71_2 = $0 + 2 | 0;
    $46 = HEAP8[$add_ptr71_2] | 0;
    if (($46 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 3;
      $p_055_lcssa58 = $incdec_ptr86_1;
      label = 16;
      break;
    } else if (($46 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $incdec_ptr86_2 = $entity_name_buf + 3 | 0;
    HEAP8[$incdec_ptr86_1] = $46;
    $add_ptr71_3 = $0 + 3 | 0;
    $47 = HEAP8[$add_ptr71_3] | 0;
    if (($47 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 4;
      $p_055_lcssa58 = $incdec_ptr86_2;
      label = 16;
      break;
    } else if (($47 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $incdec_ptr86_3 = $entity_name_buf + 4 | 0;
    HEAP8[$incdec_ptr86_2] = $47;
    $add_ptr71_4 = $0 + 4 | 0;
    $48 = HEAP8[$add_ptr71_4] | 0;
    if (($48 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 5;
      $p_055_lcssa58 = $incdec_ptr86_3;
      label = 16;
      break;
    } else if (($48 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $incdec_ptr86_4 = $entity_name_buf + 5 | 0;
    HEAP8[$incdec_ptr86_3] = $48;
    $add_ptr71_5 = $0 + 5 | 0;
    $49 = HEAP8[$add_ptr71_5] | 0;
    if (($49 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 6;
      $p_055_lcssa58 = $incdec_ptr86_4;
      label = 16;
      break;
    } else if (($49 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $incdec_ptr86_5 = $entity_name_buf + 6 | 0;
    HEAP8[$incdec_ptr86_4] = $49;
    $add_ptr71_6 = $0 + 6 | 0;
    $50 = HEAP8[$add_ptr71_6] | 0;
    if (($50 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 7;
      $p_055_lcssa58 = $incdec_ptr86_5;
      label = 16;
      break;
    } else if (($50 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    $incdec_ptr86_6 = $entity_name_buf + 7 | 0;
    HEAP8[$incdec_ptr86_5] = $50;
    $add_ptr71_7 = $0 + 7 | 0;
    $51 = HEAP8[$add_ptr71_7] | 0;
    if (($51 << 24 >> 24 | 0) == 59) {
      $i_356_lcssa57 = 8;
      $p_055_lcssa58 = $incdec_ptr86_6;
      label = 16;
      break;
    } else if (($51 << 24 >> 24 | 0) == 0) {
      $n_3 = 0;
      $str_0 = $0;
      label = 19;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    HEAP8[$incdec_ptr86_6] = $51;
    $n_3 = 0;
    $str_0 = $0;
    label = 19;
    break;
  }
  return 0;
}
function _latin1ToUTF8($s) {
  $s = $s | 0;
  var $s_addr = 0, $xb = 0, $buf = 0, $arraydecay = 0, $0 = 0, $incdec_ptr10 = 0, $1 = 0, $tobool11 = 0, $ptr = 0, $eptr = 0, $ptr18 = 0, $eptr19 = 0, $2 = 0, $conv = 0, $cmp = 0, $call = 0, $tobool2 = 0, $_call = 0, $v_0 = 0, $cmp5 = 0, $3 = 0, $4 = 0, $cmp8 = 0, $call10 = 0, $conv11 = 0, $5 = 0, $incdec_ptr13 = 0, $cmp15 = 0, $6 = 0, $7 = 0, $cmp20 = 0, $call23 = 0, $shr = 0, $or = 0, $conv29 = 0, $8 = 0, $incdec_ptr31 = 0, $9 = 0, $10 = 0, $cmp35 = 0, $call38 = 0, $conv43 = 0, $or44 = 0, $conv45 = 0, $11 = 0, $incdec_ptr47 = 0, $12 = 0, $incdec_ptr = 0, $13 = 0, $tobool = 0, $call55 = 0, $shr59 = 0, $or62 = 0, $conv63 = 0, $14 = 0, $incdec_ptr65 = 0, $15 = 0, $16 = 0, $cmp69 = 0, $call72 = 0, $shr76 = 0, $conv79 = 0, $or80 = 0, $conv81 = 0, $17 = 0, $incdec_ptr83 = 0, $18 = 0, $19 = 0, $cmp87 = 0, $call90 = 0, $conv96 = 0, $or97 = 0, $conv98 = 0, $20 = 0, $incdec_ptr100 = 0, $ptr104 = 0, $21 = 0, $eptr105 = 0, $22 = 0, $cmp106 = 0, $call109 = 0, $23 = 0, $buf115 = 0, $24 = 0, $call117 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1048 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s_addr = __stackBase__ | 0;
    $xb = __stackBase__ + 8 | 0;
    $buf = __stackBase__ + 24 | 0;
    HEAP32[$s_addr >> 2] = $s;
    $arraydecay = $buf | 0;
    _agxbinit($xb, 1024, $arraydecay);
    $0 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr10 = $0 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr10;
    $1 = HEAP8[$0] | 0;
    $tobool11 = $1 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 24;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $ptr = $xb + 4 | 0;
    $eptr = $xb + 8 | 0;
    $ptr18 = $xb + 4 | 0;
    $eptr19 = $xb + 8 | 0;
    $2 = $1;
    label = 4;
    break;
   case 4:
    $conv = $2 & 255;
    $cmp = $2 << 24 >> 24 == 38;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $v_0 = $conv;
      label = 6;
      break;
    }
   case 5:
    $call = _htmlEntity($s_addr) | 0;
    $tobool2 = ($call | 0) == 0;
    $_call = $tobool2 ? 38 : $call;
    $v_0 = $_call;
    label = 6;
    break;
   case 6:
    $cmp5 = $v_0 >>> 0 < 127;
    if ($cmp5) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $3 = HEAP32[$ptr >> 2] | 0;
    $4 = HEAP32[$eptr >> 2] | 0;
    $cmp8 = $3 >>> 0 < $4 >>> 0;
    if ($cmp8) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call10 = _agxbmore($xb, 1) | 0;
    label = 9;
    break;
   case 9:
    $conv11 = $v_0 & 255;
    $5 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr13 = $5 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr13;
    HEAP8[$5] = $conv11;
    label = 16;
    break;
   case 10:
    $cmp15 = $v_0 >>> 0 < 2047;
    $6 = HEAP32[$ptr18 >> 2] | 0;
    $7 = HEAP32[$eptr19 >> 2] | 0;
    $cmp20 = $6 >>> 0 >= $7 >>> 0;
    if ($cmp15) {
      label = 11;
      break;
    } else {
      label = 17;
      break;
    }
   case 11:
    if ($cmp20) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $call23 = _agxbmore($xb, 1) | 0;
    label = 13;
    break;
   case 13:
    $shr = $v_0 >>> 6;
    $or = $shr | 192;
    $conv29 = $or & 255;
    $8 = HEAP32[$ptr18 >> 2] | 0;
    $incdec_ptr31 = $8 + 1 | 0;
    HEAP32[$ptr18 >> 2] = $incdec_ptr31;
    HEAP8[$8] = $conv29;
    $9 = HEAP32[$ptr18 >> 2] | 0;
    $10 = HEAP32[$eptr19 >> 2] | 0;
    $cmp35 = $9 >>> 0 < $10 >>> 0;
    if ($cmp35) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call38 = _agxbmore($xb, 1) | 0;
    label = 15;
    break;
   case 15:
    $conv43 = $v_0 & 63;
    $or44 = $conv43 | 128;
    $conv45 = $or44 & 255;
    $11 = HEAP32[$ptr18 >> 2] | 0;
    $incdec_ptr47 = $11 + 1 | 0;
    HEAP32[$ptr18 >> 2] = $incdec_ptr47;
    HEAP8[$11] = $conv45;
    label = 16;
    break;
   case 16:
    $12 = HEAP32[$s_addr >> 2] | 0;
    $incdec_ptr = $12 + 1 | 0;
    HEAP32[$s_addr >> 2] = $incdec_ptr;
    $13 = HEAP8[$12] | 0;
    $tobool = $13 << 24 >> 24 == 0;
    if ($tobool) {
      label = 24;
      break;
    } else {
      $2 = $13;
      label = 4;
      break;
    }
   case 17:
    if ($cmp20) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $call55 = _agxbmore($xb, 1) | 0;
    label = 19;
    break;
   case 19:
    $shr59 = $v_0 >>> 12;
    $or62 = $shr59 | 224;
    $conv63 = $or62 & 255;
    $14 = HEAP32[$ptr18 >> 2] | 0;
    $incdec_ptr65 = $14 + 1 | 0;
    HEAP32[$ptr18 >> 2] = $incdec_ptr65;
    HEAP8[$14] = $conv63;
    $15 = HEAP32[$ptr18 >> 2] | 0;
    $16 = HEAP32[$eptr19 >> 2] | 0;
    $cmp69 = $15 >>> 0 < $16 >>> 0;
    if ($cmp69) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call72 = _agxbmore($xb, 1) | 0;
    label = 21;
    break;
   case 21:
    $shr76 = $v_0 >>> 6;
    $conv79 = $shr76 & 63;
    $or80 = $conv79 | 128;
    $conv81 = $or80 & 255;
    $17 = HEAP32[$ptr18 >> 2] | 0;
    $incdec_ptr83 = $17 + 1 | 0;
    HEAP32[$ptr18 >> 2] = $incdec_ptr83;
    HEAP8[$17] = $conv81;
    $18 = HEAP32[$ptr18 >> 2] | 0;
    $19 = HEAP32[$eptr19 >> 2] | 0;
    $cmp87 = $18 >>> 0 < $19 >>> 0;
    if ($cmp87) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $call90 = _agxbmore($xb, 1) | 0;
    label = 23;
    break;
   case 23:
    $conv96 = $v_0 & 63;
    $or97 = $conv96 | 128;
    $conv98 = $or97 & 255;
    $20 = HEAP32[$ptr18 >> 2] | 0;
    $incdec_ptr100 = $20 + 1 | 0;
    HEAP32[$ptr18 >> 2] = $incdec_ptr100;
    HEAP8[$20] = $conv98;
    label = 16;
    break;
   case 24:
    $ptr104 = $xb + 4 | 0;
    $21 = HEAP32[$ptr104 >> 2] | 0;
    $eptr105 = $xb + 8 | 0;
    $22 = HEAP32[$eptr105 >> 2] | 0;
    $cmp106 = $21 >>> 0 < $22 >>> 0;
    if ($cmp106) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $call109 = _agxbmore($xb, 1) | 0;
    label = 26;
    break;
   case 26:
    $23 = HEAP32[$ptr104 >> 2] | 0;
    HEAP8[$23] = 0;
    $buf115 = $xb | 0;
    $24 = HEAP32[$buf115 >> 2] | 0;
    HEAP32[$ptr104 >> 2] = $24;
    $call117 = _strdup($24 | 0) | 0;
    _agxbfree($xb);
    STACKTOP = __stackBase__;
    return $call117 | 0;
  }
  return 0;
}
function _utf8ToLatin1($s) {
  $s = $s | 0;
  var $xb = 0, $buf = 0, $arraydecay = 0, $0 = 0, $tobool7 = 0, $ptr = 0, $eptr = 0, $ptr14 = 0, $eptr15 = 0, $1 = 0, $s_pn = 0, $incdec_ptr10 = 0, $cmp = 0, $2 = 0, $3 = 0, $cmp2 = 0, $call = 0, $4 = 0, $incdec_ptr5 = 0, $and = 0, $incdec_ptr9 = 0, $5 = 0, $and12 = 0, $or = 0, $6 = 0, $7 = 0, $cmp16 = 0, $call19 = 0, $8 = 0, $incdec_ptr24 = 0, $s_addr_0_be = 0, $9 = 0, $tobool = 0, $ptr26 = 0, $10 = 0, $eptr27 = 0, $11 = 0, $cmp28 = 0, $call31 = 0, $12 = 0, $buf37 = 0, $13 = 0, $call39 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1040 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $xb = __stackBase__ | 0;
    $buf = __stackBase__ + 16 | 0;
    $arraydecay = $buf | 0;
    _agxbinit($xb, 1024, $arraydecay);
    $0 = HEAP8[$s] | 0;
    $tobool7 = $0 << 24 >> 24 == 0;
    if ($tobool7) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $ptr = $xb + 4 | 0;
    $eptr = $xb + 8 | 0;
    $ptr14 = $xb + 4 | 0;
    $eptr15 = $xb + 8 | 0;
    $s_pn = $s;
    $1 = $0;
    label = 4;
    break;
   case 4:
    $incdec_ptr10 = $s_pn + 1 | 0;
    $cmp = ($1 & 255) < 127;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $2 = HEAP32[$ptr >> 2] | 0;
    $3 = HEAP32[$eptr >> 2] | 0;
    $cmp2 = $2 >>> 0 < $3 >>> 0;
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call = _agxbmore($xb, 1) | 0;
    label = 7;
    break;
   case 7:
    $4 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr5 = $4 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr5;
    HEAP8[$4] = $1;
    $s_addr_0_be = $incdec_ptr10;
    label = 11;
    break;
   case 8:
    $and = $1 << 6;
    $incdec_ptr9 = $s_pn + 2 | 0;
    $5 = HEAP8[$incdec_ptr10] | 0;
    $and12 = $5 & 63;
    $or = $and12 | $and;
    $6 = HEAP32[$ptr14 >> 2] | 0;
    $7 = HEAP32[$eptr15 >> 2] | 0;
    $cmp16 = $6 >>> 0 < $7 >>> 0;
    if ($cmp16) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call19 = _agxbmore($xb, 1) | 0;
    label = 10;
    break;
   case 10:
    $8 = HEAP32[$ptr14 >> 2] | 0;
    $incdec_ptr24 = $8 + 1 | 0;
    HEAP32[$ptr14 >> 2] = $incdec_ptr24;
    HEAP8[$8] = $or;
    $s_addr_0_be = $incdec_ptr9;
    label = 11;
    break;
   case 11:
    $9 = HEAP8[$s_addr_0_be] | 0;
    $tobool = $9 << 24 >> 24 == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      $s_pn = $s_addr_0_be;
      $1 = $9;
      label = 4;
      break;
    }
   case 12:
    $ptr26 = $xb + 4 | 0;
    $10 = HEAP32[$ptr26 >> 2] | 0;
    $eptr27 = $xb + 8 | 0;
    $11 = HEAP32[$eptr27 >> 2] | 0;
    $cmp28 = $10 >>> 0 < $11 >>> 0;
    if ($cmp28) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $call31 = _agxbmore($xb, 1) | 0;
    label = 14;
    break;
   case 14:
    $12 = HEAP32[$ptr26 >> 2] | 0;
    HEAP8[$12] = 0;
    $buf37 = $xb | 0;
    $13 = HEAP32[$buf37 >> 2] | 0;
    HEAP32[$ptr26 >> 2] = $13;
    $call39 = _strdup($13 | 0) | 0;
    _agxbfree($xb);
    STACKTOP = __stackBase__;
    return $call39 | 0;
  }
  return 0;
}
function _overlap_node($n, $b) {
  $n = $n | 0;
  $b = $b | 0;
  var $ictxt = 0, $p = 0, $agg_tmp = 0, $UR = 0, $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x5 = 0, $2 = 0.0, $LL6 = 0, $x7 = 0, $3 = 0.0, $cmp8 = 0, $y = 0, $4 = 0.0, $y14 = 0, $5 = 0.0, $cmp15 = 0, $y20 = 0, $6 = 0.0, $y22 = 0, $7 = 0.0, $cmp23 = 0, $coord = 0, $8 = 0, $n_c = 0, $bp = 0, $shape = 0, $9 = 0, $fns = 0, $10 = 0, $insidefn = 0, $11 = 0, $call = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ictxt = __stackBase__ | 0;
    $p = __stackBase__ + 8 | 0;
    $agg_tmp = __stackBase__ + 24 | 0;
    $UR = $b + 16 | 0;
    $x = $UR | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $n + 64 | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 < $1;
    if ($cmp) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x5 = $n + 80 | 0;
    $2 = +HEAPF64[$x5 >> 3];
    $LL6 = $b | 0;
    $x7 = $b | 0;
    $3 = +HEAPF64[$x7 >> 3];
    $cmp8 = $2 < $3;
    if ($cmp8) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $b + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y14 = $n + 72 | 0;
    $5 = +HEAPF64[$y14 >> 3];
    $cmp15 = $4 < $5;
    if ($cmp15) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y20 = $n + 88 | 0;
    $6 = +HEAPF64[$y20 >> 3];
    $y22 = $b + 8 | 0;
    $7 = +HEAPF64[$y22 >> 3];
    $cmp23 = $6 < $7;
    if ($cmp23) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $coord = $n + 32 | 0;
    _mid_pointf($agg_tmp, $UR, $LL6);
    _sub_pointf($p, $coord, $agg_tmp);
    $8 = $ictxt | 0;
    $n_c = $n;
    HEAP32[$8 >> 2] = $n_c;
    $bp = $ictxt + 4 | 0;
    HEAP32[$bp >> 2] = 0;
    $shape = $n + 24 | 0;
    $9 = HEAP32[$shape >> 2] | 0;
    $fns = $9 + 4 | 0;
    $10 = HEAP32[$fns >> 2] | 0;
    $insidefn = $10 + 12 | 0;
    $11 = HEAP32[$insidefn >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$11 & 1023]($ictxt, $p) | 0;
    $retval_0 = $call;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _overlap_label($lp, $b) {
  $lp = $lp | 0;
  $b = $b | 0;
  var $s = 0, $tmp = 0, $tmp6 = 0, $x = 0, $0 = 0.0, $div = 0.0, $x1 = 0, $y = 0, $1 = 0.0, $div3 = 0.0, $y4 = 0, $pos = 0, $bb_sroa_0_0__idx = 0, $bb_sroa_0_0_copyload = 0.0, $bb_sroa_1_8__idx1 = 0, $bb_sroa_1_8_copyload = 0.0, $bb_sroa_3_24__idx2 = 0, $bb_sroa_3_24_copyload = 0.0, $x8 = 0, $2 = 0.0, $cmp = 0, $bb_sroa_2_16__idx = 0, $bb_sroa_2_16_copyload = 0.0, $x14 = 0, $3 = 0.0, $cmp15 = 0, $y18 = 0, $4 = 0.0, $cmp21 = 0, $y25 = 0, $5 = 0.0, $cmp26 = 0, $phitmp = 0, $6 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s = __stackBase__ | 0;
    $tmp = __stackBase__ + 16 | 0;
    $tmp6 = __stackBase__ + 32 | 0;
    $x = $lp + 24 | 0;
    $0 = +HEAPF64[$x >> 3];
    $div = $0 * .5;
    $x1 = $s | 0;
    HEAPF64[$x1 >> 3] = $div;
    $y = $lp + 32 | 0;
    $1 = +HEAPF64[$y >> 3];
    $div3 = $1 * .5;
    $y4 = $s + 8 | 0;
    HEAPF64[$y4 >> 3] = $div3;
    $pos = $lp + 56 | 0;
    _sub_pointf($tmp, $pos, $s);
    $bb_sroa_0_0__idx = $tmp | 0;
    $bb_sroa_0_0_copyload = +HEAPF64[$bb_sroa_0_0__idx >> 3];
    $bb_sroa_1_8__idx1 = $tmp + 8 | 0;
    $bb_sroa_1_8_copyload = +HEAPF64[$bb_sroa_1_8__idx1 >> 3];
    _add_pointf($tmp6, $pos, $s);
    $bb_sroa_3_24__idx2 = $tmp6 + 8 | 0;
    $bb_sroa_3_24_copyload = +HEAPF64[$bb_sroa_3_24__idx2 >> 3];
    $x8 = $b + 16 | 0;
    $2 = +HEAPF64[$x8 >> 3];
    $cmp = $2 < $bb_sroa_0_0_copyload;
    if ($cmp) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $bb_sroa_2_16__idx = $tmp6 | 0;
    $bb_sroa_2_16_copyload = +HEAPF64[$bb_sroa_2_16__idx >> 3];
    $x14 = $b | 0;
    $3 = +HEAPF64[$x14 >> 3];
    $cmp15 = $bb_sroa_2_16_copyload < $3;
    if ($cmp15) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y18 = $b + 24 | 0;
    $4 = +HEAPF64[$y18 >> 3];
    $cmp21 = $4 < $bb_sroa_1_8_copyload;
    if ($cmp21) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y25 = $b + 8 | 0;
    $5 = +HEAPF64[$y25 >> 3];
    $cmp26 = $bb_sroa_3_24_copyload >= $5;
    $phitmp = $cmp26 & 1;
    $6 = $phitmp;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $6 | 0;
  }
  return 0;
}
function _overlap_edge($e, $b) {
  $e = $e | 0;
  $b = $b | 0;
  var $spl1 = 0, $0 = 0, $tobool = 0, $bb = 0, $call = 0, $tobool2 = 0, $size = 0, $list = 0, $i_0 = 0, $1 = 0, $cmp = 0, $2 = 0, $arrayidx = 0, $call3 = 0, $tobool4 = 0, $inc = 0, $label = 0, $3 = 0, $tobool8 = 0, $call10 = 0, $tobool11 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $spl1 = $e + 24 | 0;
    $0 = HEAP32[$spl1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $bb = $0 + 8 | 0;
    $call = _boxf_overlap246($bb, $b) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $size = $0 + 4 | 0;
    $list = $0 | 0;
    $i_0 = 0;
    label = 5;
    break;
   case 5:
    $1 = HEAP32[$size >> 2] | 0;
    $cmp = ($i_0 | 0) < ($1 | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $2 = HEAP32[$list >> 2] | 0;
    $arrayidx = $2 + ($i_0 * 48 & -1) | 0;
    $call3 = _overlap_bezier($arrayidx, $b) | 0;
    $tobool4 = $call3 << 24 >> 24 == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool4) {
      $i_0 = $inc;
      label = 5;
      break;
    } else {
      $retval_0 = 1;
      label = 10;
      break;
    }
   case 7:
    $label = $e + 112 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $tobool8 = ($3 | 0) == 0;
    if ($tobool8) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call10 = _overlap_label($3, $b) | 0;
    $tobool11 = $call10 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 10;
      break;
    }
   case 9:
    $retval_0 = 0;
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _overlap_bezier($bz, $b) {
  $bz = $bz | 0;
  $b = $b | 0;
  var $p = 0, $u = 0, $size = 0, $0 = 0, $tobool = 0, $list = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $cmp3 = 0, $5 = 0, $6 = 0, $7 = 0, $i_04 = 0, $arrayidx3 = 0, $8 = 0, $call = 0, $cmp4 = 0, $inc = 0, $cmp = 0, $sflag = 0, $9 = 0, $tobool5 = 0, $sp = 0, $10 = 0, $call10 = 0, $tobool11 = 0, $eflag = 0, $11 = 0, $tobool15 = 0, $ep = 0, $12 = 0, $sub = 0, $13 = 0, $arrayidx19 = 0, $call21 = 0, $tobool22 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $bz;
  $bz = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  _memcpy($bz, tempParam, 48);
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = __stackBase__ | 0;
    $u = __stackBase__ + 16 | 0;
    $size = $bz + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(158664, 1634, 163968, 115032);
    return 0;
   case 4:
    $list = $bz | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = $u;
    $3 = $1;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $cmp3 = ($4 | 0) > 1;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $5 = HEAP32[$list >> 2] | 0;
    $6 = $p;
    $7 = HEAP32[$size >> 2] | 0;
    $i_04 = 1;
    label = 6;
    break;
   case 6:
    $arrayidx3 = $5 + ($i_04 << 4) | 0;
    $8 = $arrayidx3;
    HEAP32[$6 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $call = _lineToBox($p, $u, $b) | 0;
    $cmp4 = ($call | 0) == -1;
    if ($cmp4) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 13;
      break;
    }
   case 7:
    HEAP32[$2 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    $inc = $i_04 + 1 | 0;
    $cmp = ($inc | 0) < ($7 | 0);
    if ($cmp) {
      $i_04 = $inc;
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $sflag = $bz + 8 | 0;
    $9 = HEAP32[$sflag >> 2] | 0;
    $tobool5 = ($9 | 0) == 0;
    if ($tobool5) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $sp = $bz + 16 | 0;
    $10 = HEAP32[$list >> 2] | 0;
    $call10 = _overlap_arrow($sp, $10, $9, $b) | 0;
    $tobool11 = $call10 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 10;
      break;
    } else {
      $retval_0 = 1;
      label = 13;
      break;
    }
   case 10:
    $eflag = $bz + 12 | 0;
    $11 = HEAP32[$eflag >> 2] | 0;
    $tobool15 = ($11 | 0) == 0;
    if ($tobool15) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $ep = $bz + 32 | 0;
    $12 = HEAP32[$size >> 2] | 0;
    $sub = $12 - 1 | 0;
    $13 = HEAP32[$list >> 2] | 0;
    $arrayidx19 = $13 + ($sub << 4) | 0;
    $call21 = _overlap_arrow($ep, $arrayidx19, $11, $b) | 0;
    $tobool22 = $call21 << 24 >> 24 == 0;
    if ($tobool22) {
      label = 12;
      break;
    } else {
      $retval_0 = 1;
      label = 13;
      break;
    }
   case 12:
    $retval_0 = 0;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gv_nodesize($n, $flip) {
  $n = $n | 0;
  $flip = $flip | 0;
  var $tobool = 0, $height = 0, $0 = 0.0, $mul = 0.0, $div = 0.0, $rw = 0, $lw = 0, $width = 0, $1 = 0.0, $mul4 = 0.0, $ht = 0, $width7 = 0, $2 = 0.0, $mul8 = 0.0, $div9 = 0.0, $rw11 = 0, $lw13 = 0, $height15 = 0, $3 = 0.0, $mul16 = 0.0, $ht18 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = $flip << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $height = $n + 56 | 0;
    $0 = +HEAPF64[$height >> 3];
    $mul = $0 * 72.0;
    $div = $mul * .5;
    $rw = $n + 112 | 0;
    HEAPF64[$rw >> 3] = $div;
    $lw = $n + 104 | 0;
    HEAPF64[$lw >> 3] = $div;
    $width = $n + 48 | 0;
    $1 = +HEAPF64[$width >> 3];
    $mul4 = $1 * 72.0;
    $ht = $n + 96 | 0;
    HEAPF64[$ht >> 3] = $mul4;
    label = 5;
    break;
   case 4:
    $width7 = $n + 48 | 0;
    $2 = +HEAPF64[$width7 >> 3];
    $mul8 = $2 * 72.0;
    $div9 = $mul8 * .5;
    $rw11 = $n + 112 | 0;
    HEAPF64[$rw11 >> 3] = $div9;
    $lw13 = $n + 104 | 0;
    HEAPF64[$lw13 >> 3] = $div9;
    $height15 = $n + 56 | 0;
    $3 = +HEAPF64[$height15 >> 3];
    $mul16 = $3 * 72.0;
    $ht18 = $n + 96 | 0;
    HEAPF64[$ht18 >> 3] = $mul16;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _edgeType($s, $dflt) {
  $s = $s | 0;
  $dflt = $dflt | 0;
  var $tobool = 0, $0 = 0, $cmp = 0, $conv = 0, $add_ptr = 0, $call = 0, $tobool5 = 0, $_ = 0, $add_ptr9 = 0, $call10 = 0, $tobool11 = 0, $_17 = 0, $add_ptr15 = 0, $call16 = 0, $tobool17 = 0, $_18 = 0, $add_ptr21 = 0, $call22 = 0, $tobool23 = 0, $call27 = 0, $tobool28 = 0, $add_ptr32 = 0, $call33 = 0, $tobool34 = 0, $_19 = 0, $add_ptr38 = 0, $call39 = 0, $tobool40 = 0, $_20 = 0, $add_ptr44 = 0, $call45 = 0, $tobool46 = 0, $_21 = 0, $add_ptr50 = 0, $call51 = 0, $tobool52 = 0, $_22 = 0, $add_ptr56 = 0, $call57 = 0, $tobool58 = 0, $_23 = 0, $et_0 = 0, $tobool61 = 0, $call63 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($s | 0) == 0;
    if ($tobool) {
      $retval_0 = $dflt;
      label = 18;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$s] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = $dflt;
      label = 18;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $0 << 24 >> 24;
    if (($conv | 0) == 49 | ($conv | 0) == 50 | ($conv | 0) == 51 | ($conv | 0) == 52 | ($conv | 0) == 53 | ($conv | 0) == 54 | ($conv | 0) == 55 | ($conv | 0) == 56 | ($conv | 0) == 57) {
      label = 5;
      break;
    } else if (($conv | 0) == 99 | ($conv | 0) == 67) {
      label = 6;
      break;
    } else if (($conv | 0) == 102 | ($conv | 0) == 70) {
      label = 7;
      break;
    } else if (($conv | 0) == 108 | ($conv | 0) == 76) {
      label = 8;
      break;
    } else if (($conv | 0) == 110 | ($conv | 0) == 78) {
      label = 9;
      break;
    } else if (($conv | 0) == 111 | ($conv | 0) == 79) {
      label = 11;
      break;
    } else if (($conv | 0) == 112 | ($conv | 0) == 80) {
      label = 12;
      break;
    } else if (($conv | 0) == 115 | ($conv | 0) == 83) {
      label = 13;
      break;
    } else if (($conv | 0) == 116 | ($conv | 0) == 84) {
      label = 14;
      break;
    } else if (($conv | 0) == 121 | ($conv | 0) == 89) {
      label = 15;
      break;
    } else if (($conv | 0) == 48) {
      $retval_0 = 2;
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 5:
    $retval_0 = 8;
    label = 18;
    break;
   case 6:
    $add_ptr = $s + 1 | 0;
    $call = _strcasecmp($add_ptr, 121872) | 0;
    $tobool5 = ($call | 0) == 0;
    $_ = $tobool5 ? 10 : 0;
    $et_0 = $_;
    label = 16;
    break;
   case 7:
    $add_ptr9 = $s + 1 | 0;
    $call10 = _strcasecmp($add_ptr9, 121344) | 0;
    $tobool11 = ($call10 | 0) == 0;
    $_17 = $tobool11 ? 2 : 0;
    $et_0 = $_17;
    label = 16;
    break;
   case 8:
    $add_ptr15 = $s + 1 | 0;
    $call16 = _strcasecmp($add_ptr15, 120616) | 0;
    $tobool17 = ($call16 | 0) == 0;
    $_18 = $tobool17 ? 2 : 0;
    $et_0 = $_18;
    label = 16;
    break;
   case 9:
    $add_ptr21 = $s + 1 | 0;
    $call22 = _strcasecmp($add_ptr21, 119920) | 0;
    $tobool23 = ($call22 | 0) == 0;
    if ($tobool23) {
      $retval_0 = 0;
      label = 18;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call27 = _strcasecmp($add_ptr21, 119384) | 0;
    $tobool28 = ($call27 | 0) == 0;
    if ($tobool28) {
      $retval_0 = 2;
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 11:
    $add_ptr32 = $s + 1 | 0;
    $call33 = _strcasecmp($add_ptr32, 118872) | 0;
    $tobool34 = ($call33 | 0) == 0;
    $_19 = $tobool34 ? 6 : 0;
    $et_0 = $_19;
    label = 16;
    break;
   case 12:
    $add_ptr38 = $s + 1 | 0;
    $call39 = _strcasecmp($add_ptr38, 118416) | 0;
    $tobool40 = ($call39 | 0) == 0;
    $_20 = $tobool40 ? 4 : 0;
    $et_0 = $_20;
    label = 16;
    break;
   case 13:
    $add_ptr44 = $s + 1 | 0;
    $call45 = _strcasecmp($add_ptr44, 117760) | 0;
    $tobool46 = ($call45 | 0) == 0;
    $_21 = $tobool46 ? 8 : 0;
    $et_0 = $_21;
    label = 16;
    break;
   case 14:
    $add_ptr50 = $s + 1 | 0;
    $call51 = _strcasecmp($add_ptr50, 117080) | 0;
    $tobool52 = ($call51 | 0) == 0;
    $_22 = $tobool52 ? 8 : 0;
    $et_0 = $_22;
    label = 16;
    break;
   case 15:
    $add_ptr56 = $s + 1 | 0;
    $call57 = _strcasecmp($add_ptr56, 116520) | 0;
    $tobool58 = ($call57 | 0) == 0;
    $_23 = $tobool58 ? 8 : 0;
    $et_0 = $_23;
    label = 16;
    break;
   case 16:
    $tobool61 = ($et_0 | 0) == 0;
    if ($tobool61) {
      label = 17;
      break;
    } else {
      $retval_0 = $et_0;
      label = 18;
      break;
    }
   case 17:
    $call63 = _agerr(0, 115984, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    $retval_0 = $dflt;
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _setEdgeType($g, $dflt) {
  $g = $g | 0;
  $dflt = $dflt | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $cmp = 0, $call4 = 0, $et_0 = 0, $flags = 0, $2 = 0, $conv6 = 0, $or = 0, $conv7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 115568) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $et_0 = $dflt;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    if ($cmp) {
      $et_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call4 = _edgeType($call, $dflt) | 0;
    $et_0 = $call4;
    label = 5;
    break;
   case 5:
    $flags = $g + 168 | 0;
    $2 = HEAP16[$flags >> 1] | 0;
    $conv6 = $2 & 65535;
    $or = $conv6 | $et_0;
    $conv7 = $or & 65535;
    HEAP16[$flags >> 1] = $conv7;
    return;
  }
}
function _gv_free_splines($e) {
  $e = $e | 0;
  var $spl = 0, $0 = 0, $tobool = 0, $1 = 0, $size8 = 0, $2 = 0, $cmp9 = 0, $list10 = 0, $3 = 0, $4 = 0, $i_011 = 0, $list5 = 0, $5 = 0, $6 = 0, $inc = 0, $7 = 0, $size = 0, $8 = 0, $cmp = 0, $list = 0, $9 = 0, $_lcssa = 0, $10 = 0, $11 = 0, $12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $spl = $e + 24 | 0;
    $0 = HEAP32[$spl >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[$spl >> 2] | 0;
    $size8 = $1 + 4 | 0;
    $2 = HEAP32[$size8 >> 2] | 0;
    $cmp9 = ($2 | 0) > 0;
    $list10 = $1 | 0;
    $3 = HEAP32[$list10 >> 2] | 0;
    if ($cmp9) {
      $i_011 = 0;
      $4 = $3;
      label = 4;
      break;
    } else {
      $_lcssa = $3;
      label = 5;
      break;
    }
   case 4:
    $list5 = $4 + ($i_011 * 48 & -1) | 0;
    $5 = HEAP32[$list5 >> 2] | 0;
    $6 = $5;
    _free($6);
    $inc = $i_011 + 1 | 0;
    $7 = HEAP32[$spl >> 2] | 0;
    $size = $7 + 4 | 0;
    $8 = HEAP32[$size >> 2] | 0;
    $cmp = ($inc | 0) < ($8 | 0);
    $list = $7 | 0;
    $9 = HEAP32[$list >> 2] | 0;
    if ($cmp) {
      $i_011 = $inc;
      $4 = $9;
      label = 4;
      break;
    } else {
      $_lcssa = $9;
      label = 5;
      break;
    }
   case 5:
    $10 = $_lcssa;
    _free($10);
    $11 = HEAP32[$spl >> 2] | 0;
    $12 = $11;
    _free($12);
    label = 6;
    break;
   case 6:
    HEAP32[$spl >> 2] = 0;
    return;
  }
}
function _gv_cleanup_edge($e) {
  $e = $e | 0;
  _gv_free_splines($e);
  _free_label(HEAP32[$e + 112 >> 2] | 0);
  _free_label(HEAP32[$e + 124 >> 2] | 0);
  _free_label(HEAP32[$e + 116 >> 2] | 0);
  _free_label(HEAP32[$e + 120 >> 2] | 0);
  _memset($e + 24 | 0, 0, 168);
  return;
}
function _overlap_arrow($p, $u, $flag, $b) {
  $p = $p | 0;
  $u = $u | 0;
  $flag = $flag | 0;
  $b = $b | 0;
  var $tmp = 0, $tmp2 = 0, $tmp10 = 0, $tmp15 = 0, $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x4 = 0, $2 = 0.0, $x6 = 0, $3 = 0.0, $cmp7 = 0, $y = 0, $4 = 0.0, $y12 = 0, $5 = 0.0, $cmp13 = 0, $y17 = 0, $6 = 0.0, $y19 = 0, $7 = 0.0, $cmp20 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $u;
  $u = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$u >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$u + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$u + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$u + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp2 = __stackBase__ + 32 | 0;
    $tmp10 = __stackBase__ + 64 | 0;
    $tmp15 = __stackBase__ + 96 | 0;
    $x = $b + 16 | 0;
    $0 = +HEAPF64[$x >> 3];
    _arrow_bb($tmp, $p, $u, 1.0, 0);
    $x1 = $tmp | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 < $1;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _arrow_bb($tmp2, $p, $u, 1.0, 0);
    $x4 = $tmp2 + 16 | 0;
    $2 = +HEAPF64[$x4 >> 3];
    $x6 = $b | 0;
    $3 = +HEAPF64[$x6 >> 3];
    $cmp7 = $2 < $3;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $b + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    _arrow_bb($tmp10, $p, $u, 1.0, 0);
    $y12 = $tmp10 + 8 | 0;
    $5 = +HEAPF64[$y12 >> 3];
    $cmp13 = $4 < $5;
    if ($cmp13) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _arrow_bb($tmp15, $p, $u, 1.0, 0);
    $y17 = $tmp15 + 24 | 0;
    $6 = +HEAPF64[$y17 >> 3];
    $y19 = $b + 8 | 0;
    $7 = +HEAPF64[$y19 >> 3];
    $cmp20 = $6 < $7;
    if ($cmp20) {
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 7;
      break;
    }
   case 6:
    $retval_0 = 0;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _cloneEdge($e, $ct, $ch) {
  $e = $e | 0;
  $ct = $ct | 0;
  $ch = $ch | 0;
  var $call = 0;
  $call = _agedge(HEAP32[$ct + 20 >> 2] | 0, $ct, $ch) | 0;
  _agcopyattr($e | 0, $call | 0);
  return $call | 0;
}
function _make_simple_label($g, $lp) {
  $g = $g | 0;
  $lp = $lp | 0;
  var $text = 0, $0 = 0, $dimen = 0, $1 = 0, $2 = 0, $cmp = 0, $call = 0, $add = 0, $call3 = 0, $3 = 0, $tobool4757 = 0, $charset = 0, $4 = 0, $_pn = 0, $lineptr_0_ph60 = 0, $line_0_ph59 = 0, $5 = 0, $_pn_pn = 0, $lineptr_049 = 0, $incdec_ptr50 = 0, $6 = 0, $notlhs = 0, $notrhs = 0, $or_cond_not = 0, $cmp13 = 0, $or_cond39 = 0, $incdec_ptr16 = 0, $incdec_ptr17 = 0, $7 = 0, $incdec_ptr18 = 0, $tobool19 = 0, $8 = 0, $conv26 = 0, $incdec_ptr27 = 0, $9 = 0, $incdec_ptr28 = 0, $line_1 = 0, $lineptr_1 = 0, $10 = 0, $tobool29 = 0, $incdec_ptr31 = 0, $incdec_ptr_incdec_ptr31 = 0, $incdec_ptr38 = 0, $p_0_ph_be = 0, $line_0_ph_be = 0, $lineptr_0_ph_be = 0, $11 = 0, $tobool47 = 0, $incdec_ptr40 = 0, $p_0_be = 0, $lineptr_0_be = 0, $12 = 0, $tobool = 0, $line_0_ph53 = 0, $lineptr_2 = 0, $cmp44 = 0, $space = 0, $13 = 0, $14 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $text = $lp | 0;
    $0 = HEAP32[$text >> 2] | 0;
    $dimen = $lp + 24 | 0;
    $1 = $dimen;
    _memset($1 | 0, 0, 16);
    $2 = HEAP8[$0] | 0;
    $cmp = $2 << 24 >> 24 == 0;
    if ($cmp) {
      label = 20;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _strlen($0 | 0) | 0;
    $add = $call + 1 | 0;
    $call3 = _gmalloc($add) | 0;
    HEAP8[$call3] = 0;
    $3 = HEAP8[$0] | 0;
    $tobool4757 = $3 << 24 >> 24 == 0;
    if ($tobool4757) {
      label = 19;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $charset = $lp + 12 | 0;
    $line_0_ph59 = $call3;
    $lineptr_0_ph60 = $call3;
    $_pn = $0;
    $4 = $3;
    label = 5;
    break;
   case 5:
    $lineptr_049 = $lineptr_0_ph60;
    $_pn_pn = $_pn;
    $5 = $4;
    label = 6;
    break;
   case 6:
    $incdec_ptr50 = $_pn_pn + 1 | 0;
    $6 = HEAP32[$charset >> 2] | 0;
    $notlhs = ($6 | 0) != 2;
    $notrhs = ($5 & 255) < 161;
    $or_cond_not = $notrhs | $notlhs;
    $cmp13 = $5 << 24 >> 24 == -1;
    $or_cond39 = $or_cond_not | $cmp13;
    if ($or_cond39) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $incdec_ptr16 = $lineptr_049 + 1 | 0;
    HEAP8[$lineptr_049] = $5;
    $incdec_ptr17 = $_pn_pn + 2 | 0;
    $7 = HEAP8[$incdec_ptr50] | 0;
    $incdec_ptr18 = $lineptr_049 + 2 | 0;
    HEAP8[$incdec_ptr16] = $7;
    $tobool19 = $7 << 24 >> 24 == 0;
    if ($tobool19) {
      $lineptr_2 = $incdec_ptr18;
      $line_0_ph53 = $line_0_ph59;
      label = 17;
      break;
    } else {
      $lineptr_0_be = $incdec_ptr18;
      $p_0_be = $incdec_ptr17;
      label = 16;
      break;
    }
   case 8:
    if (($5 << 24 >> 24 | 0) == 92) {
      label = 9;
      break;
    } else if (($5 << 24 >> 24 | 0) == 10) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 9:
    $8 = HEAP8[$incdec_ptr50] | 0;
    $conv26 = $8 << 24 >> 24;
    if (($conv26 | 0) == 110 | ($conv26 | 0) == 108 | ($conv26 | 0) == 114) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $incdec_ptr27 = $lineptr_049 + 1 | 0;
    HEAP8[$lineptr_049] = 0;
    $9 = HEAP8[$incdec_ptr50] | 0;
    _storeline($g, $lp, $line_0_ph59, $9);
    $lineptr_1 = $incdec_ptr27;
    $line_1 = $incdec_ptr27;
    label = 12;
    break;
   case 11:
    $incdec_ptr28 = $lineptr_049 + 1 | 0;
    HEAP8[$lineptr_049] = $8;
    $lineptr_1 = $incdec_ptr28;
    $line_1 = $line_0_ph59;
    label = 12;
    break;
   case 12:
    $10 = HEAP8[$incdec_ptr50] | 0;
    $tobool29 = $10 << 24 >> 24 == 0;
    $incdec_ptr31 = $_pn_pn + 2 | 0;
    $incdec_ptr_incdec_ptr31 = $tobool29 ? $incdec_ptr50 : $incdec_ptr31;
    $lineptr_0_ph_be = $lineptr_1;
    $line_0_ph_be = $line_1;
    $p_0_ph_be = $incdec_ptr_incdec_ptr31;
    label = 14;
    break;
   case 13:
    $incdec_ptr38 = $lineptr_049 + 1 | 0;
    HEAP8[$lineptr_049] = 0;
    _storeline($g, $lp, $line_0_ph59, 110);
    $lineptr_0_ph_be = $incdec_ptr38;
    $line_0_ph_be = $incdec_ptr38;
    $p_0_ph_be = $incdec_ptr50;
    label = 14;
    break;
   case 14:
    $11 = HEAP8[$p_0_ph_be] | 0;
    $tobool47 = $11 << 24 >> 24 == 0;
    if ($tobool47) {
      $lineptr_2 = $lineptr_0_ph_be;
      $line_0_ph53 = $line_0_ph_be;
      label = 17;
      break;
    } else {
      $line_0_ph59 = $line_0_ph_be;
      $lineptr_0_ph60 = $lineptr_0_ph_be;
      $_pn = $p_0_ph_be;
      $4 = $11;
      label = 5;
      break;
    }
   case 15:
    $incdec_ptr40 = $lineptr_049 + 1 | 0;
    HEAP8[$lineptr_049] = $5;
    $lineptr_0_be = $incdec_ptr40;
    $p_0_be = $incdec_ptr50;
    label = 16;
    break;
   case 16:
    $12 = HEAP8[$p_0_be] | 0;
    $tobool = $12 << 24 >> 24 == 0;
    if ($tobool) {
      $lineptr_2 = $lineptr_0_be;
      $line_0_ph53 = $line_0_ph59;
      label = 17;
      break;
    } else {
      $lineptr_049 = $lineptr_0_be;
      $_pn_pn = $p_0_be;
      $5 = $12;
      label = 6;
      break;
    }
   case 17:
    $cmp44 = ($line_0_ph53 | 0) == ($lineptr_2 | 0);
    if ($cmp44) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    HEAP8[$lineptr_2] = 0;
    _storeline($g, $lp, $line_0_ph53, 110);
    label = 19;
    break;
   case 19:
    $space = $lp + 40 | 0;
    $13 = $space;
    $14 = $dimen;
    HEAP32[$13 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    label = 20;
    break;
   case 20:
    return;
  }
}
function _storeline($g, $lp, $line, $terminator) {
  $g = $g | 0;
  $lp = $lp | 0;
  $line = $line | 0;
  $terminator = $terminator | 0;
  var $tmp = 0, $nparas = 0, $0 = 0, $conv = 0, $para3 = 0, $1 = 0, $tobool = 0, $add = 0, $2 = 0, $add7 = 0, $call = 0, $3 = 0, $mul = 0, $call9 = 0, $call_sink = 0, $4 = 0, $5 = 0, $idxprom = 0, $arrayidx = 0, $str = 0, $just = 0, $tobool19 = 0, $6 = 0, $tobool22 = 0, $fontname = 0, $7 = 0, $fontsize = 0, $8 = 0.0, $size_sroa_0_0__idx = 0, $size_sroa_0_0_copyload = 0.0, $size_sroa_1_8__idx7 = 0, $size_sroa_1_8_copyload = 0.0, $fontsize23 = 0, $9 = 0.0, $mul24 = 0.0, $conv25 = 0, $conv26 = 0.0, $height = 0, $size_sroa_0_0 = 0.0, $size_sroa_1_0 = 0.0, $10 = 0, $inc = 0, $x30 = 0, $11 = 0.0, $cmp = 0, $_size_sroa_0_0 = 0.0, $y44 = 0, $12 = 0.0, $add45 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $nparas = $lp + 76 | 0;
    $0 = HEAP16[$nparas >> 1] | 0;
    $conv = $0 << 16 >> 16;
    $para3 = $lp + 72 | 0;
    $1 = HEAP32[$para3 >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $conv + 1 | 0;
    $2 = $1;
    $add7 = $conv + 2 | 0;
    $call = _zrealloc($2, $add7, 80, $add) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $3 = $conv * 80 & -1;
    $mul = $3 + 160 | 0;
    $call9 = _zmalloc($mul) | 0;
    $call_sink = $call9;
    label = 5;
    break;
   case 5:
    $4 = $call_sink;
    HEAP32[$para3 >> 2] = $4;
    $5 = HEAP16[$nparas >> 1] | 0;
    $idxprom = $5 << 16 >> 16;
    $arrayidx = $4 + ($idxprom * 80 & -1) | 0;
    $str = $arrayidx | 0;
    HEAP32[$str >> 2] = $line;
    $just = $4 + ($idxprom * 80 & -1) + 72 | 0;
    HEAP8[$just] = $terminator;
    $tobool19 = ($line | 0) == 0;
    if ($tobool19) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $6 = HEAP8[$line] | 0;
    $tobool22 = $6 << 24 >> 24 == 0;
    if ($tobool22) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $fontname = $lp + 4 | 0;
    $7 = HEAP32[$fontname >> 2] | 0;
    $fontsize = $lp + 16 | 0;
    $8 = +HEAPF64[$fontsize >> 3];
    _textsize($tmp, $g, $arrayidx, $7, $8);
    $size_sroa_0_0__idx = $tmp | 0;
    $size_sroa_0_0_copyload = +HEAPF64[$size_sroa_0_0__idx >> 3];
    $size_sroa_1_8__idx7 = $tmp + 8 | 0;
    $size_sroa_1_8_copyload = +HEAPF64[$size_sroa_1_8__idx7 >> 3];
    $size_sroa_1_0 = $size_sroa_1_8_copyload;
    $size_sroa_0_0 = $size_sroa_0_0_copyload;
    label = 9;
    break;
   case 8:
    $fontsize23 = $lp + 16 | 0;
    $9 = +HEAPF64[$fontsize23 >> 3];
    $mul24 = $9 * 1.2;
    $conv25 = ~~$mul24;
    $conv26 = +($conv25 | 0);
    $height = $4 + ($idxprom * 80 & -1) + 64 | 0;
    HEAPF64[$height >> 3] = $conv26;
    $size_sroa_1_0 = $conv26;
    $size_sroa_0_0 = 0.0;
    label = 9;
    break;
   case 9:
    $10 = HEAP16[$nparas >> 1] | 0;
    $inc = $10 + 1 & 65535;
    HEAP16[$nparas >> 1] = $inc;
    $x30 = $lp + 24 | 0;
    $11 = +HEAPF64[$x30 >> 3];
    $cmp = $11 > $size_sroa_0_0;
    $_size_sroa_0_0 = $cmp ? $11 : $size_sroa_0_0;
    HEAPF64[$x30 >> 3] = $_size_sroa_0_0;
    $y44 = $lp + 32 | 0;
    $12 = +HEAPF64[$y44 >> 3];
    $add45 = $size_sroa_1_0 + $12;
    HEAPF64[$y44 >> 3] = $add45;
    STACKTOP = __stackBase__;
    return;
  }
}
function _mapN($n, $clg) {
  $n = $n | 0;
  $clg = $clg | 0;
  var $graph = 0, $0 = 0, $clustnode = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $name1 = 0, $4 = 0, $call = 0, $tobool2 = 0, $incdec_ptr = 0, $5 = 0, $call3 = 0, $tobool4 = 0, $6 = 0, $call7 = 0, $7 = 0, $call8 = 0, $list9 = 0, $8 = 0, $9 = 0, $tobool1116 = 0, $10 = 0, $11 = 0, $_pn = 0, $incdec_ptr1017 = 0, $index = 0, $12 = 0, $call12 = 0, $value = 0, $13 = 0, $cmp = 0, $call16 = 0, $14 = 0, $tobool11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $clustnode = $n + 134 | 0;
    $1 = HEAP8[$clustnode] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = $n;
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $n | 0;
    $3 = $clg;
    _aginsert($3, $2);
    $name1 = $n + 12 | 0;
    $4 = HEAP32[$name1 >> 2] | 0;
    $call = _strchr($4 | 0, 58) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    ___assert_func(158664, 1243, 164088, 119472);
    return 0;
   case 5:
    $incdec_ptr = $call + 1 | 0;
    $5 = $0;
    $call3 = _agfindnode($5, $incdec_ptr) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $6 = $call3;
    $retval_0 = $6;
    label = 12;
    break;
   case 7:
    $call7 = _agnode($5, $incdec_ptr) | 0;
    $7 = $call7;
    $call8 = _agdictof($2) | 0;
    $list9 = $call8 + 8 | 0;
    $8 = HEAP32[$list9 >> 2] | 0;
    $9 = HEAP32[$8 >> 2] | 0;
    $tobool1116 = ($9 | 0) == 0;
    if ($tobool1116) {
      $retval_0 = $7;
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $10 = $call7 | 0;
    $_pn = $8;
    $11 = $9;
    label = 9;
    break;
   case 9:
    $incdec_ptr1017 = $_pn + 4 | 0;
    $index = $11 + 8 | 0;
    $12 = HEAP32[$index >> 2] | 0;
    $call12 = _agxget($10, $12) | 0;
    $value = $11 + 4 | 0;
    $13 = HEAP32[$value >> 2] | 0;
    $cmp = ($call12 | 0) == ($13 | 0);
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call16 = _agxset($10, $12, $13) | 0;
    label = 11;
    break;
   case 11:
    $14 = HEAP32[$incdec_ptr1017 >> 2] | 0;
    $tobool11 = ($14 | 0) == 0;
    if ($tobool11) {
      $retval_0 = $7;
      label = 12;
      break;
    } else {
      $_pn = $incdec_ptr1017;
      $11 = $14;
      label = 9;
      break;
    }
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _make_label($obj, $str, $kind, $fontsize, $fontname, $fontcolor) {
  $obj = $obj | 0;
  $str = $str | 0;
  $kind = $kind | 0;
  $fontsize = +$fontsize;
  $fontname = $fontname | 0;
  $fontcolor = $fontcolor | 0;
  var $call = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $bf_val_sext = 0, $4 = 0, $root = 0, $5 = 0, $6 = 0, $7 = 0, $graph = 0, $8 = 0, $9 = 0, $root2 = 0, $10 = 0, $11 = 0, $head = 0, $12 = 0, $13 = 0, $graph4 = 0, $14 = 0, $root5 = 0, $15 = 0, $g_0 = 0, $sg_0 = 0, $n_0 = 0, $e_0 = 0, $fontname6 = 0, $16 = 0, $fontcolor7 = 0, $17 = 0, $fontsize8 = 0, $18 = 0, $charset = 0, $19 = 0, $conv = 0, $charset9 = 0, $20 = 0, $and = 0, $tobool = 0, $call10 = 0, $text = 0, $and11 = 0, $tobool12 = 0, $21 = 0, $call16 = 0, $text17 = 0, $22 = 0, $call19 = 0, $tobool20 = 0, $23 = 0, $24 = 0, $bf_val_sext23 = 0, $name = 0, $25 = 0, $call25 = 0, $name27 = 0, $26 = 0, $call28 = 0, $tail = 0, $27 = 0, $name30 = 0, $28 = 0, $29 = 0, $30 = 0, $and33 = 0, $tobool34 = 0, $cond = 0, $head35 = 0, $31 = 0, $name36 = 0, $32 = 0, $call37 = 0, $call43 = 0, $text44 = 0, $33 = 0, $cond1 = 0, $call48 = 0, $call50 = 0, $s_0 = 0, $34 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(88) | 0;
    $0 = $call;
    $1 = $obj;
    $2 = HEAP32[$1 >> 2] | 0;
    $3 = $2 << 28;
    $bf_val_sext = $3 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 5;
      break;
    } else {
      $e_0 = 0;
      $n_0 = 0;
      $sg_0 = 0;
      $g_0 = 0;
      label = 6;
      break;
    }
   case 3:
    $4 = $obj;
    $root = $obj + 32 | 0;
    $5 = $root;
    $6 = HEAP32[$5 >> 2] | 0;
    $e_0 = 0;
    $n_0 = 0;
    $sg_0 = $4;
    $g_0 = $6;
    label = 6;
    break;
   case 4:
    $7 = $obj;
    $graph = $obj + 20 | 0;
    $8 = $graph;
    $9 = HEAP32[$8 >> 2] | 0;
    $root2 = $9 + 32 | 0;
    $10 = HEAP32[$root2 >> 2] | 0;
    $e_0 = 0;
    $n_0 = $7;
    $sg_0 = 0;
    $g_0 = $10;
    label = 6;
    break;
   case 5:
    $11 = $obj;
    $head = $obj + 12 | 0;
    $12 = $head;
    $13 = HEAP32[$12 >> 2] | 0;
    $graph4 = $13 + 20 | 0;
    $14 = HEAP32[$graph4 >> 2] | 0;
    $root5 = $14 + 32 | 0;
    $15 = HEAP32[$root5 >> 2] | 0;
    $e_0 = $11;
    $n_0 = 0;
    $sg_0 = 0;
    $g_0 = $15;
    label = 6;
    break;
   case 6:
    $fontname6 = $call + 4 | 0;
    $16 = $fontname6;
    HEAP32[$16 >> 2] = $fontname;
    $fontcolor7 = $call + 8 | 0;
    $17 = $fontcolor7;
    HEAP32[$17 >> 2] = $fontcolor;
    $fontsize8 = $call + 16 | 0;
    $18 = $fontsize8;
    HEAPF64[$18 >> 3] = $fontsize;
    $charset = $g_0 + 155 | 0;
    $19 = HEAP8[$charset] | 0;
    $conv = $19 & 255;
    $charset9 = $call + 12 | 0;
    $20 = $charset9;
    HEAP32[$20 >> 2] = $conv;
    $and = $kind & 4;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call10 = _strdup($str | 0) | 0;
    $text = $call;
    HEAP32[$text >> 2] = $call10;
    $and11 = $kind & 2;
    $tobool12 = ($and11 | 0) == 0;
    if ($tobool12) {
      label = 20;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $21 = $call + 82 | 0;
    HEAP8[$21] = 1;
    label = 20;
    break;
   case 9:
    if (($kind | 0) == 2) {
      label = 10;
      break;
    } else if (($kind | 0) == 0) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 10:
    $call16 = _strdup($str | 0) | 0;
    $text17 = $call;
    HEAP32[$text17 >> 2] = $call16;
    $22 = $call + 82 | 0;
    HEAP8[$22] = 1;
    $call19 = _make_html_label($obj, $0) | 0;
    $tobool20 = ($call19 | 0) == 0;
    if ($tobool20) {
      label = 20;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $23 = HEAP32[$1 >> 2] | 0;
    $24 = $23 << 28;
    $bf_val_sext23 = $24 >> 28;
    if (($bf_val_sext23 | 0) == 3) {
      label = 12;
      break;
    } else if (($bf_val_sext23 | 0) == 1) {
      label = 13;
      break;
    } else if (($bf_val_sext23 | 0) == 2) {
      label = 14;
      break;
    } else {
      label = 20;
      break;
    }
   case 12:
    $name = $sg_0 + 12 | 0;
    $25 = HEAP32[$name >> 2] | 0;
    $call25 = _agerr(3, 118840, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $25, tempInt) | 0) | 0;
    label = 20;
    break;
   case 13:
    $name27 = $n_0 + 12 | 0;
    $26 = HEAP32[$name27 >> 2] | 0;
    $call28 = _agerr(3, 152768, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $26, tempInt) | 0) | 0;
    label = 20;
    break;
   case 14:
    $tail = $e_0 + 16 | 0;
    $27 = HEAP32[$tail >> 2] | 0;
    $name30 = $27 + 12 | 0;
    $28 = HEAP32[$name30 >> 2] | 0;
    $29 = $g_0;
    $30 = HEAP32[$29 >> 2] | 0;
    $and33 = $30 & 16;
    $tobool34 = ($and33 | 0) != 0;
    $cond = $tobool34 ? 117160 : 111928;
    $head35 = $e_0 + 12 | 0;
    $31 = HEAP32[$head35 >> 2] | 0;
    $name36 = $31 + 12 | 0;
    $32 = HEAP32[$name36 >> 2] | 0;
    $call37 = _agerr(3, 125952, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $28, HEAP32[tempInt + 8 >> 2] = $cond, HEAP32[tempInt + 16 >> 2] = $32, tempInt) | 0) | 0;
    label = 20;
    break;
   case 15:
    ___assert_func(107576, 169, 164096, 103640);
    return 0;
   case 16:
    $call43 = _strdup_and_subst_obj0($str, $obj, 0) | 0;
    $text44 = $call;
    HEAP32[$text44 >> 2] = $call43;
    $33 = HEAP32[$20 >> 2] | 0;
    $cond1 = ($33 | 0) == 1;
    if ($cond1) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $call48 = _latin1ToUTF8($call43) | 0;
    $s_0 = $call48;
    label = 19;
    break;
   case 18:
    $call50 = _htmlEntityUTF8($call43) | 0;
    $s_0 = $call50;
    label = 19;
    break;
   case 19:
    $34 = HEAP32[$text44 >> 2] | 0;
    _free($34);
    HEAP32[$text44 >> 2] = $s_0;
    _make_simple_label($g_0, $0);
    label = 20;
    break;
   case 20:
    STACKTOP = __stackBase__;
    return $0 | 0;
  }
  return 0;
}
function _xml_isentity($s) {
  $s = $s | 0;
  var $incdec_ptr = 0, $0 = 0, $cmp = 0, $incdec_ptr2 = 0, $1 = 0, $incdec_ptr10 = 0, $s_addr_0 = 0, $2 = 0, $_off29 = 0, $3 = 0, $_off30 = 0, $4 = 0, $or_cond = 0, $_off31 = 0, $5 = 0, $or_cond35 = 0, $incdec_ptr31 = 0, $s_addr_1 = 0, $6 = 0, $_off32 = 0, $7 = 0, $incdec_ptr42 = 0, $s_addr_2 = 0, $8 = 0, $_off = 0, $9 = 0, $_off28 = 0, $10 = 0, $or_cond37 = 0, $incdec_ptr64 = 0, $s_addr_3 = 0, $11 = 0, $cmp68 = 0, $_ = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $incdec_ptr = $s + 1 | 0;
    $0 = HEAP8[$incdec_ptr] | 0;
    $cmp = $0 << 24 >> 24 == 35;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $s_addr_2 = $incdec_ptr;
      label = 7;
      break;
    }
   case 3:
    $incdec_ptr2 = $s + 2 | 0;
    $1 = HEAP8[$incdec_ptr2] | 0;
    if (($1 << 24 >> 24 | 0) == 120 | ($1 << 24 >> 24 | 0) == 88) {
      label = 4;
      break;
    } else {
      $s_addr_1 = $incdec_ptr2;
      label = 6;
      break;
    }
   case 4:
    $incdec_ptr10 = $s + 3 | 0;
    $s_addr_0 = $incdec_ptr10;
    label = 5;
    break;
   case 5:
    $2 = HEAP8[$s_addr_0] | 0;
    $_off29 = $2 - 48 & 255;
    $3 = ($_off29 & 255) < 10;
    $_off30 = $2 - 97 & 255;
    $4 = ($_off30 & 255) < 6;
    $or_cond = $3 | $4;
    $_off31 = $2 - 65 & 255;
    $5 = ($_off31 & 255) < 6;
    $or_cond35 = $or_cond | $5;
    $incdec_ptr31 = $s_addr_0 + 1 | 0;
    if ($or_cond35) {
      $s_addr_0 = $incdec_ptr31;
      label = 5;
      break;
    } else {
      $s_addr_3 = $s_addr_0;
      label = 8;
      break;
    }
   case 6:
    $6 = HEAP8[$s_addr_1] | 0;
    $_off32 = $6 - 48 & 255;
    $7 = ($_off32 & 255) < 10;
    $incdec_ptr42 = $s_addr_1 + 1 | 0;
    if ($7) {
      $s_addr_1 = $incdec_ptr42;
      label = 6;
      break;
    } else {
      $s_addr_3 = $s_addr_1;
      label = 8;
      break;
    }
   case 7:
    $8 = HEAP8[$s_addr_2] | 0;
    $_off = $8 - 97 & 255;
    $9 = ($_off & 255) < 26;
    $_off28 = $8 - 65 & 255;
    $10 = ($_off28 & 255) < 26;
    $or_cond37 = $9 | $10;
    $incdec_ptr64 = $s_addr_2 + 1 | 0;
    if ($or_cond37) {
      $s_addr_2 = $incdec_ptr64;
      label = 7;
      break;
    } else {
      $s_addr_3 = $s_addr_2;
      label = 8;
      break;
    }
   case 8:
    $11 = HEAP8[$s_addr_3] | 0;
    $cmp68 = $11 << 24 >> 24 == 59;
    $_ = $cmp68 & 1;
    return $_ | 0;
  }
  return 0;
}
function _strdup_and_subst_obj0($str, $obj, $escBackslash) {
  $str = $str | 0;
  $obj = $obj | 0;
  $escBackslash = $escBackslash | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $name = 0, $3 = 0, $4 = 0, $call = 0, $label = 0, $5 = 0, $6 = 0, $tobool = 0, $text = 0, $7 = 0, $tobool1 = 0, $call3 = 0, $graph = 0, $8 = 0, $9 = 0, $name6 = 0, $10 = 0, $call7 = 0, $name8 = 0, $11 = 0, $12 = 0, $call9 = 0, $label11 = 0, $13 = 0, $14 = 0, $tobool12 = 0, $text14 = 0, $15 = 0, $tobool15 = 0, $call17 = 0, $tail = 0, $16 = 0, $17 = 0, $graph21 = 0, $18 = 0, $root = 0, $19 = 0, $name22 = 0, $20 = 0, $call23 = 0, $name25 = 0, $21 = 0, $call26 = 0, $pt_sroa_1_36__idx6 = 0, $22 = 0, $pt_sroa_1_36_copyload7 = 0, $tobool29 = 0, $call31 = 0, $tp_len_0 = 0, $head = 0, $23 = 0, $24 = 0, $name33 = 0, $25 = 0, $pt_sroa_1_36__idx4 = 0, $26 = 0, $pt_sroa_1_36_copyload = 0, $tobool37 = 0, $call39 = 0, $hp_len_0 = 0, $call41 = 0, $label43 = 0, $27 = 0, $28 = 0, $tobool44 = 0, $text46 = 0, $29 = 0, $tobool47 = 0, $call49 = 0, $l_str_0 = 0, $l_len_0 = 0, $30 = 0, $graph53 = 0, $31 = 0, $root54 = 0, $32 = 0, $33 = 0, $34 = 0, $and = 0, $tobool57 = 0, $_ = 0, $tobool60 = 0, $add = 0, $cond = 0, $tobool64 = 0, $add66 = 0, $_add66 = 0, $add61 = 0, $add62 = 0, $add63 = 0, $add70 = 0, $tp_str_0 = 0, $hp_str_0 = 0, $g_str_0 = 0, $n_str_0 = 0, $e_str_1 = 0, $h_str_0 = 0, $t_str_0 = 0, $l_str_1 = 0, $g_len_0 = 0, $n_len_0 = 0, $e_len_0 = 0, $h_len_0 = 0, $t_len_0 = 0, $l_len_1 = 0, $tp_len_1 = 0, $hp_len_1 = 0, $isEdge_0 = 0, $tobool89 = 0, $s_0 = 0, $newlen_0 = 0, $incdec_ptr = 0, $35 = 0, $incdec_ptr74 = 0, $36 = 0, $conv75 = 0, $add77 = 0, $add79 = 0, $add81 = 0, $add83 = 0, $add85 = 0, $add87 = 0, $add91 = 0, $add93 = 0, $inc = 0, $add97 = 0, $call98 = 0, $tobool125 = 0, $tobool134 = 0, $tobool159 = 0, $tobool196 = 0, $s_1 = 0, $p_0 = 0, $incdec_ptr100 = 0, $37 = 0, $incdec_ptr107 = 0, $38 = 0, $conv108 = 0, $39 = 0, $tobool112134 = 0, $40 = 0, $tobool119129 = 0, $41 = 0, $tobool174111 = 0, $42 = 0, $tobool182106 = 0, $43 = 0, $tobool190102 = 0, $t_0136 = 0, $p_1135 = 0, $incdec_ptr111 = 0, $incdec_ptr114 = 0, $44 = 0, $tobool112 = 0, $t_1131 = 0, $p_2130 = 0, $incdec_ptr118 = 0, $incdec_ptr122 = 0, $45 = 0, $tobool119 = 0, $46 = 0, $tobool129115 = 0, $t_2117 = 0, $p_3116 = 0, $incdec_ptr128 = 0, $incdec_ptr132 = 0, $47 = 0, $tobool129 = 0, $p_3_lcssa = 0, $p_3_pn = 0, $t_3 = 0, $p_4 = 0, $48 = 0, $tobool139 = 0, $incdec_ptr138 = 0, $p_6_ph = 0, $49 = 0, $tobool147119 = 0, $t_4121 = 0, $p_6120 = 0, $incdec_ptr146 = 0, $incdec_ptr150 = 0, $50 = 0, $tobool147 = 0, $p_6_lcssa = 0, $51 = 0, $tobool154123 = 0, $t_5125 = 0, $p_7124 = 0, $incdec_ptr153 = 0, $incdec_ptr157 = 0, $52 = 0, $tobool154 = 0, $p_7_lcssa = 0, $p_7_pn = 0, $t_6 = 0, $p_8 = 0, $53 = 0, $tobool164 = 0, $incdec_ptr163 = 0, $t_7113 = 0, $p_9112 = 0, $incdec_ptr173 = 0, $incdec_ptr177 = 0, $54 = 0, $tobool174 = 0, $t_8108 = 0, $p_10107 = 0, $incdec_ptr181 = 0, $incdec_ptr185 = 0, $55 = 0, $tobool182 = 0, $t_9104 = 0, $p_11103 = 0, $incdec_ptr189 = 0, $incdec_ptr193 = 0, $56 = 0, $tobool190 = 0, $incdec_ptr198 = 0, $incdec_ptr201 = 0, $incdec_ptr202 = 0, $incdec_ptr205 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 6;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 9;
      break;
    } else {
      $isEdge_0 = 0;
      $hp_len_1 = 0;
      $tp_len_1 = 0;
      $l_len_1 = 2;
      $t_len_0 = 2;
      $h_len_0 = 2;
      $e_len_0 = 2;
      $n_len_0 = 2;
      $g_len_0 = 2;
      $l_str_1 = 131720;
      $t_str_0 = 133960;
      $h_str_0 = 136304;
      $e_str_1 = 139088;
      $n_str_0 = 142576;
      $g_str_0 = 145616;
      $hp_str_0 = 148384;
      $tp_str_0 = 148384;
      label = 17;
      break;
    }
   case 3:
    $name = $obj + 12 | 0;
    $3 = $name;
    $4 = HEAP32[$3 >> 2] | 0;
    $call = _strlen($4 | 0) | 0;
    $label = $obj + 52 | 0;
    $5 = $label;
    $6 = HEAP32[$5 >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      $isEdge_0 = 0;
      $hp_len_1 = 0;
      $tp_len_1 = 0;
      $l_len_1 = 2;
      $t_len_0 = 2;
      $h_len_0 = 2;
      $e_len_0 = 2;
      $n_len_0 = 2;
      $g_len_0 = $call;
      $l_str_1 = 131720;
      $t_str_0 = 133960;
      $h_str_0 = 136304;
      $e_str_1 = 139088;
      $n_str_0 = 142576;
      $g_str_0 = $4;
      $hp_str_0 = 148384;
      $tp_str_0 = 148384;
      label = 17;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $text = $6 | 0;
    $7 = HEAP32[$text >> 2] | 0;
    $tobool1 = ($str | 0) == 0;
    if ($tobool1) {
      $isEdge_0 = 0;
      $hp_len_1 = 0;
      $tp_len_1 = 0;
      $l_len_1 = 2;
      $t_len_0 = 2;
      $h_len_0 = 2;
      $e_len_0 = 2;
      $n_len_0 = 2;
      $g_len_0 = $call;
      $l_str_1 = $7;
      $t_str_0 = 133960;
      $h_str_0 = 136304;
      $e_str_1 = 139088;
      $n_str_0 = 142576;
      $g_str_0 = $4;
      $hp_str_0 = 148384;
      $tp_str_0 = 148384;
      label = 17;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call3 = _strlen($7 | 0) | 0;
    $isEdge_0 = 0;
    $hp_len_1 = 0;
    $tp_len_1 = 0;
    $l_len_1 = $call3;
    $t_len_0 = 2;
    $h_len_0 = 2;
    $e_len_0 = 2;
    $n_len_0 = 2;
    $g_len_0 = $call;
    $l_str_1 = $7;
    $t_str_0 = 133960;
    $h_str_0 = 136304;
    $e_str_1 = 139088;
    $n_str_0 = 142576;
    $g_str_0 = $4;
    $hp_str_0 = 148384;
    $tp_str_0 = 148384;
    label = 17;
    break;
   case 6:
    $graph = $obj + 20 | 0;
    $8 = $graph;
    $9 = HEAP32[$8 >> 2] | 0;
    $name6 = $9 + 12 | 0;
    $10 = HEAP32[$name6 >> 2] | 0;
    $call7 = _strlen($10 | 0) | 0;
    $name8 = $obj + 12 | 0;
    $11 = $name8;
    $12 = HEAP32[$11 >> 2] | 0;
    $call9 = _strlen($12 | 0) | 0;
    $label11 = $obj + 120 | 0;
    $13 = $label11;
    $14 = HEAP32[$13 >> 2] | 0;
    $tobool12 = ($14 | 0) == 0;
    if ($tobool12) {
      $isEdge_0 = 0;
      $hp_len_1 = 0;
      $tp_len_1 = 0;
      $l_len_1 = 2;
      $t_len_0 = 2;
      $h_len_0 = 2;
      $e_len_0 = 2;
      $n_len_0 = $call9;
      $g_len_0 = $call7;
      $l_str_1 = 131720;
      $t_str_0 = 133960;
      $h_str_0 = 136304;
      $e_str_1 = 139088;
      $n_str_0 = $12;
      $g_str_0 = $10;
      $hp_str_0 = 148384;
      $tp_str_0 = 148384;
      label = 17;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $text14 = $14 | 0;
    $15 = HEAP32[$text14 >> 2] | 0;
    $tobool15 = ($str | 0) == 0;
    if ($tobool15) {
      $isEdge_0 = 0;
      $hp_len_1 = 0;
      $tp_len_1 = 0;
      $l_len_1 = 2;
      $t_len_0 = 2;
      $h_len_0 = 2;
      $e_len_0 = 2;
      $n_len_0 = $call9;
      $g_len_0 = $call7;
      $l_str_1 = $15;
      $t_str_0 = 133960;
      $h_str_0 = 136304;
      $e_str_1 = 139088;
      $n_str_0 = $12;
      $g_str_0 = $10;
      $hp_str_0 = 148384;
      $tp_str_0 = 148384;
      label = 17;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call17 = _strlen($15 | 0) | 0;
    $isEdge_0 = 0;
    $hp_len_1 = 0;
    $tp_len_1 = 0;
    $l_len_1 = $call17;
    $t_len_0 = 2;
    $h_len_0 = 2;
    $e_len_0 = 2;
    $n_len_0 = $call9;
    $g_len_0 = $call7;
    $l_str_1 = $15;
    $t_str_0 = 133960;
    $h_str_0 = 136304;
    $e_str_1 = 139088;
    $n_str_0 = $12;
    $g_str_0 = $10;
    $hp_str_0 = 148384;
    $tp_str_0 = 148384;
    label = 17;
    break;
   case 9:
    $tail = $obj + 16 | 0;
    $16 = $tail;
    $17 = HEAP32[$16 >> 2] | 0;
    $graph21 = $17 + 20 | 0;
    $18 = HEAP32[$graph21 >> 2] | 0;
    $root = $18 + 32 | 0;
    $19 = HEAP32[$root >> 2] | 0;
    $name22 = $19 + 12 | 0;
    $20 = HEAP32[$name22 >> 2] | 0;
    $call23 = _strlen($20 | 0) | 0;
    $name25 = $17 + 12 | 0;
    $21 = HEAP32[$name25 >> 2] | 0;
    $call26 = _strlen($21 | 0) | 0;
    $pt_sroa_1_36__idx6 = $obj + 68 | 0;
    $22 = $pt_sroa_1_36__idx6;
    $pt_sroa_1_36_copyload7 = HEAP32[$22 >> 2] | 0;
    $tobool29 = ($pt_sroa_1_36_copyload7 | 0) == 0;
    if ($tobool29) {
      $tp_len_0 = 0;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call31 = _strlen($pt_sroa_1_36_copyload7 | 0) | 0;
    $tp_len_0 = $call31;
    label = 11;
    break;
   case 11:
    $head = $obj + 12 | 0;
    $23 = $head;
    $24 = HEAP32[$23 >> 2] | 0;
    $name33 = $24 + 12 | 0;
    $25 = HEAP32[$name33 >> 2] | 0;
    $pt_sroa_1_36__idx4 = $obj + 108 | 0;
    $26 = $pt_sroa_1_36__idx4;
    $pt_sroa_1_36_copyload = HEAP32[$26 >> 2] | 0;
    $tobool37 = ($pt_sroa_1_36_copyload | 0) == 0;
    if ($tobool37) {
      $hp_len_0 = 0;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call39 = _strlen($pt_sroa_1_36_copyload | 0) | 0;
    $hp_len_0 = $call39;
    label = 13;
    break;
   case 13:
    $call41 = _strlen($25 | 0) | 0;
    $label43 = $obj + 112 | 0;
    $27 = $label43;
    $28 = HEAP32[$27 >> 2] | 0;
    $tobool44 = ($28 | 0) == 0;
    if ($tobool44) {
      $l_len_0 = 2;
      $l_str_0 = 131720;
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $text46 = $28 | 0;
    $29 = HEAP32[$text46 >> 2] | 0;
    $tobool47 = ($str | 0) == 0;
    if ($tobool47) {
      $l_len_0 = 2;
      $l_str_0 = $29;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call49 = _strlen($29 | 0) | 0;
    $l_len_0 = $call49;
    $l_str_0 = $29;
    label = 16;
    break;
   case 16:
    $30 = HEAP32[$16 >> 2] | 0;
    $graph53 = $30 + 20 | 0;
    $31 = HEAP32[$graph53 >> 2] | 0;
    $root54 = $31 + 32 | 0;
    $32 = HEAP32[$root54 >> 2] | 0;
    $33 = $32;
    $34 = HEAP32[$33 >> 2] | 0;
    $and = $34 & 16;
    $tobool57 = ($and | 0) == 0;
    $_ = $tobool57 ? 111928 : 117160;
    $tobool60 = ($tp_len_0 | 0) == 0;
    $add = $tp_len_0 + 1 | 0;
    $cond = $tobool60 ? 0 : $add;
    $tobool64 = ($hp_len_0 | 0) == 0;
    $add66 = $hp_len_0 + 1 | 0;
    $_add66 = $tobool64 ? 0 : $add66;
    $add61 = $call26 + 2 | 0;
    $add62 = $add61 + $cond | 0;
    $add63 = $add62 + $call41 | 0;
    $add70 = $add63 + $_add66 | 0;
    $isEdge_0 = 1;
    $hp_len_1 = $hp_len_0;
    $tp_len_1 = $tp_len_0;
    $l_len_1 = $l_len_0;
    $t_len_0 = $call26;
    $h_len_0 = $call41;
    $e_len_0 = $add70;
    $n_len_0 = 2;
    $g_len_0 = $call23;
    $l_str_1 = $l_str_0;
    $t_str_0 = $21;
    $h_str_0 = $25;
    $e_str_1 = $_;
    $n_str_0 = 142576;
    $g_str_0 = $20;
    $hp_str_0 = $pt_sroa_1_36_copyload;
    $tp_str_0 = $pt_sroa_1_36_copyload7;
    label = 17;
    break;
   case 17:
    $tobool89 = ($escBackslash | 0) == 0;
    $newlen_0 = 0;
    $s_0 = $str;
    label = 18;
    break;
   case 18:
    $incdec_ptr = $s_0 + 1 | 0;
    $35 = HEAP8[$s_0] | 0;
    if (($35 << 24 >> 24 | 0) == 92) {
      label = 19;
      break;
    } else if (($35 << 24 >> 24 | 0) == 0) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 19:
    $incdec_ptr74 = $s_0 + 2 | 0;
    $36 = HEAP8[$incdec_ptr] | 0;
    $conv75 = $36 << 24 >> 24;
    if (($conv75 | 0) == 71) {
      label = 20;
      break;
    } else if (($conv75 | 0) == 78) {
      label = 21;
      break;
    } else if (($conv75 | 0) == 69) {
      label = 22;
      break;
    } else if (($conv75 | 0) == 72) {
      label = 23;
      break;
    } else if (($conv75 | 0) == 84) {
      label = 24;
      break;
    } else if (($conv75 | 0) == 76) {
      label = 25;
      break;
    } else if (($conv75 | 0) == 92) {
      label = 26;
      break;
    } else {
      label = 28;
      break;
    }
   case 20:
    $add77 = $newlen_0 + $g_len_0 | 0;
    $newlen_0 = $add77;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 21:
    $add79 = $newlen_0 + $n_len_0 | 0;
    $newlen_0 = $add79;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 22:
    $add81 = $newlen_0 + $e_len_0 | 0;
    $newlen_0 = $add81;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 23:
    $add83 = $newlen_0 + $h_len_0 | 0;
    $newlen_0 = $add83;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 24:
    $add85 = $newlen_0 + $t_len_0 | 0;
    $newlen_0 = $add85;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 25:
    $add87 = $newlen_0 + $l_len_1 | 0;
    $newlen_0 = $add87;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 26:
    if ($tobool89) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $add91 = $newlen_0 + 1 | 0;
    $newlen_0 = $add91;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 28:
    $add93 = $newlen_0 + 2 | 0;
    $newlen_0 = $add93;
    $s_0 = $incdec_ptr74;
    label = 18;
    break;
   case 29:
    $inc = $newlen_0 + 1 | 0;
    $newlen_0 = $inc;
    $s_0 = $incdec_ptr;
    label = 18;
    break;
   case 30:
    $add97 = $newlen_0 + 1 | 0;
    $call98 = _gmalloc($add97) | 0;
    $tobool125 = ($isEdge_0 | 0) == 0;
    $tobool134 = ($tp_len_1 | 0) == 0;
    $tobool159 = ($hp_len_1 | 0) == 0;
    $tobool196 = ($escBackslash | 0) == 0;
    $p_0 = $call98;
    $s_1 = $str;
    label = 31;
    break;
   case 31:
    $incdec_ptr100 = $s_1 + 1 | 0;
    $37 = HEAP8[$s_1] | 0;
    if (($37 << 24 >> 24 | 0) == 92) {
      label = 32;
      break;
    } else if (($37 << 24 >> 24 | 0) == 0) {
      label = 60;
      break;
    } else {
      label = 59;
      break;
    }
   case 32:
    $incdec_ptr107 = $s_1 + 2 | 0;
    $38 = HEAP8[$incdec_ptr100] | 0;
    $conv108 = $38 << 24 >> 24;
    if (($conv108 | 0) == 71) {
      label = 33;
      break;
    } else if (($conv108 | 0) == 78) {
      label = 34;
      break;
    } else if (($conv108 | 0) == 84) {
      label = 35;
      break;
    } else if (($conv108 | 0) == 72) {
      label = 36;
      break;
    } else if (($conv108 | 0) == 76) {
      label = 37;
      break;
    } else if (($conv108 | 0) == 69) {
      label = 40;
      break;
    } else if (($conv108 | 0) == 92) {
      label = 56;
      break;
    } else {
      label = 58;
      break;
    }
   case 33:
    $39 = HEAP8[$g_str_0] | 0;
    HEAP8[$p_0] = $39;
    $tobool112134 = $39 << 24 >> 24 == 0;
    if ($tobool112134) {
      $p_0 = $p_0;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_1135 = $p_0;
      $t_0136 = $g_str_0;
      label = 38;
      break;
    }
   case 34:
    $40 = HEAP8[$n_str_0] | 0;
    HEAP8[$p_0] = $40;
    $tobool119129 = $40 << 24 >> 24 == 0;
    if ($tobool119129) {
      $p_0 = $p_0;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_2130 = $p_0;
      $t_1131 = $n_str_0;
      label = 39;
      break;
    }
   case 35:
    $41 = HEAP8[$t_str_0] | 0;
    HEAP8[$p_0] = $41;
    $tobool174111 = $41 << 24 >> 24 == 0;
    if ($tobool174111) {
      $p_0 = $p_0;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_9112 = $p_0;
      $t_7113 = $t_str_0;
      label = 53;
      break;
    }
   case 36:
    $42 = HEAP8[$h_str_0] | 0;
    HEAP8[$p_0] = $42;
    $tobool182106 = $42 << 24 >> 24 == 0;
    if ($tobool182106) {
      $p_0 = $p_0;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_10107 = $p_0;
      $t_8108 = $h_str_0;
      label = 54;
      break;
    }
   case 37:
    $43 = HEAP8[$l_str_1] | 0;
    HEAP8[$p_0] = $43;
    $tobool190102 = $43 << 24 >> 24 == 0;
    if ($tobool190102) {
      $p_0 = $p_0;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_11103 = $p_0;
      $t_9104 = $l_str_1;
      label = 55;
      break;
    }
   case 38:
    $incdec_ptr111 = $t_0136 + 1 | 0;
    $incdec_ptr114 = $p_1135 + 1 | 0;
    $44 = HEAP8[$incdec_ptr111] | 0;
    HEAP8[$incdec_ptr114] = $44;
    $tobool112 = $44 << 24 >> 24 == 0;
    if ($tobool112) {
      $p_0 = $incdec_ptr114;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_1135 = $incdec_ptr114;
      $t_0136 = $incdec_ptr111;
      label = 38;
      break;
    }
   case 39:
    $incdec_ptr118 = $t_1131 + 1 | 0;
    $incdec_ptr122 = $p_2130 + 1 | 0;
    $45 = HEAP8[$incdec_ptr118] | 0;
    HEAP8[$incdec_ptr122] = $45;
    $tobool119 = $45 << 24 >> 24 == 0;
    if ($tobool119) {
      $p_0 = $incdec_ptr122;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_2130 = $incdec_ptr122;
      $t_1131 = $incdec_ptr118;
      label = 39;
      break;
    }
   case 40:
    if ($tobool125) {
      $p_0 = $p_0;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $46 = HEAP8[$t_str_0] | 0;
    HEAP8[$p_0] = $46;
    $tobool129115 = $46 << 24 >> 24 == 0;
    if ($tobool129115) {
      $p_3_lcssa = $p_0;
      label = 43;
      break;
    } else {
      $p_3116 = $p_0;
      $t_2117 = $t_str_0;
      label = 42;
      break;
    }
   case 42:
    $incdec_ptr128 = $t_2117 + 1 | 0;
    $incdec_ptr132 = $p_3116 + 1 | 0;
    $47 = HEAP8[$incdec_ptr128] | 0;
    HEAP8[$incdec_ptr132] = $47;
    $tobool129 = $47 << 24 >> 24 == 0;
    if ($tobool129) {
      $p_3_lcssa = $incdec_ptr132;
      label = 43;
      break;
    } else {
      $p_3116 = $incdec_ptr132;
      $t_2117 = $incdec_ptr128;
      label = 42;
      break;
    }
   case 43:
    if ($tobool134) {
      $p_6_ph = $p_3_lcssa;
      label = 46;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    HEAP8[$p_3_lcssa] = 58;
    $t_3 = $tp_str_0;
    $p_3_pn = $p_3_lcssa;
    label = 45;
    break;
   case 45:
    $p_4 = $p_3_pn + 1 | 0;
    $48 = HEAP8[$t_3] | 0;
    HEAP8[$p_4] = $48;
    $tobool139 = $48 << 24 >> 24 == 0;
    $incdec_ptr138 = $t_3 + 1 | 0;
    if ($tobool139) {
      $p_6_ph = $p_4;
      label = 46;
      break;
    } else {
      $t_3 = $incdec_ptr138;
      $p_3_pn = $p_4;
      label = 45;
      break;
    }
   case 46:
    $49 = HEAP8[$e_str_1] | 0;
    HEAP8[$p_6_ph] = $49;
    $tobool147119 = $49 << 24 >> 24 == 0;
    if ($tobool147119) {
      $p_6_lcssa = $p_6_ph;
      label = 48;
      break;
    } else {
      $p_6120 = $p_6_ph;
      $t_4121 = $e_str_1;
      label = 47;
      break;
    }
   case 47:
    $incdec_ptr146 = $t_4121 + 1 | 0;
    $incdec_ptr150 = $p_6120 + 1 | 0;
    $50 = HEAP8[$incdec_ptr146] | 0;
    HEAP8[$incdec_ptr150] = $50;
    $tobool147 = $50 << 24 >> 24 == 0;
    if ($tobool147) {
      $p_6_lcssa = $incdec_ptr150;
      label = 48;
      break;
    } else {
      $p_6120 = $incdec_ptr150;
      $t_4121 = $incdec_ptr146;
      label = 47;
      break;
    }
   case 48:
    $51 = HEAP8[$h_str_0] | 0;
    HEAP8[$p_6_lcssa] = $51;
    $tobool154123 = $51 << 24 >> 24 == 0;
    if ($tobool154123) {
      $p_7_lcssa = $p_6_lcssa;
      label = 50;
      break;
    } else {
      $p_7124 = $p_6_lcssa;
      $t_5125 = $h_str_0;
      label = 49;
      break;
    }
   case 49:
    $incdec_ptr153 = $t_5125 + 1 | 0;
    $incdec_ptr157 = $p_7124 + 1 | 0;
    $52 = HEAP8[$incdec_ptr153] | 0;
    HEAP8[$incdec_ptr157] = $52;
    $tobool154 = $52 << 24 >> 24 == 0;
    if ($tobool154) {
      $p_7_lcssa = $incdec_ptr157;
      label = 50;
      break;
    } else {
      $p_7124 = $incdec_ptr157;
      $t_5125 = $incdec_ptr153;
      label = 49;
      break;
    }
   case 50:
    if ($tobool159) {
      $p_0 = $p_7_lcssa;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    HEAP8[$p_7_lcssa] = 58;
    $t_6 = $hp_str_0;
    $p_7_pn = $p_7_lcssa;
    label = 52;
    break;
   case 52:
    $p_8 = $p_7_pn + 1 | 0;
    $53 = HEAP8[$t_6] | 0;
    HEAP8[$p_8] = $53;
    $tobool164 = $53 << 24 >> 24 == 0;
    $incdec_ptr163 = $t_6 + 1 | 0;
    if ($tobool164) {
      $p_0 = $p_8;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $t_6 = $incdec_ptr163;
      $p_7_pn = $p_8;
      label = 52;
      break;
    }
   case 53:
    $incdec_ptr173 = $t_7113 + 1 | 0;
    $incdec_ptr177 = $p_9112 + 1 | 0;
    $54 = HEAP8[$incdec_ptr173] | 0;
    HEAP8[$incdec_ptr177] = $54;
    $tobool174 = $54 << 24 >> 24 == 0;
    if ($tobool174) {
      $p_0 = $incdec_ptr177;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_9112 = $incdec_ptr177;
      $t_7113 = $incdec_ptr173;
      label = 53;
      break;
    }
   case 54:
    $incdec_ptr181 = $t_8108 + 1 | 0;
    $incdec_ptr185 = $p_10107 + 1 | 0;
    $55 = HEAP8[$incdec_ptr181] | 0;
    HEAP8[$incdec_ptr185] = $55;
    $tobool182 = $55 << 24 >> 24 == 0;
    if ($tobool182) {
      $p_0 = $incdec_ptr185;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_10107 = $incdec_ptr185;
      $t_8108 = $incdec_ptr181;
      label = 54;
      break;
    }
   case 55:
    $incdec_ptr189 = $t_9104 + 1 | 0;
    $incdec_ptr193 = $p_11103 + 1 | 0;
    $56 = HEAP8[$incdec_ptr189] | 0;
    HEAP8[$incdec_ptr193] = $56;
    $tobool190 = $56 << 24 >> 24 == 0;
    if ($tobool190) {
      $p_0 = $incdec_ptr193;
      $s_1 = $incdec_ptr107;
      label = 31;
      break;
    } else {
      $p_11103 = $incdec_ptr193;
      $t_9104 = $incdec_ptr189;
      label = 55;
      break;
    }
   case 56:
    if ($tobool196) {
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $incdec_ptr198 = $p_0 + 1 | 0;
    HEAP8[$p_0] = 92;
    $p_0 = $incdec_ptr198;
    $s_1 = $incdec_ptr107;
    label = 31;
    break;
   case 58:
    $incdec_ptr201 = $p_0 + 1 | 0;
    HEAP8[$p_0] = 92;
    $incdec_ptr202 = $p_0 + 2 | 0;
    HEAP8[$incdec_ptr201] = $38;
    $p_0 = $incdec_ptr202;
    $s_1 = $incdec_ptr107;
    label = 31;
    break;
   case 59:
    $incdec_ptr205 = $p_0 + 1 | 0;
    HEAP8[$p_0] = $37;
    $p_0 = $incdec_ptr205;
    $s_1 = $incdec_ptr100;
    label = 31;
    break;
   case 60:
    HEAP8[$p_0] = 0;
    return $call98 | 0;
  }
  return 0;
}
function _free_textpara($tl, $cnt) {
  $tl = $tl | 0;
  $cnt = $cnt | 0;
  var $tobool = 0, $cmp11 = 0, $tlp_013 = 0, $i_012 = 0, $cmp1 = 0, $str = 0, $0 = 0, $tobool2 = 0, $layout = 0, $1 = 0, $tobool6 = 0, $free_layout = 0, $2 = 0, $tobool8 = 0, $incdec_ptr = 0, $inc = 0, $cmp = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($tl | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp11 = ($cnt | 0) > 0;
    if ($cmp11) {
      $i_012 = 0;
      $tlp_013 = $tl;
      label = 4;
      break;
    } else {
      label = 11;
      break;
    }
   case 4:
    $cmp1 = ($i_012 | 0) == 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $str = $tlp_013 | 0;
    $0 = HEAP32[$str >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($0);
    label = 7;
    break;
   case 7:
    $layout = $tlp_013 + 8 | 0;
    $1 = HEAP32[$layout >> 2] | 0;
    $tobool6 = ($1 | 0) == 0;
    if ($tobool6) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $free_layout = $tlp_013 + 12 | 0;
    $2 = HEAP32[$free_layout >> 2] | 0;
    $tobool8 = ($2 | 0) == 0;
    if ($tobool8) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    FUNCTION_TABLE_vi[$2 & 1023]($1);
    label = 10;
    break;
   case 10:
    $incdec_ptr = $tlp_013 + 80 | 0;
    $inc = $i_012 + 1 | 0;
    $cmp = ($inc | 0) < ($cnt | 0);
    if ($cmp) {
      $i_012 = $inc;
      $tlp_013 = $incdec_ptr;
      label = 4;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $3 = $tl;
    _free($3);
    label = 12;
    break;
   case 12:
    return;
  }
}
function _free_label($p) {
  $p = $p | 0;
  var $tobool = 0, $text = 0, $0 = 0, $html = 0, $1 = 0, $tobool1 = 0, $u = 0, $html3 = 0, $2 = 0, $para = 0, $3 = 0, $nparas = 0, $4 = 0, $conv = 0, $5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($p | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $text = $p | 0;
    $0 = HEAP32[$text >> 2] | 0;
    _free($0);
    $html = $p + 82 | 0;
    $1 = HEAP8[$html] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    $u = $p + 72 | 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $html3 = $u;
    $2 = HEAP32[$html3 >> 2] | 0;
    _free_html_label($2, 1);
    label = 6;
    break;
   case 5:
    $para = $u | 0;
    $3 = HEAP32[$para >> 2] | 0;
    $nparas = $p + 76 | 0;
    $4 = HEAP16[$nparas >> 1] | 0;
    $conv = $4 << 16 >> 16;
    _free_textpara($3, $conv);
    label = 6;
    break;
   case 6:
    $5 = $p;
    _free($5);
    label = 7;
    break;
   case 7:
    return;
  }
}
function _emit_label($job, $emit_state, $lp) {
  $job = $job | 0;
  $emit_state = $emit_state | 0;
  $lp = $lp | 0;
  var $p = 0, $obj1 = 0, $0 = 0, $emit_state2 = 0, $1 = 0, $html = 0, $2 = 0, $tobool = 0, $u = 0, $html4 = 0, $3 = 0, $nparas = 0, $4 = 0, $cmp = 0, $fontcolor = 0, $5 = 0, $valign = 0, $6 = 0, $conv10 = 0, $y = 0, $7 = 0.0, $y11 = 0, $8 = 0.0, $div = 0.0, $add = 0.0, $fontsize = 0, $9 = 0.0, $sub = 0.0, $y12 = 0, $y15 = 0, $10 = 0.0, $y17 = 0, $11 = 0.0, $div18 = 0.0, $sub19 = 0.0, $y20 = 0, $12 = 0.0, $add21 = 0.0, $fontsize22 = 0, $13 = 0.0, $sub23 = 0.0, $y24 = 0, $y27 = 0, $14 = 0.0, $y29 = 0, $15 = 0.0, $div30 = 0.0, $add31 = 0.0, $fontsize32 = 0, $16 = 0.0, $sub33 = 0.0, $y34 = 0, $17 = 0, $cmp3939 = 0, $para = 0, $x62 = 0, $x63 = 0, $y73 = 0, $x = 0, $x47 = 0, $x50 = 0, $x53 = 0, $x55 = 0, $x58 = 0, $i_040 = 0, $18 = 0, $just = 0, $19 = 0, $conv43 = 0, $20 = 0.0, $21 = 0.0, $div48 = 0.0, $sub49 = 0.0, $22 = 0.0, $23 = 0.0, $div56 = 0.0, $add57 = 0.0, $24 = 0.0, $25 = 0, $arrayidx68 = 0, $26 = 0, $height = 0, $27 = 0.0, $28 = 0.0, $sub74 = 0.0, $inc = 0, $29 = 0, $conv38 = 0, $cmp39 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = __stackBase__ | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $emit_state2 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state2 >> 2] | 0;
    HEAP32[$emit_state2 >> 2] = $emit_state;
    $html = $lp + 82 | 0;
    $2 = HEAP8[$html] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $u = $lp + 72 | 0;
    $html4 = $u;
    $3 = HEAP32[$html4 >> 2] | 0;
    _emit_html_label($job, $3, $lp);
    HEAP32[$emit_state2 >> 2] = $1;
    label = 17;
    break;
   case 4:
    $nparas = $lp + 76 | 0;
    $4 = HEAP16[$nparas >> 1] | 0;
    $cmp = $4 << 16 >> 16 < 1;
    if ($cmp) {
      label = 17;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _gvrender_begin_label($job, 0);
    $fontcolor = $lp + 8 | 0;
    $5 = HEAP32[$fontcolor >> 2] | 0;
    _gvrender_set_pencolor($job, $5);
    $valign = $lp + 80 | 0;
    $6 = HEAP8[$valign] | 0;
    $conv10 = $6 << 24 >> 24;
    if (($conv10 | 0) == 116) {
      label = 6;
      break;
    } else if (($conv10 | 0) == 98) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $y = $lp + 64 | 0;
    $7 = +HEAPF64[$y >> 3];
    $y11 = $lp + 48 | 0;
    $8 = +HEAPF64[$y11 >> 3];
    $div = $8 * .5;
    $add = $7 + $div;
    $fontsize = $lp + 16 | 0;
    $9 = +HEAPF64[$fontsize >> 3];
    $sub = $add - $9;
    $y12 = $p + 8 | 0;
    HEAPF64[$y12 >> 3] = $sub;
    label = 9;
    break;
   case 7:
    $y15 = $lp + 64 | 0;
    $10 = +HEAPF64[$y15 >> 3];
    $y17 = $lp + 48 | 0;
    $11 = +HEAPF64[$y17 >> 3];
    $div18 = $11 * .5;
    $sub19 = $10 - $div18;
    $y20 = $lp + 32 | 0;
    $12 = +HEAPF64[$y20 >> 3];
    $add21 = $12 + $sub19;
    $fontsize22 = $lp + 16 | 0;
    $13 = +HEAPF64[$fontsize22 >> 3];
    $sub23 = $add21 - $13;
    $y24 = $p + 8 | 0;
    HEAPF64[$y24 >> 3] = $sub23;
    label = 9;
    break;
   case 8:
    $y27 = $lp + 64 | 0;
    $14 = +HEAPF64[$y27 >> 3];
    $y29 = $lp + 32 | 0;
    $15 = +HEAPF64[$y29 >> 3];
    $div30 = $15 * .5;
    $add31 = $14 + $div30;
    $fontsize32 = $lp + 16 | 0;
    $16 = +HEAPF64[$fontsize32 >> 3];
    $sub33 = $add31 - $16;
    $y34 = $p + 8 | 0;
    HEAPF64[$y34 >> 3] = $sub33;
    label = 9;
    break;
   case 9:
    $17 = HEAP16[$nparas >> 1] | 0;
    $cmp3939 = $17 << 16 >> 16 > 0;
    if ($cmp3939) {
      label = 10;
      break;
    } else {
      label = 16;
      break;
    }
   case 10:
    $para = $lp + 72 | 0;
    $x62 = $lp + 56 | 0;
    $x63 = $p | 0;
    $y73 = $p + 8 | 0;
    $x = $lp + 56 | 0;
    $x47 = $lp + 40 | 0;
    $x50 = $p | 0;
    $x53 = $lp + 56 | 0;
    $x55 = $lp + 40 | 0;
    $x58 = $p | 0;
    $i_040 = 0;
    label = 11;
    break;
   case 11:
    $18 = HEAP32[$para >> 2] | 0;
    $just = $18 + ($i_040 * 80 & -1) + 72 | 0;
    $19 = HEAP8[$just] | 0;
    $conv43 = $19 << 24 >> 24;
    if (($conv43 | 0) == 108) {
      label = 12;
      break;
    } else if (($conv43 | 0) == 114) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $20 = +HEAPF64[$x >> 3];
    $21 = +HEAPF64[$x47 >> 3];
    $div48 = $21 * .5;
    $sub49 = $20 - $div48;
    HEAPF64[$x50 >> 3] = $sub49;
    label = 15;
    break;
   case 13:
    $22 = +HEAPF64[$x53 >> 3];
    $23 = +HEAPF64[$x55 >> 3];
    $div56 = $23 * .5;
    $add57 = $22 + $div56;
    HEAPF64[$x58 >> 3] = $add57;
    label = 15;
    break;
   case 14:
    $24 = +HEAPF64[$x62 >> 3];
    HEAPF64[$x63 >> 3] = $24;
    label = 15;
    break;
   case 15:
    $25 = HEAP32[$para >> 2] | 0;
    $arrayidx68 = $25 + ($i_040 * 80 & -1) | 0;
    _gvrender_textpara($job, $p, $arrayidx68);
    $26 = HEAP32[$para >> 2] | 0;
    $height = $26 + ($i_040 * 80 & -1) + 64 | 0;
    $27 = +HEAPF64[$height >> 3];
    $28 = +HEAPF64[$y73 >> 3];
    $sub74 = $28 - $27;
    HEAPF64[$y73 >> 3] = $sub74;
    $inc = $i_040 + 1 | 0;
    $29 = HEAP16[$nparas >> 1] | 0;
    $conv38 = $29 << 16 >> 16;
    $cmp39 = ($inc | 0) < ($conv38 | 0);
    if ($cmp39) {
      $i_040 = $inc;
      label = 11;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _gvrender_end_label($job);
    HEAP32[$emit_state2 >> 2] = $1;
    label = 17;
    break;
   case 17:
    STACKTOP = __stackBase__;
    return;
  }
}
function _strdup_and_subst_obj($str, $obj) {
  $str = $str | 0;
  $obj = $obj | 0;
  return _strdup_and_subst_obj0($str, $obj, 1) | 0;
}
function _xml_string($s) {
  $s = $s | 0;
  var $0 = 0, $tobool = 0, $call = 0, $1 = 0, $tobool121 = 0, $pos_025 = 0, $prev_024 = 0, $p_023 = 0, $s_addr_022 = 0, $2 = 0, $tobool2 = 0, $3 = 0, $sub3 = 0, $cmp = 0, $mul = 0, $4 = 0, $call6 = 0, $add_ptr = 0, $p_1 = 0, $5 = 0, $cmp9 = 0, $call11 = 0, $tobool12 = 0, $_pr = 0, $6 = 0, $tobool33 = 0, $7 = 0, $cmp36 = 0, $8 = 0, $sub_0_ph = 0, $len_0_ph = 0, $9 = 0, $len_019 = 0, $sub_018 = 0, $p_217 = 0, $dec = 0, $incdec_ptr = 0, $10 = 0, $incdec_ptr60 = 0, $tobool58 = 0, $scevgep = 0, $incdec_ptr61 = 0, $tobool1 = 0, $p_0_lcssa = 0, $11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[8] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[6] = 64;
    $call = _gmalloc(64) | 0;
    HEAP32[8] = $call;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[8] | 0;
    $tobool121 = ($s | 0) == 0;
    if ($tobool121) {
      $p_0_lcssa = $1;
      label = 22;
      break;
    } else {
      $s_addr_022 = $s;
      $p_023 = $1;
      $prev_024 = 0;
      $pos_025 = 0;
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP8[$s_addr_022] | 0;
    $tobool2 = $2 << 24 >> 24 == 0;
    if ($tobool2) {
      $p_0_lcssa = $p_023;
      label = 22;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP32[6] | 0;
    $sub3 = $3 - 8 | 0;
    $cmp = ($pos_025 | 0) > ($sub3 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      $p_1 = $p_023;
      label = 8;
      break;
    }
   case 7:
    $mul = $3 << 1;
    HEAP32[6] = $mul;
    $4 = HEAP32[8] | 0;
    $call6 = _grealloc($4, $mul) | 0;
    HEAP32[8] = $call6;
    $add_ptr = $call6 + $pos_025 | 0;
    $p_1 = $add_ptr;
    label = 8;
    break;
   case 8:
    $5 = HEAP8[$s_addr_022] | 0;
    $cmp9 = $5 << 24 >> 24 == 38;
    if ($cmp9) {
      label = 9;
      break;
    } else {
      $6 = $5;
      label = 11;
      break;
    }
   case 9:
    $call11 = _xml_isentity($s_addr_022) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      $len_0_ph = 5;
      $sub_0_ph = 99472;
      label = 19;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $_pr = HEAP8[$s_addr_022] | 0;
    $6 = $_pr;
    label = 11;
    break;
   case 11:
    if (($6 << 24 >> 24 | 0) == 62) {
      label = 12;
      break;
    } else if (($6 << 24 >> 24 | 0) == 45) {
      label = 13;
      break;
    } else if (($6 << 24 >> 24 | 0) == 32) {
      label = 14;
      break;
    } else if (($6 << 24 >> 24 | 0) == 60) {
      $len_0_ph = 4;
      $sub_0_ph = 95416;
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 12:
    $len_0_ph = 4;
    $sub_0_ph = 91912;
    label = 19;
    break;
   case 13:
    $len_0_ph = 5;
    $sub_0_ph = 162096;
    label = 19;
    break;
   case 14:
    $tobool33 = ($prev_024 | 0) == 0;
    if ($tobool33) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $7 = HEAP8[$prev_024] | 0;
    $cmp36 = $7 << 24 >> 24 == 32;
    if ($cmp36) {
      $len_0_ph = 6;
      $sub_0_ph = 158608;
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $8 = HEAP8[$s_addr_022] | 0;
    if (($8 << 24 >> 24 | 0) == 39) {
      label = 17;
      break;
    } else if (($8 << 24 >> 24 | 0) == 34) {
      $len_0_ph = 6;
      $sub_0_ph = 155128;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $len_0_ph = 5;
    $sub_0_ph = 151664;
    label = 19;
    break;
   case 18:
    $len_0_ph = 1;
    $sub_0_ph = $s_addr_022;
    label = 19;
    break;
   case 19:
    $9 = $len_0_ph + $pos_025 | 0;
    $p_217 = $p_1;
    $sub_018 = $sub_0_ph;
    $len_019 = $len_0_ph;
    label = 20;
    break;
   case 20:
    $dec = $len_019 - 1 | 0;
    $incdec_ptr = $sub_018 + 1 | 0;
    $10 = HEAP8[$sub_018] | 0;
    $incdec_ptr60 = $p_217 + 1 | 0;
    HEAP8[$p_217] = $10;
    $tobool58 = ($dec | 0) == 0;
    if ($tobool58) {
      label = 21;
      break;
    } else {
      $p_217 = $incdec_ptr60;
      $sub_018 = $incdec_ptr;
      $len_019 = $dec;
      label = 20;
      break;
    }
   case 21:
    $scevgep = $p_1 + $len_0_ph | 0;
    $incdec_ptr61 = $s_addr_022 + 1 | 0;
    $tobool1 = ($incdec_ptr61 | 0) == 0;
    if ($tobool1) {
      $p_0_lcssa = $scevgep;
      label = 22;
      break;
    } else {
      $prev_024 = $s_addr_022;
      $s_addr_022 = $incdec_ptr61;
      $p_023 = $scevgep;
      $pos_025 = $9;
      label = 5;
      break;
    }
   case 22:
    HEAP8[$p_0_lcssa] = 0;
    $11 = HEAP32[8] | 0;
    return $11 | 0;
  }
  return 0;
}
function _xml_url_string($s) {
  $s = $s | 0;
  var $0 = 0, $tobool = 0, $call = 0, $1 = 0, $tobool118 = 0, $pos_022 = 0, $p_021 = 0, $s_addr_019 = 0, $2 = 0, $tobool2 = 0, $3 = 0, $sub3 = 0, $cmp = 0, $mul = 0, $4 = 0, $call6 = 0, $add_ptr = 0, $p_1 = 0, $5 = 0, $cmp9 = 0, $call11 = 0, $tobool12 = 0, $_pr = 0, $6 = 0, $sub_0_ph = 0, $len_0_ph = 0, $7 = 0, $len_016 = 0, $sub_015 = 0, $p_214 = 0, $dec = 0, $incdec_ptr = 0, $8 = 0, $incdec_ptr42 = 0, $tobool40 = 0, $scevgep = 0, $incdec_ptr43 = 0, $tobool1 = 0, $p_0_lcssa = 0, $9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[4] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[2] = 64;
    $call = _gmalloc(64) | 0;
    HEAP32[4] = $call;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[4] | 0;
    $tobool118 = ($s | 0) == 0;
    if ($tobool118) {
      $p_0_lcssa = $1;
      label = 19;
      break;
    } else {
      $s_addr_019 = $s;
      $p_021 = $1;
      $pos_022 = 0;
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP8[$s_addr_019] | 0;
    $tobool2 = $2 << 24 >> 24 == 0;
    if ($tobool2) {
      $p_0_lcssa = $p_021;
      label = 19;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP32[2] | 0;
    $sub3 = $3 - 8 | 0;
    $cmp = ($pos_022 | 0) > ($sub3 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      $p_1 = $p_021;
      label = 8;
      break;
    }
   case 7:
    $mul = $3 << 1;
    HEAP32[2] = $mul;
    $4 = HEAP32[4] | 0;
    $call6 = _grealloc($4, $mul) | 0;
    HEAP32[4] = $call6;
    $add_ptr = $call6 + $pos_022 | 0;
    $p_1 = $add_ptr;
    label = 8;
    break;
   case 8:
    $5 = HEAP8[$s_addr_019] | 0;
    $cmp9 = $5 << 24 >> 24 == 38;
    if ($cmp9) {
      label = 9;
      break;
    } else {
      $6 = $5;
      label = 11;
      break;
    }
   case 9:
    $call11 = _xml_isentity($s_addr_019) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      $len_0_ph = 5;
      $sub_0_ph = 99472;
      label = 16;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $_pr = HEAP8[$s_addr_019] | 0;
    $6 = $_pr;
    label = 11;
    break;
   case 11:
    if (($6 << 24 >> 24 | 0) == 62) {
      label = 12;
      break;
    } else if (($6 << 24 >> 24 | 0) == 34) {
      label = 13;
      break;
    } else if (($6 << 24 >> 24 | 0) == 39) {
      label = 14;
      break;
    } else if (($6 << 24 >> 24 | 0) == 60) {
      $len_0_ph = 4;
      $sub_0_ph = 95416;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 12:
    $len_0_ph = 4;
    $sub_0_ph = 91912;
    label = 16;
    break;
   case 13:
    $len_0_ph = 6;
    $sub_0_ph = 155128;
    label = 16;
    break;
   case 14:
    $len_0_ph = 5;
    $sub_0_ph = 151664;
    label = 16;
    break;
   case 15:
    $len_0_ph = 1;
    $sub_0_ph = $s_addr_019;
    label = 16;
    break;
   case 16:
    $7 = $len_0_ph + $pos_022 | 0;
    $p_214 = $p_1;
    $sub_015 = $sub_0_ph;
    $len_016 = $len_0_ph;
    label = 17;
    break;
   case 17:
    $dec = $len_016 - 1 | 0;
    $incdec_ptr = $sub_015 + 1 | 0;
    $8 = HEAP8[$sub_015] | 0;
    $incdec_ptr42 = $p_214 + 1 | 0;
    HEAP8[$p_214] = $8;
    $tobool40 = ($dec | 0) == 0;
    if ($tobool40) {
      label = 18;
      break;
    } else {
      $p_214 = $incdec_ptr42;
      $sub_015 = $incdec_ptr;
      $len_016 = $dec;
      label = 17;
      break;
    }
   case 18:
    $scevgep = $p_1 + $len_0_ph | 0;
    $incdec_ptr43 = $s_addr_019 + 1 | 0;
    $tobool1 = ($incdec_ptr43 | 0) == 0;
    if ($tobool1) {
      $p_0_lcssa = $scevgep;
      label = 19;
      break;
    } else {
      $s_addr_019 = $incdec_ptr43;
      $p_021 = $scevgep;
      $pos_022 = $7;
      label = 5;
      break;
    }
   case 19:
    HEAP8[$p_0_lcssa] = 0;
    $9 = HEAP32[4] | 0;
    return $9 | 0;
  }
  return 0;
}
function _lineToBox($p, $q, $b) {
  $p = $p | 0;
  $q = $q | 0;
  $b = $b | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x3 = 0, $2 = 0.0, $cmp4 = 0, $y = 0, $3 = 0.0, $y7 = 0, $4 = 0.0, $cmp8 = 0, $y11 = 0, $5 = 0.0, $cmp12 = 0, $phitmp = 0, $6 = 0, $x13 = 0, $7 = 0.0, $8 = 0.0, $cmp16 = 0, $x20 = 0, $9 = 0.0, $cmp21 = 0, $y23 = 0, $10 = 0.0, $y25 = 0, $11 = 0.0, $cmp26 = 0, $y30 = 0, $12 = 0.0, $cmp31 = 0, $phitmp20 = 0, $13 = 0, $cmp34 = 0, $and = 0, $tobool = 0, $14 = 0.0, $15 = 0.0, $cmp39 = 0, $y41 = 0, $16 = 0.0, $y43 = 0, $17 = 0.0, $cmp44 = 0, $y45 = 0, $18 = 0.0, $cmp48 = 0, $xor22 = 0, $19 = 0.0, $cmp55 = 0, $x60 = 0, $20 = 0.0, $cmp61 = 0, $y66 = 0, $21 = 0.0, $cmp67 = 0, $22 = 0.0, $cmp73 = 0, $cmp78 = 0, $xor8021 = 0, $y85 = 0, $23 = 0.0, $cmp86 = 0, $y91 = 0, $24 = 0.0, $cmp92 = 0, $sub = 0.0, $sub103 = 0.0, $div = 0.0, $cmp106 = 0, $_ = 0.0, $_23 = 0.0, $25 = 0.0, $sub119 = 0.0, $mul = 0.0, $add = 0.0, $cmp122 = 0, $cmp127 = 0, $or_cond = 0, $y131 = 0, $26 = 0.0, $cmp132 = 0, $y136 = 0, $27 = 0.0, $cmp137 = 0, $x142 = 0, $28 = 0.0, $29 = 0.0, $sub145 = 0.0, $mul146 = 0.0, $add147 = 0.0, $y149 = 0, $30 = 0.0, $cmp150 = 0, $y154 = 0, $31 = 0.0, $cmp155 = 0, $cmp160 = 0, $or_cond24 = 0, $cmp165 = 0, $or_cond25 = 0, $32 = 0.0, $33 = 0.0, $cmp171 = 0, $_26 = 0.0, $_27 = 0.0, $34 = 0.0, $35 = 0.0, $sub184 = 0.0, $div185 = 0.0, $add186 = 0.0, $36 = 0.0, $cmp189 = 0, $37 = 0.0, $cmp194 = 0, $cmp199 = 0, $or_cond28 = 0, $cmp204 = 0, $or_cond29 = 0, $y209 = 0, $38 = 0.0, $39 = 0.0, $sub212 = 0.0, $div213 = 0.0, $add214 = 0.0, $40 = 0.0, $cmp217 = 0, $41 = 0.0, $cmp222 = 0, $cmp227 = 0, $or_cond30 = 0, $cmp232 = 0, $or_cond31 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $p | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $b | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 < $1;
    if ($cmp) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x3 = $b + 16 | 0;
    $2 = +HEAPF64[$x3 >> 3];
    $cmp4 = $0 > $2;
    if ($cmp4) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $p + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $y7 = $b + 8 | 0;
    $4 = +HEAPF64[$y7 >> 3];
    $cmp8 = $3 < $4;
    if ($cmp8) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y11 = $b + 24 | 0;
    $5 = +HEAPF64[$y11 >> 3];
    $cmp12 = $3 <= $5;
    $phitmp = $cmp12 & 1;
    $6 = $phitmp;
    label = 6;
    break;
   case 6:
    $x13 = $q | 0;
    $7 = +HEAPF64[$x13 >> 3];
    $8 = +HEAPF64[$x1 >> 3];
    $cmp16 = $7 < $8;
    if ($cmp16) {
      $13 = 0;
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $x20 = $b + 16 | 0;
    $9 = +HEAPF64[$x20 >> 3];
    $cmp21 = $7 > $9;
    if ($cmp21) {
      $13 = 0;
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $y23 = $q + 8 | 0;
    $10 = +HEAPF64[$y23 >> 3];
    $y25 = $b + 8 | 0;
    $11 = +HEAPF64[$y25 >> 3];
    $cmp26 = $10 < $11;
    if ($cmp26) {
      $13 = 0;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $y30 = $b + 24 | 0;
    $12 = +HEAPF64[$y30 >> 3];
    $cmp31 = $10 <= $12;
    $phitmp20 = $cmp31 & 1;
    $13 = $phitmp20;
    label = 10;
    break;
   case 10:
    $cmp34 = ($6 | 0) == ($13 | 0);
    if ($cmp34) {
      label = 11;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 11:
    $and = $13 & $6;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      $retval_0 = 1;
      label = 30;
      break;
    }
   case 12:
    $14 = +HEAPF64[$x >> 3];
    $15 = +HEAPF64[$x13 >> 3];
    $cmp39 = $14 == $15;
    $y41 = $p + 8 | 0;
    $16 = +HEAPF64[$y41 >> 3];
    if ($cmp39) {
      label = 13;
      break;
    } else {
      label = 16;
      break;
    }
   case 13:
    $y43 = $b + 8 | 0;
    $17 = +HEAPF64[$y43 >> 3];
    $cmp44 = $16 >= $17;
    $y45 = $q + 8 | 0;
    $18 = +HEAPF64[$y45 >> 3];
    $cmp48 = $18 >= $17;
    $xor22 = $cmp44 ^ $cmp48;
    if ($xor22) {
      label = 14;
      break;
    } else {
      label = 29;
      break;
    }
   case 14:
    $19 = +HEAPF64[$x1 >> 3];
    $cmp55 = $14 < $19;
    if ($cmp55) {
      label = 29;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $x60 = $b + 16 | 0;
    $20 = +HEAPF64[$x60 >> 3];
    $cmp61 = $14 > $20;
    if ($cmp61) {
      label = 29;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 16:
    $y66 = $q + 8 | 0;
    $21 = +HEAPF64[$y66 >> 3];
    $cmp67 = $16 == $21;
    if ($cmp67) {
      label = 17;
      break;
    } else {
      label = 20;
      break;
    }
   case 17:
    $22 = +HEAPF64[$x1 >> 3];
    $cmp73 = $14 >= $22;
    $cmp78 = $15 >= $22;
    $xor8021 = $cmp73 ^ $cmp78;
    if ($xor8021) {
      label = 18;
      break;
    } else {
      label = 29;
      break;
    }
   case 18:
    $y85 = $b + 8 | 0;
    $23 = +HEAPF64[$y85 >> 3];
    $cmp86 = $16 < $23;
    if ($cmp86) {
      label = 29;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $y91 = $b + 24 | 0;
    $24 = +HEAPF64[$y91 >> 3];
    $cmp92 = $16 > $24;
    if ($cmp92) {
      label = 29;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 20:
    $sub = $21 - $16;
    $sub103 = $15 - $14;
    $div = $sub / $sub103;
    $cmp106 = $14 < $15;
    $_ = $cmp106 ? $14 : $15;
    $_23 = $cmp106 ? $15 : $14;
    $25 = +HEAPF64[$x1 >> 3];
    $sub119 = $25 - $14;
    $mul = $div * $sub119;
    $add = $16 + $mul;
    $cmp122 = $25 < $_;
    $cmp127 = $25 > $_23;
    $or_cond = $cmp122 | $cmp127;
    if ($or_cond) {
      label = 23;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $y131 = $b + 8 | 0;
    $26 = +HEAPF64[$y131 >> 3];
    $cmp132 = $add < $26;
    if ($cmp132) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $y136 = $b + 24 | 0;
    $27 = +HEAPF64[$y136 >> 3];
    $cmp137 = $add > $27;
    if ($cmp137) {
      label = 23;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 23:
    $x142 = $b + 16 | 0;
    $28 = +HEAPF64[$x142 >> 3];
    $29 = +HEAPF64[$x1 >> 3];
    $sub145 = $28 - $29;
    $mul146 = $div * $sub145;
    $add147 = $add + $mul146;
    $y149 = $b + 8 | 0;
    $30 = +HEAPF64[$y149 >> 3];
    $cmp150 = $add147 < $30;
    if ($cmp150) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $y154 = $b + 24 | 0;
    $31 = +HEAPF64[$y154 >> 3];
    $cmp155 = $add147 > $31;
    $cmp160 = $28 < $_;
    $or_cond24 = $cmp155 | $cmp160;
    $cmp165 = $28 > $_23;
    $or_cond25 = $or_cond24 | $cmp165;
    if ($or_cond25) {
      label = 25;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 25:
    $32 = +HEAPF64[$y41 >> 3];
    $33 = +HEAPF64[$y66 >> 3];
    $cmp171 = $32 < $33;
    $_26 = $cmp171 ? $32 : $33;
    $_27 = $cmp171 ? $33 : $32;
    $34 = +HEAPF64[$x >> 3];
    $35 = +HEAPF64[$y149 >> 3];
    $sub184 = $35 - $32;
    $div185 = $sub184 / $div;
    $add186 = $34 + $div185;
    $36 = +HEAPF64[$x1 >> 3];
    $cmp189 = $add186 < $36;
    if ($cmp189) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $37 = +HEAPF64[$x142 >> 3];
    $cmp194 = $add186 > $37;
    $cmp199 = $35 < $_26;
    $or_cond28 = $cmp194 | $cmp199;
    $cmp204 = $35 > $_27;
    $or_cond29 = $or_cond28 | $cmp204;
    if ($or_cond29) {
      label = 27;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 27:
    $y209 = $b + 24 | 0;
    $38 = +HEAPF64[$y209 >> 3];
    $39 = +HEAPF64[$y149 >> 3];
    $sub212 = $38 - $39;
    $div213 = $sub212 / $div;
    $add214 = $add186 + $div213;
    $40 = +HEAPF64[$x1 >> 3];
    $cmp217 = $add214 < $40;
    if ($cmp217) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $41 = +HEAPF64[$x142 >> 3];
    $cmp222 = $add214 > $41;
    $cmp227 = $38 < $_26;
    $or_cond30 = $cmp222 | $cmp227;
    $cmp232 = $38 > $_27;
    $or_cond31 = $or_cond30 | $cmp232;
    if ($or_cond31) {
      label = 29;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 29:
    $retval_0 = -1;
    label = 30;
    break;
   case 30:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _rect2poly($p) {
  $p = $p | 0;
  var $x = 0, $0 = 0.0;
  $x = $p + 16 | 0;
  $0 = +HEAPF64[$x >> 3];
  HEAPF64[$p + 32 >> 3] = $0;
  HEAPF64[$p + 48 >> 3] = $0;
  HEAPF64[$p + 40 >> 3] = +HEAPF64[$p + 24 >> 3];
  HEAPF64[$p + 56 >> 3] = +HEAPF64[$p + 8 >> 3];
  HEAPF64[$x >> 3] = +HEAPF64[$p >> 3];
  return;
}
function _flip_rec_boxf($agg_result, $b, $p) {
  $agg_result = $agg_result | 0;
  $b = $b | 0;
  $p = $p | 0;
  var $4 = 0.0, $5 = 0.0, $add19 = 0.0, $add23 = 0.0, $add27 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $4 = +HEAPF64[$p >> 3];
  $5 = +HEAPF64[$p + 8 >> 3];
  $add19 = +HEAPF64[$b >> 3] + $5;
  $add23 = +HEAPF64[$b + 24 >> 3] + $4;
  $add27 = +HEAPF64[$b + 16 >> 3] + $5;
  HEAPF64[$agg_result >> 3] = +HEAPF64[$b + 8 >> 3] + $4;
  HEAPF64[$agg_result + 8 >> 3] = $add19;
  HEAPF64[$agg_result + 16 >> 3] = $add23;
  HEAPF64[$agg_result + 24 >> 3] = $add27;
  STACKTOP = __stackBase__;
  return;
}
function _ptToLine2($a, $b, $p) {
  $a = $a | 0;
  $b = $b | 0;
  $p = $p | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $sub = 0.0, $y = 0, $2 = 0.0, $y2 = 0, $3 = 0.0, $sub3 = 0.0, $y4 = 0, $4 = 0.0, $sub6 = 0.0, $mul = 0.0, $x7 = 0, $5 = 0.0, $sub9 = 0.0, $mul10 = 0.0, $sub11 = 0.0, $mul12 = 0.0, $cmp = 0, $mul13 = 0.0, $mul14 = 0.0, $add = 0.0, $div = 0.0, $retval_0 = 0.0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $a;
  $a = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$a >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$a + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$a + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$a + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$b >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$b + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$b + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$b + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $b | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $a | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $sub = $0 - $1;
    $y = $b + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y2 = $a + 8 | 0;
    $3 = +HEAPF64[$y2 >> 3];
    $sub3 = $2 - $3;
    $y4 = $p + 8 | 0;
    $4 = +HEAPF64[$y4 >> 3];
    $sub6 = $4 - $3;
    $mul = $sub * $sub6;
    $x7 = $p | 0;
    $5 = +HEAPF64[$x7 >> 3];
    $sub9 = $5 - $1;
    $mul10 = $sub3 * $sub9;
    $sub11 = $mul - $mul10;
    $mul12 = $sub11 * $sub11;
    $cmp = $mul12 < 1.0e-10;
    if ($cmp) {
      $retval_0 = 0.0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $mul13 = $sub * $sub;
    $mul14 = $sub3 * $sub3;
    $add = $mul13 + $mul14;
    $div = $mul12 / $add;
    $retval_0 = $div;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return +$retval_0;
  }
  return 0.0;
}
function _zmalloc($nbytes) {
  $nbytes = $nbytes | 0;
  var $cmp = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($nbytes | 0) == 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _gmalloc($nbytes) | 0;
    _memset($call | 0, 0, $nbytes | 0);
    $retval_0 = $call;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _textsize($agg_result, $g, $para, $fontname, $fontsize) {
  $agg_result = $agg_result | 0;
  $g = $g | 0;
  $para = $para | 0;
  $fontname = $fontname | 0;
  $fontsize = +$fontsize;
  var $fontpath = 0, $fontname1 = 0, $fontsize2 = 0, $call = 0, $postscript_alias = 0, $0 = 0, $tobool = 0, $1 = 0, $call4 = 0, $tobool5 = 0, $_fontpath = 0, $fp_0 = 0, $gvc = 0, $2 = 0, $call6 = 0, $tobool7 = 0, $tobool10 = 0, $3 = 0, $tobool12 = 0, $4 = 0, $5 = 0, $call15 = 0, $call17 = 0, $width = 0, $6 = 0.0, $height = 0, $7 = 0.0, $size_sroa_0_0__idx = 0, $size_sroa_1_8__idx1 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fontpath = __stackBase__ | 0;
    HEAP32[$fontpath >> 2] = 0;
    $fontname1 = $para + 20 | 0;
    HEAP32[$fontname1 >> 2] = $fontname;
    $fontsize2 = $para + 24 | 0;
    HEAPF64[$fontsize2 >> 3] = $fontsize;
    $call = _translate_postscript_fontname($fontname) | 0;
    $postscript_alias = $para + 4 | 0;
    HEAP32[$postscript_alias >> 2] = $call;
    $0 = HEAP8[164912] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      $fp_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[$fontname1 >> 2] | 0;
    $call4 = _emit_once($1) | 0;
    $tobool5 = ($call4 | 0) == 0;
    $_fontpath = $tobool5 ? 0 : $fontpath;
    $fp_0 = $_fontpath;
    label = 4;
    break;
   case 4:
    $gvc = $g + 176 | 0;
    $2 = HEAP32[$gvc >> 2] | 0;
    $call6 = _gvtextlayout($2, $para, $fp_0) | 0;
    $tobool7 = $call6 << 24 >> 24 == 0;
    if ($tobool7) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _estimate_textlayout($para, $fp_0);
    label = 6;
    break;
   case 6:
    $tobool10 = ($fp_0 | 0) == 0;
    if ($tobool10) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $3 = HEAP32[$fontpath >> 2] | 0;
    $tobool12 = ($3 | 0) == 0;
    $4 = HEAP32[_stderr >> 2] | 0;
    $5 = HEAP32[$fontname1 >> 2] | 0;
    if ($tobool12) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call15 = _fprintf($4 | 0, 116480, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $5, HEAP32[tempInt + 8 >> 2] = $3, tempInt) | 0) | 0;
    label = 10;
    break;
   case 9:
    $call17 = _fprintf($4 | 0, 151224, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $5, tempInt) | 0) | 0;
    label = 10;
    break;
   case 10:
    $width = $para + 56 | 0;
    $6 = +HEAPF64[$width >> 3];
    $height = $para + 64 | 0;
    $7 = +HEAPF64[$height >> 3];
    $size_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$size_sroa_0_0__idx >> 3] = $6;
    $size_sroa_1_8__idx1 = $agg_result + 8 | 0;
    HEAPF64[$size_sroa_1_8__idx1 >> 3] = $7;
    STACKTOP = __stackBase__;
    return;
  }
}
function _translate_postscript_fontname($fontname) {
  $fontname = $fontname | 0;
  var $0 = 0, $cmp = 0, $call = 0, $tobool = 0, $call1 = 0, $1 = 0, $2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[238] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _strcasecmp($0, $fontname) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[238] = $fontname;
    $call1 = _bsearch(952, 5648, 35, 36, 558) | 0;
    $1 = $call1;
    HEAP32[236] = $1;
    label = 5;
    break;
   case 5:
    $2 = HEAP32[236] | 0;
    return $2 | 0;
  }
  return 0;
}
function _estimate_textlayout($para, $fontpath) {
  $para = $para | 0;
  $fontpath = $fontpath | 0;
  var $width = 0, $fontsize = 0, $0 = 0.0, $mul = 0.0, $height = 0, $yoffset_layout = 0, $1 = 0.0, $mul2 = 0.0, $yoffset_centerline = 0, $fontname = 0, $2 = 0, $layout = 0, $free_layout = 0, $3 = 0, $call = 0, $tobool = 0, $4 = 0, $call5 = 0, $tobool6 = 0, $5 = 0, $call8 = 0, $tobool9 = 0, $_ = 0, $_1 = 0, $Fontwidth_0 = 0, $fp_0 = 0, $tobool13 = 0, $str = 0, $6 = 0, $tobool16 = 0, $7 = 0, $tobool182 = 0, $8 = 0, $p_03 = 0, $incdec_ptr = 0, $idxprom = 0, $arrayidx = 0, $9 = 0.0, $10 = 0.0, $add = 0.0, $11 = 0, $tobool18 = 0, $12 = 0.0, $13 = 0.0, $mul22 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $width = $para + 56 | 0;
    HEAPF64[$width >> 3] = 0.0;
    $fontsize = $para + 24 | 0;
    $0 = +HEAPF64[$fontsize >> 3];
    $mul = $0 * 1.2;
    $height = $para + 64 | 0;
    HEAPF64[$height >> 3] = $mul;
    $yoffset_layout = $para + 40 | 0;
    HEAPF64[$yoffset_layout >> 3] = 0.0;
    $1 = +HEAPF64[$fontsize >> 3];
    $mul2 = $1 * .1;
    $yoffset_centerline = $para + 48 | 0;
    HEAPF64[$yoffset_centerline >> 3] = $mul2;
    $fontname = $para + 20 | 0;
    $2 = HEAP32[$fontname >> 2] | 0;
    $layout = $para + 8 | 0;
    HEAP32[$layout >> 2] = $2;
    $free_layout = $para + 12 | 0;
    HEAP32[$free_layout >> 2] = 0;
    $3 = HEAP32[$fontname >> 2] | 0;
    $call = _strncasecmp($3, 124888, 4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $fp_0 = 116832;
      $Fontwidth_0 = 21216;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = HEAP32[$fontname >> 2] | 0;
    $call5 = _strncasecmp($4, 111688, 5) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      $fp_0 = 103496;
      $Fontwidth_0 = 86264;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $5 = HEAP32[$fontname >> 2] | 0;
    $call8 = _strncasecmp($5, 107368, 9) | 0;
    $tobool9 = ($call8 | 0) == 0;
    $_ = $tobool9 ? 86264 : 1112;
    $_1 = $tobool9 ? 103496 : 99304;
    $fp_0 = $_1;
    $Fontwidth_0 = $_;
    label = 5;
    break;
   case 5:
    $tobool13 = ($fontpath | 0) == 0;
    if ($tobool13) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    HEAP32[$fontpath >> 2] = $fp_0;
    label = 7;
    break;
   case 7:
    $str = $para | 0;
    $6 = HEAP32[$str >> 2] | 0;
    $tobool16 = ($6 | 0) == 0;
    if ($tobool16) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $7 = HEAP8[$6] | 0;
    $tobool182 = $7 << 24 >> 24 == 0;
    if ($tobool182) {
      label = 10;
      break;
    } else {
      $p_03 = $6;
      $8 = $7;
      label = 9;
      break;
    }
   case 9:
    $incdec_ptr = $p_03 + 1 | 0;
    $idxprom = $8 & 255;
    $arrayidx = $Fontwidth_0 + ($idxprom << 3) | 0;
    $9 = +HEAPF64[$arrayidx >> 3];
    $10 = +HEAPF64[$width >> 3];
    $add = $9 + $10;
    HEAPF64[$width >> 3] = $add;
    $11 = HEAP8[$incdec_ptr] | 0;
    $tobool18 = $11 << 24 >> 24 == 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      $p_03 = $incdec_ptr;
      $8 = $11;
      label = 9;
      break;
    }
   case 10:
    $12 = +HEAPF64[$fontsize >> 3];
    $13 = +HEAPF64[$width >> 3];
    $mul22 = $12 * $13;
    HEAPF64[$width >> 3] = $mul22;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _fontcmpf($a, $b) {
  $a = $a | 0;
  $b = $b | 0;
  return _strcasecmp(HEAP32[$a >> 2] | 0, HEAP32[$b >> 2] | 0) | 0;
}
function _cwrotatepf($agg_result, $p, $cwrot) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $cwrot = $cwrot | 0;
  var $x1 = 0, $0 = 0.0, $y2 = 0, $1 = 0.0, $cwrot_tr = 0, $sub = 0.0, $sub8 = 0.0, $cmp = 0, $sub13 = 0, $cmp14 = 0, $rem = 0, $2 = 0, $3 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x1 = $p | 0;
    $0 = +HEAPF64[$x1 >> 3];
    $y2 = $p + 8 | 0;
    $1 = +HEAPF64[$y2 >> 3];
    $cwrot_tr = $cwrot;
    label = 3;
    break;
   case 3:
    if (($cwrot_tr | 0) == 90) {
      label = 4;
      break;
    } else if (($cwrot_tr | 0) == 180) {
      label = 5;
      break;
    } else if (($cwrot_tr | 0) == 270) {
      label = 6;
      break;
    } else if (($cwrot_tr | 0) == 0) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    HEAPF64[$x1 >> 3] = $1;
    $sub = -0.0 - $0;
    HEAPF64[$y2 >> 3] = $sub;
    label = 12;
    break;
   case 5:
    HEAPF64[$x1 >> 3] = $0;
    $sub8 = -0.0 - $1;
    HEAPF64[$y2 >> 3] = $sub8;
    label = 12;
    break;
   case 6:
    HEAPF64[$x1 >> 3] = $1;
    HEAPF64[$y2 >> 3] = $0;
    label = 12;
    break;
   case 7:
    $cmp = ($cwrot_tr | 0) < 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $sub13 = -$cwrot_tr | 0;
    _ccwrotatepf($agg_result, $p, $sub13);
    label = 13;
    break;
   case 9:
    $cmp14 = ($cwrot_tr | 0) > 360;
    if ($cmp14) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $rem = ($cwrot_tr | 0) % 360;
    $cwrot_tr = $rem;
    label = 3;
    break;
   case 11:
    _rotatepf($agg_result, $p, $cwrot_tr);
    label = 13;
    break;
   case 12:
    $2 = $agg_result;
    $3 = $p;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _ccwrotatepf($agg_result, $p, $ccwrot) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $ccwrot = $ccwrot | 0;
  var $x1 = 0, $0 = 0.0, $y2 = 0, $1 = 0.0, $ccwrot_tr = 0, $sub = 0.0, $sub8 = 0.0, $cmp = 0, $sub13 = 0, $cmp14 = 0, $rem = 0, $sub17 = 0, $2 = 0, $3 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x1 = $p | 0;
    $0 = +HEAPF64[$x1 >> 3];
    $y2 = $p + 8 | 0;
    $1 = +HEAPF64[$y2 >> 3];
    $ccwrot_tr = $ccwrot;
    label = 3;
    break;
   case 3:
    if (($ccwrot_tr | 0) == 90) {
      label = 4;
      break;
    } else if (($ccwrot_tr | 0) == 180) {
      label = 5;
      break;
    } else if (($ccwrot_tr | 0) == 270) {
      label = 6;
      break;
    } else if (($ccwrot_tr | 0) == 0) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $sub = -0.0 - $1;
    HEAPF64[$x1 >> 3] = $sub;
    HEAPF64[$y2 >> 3] = $0;
    label = 12;
    break;
   case 5:
    HEAPF64[$x1 >> 3] = $0;
    $sub8 = -0.0 - $1;
    HEAPF64[$y2 >> 3] = $sub8;
    label = 12;
    break;
   case 6:
    HEAPF64[$x1 >> 3] = $1;
    HEAPF64[$y2 >> 3] = $0;
    label = 12;
    break;
   case 7:
    $cmp = ($ccwrot_tr | 0) < 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $sub13 = -$ccwrot_tr | 0;
    _cwrotatepf($agg_result, $p, $sub13);
    label = 13;
    break;
   case 9:
    $cmp14 = ($ccwrot_tr | 0) > 360;
    if ($cmp14) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $rem = ($ccwrot_tr | 0) % 360;
    $ccwrot_tr = $rem;
    label = 3;
    break;
   case 11:
    $sub17 = 360 - $ccwrot_tr | 0;
    _rotatepf($agg_result, $p, $sub17);
    label = 13;
    break;
   case 12:
    $2 = $agg_result;
    $3 = $p;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _rotatepf($agg_result, $p, $cwrot) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $cwrot = $cwrot | 0;
  var $0 = 0, $cmp = 0, $conv = 0.0, $div = 0.0, $call = 0.0, $call3 = 0.0, $x = 0, $1 = 0.0, $2 = 0.0, $mul = 0.0, $y = 0, $3 = 0.0, $4 = 0.0, $mul4 = 0.0, $sub = 0.0, $mul7 = 0.0, $mul9 = 0.0, $add = 0.0, $P_sroa_0_0__idx = 0, $P_sroa_1_8__idx1 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1084] | 0;
    $cmp = ($0 | 0) == ($cwrot | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = +($cwrot | 0);
    $div = $conv / 6.283185307179586;
    $call = +Math_sin(+$div);
    HEAPF64[541] = $call;
    $call3 = +Math_cos(+$div);
    HEAPF64[543] = $call3;
    HEAP32[1084] = $cwrot;
    label = 4;
    break;
   case 4:
    $x = $p | 0;
    $1 = +HEAPF64[$x >> 3];
    $2 = +HEAPF64[543];
    $mul = $1 * $2;
    $y = $p + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $4 = +HEAPF64[541];
    $mul4 = $3 * $4;
    $sub = $mul - $mul4;
    $mul7 = $2 * $3;
    $mul9 = $1 * $4;
    $add = $mul7 + $mul9;
    $P_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$P_sroa_0_0__idx >> 3] = $sub;
    $P_sroa_1_8__idx1 = $agg_result + 8 | 0;
    HEAPF64[$P_sroa_1_8__idx1 >> 3] = $add;
    STACKTOP = __stackBase__;
    return;
  }
}
function _htmlerror($msg) {
  $msg = $msg | 0;
  var $0 = 0, $tobool = 0, $call = 0, $call1 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[4153] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP8[4153] = 1;
    $call = _htmllineno() | 0;
    $call1 = _agerr(1, 107816, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $msg, HEAP32[tempInt + 8 >> 2] = $call, tempInt) | 0) | 0;
    _error_context();
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return;
  }
}
function _htmllineno() {
  return _XML_GetCurrentLineNumber(HEAP32[1030] | 0) | 0;
}
function _error_context() {
  var $0 = 0, $buf = 0, $1 = 0, $ptr = 0, $2 = 0, $cmp = 0, $3 = 0, $4 = 0, $call = 0, $5 = 0, $6 = 0, $7 = 0, $call1 = 0, $8 = 0, $ptr2 = 0, $9 = 0, $eptr = 0, $10 = 0, $cmp3 = 0, $call4 = 0, $11 = 0, $ptr5 = 0, $12 = 0, $incdec_ptr = 0, $13 = 0, $buf6 = 0, $14 = 0, $ptr7 = 0, $call8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1033] | 0;
    $buf = $0 | 0;
    $1 = HEAP32[$buf >> 2] | 0;
    $ptr = $0 + 4 | 0;
    HEAP32[$ptr >> 2] = $1;
    $2 = HEAP32[1042] | 0;
    $cmp = ($2 | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $3 = HEAP32[1033] | 0;
    $4 = HEAP32[1040] | 0;
    $call = _agxbput_n($3, $4, $2) | 0;
    label = 4;
    break;
   case 4:
    $5 = HEAP32[1033] | 0;
    $6 = HEAP32[1039] | 0;
    $7 = HEAP32[1041] | 0;
    $call1 = _agxbput_n($5, $6, $7) | 0;
    $8 = HEAP32[1033] | 0;
    $ptr2 = $8 + 4 | 0;
    $9 = HEAP32[$ptr2 >> 2] | 0;
    $eptr = $8 + 8 | 0;
    $10 = HEAP32[$eptr >> 2] | 0;
    $cmp3 = $9 >>> 0 < $10 >>> 0;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call4 = _agxbmore($8, 1) | 0;
    label = 6;
    break;
   case 6:
    $11 = HEAP32[1033] | 0;
    $ptr5 = $11 + 4 | 0;
    $12 = HEAP32[$ptr5 >> 2] | 0;
    $incdec_ptr = $12 + 1 | 0;
    HEAP32[$ptr5 >> 2] = $incdec_ptr;
    HEAP8[$12] = 0;
    $13 = HEAP32[1033] | 0;
    $buf6 = $13 | 0;
    $14 = HEAP32[$buf6 >> 2] | 0;
    $ptr7 = $13 + 4 | 0;
    HEAP32[$ptr7 >> 2] = $14;
    $call8 = _agerr(3, 95928, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $14, tempInt) | 0) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _initHTMLlexer($src, $xb, $charset) {
  $src = $src | 0;
  $xb = $xb | 0;
  $charset = $charset | 0;
  var $call1 = 0;
  HEAP32[1033] = $xb;
  _agxbinit(4136, 128, 0);
  HEAP32[1031] = $src;
  HEAP8[4155] = 0;
  HEAP8[4152] = 0;
  HEAP8[4153] = 0;
  HEAP32[1041] = 0;
  HEAP32[1042] = 0;
  HEAP8[4154] = 1;
  $call1 = _XML_ParserCreate(_charsetToStr($charset) | 0) | 0;
  HEAP32[1030] = $call1;
  _XML_SetElementHandler($call1, 598, 384);
  _XML_SetCharacterDataHandler(HEAP32[1030] | 0, 234);
  return 0;
}
function _startElement($user, $name, $atts) {
  $user = $user | 0;
  $name = $name | 0;
  $atts = $atts | 0;
  var $call = 0, $cmp = 0, $call1 = 0, $call1_c = 0, $call2 = 0, $cmp3 = 0, $call4 = 0, $cmp5 = 0, $call8 = 0, $cmp9 = 0, $call11 = 0, $call11_c = 0, $call13 = 0, $cmp14 = 0, $call16 = 0, $call16_c = 0, $call18 = 0, $cmp19 = 0, $call21 = 0, $call21_c = 0, $call23 = 0, $cmp24 = 0, $call26 = 0, $call26_c = 0, $call28 = 0, $cmp29 = 0, $call31 = 0, $call31_c = 0, $call33 = 0, $cmp34 = 0, $call36 = 0, $call36_c = 0, $call38 = 0, $cmp39 = 0, $call41 = 0, $call41_c = 0, $call43 = 0, $cmp44 = 0, $call47 = 0, $cmp48 = 0, $call50 = 0, $call50_c = 0, $call52 = 0, $cmp53 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _strcasecmp($name, 102816) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call1 = _mkTbl($atts) | 0;
    $call1_c = $call1;
    HEAP32[3420] = $call1_c;
    HEAP8[4154] = 0;
    HEAP32[1032] = 278;
    label = 28;
    break;
   case 4:
    $call2 = _strcasecmp($name, 98552) | 0;
    $cmp3 = ($call2 | 0) == 0;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call4 = _strcasecmp($name, 94704) | 0;
    $cmp5 = ($call4 | 0) == 0;
    if ($cmp5) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP8[4154] = 0;
    HEAP32[1032] = 260;
    label = 28;
    break;
   case 7:
    $call8 = _strcasecmp($name, 91176) | 0;
    $cmp9 = ($call8 | 0) == 0;
    if ($cmp9) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAP8[4154] = 1;
    $call11 = _mkCell($atts) | 0;
    $call11_c = $call11;
    HEAP32[3420] = $call11_c;
    HEAP32[1032] = 279;
    label = 28;
    break;
   case 9:
    $call13 = _strcasecmp($name, 157688) | 0;
    $cmp14 = ($call13 | 0) == 0;
    if ($cmp14) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $call16 = _mkFont($atts, 0) | 0;
    $call16_c = $call16;
    HEAP32[3420] = $call16_c;
    HEAP32[1032] = 280;
    label = 28;
    break;
   case 11:
    $call18 = _strcasecmp($name, 154368) | 0;
    $cmp19 = ($call18 | 0) == 0;
    if ($cmp19) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $call21 = _mkFont(0, 1) | 0;
    $call21_c = $call21;
    HEAP32[3420] = $call21_c;
    HEAP32[1032] = 282;
    label = 28;
    break;
   case 13:
    $call23 = _strcasecmp($name, 150744) | 0;
    $cmp24 = ($call23 | 0) == 0;
    if ($cmp24) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $call26 = _mkFont(0, 4) | 0;
    $call26_c = $call26;
    HEAP32[3420] = $call26_c;
    HEAP32[1032] = 283;
    label = 28;
    break;
   case 15:
    $call28 = _strcasecmp($name, 147752) | 0;
    $cmp29 = ($call28 | 0) == 0;
    if ($cmp29) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $call31 = _mkFont(0, 2) | 0;
    $call31_c = $call31;
    HEAP32[3420] = $call31_c;
    HEAP32[1032] = 281;
    label = 28;
    break;
   case 17:
    $call33 = _strcasecmp($name, 144984) | 0;
    $cmp34 = ($call33 | 0) == 0;
    if ($cmp34) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $call36 = _mkFont(0, 8) | 0;
    $call36_c = $call36;
    HEAP32[3420] = $call36_c;
    HEAP32[1032] = 284;
    label = 28;
    break;
   case 19:
    $call38 = _strcasecmp($name, 141928) | 0;
    $cmp39 = ($call38 | 0) == 0;
    if ($cmp39) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $call41 = _mkFont(0, 16) | 0;
    $call41_c = $call41;
    HEAP32[3420] = $call41_c;
    HEAP32[1032] = 285;
    label = 28;
    break;
   case 21:
    $call43 = _strcasecmp($name, 138440) | 0;
    $cmp44 = ($call43 | 0) == 0;
    if ($cmp44) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    _mkBR($atts);
    HEAP32[1032] = 275;
    label = 28;
    break;
   case 23:
    $call47 = _strcasecmp($name, 135696) | 0;
    $cmp48 = ($call47 | 0) == 0;
    if ($cmp48) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $call50 = _mkImg($atts) | 0;
    $call50_c = $call50;
    HEAP32[3420] = $call50_c;
    HEAP32[1032] = 277;
    label = 28;
    break;
   case 25:
    $call52 = _strcasecmp($name, 161368) | 0;
    $cmp53 = ($call52 | 0) == 0;
    if ($cmp53) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    HEAP32[1032] = 262;
    label = 28;
    break;
   case 27:
    _lexerror($name);
    label = 28;
    break;
   case 28:
    return;
  }
}
function _gmalloc($nbytes) {
  $nbytes = $nbytes | 0;
  var $cmp = 0, $call = 0, $cmp1 = 0, $0 = 0, $1 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($nbytes | 0) == 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _malloc($nbytes) | 0;
    $cmp1 = ($call | 0) == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $retval_0 = $call;
      label = 5;
      break;
    }
   case 4:
    $0 = HEAP32[_stderr >> 2] | 0;
    $1 = _fwrite(117e3, 14, 1, $0 | 0) | 0;
    _abort();
    return 0;
    return 0;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _zrealloc($ptr, $size, $elt, $osize) {
  $ptr = $ptr | 0;
  $size = $size | 0;
  $elt = $elt | 0;
  $osize = $osize | 0;
  var $mul = 0, $call = 0, $cmp = 0, $tobool = 0, $or_cond = 0, $0 = 0, $1 = 0, $cmp2 = 0, $mul4 = 0, $add_ptr = 0, $sub = 0, $mul5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $mul = Math_imul($elt, $size);
    $call = _realloc($ptr, $mul) | 0;
    $cmp = ($call | 0) != 0;
    $tobool = ($size | 0) == 0;
    $or_cond = $cmp | $tobool;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP32[_stderr >> 2] | 0;
    $1 = _fwrite(117e3, 14, 1, $0 | 0) | 0;
    _abort();
    return 0;
    return 0;
   case 4:
    $cmp2 = $osize >>> 0 < $size >>> 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $mul4 = Math_imul($osize, $elt);
    $add_ptr = $call + $mul4 | 0;
    $sub = $size - $osize | 0;
    $mul5 = Math_imul($sub, $elt);
    _memset($add_ptr | 0, 0, $mul5 | 0);
    label = 6;
    break;
   case 6:
    return $call | 0;
  }
  return 0;
}
function _grealloc($ptr, $size) {
  $ptr = $ptr | 0;
  $size = $size | 0;
  var $call = 0, $cmp = 0, $tobool = 0, $or_cond = 0, $0 = 0, $1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _realloc($ptr, $size) | 0;
    $cmp = ($call | 0) != 0;
    $tobool = ($size | 0) == 0;
    $or_cond = $cmp | $tobool;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP32[_stderr >> 2] | 0;
    $1 = _fwrite(117e3, 14, 1, $0 | 0) | 0;
    _abort();
    return 0;
    return 0;
   case 4:
    return $call | 0;
  }
  return 0;
}
function _endElement($user, $name) {
  $user = $user | 0;
  $name = $name | 0;
  var $call = 0, $cmp = 0, $call1 = 0, $cmp2 = 0, $call3 = 0, $cmp4 = 0, $call7 = 0, $cmp8 = 0, $call11 = 0, $cmp12 = 0, $call15 = 0, $cmp16 = 0, $call19 = 0, $cmp20 = 0, $call23 = 0, $cmp24 = 0, $call27 = 0, $cmp28 = 0, $call31 = 0, $cmp32 = 0, $call35 = 0, $cmp36 = 0, $call39 = 0, $cmp40 = 0, $0 = 0, $cmp42 = 0, $call46 = 0, $cmp47 = 0, $1 = 0, $cmp49 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _strcasecmp($name, 102816) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[1032] = 264;
    HEAP8[4154] = 1;
    label = 32;
    break;
   case 4:
    $call1 = _strcasecmp($name, 98552) | 0;
    $cmp2 = ($call1 | 0) == 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call3 = _strcasecmp($name, 94704) | 0;
    $cmp4 = ($call3 | 0) == 0;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP32[1032] = 261;
    label = 32;
    break;
   case 7:
    $call7 = _strcasecmp($name, 91176) | 0;
    $cmp8 = ($call7 | 0) == 0;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAP32[1032] = 265;
    HEAP8[4154] = 0;
    label = 32;
    break;
   case 9:
    $call11 = _strcasecmp($name, 161368) | 0;
    $cmp12 = ($call11 | 0) == 0;
    if ($cmp12) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[1032] = 263;
    label = 32;
    break;
   case 11:
    $call15 = _strcasecmp($name, 157688) | 0;
    $cmp16 = ($call15 | 0) == 0;
    if ($cmp16) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAP32[1032] = 266;
    label = 32;
    break;
   case 13:
    $call19 = _strcasecmp($name, 154368) | 0;
    $cmp20 = ($call19 | 0) == 0;
    if ($cmp20) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[1032] = 270;
    label = 32;
    break;
   case 15:
    $call23 = _strcasecmp($name, 150744) | 0;
    $cmp24 = ($call23 | 0) == 0;
    if ($cmp24) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    HEAP32[1032] = 271;
    label = 32;
    break;
   case 17:
    $call27 = _strcasecmp($name, 147752) | 0;
    $cmp28 = ($call27 | 0) == 0;
    if ($cmp28) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[1032] = 269;
    label = 32;
    break;
   case 19:
    $call31 = _strcasecmp($name, 144984) | 0;
    $cmp32 = ($call31 | 0) == 0;
    if ($cmp32) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    HEAP32[1032] = 272;
    label = 32;
    break;
   case 21:
    $call35 = _strcasecmp($name, 141928) | 0;
    $cmp36 = ($call35 | 0) == 0;
    if ($cmp36) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    HEAP32[1032] = 273;
    label = 32;
    break;
   case 23:
    $call39 = _strcasecmp($name, 138440) | 0;
    $cmp40 = ($call39 | 0) == 0;
    if ($cmp40) {
      label = 24;
      break;
    } else {
      label = 27;
      break;
    }
   case 24:
    $0 = HEAP32[1032] | 0;
    $cmp42 = ($0 | 0) == 275;
    if ($cmp42) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    HEAP32[1032] = 274;
    label = 32;
    break;
   case 26:
    HEAP32[1032] = 258;
    label = 32;
    break;
   case 27:
    $call46 = _strcasecmp($name, 135696) | 0;
    $cmp47 = ($call46 | 0) == 0;
    if ($cmp47) {
      label = 28;
      break;
    } else {
      label = 31;
      break;
    }
   case 28:
    $1 = HEAP32[1032] | 0;
    $cmp49 = ($1 | 0) == 277;
    if ($cmp49) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    HEAP32[1032] = 276;
    label = 32;
    break;
   case 30:
    HEAP32[1032] = 259;
    label = 32;
    break;
   case 31:
    _lexerror($name);
    label = 32;
    break;
   case 32:
    return;
  }
}
function _characterData($user, $s, $length) {
  $user = $user | 0;
  $s = $s | 0;
  $length = $length | 0;
  var $0 = 0, $tobool = 0, $tobool14 = 0, $or_cond = 0, $s_addr_07 = 0, $cnt_06 = 0, $i_05 = 0, $incdec_ptr = 0, $1 = 0, $cmp = 0, $inc = 0, $2 = 0, $ptr = 0, $3 = 0, $eptr = 0, $4 = 0, $cmp4 = 0, $call = 0, $5 = 0, $ptr6 = 0, $6 = 0, $incdec_ptr7 = 0, $cnt_1 = 0, $dec = 0, $tobool1 = 0, $tobool9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[4154] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    $tobool14 = ($length | 0) == 0;
    $or_cond = $tobool | $tobool14;
    if ($or_cond) {
      label = 10;
      break;
    } else {
      $i_05 = $length;
      $cnt_06 = 0;
      $s_addr_07 = $s;
      label = 3;
      break;
    }
   case 3:
    $incdec_ptr = $s_addr_07 + 1 | 0;
    $1 = HEAP8[$s_addr_07] | 0;
    $cmp = ($1 & 255) > 31;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $cnt_1 = $cnt_06;
      label = 7;
      break;
    }
   case 4:
    $inc = $cnt_06 + 1 | 0;
    $2 = HEAP32[1033] | 0;
    $ptr = $2 + 4 | 0;
    $3 = HEAP32[$ptr >> 2] | 0;
    $eptr = $2 + 8 | 0;
    $4 = HEAP32[$eptr >> 2] | 0;
    $cmp4 = $3 >>> 0 < $4 >>> 0;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call = _agxbmore($2, 1) | 0;
    label = 6;
    break;
   case 6:
    $5 = HEAP32[1033] | 0;
    $ptr6 = $5 + 4 | 0;
    $6 = HEAP32[$ptr6 >> 2] | 0;
    $incdec_ptr7 = $6 + 1 | 0;
    HEAP32[$ptr6 >> 2] = $incdec_ptr7;
    HEAP8[$6] = $1;
    $cnt_1 = $inc;
    label = 7;
    break;
   case 7:
    $dec = $i_05 - 1 | 0;
    $tobool1 = ($dec | 0) == 0;
    if ($tobool1) {
      label = 8;
      break;
    } else {
      $i_05 = $dec;
      $cnt_06 = $cnt_1;
      $s_addr_07 = $incdec_ptr;
      label = 3;
      break;
    }
   case 8:
    $tobool9 = ($cnt_1 | 0) == 0;
    if ($tobool9) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAP32[1032] = 267;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _clearHTMLlexer() {
  var $or = 0;
  $or = (HEAP8[4153] | HEAP8[4152]) << 24 >> 24;
  _XML_ParserFree(HEAP32[1030] | 0);
  _agxbfree(4136);
  return $or | 0;
}
function _htmllex() {
  var $endp_0 = 0, $0 = 0, $1 = 0, $2 = 0, $cmp7 = 0, $call12 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $s_0 = 0, $endp_1 = 0, $len_0 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $sub_ptr_lhs_cast15 = 0, $sub_ptr_rhs_cast16 = 0, $sub_ptr_sub17 = 0, $tobool = 0, $7 = 0, $8 = 0, $cmp19 = 0, $call21 = 0, $9 = 0, $10 = 0, $call22 = 0, $not_tobool24 = 0, $cond25 = 0, $call26 = 0, $rv_0 = 0, $cmp28 = 0, $11 = 0, $tobool31 = 0, $or_cond = 0, $12 = 0, $call33 = 0, $call34 = 0, $call35 = 0, $call36 = 0, $tobool39 = 0, $13 = 0, $cmp42 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[1032] = 0;
    $endp_0 = 0;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[4155] | 0;
    if (($0 << 24 >> 24 | 0) == 0) {
      label = 4;
      break;
    } else if (($0 << 24 >> 24 | 0) == 2) {
      $retval_0 = -1;
      label = 18;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP8[4155] = 1;
    $len_0 = 6;
    $endp_1 = 0;
    $s_0 = 145800;
    label = 8;
    break;
   case 5:
    $1 = HEAP32[1031] | 0;
    $2 = HEAP8[$1] | 0;
    $cmp7 = $2 << 24 >> 24 == 0;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP8[4155] = 2;
    $len_0 = 7;
    $endp_1 = $endp_0;
    $s_0 = 121800;
    label = 8;
    break;
   case 7:
    $call12 = _findNext($1) | 0;
    $sub_ptr_lhs_cast = $call12;
    $sub_ptr_rhs_cast = $1;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $len_0 = $sub_ptr_sub;
    $endp_1 = $call12;
    $s_0 = $1;
    label = 8;
    break;
   case 8:
    $3 = HEAP32[1039] | 0;
    HEAP32[1040] = $3;
    $4 = HEAP32[1041] | 0;
    HEAP32[1042] = $4;
    HEAP32[1039] = $s_0;
    HEAP32[1041] = $len_0;
    $5 = HEAP32[1035] | 0;
    $6 = HEAP32[1034] | 0;
    $sub_ptr_lhs_cast15 = $5;
    $sub_ptr_rhs_cast16 = $6;
    $sub_ptr_sub17 = $sub_ptr_lhs_cast15 - $sub_ptr_rhs_cast16 | 0;
    $tobool = ($5 | 0) == ($6 | 0);
    $7 = HEAP32[1030] | 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $8 = HEAP32[1036] | 0;
    $cmp19 = $5 >>> 0 < $8 >>> 0;
    if ($cmp19) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call21 = _agxbmore(4136, 1) | 0;
    label = 11;
    break;
   case 11:
    $9 = HEAP32[1035] | 0;
    HEAP8[$9] = 0;
    $10 = HEAP32[1034] | 0;
    HEAP32[1035] = $10;
    $call22 = _XML_Parse($7, $10, $sub_ptr_sub17, 0) | 0;
    $rv_0 = $call22;
    label = 13;
    break;
   case 12:
    $not_tobool24 = ($len_0 | 0) == 0;
    $cond25 = $not_tobool24 & 1;
    $call26 = _XML_Parse($7, $s_0, $len_0, $cond25) | 0;
    $rv_0 = $call26;
    label = 13;
    break;
   case 13:
    $cmp28 = ($rv_0 | 0) != 0;
    $11 = HEAP8[4153] | 0;
    $tobool31 = $11 << 24 >> 24 != 0;
    $or_cond = $cmp28 | $tobool31;
    if ($or_cond) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $12 = HEAP32[1030] | 0;
    $call33 = _XML_GetErrorCode($12) | 0;
    $call34 = _XML_ErrorString($call33) | 0;
    $call35 = _htmllineno() | 0;
    $call36 = _agerr(1, 107816, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $call34, HEAP32[tempInt + 8 >> 2] = $call35, tempInt) | 0) | 0;
    _error_context();
    HEAP8[4153] = 1;
    HEAP32[1032] = 268;
    label = 15;
    break;
   case 15:
    $tobool39 = ($endp_1 | 0) == 0;
    if ($tobool39) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[1031] = $endp_1;
    label = 17;
    break;
   case 17:
    $13 = HEAP32[1032] | 0;
    $cmp42 = ($13 | 0) == 0;
    if ($cmp42) {
      $endp_0 = $endp_1;
      label = 3;
      break;
    } else {
      $retval_0 = $13;
      label = 18;
      break;
    }
   case 18:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _findNext($s) {
  $s = $s | 0;
  var $add_ptr = 0, $0 = 0, $cmp = 0, $1 = 0, $cmp3 = 0, $add_ptr5 = 0, $call = 0, $tobool = 0, $add_ptr7 = 0, $call8 = 0, $t_0 = 0, $2 = 0, $incdec_ptr = 0, $t_1 = 0, $3 = 0, $cmp15 = 0, $call18 = 0, $incdec_ptr20 = 0, $t_2 = 0, $4 = 0, $add_ptr36 = 0, $5 = 0, $cmp38 = 0, $call42 = 0, $6 = 0, $7 = 0, $cmp44 = 0, $call46 = 0, $8 = 0, $incdec_ptr48 = 0, $incdec_ptr50 = 0, $t_3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr = $s + 1 | 0;
    $0 = HEAP8[$s] | 0;
    $cmp = $0 << 24 >> 24 == 60;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $t_2 = $s;
      label = 11;
      break;
    }
   case 3:
    $1 = HEAP8[$add_ptr] | 0;
    $cmp3 = $1 << 24 >> 24 == 33;
    if ($cmp3) {
      label = 4;
      break;
    } else {
      $t_0 = $add_ptr;
      label = 6;
      break;
    }
   case 4:
    $add_ptr5 = $s + 2 | 0;
    $call = _strncmp($add_ptr5 | 0, 115928, 2) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $t_0 = $add_ptr;
      label = 6;
      break;
    }
   case 5:
    $add_ptr7 = $s + 4 | 0;
    $call8 = _eatComment($add_ptr7) | 0;
    $t_1 = $call8;
    label = 8;
    break;
   case 6:
    $2 = HEAP8[$t_0] | 0;
    if (($2 << 24 >> 24 | 0) == 0 | ($2 << 24 >> 24 | 0) == 62) {
      $t_1 = $t_0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $incdec_ptr = $t_0 + 1 | 0;
    $t_0 = $incdec_ptr;
    label = 6;
    break;
   case 8:
    $3 = HEAP8[$t_1] | 0;
    $cmp15 = $3 << 24 >> 24 == 62;
    if ($cmp15) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call18 = _agerr(0, 110904, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    HEAP8[4152] = 1;
    $t_3 = $t_1;
    label = 17;
    break;
   case 10:
    $incdec_ptr20 = $t_1 + 1 | 0;
    $t_3 = $incdec_ptr20;
    label = 17;
    break;
   case 11:
    $4 = HEAP8[$t_2] | 0;
    if (($4 << 24 >> 24 | 0) == 38) {
      label = 12;
      break;
    } else if (($4 << 24 >> 24 | 0) == 0 | ($4 << 24 >> 24 | 0) == 60) {
      $t_3 = $t_2;
      label = 17;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $add_ptr36 = $t_2 + 1 | 0;
    $5 = HEAP8[$add_ptr36] | 0;
    $cmp38 = $5 << 24 >> 24 == 35;
    if ($cmp38) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $call42 = _scanEntity($add_ptr36, 4136) | 0;
    $t_2 = $call42;
    label = 11;
    break;
   case 14:
    $6 = HEAP32[1035] | 0;
    $7 = HEAP32[1036] | 0;
    $cmp44 = $6 >>> 0 < $7 >>> 0;
    if ($cmp44) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call46 = _agxbmore(4136, 1) | 0;
    label = 16;
    break;
   case 16:
    $8 = HEAP32[1035] | 0;
    $incdec_ptr48 = $8 + 1 | 0;
    HEAP32[1035] = $incdec_ptr48;
    HEAP8[$8] = $4;
    $incdec_ptr50 = $t_2 + 1 | 0;
    $t_2 = $incdec_ptr50;
    label = 11;
    break;
   case 17:
    STACKTOP = __stackBase__;
    return $t_3 | 0;
  }
  return 0;
}
function _eatComment($p) {
  $p = $p | 0;
  var $s_0_ph = 0, $depth_0_ph = 0, $tobool = 0, $s_0 = 0, $incdec_ptr = 0, $0 = 0, $inc = 0, $dec = 0, $s_1 = 0, $incdec_ptr9 = 0, $1 = 0, $tobool10 = 0, $add_ptr = 0, $cmp12 = 0, $call = 0, $tobool14 = 0, $call16 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $depth_0_ph = 1;
    $s_0_ph = $p;
    label = 3;
    break;
   case 3:
    $tobool = ($depth_0_ph | 0) == 0;
    $s_0 = $s_0_ph;
    label = 4;
    break;
   case 4:
    if ($tobool) {
      $s_1 = $s_0;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $incdec_ptr = $s_0 + 1 | 0;
    $0 = HEAP8[$s_0] | 0;
    if (($0 << 24 >> 24 | 0) == 60) {
      label = 6;
      break;
    } else if (($0 << 24 >> 24 | 0) == 62) {
      label = 7;
      break;
    } else if (($0 << 24 >> 24 | 0) == 0) {
      $s_1 = $incdec_ptr;
      label = 8;
      break;
    } else {
      $s_0 = $incdec_ptr;
      label = 4;
      break;
    }
   case 6:
    $inc = $depth_0_ph + 1 | 0;
    $depth_0_ph = $inc;
    $s_0_ph = $incdec_ptr;
    label = 3;
    break;
   case 7:
    $dec = $depth_0_ph - 1 | 0;
    $depth_0_ph = $dec;
    $s_0_ph = $incdec_ptr;
    label = 3;
    break;
   case 8:
    $incdec_ptr9 = $s_1 - 1 | 0;
    $1 = HEAP8[$incdec_ptr9] | 0;
    $tobool10 = $1 << 24 >> 24 == 0;
    if ($tobool10) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add_ptr = $s_1 - 3 | 0;
    $cmp12 = $add_ptr >>> 0 < $p >>> 0;
    if ($cmp12) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call = _strncmp($add_ptr | 0, 115928, 2) | 0;
    $tobool14 = ($call | 0) == 0;
    if ($tobool14) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call16 = _agerr(0, 106736, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    HEAP8[4152] = 1;
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return $incdec_ptr9 | 0;
  }
  return 0;
}
function _lexerror($name) {
  $name = $name | 0;
  var $call = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  HEAP32[1032] = 268;
  HEAP8[4153] = 1;
  $call = _htmllineno() | 0;
  _agerr(1, 133232, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $name, HEAP32[tempInt + 8 >> 2] = $call, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _mkTbl($atts) {
  $atts = $atts | 0;
  var $call = 0;
  $call = _zmalloc(112) | 0;
  HEAP32[$call + 92 >> 2] = -1;
  HEAP8[$call + 80 | 0] = -1;
  _doAttrs($call, 3160, 18, $atts, 98456);
  return $call | 0;
}
function _mkCell($atts) {
  $atts = $atts | 0;
  var $call = 0;
  $call = _zmalloc(96) | 0;
  HEAP16[$call + 72 >> 1] = 1;
  HEAP16[$call + 74 >> 1] = 1;
  _doAttrs($call, 53208, 19, $atts, 114152);
  return $call | 0;
}
function _mkFont($atts, $flags) {
  $atts = $atts | 0;
  $flags = $flags | 0;
  var $call = 0, $0 = 0, $size = 0, $1 = 0, $bf_value = 0, $bf_field_offs = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(24) | 0;
    $0 = $call;
    $size = $call + 16 | 0;
    $1 = $size;
    HEAPF64[$1 >> 3] = -1.0;
    $bf_value = $flags & 127;
    $bf_field_offs = $call + 8 | 0;
    $2 = $bf_field_offs;
    $3 = HEAP32[$2 >> 2] | 0;
    $4 = $3 & -128;
    $5 = $4 | $bf_value;
    HEAP32[$2 >> 2] = $5;
    $tobool = ($atts | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _doAttrs($call, 16416, 3, $atts, 118616);
    label = 4;
    break;
   case 4:
    return $0 | 0;
  }
  return 0;
}
function _mkBR($atts) {
  $atts = $atts | 0;
  HEAP32[3420] = 0;
  _doAttrs(13680, 53416, 1, $atts, 122712);
  return;
}
function _mkImg($atts) {
  $atts = $atts | 0;
  var $call = 0;
  $call = _zmalloc(40) | 0;
  _doAttrs($call, 12824, 2, $atts, 131256);
  return $call | 0;
}
function _doAttrs($tp, $items, $nel, $atts, $s) {
  $tp = $tp | 0;
  $items = $items | 0;
  $nel = $nel | 0;
  $atts = $atts | 0;
  $s = $s | 0;
  var $key = 0, $0 = 0, $cmp6 = 0, $name2 = 0, $1 = 0, $2 = 0, $3 = 0, $atts_addr_07 = 0, $incdec_ptr = 0, $incdec_ptr1 = 0, $4 = 0, $call = 0, $tobool = 0, $action = 0, $5 = 0, $6 = 0, $call3 = 0, $7 = 0, $conv5 = 0, $or = 0, $conv4 = 0, $call5 = 0, $storemerge = 0, $8 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $0 = HEAP32[$atts >> 2] | 0;
    $cmp6 = ($0 | 0) == 0;
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $name2 = $key | 0;
    $1 = $key;
    $2 = $items;
    $atts_addr_07 = $atts;
    $3 = $0;
    label = 4;
    break;
   case 4:
    $incdec_ptr = $atts_addr_07 + 4 | 0;
    $incdec_ptr1 = $atts_addr_07 + 8 | 0;
    $4 = HEAP32[$incdec_ptr >> 2] | 0;
    HEAP32[$name2 >> 2] = $3;
    $call = _bsearch($1 | 0, $2 | 0, $nel | 0, 8, 4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $action = $call + 4 | 0;
    $5 = $action;
    $6 = HEAP32[$5 >> 2] | 0;
    $call3 = FUNCTION_TABLE_iii[$6 & 1023]($tp, $4) | 0;
    $7 = HEAP8[4152] | 0;
    $conv5 = $7 & 255;
    $or = $conv5 | $call3;
    $conv4 = $or & 255;
    $storemerge = $conv4;
    label = 7;
    break;
   case 6:
    $call5 = _agerr(0, 124648, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $3, HEAP32[tempInt + 8 >> 2] = $s, tempInt) | 0) | 0;
    $storemerge = 1;
    label = 7;
    break;
   case 7:
    HEAP8[4152] = $storemerge;
    $8 = HEAP32[$incdec_ptr1 >> 2] | 0;
    $cmp = ($8 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      $atts_addr_07 = $incdec_ptr1;
      $3 = $8;
      label = 4;
      break;
    }
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _scalefn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 36 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _srcfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 32 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _icmp($i, $j) {
  $i = $i | 0;
  $j = $j | 0;
  return _strcasecmp(HEAP32[$i >> 2] | 0, HEAP32[$j >> 2] | 0) | 0;
}
function _alignfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext = 0, $conv2 = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $add_ptr8 = 0, $call9 = 0, $tobool10 = 0, $cmp14 = 0, $call18 = 0, $tobool19 = 0, $call22 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 << 24 >> 24;
    $call = _toupper($conv | 0) | 0;
    $sext = $call << 24;
    $conv2 = $sext >> 24;
    if (($conv2 | 0) == 82) {
      label = 3;
      break;
    } else if (($conv2 | 0) == 76) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 121e3) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$p >> 2] = 114;
    $rv_0 = 0;
    label = 11;
    break;
   case 5:
    $add_ptr8 = $v + 1 | 0;
    $call9 = _strcasecmp($add_ptr8, 120248) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP32[$p >> 2] = 108;
    $rv_0 = 0;
    label = 11;
    break;
   case 7:
    $cmp14 = ($conv2 | 0) == 67;
    if ($cmp14) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call18 = _strcasecmp($add_ptr8, 119648) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAP32[$p >> 2] = 110;
    $rv_0 = 0;
    label = 11;
    break;
   case 10:
    $call22 = _agerr(0, 119080, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _fontcolorfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 4 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _facefn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _ptsizefn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0.0, $size = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 116296, 0, 255, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = +($0 | 0);
    $size = $p + 16 | 0;
    HEAPF64[$size >> 3] = $conv;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _doInt($v, $s, $min, $max, $ul) {
  $v = $v | 0;
  $s = $s | 0;
  $min = $min | 0;
  $max = $max | 0;
  $ul = $ul | 0;
  var $ep = 0, $call = 0, $0 = 0, $cmp = 0, $call1 = 0, $cmp2 = 0, $call4 = 0, $cmp6 = 0, $call8 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ep = __stackBase__ | 0;
    $call = _strtol($v | 0, $ep | 0, 10) | 0;
    $0 = HEAP32[$ep >> 2] | 0;
    $cmp = ($0 | 0) == ($v | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call1 = _agerr(0, 115776, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $s, HEAP32[tempInt + 8 >> 2] = $v, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 9;
    break;
   case 4:
    $cmp2 = ($call | 0) > ($max | 0);
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call4 = _agerr(0, 115304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $s, HEAP32[tempInt + 8 >> 2] = $v, HEAP32[tempInt + 16 >> 2] = $max, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 9;
    break;
   case 6:
    $cmp6 = ($call | 0) < ($min | 0);
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call8 = _agerr(0, 114752, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $s, HEAP32[tempInt + 8 >> 2] = $v, HEAP32[tempInt + 16 >> 2] = $min, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 9;
    break;
   case 8:
    HEAP32[$ul >> 2] = $call;
    $rv_0 = 0;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _cell_halignfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext = 0, $conv2 = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $flags = 0, $1 = 0, $or = 0, $add_ptr11 = 0, $call12 = 0, $tobool13 = 0, $flags15 = 0, $2 = 0, $or17 = 0, $add_ptr24 = 0, $call25 = 0, $tobool26 = 0, $flags28 = 0, $3 = 0, $or30 = 0, $add_ptr36 = 0, $call37 = 0, $tobool38 = 0, $call45 = 0, $rv_013 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 << 24 >> 24;
    $call = _toupper($conv | 0) | 0;
    $sext = $call << 24;
    $conv2 = $sext >> 24;
    if (($conv2 | 0) == 76) {
      label = 3;
      break;
    } else if (($conv2 | 0) == 82) {
      label = 5;
      break;
    } else if (($conv2 | 0) == 84) {
      label = 7;
      break;
    } else if (($conv2 | 0) == 67) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 120248) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 4;
    HEAP16[$flags >> 1] = $or;
    $rv_013 = 0;
    label = 11;
    break;
   case 5:
    $add_ptr11 = $v + 1 | 0;
    $call12 = _strcasecmp($add_ptr11, 121e3) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 6:
    $flags15 = $p + 32 | 0;
    $2 = HEAP16[$flags15 >> 1] | 0;
    $or17 = $2 | 2;
    HEAP16[$flags15 >> 1] = $or17;
    $rv_013 = 0;
    label = 11;
    break;
   case 7:
    $add_ptr24 = $v + 1 | 0;
    $call25 = _strcasecmp($add_ptr24, 99264) | 0;
    $tobool26 = ($call25 | 0) == 0;
    if ($tobool26) {
      label = 8;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $flags28 = $p + 32 | 0;
    $3 = HEAP16[$flags28 >> 1] | 0;
    $or30 = $3 | 6;
    HEAP16[$flags28 >> 1] = $or30;
    $rv_013 = 0;
    label = 11;
    break;
   case 9:
    $add_ptr36 = $v + 1 | 0;
    $call37 = _strcasecmp($add_ptr36, 119648) | 0;
    $tobool38 = ($call37 | 0) == 0;
    if ($tobool38) {
      $rv_013 = 0;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call45 = _agerr(0, 98880, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_013 = 1;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return $rv_013 | 0;
  }
  return 0;
}
function _balignfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext = 0, $conv2 = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $flags = 0, $1 = 0, $or = 0, $add_ptr11 = 0, $call12 = 0, $tobool13 = 0, $flags15 = 0, $2 = 0, $or17 = 0, $add_ptr23 = 0, $call24 = 0, $tobool25 = 0, $call31 = 0, $rv_010 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 << 24 >> 24;
    $call = _toupper($conv | 0) | 0;
    $sext = $call << 24;
    $conv2 = $sext >> 24;
    if (($conv2 | 0) == 76) {
      label = 3;
      break;
    } else if (($conv2 | 0) == 82) {
      label = 5;
      break;
    } else if (($conv2 | 0) == 67) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 120248) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 512;
    HEAP16[$flags >> 1] = $or;
    $rv_010 = 0;
    label = 9;
    break;
   case 5:
    $add_ptr11 = $v + 1 | 0;
    $call12 = _strcasecmp($add_ptr11, 121e3) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $flags15 = $p + 32 | 0;
    $2 = HEAP16[$flags15 >> 1] | 0;
    $or17 = $2 | 256;
    HEAP16[$flags15 >> 1] = $or17;
    $rv_010 = 0;
    label = 9;
    break;
   case 7:
    $add_ptr23 = $v + 1 | 0;
    $call24 = _strcasecmp($add_ptr23, 119648) | 0;
    $tobool25 = ($call24 | 0) == 0;
    if ($tobool25) {
      $rv_010 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call31 = _agerr(0, 99696, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_010 = 1;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return $rv_010 | 0;
  }
  return 0;
}
function _bgcolorfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 20 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _borderfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0, $border = 0, $flags = 0, $1 = 0, $or = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 100112, 0, 255, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = $0 & 255;
    $border = $p + 29 | 0;
    HEAP8[$border] = $conv;
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 32;
    HEAP16[$flags >> 1] = $or;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _cellpaddingfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0, $pad = 0, $flags = 0, $1 = 0, $or = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 100592, 0, 255, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = $0 & 255;
    $pad = $p + 30 | 0;
    HEAP8[$pad] = $conv;
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 64;
    HEAP16[$flags >> 1] = $or;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _cellspacingfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0, $space = 0, $flags = 0, $1 = 0, $or = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 100952, -128, 127, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = $0 & 255;
    $space = $p + 28 | 0;
    HEAP8[$space] = $conv;
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 128;
    HEAP16[$flags >> 1] = $or;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _pencolorfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 24 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _colspanfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $cmp = 0, $call2 = 0, $conv = 0, $cspan = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 101896, 0, 65535, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 6;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call2 = _agerr(0, 101520, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $retval_0 = 1;
    label = 6;
    break;
   case 5:
    $conv = $0 & 65535;
    $cspan = $p + 72 | 0;
    HEAP16[$cspan >> 1] = $conv;
    $retval_0 = 0;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _fixedsizefn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext = 0, $conv2 = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $flags = 0, $1 = 0, $or = 0, $add_ptr10 = 0, $call11 = 0, $tobool12 = 0, $call14 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 & 255;
    $call = _toupper($conv | 0) | 0;
    $sext = $call << 24;
    $conv2 = $sext >> 24;
    if (($conv2 | 0) == 84) {
      label = 3;
      break;
    } else if (($conv2 | 0) == 70) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 103064) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 1;
    HEAP16[$flags >> 1] = $or;
    $rv_0 = 0;
    label = 7;
    break;
   case 5:
    $add_ptr10 = $v + 1 | 0;
    $call11 = _strcasecmp($add_ptr10, 102728) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      $rv_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call14 = _agerr(0, 102368, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _heightfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0, $height = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 103432, 0, 65535, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = $0 & 65535;
    $height = $p + 36 | 0;
    HEAP16[$height >> 1] = $conv;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _hreffn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _idfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 16 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _portfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 4 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _rowspanfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $cmp = 0, $call2 = 0, $conv = 0, $rspan = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 104304, 0, 65535, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 6;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call2 = _agerr(0, 103896, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $retval_0 = 1;
    label = 6;
    break;
   case 5:
    $conv = $0 & 65535;
    $rspan = $p + 74 | 0;
    HEAP16[$rspan >> 1] = $conv;
    $retval_0 = 0;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _targetfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 8 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _titlefn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  HEAP32[$p + 12 >> 2] = _strdup($v | 0) | 0;
  return 0;
}
function _valignfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext = 0, $conv2 = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $flags = 0, $1 = 0, $or = 0, $add_ptr11 = 0, $call12 = 0, $tobool13 = 0, $flags15 = 0, $2 = 0, $or17 = 0, $add_ptr23 = 0, $call24 = 0, $tobool25 = 0, $call27 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 << 24 >> 24;
    $call = _toupper($conv | 0) | 0;
    $sext = $call << 24;
    $conv2 = $sext >> 24;
    if (($conv2 | 0) == 66) {
      label = 3;
      break;
    } else if (($conv2 | 0) == 84) {
      label = 5;
      break;
    } else if (($conv2 | 0) == 77) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 105888) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 16;
    HEAP16[$flags >> 1] = $or;
    $rv_0 = 0;
    label = 9;
    break;
   case 5:
    $add_ptr11 = $v + 1 | 0;
    $call12 = _strcasecmp($add_ptr11, 105528) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $flags15 = $p + 32 | 0;
    $2 = HEAP16[$flags15 >> 1] | 0;
    $or17 = $2 | 8;
    HEAP16[$flags15 >> 1] = $or17;
    $rv_0 = 0;
    label = 9;
    break;
   case 7:
    $add_ptr23 = $v + 1 | 0;
    $call24 = _strcasecmp($add_ptr23, 105184) | 0;
    $tobool25 = ($call24 | 0) == 0;
    if ($tobool25) {
      $rv_0 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call27 = _agerr(0, 104832, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _widthfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0, $width = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 106272, 0, 65535, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = $0 & 65535;
    $width = $p + 34 | 0;
    HEAP16[$width >> 1] = $conv;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _halignfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext = 0, $conv2 = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $flags = 0, $1 = 0, $or = 0, $add_ptr11 = 0, $call12 = 0, $tobool13 = 0, $flags15 = 0, $2 = 0, $or17 = 0, $add_ptr23 = 0, $call24 = 0, $tobool25 = 0, $call27 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 << 24 >> 24;
    $call = _toupper($conv | 0) | 0;
    $sext = $call << 24;
    $conv2 = $sext >> 24;
    if (($conv2 | 0) == 76) {
      label = 3;
      break;
    } else if (($conv2 | 0) == 82) {
      label = 5;
      break;
    } else if (($conv2 | 0) == 67) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 120248) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $flags = $p + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $or = $1 | 4;
    HEAP16[$flags >> 1] = $or;
    $rv_0 = 0;
    label = 9;
    break;
   case 5:
    $add_ptr11 = $v + 1 | 0;
    $call12 = _strcasecmp($add_ptr11, 121e3) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $flags15 = $p + 32 | 0;
    $2 = HEAP16[$flags15 >> 1] | 0;
    $or17 = $2 | 2;
    HEAP16[$flags15 >> 1] = $or17;
    $rv_0 = 0;
    label = 9;
    break;
   case 7:
    $add_ptr23 = $v + 1 | 0;
    $call24 = _strcasecmp($add_ptr23, 119648) | 0;
    $tobool25 = ($call24 | 0) == 0;
    if ($tobool25) {
      $rv_0 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call27 = _agerr(0, 119080, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _cellborderfn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $u = 0, $call = 0, $tobool = 0, $0 = 0, $conv = 0, $cb = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = __stackBase__ | 0;
    $call = _doInt($v, 96384, 0, 127, $u) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$u >> 2] | 0;
    $conv = $0 & 255;
    $cb = $p + 80 | 0;
    HEAP8[$cb] = $conv;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _stylefn($p, $v) {
  $p = $p | 0;
  $v = $v | 0;
  var $0 = 0, $conv = 0, $call = 0, $sext_mask = 0, $cmp = 0, $add_ptr = 0, $call4 = 0, $tobool = 0, $style = 0, $call5 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$v] | 0;
    $conv = $0 << 24 >> 24;
    $call = _toupper($conv | 0) | 0;
    $sext_mask = $call & 255;
    $cmp = ($sext_mask | 0) == 82;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $add_ptr = $v + 1 | 0;
    $call4 = _strcasecmp($add_ptr, 97232) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $style = $p + 104 | 0;
    HEAP8[$style] = 2;
    $rv_0 = 0;
    label = 6;
    break;
   case 5:
    $call5 = _agerr(0, 96872, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $v, tempInt) | 0) | 0;
    $rv_0 = 1;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _htmlparse() {
  var $htmlssa = 0, $htmlvsa = 0, $arraydecay = 0, $arraydecay1 = 0, $htmlvsp_0 = 0, $htmlssp_0 = 0, $htmlerrstatus_0 = 0, $htmlstate_0 = 0, $incdec_ptr = 0, $htmlvs_0 = 0, $htmlvsp_1 = 0, $htmlstacksize_0 = 0, $htmlssp_1 = 0, $htmlss_0 = 0, $htmlerrstatus_1 = 0, $htmlstate_1 = 0, $conv = 0, $add_ptr_sum = 0, $add_ptr2 = 0, $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $sub_ptr_div = 0, $add = 0, $cmp4 = 0, $mul = 0, $cmp7 = 0, $_mul = 0, $mul11 = 0, $add12132 = 0, $call = 0, $tobool = 0, $0 = 0, $htmlss_alloc = 0, $1 = 0, $mul15 = 0, $2 = 0, $div = 0, $htmlvs_alloc = 0, $3 = 0, $4 = 0, $mul22 = 0, $cmp30 = 0, $add_ptr35 = 0, $add_ptr37 = 0, $add_ptr38_sum = 0, $cmp40 = 0, $htmlvs_1 = 0, $htmlvsp_2 = 0, $htmlstacksize_2 = 0, $htmlssp_2 = 0, $htmlss_1 = 0, $cmp45 = 0, $arrayidx = 0, $5 = 0, $conv49 = 0, $cmp50 = 0, $6 = 0, $cmp54 = 0, $call57 = 0, $7 = 0, $cmp59 = 0, $cmp62 = 0, $arrayidx64 = 0, $8 = 0, $conv65 = 0, $htmltoken_2 = 0, $add67 = 0, $9 = 0, $arrayidx73 = 0, $10 = 0, $conv74 = 0, $cmp75 = 0, $arrayidx79 = 0, $11 = 0, $conv80 = 0, $cmp81 = 0, $cmp84 = 0, $sub = 0, $tobool92 = 0, $dec = 0, $htmlerrstatus_1_dec = 0, $incdec_ptr95 = 0, $12 = 0, $13 = 0, $arrayidx96 = 0, $14 = 0, $conv97 = 0, $cmp98 = 0, $htmln_0 = 0, $arrayidx102 = 0, $15 = 0, $conv103 = 0, $sub104 = 0, $htmlval_sroa_0_0__idx18 = 0, $htmlval_sroa_0_0_copyload19 = 0, $arrayidx106 = 0, $txt = 0, $16 = 0, $17 = 0, $call107 = 0, $arrayidx109 = 0, $tbl = 0, $18 = 0, $19 = 0, $call110 = 0, $call113 = 0, $20 = 0, $21 = 0, $i = 0, $22 = 0, $font = 0, $23 = 0, $font123 = 0, $24 = 0, $font127 = 0, $25 = 0, $font131 = 0, $26 = 0, $font135 = 0, $27 = 0, $font139 = 0, $28 = 0, $i143 = 0, $29 = 0, $i147 = 0, $30 = 0, $31 = 0, $ptr = 0, $32 = 0, $eptr = 0, $33 = 0, $cmp150 = 0, $call153 = 0, $34 = 0, $ptr157 = 0, $35 = 0, $incdec_ptr158 = 0, $36 = 0, $buf = 0, $37 = 0, $ptr159 = 0, $call160 = 0, $tobool161 = 0, $38 = 0, $tbl165 = 0, $39 = 0, $40 = 0, $_c = 0, $41 = 0, $42 = 0, $call166 = 0, $43 = 0, $rows = 0, $call166_c = 0, $44 = 0, $45 = 0, $cfont = 0, $46 = 0, $call173 = 0, $47 = 0, $font176 = 0, $48 = 0, $49 = 0, $50 = 0, $ptr181 = 0, $51 = 0, $eptr182 = 0, $52 = 0, $cmp183 = 0, $call186 = 0, $53 = 0, $ptr190 = 0, $54 = 0, $incdec_ptr191 = 0, $55 = 0, $buf192 = 0, $56 = 0, $ptr193 = 0, $call194 = 0, $tobool195 = 0, $57 = 0, $58 = 0, $u199 = 0, $prev201 = 0, $59 = 0, $tbl204 = 0, $60 = 0, $61 = 0, $arrayidx207 = 0, $tbl208 = 0, $62 = 0, $63 = 0, $arrayidx211 = 0, $tbl212 = 0, $64 = 0, $65 = 0, $arrayidx215 = 0, $tbl216 = 0, $66 = 0, $67 = 0, $arrayidx219 = 0, $tbl220 = 0, $68 = 0, $69 = 0, $arrayidx224 = 0, $cell = 0, $70 = 0, $tbl226 = 0, $71 = 0, $72 = 0, $arrayidx228 = 0, $cell229 = 0, $73 = 0, $txt231 = 0, $74 = 0, $75 = 0, $arrayidx233 = 0, $cell234 = 0, $76 = 0, $img = 0, $77 = 0, $78 = 0, $cell238 = 0, $79 = 0, $call239 = 0, $80 = 0, $arrayidx241 = 0, $img242 = 0, $81 = 0, $82 = 0, $img246 = 0, $83 = 0, $84 = 0, $htmlval_sroa_0_0 = 0, $idx_neg = 0, $add_ptr250 = 0, $add_ptr248_sum = 0, $incdec_ptr251 = 0, $htmlval_sroa_0_0__idx = 0, $arrayidx252 = 0, $85 = 0, $conv253 = 0, $sub254 = 0, $arrayidx255 = 0, $86 = 0, $conv256 = 0, $87 = 0, $conv257 = 0, $add258 = 0, $88 = 0, $arrayidx264 = 0, $89 = 0, $conv265 = 0, $cmp267 = 0, $arrayidx270 = 0, $90 = 0, $conv271 = 0, $arrayidx274 = 0, $91 = 0, $conv275 = 0, $92 = 0, $inc = 0, $93 = 0, $cmp283 = 0, $cmp286 = 0, $htmlvsp_3 = 0, $htmlssp_3 = 0, $htmlstate_2 = 0, $arrayidx298 = 0, $94 = 0, $cmp300 = 0, $conv299 = 0, $add303 = 0, $cmp312 = 0, $arrayidx315 = 0, $95 = 0, $cmp317 = 0, $cmp323 = 0, $add_ptr329 = 0, $add_ptr330 = 0, $96 = 0, $conv331 = 0, $conv316 = 0, $incdec_ptr332 = 0, $97 = 0, $98 = 0, $htmlresult_0 = 0, $htmlss_3 = 0, $cmp348 = 0, $99 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1200 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $htmlssa = __stackBase__ | 0;
    $htmlvsa = __stackBase__ + 400 | 0;
    $arraydecay = $htmlssa | 0;
    $arraydecay1 = $htmlvsa | 0;
    HEAP32[3418] = 0;
    HEAP32[3502] = -2;
    $htmlstate_1 = 0;
    $htmlerrstatus_1 = 0;
    $htmlss_0 = $arraydecay;
    $htmlssp_1 = $arraydecay;
    $htmlstacksize_0 = 200;
    $htmlvsp_1 = $arraydecay1;
    $htmlvs_0 = $arraydecay1;
    label = 4;
    break;
   case 3:
    $incdec_ptr = $htmlssp_0 + 2 | 0;
    $htmlstate_1 = $htmlstate_0;
    $htmlerrstatus_1 = $htmlerrstatus_0;
    $htmlss_0 = $htmlss_1;
    $htmlssp_1 = $incdec_ptr;
    $htmlstacksize_0 = $htmlstacksize_2;
    $htmlvsp_1 = $htmlvsp_0;
    $htmlvs_0 = $htmlvs_1;
    label = 4;
    break;
   case 4:
    $conv = $htmlstate_1 & 65535;
    HEAP16[$htmlssp_1 >> 1] = $conv;
    $add_ptr_sum = $htmlstacksize_0 - 1 | 0;
    $add_ptr2 = $htmlss_0 + ($add_ptr_sum << 1) | 0;
    $cmp = $add_ptr2 >>> 0 > $htmlssp_1 >>> 0;
    if ($cmp) {
      $htmlss_1 = $htmlss_0;
      $htmlssp_2 = $htmlssp_1;
      $htmlstacksize_2 = $htmlstacksize_0;
      $htmlvsp_2 = $htmlvsp_1;
      $htmlvs_1 = $htmlvs_0;
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $sub_ptr_lhs_cast = $htmlssp_1;
    $sub_ptr_rhs_cast = $htmlss_0;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $sub_ptr_div = $sub_ptr_sub >> 1;
    $add = $sub_ptr_div + 1 | 0;
    $cmp4 = $htmlstacksize_0 >>> 0 > 9999;
    if ($cmp4) {
      label = 83;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $mul = $htmlstacksize_0 << 1;
    $cmp7 = $mul >>> 0 > 1e4;
    $_mul = $cmp7 ? 1e4 : $mul;
    $mul11 = $_mul * 6 & -1;
    $add12132 = $mul11 | 3;
    $call = _malloc($add12132) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 83;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $0 = $call;
    $htmlss_alloc = $call;
    $1 = $htmlss_0;
    $mul15 = $add << 1;
    _memcpy($call | 0, $1 | 0, $mul15);
    $2 = $_mul >>> 1;
    $div = $2 & 1073741823;
    $htmlvs_alloc = $0 + ($div << 2) | 0;
    $3 = $htmlvs_alloc;
    $4 = $htmlvs_0;
    $mul22 = $add << 2;
    _memcpy($3 | 0, $4 | 0, $mul22);
    $cmp30 = ($htmlss_0 | 0) == ($arraydecay | 0);
    if ($cmp30) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free($1);
    label = 9;
    break;
   case 9:
    $add_ptr35 = $htmlss_alloc + ($sub_ptr_div << 1) | 0;
    $add_ptr37 = $htmlvs_alloc + ($sub_ptr_div << 2) | 0;
    $add_ptr38_sum = $_mul - 1 | 0;
    $cmp40 = ($add_ptr38_sum | 0) > ($sub_ptr_div | 0);
    if ($cmp40) {
      $htmlss_1 = $htmlss_alloc;
      $htmlssp_2 = $add_ptr35;
      $htmlstacksize_2 = $_mul;
      $htmlvsp_2 = $add_ptr37;
      $htmlvs_1 = $htmlvs_alloc;
      label = 10;
      break;
    } else {
      $htmlss_3 = $htmlss_alloc;
      $htmlresult_0 = 1;
      label = 84;
      break;
    }
   case 10:
    $cmp45 = ($htmlstate_1 | 0) == 27;
    if ($cmp45) {
      $htmlss_3 = $htmlss_1;
      $htmlresult_0 = 0;
      label = 84;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $arrayidx = 13480 + ($htmlstate_1 << 1) | 0;
    $5 = HEAP16[$arrayidx >> 1] | 0;
    $conv49 = $5 << 16 >> 16;
    $cmp50 = $5 << 16 >> 16 == -11;
    if ($cmp50) {
      label = 24;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $6 = HEAP32[3502] | 0;
    $cmp54 = ($6 | 0) == -2;
    if ($cmp54) {
      label = 13;
      break;
    } else {
      $7 = $6;
      label = 14;
      break;
    }
   case 13:
    $call57 = _htmllex() | 0;
    HEAP32[3502] = $call57;
    $7 = $call57;
    label = 14;
    break;
   case 14:
    $cmp59 = ($7 | 0) < 1;
    if ($cmp59) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    HEAP32[3502] = 0;
    $htmltoken_2 = 0;
    label = 18;
    break;
   case 16:
    $cmp62 = $7 >>> 0 < 286;
    if ($cmp62) {
      label = 17;
      break;
    } else {
      $htmltoken_2 = 2;
      label = 18;
      break;
    }
   case 17:
    $arrayidx64 = $7 + 12840 | 0;
    $8 = HEAP8[$arrayidx64] | 0;
    $conv65 = $8 & 255;
    $htmltoken_2 = $conv65;
    label = 18;
    break;
   case 18:
    $add67 = $htmltoken_2 + $conv49 | 0;
    $9 = $add67 >>> 0 > 181;
    if ($9) {
      label = 24;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $arrayidx73 = $add67 + 13824 | 0;
    $10 = HEAP8[$arrayidx73] | 0;
    $conv74 = $10 << 24 >> 24;
    $cmp75 = ($conv74 | 0) == ($htmltoken_2 | 0);
    if ($cmp75) {
      label = 20;
      break;
    } else {
      label = 24;
      break;
    }
   case 20:
    $arrayidx79 = $add67 + 13128 | 0;
    $11 = HEAP8[$arrayidx79] | 0;
    $conv80 = $11 << 24 >> 24;
    $cmp81 = $11 << 24 >> 24 < 1;
    if ($cmp81) {
      label = 21;
      break;
    } else {
      label = 23;
      break;
    }
   case 21:
    $cmp84 = $11 << 24 >> 24 == 0;
    if ($cmp84) {
      label = 72;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $sub = -$conv80 | 0;
    $htmln_0 = $sub;
    label = 25;
    break;
   case 23:
    $tobool92 = ($htmlerrstatus_1 | 0) == 0;
    $dec = $htmlerrstatus_1 - 1 | 0;
    $htmlerrstatus_1_dec = $tobool92 ? 0 : $dec;
    HEAP32[3502] = -2;
    $incdec_ptr95 = $htmlvsp_2 + 4 | 0;
    $12 = HEAP32[3420] | 0;
    $13 = $incdec_ptr95 | 0;
    HEAP32[$13 >> 2] = $12;
    $htmlstate_0 = $conv80;
    $htmlerrstatus_0 = $htmlerrstatus_1_dec;
    $htmlssp_0 = $htmlssp_2;
    $htmlvsp_0 = $incdec_ptr95;
    label = 3;
    break;
   case 24:
    $arrayidx96 = $htmlstate_1 + 13728 | 0;
    $14 = HEAP8[$arrayidx96] | 0;
    $conv97 = $14 & 255;
    $cmp98 = $14 << 24 >> 24 == 0;
    if ($cmp98) {
      label = 72;
      break;
    } else {
      $htmln_0 = $conv97;
      label = 25;
      break;
    }
   case 25:
    $arrayidx102 = $htmln_0 + 13312 | 0;
    $15 = HEAP8[$arrayidx102] | 0;
    $conv103 = $15 & 255;
    $sub104 = 1 - $conv103 | 0;
    $htmlval_sroa_0_0__idx18 = $htmlvsp_2 + ($sub104 << 2) | 0;
    $htmlval_sroa_0_0_copyload19 = HEAP32[$htmlval_sroa_0_0__idx18 >> 2] | 0;
    if (($htmln_0 | 0) == 2) {
      label = 26;
      break;
    } else if (($htmln_0 | 0) == 3) {
      label = 27;
      break;
    } else if (($htmln_0 | 0) == 4) {
      label = 28;
      break;
    } else if (($htmln_0 | 0) == 5) {
      label = 29;
      break;
    } else if (($htmln_0 | 0) == 8) {
      label = 30;
      break;
    } else if (($htmln_0 | 0) == 9) {
      label = 31;
      break;
    } else if (($htmln_0 | 0) == 16) {
      label = 32;
      break;
    } else if (($htmln_0 | 0) == 17) {
      label = 33;
      break;
    } else if (($htmln_0 | 0) == 18) {
      label = 34;
      break;
    } else if (($htmln_0 | 0) == 19) {
      label = 35;
      break;
    } else if (($htmln_0 | 0) == 20) {
      label = 36;
      break;
    } else if (($htmln_0 | 0) == 21) {
      label = 37;
      break;
    } else if (($htmln_0 | 0) == 22) {
      label = 38;
      break;
    } else if (($htmln_0 | 0) == 23) {
      label = 39;
      break;
    } else if (($htmln_0 | 0) == 24) {
      label = 40;
      break;
    } else if (($htmln_0 | 0) == 25) {
      label = 41;
      break;
    } else if (($htmln_0 | 0) == 26) {
      label = 42;
      break;
    } else if (($htmln_0 | 0) == 27) {
      label = 43;
      break;
    } else if (($htmln_0 | 0) == 28) {
      label = 44;
      break;
    } else if (($htmln_0 | 0) == 29) {
      label = 45;
      break;
    } else if (($htmln_0 | 0) == 32) {
      label = 46;
      break;
    } else if (($htmln_0 | 0) == 33) {
      label = 51;
      break;
    } else if (($htmln_0 | 0) == 34) {
      label = 56;
      break;
    } else if (($htmln_0 | 0) == 35) {
      label = 57;
      break;
    } else if (($htmln_0 | 0) == 36) {
      label = 58;
      break;
    } else if (($htmln_0 | 0) == 37) {
      label = 59;
      break;
    } else if (($htmln_0 | 0) == 38) {
      label = 60;
      break;
    } else if (($htmln_0 | 0) == 43) {
      label = 61;
      break;
    } else if (($htmln_0 | 0) == 47) {
      label = 62;
      break;
    } else if (($htmln_0 | 0) == 49) {
      label = 63;
      break;
    } else if (($htmln_0 | 0) == 51) {
      label = 64;
      break;
    } else if (($htmln_0 | 0) == 53) {
      label = 65;
      break;
    } else if (($htmln_0 | 0) == 55) {
      label = 66;
      break;
    } else if (($htmln_0 | 0) == 56) {
      label = 67;
      break;
    } else {
      $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
      label = 68;
      break;
    }
   case 26:
    $arrayidx106 = $htmlvsp_2 - 4 | 0;
    $txt = $arrayidx106;
    $16 = HEAP32[$txt >> 2] | 0;
    $17 = $16;
    $call107 = _mkLabel($17, 2) | 0;
    HEAP32[41784] = $call107;
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 27:
    $arrayidx109 = $htmlvsp_2 - 4 | 0;
    $tbl = $arrayidx109;
    $18 = HEAP32[$tbl >> 2] | 0;
    $19 = $18;
    $call110 = _mkLabel($19, 1) | 0;
    HEAP32[41784] = $call110;
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 28:
    _cleanup();
    $htmlss_3 = $htmlss_1;
    $htmlresult_0 = 1;
    label = 84;
    break;
   case 29:
    $call113 = _mkText() | 0;
    $20 = $call113;
    $htmlval_sroa_0_0 = $20;
    label = 68;
    break;
   case 30:
    $21 = HEAP32[41776] | 0;
    _appendFItemList($21);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 31:
    $i = $htmlvsp_2 | 0;
    $22 = HEAP32[$i >> 2] | 0;
    _appendFLineList($22);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 32:
    $font = $htmlvsp_2;
    $23 = HEAP32[$font >> 2] | 0;
    _pushFont($23);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 33:
    _popFont();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 34:
    $font123 = $htmlvsp_2;
    $24 = HEAP32[$font123 >> 2] | 0;
    _pushFont($24);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 35:
    _popFont();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 36:
    $font127 = $htmlvsp_2;
    $25 = HEAP32[$font127 >> 2] | 0;
    _pushFont($25);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 37:
    _popFont();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 38:
    $font131 = $htmlvsp_2;
    $26 = HEAP32[$font131 >> 2] | 0;
    _pushFont($26);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 39:
    _popFont();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 40:
    $font135 = $htmlvsp_2;
    $27 = HEAP32[$font135 >> 2] | 0;
    _pushFont($27);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 41:
    _popFont();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 42:
    $font139 = $htmlvsp_2;
    $28 = HEAP32[$font139 >> 2] | 0;
    _pushFont($28);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 43:
    _popFont();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 44:
    $i143 = $htmlvsp_2 - 4 | 0;
    $29 = HEAP32[$i143 >> 2] | 0;
    $htmlval_sroa_0_0 = $29;
    label = 68;
    break;
   case 45:
    $i147 = $htmlvsp_2 | 0;
    $30 = HEAP32[$i147 >> 2] | 0;
    $htmlval_sroa_0_0 = $30;
    label = 68;
    break;
   case 46:
    $31 = HEAP32[41776] | 0;
    $ptr = $31 + 4 | 0;
    $32 = HEAP32[$ptr >> 2] | 0;
    $eptr = $31 + 8 | 0;
    $33 = HEAP32[$eptr >> 2] | 0;
    $cmp150 = $32 >>> 0 < $33 >>> 0;
    if ($cmp150) {
      label = 48;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $call153 = _agxbmore($31, 1) | 0;
    label = 48;
    break;
   case 48:
    $34 = HEAP32[41776] | 0;
    $ptr157 = $34 + 4 | 0;
    $35 = HEAP32[$ptr157 >> 2] | 0;
    $incdec_ptr158 = $35 + 1 | 0;
    HEAP32[$ptr157 >> 2] = $incdec_ptr158;
    HEAP8[$35] = 0;
    $36 = HEAP32[41776] | 0;
    $buf = $36 | 0;
    $37 = HEAP32[$buf >> 2] | 0;
    $ptr159 = $36 + 4 | 0;
    HEAP32[$ptr159 >> 2] = $37;
    $call160 = _nonSpace($37) | 0;
    $tobool161 = ($call160 | 0) == 0;
    if ($tobool161) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    _htmlerror(104648);
    _cleanup();
    $htmlss_3 = $htmlss_1;
    $htmlresult_0 = 1;
    label = 84;
    break;
   case 50:
    $38 = HEAP32[41782] | 0;
    $tbl165 = $htmlvsp_2;
    $39 = HEAP32[$tbl165 >> 2] | 0;
    $40 = $39 + 72 | 0;
    $_c = $38;
    HEAP32[$40 >> 2] = $_c;
    $41 = HEAP32[41976] | 0;
    $42 = $41;
    $call166 = _dtopen(4280, $42) | 0;
    $43 = HEAP32[$tbl165 >> 2] | 0;
    $rows = $43 + 76 | 0;
    $call166_c = $call166;
    HEAP32[$rows >> 2] = $call166_c;
    $44 = HEAP32[$tbl165 >> 2] | 0;
    HEAP32[41782] = $44;
    $45 = HEAP32[41774] | 0;
    $cfont = $45 | 0;
    $46 = HEAP32[$cfont >> 2] | 0;
    $call173 = _dupFont($46) | 0;
    $47 = HEAP32[$tbl165 >> 2] | 0;
    $font176 = $47 + 100 | 0;
    HEAP32[$font176 >> 2] = $call173;
    $48 = HEAP32[$tbl165 >> 2] | 0;
    $49 = $48;
    $htmlval_sroa_0_0 = $49;
    label = 68;
    break;
   case 51:
    $50 = HEAP32[41776] | 0;
    $ptr181 = $50 + 4 | 0;
    $51 = HEAP32[$ptr181 >> 2] | 0;
    $eptr182 = $50 + 8 | 0;
    $52 = HEAP32[$eptr182 >> 2] | 0;
    $cmp183 = $51 >>> 0 < $52 >>> 0;
    if ($cmp183) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $call186 = _agxbmore($50, 1) | 0;
    label = 53;
    break;
   case 53:
    $53 = HEAP32[41776] | 0;
    $ptr190 = $53 + 4 | 0;
    $54 = HEAP32[$ptr190 >> 2] | 0;
    $incdec_ptr191 = $54 + 1 | 0;
    HEAP32[$ptr190 >> 2] = $incdec_ptr191;
    HEAP8[$54] = 0;
    $55 = HEAP32[41776] | 0;
    $buf192 = $55 | 0;
    $56 = HEAP32[$buf192 >> 2] | 0;
    $ptr193 = $55 + 4 | 0;
    HEAP32[$ptr193 >> 2] = $56;
    $call194 = _nonSpace($56) | 0;
    $tobool195 = ($call194 | 0) == 0;
    if ($tobool195) {
      label = 55;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    _htmlerror(143352);
    _cleanup();
    $htmlss_3 = $htmlss_1;
    $htmlresult_0 = 1;
    label = 84;
    break;
   case 55:
    $57 = HEAP32[41782] | 0;
    $58 = $57;
    $u199 = $57 + 72 | 0;
    $prev201 = $u199;
    $59 = HEAP32[$prev201 >> 2] | 0;
    HEAP32[41782] = $59;
    $htmlval_sroa_0_0 = $58;
    label = 68;
    break;
   case 56:
    $tbl204 = $htmlvsp_2;
    $60 = HEAP32[$tbl204 >> 2] | 0;
    $61 = $60;
    $htmlval_sroa_0_0 = $61;
    label = 68;
    break;
   case 57:
    $arrayidx207 = $htmlvsp_2 - 4 | 0;
    $tbl208 = $arrayidx207;
    $62 = HEAP32[$tbl208 >> 2] | 0;
    $63 = $62;
    $htmlval_sroa_0_0 = $63;
    label = 68;
    break;
   case 58:
    $arrayidx211 = $htmlvsp_2 - 4 | 0;
    $tbl212 = $arrayidx211;
    $64 = HEAP32[$tbl212 >> 2] | 0;
    $65 = $64;
    $htmlval_sroa_0_0 = $65;
    label = 68;
    break;
   case 59:
    $arrayidx215 = $htmlvsp_2 - 4 | 0;
    $tbl216 = $arrayidx215;
    $66 = HEAP32[$tbl216 >> 2] | 0;
    $67 = $66;
    $htmlval_sroa_0_0 = $67;
    label = 68;
    break;
   case 60:
    $arrayidx219 = $htmlvsp_2 - 4 | 0;
    $tbl220 = $arrayidx219;
    $68 = HEAP32[$tbl220 >> 2] | 0;
    $69 = $68;
    $htmlval_sroa_0_0 = $69;
    label = 68;
    break;
   case 61:
    _addRow();
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 62:
    $arrayidx224 = $htmlvsp_2 - 4 | 0;
    $cell = $arrayidx224;
    $70 = HEAP32[$cell >> 2] | 0;
    $tbl226 = $htmlvsp_2;
    $71 = HEAP32[$tbl226 >> 2] | 0;
    $72 = $71;
    _setCell($70, $72, 1);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 63:
    $arrayidx228 = $htmlvsp_2 - 4 | 0;
    $cell229 = $arrayidx228;
    $73 = HEAP32[$cell229 >> 2] | 0;
    $txt231 = $htmlvsp_2;
    $74 = HEAP32[$txt231 >> 2] | 0;
    $75 = $74;
    _setCell($73, $75, 2);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 64:
    $arrayidx233 = $htmlvsp_2 - 4 | 0;
    $cell234 = $arrayidx233;
    $76 = HEAP32[$cell234 >> 2] | 0;
    $img = $htmlvsp_2;
    $77 = HEAP32[$img >> 2] | 0;
    $78 = $77;
    _setCell($76, $78, 3);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 65:
    $cell238 = $htmlvsp_2;
    $79 = HEAP32[$cell238 >> 2] | 0;
    $call239 = _mkText() | 0;
    $80 = $call239;
    _setCell($79, $80, 2);
    $htmlval_sroa_0_0 = $htmlval_sroa_0_0_copyload19;
    label = 68;
    break;
   case 66:
    $arrayidx241 = $htmlvsp_2 - 4 | 0;
    $img242 = $arrayidx241;
    $81 = HEAP32[$img242 >> 2] | 0;
    $82 = $81;
    $htmlval_sroa_0_0 = $82;
    label = 68;
    break;
   case 67:
    $img246 = $htmlvsp_2;
    $83 = HEAP32[$img246 >> 2] | 0;
    $84 = $83;
    $htmlval_sroa_0_0 = $84;
    label = 68;
    break;
   case 68:
    $idx_neg = -$conv103 | 0;
    $add_ptr250 = $htmlssp_2 + ($idx_neg << 1) | 0;
    $add_ptr248_sum = 1 - $conv103 | 0;
    $incdec_ptr251 = $htmlvsp_2 + ($add_ptr248_sum << 2) | 0;
    $htmlval_sroa_0_0__idx = $htmlvsp_2 + ($add_ptr248_sum << 2) | 0;
    HEAP32[$htmlval_sroa_0_0__idx >> 2] = $htmlval_sroa_0_0;
    $arrayidx252 = $htmln_0 + 13376 | 0;
    $85 = HEAP8[$arrayidx252] | 0;
    $conv253 = $85 & 255;
    $sub254 = $conv253 - 31 | 0;
    $arrayidx255 = $sub254 + 13440 | 0;
    $86 = HEAP8[$arrayidx255] | 0;
    $conv256 = $86 << 24 >> 24;
    $87 = HEAP16[$add_ptr250 >> 1] | 0;
    $conv257 = $87 << 16 >> 16;
    $add258 = $conv257 + $conv256 | 0;
    $88 = $add258 >>> 0 < 182;
    if ($88) {
      label = 69;
      break;
    } else {
      label = 71;
      break;
    }
   case 69:
    $arrayidx264 = $add258 + 13824 | 0;
    $89 = HEAP8[$arrayidx264] | 0;
    $conv265 = $89 << 24 >> 24;
    $cmp267 = ($conv265 | 0) == ($conv257 | 0);
    if ($cmp267) {
      label = 70;
      break;
    } else {
      label = 71;
      break;
    }
   case 70:
    $arrayidx270 = $add258 + 13128 | 0;
    $90 = HEAP8[$arrayidx270] | 0;
    $conv271 = $90 << 24 >> 24;
    $htmlstate_0 = $conv271;
    $htmlerrstatus_0 = $htmlerrstatus_1;
    $htmlssp_0 = $add_ptr250;
    $htmlvsp_0 = $incdec_ptr251;
    label = 3;
    break;
   case 71:
    $arrayidx274 = $sub254 + 13688 | 0;
    $91 = HEAP8[$arrayidx274] | 0;
    $conv275 = $91 << 24 >> 24;
    $htmlstate_0 = $conv275;
    $htmlerrstatus_0 = $htmlerrstatus_1;
    $htmlssp_0 = $add_ptr250;
    $htmlvsp_0 = $incdec_ptr251;
    label = 3;
    break;
   case 72:
    if (($htmlerrstatus_1 | 0) == 0) {
      label = 73;
      break;
    } else if (($htmlerrstatus_1 | 0) == 3) {
      label = 74;
      break;
    } else {
      $htmlstate_2 = $htmlstate_1;
      $htmlssp_3 = $htmlssp_2;
      $htmlvsp_3 = $htmlvsp_2;
      label = 77;
      break;
    }
   case 73:
    $92 = HEAP32[3418] | 0;
    $inc = $92 + 1 | 0;
    HEAP32[3418] = $inc;
    _htmlerror(121376);
    $htmlstate_2 = $htmlstate_1;
    $htmlssp_3 = $htmlssp_2;
    $htmlvsp_3 = $htmlvsp_2;
    label = 77;
    break;
   case 74:
    $93 = HEAP32[3502] | 0;
    $cmp283 = ($93 | 0) < 1;
    if ($cmp283) {
      label = 75;
      break;
    } else {
      label = 76;
      break;
    }
   case 75:
    $cmp286 = ($93 | 0) == 0;
    if ($cmp286) {
      $htmlss_3 = $htmlss_1;
      $htmlresult_0 = 1;
      label = 84;
      break;
    } else {
      $htmlstate_2 = $htmlstate_1;
      $htmlssp_3 = $htmlssp_2;
      $htmlvsp_3 = $htmlvsp_2;
      label = 77;
      break;
    }
   case 76:
    HEAP32[3502] = -2;
    $htmlstate_2 = $htmlstate_1;
    $htmlssp_3 = $htmlssp_2;
    $htmlvsp_3 = $htmlvsp_2;
    label = 77;
    break;
   case 77:
    $arrayidx298 = 13480 + ($htmlstate_2 << 1) | 0;
    $94 = HEAP16[$arrayidx298 >> 1] | 0;
    $cmp300 = $94 << 16 >> 16 == -11;
    if ($cmp300) {
      label = 80;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $conv299 = $94 << 16 >> 16;
    $add303 = $conv299 + 1 | 0;
    $cmp312 = ($add303 | 0) == 12;
    if ($cmp312) {
      label = 79;
      break;
    } else {
      label = 80;
      break;
    }
   case 79:
    $arrayidx315 = $add303 + 13128 | 0;
    $95 = HEAP8[$arrayidx315] | 0;
    $cmp317 = $95 << 24 >> 24 > 0;
    if ($cmp317) {
      label = 82;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    $cmp323 = ($htmlssp_3 | 0) == ($htmlss_1 | 0);
    if ($cmp323) {
      $htmlss_3 = $htmlss_1;
      $htmlresult_0 = 1;
      label = 84;
      break;
    } else {
      label = 81;
      break;
    }
   case 81:
    $add_ptr329 = $htmlvsp_3 - 4 | 0;
    $add_ptr330 = $htmlssp_3 - 2 | 0;
    $96 = HEAP16[$add_ptr330 >> 1] | 0;
    $conv331 = $96 << 16 >> 16;
    $htmlstate_2 = $conv331;
    $htmlssp_3 = $add_ptr330;
    $htmlvsp_3 = $add_ptr329;
    label = 77;
    break;
   case 82:
    $conv316 = $95 << 24 >> 24;
    $incdec_ptr332 = $htmlvsp_3 + 4 | 0;
    $97 = HEAP32[3420] | 0;
    $98 = $incdec_ptr332 | 0;
    HEAP32[$98 >> 2] = $97;
    $htmlstate_0 = $conv316;
    $htmlerrstatus_0 = 3;
    $htmlssp_0 = $htmlssp_3;
    $htmlvsp_0 = $incdec_ptr332;
    label = 3;
    break;
   case 83:
    _htmlerror(106440);
    $htmlss_3 = $htmlss_0;
    $htmlresult_0 = 2;
    label = 84;
    break;
   case 84:
    $cmp348 = ($htmlss_3 | 0) == ($arraydecay | 0);
    if ($cmp348) {
      label = 86;
      break;
    } else {
      label = 85;
      break;
    }
   case 85:
    $99 = $htmlss_3;
    _free($99);
    label = 86;
    break;
   case 86:
    STACKTOP = __stackBase__;
    return $htmlresult_0 | 0;
  }
  return 0;
}
function _mkLabel($obj, $kind) {
  $obj = $obj | 0;
  $kind = $kind | 0;
  var $call = 0, $0 = 0, $conv = 0, $1 = 0, $cmp = 0, $2 = 0, $txt = 0, $3 = 0, $tbl = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(8) | 0;
    $0 = $call;
    $conv = $kind & 255;
    $1 = $call + 4 | 0;
    HEAP8[$1] = $conv;
    $cmp = ($kind | 0) == 2;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = $obj;
    $txt = $call;
    HEAP32[$txt >> 2] = $2;
    label = 5;
    break;
   case 4:
    $3 = $obj;
    $tbl = $call;
    HEAP32[$tbl >> 2] = $3;
    label = 5;
    break;
   case 5:
    return $0 | 0;
  }
  return 0;
}
function _cleanup() {
  var $0 = 0, $1 = 0, $tobool = 0, $tobool13 = 0, $tp_04 = 0, $u = 0, $prev = 0, $2 = 0, $tobool1 = 0, $3 = 0, $searchf = 0, $4 = 0, $call = 0, $5 = 0, $searchf2 = 0, $6 = 0, $call3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41782] | 0;
    $1 = HEAP32[41784] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _free_html_label($1, 1);
    HEAP32[41784] = 0;
    label = 4;
    break;
   case 4:
    HEAP32[13344] = 450;
    $tobool13 = ($0 | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      $tp_04 = $0;
      label = 5;
      break;
    }
   case 5:
    $u = $tp_04 + 72 | 0;
    $prev = $u;
    $2 = HEAP32[$prev >> 2] | 0;
    _cleanTbl($tp_04);
    $tobool1 = ($2 | 0) == 0;
    if ($tobool1) {
      label = 6;
      break;
    } else {
      $tp_04 = $2;
      label = 5;
      break;
    }
   case 6:
    HEAP32[13344] = 102;
    HEAP32[4088] = 68;
    $3 = HEAP32[41780] | 0;
    $searchf = $3 | 0;
    $4 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$4 & 1023]($3, 0, 64) | 0;
    HEAP32[4088] = 102;
    HEAP32[4098] = 474;
    $5 = HEAP32[41778] | 0;
    $searchf2 = $5 | 0;
    $6 = HEAP32[$searchf2 >> 2] | 0;
    $call3 = FUNCTION_TABLE_iiii[$6 & 1023]($5, 0, 64) | 0;
    HEAP32[4098] = 102;
    _freeFontstack();
    return;
  }
}
function _nonSpace($s) {
  $s = $s | 0;
  var $s_addr_0 = 0, $0 = 0, $tobool = 0, $incdec_ptr = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s_addr_0 = $s;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$s_addr_0] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $s_addr_0 + 1 | 0;
    $cmp = $0 << 24 >> 24 == 32;
    if ($cmp) {
      $s_addr_0 = $incdec_ptr;
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _dupFont($f) {
  $f = $f | 0;
  var $tobool = 0, $cnt = 0, $0 = 0, $inc = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($f | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cnt = $f + 12 | 0;
    $0 = HEAP32[$cnt >> 2] | 0;
    $inc = $0 + 1 | 0;
    HEAP32[$cnt >> 2] = $inc;
    label = 4;
    break;
   case 4:
    return $f | 0;
  }
  return 0;
}
function _mkText() {
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $call1 = 0, $tobool = 0, $call2 = 0, $conv = 0, $nparas = 0, $3 = 0, $tobool3 = 0, $mul = 0, $call5 = 0, $4 = 0, $paras = 0, $searchf = 0, $5 = 0, $call6 = 0, $tobool715 = 0, $i_017 = 0, $fl_0_in16 = 0, $6 = 0, $arrayidx = 0, $lp = 0, $7 = 0, $inc = 0, $8 = 0, $call10 = 0, $tobool7 = 0, $searchf12 = 0, $9 = 0, $call13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41778] | 0;
    $call = _zmalloc(40) | 0;
    $1 = $call;
    $2 = HEAP32[41780] | 0;
    $call1 = _dtsize($2) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _appendFLineList(0);
    label = 4;
    break;
   case 4:
    $call2 = _dtsize($0) | 0;
    $conv = $call2 & 65535;
    $nparas = $call + 4 | 0;
    $3 = $nparas;
    HEAP16[$3 >> 1] = $conv;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $mul = $call2 * 24 & -1;
    $call5 = _zmalloc($mul) | 0;
    $4 = $call5;
    $paras = $call;
    HEAP32[$paras >> 2] = $4;
    $searchf = $0 | 0;
    $5 = HEAP32[$searchf >> 2] | 0;
    $call6 = FUNCTION_TABLE_iiii[$5 & 1023]($0, 0, 128) | 0;
    $tobool715 = ($call6 | 0) == 0;
    if ($tobool715) {
      label = 7;
      break;
    } else {
      $fl_0_in16 = $call6;
      $i_017 = 0;
      label = 6;
      break;
    }
   case 6:
    $6 = HEAP32[$paras >> 2] | 0;
    $arrayidx = $6 + ($i_017 * 24 & -1) | 0;
    $lp = $fl_0_in16 + 8 | 0;
    $7 = $arrayidx;
    HEAP32[$7 >> 2] = HEAP32[$lp >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$lp + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$lp + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$lp + 12 >> 2] | 0;
    HEAP32[$7 + 16 >> 2] = HEAP32[$lp + 16 >> 2] | 0;
    HEAP32[$7 + 20 >> 2] = HEAP32[$lp + 20 >> 2] | 0;
    $inc = $i_017 + 1 | 0;
    $8 = HEAP32[$searchf >> 2] | 0;
    $call10 = FUNCTION_TABLE_iiii[$8 & 1023]($0, $fl_0_in16, 8) | 0;
    $tobool7 = ($call10 | 0) == 0;
    if ($tobool7) {
      label = 7;
      break;
    } else {
      $fl_0_in16 = $call10;
      $i_017 = $inc;
      label = 6;
      break;
    }
   case 7:
    $searchf12 = $0 | 0;
    $9 = HEAP32[$searchf12 >> 2] | 0;
    $call13 = FUNCTION_TABLE_iiii[$9 & 1023]($0, 0, 64) | 0;
    return $1 | 0;
  }
  return 0;
}
function _appendFItemList($ag) {
  $ag = $ag | 0;
  var $call = 0, $ptr = 0, $0 = 0, $eptr = 0, $1 = 0, $cmp = 0, $call1 = 0, $2 = 0, $buf = 0, $3 = 0, $call4 = 0, $ti = 0, $str = 0, $4 = 0, $cfont = 0, $5 = 0, $call5 = 0, $font = 0, $6 = 0, $7 = 0, $searchf = 0, $8 = 0, $call7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(88) | 0;
    $ptr = $ag + 4 | 0;
    $0 = HEAP32[$ptr >> 2] | 0;
    $eptr = $ag + 8 | 0;
    $1 = HEAP32[$eptr >> 2] | 0;
    $cmp = $0 >>> 0 < $1 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _agxbmore($ag, 1) | 0;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$2] = 0;
    $buf = $ag | 0;
    $3 = HEAP32[$buf >> 2] | 0;
    HEAP32[$ptr >> 2] = $3;
    $call4 = _strdup($3 | 0) | 0;
    $ti = $call + 8 | 0;
    $str = $ti;
    HEAP32[$str >> 2] = $call4;
    $4 = HEAP32[41774] | 0;
    $cfont = $4 | 0;
    $5 = HEAP32[$cfont >> 2] | 0;
    $call5 = _dupFont($5) | 0;
    $font = $call + 24 | 0;
    $6 = $font;
    HEAP32[$6 >> 2] = $call5;
    $7 = HEAP32[41780] | 0;
    $searchf = $7 | 0;
    $8 = HEAP32[$searchf >> 2] | 0;
    $call7 = FUNCTION_TABLE_iiii[$8 & 1023]($7, $call, 1) | 0;
    return;
  }
}
function _appendFLineList($v) {
  $v = $v | 0;
  var $call = 0, $0 = 0, $call1 = 0, $conv = 0, $nitems = 0, $1 = 0, $conv2 = 0, $2 = 0, $tobool = 0, $lp = 0, $mul = 0, $call4 = 0, $3 = 0, $items = 0, $call6 = 0, $tobool713 = 0, $i_015 = 0, $fi_0_in14 = 0, $4 = 0, $arrayidx = 0, $ti = 0, $5 = 0, $6 = 0, $inc = 0, $right = 0, $7 = 0, $tobool7 = 0, $searchf = 0, $8 = 0, $call10 = 0, $9 = 0, $searchf11 = 0, $10 = 0, $call12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(32) | 0;
    $0 = HEAP32[41780] | 0;
    $call1 = _dtsize($0) | 0;
    $conv = $call1 & 65535;
    $nitems = $call + 12 | 0;
    $1 = $nitems;
    HEAP16[$1 >> 1] = $conv;
    $conv2 = $v & 255;
    $2 = $call + 14 | 0;
    HEAP8[$2] = $conv2;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $lp = $call + 8 | 0;
    $mul = $call1 * 80 & -1;
    $call4 = _zmalloc($mul) | 0;
    $3 = $call4;
    $items = $lp;
    HEAP32[$items >> 2] = $3;
    $call6 = _dtflatten($0) | 0;
    $tobool713 = ($call6 | 0) == 0;
    if ($tobool713) {
      label = 5;
      break;
    } else {
      $fi_0_in14 = $call6;
      $i_015 = 0;
      label = 4;
      break;
    }
   case 4:
    $4 = HEAP32[$items >> 2] | 0;
    $arrayidx = $4 + ($i_015 * 80 & -1) | 0;
    $ti = $fi_0_in14 + 8 | 0;
    $5 = $arrayidx;
    $6 = $ti;
    _memcpy($5 | 0, $6 | 0, 80);
    $inc = $i_015 + 1 | 0;
    $right = $fi_0_in14 | 0;
    $7 = HEAP32[$right >> 2] | 0;
    $tobool7 = ($7 | 0) == 0;
    if ($tobool7) {
      label = 5;
      break;
    } else {
      $fi_0_in14 = $7;
      $i_015 = $inc;
      label = 4;
      break;
    }
   case 5:
    $searchf = $0 | 0;
    $8 = HEAP32[$searchf >> 2] | 0;
    $call10 = FUNCTION_TABLE_iiii[$8 & 1023]($0, 0, 64) | 0;
    $9 = HEAP32[41778] | 0;
    $searchf11 = $9 | 0;
    $10 = HEAP32[$searchf11 >> 2] | 0;
    $call12 = FUNCTION_TABLE_iiii[$10 & 1023]($9, $call, 1) | 0;
    return;
  }
}
function _pushFont($f) {
  $f = $f | 0;
  var $call = 0, $0 = 0, $1 = 0, $cfont = 0, $2 = 0, $tobool = 0, $color = 0, $3 = 0, $tobool1 = 0, $color2 = 0, $4 = 0, $tobool3 = 0, $call6 = 0, $size = 0, $5 = 0.0, $cmp = 0, $size9 = 0, $6 = 0.0, $cmp10 = 0, $name = 0, $7 = 0, $tobool15 = 0, $name17 = 0, $8 = 0, $tobool18 = 0, $call21 = 0, $9 = 0, $10 = 0, $11 = 0, $_mask = 0, $tobool24 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $call35 = 0, $cfont36 = 0, $16 = 0, $pfont = 0, $17 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(8) | 0;
    $0 = $call;
    $1 = HEAP32[41774] | 0;
    $cfont = $1 | 0;
    $2 = HEAP32[$cfont >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $color = $f + 4 | 0;
    $3 = HEAP32[$color >> 2] | 0;
    $tobool1 = ($3 | 0) == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $color2 = $2 + 4 | 0;
    $4 = HEAP32[$color2 >> 2] | 0;
    $tobool3 = ($4 | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call6 = _strdup($4 | 0) | 0;
    HEAP32[$color >> 2] = $call6;
    label = 6;
    break;
   case 6:
    $size = $f + 16 | 0;
    $5 = +HEAPF64[$size >> 3];
    $cmp = $5 < 0.0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $size9 = $2 + 16 | 0;
    $6 = +HEAPF64[$size9 >> 3];
    $cmp10 = $6 < 0.0;
    if ($cmp10) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    HEAPF64[$size >> 3] = $6;
    label = 9;
    break;
   case 9:
    $name = $f | 0;
    $7 = HEAP32[$name >> 2] | 0;
    $tobool15 = ($7 | 0) == 0;
    if ($tobool15) {
      label = 10;
      break;
    } else {
      label = 12;
      break;
    }
   case 10:
    $name17 = $2 | 0;
    $8 = HEAP32[$name17 >> 2] | 0;
    $tobool18 = ($8 | 0) == 0;
    if ($tobool18) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call21 = _strdup($8 | 0) | 0;
    HEAP32[$name >> 2] = $call21;
    label = 12;
    break;
   case 12:
    $9 = $2 + 8 | 0;
    $10 = $9;
    $11 = HEAP32[$10 >> 2] | 0;
    $_mask = $11 & 127;
    $tobool24 = ($_mask | 0) == 0;
    if ($tobool24) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $12 = $f + 8 | 0;
    $13 = $12;
    $14 = HEAP32[$13 >> 2] | 0;
    $15 = $14 | $_mask;
    HEAP32[$13 >> 2] = $15;
    label = 14;
    break;
   case 14:
    $call35 = _dupFont($f) | 0;
    $cfont36 = $call;
    HEAP32[$cfont36 >> 2] = $call35;
    $16 = HEAP32[41774] | 0;
    $pfont = $call + 4 | 0;
    $17 = $pfont;
    HEAP32[$17 >> 2] = $16;
    HEAP32[41774] = $0;
    return;
  }
}
function _popFont() {
  var $0 = 0, $1 = 0;
  $0 = HEAP32[41774] | 0;
  $1 = HEAP32[$0 + 4 >> 2] | 0;
  _free_html_font(HEAP32[$0 >> 2] | 0);
  _free($0);
  HEAP32[41774] = $1;
  return;
}
function _addRow() {
  var $call = 0, $2 = 0, $call1 = 0, $3 = 0;
  $call = _dtopen(53360, HEAP32[41976] | 0) | 0;
  $2 = HEAP32[41782] | 0;
  $call1 = _zmalloc(12) | 0;
  HEAP32[$call1 + 8 >> 2] = $call;
  $3 = HEAP32[$2 + 76 >> 2] | 0;
  FUNCTION_TABLE_iiii[HEAP32[$3 >> 2] & 1023]($3, $call1, 1);
  return;
}
function _setCell($cp, $obj, $kind) {
  $cp = $cp | 0;
  $obj = $obj | 0;
  $kind = $kind | 0;
  var $call = 0, $0 = 0, $rows = 0, $1 = 0, $2 = 0, $searchf11 = 0, $3 = 0, $call4 = 0, $u5 = 0, $rp6 = 0, $4 = 0, $u7 = 0, $cp8 = 0, $searchf9 = 0, $5 = 0, $call10 = 0, $conv = 0, $child = 0, $kind11 = 0, $6 = 0, $_c12 = 0, $7 = 0, $_c = 0, $8 = 0, $tbl23 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(12) | 0;
    $0 = HEAP32[41782] | 0;
    $rows = $0 + 76 | 0;
    $1 = HEAP32[$rows >> 2] | 0;
    $2 = $1;
    $searchf11 = HEAP32[$1 >> 2] | 0;
    $3 = $searchf11;
    $call4 = FUNCTION_TABLE_iiii[$3 & 1023]($2, 0, 256) | 0;
    $u5 = $call4 + 8 | 0;
    $rp6 = $u5;
    $4 = HEAP32[$rp6 >> 2] | 0;
    $u7 = $call + 8 | 0;
    $cp8 = $u7;
    HEAP32[$cp8 >> 2] = $cp;
    $searchf9 = $4 | 0;
    $5 = HEAP32[$searchf9 >> 2] | 0;
    $call10 = FUNCTION_TABLE_iiii[$5 & 1023]($4, $call, 1) | 0;
    $conv = $kind & 255;
    $child = $cp + 80 | 0;
    $kind11 = $cp + 84 | 0;
    HEAP8[$kind11] = $conv;
    if (($kind | 0) == 2) {
      label = 3;
      break;
    } else if (($kind | 0) == 3) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $6 = $child | 0;
    $_c12 = $obj;
    HEAP32[$6 >> 2] = $_c12;
    label = 6;
    break;
   case 4:
    $7 = $child | 0;
    $_c = $obj;
    HEAP32[$7 >> 2] = $_c;
    label = 6;
    break;
   case 5:
    $8 = $obj;
    $tbl23 = $child | 0;
    HEAP32[$tbl23 >> 2] = $8;
    label = 6;
    break;
   case 6:
    return;
  }
}
function _parseHTML($txt, $warn, $charset) {
  $txt = $txt | 0;
  $warn = $warn | 0;
  $charset = $charset | 0;
  var $str = 0, $dfltf = 0, $4 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 152 | 0;
  $str = __stackBase__ + 128 | 0;
  $dfltf = __stackBase__ + 144 | 0;
  HEAP32[$dfltf >> 2] = 0;
  HEAP32[$dfltf + 4 >> 2] = 0;
  HEAP32[41774] = $dfltf;
  HEAP32[41782] = 0;
  HEAP32[41784] = 0;
  HEAP32[41780] = _dtopen(16336, HEAP32[41976] | 0) | 0;
  HEAP32[41778] = _dtopen(16376, HEAP32[41976] | 0) | 0;
  _agxbinit($str, 128, __stackBase__ | 0);
  HEAP32[41776] = $str;
  _initHTMLlexer($txt, $str, $charset);
  _htmlparse();
  HEAP32[$warn >> 2] = _clearHTMLlexer() | 0;
  $4 = HEAP32[41784] | 0;
  _dtclose(HEAP32[41780] | 0);
  _dtclose(HEAP32[41778] | 0);
  HEAP32[41780] = 0;
  HEAP32[41778] = 0;
  HEAP32[41774] = 0;
  _agxbfree($str);
  STACKTOP = __stackBase__;
  return $4 | 0;
}
function _free_item($d, $p, $ds) {
  $d = $d | 0;
  $p = $p | 0;
  $ds = $ds | 0;
  _free($p);
  return;
}
function _free_ritem($d, $p, $ds) {
  $d = $d | 0;
  $p = $p | 0;
  $ds = $ds | 0;
  _dtclose(HEAP32[$p + 8 >> 2] | 0);
  _free($p);
  return;
}
function _free_citem($d, $p, $ds) {
  $d = $d | 0;
  $p = $p | 0;
  $ds = $ds | 0;
  _cleanCell(HEAP32[$p + 8 >> 2] | 0);
  _free($p);
  return;
}
function _cleanTbl($tp) {
  $tp = $tp | 0;
  _dtclose(HEAP32[$tp + 76 >> 2] | 0);
  _free_html_data($tp | 0);
  _free($tp);
  return;
}
function _free_fitem($d, $p, $ds) {
  $d = $d | 0;
  $p = $p | 0;
  $ds = $ds | 0;
  var $str = 0, $0 = 0, $tobool = 0, $font = 0, $1 = 0, $tobool4 = 0, $2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $str = $p + 8 | 0;
    $0 = HEAP32[$str >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _free($0);
    label = 4;
    break;
   case 4:
    $font = $p + 24 | 0;
    $1 = HEAP32[$font >> 2] | 0;
    $tobool4 = ($1 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _free_html_font($1);
    label = 6;
    break;
   case 6:
    $2 = $p;
    _free($2);
    return;
  }
}
function _free_fpara($d, $p, $ds) {
  $d = $d | 0;
  $p = $p | 0;
  $ds = $ds | 0;
  var $nitems = 0, $0 = 0, $tobool = 0, $items = 0, $1 = 0, $cmp11 = 0, $2 = 0, $i_013 = 0, $ti_012 = 0, $str = 0, $3 = 0, $tobool5 = 0, $font = 0, $4 = 0, $tobool8 = 0, $incdec_ptr = 0, $inc = 0, $5 = 0, $conv = 0, $cmp = 0, $6 = 0, $7 = 0, $8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nitems = $p + 12 | 0;
    $0 = HEAP16[$nitems >> 1] | 0;
    $tobool = $0 << 16 >> 16 == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $items = $p + 8 | 0;
    $1 = HEAP16[$nitems >> 1] | 0;
    $cmp11 = $1 << 16 >> 16 > 0;
    if ($cmp11) {
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $2 = HEAP32[$items >> 2] | 0;
    $ti_012 = $2;
    $i_013 = 0;
    label = 5;
    break;
   case 5:
    $str = $ti_012 | 0;
    $3 = HEAP32[$str >> 2] | 0;
    $tobool5 = ($3 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($3);
    label = 7;
    break;
   case 7:
    $font = $ti_012 + 16 | 0;
    $4 = HEAP32[$font >> 2] | 0;
    $tobool8 = ($4 | 0) == 0;
    if ($tobool8) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free_html_font($4);
    label = 9;
    break;
   case 9:
    $incdec_ptr = $ti_012 + 80 | 0;
    $inc = $i_013 + 1 | 0;
    $5 = HEAP16[$nitems >> 1] | 0;
    $conv = $5 << 16 >> 16;
    $cmp = ($inc | 0) < ($conv | 0);
    if ($cmp) {
      $ti_012 = $incdec_ptr;
      $i_013 = $inc;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $6 = HEAP32[$items >> 2] | 0;
    $7 = $6;
    _free($7);
    label = 11;
    break;
   case 11:
    $8 = $p;
    _free($8);
    return;
  }
}
function _freeFontstack() {
  var $0 = 0, $pfont3 = 0, $1 = 0, $tobool4 = 0, $2 = 0, $s_05 = 0, $cfont = 0, $3 = 0, $4 = 0, $pfont = 0, $5 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41774] | 0;
    $pfont3 = $0 + 4 | 0;
    $1 = HEAP32[$pfont3 >> 2] | 0;
    $tobool4 = ($1 | 0) == 0;
    if ($tobool4) {
      label = 4;
      break;
    } else {
      $s_05 = $0;
      $2 = $1;
      label = 3;
      break;
    }
   case 3:
    $cfont = $s_05 | 0;
    $3 = HEAP32[$cfont >> 2] | 0;
    _free_html_font($3);
    $4 = $s_05;
    _free($4);
    $pfont = $2 + 4 | 0;
    $5 = HEAP32[$pfont >> 2] | 0;
    $tobool = ($5 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $s_05 = $2;
      $2 = $5;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _cleanCell($cp) {
  $cp = $cp | 0;
  var $child = 0, $kind = 0, $0 = 0, $tbl = 0, $1 = 0, $txt = 0, $2 = 0, $data = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $child = $cp + 80 | 0;
    $kind = $cp + 84 | 0;
    $0 = HEAP8[$kind] | 0;
    if (($0 << 24 >> 24 | 0) == 1) {
      label = 3;
      break;
    } else if (($0 << 24 >> 24 | 0) == 2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $tbl = $child | 0;
    $1 = HEAP32[$tbl >> 2] | 0;
    _cleanTbl($1);
    label = 5;
    break;
   case 4:
    $txt = $child;
    $2 = HEAP32[$txt >> 2] | 0;
    _free_html_text($2);
    label = 5;
    break;
   case 5:
    $data = $cp | 0;
    _free_html_data($data);
    $3 = $cp;
    _free($3);
    return;
  }
}
function _emit_html_label($job, $lp, $tp) {
  $job = $job | 0;
  $lp = $lp | 0;
  $tp = $tp | 0;
  var $env = 0, $pos1 = 0, $0 = 0, $1 = 0, $fontcolor = 0, $2 = 0, $color = 0, $fontname = 0, $3 = 0, $name = 0, $fontsize = 0, $size = 0, $4 = 0.0, $obj = 0, $5 = 0, $u = 0, $n = 0, $6 = 0, $7 = 0, $call = 0, $imgscale = 0, $8 = 0, $id = 0, $9 = 0, $objid = 0, $objid_set = 0, $10 = 0, $cmp = 0, $11 = 0, $cmp10 = 0, $kind = 0, $12 = 0, $cmp14 = 0, $tbl18 = 0, $13 = 0, $gvc = 0, $14 = 0, $defaultlinestyle = 0, $15 = 0, $pencolor = 0, $16 = 0, $tobool = 0, $txt = 0, $17 = 0, $18 = 0, $tobool27 = 0, $19 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $env = __stackBase__ | 0;
    _allocObj($job);
    $pos1 = $tp + 56 | 0;
    $0 = $env;
    $1 = $pos1;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $fontcolor = $tp + 8 | 0;
    $2 = HEAP32[$fontcolor >> 2] | 0;
    $color = $env + 20 | 0;
    HEAP32[$color >> 2] = $2;
    $fontname = $tp + 4 | 0;
    $3 = HEAP32[$fontname >> 2] | 0;
    $name = $env + 16 | 0;
    HEAP32[$name >> 2] = $3;
    $fontsize = $tp + 16 | 0;
    $size = $env + 32 | 0;
    $4 = +HEAPF64[$fontsize >> 3];
    HEAPF64[$size >> 3] = $4;
    $obj = $job + 16 | 0;
    $5 = HEAP32[$obj >> 2] | 0;
    $u = $5 + 8 | 0;
    $n = $u;
    $6 = HEAP32[$n >> 2] | 0;
    $7 = $6 | 0;
    $call = _agget($7, 104192) | 0;
    $imgscale = $env + 48 | 0;
    HEAP32[$imgscale >> 2] = $call;
    $8 = HEAP32[$obj >> 2] | 0;
    $id = $8 + 164 | 0;
    $9 = HEAP32[$id >> 2] | 0;
    $objid = $env + 52 | 0;
    HEAP32[$objid >> 2] = $9;
    $objid_set = $env + 56 | 0;
    HEAP8[$objid_set] = 0;
    $10 = HEAP32[$imgscale >> 2] | 0;
    $cmp = ($10 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $11 = HEAP8[$10] | 0;
    $cmp10 = $11 << 24 >> 24 == 0;
    if ($cmp10) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    HEAP32[$imgscale >> 2] = 142968;
    label = 5;
    break;
   case 5:
    $kind = $lp + 4 | 0;
    $12 = HEAP8[$kind] | 0;
    $cmp14 = $12 << 24 >> 24 == 1;
    if ($cmp14) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 6:
    $tbl18 = $lp | 0;
    $13 = HEAP32[$tbl18 >> 2] | 0;
    $gvc = $job | 0;
    $14 = HEAP32[$gvc >> 2] | 0;
    $defaultlinestyle = $14 + 304 | 0;
    $15 = HEAP32[$defaultlinestyle >> 2] | 0;
    _gvrender_set_style($job, $15);
    $pencolor = $13 + 24 | 0;
    $16 = HEAP32[$pencolor >> 2] | 0;
    $tobool = ($16 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _gvrender_set_pencolor($job, $16);
    label = 9;
    break;
   case 8:
    _gvrender_set_pencolor($job, 121304);
    label = 9;
    break;
   case 9:
    _emit_html_tbl($job, $13, $env);
    label = 11;
    break;
   case 10:
    $txt = $lp;
    $17 = HEAP32[$txt >> 2] | 0;
    _emit_html_txt($job, $17, $env);
    label = 11;
    break;
   case 11:
    $18 = HEAP8[$objid_set] | 0;
    $tobool27 = $18 << 24 >> 24 == 0;
    if ($tobool27) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $19 = HEAP32[$objid >> 2] | 0;
    _free($19);
    label = 13;
    break;
   case 13:
    _freeObj($job);
    STACKTOP = __stackBase__;
    return;
  }
}
function _allocObj($job) {
  $job = $job | 0;
  var $call = 0, $parent1 = 0, $0 = 0, $type = 0, $1 = 0, $type2 = 0, $emit_state = 0, $2 = 0, $emit_state3 = 0, $3 = 0, $u = 0, $n = 0, $4 = 0, $5 = 0, $_c22 = 0, $g = 0, $6 = 0, $g10 = 0, $sg = 0, $7 = 0, $sg14 = 0, $u16 = 0, $e = 0, $8 = 0, $9 = 0, $_c = 0, $url = 0, $10 = 0, $url19 = 0, $tooltip = 0, $11 = 0, $tooltip20 = 0, $target = 0, $12 = 0, $target21 = 0, $13 = 0, $14 = 0, $15 = 0, $bf_val_sext21 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _push_obj_state($job) | 0;
    $parent1 = $call | 0;
    $0 = HEAP32[$parent1 >> 2] | 0;
    $type = $0 + 4 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $type2 = $call + 4 | 0;
    HEAP32[$type2 >> 2] = $1;
    $emit_state = $0 + 12 | 0;
    $2 = HEAP32[$emit_state >> 2] | 0;
    $emit_state3 = $call + 12 | 0;
    HEAP32[$emit_state3 >> 2] = $2;
    $3 = HEAP32[$type2 >> 2] | 0;
    if (($3 | 0) == 2) {
      label = 3;
      break;
    } else if (($3 | 0) == 0) {
      label = 4;
      break;
    } else if (($3 | 0) == 1) {
      label = 5;
      break;
    } else if (($3 | 0) == 3) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $u = $0 + 8 | 0;
    $n = $u;
    $4 = HEAP32[$n >> 2] | 0;
    $5 = $call + 8 | 0;
    $_c22 = $4;
    HEAP32[$5 >> 2] = $_c22;
    label = 7;
    break;
   case 4:
    $g = $0 + 8 | 0;
    $6 = HEAP32[$g >> 2] | 0;
    $g10 = $call + 8 | 0;
    HEAP32[$g10 >> 2] = $6;
    label = 7;
    break;
   case 5:
    $sg = $0 + 8 | 0;
    $7 = HEAP32[$sg >> 2] | 0;
    $sg14 = $call + 8 | 0;
    HEAP32[$sg14 >> 2] = $7;
    label = 7;
    break;
   case 6:
    $u16 = $0 + 8 | 0;
    $e = $u16;
    $8 = HEAP32[$e >> 2] | 0;
    $9 = $call + 8 | 0;
    $_c = $8;
    HEAP32[$9 >> 2] = $_c;
    label = 7;
    break;
   case 7:
    $url = $0 + 160 | 0;
    $10 = HEAP32[$url >> 2] | 0;
    $url19 = $call + 160 | 0;
    HEAP32[$url19 >> 2] = $10;
    $tooltip = $0 + 180 | 0;
    $11 = HEAP32[$tooltip >> 2] | 0;
    $tooltip20 = $call + 180 | 0;
    HEAP32[$tooltip20 >> 2] = $11;
    $target = $0 + 196 | 0;
    $12 = HEAP32[$target >> 2] | 0;
    $target21 = $call + 196 | 0;
    HEAP32[$target21 >> 2] = $12;
    $13 = $0 + 212 | 0;
    $14 = $13;
    $15 = HEAP32[$14 >> 2] | 0;
    $bf_val_sext21 = $15 & 1;
    $16 = $call + 212 | 0;
    $17 = $16;
    $18 = HEAP32[$17 >> 2] | 0;
    $19 = $18 & -2;
    $20 = $19 | $bf_val_sext21;
    HEAP32[$17 >> 2] = $20;
    return;
  }
}
function _emit_html_tbl($job, $tbl, $env) {
  $job = $job | 0;
  $tbl = $tbl | 0;
  $env = $env | 0;
  var $pts = 0, $saved = 0, $AF = 0, $data = 0, $box = 0, $0 = 0, $1 = 0, $pos_sroa_0_0__idx = 0, $pos_sroa_0_0_copyload = 0.0, $pos_sroa_1_8__idx6 = 0, $pos_sroa_1_8_copyload = 0.0, $cells2 = 0, $2 = 0, $href = 0, $3 = 0, $tobool = 0, $target = 0, $4 = 0, $tobool5 = 0, $5 = 0, $font = 0, $6 = 0, $tobool6 = 0, $x8 = 0, $7 = 0.0, $add = 0.0, $UR = 0, $x10 = 0, $8 = 0.0, $add11 = 0.0, $y13 = 0, $9 = 0.0, $add14 = 0.0, $y17 = 0, $10 = 0.0, $add18 = 0.0, $flags = 0, $11 = 0, $and = 0, $tobool20 = 0, $call = 0, $anchor_0 = 0, $style = 0, $12 = 0, $and24 = 0, $tobool25 = 0, $pencolor = 0, $13 = 0, $tobool28 = 0, $_ = 0, $arrayidx = 0, $14 = 0, $arrayidx32 = 0, $15 = 0, $16 = 0, $x35 = 0, $17 = 0.0, $x37 = 0, $y39 = 0, $18 = 0.0, $y41 = 0, $x43 = 0, $19 = 0.0, $x45 = 0, $y47 = 0, $20 = 0.0, $y49 = 0, $bgcolor = 0, $21 = 0, $22 = 0, $conv52 = 0, $cmp = 0, $conv55 = 0, $bgcolor58 = 0, $23 = 0, $tobool59 = 0, $border = 0, $24 = 0, $tobool65 = 0, $pencolor68 = 0, $25 = 0, $conv71 = 0, $26 = 0, $tobool7439 = 0, $27 = 0, $cells_040 = 0, $incdec_ptr = 0, $28 = 0, $tobool74 = 0, $tobool75 = 0, $flags80 = 0, $29 = 0, $and81 = 0, $tobool82 = 0, $call85 = 0, $tobool86 = 0, $30 = 0, $tobool91 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 136 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pts = __stackBase__ | 0;
    $saved = __stackBase__ + 32 | 0;
    $AF = __stackBase__ + 72 | 0;
    $data = $tbl | 0;
    $box = $tbl + 40 | 0;
    $0 = $pts;
    $1 = $box;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    HEAP32[$0 + 16 >> 2] = HEAP32[$1 + 16 >> 2] | 0;
    HEAP32[$0 + 20 >> 2] = HEAP32[$1 + 20 >> 2] | 0;
    HEAP32[$0 + 24 >> 2] = HEAP32[$1 + 24 >> 2] | 0;
    HEAP32[$0 + 28 >> 2] = HEAP32[$1 + 28 >> 2] | 0;
    $pos_sroa_0_0__idx = $env | 0;
    $pos_sroa_0_0_copyload = +HEAPF64[$pos_sroa_0_0__idx >> 3];
    $pos_sroa_1_8__idx6 = $env + 8 | 0;
    $pos_sroa_1_8_copyload = +HEAPF64[$pos_sroa_1_8__idx6 >> 3];
    $cells2 = $tbl + 76 | 0;
    $2 = HEAP32[$cells2 >> 2] | 0;
    $href = $tbl | 0;
    $3 = HEAP32[$href >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $5 = 1;
      label = 4;
      break;
    }
   case 3:
    $target = $tbl + 8 | 0;
    $4 = HEAP32[$target >> 2] | 0;
    $tobool5 = ($4 | 0) != 0;
    $5 = $tobool5;
    label = 4;
    break;
   case 4:
    $font = $tbl + 100 | 0;
    $6 = HEAP32[$font >> 2] | 0;
    $tobool6 = ($6 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _pushFontInfo($env, $6, 20296);
    label = 6;
    break;
   case 6:
    $x8 = $pts | 0;
    $7 = +HEAPF64[$x8 >> 3];
    $add = $pos_sroa_0_0_copyload + $7;
    HEAPF64[$x8 >> 3] = $add;
    $UR = $pts + 16 | 0;
    $x10 = $UR | 0;
    $8 = +HEAPF64[$x10 >> 3];
    $add11 = $pos_sroa_0_0_copyload + $8;
    HEAPF64[$x10 >> 3] = $add11;
    $y13 = $pts + 8 | 0;
    $9 = +HEAPF64[$y13 >> 3];
    $add14 = $pos_sroa_1_8_copyload + $9;
    HEAPF64[$y13 >> 3] = $add14;
    $y17 = $pts + 24 | 0;
    $10 = +HEAPF64[$y17 >> 3];
    $add18 = $pos_sroa_1_8_copyload + $10;
    HEAPF64[$y17 >> 3] = $add18;
    if ($5) {
      label = 7;
      break;
    } else {
      $anchor_0 = 0;
      label = 9;
      break;
    }
   case 7:
    $flags = $job + 152 | 0;
    $11 = HEAP32[$flags >> 2] | 0;
    $and = $11 & 4;
    $tobool20 = ($and | 0) == 0;
    if ($tobool20) {
      label = 8;
      break;
    } else {
      $anchor_0 = 0;
      label = 9;
      break;
    }
   case 8:
    $call = _initAnchor($job, $env, $data, $pts, $saved, 1) | 0;
    $anchor_0 = $call;
    label = 9;
    break;
   case 9:
    $style = $tbl + 104 | 0;
    $12 = HEAP8[$style] | 0;
    $and24 = $12 & 2;
    $tobool25 = $and24 << 24 >> 24 == 0;
    if ($tobool25) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $pencolor = $tbl + 24 | 0;
    $13 = HEAP32[$pencolor >> 2] | 0;
    $tobool28 = ($13 | 0) == 0;
    $_ = $tobool28 ? 121304 : $13;
    $arrayidx = $AF | 0;
    $14 = $AF;
    HEAP32[$14 >> 2] = HEAP32[$0 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$0 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$0 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$0 + 12 >> 2] | 0;
    $arrayidx32 = $AF + 32 | 0;
    $15 = $arrayidx32;
    $16 = $UR;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $x35 = $arrayidx32 | 0;
    $17 = +HEAPF64[$x35 >> 3];
    $x37 = $AF + 16 | 0;
    HEAPF64[$x37 >> 3] = $17;
    $y39 = $AF + 8 | 0;
    $18 = +HEAPF64[$y39 >> 3];
    $y41 = $AF + 24 | 0;
    HEAPF64[$y41 >> 3] = $18;
    $x43 = $AF | 0;
    $19 = +HEAPF64[$x43 >> 3];
    $x45 = $AF + 48 | 0;
    HEAPF64[$x45 >> 3] = $19;
    $y47 = $AF + 40 | 0;
    $20 = +HEAPF64[$y47 >> 3];
    $y49 = $AF + 56 | 0;
    HEAPF64[$y49 >> 3] = $20;
    $bgcolor = $tbl + 20 | 0;
    $21 = HEAP32[$bgcolor >> 2] | 0;
    $22 = HEAP8[$style] | 0;
    $conv52 = $22 & 255;
    $cmp = ($21 | 0) != 0;
    $conv55 = $cmp & 1;
    _round_corners($job, $21, $_, $arrayidx, 4, $conv52, $conv55);
    label = 15;
    break;
   case 11:
    $bgcolor58 = $tbl + 20 | 0;
    $23 = HEAP32[$bgcolor58 >> 2] | 0;
    $tobool59 = ($23 | 0) == 0;
    if ($tobool59) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _doFill($job, $23, $pts);
    label = 13;
    break;
   case 13:
    $border = $tbl + 29 | 0;
    $24 = HEAP8[$border] | 0;
    $tobool65 = $24 << 24 >> 24 == 0;
    if ($tobool65) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $pencolor68 = $tbl + 24 | 0;
    $25 = HEAP32[$pencolor68 >> 2] | 0;
    $conv71 = $24 & 255;
    _doBorder($job, $25, $conv71, $pts);
    label = 15;
    break;
   case 15:
    $26 = HEAP32[$2 >> 2] | 0;
    $tobool7439 = ($26 | 0) == 0;
    if ($tobool7439) {
      label = 17;
      break;
    } else {
      $cells_040 = $2;
      $27 = $26;
      label = 16;
      break;
    }
   case 16:
    _emit_html_cell($job, $27, $env);
    $incdec_ptr = $cells_040 + 4 | 0;
    $28 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool74 = ($28 | 0) == 0;
    if ($tobool74) {
      label = 17;
      break;
    } else {
      $cells_040 = $incdec_ptr;
      $27 = $28;
      label = 16;
      break;
    }
   case 17:
    $tobool75 = ($anchor_0 | 0) == 0;
    if ($tobool75) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    _endAnchor($job, $saved, 1);
    label = 19;
    break;
   case 19:
    if ($5) {
      label = 20;
      break;
    } else {
      label = 23;
      break;
    }
   case 20:
    $flags80 = $job + 152 | 0;
    $29 = HEAP32[$flags80 >> 2] | 0;
    $and81 = $29 & 4;
    $tobool82 = ($and81 | 0) == 0;
    if ($tobool82) {
      label = 23;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $call85 = _initAnchor($job, $env, $data, $pts, $saved, 0) | 0;
    $tobool86 = ($call85 | 0) == 0;
    if ($tobool86) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    _endAnchor($job, $saved, 0);
    label = 23;
    break;
   case 23:
    $30 = HEAP32[$font >> 2] | 0;
    $tobool91 = ($30 | 0) == 0;
    if ($tobool91) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    _popFontInfo($env, 20296);
    label = 25;
    break;
   case 25:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_html_txt($job, $tp, $env) {
  $job = $job | 0;
  $tp = $tp | 0;
  $env = $env | 0;
  var $p = 0, $nparas = 0, $0 = 0, $cmp = 0, $box = 0, $x = 0, $1 = 0.0, $x3 = 0, $2 = 0.0, $sub = 0.0, $div = 0.0, $x4 = 0, $3 = 0.0, $add = 0.0, $div11 = 0.0, $add12 = 0.0, $x13 = 0, $y = 0, $4 = 0.0, $y17 = 0, $5 = 0.0, $y20 = 0, $6 = 0.0, $add21 = 0.0, $div22 = 0.0, $add23 = 0.0, $y24 = 0, $7 = 0, $conv26 = 0, $paras = 0, $8 = 0, $finfo = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = __stackBase__ | 0;
    $nparas = $tp + 4 | 0;
    $0 = HEAP16[$nparas >> 1] | 0;
    $cmp = $0 << 16 >> 16 < 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $box = $tp + 8 | 0;
    $x = $tp + 24 | 0;
    $1 = +HEAPF64[$x >> 3];
    $x3 = $box | 0;
    $2 = +HEAPF64[$x3 >> 3];
    $sub = $1 - $2;
    $div = $sub * .5;
    $x4 = $env | 0;
    $3 = +HEAPF64[$x4 >> 3];
    $add = $1 + $2;
    $div11 = $add * .5;
    $add12 = $3 + $div11;
    $x13 = $p | 0;
    HEAPF64[$x13 >> 3] = $add12;
    $y = $env + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y17 = $tp + 32 | 0;
    $5 = +HEAPF64[$y17 >> 3];
    $y20 = $tp + 16 | 0;
    $6 = +HEAPF64[$y20 >> 3];
    $add21 = $5 + $6;
    $div22 = $add21 * .5;
    $add23 = $4 + $div22;
    $y24 = $p + 8 | 0;
    HEAPF64[$y24 >> 3] = $add23;
    $7 = HEAP16[$nparas >> 1] | 0;
    $conv26 = $7 << 16 >> 16;
    $paras = $tp | 0;
    $8 = HEAP32[$paras >> 2] | 0;
    $finfo = $env + 16 | 0;
    _emit_htextparas($job, $conv26, $8, $p, $div, $finfo, $box);
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return;
  }
}
function _freeObj($job) {
  $job = $job | 0;
  var $0 = 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  HEAP32[$0 + 160 >> 2] = 0;
  HEAP32[$0 + 180 >> 2] = 0;
  HEAP32[$0 + 196 >> 2] = 0;
  HEAP32[$0 + 164 >> 2] = 0;
  _pop_obj_state($job);
  return;
}
function _free_html_font($fp) {
  $fp = $fp | 0;
  var $cnt = 0, $0 = 0, $dec = 0, $cmp = 0, $name = 0, $1 = 0, $tobool = 0, $color = 0, $2 = 0, $tobool4 = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cnt = $fp + 12 | 0;
    $0 = HEAP32[$cnt >> 2] | 0;
    $dec = $0 - 1 | 0;
    HEAP32[$cnt >> 2] = $dec;
    $cmp = ($dec | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $name = $fp | 0;
    $1 = HEAP32[$name >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _free($1);
    label = 5;
    break;
   case 5:
    $color = $fp + 4 | 0;
    $2 = HEAP32[$color >> 2] | 0;
    $tobool4 = ($2 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($2);
    label = 7;
    break;
   case 7:
    $3 = $fp;
    _free($3);
    label = 8;
    break;
   case 8:
    return;
  }
}
function _free_html_data($dp) {
  $dp = $dp | 0;
  _free(HEAP32[$dp >> 2] | 0);
  _free(HEAP32[$dp + 4 >> 2] | 0);
  _free(HEAP32[$dp + 8 >> 2] | 0);
  _free(HEAP32[$dp + 16 >> 2] | 0);
  _free(HEAP32[$dp + 12 >> 2] | 0);
  _free(HEAP32[$dp + 20 >> 2] | 0);
  _free(HEAP32[$dp + 24 >> 2] | 0);
  return;
}
function _free_html_text($t) {
  $t = $t | 0;
  var $tobool = 0, $paras = 0, $nparas = 0, $0 = 0, $cmp23 = 0, $1 = 0, $i_025 = 0, $tl_024 = 0, $nitems = 0, $2 = 0, $cmp419 = 0, $items = 0, $3 = 0, $j_021 = 0, $ti_020 = 0, $str = 0, $4 = 0, $tobool7 = 0, $font = 0, $5 = 0, $tobool11 = 0, $layout = 0, $6 = 0, $tobool15 = 0, $free_layout = 0, $7 = 0, $tobool16 = 0, $incdec_ptr = 0, $inc = 0, $8 = 0, $conv3 = 0, $cmp4 = 0, $incdec_ptr21 = 0, $inc23 = 0, $9 = 0, $conv = 0, $cmp = 0, $10 = 0, $tobool26 = 0, $11 = 0, $12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($t | 0) == 0;
    if ($tobool) {
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $paras = $t | 0;
    $nparas = $t + 4 | 0;
    $0 = HEAP16[$nparas >> 1] | 0;
    $cmp23 = $0 << 16 >> 16 > 0;
    if ($cmp23) {
      label = 4;
      break;
    } else {
      label = 16;
      break;
    }
   case 4:
    $1 = HEAP32[$paras >> 2] | 0;
    $tl_024 = $1;
    $i_025 = 0;
    label = 5;
    break;
   case 5:
    $nitems = $tl_024 + 4 | 0;
    $2 = HEAP16[$nitems >> 1] | 0;
    $cmp419 = $2 << 16 >> 16 > 0;
    if ($cmp419) {
      label = 6;
      break;
    } else {
      label = 15;
      break;
    }
   case 6:
    $items = $tl_024 | 0;
    $3 = HEAP32[$items >> 2] | 0;
    $ti_020 = $3;
    $j_021 = 0;
    label = 7;
    break;
   case 7:
    $str = $ti_020 | 0;
    $4 = HEAP32[$str >> 2] | 0;
    $tobool7 = ($4 | 0) == 0;
    if ($tobool7) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free($4);
    label = 9;
    break;
   case 9:
    $font = $ti_020 + 16 | 0;
    $5 = HEAP32[$font >> 2] | 0;
    $tobool11 = ($5 | 0) == 0;
    if ($tobool11) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _free_html_font($5);
    label = 11;
    break;
   case 11:
    $layout = $ti_020 + 8 | 0;
    $6 = HEAP32[$layout >> 2] | 0;
    $tobool15 = ($6 | 0) == 0;
    if ($tobool15) {
      label = 14;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $free_layout = $ti_020 + 12 | 0;
    $7 = HEAP32[$free_layout >> 2] | 0;
    $tobool16 = ($7 | 0) == 0;
    if ($tobool16) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    FUNCTION_TABLE_vi[$7 & 1023]($6);
    label = 14;
    break;
   case 14:
    $incdec_ptr = $ti_020 + 80 | 0;
    $inc = $j_021 + 1 | 0;
    $8 = HEAP16[$nitems >> 1] | 0;
    $conv3 = $8 << 16 >> 16;
    $cmp4 = ($inc | 0) < ($conv3 | 0);
    if ($cmp4) {
      $ti_020 = $incdec_ptr;
      $j_021 = $inc;
      label = 7;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $incdec_ptr21 = $tl_024 + 24 | 0;
    $inc23 = $i_025 + 1 | 0;
    $9 = HEAP16[$nparas >> 1] | 0;
    $conv = $9 << 16 >> 16;
    $cmp = ($inc23 | 0) < ($conv | 0);
    if ($cmp) {
      $tl_024 = $incdec_ptr21;
      $i_025 = $inc23;
      label = 5;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $10 = HEAP32[$paras >> 2] | 0;
    $tobool26 = ($10 | 0) == 0;
    if ($tobool26) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $11 = $10;
    _free($11);
    label = 18;
    break;
   case 18:
    $12 = $t;
    _free($12);
    label = 19;
    break;
   case 19:
    return;
  }
}
function _free_html_img($ip) {
  $ip = $ip | 0;
  _free(HEAP32[$ip + 32 >> 2] | 0);
  _free($ip);
  return;
}
function _free_html_label($lp, $root) {
  $lp = $lp | 0;
  $root = $root | 0;
  var $kind = 0, $0 = 0, $tbl = 0, $1 = 0, $img = 0, $2 = 0, $txt = 0, $3 = 0, $tobool = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $kind = $lp + 4 | 0;
    $0 = HEAP8[$kind] | 0;
    if (($0 << 24 >> 24 | 0) == 1) {
      label = 3;
      break;
    } else if (($0 << 24 >> 24 | 0) == 3) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $tbl = $lp | 0;
    $1 = HEAP32[$tbl >> 2] | 0;
    _free_html_tbl($1);
    label = 6;
    break;
   case 4:
    $img = $lp;
    $2 = HEAP32[$img >> 2] | 0;
    _free_html_img($2);
    label = 6;
    break;
   case 5:
    $txt = $lp;
    $3 = HEAP32[$txt >> 2] | 0;
    _free_html_text($3);
    label = 6;
    break;
   case 6:
    $tobool = ($root | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $4 = $lp;
    _free($4);
    label = 8;
    break;
   case 8:
    return;
  }
}
function _free_html_tbl($tbl) {
  $tbl = $tbl | 0;
  var $rc = 0, $0 = 0, $cmp = 0, $rows = 0, $1 = 0, $2 = 0, $call = 0, $heights = 0, $3 = 0, $4 = 0, $widths = 0, $5 = 0, $6 = 0, $7 = 0, $tobool11 = 0, $8 = 0, $cells_012 = 0, $incdec_ptr = 0, $9 = 0, $tobool = 0, $10 = 0, $11 = 0, $font = 0, $12 = 0, $tobool6 = 0, $data = 0, $13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rc = $tbl + 92 | 0;
    $0 = HEAP32[$rc >> 2] | 0;
    $cmp = ($0 | 0) == -1;
    $rows = $tbl + 76 | 0;
    $1 = HEAP32[$rows >> 2] | 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = $1;
    $call = _dtclose($2) | 0;
    label = 7;
    break;
   case 4:
    $heights = $tbl + 84 | 0;
    $3 = HEAP32[$heights >> 2] | 0;
    $4 = $3;
    _free($4);
    $widths = $tbl + 88 | 0;
    $5 = HEAP32[$widths >> 2] | 0;
    $6 = $5;
    _free($6);
    $7 = HEAP32[$1 >> 2] | 0;
    $tobool11 = ($7 | 0) == 0;
    if ($tobool11) {
      label = 6;
      break;
    } else {
      $cells_012 = $1;
      $8 = $7;
      label = 5;
      break;
    }
   case 5:
    _free_html_cell($8);
    $incdec_ptr = $cells_012 + 4 | 0;
    $9 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $cells_012 = $incdec_ptr;
      $8 = $9;
      label = 5;
      break;
    }
   case 6:
    $10 = HEAP32[$rows >> 2] | 0;
    $11 = $10;
    _free($11);
    label = 7;
    break;
   case 7:
    $font = $tbl + 100 | 0;
    $12 = HEAP32[$font >> 2] | 0;
    $tobool6 = ($12 | 0) == 0;
    if ($tobool6) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free_html_font($12);
    label = 9;
    break;
   case 9:
    $data = $tbl | 0;
    _free_html_data($data);
    $13 = $tbl;
    _free($13);
    return;
  }
}
function _html_port($n, $pname, $sides) {
  $n = $n | 0;
  $pname = $pname | 0;
  $sides = $sides | 0;
  var $label = 0, $0 = 0, $u1 = 0, $html = 0, $1 = 0, $kind = 0, $2 = 0, $cmp = 0, $tbl = 0, $3 = 0, $call = 0, $tobool = 0, $box = 0, $sides5 = 0, $4 = 0, $conv6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $label = $n + 120 | 0;
    $0 = HEAP32[$label >> 2] | 0;
    $u1 = $0 + 72 | 0;
    $html = $u1;
    $1 = HEAP32[$html >> 2] | 0;
    $kind = $1 + 4 | 0;
    $2 = HEAP8[$kind] | 0;
    $cmp = $2 << 24 >> 24 == 2;
    if ($cmp) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tbl = $1 | 0;
    $3 = HEAP32[$tbl >> 2] | 0;
    $call = _portToTbl($3, $pname) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $box = $call + 40 | 0;
    $sides5 = $call + 31 | 0;
    $4 = HEAP8[$sides5] | 0;
    $conv6 = $4 & 255;
    HEAP32[$sides >> 2] = $conv6;
    $retval_0 = $box;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _portToTbl($tp, $id) {
  $tp = $tp | 0;
  $id = $id | 0;
  var $port = 0, $0 = 0, $tobool = 0, $data = 0, $call = 0, $cmp = 0, $cells4 = 0, $1 = 0, $cells_0 = 0, $2 = 0, $tobool5 = 0, $incdec_ptr = 0, $call6 = 0, $tobool7 = 0, $rv_1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $port = $tp + 4 | 0;
    $0 = HEAP32[$port >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $data = $tp | 0;
    $call = _strcasecmp($0, $id) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      $rv_1 = $data;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $cells4 = $tp + 76 | 0;
    $1 = HEAP32[$cells4 >> 2] | 0;
    $cells_0 = $1;
    label = 5;
    break;
   case 5:
    $2 = HEAP32[$cells_0 >> 2] | 0;
    $tobool5 = ($2 | 0) == 0;
    if ($tobool5) {
      $rv_1 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $incdec_ptr = $cells_0 + 4 | 0;
    $call6 = _portToCell($2, $id) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      $cells_0 = $incdec_ptr;
      label = 5;
      break;
    } else {
      $rv_1 = $call6;
      label = 7;
      break;
    }
   case 7:
    return $rv_1 | 0;
  }
  return 0;
}
function _sizeLinearArray($tbl) {
  $tbl = $tbl | 0;
  var $rc = 0, $0 = 0, $add = 0, $mul = 0, $call = 0, $1 = 0, $heights = 0, $cc = 0, $2 = 0, $add1 = 0, $mul2 = 0, $call3 = 0, $3 = 0, $widths = 0, $cells4 = 0, $4 = 0, $5 = 0, $tobool51 = 0, $space41 = 0, $space = 0, $6 = 0, $cells_052 = 0, $rspan = 0, $7 = 0, $conv = 0, $cmp = 0, $y6 = 0, $8 = 0.0, $conv7 = 0, $9 = 0, $conv13 = 0, $sub = 0, $sub16 = 0, $mul17 = 0, $conv18 = 0.0, $sub19 = 0.0, $conv22 = 0.0, $div = 0.0, $conv23 = 0, $cmp24 = 0, $cond = 0, $ht_0 = 0, $cspan = 0, $10 = 0, $conv26 = 0, $cmp27 = 0, $x33 = 0, $11 = 0.0, $conv34 = 0, $12 = 0, $conv42 = 0, $sub43 = 0, $sub46 = 0, $mul47 = 0, $conv48 = 0.0, $sub49 = 0.0, $conv52 = 0.0, $div53 = 0.0, $conv54 = 0, $cmp55 = 0, $cond60 = 0, $wd_0 = 0, $row = 0, $13 = 0, $conv62 = 0, $conv6541 = 0, $14 = 0, $conv6742 = 0, $add6843 = 0, $cmp6944 = 0, $i_045 = 0, $15 = 0, $arrayidx = 0, $16 = 0, $cmp73 = 0, $cond78 = 0, $inc = 0, $17 = 0, $conv65 = 0, $18 = 0, $conv67 = 0, $add68 = 0, $cmp69 = 0, $col = 0, $19 = 0, $conv81 = 0, $conv8446 = 0, $20 = 0, $conv8647 = 0, $add8748 = 0, $cmp8849 = 0, $i_150 = 0, $21 = 0, $arrayidx92 = 0, $22 = 0, $cmp93 = 0, $cond98 = 0, $inc102 = 0, $23 = 0, $conv84 = 0, $24 = 0, $conv86 = 0, $add87 = 0, $cmp88 = 0, $incdec_ptr = 0, $25 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rc = $tbl + 92 | 0;
    $0 = HEAP32[$rc >> 2] | 0;
    $add = $0 << 2;
    $mul = $add + 4 | 0;
    $call = _zmalloc($mul) | 0;
    $1 = $call;
    $heights = $tbl + 84 | 0;
    HEAP32[$heights >> 2] = $1;
    $cc = $tbl + 96 | 0;
    $2 = HEAP32[$cc >> 2] | 0;
    $add1 = $2 << 2;
    $mul2 = $add1 + 4 | 0;
    $call3 = _zmalloc($mul2) | 0;
    $3 = $call3;
    $widths = $tbl + 88 | 0;
    HEAP32[$widths >> 2] = $3;
    $cells4 = $tbl + 76 | 0;
    $4 = HEAP32[$cells4 >> 2] | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $tobool51 = ($5 | 0) == 0;
    if ($tobool51) {
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $space41 = $tbl + 28 | 0;
    $space = $tbl + 28 | 0;
    $cells_052 = $4;
    $6 = $5;
    label = 4;
    break;
   case 4:
    $rspan = $6 + 74 | 0;
    $7 = HEAP16[$rspan >> 1] | 0;
    $conv = $7 & 65535;
    $cmp = $7 << 16 >> 16 == 1;
    $y6 = $6 + 64 | 0;
    $8 = +HEAPF64[$y6 >> 3];
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $conv7 = ~~$8;
    $ht_0 = $conv7;
    label = 7;
    break;
   case 6:
    $9 = HEAP8[$space] | 0;
    $conv13 = $9 << 24 >> 24;
    $sub = $conv13 - 1 | 0;
    $sub16 = $conv - 1 | 0;
    $mul17 = Math_imul($sub, $sub16);
    $conv18 = +($mul17 | 0);
    $sub19 = $8 - $conv18;
    $conv22 = +($conv | 0);
    $div = $sub19 / $conv22;
    $conv23 = ~~$div;
    $cmp24 = ($conv23 | 0) > 1;
    $cond = $cmp24 ? $conv23 : 1;
    $ht_0 = $cond;
    label = 7;
    break;
   case 7:
    $cspan = $6 + 72 | 0;
    $10 = HEAP16[$cspan >> 1] | 0;
    $conv26 = $10 & 65535;
    $cmp27 = $10 << 16 >> 16 == 1;
    $x33 = $6 + 56 | 0;
    $11 = +HEAPF64[$x33 >> 3];
    if ($cmp27) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $conv34 = ~~$11;
    $wd_0 = $conv34;
    label = 10;
    break;
   case 9:
    $12 = HEAP8[$space41] | 0;
    $conv42 = $12 << 24 >> 24;
    $sub43 = $conv42 - 1 | 0;
    $sub46 = $conv26 - 1 | 0;
    $mul47 = Math_imul($sub43, $sub46);
    $conv48 = +($mul47 | 0);
    $sub49 = $11 - $conv48;
    $conv52 = +($conv26 | 0);
    $div53 = $sub49 / $conv52;
    $conv54 = ~~$div53;
    $cmp55 = ($conv54 | 0) > 1;
    $cond60 = $cmp55 ? $conv54 : 1;
    $wd_0 = $cond60;
    label = 10;
    break;
   case 10:
    $row = $6 + 78 | 0;
    $13 = HEAP16[$row >> 1] | 0;
    $conv62 = $13 & 65535;
    $conv6541 = $13 & 65535;
    $14 = HEAP16[$rspan >> 1] | 0;
    $conv6742 = $14 & 65535;
    $add6843 = $conv6742 + $conv6541 | 0;
    $cmp6944 = ($conv62 | 0) < ($add6843 | 0);
    if ($cmp6944) {
      $i_045 = $conv62;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $15 = HEAP32[$heights >> 2] | 0;
    $arrayidx = $15 + ($i_045 << 2) | 0;
    $16 = HEAP32[$arrayidx >> 2] | 0;
    $cmp73 = ($16 | 0) > ($ht_0 | 0);
    $cond78 = $cmp73 ? $16 : $ht_0;
    HEAP32[$arrayidx >> 2] = $cond78;
    $inc = $i_045 + 1 | 0;
    $17 = HEAP16[$row >> 1] | 0;
    $conv65 = $17 & 65535;
    $18 = HEAP16[$rspan >> 1] | 0;
    $conv67 = $18 & 65535;
    $add68 = $conv67 + $conv65 | 0;
    $cmp69 = ($inc | 0) < ($add68 | 0);
    if ($cmp69) {
      $i_045 = $inc;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $col = $6 + 76 | 0;
    $19 = HEAP16[$col >> 1] | 0;
    $conv81 = $19 & 65535;
    $conv8446 = $19 & 65535;
    $20 = HEAP16[$cspan >> 1] | 0;
    $conv8647 = $20 & 65535;
    $add8748 = $conv8647 + $conv8446 | 0;
    $cmp8849 = ($conv81 | 0) < ($add8748 | 0);
    if ($cmp8849) {
      $i_150 = $conv81;
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $21 = HEAP32[$widths >> 2] | 0;
    $arrayidx92 = $21 + ($i_150 << 2) | 0;
    $22 = HEAP32[$arrayidx92 >> 2] | 0;
    $cmp93 = ($22 | 0) > ($wd_0 | 0);
    $cond98 = $cmp93 ? $22 : $wd_0;
    HEAP32[$arrayidx92 >> 2] = $cond98;
    $inc102 = $i_150 + 1 | 0;
    $23 = HEAP16[$col >> 1] | 0;
    $conv84 = $23 & 65535;
    $24 = HEAP16[$cspan >> 1] | 0;
    $conv86 = $24 & 65535;
    $add87 = $conv86 + $conv84 | 0;
    $cmp88 = ($inc102 | 0) < ($add87 | 0);
    if ($cmp88) {
      $i_150 = $inc102;
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $incdec_ptr = $cells_052 + 4 | 0;
    $25 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool = ($25 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      $cells_052 = $incdec_ptr;
      $6 = $25;
      label = 4;
      break;
    }
   case 15:
    return;
  }
}
function _nToName($c) {
  $c = $c | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $call = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = $c >>> 0 < 21;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $arrayidx = 9184 + ($c << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $retval_0 = $0;
    label = 5;
    break;
   case 4:
    $call = _sprintf(11088, 115528, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $c, tempInt) | 0) | 0;
    $retval_0 = 11088;
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _setSizes($tbl, $rowg, $colg) {
  $tbl = $tbl | 0;
  $rowg = $rowg | 0;
  $colg = $colg | 0;
  var $nlist = 0, $0 = 0, $n_0_in22 = 0, $n_023 = 0, $tobool24 = 0, $heights = 0, $n_027 = 0, $prev_026 = 0, $i_025 = 0, $rank = 0, $1 = 0, $sub = 0, $2 = 0, $arrayidx = 0, $3 = 0, $inc = 0, $n_0_in = 0, $n_0 = 0, $tobool = 0, $nlist8 = 0, $4 = 0, $n_1_in16 = 0, $n_117 = 0, $tobool1218 = 0, $widths = 0, $n_121 = 0, $prev_120 = 0, $i_119 = 0, $rank15 = 0, $5 = 0, $sub16 = 0, $6 = 0, $arrayidx17 = 0, $7 = 0, $inc21 = 0, $n_1_in = 0, $n_1 = 0, $tobool12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $rowg + 220 | 0;
    $0 = HEAP32[$nlist >> 2] | 0;
    $n_0_in22 = $0 + 168 | 0;
    $n_023 = HEAP32[$n_0_in22 >> 2] | 0;
    $tobool24 = ($n_023 | 0) == 0;
    if ($tobool24) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $heights = $tbl + 84 | 0;
    $i_025 = 0;
    $prev_026 = 0;
    $n_027 = $n_023;
    label = 4;
    break;
   case 4:
    $rank = $n_027 + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $sub = $1 - $prev_026 | 0;
    $2 = HEAP32[$heights >> 2] | 0;
    $arrayidx = $2 + ($i_025 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $sub;
    $3 = HEAP32[$rank >> 2] | 0;
    $inc = $i_025 + 1 | 0;
    $n_0_in = $n_027 + 168 | 0;
    $n_0 = HEAP32[$n_0_in >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $i_025 = $inc;
      $prev_026 = $3;
      $n_027 = $n_0;
      label = 4;
      break;
    }
   case 5:
    $nlist8 = $colg + 220 | 0;
    $4 = HEAP32[$nlist8 >> 2] | 0;
    $n_1_in16 = $4 + 168 | 0;
    $n_117 = HEAP32[$n_1_in16 >> 2] | 0;
    $tobool1218 = ($n_117 | 0) == 0;
    if ($tobool1218) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $widths = $tbl + 88 | 0;
    $i_119 = 0;
    $prev_120 = 0;
    $n_121 = $n_117;
    label = 7;
    break;
   case 7:
    $rank15 = $n_121 + 236 | 0;
    $5 = HEAP32[$rank15 >> 2] | 0;
    $sub16 = $5 - $prev_120 | 0;
    $6 = HEAP32[$widths >> 2] | 0;
    $arrayidx17 = $6 + ($i_119 << 2) | 0;
    HEAP32[$arrayidx17 >> 2] = $sub16;
    $7 = HEAP32[$rank15 >> 2] | 0;
    $inc21 = $i_119 + 1 | 0;
    $n_1_in = $n_121 + 168 | 0;
    $n_1 = HEAP32[$n_1_in >> 2] | 0;
    $tobool12 = ($n_1 | 0) == 0;
    if ($tobool12) {
      label = 8;
      break;
    } else {
      $i_119 = $inc21;
      $prev_120 = $7;
      $n_121 = $n_1;
      label = 7;
      break;
    }
   case 8:
    return;
  }
}
function _makeGraphs($tbl, $rowg, $colg) {
  $tbl = $tbl | 0;
  $rowg = $rowg | 0;
  $colg = $colg | 0;
  var $cc = 0, $0 = 0, $cmp153 = 0, $1 = 0, $rc = 0, $nlist = 0, $rc19 = 0, $2 = 0, $cmp20149 = 0, $3 = 0, $nlist54 = 0, $lastn_0155 = 0, $i_0154 = 0, $call = 0, $call1 = 0, $4 = 0, $u = 0, $in = 0, $size = 0, $5 = 0, $6 = 0, $add = 0, $mul = 0, $call2 = 0, $7 = 0, $list = 0, $out = 0, $size7 = 0, $8 = 0, $9 = 0, $add9 = 0, $mul10 = 0, $call11 = 0, $10 = 0, $list14 = 0, $tobool = 0, $next = 0, $inc = 0, $11 = 0, $cmp = 0, $lastn_2151 = 0, $i_1150 = 0, $call22 = 0, $call23 = 0, $12 = 0, $u25 = 0, $in26 = 0, $size27 = 0, $13 = 0, $14 = 0, $add29 = 0, $mul30 = 0, $call31 = 0, $15 = 0, $list34 = 0, $out38 = 0, $size39 = 0, $16 = 0, $17 = 0, $add41 = 0, $mul42 = 0, $call43 = 0, $18 = 0, $list46 = 0, $tobool48 = 0, $next51 = 0, $inc57 = 0, $19 = 0, $cmp20 = 0, $_lcssa = 0, $mul60 = 0, $call61 = 0, $20 = 0, $21 = 0, $mul63 = 0, $call64 = 0, $22 = 0, $cells66 = 0, $23 = 0, $24 = 0, $tobool68147 = 0, $25 = 0, $cells_0148 = 0, $x70 = 0, $26 = 0.0, $cspan = 0, $27 = 0, $conv = 0, $sub = 0, $conv71 = 0.0, $add72 = 0.0, $conv75 = 0.0, $div = 0.0, $conv76 = 0, $28 = 0, $cmp80142 = 0, $col = 0, $c_0143 = 0, $29 = 0, $conv83 = 0, $add84 = 0, $arrayidx = 0, $30 = 0, $cmp85 = 0, $_conv76 = 0, $inc96 = 0, $31 = 0, $conv79 = 0, $cmp80 = 0, $y101 = 0, $32 = 0.0, $rspan = 0, $33 = 0, $conv102 = 0, $sub103 = 0, $conv104 = 0.0, $add105 = 0.0, $conv108 = 0.0, $div109 = 0.0, $conv110 = 0, $34 = 0, $cmp114145 = 0, $row = 0, $r_0146 = 0, $35 = 0, $conv117 = 0, $add118 = 0, $arrayidx119 = 0, $36 = 0, $cmp120 = 0, $_conv110 = 0, $inc135 = 0, $37 = 0, $conv113 = 0, $cmp114 = 0, $incdec_ptr = 0, $38 = 0, $tobool68 = 0, $39 = 0, $40 = 0, $tobool143139 = 0, $41 = 0, $42 = 0, $43 = 0, $cells_1140 = 0, $col149 = 0, $44 = 0, $conv150 = 0, $call151 = 0, $call152 = 0, $45 = 0, $conv154 = 0, $cspan155 = 0, $46 = 0, $conv156 = 0, $add157 = 0, $call158 = 0, $call159 = 0, $call160 = 0, $47 = 0, $48 = 0, $cmp164131 = 0, $49 = 0, $conv168 = 0, $50 = 0, $conv163 = 0, $c147_0133 = 0, $x145_0132 = 0, $add169 = 0, $arrayidx170 = 0, $51 = 0, $add171 = 0, $inc173 = 0, $cmp164 = 0, $extract_t = 0, $x145_0_lcssa_off0 = 0, $u176 = 0, $minlen = 0, $52 = 0, $u178 = 0, $out179 = 0, $list180 = 0, $53 = 0, $tobool181 = 0, $54 = 0, $size188 = 0, $55 = 0, $56 = 0, $add189 = 0, $mul190 = 0, $call191 = 0, $size195 = 0, $57 = 0, $58 = 0, $add196 = 0, $mul197 = 0, $call198 = 0, $call191_sink = 0, $59 = 0, $size206 = 0, $60 = 0, $61 = 0, $inc207 = 0, $62 = 0, $arrayidx211 = 0, $63 = 0, $64 = 0, $arrayidx218 = 0, $u221 = 0, $in222 = 0, $list223 = 0, $65 = 0, $tobool224 = 0, $66 = 0, $size231 = 0, $67 = 0, $68 = 0, $add232 = 0, $mul233 = 0, $call234 = 0, $size238 = 0, $69 = 0, $70 = 0, $add239 = 0, $mul240 = 0, $call241 = 0, $call234_sink = 0, $71 = 0, $size249 = 0, $72 = 0, $73 = 0, $inc250 = 0, $74 = 0, $arrayidx254 = 0, $75 = 0, $76 = 0, $arrayidx261 = 0, $row263 = 0, $77 = 0, $conv264 = 0, $call265 = 0, $call266 = 0, $78 = 0, $conv268 = 0, $rspan269 = 0, $79 = 0, $conv270 = 0, $add271 = 0, $call272 = 0, $call273 = 0, $call274 = 0, $80 = 0, $81 = 0, $cmp278135 = 0, $82 = 0, $conv282 = 0, $83 = 0, $conv277 = 0, $r148_0137 = 0, $y146_0136 = 0, $add283 = 0, $arrayidx284 = 0, $84 = 0, $add285 = 0, $inc287 = 0, $cmp278 = 0, $extract_t157 = 0, $y146_0_lcssa_off0 = 0, $u290 = 0, $minlen291 = 0, $85 = 0, $u293 = 0, $out294 = 0, $list295 = 0, $86 = 0, $tobool296 = 0, $87 = 0, $size303 = 0, $88 = 0, $89 = 0, $add304 = 0, $mul305 = 0, $call306 = 0, $size310 = 0, $90 = 0, $91 = 0, $add311 = 0, $mul312 = 0, $call313 = 0, $call306_sink = 0, $92 = 0, $size321 = 0, $93 = 0, $94 = 0, $inc322 = 0, $95 = 0, $arrayidx326 = 0, $96 = 0, $97 = 0, $arrayidx333 = 0, $u336 = 0, $in337 = 0, $list338 = 0, $98 = 0, $tobool339 = 0, $99 = 0, $size346 = 0, $100 = 0, $101 = 0, $add347 = 0, $mul348 = 0, $call349 = 0, $size353 = 0, $102 = 0, $103 = 0, $add354 = 0, $mul355 = 0, $call356 = 0, $call349_sink = 0, $104 = 0, $size364 = 0, $105 = 0, $106 = 0, $inc365 = 0, $107 = 0, $arrayidx369 = 0, $108 = 0, $109 = 0, $arrayidx376 = 0, $incdec_ptr379 = 0, $110 = 0, $tobool143 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cc = $tbl + 96 | 0;
    $0 = HEAP32[$cc >> 2] | 0;
    $cmp153 = ($0 | 0) < 0;
    if ($cmp153) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $colg;
    $rc = $tbl + 92 | 0;
    $nlist = $colg + 220 | 0;
    $i_0154 = 0;
    $lastn_0155 = 0;
    label = 6;
    break;
   case 4:
    $rc19 = $tbl + 92 | 0;
    $2 = HEAP32[$rc19 >> 2] | 0;
    $cmp20149 = ($2 | 0) < 0;
    if ($cmp20149) {
      $_lcssa = $2;
      label = 14;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = $rowg;
    $nlist54 = $rowg + 220 | 0;
    $i_1150 = 0;
    $lastn_2151 = 0;
    label = 10;
    break;
   case 6:
    $call = _nToName($i_0154) | 0;
    $call1 = _agnode($1, $call) | 0;
    $4 = $call1;
    $u = $call1 + 24 | 0;
    $in = $u + 152 | 0;
    $size = $u + 156 | 0;
    $5 = $size;
    HEAP32[$5 >> 2] = 0;
    $6 = HEAP32[$rc >> 2] | 0;
    $add = $6 << 2;
    $mul = $add + 4 | 0;
    $call2 = _zmalloc($mul) | 0;
    $7 = $call2;
    $list = $in;
    HEAP32[$list >> 2] = $7;
    $out = $u + 160 | 0;
    $size7 = $u + 164 | 0;
    $8 = $size7;
    HEAP32[$8 >> 2] = 0;
    $9 = HEAP32[$rc >> 2] | 0;
    $add9 = $9 << 2;
    $mul10 = $add9 + 4 | 0;
    $call11 = _zmalloc($mul10) | 0;
    $10 = $call11;
    $list14 = $out;
    HEAP32[$list14 >> 2] = $10;
    $tobool = ($lastn_0155 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $next = $lastn_0155 + 168 | 0;
    HEAP32[$next >> 2] = $4;
    label = 9;
    break;
   case 8:
    HEAP32[$nlist >> 2] = $4;
    label = 9;
    break;
   case 9:
    $inc = $i_0154 + 1 | 0;
    $11 = HEAP32[$cc >> 2] | 0;
    $cmp = ($inc | 0) > ($11 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $i_0154 = $inc;
      $lastn_0155 = $4;
      label = 6;
      break;
    }
   case 10:
    $call22 = _nToName($i_1150) | 0;
    $call23 = _agnode($3, $call22) | 0;
    $12 = $call23;
    $u25 = $call23 + 24 | 0;
    $in26 = $u25 + 152 | 0;
    $size27 = $u25 + 156 | 0;
    $13 = $size27;
    HEAP32[$13 >> 2] = 0;
    $14 = HEAP32[$cc >> 2] | 0;
    $add29 = $14 << 2;
    $mul30 = $add29 + 4 | 0;
    $call31 = _zmalloc($mul30) | 0;
    $15 = $call31;
    $list34 = $in26;
    HEAP32[$list34 >> 2] = $15;
    $out38 = $u25 + 160 | 0;
    $size39 = $u25 + 164 | 0;
    $16 = $size39;
    HEAP32[$16 >> 2] = 0;
    $17 = HEAP32[$cc >> 2] | 0;
    $add41 = $17 << 2;
    $mul42 = $add41 + 4 | 0;
    $call43 = _zmalloc($mul42) | 0;
    $18 = $call43;
    $list46 = $out38;
    HEAP32[$list46 >> 2] = $18;
    $tobool48 = ($lastn_2151 | 0) == 0;
    if ($tobool48) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $next51 = $lastn_2151 + 168 | 0;
    HEAP32[$next51 >> 2] = $12;
    label = 13;
    break;
   case 12:
    HEAP32[$nlist54 >> 2] = $12;
    label = 13;
    break;
   case 13:
    $inc57 = $i_1150 + 1 | 0;
    $19 = HEAP32[$rc19 >> 2] | 0;
    $cmp20 = ($inc57 | 0) > ($19 | 0);
    if ($cmp20) {
      $_lcssa = $19;
      label = 14;
      break;
    } else {
      $i_1150 = $inc57;
      $lastn_2151 = $12;
      label = 10;
      break;
    }
   case 14:
    $mul60 = $_lcssa << 2;
    $call61 = _zmalloc($mul60) | 0;
    $20 = $call61;
    $21 = HEAP32[$cc >> 2] | 0;
    $mul63 = $21 << 2;
    $call64 = _zmalloc($mul63) | 0;
    $22 = $call64;
    $cells66 = $tbl + 76 | 0;
    $23 = HEAP32[$cells66 >> 2] | 0;
    $24 = HEAP32[$23 >> 2] | 0;
    $tobool68147 = ($24 | 0) == 0;
    if ($tobool68147) {
      label = 22;
      break;
    } else {
      $cells_0148 = $23;
      $25 = $24;
      label = 15;
      break;
    }
   case 15:
    $x70 = $25 + 56 | 0;
    $26 = +HEAPF64[$x70 >> 3];
    $cspan = $25 + 72 | 0;
    $27 = HEAP16[$cspan >> 1] | 0;
    $conv = $27 & 65535;
    $sub = $conv - 1 | 0;
    $conv71 = +($sub | 0);
    $add72 = $26 + $conv71;
    $conv75 = +($conv | 0);
    $div = $add72 / $conv75;
    $conv76 = ~~$div;
    $28 = HEAP16[$cspan >> 1] | 0;
    $cmp80142 = $28 << 16 >> 16 == 0;
    if ($cmp80142) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $col = $25 + 76 | 0;
    $c_0143 = 0;
    label = 17;
    break;
   case 17:
    $29 = HEAP16[$col >> 1] | 0;
    $conv83 = $29 & 65535;
    $add84 = $conv83 + $c_0143 | 0;
    $arrayidx = $22 + ($add84 << 2) | 0;
    $30 = HEAP32[$arrayidx >> 2] | 0;
    $cmp85 = ($30 | 0) > ($conv76 | 0);
    $_conv76 = $cmp85 ? $30 : $conv76;
    HEAP32[$arrayidx >> 2] = $_conv76;
    $inc96 = $c_0143 + 1 | 0;
    $31 = HEAP16[$cspan >> 1] | 0;
    $conv79 = $31 & 65535;
    $cmp80 = ($inc96 | 0) < ($conv79 | 0);
    if ($cmp80) {
      $c_0143 = $inc96;
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $y101 = $25 + 64 | 0;
    $32 = +HEAPF64[$y101 >> 3];
    $rspan = $25 + 74 | 0;
    $33 = HEAP16[$rspan >> 1] | 0;
    $conv102 = $33 & 65535;
    $sub103 = $conv102 - 1 | 0;
    $conv104 = +($sub103 | 0);
    $add105 = $32 + $conv104;
    $conv108 = +($conv102 | 0);
    $div109 = $add105 / $conv108;
    $conv110 = ~~$div109;
    $34 = HEAP16[$rspan >> 1] | 0;
    $cmp114145 = $34 << 16 >> 16 == 0;
    if ($cmp114145) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $row = $25 + 78 | 0;
    $r_0146 = 0;
    label = 20;
    break;
   case 20:
    $35 = HEAP16[$row >> 1] | 0;
    $conv117 = $35 & 65535;
    $add118 = $conv117 + $r_0146 | 0;
    $arrayidx119 = $20 + ($add118 << 2) | 0;
    $36 = HEAP32[$arrayidx119 >> 2] | 0;
    $cmp120 = ($36 | 0) > ($conv110 | 0);
    $_conv110 = $cmp120 ? $36 : $conv110;
    HEAP32[$arrayidx119 >> 2] = $_conv110;
    $inc135 = $r_0146 + 1 | 0;
    $37 = HEAP16[$rspan >> 1] | 0;
    $conv113 = $37 & 65535;
    $cmp114 = ($inc135 | 0) < ($conv113 | 0);
    if ($cmp114) {
      $r_0146 = $inc135;
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $incdec_ptr = $cells_0148 + 4 | 0;
    $38 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool68 = ($38 | 0) == 0;
    if ($tobool68) {
      label = 22;
      break;
    } else {
      $cells_0148 = $incdec_ptr;
      $25 = $38;
      label = 15;
      break;
    }
   case 22:
    $39 = HEAP32[$cells66 >> 2] | 0;
    $40 = HEAP32[$39 >> 2] | 0;
    $tobool143139 = ($40 | 0) == 0;
    if ($tobool143139) {
      label = 45;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $41 = $colg;
    $42 = $rowg;
    $cells_1140 = $39;
    $43 = $40;
    label = 24;
    break;
   case 24:
    $col149 = $43 + 76 | 0;
    $44 = HEAP16[$col149 >> 1] | 0;
    $conv150 = $44 & 65535;
    $call151 = _nToName($conv150) | 0;
    $call152 = _agfindnode($41, $call151) | 0;
    $45 = HEAP16[$col149 >> 1] | 0;
    $conv154 = $45 & 65535;
    $cspan155 = $43 + 72 | 0;
    $46 = HEAP16[$cspan155 >> 1] | 0;
    $conv156 = $46 & 65535;
    $add157 = $conv156 + $conv154 | 0;
    $call158 = _nToName($add157) | 0;
    $call159 = _agfindnode($41, $call158) | 0;
    $call160 = _agedge($41, $call152, $call159) | 0;
    $47 = $call160;
    $48 = HEAP16[$cspan155 >> 1] | 0;
    $cmp164131 = $48 << 16 >> 16 == 0;
    if ($cmp164131) {
      $x145_0_lcssa_off0 = 0;
      label = 28;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $49 = HEAP16[$col149 >> 1] | 0;
    $conv168 = $49 & 65535;
    $50 = HEAP16[$cspan155 >> 1] | 0;
    $conv163 = $50 & 65535;
    $x145_0132 = 0;
    $c147_0133 = 0;
    label = 26;
    break;
   case 26:
    $add169 = $conv168 + $c147_0133 | 0;
    $arrayidx170 = $22 + ($add169 << 2) | 0;
    $51 = HEAP32[$arrayidx170 >> 2] | 0;
    $add171 = $51 + $x145_0132 | 0;
    $inc173 = $c147_0133 + 1 | 0;
    $cmp164 = ($inc173 | 0) < ($conv163 | 0);
    if ($cmp164) {
      $x145_0132 = $add171;
      $c147_0133 = $inc173;
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $extract_t = $add171 & 65535;
    $x145_0_lcssa_off0 = $extract_t;
    label = 28;
    break;
   case 28:
    $u176 = $call160 + 24 | 0;
    $minlen = $u176 + 162 | 0;
    $52 = $minlen;
    HEAP16[$52 >> 1] = $x145_0_lcssa_off0;
    $u178 = $call152 + 24 | 0;
    $out179 = $u178 + 160 | 0;
    $list180 = $out179;
    $53 = HEAP32[$list180 >> 2] | 0;
    $tobool181 = ($53 | 0) == 0;
    if ($tobool181) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $54 = $53;
    $size188 = $u178 + 164 | 0;
    $55 = $size188;
    $56 = HEAP32[$55 >> 2] | 0;
    $add189 = $56 << 2;
    $mul190 = $add189 + 8 | 0;
    $call191 = _grealloc($54, $mul190) | 0;
    $call191_sink = $call191;
    label = 31;
    break;
   case 30:
    $size195 = $u178 + 164 | 0;
    $57 = $size195;
    $58 = HEAP32[$57 >> 2] | 0;
    $add196 = $58 << 2;
    $mul197 = $add196 + 8 | 0;
    $call198 = _gmalloc($mul197) | 0;
    $call191_sink = $call198;
    label = 31;
    break;
   case 31:
    $59 = $call191_sink;
    HEAP32[$list180 >> 2] = $59;
    $size206 = $u178 + 164 | 0;
    $60 = $size206;
    $61 = HEAP32[$60 >> 2] | 0;
    $inc207 = $61 + 1 | 0;
    HEAP32[$60 >> 2] = $inc207;
    $62 = HEAP32[$list180 >> 2] | 0;
    $arrayidx211 = $62 + ($61 << 2) | 0;
    HEAP32[$arrayidx211 >> 2] = $47;
    $63 = HEAP32[$60 >> 2] | 0;
    $64 = HEAP32[$list180 >> 2] | 0;
    $arrayidx218 = $64 + ($63 << 2) | 0;
    HEAP32[$arrayidx218 >> 2] = 0;
    $u221 = $call159 + 24 | 0;
    $in222 = $u221 + 152 | 0;
    $list223 = $in222;
    $65 = HEAP32[$list223 >> 2] | 0;
    $tobool224 = ($65 | 0) == 0;
    if ($tobool224) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $66 = $65;
    $size231 = $u221 + 156 | 0;
    $67 = $size231;
    $68 = HEAP32[$67 >> 2] | 0;
    $add232 = $68 << 2;
    $mul233 = $add232 + 8 | 0;
    $call234 = _grealloc($66, $mul233) | 0;
    $call234_sink = $call234;
    label = 34;
    break;
   case 33:
    $size238 = $u221 + 156 | 0;
    $69 = $size238;
    $70 = HEAP32[$69 >> 2] | 0;
    $add239 = $70 << 2;
    $mul240 = $add239 + 8 | 0;
    $call241 = _gmalloc($mul240) | 0;
    $call234_sink = $call241;
    label = 34;
    break;
   case 34:
    $71 = $call234_sink;
    HEAP32[$list223 >> 2] = $71;
    $size249 = $u221 + 156 | 0;
    $72 = $size249;
    $73 = HEAP32[$72 >> 2] | 0;
    $inc250 = $73 + 1 | 0;
    HEAP32[$72 >> 2] = $inc250;
    $74 = HEAP32[$list223 >> 2] | 0;
    $arrayidx254 = $74 + ($73 << 2) | 0;
    HEAP32[$arrayidx254 >> 2] = $47;
    $75 = HEAP32[$72 >> 2] | 0;
    $76 = HEAP32[$list223 >> 2] | 0;
    $arrayidx261 = $76 + ($75 << 2) | 0;
    HEAP32[$arrayidx261 >> 2] = 0;
    $row263 = $43 + 78 | 0;
    $77 = HEAP16[$row263 >> 1] | 0;
    $conv264 = $77 & 65535;
    $call265 = _nToName($conv264) | 0;
    $call266 = _agfindnode($42, $call265) | 0;
    $78 = HEAP16[$row263 >> 1] | 0;
    $conv268 = $78 & 65535;
    $rspan269 = $43 + 74 | 0;
    $79 = HEAP16[$rspan269 >> 1] | 0;
    $conv270 = $79 & 65535;
    $add271 = $conv270 + $conv268 | 0;
    $call272 = _nToName($add271) | 0;
    $call273 = _agfindnode($42, $call272) | 0;
    $call274 = _agedge($42, $call266, $call273) | 0;
    $80 = $call274;
    $81 = HEAP16[$rspan269 >> 1] | 0;
    $cmp278135 = $81 << 16 >> 16 == 0;
    if ($cmp278135) {
      $y146_0_lcssa_off0 = 0;
      label = 38;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $82 = HEAP16[$row263 >> 1] | 0;
    $conv282 = $82 & 65535;
    $83 = HEAP16[$rspan269 >> 1] | 0;
    $conv277 = $83 & 65535;
    $y146_0136 = 0;
    $r148_0137 = 0;
    label = 36;
    break;
   case 36:
    $add283 = $conv282 + $r148_0137 | 0;
    $arrayidx284 = $20 + ($add283 << 2) | 0;
    $84 = HEAP32[$arrayidx284 >> 2] | 0;
    $add285 = $84 + $y146_0136 | 0;
    $inc287 = $r148_0137 + 1 | 0;
    $cmp278 = ($inc287 | 0) < ($conv277 | 0);
    if ($cmp278) {
      $y146_0136 = $add285;
      $r148_0137 = $inc287;
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $extract_t157 = $add285 & 65535;
    $y146_0_lcssa_off0 = $extract_t157;
    label = 38;
    break;
   case 38:
    $u290 = $call274 + 24 | 0;
    $minlen291 = $u290 + 162 | 0;
    $85 = $minlen291;
    HEAP16[$85 >> 1] = $y146_0_lcssa_off0;
    $u293 = $call266 + 24 | 0;
    $out294 = $u293 + 160 | 0;
    $list295 = $out294;
    $86 = HEAP32[$list295 >> 2] | 0;
    $tobool296 = ($86 | 0) == 0;
    if ($tobool296) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $87 = $86;
    $size303 = $u293 + 164 | 0;
    $88 = $size303;
    $89 = HEAP32[$88 >> 2] | 0;
    $add304 = $89 << 2;
    $mul305 = $add304 + 8 | 0;
    $call306 = _grealloc($87, $mul305) | 0;
    $call306_sink = $call306;
    label = 41;
    break;
   case 40:
    $size310 = $u293 + 164 | 0;
    $90 = $size310;
    $91 = HEAP32[$90 >> 2] | 0;
    $add311 = $91 << 2;
    $mul312 = $add311 + 8 | 0;
    $call313 = _gmalloc($mul312) | 0;
    $call306_sink = $call313;
    label = 41;
    break;
   case 41:
    $92 = $call306_sink;
    HEAP32[$list295 >> 2] = $92;
    $size321 = $u293 + 164 | 0;
    $93 = $size321;
    $94 = HEAP32[$93 >> 2] | 0;
    $inc322 = $94 + 1 | 0;
    HEAP32[$93 >> 2] = $inc322;
    $95 = HEAP32[$list295 >> 2] | 0;
    $arrayidx326 = $95 + ($94 << 2) | 0;
    HEAP32[$arrayidx326 >> 2] = $80;
    $96 = HEAP32[$93 >> 2] | 0;
    $97 = HEAP32[$list295 >> 2] | 0;
    $arrayidx333 = $97 + ($96 << 2) | 0;
    HEAP32[$arrayidx333 >> 2] = 0;
    $u336 = $call273 + 24 | 0;
    $in337 = $u336 + 152 | 0;
    $list338 = $in337;
    $98 = HEAP32[$list338 >> 2] | 0;
    $tobool339 = ($98 | 0) == 0;
    if ($tobool339) {
      label = 43;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $99 = $98;
    $size346 = $u336 + 156 | 0;
    $100 = $size346;
    $101 = HEAP32[$100 >> 2] | 0;
    $add347 = $101 << 2;
    $mul348 = $add347 + 8 | 0;
    $call349 = _grealloc($99, $mul348) | 0;
    $call349_sink = $call349;
    label = 44;
    break;
   case 43:
    $size353 = $u336 + 156 | 0;
    $102 = $size353;
    $103 = HEAP32[$102 >> 2] | 0;
    $add354 = $103 << 2;
    $mul355 = $add354 + 8 | 0;
    $call356 = _gmalloc($mul355) | 0;
    $call349_sink = $call356;
    label = 44;
    break;
   case 44:
    $104 = $call349_sink;
    HEAP32[$list338 >> 2] = $104;
    $size364 = $u336 + 156 | 0;
    $105 = $size364;
    $106 = HEAP32[$105 >> 2] | 0;
    $inc365 = $106 + 1 | 0;
    HEAP32[$105 >> 2] = $inc365;
    $107 = HEAP32[$list338 >> 2] | 0;
    $arrayidx369 = $107 + ($106 << 2) | 0;
    HEAP32[$arrayidx369 >> 2] = $80;
    $108 = HEAP32[$105 >> 2] | 0;
    $109 = HEAP32[$list338 >> 2] | 0;
    $arrayidx376 = $109 + ($108 << 2) | 0;
    HEAP32[$arrayidx376 >> 2] = 0;
    $incdec_ptr379 = $cells_1140 + 4 | 0;
    $110 = HEAP32[$incdec_ptr379 >> 2] | 0;
    $tobool143 = ($110 | 0) == 0;
    if ($tobool143) {
      label = 45;
      break;
    } else {
      $cells_1140 = $incdec_ptr379;
      $43 = $110;
      label = 24;
      break;
    }
   case 45:
    _checkChain($colg);
    _checkChain($rowg);
    _free($call64);
    _free($call61);
    return;
  }
}
function _checkChain($g) {
  $g = $g | 0;
  var $nlist = 0, $0 = 0, $h_0_in27 = 0, $h_028 = 0, $tobool29 = 0, $1 = 0, $h_031 = 0, $_pn30 = 0, $2 = 0, $3 = 0, $call = 0, $tobool2 = 0, $h_0_in = 0, $h_0 = 0, $tobool = 0, $call3 = 0, $4 = 0, $u4 = 0, $minlen = 0, $5 = 0, $list = 0, $6 = 0, $tobool6 = 0, $7 = 0, $size = 0, $8 = 0, $add = 0, $mul = 0, $call12 = 0, $size15 = 0, $9 = 0, $add16 = 0, $mul17 = 0, $call18 = 0, $call12_sink = 0, $10 = 0, $size24 = 0, $11 = 0, $inc = 0, $12 = 0, $arrayidx = 0, $13 = 0, $14 = 0, $arrayidx34 = 0, $list37 = 0, $15 = 0, $tobool38 = 0, $16 = 0, $size45 = 0, $17 = 0, $add46 = 0, $mul47 = 0, $call48 = 0, $size52 = 0, $18 = 0, $add53 = 0, $mul54 = 0, $call55 = 0, $call48_sink = 0, $19 = 0, $size63 = 0, $20 = 0, $inc64 = 0, $21 = 0, $arrayidx68 = 0, $22 = 0, $23 = 0, $arrayidx75 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $0 = HEAP32[$nlist >> 2] | 0;
    $h_0_in27 = $0 + 168 | 0;
    $h_028 = HEAP32[$h_0_in27 >> 2] | 0;
    $tobool29 = ($h_028 | 0) == 0;
    if ($tobool29) {
      label = 13;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $g;
    $_pn30 = $0;
    $h_031 = $h_028;
    label = 4;
    break;
   case 4:
    $2 = $_pn30;
    $3 = $h_031;
    $call = _agfindedge($1, $2, $3) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $h_0_in = $h_031 + 168 | 0;
    $h_0 = HEAP32[$h_0_in >> 2] | 0;
    $tobool = ($h_0 | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      $_pn30 = $h_031;
      $h_031 = $h_0;
      label = 4;
      break;
    }
   case 6:
    $call3 = _agedge($1, $2, $3) | 0;
    $4 = $call3;
    $u4 = $call3 + 24 | 0;
    $minlen = $u4 + 162 | 0;
    $5 = $minlen;
    HEAP16[$5 >> 1] = 0;
    $list = $_pn30 + 184 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $tobool6 = ($6 | 0) == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = $6;
    $size = $_pn30 + 188 | 0;
    $8 = HEAP32[$size >> 2] | 0;
    $add = $8 << 2;
    $mul = $add + 8 | 0;
    $call12 = _grealloc($7, $mul) | 0;
    $call12_sink = $call12;
    label = 9;
    break;
   case 8:
    $size15 = $_pn30 + 188 | 0;
    $9 = HEAP32[$size15 >> 2] | 0;
    $add16 = $9 << 2;
    $mul17 = $add16 + 8 | 0;
    $call18 = _gmalloc($mul17) | 0;
    $call12_sink = $call18;
    label = 9;
    break;
   case 9:
    $10 = $call12_sink;
    HEAP32[$list >> 2] = $10;
    $size24 = $_pn30 + 188 | 0;
    $11 = HEAP32[$size24 >> 2] | 0;
    $inc = $11 + 1 | 0;
    HEAP32[$size24 >> 2] = $inc;
    $12 = HEAP32[$list >> 2] | 0;
    $arrayidx = $12 + ($11 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $4;
    $13 = HEAP32[$size24 >> 2] | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $arrayidx34 = $14 + ($13 << 2) | 0;
    HEAP32[$arrayidx34 >> 2] = 0;
    $list37 = $h_031 + 176 | 0;
    $15 = HEAP32[$list37 >> 2] | 0;
    $tobool38 = ($15 | 0) == 0;
    if ($tobool38) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $16 = $15;
    $size45 = $h_031 + 180 | 0;
    $17 = HEAP32[$size45 >> 2] | 0;
    $add46 = $17 << 2;
    $mul47 = $add46 + 8 | 0;
    $call48 = _grealloc($16, $mul47) | 0;
    $call48_sink = $call48;
    label = 12;
    break;
   case 11:
    $size52 = $h_031 + 180 | 0;
    $18 = HEAP32[$size52 >> 2] | 0;
    $add53 = $18 << 2;
    $mul54 = $add53 + 8 | 0;
    $call55 = _gmalloc($mul54) | 0;
    $call48_sink = $call55;
    label = 12;
    break;
   case 12:
    $19 = $call48_sink;
    HEAP32[$list37 >> 2] = $19;
    $size63 = $h_031 + 180 | 0;
    $20 = HEAP32[$size63 >> 2] | 0;
    $inc64 = $20 + 1 | 0;
    HEAP32[$size63 >> 2] = $inc64;
    $21 = HEAP32[$list37 >> 2] | 0;
    $arrayidx68 = $21 + ($20 << 2) | 0;
    HEAP32[$arrayidx68 >> 2] = $4;
    $22 = HEAP32[$size63 >> 2] | 0;
    $23 = HEAP32[$list37 >> 2] | 0;
    $arrayidx75 = $23 + ($22 << 2) | 0;
    HEAP32[$arrayidx75 >> 2] = 0;
    label = 5;
    break;
   case 13:
    return;
  }
}
function _sizeArray($tbl) {
  $tbl = $tbl | 0;
  var $rc = 0, $0 = 0, $cmp = 0, $cc = 0, $1 = 0, $cmp1 = 0, $add = 0, $mul = 0, $call = 0, $2 = 0, $heights = 0, $3 = 0, $add4 = 0, $mul5 = 0, $call6 = 0, $4 = 0, $widths = 0, $call7 = 0, $5 = 0, $call8 = 0, $6 = 0, $call9 = 0, $call10 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rc = $tbl + 92 | 0;
    $0 = HEAP32[$rc >> 2] | 0;
    $cmp = ($0 | 0) == 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cc = $tbl + 96 | 0;
    $1 = HEAP32[$cc >> 2] | 0;
    $cmp1 = ($1 | 0) == 1;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    _sizeLinearArray($tbl);
    label = 6;
    break;
   case 5:
    $add = $0 << 2;
    $mul = $add + 4 | 0;
    $call = _zmalloc($mul) | 0;
    $2 = $call;
    $heights = $tbl + 84 | 0;
    HEAP32[$heights >> 2] = $2;
    $3 = HEAP32[$cc >> 2] | 0;
    $add4 = $3 << 2;
    $mul5 = $add4 + 4 | 0;
    $call6 = _zmalloc($mul5) | 0;
    $4 = $call6;
    $widths = $tbl + 88 | 0;
    HEAP32[$widths >> 2] = $4;
    $call7 = _agopen(110608, 1) | 0;
    $5 = $call7;
    $call8 = _agopen(106400, 1) | 0;
    $6 = $call8;
    _makeGraphs($tbl, $5, $6);
    $call9 = _rank($5, 2, 2147483647) | 0;
    $call10 = _rank($6, 2, 2147483647) | 0;
    _setSizes($tbl, $5, $6);
    _closeGraphs($5, $6);
    label = 6;
    break;
   case 6:
    return;
  }
}
function _closeGraphs($rowg, $colg) {
  $rowg = $rowg | 0;
  $colg = $colg | 0;
  var $nlist = 0, $n_07 = 0, $tobool8 = 0, $n_09 = 0, $list = 0, $0 = 0, $tobool2 = 0, $1 = 0, $list8 = 0, $2 = 0, $tobool9 = 0, $3 = 0, $next = 0, $n_0 = 0, $tobool = 0, $4 = 0, $5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $colg + 220 | 0;
    $n_07 = HEAP32[$nlist >> 2] | 0;
    $tobool8 = ($n_07 | 0) == 0;
    if ($tobool8) {
      label = 8;
      break;
    } else {
      $n_09 = $n_07;
      label = 3;
      break;
    }
   case 3:
    $list = $n_09 + 176 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = $0;
    _free($1);
    label = 5;
    break;
   case 5:
    $list8 = $n_09 + 184 | 0;
    $2 = HEAP32[$list8 >> 2] | 0;
    $tobool9 = ($2 | 0) == 0;
    if ($tobool9) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = $2;
    _free($3);
    label = 7;
    break;
   case 7:
    $next = $n_09 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $n_09 = $n_0;
      label = 3;
      break;
    }
   case 8:
    $4 = $rowg;
    _agclose($4);
    $5 = $colg;
    _agclose($5);
    return;
  }
}
function _make_html_label($obj, $lp) {
  $obj = $obj | 0;
  $lp = $lp | 0;
  var $rv = 0, $box = 0, $env = 0, $xb = 0, $buf = 0, $obj1 = 0, $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $root = 0, $3 = 0, $4 = 0, $g2 = 0, $graph = 0, $5 = 0, $6 = 0, $g4 = 0, $head = 0, $7 = 0, $8 = 0, $graph6 = 0, $9 = 0, $g7 = 0, $g8 = 0, $10 = 0, $root9 = 0, $11 = 0, $fontsize = 0, $12 = 0.0, $size = 0, $fontname = 0, $13 = 0, $name = 0, $fontcolor = 0, $14 = 0, $color = 0, $text = 0, $15 = 0, $16 = 0, $charset = 0, $17 = 0, $conv = 0, $call = 0, $tobool = 0, $arraydecay = 0, $html = 0, $call13 = 0, $call14 = 0, $charset16 = 0, $18 = 0, $cond = 0, $call19 = 0, $call21 = 0, $s_0 = 0, $19 = 0, $kind = 0, $20 = 0, $cmp = 0, $tbl = 0, $21 = 0, $pencolor = 0, $22 = 0, $tobool29 = 0, $call30 = 0, $tobool31 = 0, $call33 = 0, $call34 = 0, $23 = 0, $pencolor38 = 0, $24 = 0, $call42 = 0, $25 = 0, $or = 0, $26 = 0, $x = 0, $27 = 0.0, $add = 0.0, $div = 0.0, $y = 0, $28 = 0.0, $add52 = 0.0, $div53 = 0.0, $sub = 0.0, $sub54 = 0.0, $29 = 0, $x58 = 0, $30 = 0.0, $x59 = 0, $31 = 0.0, $sub60 = 0.0, $x61 = 0, $y63 = 0, $32 = 0.0, $y65 = 0, $33 = 0.0, $sub66 = 0.0, $y68 = 0, $txt = 0, $34 = 0, $35 = 0, $x76 = 0, $36 = 0.0, $add77 = 0.0, $div78 = 0.0, $y83 = 0, $37 = 0.0, $add84 = 0.0, $div85 = 0.0, $sub86 = 0.0, $sub87 = 0.0, $38 = 0, $39 = 0, $box91 = 0, $40 = 0, $x93 = 0, $41 = 0.0, $x95 = 0, $42 = 0.0, $sub96 = 0.0, $x98 = 0, $y100 = 0, $43 = 0.0, $y102 = 0, $44 = 0.0, $sub103 = 0.0, $y105 = 0, $45 = 0, $call_c = 0, $46 = 0, $cmp111 = 0, $47 = 0, $call115 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 248 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rv = __stackBase__ | 0;
    $box = __stackBase__ + 8 | 0;
    $env = __stackBase__ + 40 | 0;
    $xb = __stackBase__ + 104 | 0;
    $buf = __stackBase__ + 120 | 0;
    $obj1 = $env + 40 | 0;
    HEAP32[$obj1 >> 2] = $obj;
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $root = $obj + 32 | 0;
    $3 = $root;
    $4 = HEAP32[$3 >> 2] | 0;
    $g2 = $env + 44 | 0;
    HEAP32[$g2 >> 2] = $4;
    label = 6;
    break;
   case 4:
    $graph = $obj + 20 | 0;
    $5 = $graph;
    $6 = HEAP32[$5 >> 2] | 0;
    $g4 = $env + 44 | 0;
    HEAP32[$g4 >> 2] = $6;
    label = 6;
    break;
   case 5:
    $head = $obj + 12 | 0;
    $7 = $head;
    $8 = HEAP32[$7 >> 2] | 0;
    $graph6 = $8 + 20 | 0;
    $9 = HEAP32[$graph6 >> 2] | 0;
    $g7 = $env + 44 | 0;
    HEAP32[$g7 >> 2] = $9;
    label = 6;
    break;
   case 6:
    $g8 = $env + 44 | 0;
    $10 = HEAP32[$g8 >> 2] | 0;
    $root9 = $10 + 32 | 0;
    $11 = HEAP32[$root9 >> 2] | 0;
    $fontsize = $lp + 16 | 0;
    $12 = +HEAPF64[$fontsize >> 3];
    $size = $env + 32 | 0;
    HEAPF64[$size >> 3] = $12;
    $fontname = $lp + 4 | 0;
    $13 = HEAP32[$fontname >> 2] | 0;
    $name = $env + 16 | 0;
    HEAP32[$name >> 2] = $13;
    $fontcolor = $lp + 8 | 0;
    $14 = HEAP32[$fontcolor >> 2] | 0;
    $color = $env + 20 | 0;
    HEAP32[$color >> 2] = $14;
    $text = $lp | 0;
    $15 = HEAP32[$text >> 2] | 0;
    $16 = HEAP32[$g8 >> 2] | 0;
    $charset = $16 + 155 | 0;
    $17 = HEAP8[$charset] | 0;
    $conv = $17 & 255;
    $call = _parseHTML($15, $rv, $conv) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $arraydecay = $buf | 0;
    _agxbinit($xb, 128, $arraydecay);
    $html = $lp + 82 | 0;
    HEAP8[$html] = 0;
    $call13 = _nameOf($obj, $xb) | 0;
    $call14 = _strdup($call13 | 0) | 0;
    HEAP32[$text >> 2] = $call14;
    $charset16 = $lp + 12 | 0;
    $18 = HEAP32[$charset16 >> 2] | 0;
    $cond = ($18 | 0) == 1;
    if ($cond) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $call19 = _latin1ToUTF8($call14) | 0;
    $s_0 = $call19;
    label = 10;
    break;
   case 9:
    $call21 = _htmlEntityUTF8($call14) | 0;
    $s_0 = $call21;
    label = 10;
    break;
   case 10:
    $19 = HEAP32[$text >> 2] | 0;
    _free($19);
    HEAP32[$text >> 2] = $s_0;
    _make_simple_label($11, $lp);
    _agxbfree($xb);
    label = 19;
    break;
   case 11:
    $kind = $call + 4 | 0;
    $20 = HEAP8[$kind] | 0;
    $cmp = $20 << 24 >> 24 == 1;
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 16;
      break;
    }
   case 12:
    $tbl = $call | 0;
    $21 = HEAP32[$tbl >> 2] | 0;
    $pencolor = $21 + 24 | 0;
    $22 = HEAP32[$pencolor >> 2] | 0;
    $tobool29 = ($22 | 0) == 0;
    if ($tobool29) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $call30 = _getPenColor($obj) | 0;
    $tobool31 = ($call30 | 0) == 0;
    if ($tobool31) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call33 = _getPenColor($obj) | 0;
    $call34 = _strdup($call33 | 0) | 0;
    $23 = HEAP32[$tbl >> 2] | 0;
    $pencolor38 = $23 + 24 | 0;
    HEAP32[$pencolor38 >> 2] = $call34;
    label = 15;
    break;
   case 15:
    $24 = HEAP32[$tbl >> 2] | 0;
    $call42 = _size_html_tbl($11, $24, 0, $env) | 0;
    $25 = HEAP32[$rv >> 2] | 0;
    $or = $25 | $call42;
    HEAP32[$rv >> 2] = $or;
    $26 = HEAP32[$tbl >> 2] | 0;
    $x = $26 + 56 | 0;
    $27 = +HEAPF64[$x >> 3];
    $add = $27 + 1.0;
    $div = $add * .5;
    $y = $26 + 64 | 0;
    $28 = +HEAPF64[$y >> 3];
    $add52 = $28 + 1.0;
    $div53 = $add52 * .5;
    $sub = -0.0 - $div;
    $sub54 = -0.0 - $div53;
    _boxfof($box, $sub, $sub54, $div, $div53);
    $29 = HEAP32[$tbl >> 2] | 0;
    _pos_html_tbl($29, $box, 15);
    $x58 = $box + 16 | 0;
    $30 = +HEAPF64[$x58 >> 3];
    $x59 = $box | 0;
    $31 = +HEAPF64[$x59 >> 3];
    $sub60 = $30 - $31;
    $x61 = $lp + 24 | 0;
    HEAPF64[$x61 >> 3] = $sub60;
    $y63 = $box + 24 | 0;
    $32 = +HEAPF64[$y63 >> 3];
    $y65 = $box + 8 | 0;
    $33 = +HEAPF64[$y65 >> 3];
    $sub66 = $32 - $33;
    $y68 = $lp + 32 | 0;
    HEAPF64[$y68 >> 3] = $sub66;
    label = 17;
    break;
   case 16:
    $txt = $call;
    $34 = HEAP32[$txt >> 2] | 0;
    _size_html_txt($11, $34, $env);
    $35 = HEAP32[$txt >> 2] | 0;
    $x76 = $35 + 24 | 0;
    $36 = +HEAPF64[$x76 >> 3];
    $add77 = $36 + 1.0;
    $div78 = $add77 * .5;
    $y83 = $35 + 32 | 0;
    $37 = +HEAPF64[$y83 >> 3];
    $add84 = $37 + 1.0;
    $div85 = $add84 * .5;
    $sub86 = -0.0 - $div78;
    $sub87 = -0.0 - $div85;
    _boxfof($box, $sub86, $sub87, $div78, $div85);
    $38 = $box;
    $39 = HEAP32[$txt >> 2] | 0;
    $box91 = $39 + 8 | 0;
    $40 = $box91;
    HEAP32[$40 >> 2] = HEAP32[$38 >> 2] | 0;
    HEAP32[$40 + 4 >> 2] = HEAP32[$38 + 4 >> 2] | 0;
    HEAP32[$40 + 8 >> 2] = HEAP32[$38 + 8 >> 2] | 0;
    HEAP32[$40 + 12 >> 2] = HEAP32[$38 + 12 >> 2] | 0;
    HEAP32[$40 + 16 >> 2] = HEAP32[$38 + 16 >> 2] | 0;
    HEAP32[$40 + 20 >> 2] = HEAP32[$38 + 20 >> 2] | 0;
    HEAP32[$40 + 24 >> 2] = HEAP32[$38 + 24 >> 2] | 0;
    HEAP32[$40 + 28 >> 2] = HEAP32[$38 + 28 >> 2] | 0;
    $x93 = $box + 16 | 0;
    $41 = +HEAPF64[$x93 >> 3];
    $x95 = $box | 0;
    $42 = +HEAPF64[$x95 >> 3];
    $sub96 = $41 - $42;
    $x98 = $lp + 24 | 0;
    HEAPF64[$x98 >> 3] = $sub96;
    $y100 = $box + 24 | 0;
    $43 = +HEAPF64[$y100 >> 3];
    $y102 = $box + 8 | 0;
    $44 = +HEAPF64[$y102 >> 3];
    $sub103 = $43 - $44;
    $y105 = $lp + 32 | 0;
    HEAPF64[$y105 >> 3] = $sub103;
    label = 17;
    break;
   case 17:
    $45 = $lp + 72 | 0;
    $call_c = $call;
    HEAP32[$45 >> 2] = $call_c;
    $46 = HEAP8[$kind] | 0;
    $cmp111 = $46 << 24 >> 24 == 1;
    if ($cmp111) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $47 = HEAP32[$text >> 2] | 0;
    _free($47);
    $call115 = _strdup(102544) | 0;
    HEAP32[$text >> 2] = $call115;
    label = 19;
    break;
   case 19:
    $retval_0 = HEAP32[$rv >> 2] | 0;
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _boxfof($agg_result, $llx, $lly, $urx, $ury) {
  $agg_result = $agg_result | 0;
  $llx = +$llx;
  $lly = +$lly;
  $urx = +$urx;
  $ury = +$ury;
  HEAPF64[$agg_result >> 3] = $llx;
  HEAPF64[$agg_result + 8 >> 3] = $lly;
  HEAPF64[$agg_result + 16 >> 3] = $urx;
  HEAPF64[$agg_result + 24 >> 3] = $ury;
  return;
}
function _nameOf($obj, $xb) {
  $obj = $obj | 0;
  $xb = $xb | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $name = 0, $3 = 0, $4 = 0, $call = 0, $name2 = 0, $5 = 0, $6 = 0, $call3 = 0, $tail = 0, $7 = 0, $8 = 0, $name5 = 0, $9 = 0, $call6 = 0, $head = 0, $10 = 0, $11 = 0, $name7 = 0, $12 = 0, $call8 = 0, $13 = 0, $graph = 0, $14 = 0, $15 = 0, $16 = 0, $and = 0, $tobool = 0, $call12 = 0, $call13 = 0, $ptr = 0, $17 = 0, $eptr = 0, $18 = 0, $cmp = 0, $call14 = 0, $19 = 0, $buf = 0, $20 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $name = $obj + 12 | 0;
    $3 = $name;
    $4 = HEAP32[$3 >> 2] | 0;
    $call = _agxbput($xb, $4) | 0;
    label = 8;
    break;
   case 4:
    $name2 = $obj + 12 | 0;
    $5 = $name2;
    $6 = HEAP32[$5 >> 2] | 0;
    $call3 = _agxbput($xb, $6) | 0;
    label = 8;
    break;
   case 5:
    $tail = $obj + 16 | 0;
    $7 = $tail;
    $8 = HEAP32[$7 >> 2] | 0;
    $name5 = $8 + 12 | 0;
    $9 = HEAP32[$name5 >> 2] | 0;
    $call6 = _agxbput($xb, $9) | 0;
    $head = $obj + 12 | 0;
    $10 = $head;
    $11 = HEAP32[$10 >> 2] | 0;
    $name7 = $11 + 12 | 0;
    $12 = HEAP32[$name7 >> 2] | 0;
    $call8 = _agxbput($xb, $12) | 0;
    $13 = HEAP32[$10 >> 2] | 0;
    $graph = $13 + 20 | 0;
    $14 = HEAP32[$graph >> 2] | 0;
    $15 = $14;
    $16 = HEAP32[$15 >> 2] | 0;
    $and = $16 & 16;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call12 = _agxbput($xb, 138144) | 0;
    label = 8;
    break;
   case 7:
    $call13 = _agxbput($xb, 135536) | 0;
    label = 8;
    break;
   case 8:
    $ptr = $xb + 4 | 0;
    $17 = HEAP32[$ptr >> 2] | 0;
    $eptr = $xb + 8 | 0;
    $18 = HEAP32[$eptr >> 2] | 0;
    $cmp = $17 >>> 0 < $18 >>> 0;
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call14 = _agxbmore($xb, 1) | 0;
    label = 10;
    break;
   case 10:
    $19 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$19] = 0;
    $buf = $xb | 0;
    $20 = HEAP32[$buf >> 2] | 0;
    HEAP32[$ptr >> 2] = $20;
    return $20 | 0;
  }
  return 0;
}
function _getPenColor($obj) {
  $obj = $obj | 0;
  var $call = 0, $cmp = 0, $0 = 0, $tobool = 0, $call1 = 0, $cmp2 = 0, $1 = 0, $tobool7 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agget($obj, 144744) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$call] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = $call;
      label = 7;
      break;
    }
   case 4:
    $call1 = _agget($obj, 141696) | 0;
    $cmp2 = ($call1 | 0) == 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $1 = HEAP8[$call1] | 0;
    $tobool7 = $1 << 24 >> 24 == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      $retval_0 = $call1;
      label = 7;
      break;
    }
   case 6:
    $retval_0 = 0;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _size_html_tbl($g, $tbl, $parent, $env) {
  $g = $g | 0;
  $tbl = $tbl | 0;
  $parent = $parent | 0;
  $env = $env | 0;
  var $font = 0, $0 = 0, $tobool = 0, $parent2 = 0, $call = 0, $flags = 0, $1 = 0, $and = 0, $tobool3 = 0, $space = 0, $2 = 0, $and10 = 0, $tobool11 = 0, $border = 0, $cc = 0, $3 = 0, $add = 0, $space16 = 0, $4 = 0, $conv17 = 0, $mul = 0, $border19 = 0, $5 = 0, $conv20 = 0, $mul21 = 0, $add22 = 0, $rc = 0, $6 = 0, $add23 = 0, $mul27 = 0, $add32 = 0, $7 = 0, $cmp47 = 0, $widths = 0, $8 = 0, $9 = 0, $wd_0_lcssa = 0, $10 = 0, $cmp3844 = 0, $heights = 0, $11 = 0, $12 = 0, $wd_049 = 0, $i_048 = 0, $arrayidx = 0, $13 = 0, $add35 = 0, $inc = 0, $cmp = 0, $ht_046 = 0, $i_145 = 0, $arrayidx41 = 0, $14 = 0, $add42 = 0, $inc44 = 0, $cmp38 = 0, $ht_0_lcssa = 0, $15 = 0, $and49 = 0, $tobool50 = 0, $width = 0, $16 = 0, $conv53 = 0, $tobool54 = 0, $height = 0, $17 = 0, $tobool57 = 0, $conv56 = 0, $cmp62 = 0, $cmp67 = 0, $or_cond = 0, $call70 = 0, $call72 = 0, $wd_1 = 0, $ht_1 = 0, $rv_1 = 0, $width76 = 0, $18 = 0, $conv77 = 0, $cmp78 = 0, $wd_1_conv77 = 0, $conv83 = 0.0, $x = 0, $height86 = 0, $19 = 0, $conv87 = 0, $cmp88 = 0, $cond96 = 0, $conv97 = 0.0, $y = 0, $20 = 0, $tobool102 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $font = $tbl + 100 | 0;
    $0 = HEAP32[$font >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _pushFontInfo($env, $0, 4184);
    label = 4;
    break;
   case 4:
    $parent2 = $tbl + 72 | 0;
    HEAP32[$parent2 >> 2] = $parent;
    $call = _processTbl($g, $tbl, $env) | 0;
    $flags = $tbl + 32 | 0;
    $1 = HEAP16[$flags >> 1] | 0;
    $and = $1 & 128;
    $tobool3 = $and << 16 >> 16 == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $space = $tbl + 28 | 0;
    HEAP8[$space] = 2;
    label = 6;
    break;
   case 6:
    $2 = HEAP16[$flags >> 1] | 0;
    $and10 = $2 & 32;
    $tobool11 = $and10 << 16 >> 16 == 0;
    if ($tobool11) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $border = $tbl + 29 | 0;
    HEAP8[$border] = 1;
    label = 8;
    break;
   case 8:
    _sizeArray($tbl);
    $cc = $tbl + 96 | 0;
    $3 = HEAP32[$cc >> 2] | 0;
    $add = $3 + 1 | 0;
    $space16 = $tbl + 28 | 0;
    $4 = HEAP8[$space16] | 0;
    $conv17 = $4 << 24 >> 24;
    $mul = Math_imul($conv17, $add);
    $border19 = $tbl + 29 | 0;
    $5 = HEAP8[$border19] | 0;
    $conv20 = $5 & 255;
    $mul21 = $conv20 << 1;
    $add22 = $mul21 + $mul | 0;
    $rc = $tbl + 92 | 0;
    $6 = HEAP32[$rc >> 2] | 0;
    $add23 = $6 + 1 | 0;
    $mul27 = Math_imul($add23, $conv17);
    $add32 = $mul27 + $mul21 | 0;
    $7 = HEAP32[$cc >> 2] | 0;
    $cmp47 = ($7 | 0) > 0;
    if ($cmp47) {
      label = 9;
      break;
    } else {
      $wd_0_lcssa = $add22;
      label = 10;
      break;
    }
   case 9:
    $widths = $tbl + 88 | 0;
    $8 = HEAP32[$widths >> 2] | 0;
    $9 = HEAP32[$cc >> 2] | 0;
    $i_048 = 0;
    $wd_049 = $add22;
    label = 12;
    break;
   case 10:
    $10 = HEAP32[$rc >> 2] | 0;
    $cmp3844 = ($10 | 0) > 0;
    if ($cmp3844) {
      label = 11;
      break;
    } else {
      $ht_0_lcssa = $add32;
      label = 14;
      break;
    }
   case 11:
    $heights = $tbl + 84 | 0;
    $11 = HEAP32[$heights >> 2] | 0;
    $12 = HEAP32[$rc >> 2] | 0;
    $i_145 = 0;
    $ht_046 = $add32;
    label = 13;
    break;
   case 12:
    $arrayidx = $8 + ($i_048 << 2) | 0;
    $13 = HEAP32[$arrayidx >> 2] | 0;
    $add35 = $13 + $wd_049 | 0;
    $inc = $i_048 + 1 | 0;
    $cmp = ($inc | 0) < ($9 | 0);
    if ($cmp) {
      $i_048 = $inc;
      $wd_049 = $add35;
      label = 12;
      break;
    } else {
      $wd_0_lcssa = $add35;
      label = 10;
      break;
    }
   case 13:
    $arrayidx41 = $11 + ($i_145 << 2) | 0;
    $14 = HEAP32[$arrayidx41 >> 2] | 0;
    $add42 = $14 + $ht_046 | 0;
    $inc44 = $i_145 + 1 | 0;
    $cmp38 = ($inc44 | 0) < ($12 | 0);
    if ($cmp38) {
      $i_145 = $inc44;
      $ht_046 = $add42;
      label = 13;
      break;
    } else {
      $ht_0_lcssa = $add42;
      label = 14;
      break;
    }
   case 14:
    $15 = HEAP16[$flags >> 1] | 0;
    $and49 = $15 & 1;
    $tobool50 = $and49 << 16 >> 16 == 0;
    if ($tobool50) {
      $rv_1 = $call;
      $ht_1 = $ht_0_lcssa;
      $wd_1 = $wd_0_lcssa;
      label = 20;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $width = $tbl + 34 | 0;
    $16 = HEAP16[$width >> 1] | 0;
    $conv53 = $16 & 65535;
    $tobool54 = $16 << 16 >> 16 == 0;
    if ($tobool54) {
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $height = $tbl + 36 | 0;
    $17 = HEAP16[$height >> 1] | 0;
    $tobool57 = $17 << 16 >> 16 == 0;
    if ($tobool57) {
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $conv56 = $17 & 65535;
    $cmp62 = ($conv53 | 0) < ($wd_0_lcssa | 0);
    $cmp67 = ($conv56 | 0) < ($ht_0_lcssa | 0);
    $or_cond = $cmp62 | $cmp67;
    if ($or_cond) {
      label = 18;
      break;
    } else {
      $rv_1 = $call;
      $ht_1 = 0;
      $wd_1 = 0;
      label = 20;
      break;
    }
   case 18:
    $call70 = _agerr(0, 161096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $rv_1 = 1;
    $ht_1 = 0;
    $wd_1 = 0;
    label = 20;
    break;
   case 19:
    $call72 = _agerr(0, 157376, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $rv_1 = 1;
    $ht_1 = $ht_0_lcssa;
    $wd_1 = $wd_0_lcssa;
    label = 20;
    break;
   case 20:
    $width76 = $tbl + 34 | 0;
    $18 = HEAP16[$width76 >> 1] | 0;
    $conv77 = $18 & 65535;
    $cmp78 = ($wd_1 | 0) > ($conv77 | 0);
    $wd_1_conv77 = $cmp78 ? $wd_1 : $conv77;
    $conv83 = +($wd_1_conv77 | 0);
    $x = $tbl + 56 | 0;
    HEAPF64[$x >> 3] = $conv83;
    $height86 = $tbl + 36 | 0;
    $19 = HEAP16[$height86 >> 1] | 0;
    $conv87 = $19 & 65535;
    $cmp88 = ($ht_1 | 0) > ($conv87 | 0);
    $cond96 = $cmp88 ? $ht_1 : $conv87;
    $conv97 = +($cond96 | 0);
    $y = $tbl + 64 | 0;
    HEAPF64[$y >> 3] = $conv97;
    $20 = HEAP32[$font >> 2] | 0;
    $tobool102 = ($20 | 0) == 0;
    if ($tobool102) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    _popFontInfo($env, 4184);
    label = 22;
    break;
   case 22:
    STACKTOP = __stackBase__;
    return $rv_1 | 0;
  }
  return 0;
}
function _size_html_txt($g, $ftxt, $env) {
  $g = $g | 0;
  $ftxt = $ftxt | 0;
  $env = $env | 0;
  var $lp = 0, $lhf = 0, $tmp = 0, $font = 0, $nparas = 0, $0 = 0, $cmp15 = 0, $paras = 0, $obj = 0, $str10 = 0, $size88 = 0, $name90 = 0, $sz_sroa_0_0__idx = 0, $yoffset_layout = 0, $yoffset_centerline = 0, $postscript_alias = 0, $layout = 0, $free_layout = 0, $1 = 0, $2 = 0, $name84 = 0, $size67 = 0, $xsize_020 = 0.0, $i_018 = 0, $ysize_017 = 0.0, $curbline_016 = 0.0, $3 = 0, $nitems2 = 0, $4 = 0, $cmp44 = 0, $5 = 0, $maxoffset_09 = 0.0, $width_08 = 0.0, $j_06 = 0, $mxfsize_15 = 0.0, $items = 0, $6 = 0, $str = 0, $7 = 0, $8 = 0, $call = 0, $9 = 0, $items13 = 0, $10 = 0, $font15 = 0, $11 = 0, $tobool = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $bf_val_sext = 0, $tobool21 = 0, $16 = 0, $bf_value = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $cmp36 = 0, $bf_val_sext351 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $items53 = 0, $36 = 0, $font55 = 0, $37 = 0, $size = 0, $38 = 0.0, $cmp56 = 0, $39 = 0.0, $fsize_0 = 0.0, $40 = 0, $items71 = 0, $41 = 0, $font73 = 0, $42 = 0, $name = 0, $43 = 0, $tobool74 = 0, $44 = 0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, $fsize_1 = 0.0, $fname_0 = 0, $sz_sroa_0_0_copyload = 0.0, $52 = 0, $items96 = 0, $53 = 0, $str98 = 0, $54 = 0, $55 = 0, $56 = 0, $items102 = 0, $57 = 0, $str104 = 0, $58 = 0, $items107 = 0, $59 = 0, $size109 = 0, $60 = 0.0, $61 = 0, $items112 = 0, $62 = 0, $yoffset_layout114 = 0, $63 = 0.0, $64 = 0, $items117 = 0, $65 = 0, $yoffset_centerline119 = 0, $66 = 0, $67 = 0, $items122 = 0, $68 = 0, $postscript_alias124 = 0, $69 = 0, $70 = 0, $items127 = 0, $71 = 0, $layout129 = 0, $72 = 0, $73 = 0, $items132 = 0, $74 = 0, $free_layout134 = 0, $add = 0.0, $conv137 = 0, $cmp138 = 0, $cond = 0.0, $75 = 0.0, $cmp141 = 0, $_maxoffset_0 = 0.0, $inc = 0, $phitmp = 0.0, $76 = 0, $nitems = 0, $77 = 0, $conv3 = 0, $cmp4 = 0, $_lcssa = 0, $maxoffset_0_lcssa = 0.0, $width_0_lcssa = 0.0, $mxfsize_1_lcssa = 0.0, $size151 = 0, $add152 = 0.0, $sub = 0.0, $sub153 = 0.0, $78 = 0, $lfsize = 0, $79 = 0, $lfsize158 = 0, $80 = 0.0, $add159 = 0.0, $cmp161 = 0, $width_0_xsize_0 = 0.0, $inc170 = 0, $81 = 0, $conv = 0, $cmp = 0, $phitmp25 = 0, $phitmp26 = 0.0, $xsize_0_lcssa = 0.0, $ysize_0_lcssa = 0.0, $mxfsize_0_lcssa = 0.0, $x172 = 0, $82 = 0, $cmp175 = 0, $conv178 = 0, $conv179 = 0.0, $y = 0, $y187 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 120 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $lp = __stackBase__ | 0;
    $lhf = __stackBase__ + 80 | 0;
    $tmp = __stackBase__ + 104 | 0;
    $font = $lp + 16 | 0;
    HEAP32[$font >> 2] = $lhf;
    $nparas = $ftxt + 4 | 0;
    $0 = HEAP16[$nparas >> 1] | 0;
    $cmp15 = $0 << 16 >> 16 > 0;
    if ($cmp15) {
      label = 3;
      break;
    } else {
      $mxfsize_0_lcssa = 0.0;
      $ysize_0_lcssa = 0.0;
      $xsize_0_lcssa = 0.0;
      label = 19;
      break;
    }
   case 3:
    $paras = $ftxt | 0;
    $obj = $env + 40 | 0;
    $str10 = $lp | 0;
    $size88 = $env + 32 | 0;
    $name90 = $env + 16 | 0;
    $sz_sroa_0_0__idx = $tmp | 0;
    $yoffset_layout = $lp + 40 | 0;
    $yoffset_centerline = $lp + 48 | 0;
    $postscript_alias = $lp + 4 | 0;
    $layout = $lp + 8 | 0;
    $free_layout = $lp + 12 | 0;
    $1 = $env + 24 | 0;
    $2 = $1;
    $name84 = $env + 16 | 0;
    $size67 = $env + 32 | 0;
    $curbline_016 = 0.0;
    $ysize_017 = 0.0;
    $i_018 = 0;
    $xsize_020 = 0.0;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$paras >> 2] | 0;
    $nitems2 = $3 + ($i_018 * 24 & -1) + 4 | 0;
    $4 = HEAP16[$nitems2 >> 1] | 0;
    $cmp44 = $4 << 16 >> 16 > 0;
    if ($cmp44) {
      $mxfsize_15 = 0.0;
      $j_06 = 0;
      $width_08 = 0.0;
      $maxoffset_09 = 0.0;
      $5 = $3;
      label = 5;
      break;
    } else {
      $mxfsize_1_lcssa = 0.0;
      $width_0_lcssa = 0.0;
      $maxoffset_0_lcssa = 0.0;
      $_lcssa = $3;
      label = 17;
      break;
    }
   case 5:
    $items = $5 + ($i_018 * 24 & -1) | 0;
    $6 = HEAP32[$items >> 2] | 0;
    $str = $6 + ($j_06 * 80 & -1) | 0;
    $7 = HEAP32[$str >> 2] | 0;
    $8 = HEAP32[$obj >> 2] | 0;
    $call = _strdup_and_subst_obj($7, $8) | 0;
    HEAP32[$str10 >> 2] = $call;
    $9 = HEAP32[$paras >> 2] | 0;
    $items13 = $9 + ($i_018 * 24 & -1) | 0;
    $10 = HEAP32[$items13 >> 2] | 0;
    $font15 = $10 + ($j_06 * 80 & -1) + 16 | 0;
    $11 = HEAP32[$font15 >> 2] | 0;
    $tobool = ($11 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $12 = $11 + 8 | 0;
    $13 = $12;
    $14 = HEAP32[$13 >> 2] | 0;
    $15 = $14 << 25;
    $bf_val_sext = $15 >> 25;
    $tobool21 = ($bf_val_sext | 0) == 0;
    if ($tobool21) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $16 = HEAP32[$font >> 2] | 0;
    $bf_value = $bf_val_sext & 127;
    $17 = $16 + 8 | 0;
    $18 = $17;
    $19 = HEAP32[$18 >> 2] | 0;
    $20 = $19 & -128;
    $21 = $20 | $bf_value;
    HEAP32[$18 >> 2] = $21;
    label = 11;
    break;
   case 8:
    $22 = HEAP32[$2 >> 2] | 0;
    $23 = $22 << 25;
    $cmp36 = ($23 | 0) > 0;
    if ($cmp36) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $bf_val_sext351 = $22 & 127;
    $24 = HEAP32[$font >> 2] | 0;
    $25 = $24 + 8 | 0;
    $26 = $25;
    $27 = HEAP32[$26 >> 2] | 0;
    $28 = $27 & -128;
    $29 = $28 | $bf_val_sext351;
    HEAP32[$26 >> 2] = $29;
    label = 11;
    break;
   case 10:
    $30 = HEAP32[$font >> 2] | 0;
    $31 = $30 + 8 | 0;
    $32 = $31;
    $33 = HEAP32[$32 >> 2] | 0;
    $34 = $33 & -128;
    HEAP32[$32 >> 2] = $34;
    label = 11;
    break;
   case 11:
    $35 = HEAP32[$paras >> 2] | 0;
    $items53 = $35 + ($i_018 * 24 & -1) | 0;
    $36 = HEAP32[$items53 >> 2] | 0;
    $font55 = $36 + ($j_06 * 80 & -1) + 16 | 0;
    $37 = HEAP32[$font55 >> 2] | 0;
    $size = $37 + 16 | 0;
    $38 = +HEAPF64[$size >> 3];
    $cmp56 = $38 > 0.0;
    if ($cmp56) {
      $fsize_0 = $38;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $39 = +HEAPF64[$size67 >> 3];
    $fsize_0 = $39;
    label = 13;
    break;
   case 13:
    $40 = HEAP32[$paras >> 2] | 0;
    $items71 = $40 + ($i_018 * 24 & -1) | 0;
    $41 = HEAP32[$items71 >> 2] | 0;
    $font73 = $41 + ($j_06 * 80 & -1) + 16 | 0;
    $42 = HEAP32[$font73 >> 2] | 0;
    $name = $42 | 0;
    $43 = HEAP32[$name >> 2] | 0;
    $tobool74 = ($43 | 0) == 0;
    if ($tobool74) {
      label = 14;
      break;
    } else {
      $fname_0 = $43;
      $fsize_1 = $fsize_0;
      label = 16;
      break;
    }
   case 14:
    $44 = HEAP32[$name84 >> 2] | 0;
    $fname_0 = $44;
    $fsize_1 = $fsize_0;
    label = 16;
    break;
   case 15:
    $45 = +HEAPF64[$size88 >> 3];
    $46 = HEAP32[$name90 >> 2] | 0;
    $47 = HEAP32[$font >> 2] | 0;
    $48 = $47 + 8 | 0;
    $49 = $48;
    $50 = HEAP32[$49 >> 2] | 0;
    $51 = $50 & -128;
    HEAP32[$49 >> 2] = $51;
    $fname_0 = $46;
    $fsize_1 = $45;
    label = 16;
    break;
   case 16:
    _textsize($tmp, $g, $lp, $fname_0, $fsize_1);
    $sz_sroa_0_0_copyload = +HEAPF64[$sz_sroa_0_0__idx >> 3];
    $52 = HEAP32[$paras >> 2] | 0;
    $items96 = $52 + ($i_018 * 24 & -1) | 0;
    $53 = HEAP32[$items96 >> 2] | 0;
    $str98 = $53 + ($j_06 * 80 & -1) | 0;
    $54 = HEAP32[$str98 >> 2] | 0;
    _free($54);
    $55 = HEAP32[$str10 >> 2] | 0;
    $56 = HEAP32[$paras >> 2] | 0;
    $items102 = $56 + ($i_018 * 24 & -1) | 0;
    $57 = HEAP32[$items102 >> 2] | 0;
    $str104 = $57 + ($j_06 * 80 & -1) | 0;
    HEAP32[$str104 >> 2] = $55;
    $58 = HEAP32[$paras >> 2] | 0;
    $items107 = $58 + ($i_018 * 24 & -1) | 0;
    $59 = HEAP32[$items107 >> 2] | 0;
    $size109 = $59 + ($j_06 * 80 & -1) + 32 | 0;
    HEAPF64[$size109 >> 3] = $sz_sroa_0_0_copyload;
    $60 = +HEAPF64[$yoffset_layout >> 3];
    $61 = HEAP32[$paras >> 2] | 0;
    $items112 = $61 + ($i_018 * 24 & -1) | 0;
    $62 = HEAP32[$items112 >> 2] | 0;
    $yoffset_layout114 = $62 + ($j_06 * 80 & -1) + 40 | 0;
    HEAPF64[$yoffset_layout114 >> 3] = $60;
    $63 = +HEAPF64[$yoffset_centerline >> 3];
    $64 = HEAP32[$paras >> 2] | 0;
    $items117 = $64 + ($i_018 * 24 & -1) | 0;
    $65 = HEAP32[$items117 >> 2] | 0;
    $yoffset_centerline119 = $65 + ($j_06 * 80 & -1) + 48 | 0;
    HEAPF64[$yoffset_centerline119 >> 3] = $63;
    $66 = HEAP32[$postscript_alias >> 2] | 0;
    $67 = HEAP32[$paras >> 2] | 0;
    $items122 = $67 + ($i_018 * 24 & -1) | 0;
    $68 = HEAP32[$items122 >> 2] | 0;
    $postscript_alias124 = $68 + ($j_06 * 80 & -1) + 4 | 0;
    HEAP32[$postscript_alias124 >> 2] = $66;
    $69 = HEAP32[$layout >> 2] | 0;
    $70 = HEAP32[$paras >> 2] | 0;
    $items127 = $70 + ($i_018 * 24 & -1) | 0;
    $71 = HEAP32[$items127 >> 2] | 0;
    $layout129 = $71 + ($j_06 * 80 & -1) + 8 | 0;
    HEAP32[$layout129 >> 2] = $69;
    $72 = HEAP32[$free_layout >> 2] | 0;
    $73 = HEAP32[$paras >> 2] | 0;
    $items132 = $73 + ($i_018 * 24 & -1) | 0;
    $74 = HEAP32[$items132 >> 2] | 0;
    $free_layout134 = $74 + ($j_06 * 80 & -1) + 12 | 0;
    HEAP32[$free_layout134 >> 2] = $72;
    $add = $width_08 + $sz_sroa_0_0_copyload;
    $conv137 = ~~$add;
    $cmp138 = $fsize_1 > $mxfsize_15;
    $cond = $cmp138 ? $fsize_1 : $mxfsize_15;
    $75 = +HEAPF64[$yoffset_centerline >> 3];
    $cmp141 = $75 > $maxoffset_09;
    $_maxoffset_0 = $cmp141 ? $75 : $maxoffset_09;
    $inc = $j_06 + 1 | 0;
    $phitmp = +($conv137 | 0);
    $76 = HEAP32[$paras >> 2] | 0;
    $nitems = $76 + ($i_018 * 24 & -1) + 4 | 0;
    $77 = HEAP16[$nitems >> 1] | 0;
    $conv3 = $77 << 16 >> 16;
    $cmp4 = ($inc | 0) < ($conv3 | 0);
    if ($cmp4) {
      $mxfsize_15 = $cond;
      $j_06 = $inc;
      $width_08 = $phitmp;
      $maxoffset_09 = $_maxoffset_0;
      $5 = $76;
      label = 5;
      break;
    } else {
      $mxfsize_1_lcssa = $cond;
      $width_0_lcssa = $phitmp;
      $maxoffset_0_lcssa = $_maxoffset_0;
      $_lcssa = $76;
      label = 17;
      break;
    }
   case 17:
    $size151 = $_lcssa + ($i_018 * 24 & -1) + 8 | 0;
    HEAPF64[$size151 >> 3] = $width_0_lcssa;
    $add152 = $ysize_017 + $mxfsize_1_lcssa;
    $sub = $add152 - $curbline_016;
    $sub153 = $sub - $maxoffset_0_lcssa;
    $78 = HEAP32[$paras >> 2] | 0;
    $lfsize = $78 + ($i_018 * 24 & -1) + 16 | 0;
    HEAPF64[$lfsize >> 3] = $sub153;
    $79 = HEAP32[$paras >> 2] | 0;
    $lfsize158 = $79 + ($i_018 * 24 & -1) + 16 | 0;
    $80 = +HEAPF64[$lfsize158 >> 3];
    $add159 = $curbline_016 + $80;
    $cmp161 = $width_0_lcssa > $xsize_020;
    $width_0_xsize_0 = $cmp161 ? $width_0_lcssa : $xsize_020;
    $inc170 = $i_018 + 1 | 0;
    $81 = HEAP16[$nparas >> 1] | 0;
    $conv = $81 << 16 >> 16;
    $cmp = ($inc170 | 0) < ($conv | 0);
    if ($cmp) {
      $curbline_016 = $add159;
      $ysize_017 = $add152;
      $i_018 = $inc170;
      $xsize_020 = $width_0_xsize_0;
      label = 4;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $phitmp25 = ~~$add152;
    $phitmp26 = +($phitmp25 | 0);
    $mxfsize_0_lcssa = $mxfsize_1_lcssa;
    $ysize_0_lcssa = $phitmp26;
    $xsize_0_lcssa = $width_0_xsize_0;
    label = 19;
    break;
   case 19:
    $x172 = $ftxt + 24 | 0;
    HEAPF64[$x172 >> 3] = $xsize_0_lcssa;
    $82 = HEAP16[$nparas >> 1] | 0;
    $cmp175 = $82 << 16 >> 16 == 1;
    if ($cmp175) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $conv178 = ~~$mxfsize_0_lcssa;
    $conv179 = +($conv178 | 0);
    $y = $ftxt + 32 | 0;
    HEAPF64[$y >> 3] = $conv179;
    label = 22;
    break;
   case 21:
    $y187 = $ftxt + 32 | 0;
    HEAPF64[$y187 >> 3] = $ysize_0_lcssa;
    label = 22;
    break;
   case 22:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pos_html_tbl($tbl, $pos, $sides) {
  $tbl = $tbl | 0;
  $pos = $pos | 0;
  $sides = $sides | 0;
  var $cbox = 0, $cells1 = 0, $0 = 0, $parent = 0, $1 = 0, $tobool = 0, $pencolor = 0, $2 = 0, $tobool7 = 0, $pencolor10 = 0, $3 = 0, $tobool11 = 0, $call = 0, $box = 0, $x20 = 0, $4 = 0.0, $conv = 0, $x22 = 0, $5 = 0.0, $x23 = 0, $6 = 0.0, $sub = 0.0, $conv24 = 0.0, $sub25 = 0.0, $conv26 = 0, $cmp = 0, $y31 = 0, $7 = 0.0, $conv32 = 0, $y34 = 0, $8 = 0.0, $y36 = 0, $9 = 0.0, $sub37 = 0.0, $conv38 = 0.0, $sub39 = 0.0, $conv40 = 0, $cmp41 = 0, $flags = 0, $10 = 0, $conv47 = 0, $and = 0, $tobool48 = 0, $cmp50 = 0, $and56 = 0, $add = 0.0, $conv63 = 0.0, $add66 = 0.0, $11 = 0.0, $add70 = 0.0, $div = 0, $conv71 = 0.0, $add74 = 0.0, $12 = 0.0, $sub79 = 0.0, $delx_0 = 0, $cmp81 = 0, $13 = 0, $conv86 = 0, $and87 = 0, $14 = 0.0, $add92 = 0.0, $conv96 = 0.0, $15 = 0.0, $add99 = 0.0, $16 = 0.0, $add103 = 0.0, $div105 = 0, $conv106 = 0.0, $17 = 0.0, $add109 = 0.0, $18 = 0.0, $sub114 = 0.0, $delx_1 = 0, $dely_0 = 0, $19 = 0.0, $border = 0, $20 = 0, $conv121 = 0, $conv122 = 0.0, $add123 = 0.0, $space = 0, $21 = 0, $conv126 = 0.0, $add127 = 0.0, $conv128 = 0, $cc = 0, $22 = 0, $div129 = 0, $mul = 0, $sub131 = 0, $cmp132 = 0, $conv138 = 0.0, $add139 = 0.0, $sub146 = 0.0, $add139_sink = 0.0, $conv140 = 0, $23 = 0, $cmp150101 = 0, $widths = 0, $x_0103 = 0, $i_0102 = 0, $24 = 0, $arrayidx = 0, $25 = 0, $cmp153 = 0, $cond155 = 0, $26 = 0, $conv161 = 0, $add152 = 0, $add156 = 0, $add162 = 0, $add163 = 0, $inc = 0, $27 = 0, $cmp150 = 0, $28 = 0.0, $29 = 0, $conv168 = 0, $conv169 = 0.0, $sub170 = 0.0, $30 = 0, $conv174 = 0.0, $sub175 = 0.0, $conv176 = 0, $rc = 0, $31 = 0, $div177 = 0, $mul179 = 0, $sub180 = 0, $cmp181 = 0, $conv187 = 0.0, $add188 = 0.0, $sub195 = 0.0, $add188_sink = 0.0, $conv189 = 0, $32 = 0, $cmp20198 = 0, $heights = 0, $33 = 0, $tobool22096 = 0, $tobool221 = 0, $widths256 = 0, $x260 = 0, $x274 = 0, $heights277 = 0, $y281 = 0, $y295 = 0, $i_1100 = 0, $y_099 = 0, $34 = 0, $arrayidx204 = 0, $35 = 0, $cmp206 = 0, $cond208 = 0, $36 = 0, $conv214 = 0, $add205_neg = 0, $add209_neg = 0, $add215_neg = 0, $sub216 = 0, $inc218 = 0, $37 = 0, $cmp201 = 0, $38 = 0, $_pn = 0, $incdec_ptr97 = 0, $col = 0, $39 = 0, $cmp224 = 0, $_ = 0, $row = 0, $40 = 0, $cmp229 = 0, $or232 = 0, $mask_1 = 0, $conv235 = 0, $cspan = 0, $41 = 0, $conv236 = 0, $add237 = 0, $42 = 0, $cmp239 = 0, $or242 = 0, $or242_mask_1 = 0, $conv245 = 0, $rspan = 0, $43 = 0, $conv246 = 0, $add247 = 0, $44 = 0, $cmp249 = 0, $or252 = 0, $mask_3 = 0, $col255 = 0, $45 = 0, $idxprom = 0, $46 = 0, $arrayidx257 = 0, $47 = 0, $conv258 = 0.0, $48 = 0, $conv262 = 0, $cspan263 = 0, $49 = 0, $conv264 = 0, $add265 = 0, $50 = 0, $arrayidx267 = 0, $51 = 0, $52 = 0, $conv270 = 0, $sub271 = 0, $conv272 = 0.0, $row275 = 0, $53 = 0, $idxprom276 = 0, $54 = 0, $arrayidx278 = 0, $55 = 0, $conv279 = 0.0, $56 = 0, $conv283 = 0, $rspan284 = 0, $57 = 0, $conv285 = 0, $add286 = 0, $58 = 0, $arrayidx288 = 0, $59 = 0, $60 = 0, $conv291 = 0, $add292 = 0, $conv293 = 0.0, $and296 = 0, $61 = 0, $tobool220 = 0, $conv297 = 0, $sides299 = 0, $62 = 0, $63 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $pos;
  $pos = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($pos, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cbox = __stackBase__ | 0;
    $cells1 = $tbl + 76 | 0;
    $0 = HEAP32[$cells1 >> 2] | 0;
    $parent = $tbl + 72 | 0;
    $1 = HEAP32[$parent >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $pencolor = $1 + 24 | 0;
    $2 = HEAP32[$pencolor >> 2] | 0;
    $tobool7 = ($2 | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $pencolor10 = $tbl + 24 | 0;
    $3 = HEAP32[$pencolor10 >> 2] | 0;
    $tobool11 = ($3 | 0) == 0;
    if ($tobool11) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call = _strdup($2 | 0) | 0;
    HEAP32[$pencolor10 >> 2] = $call;
    label = 6;
    break;
   case 6:
    $box = $tbl + 40 | 0;
    $x20 = $tbl + 56 | 0;
    $4 = +HEAPF64[$x20 >> 3];
    $conv = ~~$4;
    $x22 = $pos + 16 | 0;
    $5 = +HEAPF64[$x22 >> 3];
    $x23 = $pos | 0;
    $6 = +HEAPF64[$x23 >> 3];
    $sub = $5 - $6;
    $conv24 = +($conv | 0);
    $sub25 = $sub - $conv24;
    $conv26 = ~~$sub25;
    $cmp = ($conv26 | 0) > -1;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    ___assert_func(98192, 1509, 163936, 94448);
   case 8:
    $y31 = $tbl + 64 | 0;
    $7 = +HEAPF64[$y31 >> 3];
    $conv32 = ~~$7;
    $y34 = $pos + 24 | 0;
    $8 = +HEAPF64[$y34 >> 3];
    $y36 = $pos + 8 | 0;
    $9 = +HEAPF64[$y36 >> 3];
    $sub37 = $8 - $9;
    $conv38 = +($conv32 | 0);
    $sub39 = $sub37 - $conv38;
    $conv40 = ~~$sub39;
    $cmp41 = ($conv40 | 0) > -1;
    if ($cmp41) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    ___assert_func(98192, 1512, 163936, 90880);
   case 10:
    $flags = $tbl + 32 | 0;
    $10 = HEAP16[$flags >> 1] | 0;
    $conv47 = $10 & 65535;
    $and = $conv47 & 1;
    $tobool48 = ($and | 0) == 0;
    if ($tobool48) {
      $dely_0 = $conv40;
      $delx_1 = $conv26;
      label = 21;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $cmp50 = ($conv26 | 0) > 0;
    if ($cmp50) {
      label = 12;
      break;
    } else {
      $delx_0 = $conv26;
      label = 16;
      break;
    }
   case 12:
    $and56 = $conv47 & 6;
    if (($and56 | 0) == 4) {
      label = 13;
      break;
    } else if (($and56 | 0) == 2) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $add = $6 + $conv38;
    HEAPF64[$x22 >> 3] = $add;
    $delx_0 = 0;
    label = 16;
    break;
   case 14:
    $conv63 = +($conv26 | 0);
    $add66 = $5 + $conv63;
    HEAPF64[$x22 >> 3] = $add66;
    $11 = +HEAPF64[$x23 >> 3];
    $add70 = $conv63 + $11;
    HEAPF64[$x23 >> 3] = $add70;
    $delx_0 = 0;
    label = 16;
    break;
   case 15:
    $div = ($conv26 | 0) / 2 & -1;
    $conv71 = +($div | 0);
    $add74 = $6 + $conv71;
    HEAPF64[$x23 >> 3] = $add74;
    $12 = +HEAPF64[$x22 >> 3];
    $sub79 = $12 - $conv71;
    HEAPF64[$x22 >> 3] = $sub79;
    $delx_0 = 0;
    label = 16;
    break;
   case 16:
    $cmp81 = ($conv40 | 0) > 0;
    if ($cmp81) {
      label = 17;
      break;
    } else {
      $dely_0 = $conv40;
      $delx_1 = $delx_0;
      label = 21;
      break;
    }
   case 17:
    $13 = HEAP16[$flags >> 1] | 0;
    $conv86 = $13 & 65535;
    $and87 = $conv86 & 24;
    if (($and87 | 0) == 16) {
      label = 18;
      break;
    } else if (($and87 | 0) == 8) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 18:
    $14 = +HEAPF64[$y36 >> 3];
    $add92 = $conv38 + $14;
    HEAPF64[$y34 >> 3] = $add92;
    $dely_0 = 0;
    $delx_1 = $delx_0;
    label = 21;
    break;
   case 19:
    $conv96 = +($conv40 | 0);
    $15 = +HEAPF64[$y34 >> 3];
    $add99 = $conv96 + $15;
    HEAPF64[$y34 >> 3] = $add99;
    $16 = +HEAPF64[$y36 >> 3];
    $add103 = $conv96 + $16;
    HEAPF64[$y36 >> 3] = $add103;
    $dely_0 = 0;
    $delx_1 = $delx_0;
    label = 21;
    break;
   case 20:
    $div105 = ($conv40 | 0) / 2 & -1;
    $conv106 = +($div105 | 0);
    $17 = +HEAPF64[$y36 >> 3];
    $add109 = $17 + $conv106;
    HEAPF64[$y36 >> 3] = $add109;
    $18 = +HEAPF64[$y34 >> 3];
    $sub114 = $18 - $conv106;
    HEAPF64[$y34 >> 3] = $sub114;
    $dely_0 = 0;
    $delx_1 = $delx_0;
    label = 21;
    break;
   case 21:
    $19 = +HEAPF64[$x23 >> 3];
    $border = $tbl + 29 | 0;
    $20 = HEAP8[$border] | 0;
    $conv121 = $20 & 255;
    $conv122 = +($conv121 | 0);
    $add123 = $19 + $conv122;
    $space = $tbl + 28 | 0;
    $21 = HEAP8[$space] | 0;
    $conv126 = +($21 << 24 >> 24 | 0);
    $add127 = $conv126 + $add123;
    $conv128 = ~~$add127;
    $cc = $tbl + 96 | 0;
    $22 = HEAP32[$cc >> 2] | 0;
    $div129 = ($delx_1 | 0) / ($22 | 0) & -1;
    $mul = Math_imul($div129, $22);
    $sub131 = $delx_1 - $mul | 0;
    $cmp132 = ($sub131 | 0) > -1;
    $conv138 = +($sub131 | 0);
    if ($cmp132) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $add139 = $conv138 + .5;
    $add139_sink = $add139;
    label = 24;
    break;
   case 23:
    $sub146 = $conv138 + -.5;
    $add139_sink = $sub146;
    label = 24;
    break;
   case 24:
    $conv140 = ~~$add139_sink;
    $23 = HEAP32[$cc >> 2] | 0;
    $cmp150101 = ($23 | 0) < 0;
    if ($cmp150101) {
      label = 27;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $widths = $tbl + 88 | 0;
    $i_0102 = 0;
    $x_0103 = $conv128;
    label = 26;
    break;
   case 26:
    $24 = HEAP32[$widths >> 2] | 0;
    $arrayidx = $24 + ($i_0102 << 2) | 0;
    $25 = HEAP32[$arrayidx >> 2] | 0;
    $cmp153 = ($i_0102 | 0) < ($conv140 | 0);
    $cond155 = $cmp153 & 1;
    HEAP32[$arrayidx >> 2] = $x_0103;
    $26 = HEAP8[$space] | 0;
    $conv161 = $26 << 24 >> 24;
    $add152 = $x_0103 + $div129 | 0;
    $add156 = $add152 + $cond155 | 0;
    $add162 = $add156 + $25 | 0;
    $add163 = $add162 + $conv161 | 0;
    $inc = $i_0102 + 1 | 0;
    $27 = HEAP32[$cc >> 2] | 0;
    $cmp150 = ($inc | 0) > ($27 | 0);
    if ($cmp150) {
      label = 27;
      break;
    } else {
      $i_0102 = $inc;
      $x_0103 = $add163;
      label = 26;
      break;
    }
   case 27:
    $28 = +HEAPF64[$y34 >> 3];
    $29 = HEAP8[$border] | 0;
    $conv168 = $29 & 255;
    $conv169 = +($conv168 | 0);
    $sub170 = $28 - $conv169;
    $30 = HEAP8[$space] | 0;
    $conv174 = +($30 << 24 >> 24 | 0);
    $sub175 = $sub170 - $conv174;
    $conv176 = ~~$sub175;
    $rc = $tbl + 92 | 0;
    $31 = HEAP32[$rc >> 2] | 0;
    $div177 = ($dely_0 | 0) / ($31 | 0) & -1;
    $mul179 = Math_imul($div177, $31);
    $sub180 = $dely_0 - $mul179 | 0;
    $cmp181 = ($sub180 | 0) > -1;
    $conv187 = +($sub180 | 0);
    if ($cmp181) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $add188 = $conv187 + .5;
    $add188_sink = $add188;
    label = 30;
    break;
   case 29:
    $sub195 = $conv187 + -.5;
    $add188_sink = $sub195;
    label = 30;
    break;
   case 30:
    $conv189 = ~~$add188_sink;
    $32 = HEAP32[$rc >> 2] | 0;
    $cmp20198 = ($32 | 0) < 0;
    if ($cmp20198) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $heights = $tbl + 84 | 0;
    $y_099 = $conv176;
    $i_1100 = 0;
    label = 34;
    break;
   case 32:
    $33 = HEAP32[$0 >> 2] | 0;
    $tobool22096 = ($33 | 0) == 0;
    if ($tobool22096) {
      label = 39;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $tobool221 = ($sides | 0) == 0;
    $widths256 = $tbl + 88 | 0;
    $x260 = $cbox | 0;
    $x274 = $cbox + 16 | 0;
    $heights277 = $tbl + 84 | 0;
    $y281 = $cbox + 24 | 0;
    $y295 = $cbox + 8 | 0;
    $_pn = $0;
    $38 = $33;
    label = 35;
    break;
   case 34:
    $34 = HEAP32[$heights >> 2] | 0;
    $arrayidx204 = $34 + ($i_1100 << 2) | 0;
    $35 = HEAP32[$arrayidx204 >> 2] | 0;
    $cmp206 = ($i_1100 | 0) < ($conv189 | 0);
    $cond208 = $cmp206 & 1;
    HEAP32[$arrayidx204 >> 2] = $y_099;
    $36 = HEAP8[$space] | 0;
    $conv214 = $36 << 24 >> 24;
    $add205_neg = $y_099 - $div177 | 0;
    $add209_neg = $add205_neg - $cond208 | 0;
    $add215_neg = $add209_neg - $35 | 0;
    $sub216 = $add215_neg - $conv214 | 0;
    $inc218 = $i_1100 + 1 | 0;
    $37 = HEAP32[$rc >> 2] | 0;
    $cmp201 = ($inc218 | 0) > ($37 | 0);
    if ($cmp201) {
      label = 32;
      break;
    } else {
      $y_099 = $sub216;
      $i_1100 = $inc218;
      label = 34;
      break;
    }
   case 35:
    $incdec_ptr97 = $_pn + 4 | 0;
    if ($tobool221) {
      $mask_3 = 0;
      label = 38;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $col = $38 + 76 | 0;
    $39 = HEAP16[$col >> 1] | 0;
    $cmp224 = $39 << 16 >> 16 == 0;
    $_ = $cmp224 ? 8 : 0;
    $row = $38 + 78 | 0;
    $40 = HEAP16[$row >> 1] | 0;
    $cmp229 = $40 << 16 >> 16 == 0;
    $or232 = $_ | 4;
    $mask_1 = $cmp229 ? $or232 : $_;
    $conv235 = $39 & 65535;
    $cspan = $38 + 72 | 0;
    $41 = HEAP16[$cspan >> 1] | 0;
    $conv236 = $41 & 65535;
    $add237 = $conv236 + $conv235 | 0;
    $42 = HEAP32[$cc >> 2] | 0;
    $cmp239 = ($add237 | 0) == ($42 | 0);
    $or242 = $mask_1 | 2;
    $or242_mask_1 = $cmp239 ? $or242 : $mask_1;
    $conv245 = $40 & 65535;
    $rspan = $38 + 74 | 0;
    $43 = HEAP16[$rspan >> 1] | 0;
    $conv246 = $43 & 65535;
    $add247 = $conv246 + $conv245 | 0;
    $44 = HEAP32[$rc >> 2] | 0;
    $cmp249 = ($add247 | 0) == ($44 | 0);
    if ($cmp249) {
      label = 37;
      break;
    } else {
      $mask_3 = $or242_mask_1;
      label = 38;
      break;
    }
   case 37:
    $or252 = $or242_mask_1 | 1;
    $mask_3 = $or252;
    label = 38;
    break;
   case 38:
    $col255 = $38 + 76 | 0;
    $45 = HEAP16[$col255 >> 1] | 0;
    $idxprom = $45 & 65535;
    $46 = HEAP32[$widths256 >> 2] | 0;
    $arrayidx257 = $46 + ($idxprom << 2) | 0;
    $47 = HEAP32[$arrayidx257 >> 2] | 0;
    $conv258 = +($47 | 0);
    HEAPF64[$x260 >> 3] = $conv258;
    $48 = HEAP16[$col255 >> 1] | 0;
    $conv262 = $48 & 65535;
    $cspan263 = $38 + 72 | 0;
    $49 = HEAP16[$cspan263 >> 1] | 0;
    $conv264 = $49 & 65535;
    $add265 = $conv264 + $conv262 | 0;
    $50 = HEAP32[$widths256 >> 2] | 0;
    $arrayidx267 = $50 + ($add265 << 2) | 0;
    $51 = HEAP32[$arrayidx267 >> 2] | 0;
    $52 = HEAP8[$space] | 0;
    $conv270 = $52 << 24 >> 24;
    $sub271 = $51 - $conv270 | 0;
    $conv272 = +($sub271 | 0);
    HEAPF64[$x274 >> 3] = $conv272;
    $row275 = $38 + 78 | 0;
    $53 = HEAP16[$row275 >> 1] | 0;
    $idxprom276 = $53 & 65535;
    $54 = HEAP32[$heights277 >> 2] | 0;
    $arrayidx278 = $54 + ($idxprom276 << 2) | 0;
    $55 = HEAP32[$arrayidx278 >> 2] | 0;
    $conv279 = +($55 | 0);
    HEAPF64[$y281 >> 3] = $conv279;
    $56 = HEAP16[$row275 >> 1] | 0;
    $conv283 = $56 & 65535;
    $rspan284 = $38 + 74 | 0;
    $57 = HEAP16[$rspan284 >> 1] | 0;
    $conv285 = $57 & 65535;
    $add286 = $conv285 + $conv283 | 0;
    $58 = HEAP32[$heights277 >> 2] | 0;
    $arrayidx288 = $58 + ($add286 << 2) | 0;
    $59 = HEAP32[$arrayidx288 >> 2] | 0;
    $60 = HEAP8[$space] | 0;
    $conv291 = $60 << 24 >> 24;
    $add292 = $conv291 + $59 | 0;
    $conv293 = +($add292 | 0);
    HEAPF64[$y295 >> 3] = $conv293;
    $and296 = $mask_3 & $sides;
    _pos_html_cell($38, $cbox, $and296);
    $61 = HEAP32[$incdec_ptr97 >> 2] | 0;
    $tobool220 = ($61 | 0) == 0;
    if ($tobool220) {
      label = 39;
      break;
    } else {
      $_pn = $incdec_ptr97;
      $38 = $61;
      label = 35;
      break;
    }
   case 39:
    $conv297 = $sides & 255;
    $sides299 = $tbl + 31 | 0;
    HEAP8[$sides299] = $conv297;
    $62 = $box;
    $63 = $pos;
    HEAP32[$62 >> 2] = HEAP32[$63 >> 2] | 0;
    HEAP32[$62 + 4 >> 2] = HEAP32[$63 + 4 >> 2] | 0;
    HEAP32[$62 + 8 >> 2] = HEAP32[$63 + 8 >> 2] | 0;
    HEAP32[$62 + 12 >> 2] = HEAP32[$63 + 12 >> 2] | 0;
    HEAP32[$62 + 16 >> 2] = HEAP32[$63 + 16 >> 2] | 0;
    HEAP32[$62 + 20 >> 2] = HEAP32[$63 + 20 >> 2] | 0;
    HEAP32[$62 + 24 >> 2] = HEAP32[$63 + 24 >> 2] | 0;
    HEAP32[$62 + 28 >> 2] = HEAP32[$63 + 28 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _pos_html_txt($ftxt, $c) {
  $ftxt = $ftxt | 0;
  $c = $c | 0;
  var $nparas = 0, $0 = 0, $cmp7 = 0, $paras = 0, $i_08 = 0, $1 = 0, $just = 0, $2 = 0, $cmp3 = 0, $inc = 0, $3 = 0, $conv = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nparas = $ftxt + 4 | 0;
    $0 = HEAP16[$nparas >> 1] | 0;
    $cmp7 = $0 << 16 >> 16 > 0;
    if ($cmp7) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $paras = $ftxt | 0;
    $i_08 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$paras >> 2] | 0;
    $just = $1 + ($i_08 * 24 & -1) + 6 | 0;
    $2 = HEAP8[$just] | 0;
    $cmp3 = $2 << 24 >> 24 == 0;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP8[$just] = $c;
    label = 6;
    break;
   case 6:
    $inc = $i_08 + 1 | 0;
    $3 = HEAP16[$nparas >> 1] | 0;
    $conv = $3 << 16 >> 16;
    $cmp = ($inc | 0) < ($conv | 0);
    if ($cmp) {
      $i_08 = $inc;
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    return;
  }
}
function _pushFontInfo($env, $fp, $savp) {
  $env = $env | 0;
  $fp = $fp | 0;
  $savp = $savp | 0;
  var $name = 0, $0 = 0, $tobool = 0, $name1 = 0, $1 = 0, $tobool2 = 0, $name10 = 0, $2 = 0, $color = 0, $3 = 0, $tobool13 = 0, $color15 = 0, $4 = 0, $tobool16 = 0, $color25 = 0, $5 = 0, $size = 0, $6 = 0.0, $cmp = 0, $size30 = 0, $7 = 0.0, $cmp31 = 0, $size40 = 0, $8 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $name = $env + 16 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $name1 = $fp | 0;
    $1 = HEAP32[$name1 >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    $name10 = $savp | 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[$name10 >> 2] = $0;
    $2 = HEAP32[$name1 >> 2] | 0;
    HEAP32[$name >> 2] = $2;
    label = 6;
    break;
   case 5:
    HEAP32[$name10 >> 2] = 0;
    label = 6;
    break;
   case 6:
    $color = $env + 20 | 0;
    $3 = HEAP32[$color >> 2] | 0;
    $tobool13 = ($3 | 0) == 0;
    if ($tobool13) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $color15 = $fp + 4 | 0;
    $4 = HEAP32[$color15 >> 2] | 0;
    $tobool16 = ($4 | 0) == 0;
    $color25 = $savp + 4 | 0;
    if ($tobool16) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    HEAP32[$color25 >> 2] = $3;
    $5 = HEAP32[$color15 >> 2] | 0;
    HEAP32[$color >> 2] = $5;
    label = 10;
    break;
   case 9:
    HEAP32[$color25 >> 2] = 0;
    label = 10;
    break;
   case 10:
    $size = $env + 32 | 0;
    $6 = +HEAPF64[$size >> 3];
    $cmp = $6 < 0.0;
    if ($cmp) {
      label = 14;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $size30 = $fp + 16 | 0;
    $7 = +HEAPF64[$size30 >> 3];
    $cmp31 = $7 < 0.0;
    $size40 = $savp + 16 | 0;
    if ($cmp31) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAPF64[$size40 >> 3] = $6;
    $8 = +HEAPF64[$size30 >> 3];
    HEAPF64[$size >> 3] = $8;
    label = 14;
    break;
   case 13:
    HEAPF64[$size40 >> 3] = -1.0;
    label = 14;
    break;
   case 14:
    return;
  }
}
function _popFontInfo($env, $savp) {
  $env = $env | 0;
  $savp = $savp | 0;
  var $name = 0, $0 = 0, $tobool = 0, $name2 = 0, $color = 0, $1 = 0, $tobool3 = 0, $color7 = 0, $size = 0, $2 = 0.0, $cmp = 0, $size12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $name = $savp | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $name2 = $env + 16 | 0;
    HEAP32[$name2 >> 2] = $0;
    label = 4;
    break;
   case 4:
    $color = $savp + 4 | 0;
    $1 = HEAP32[$color >> 2] | 0;
    $tobool3 = ($1 | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $color7 = $env + 20 | 0;
    HEAP32[$color7 >> 2] = $1;
    label = 6;
    break;
   case 6:
    $size = $savp + 16 | 0;
    $2 = +HEAPF64[$size >> 3];
    $cmp = $2 < 0.0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $size12 = $env + 32 | 0;
    HEAPF64[$size12 >> 3] = $2;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _pos_html_cell($cp, $pos, $sides) {
  $cp = $cp | 0;
  $pos = $pos | 0;
  $sides = $sides | 0;
  var $cbox = 0, $pencolor = 0, $0 = 0, $tobool = 0, $parent = 0, $1 = 0, $pencolor2 = 0, $2 = 0, $tobool3 = 0, $call = 0, $flags = 0, $3 = 0, $conv = 0, $and = 0, $tobool10 = 0, $oldsz_sroa_0_0__idx6 = 0, $oldsz_sroa_0_0_copyload7 = 0.0, $oldsz_sroa_1_8__idx14 = 0, $oldsz_sroa_1_8_copyload15 = 0.0, $x = 0, $4 = 0.0, $x14 = 0, $5 = 0.0, $sub = 0.0, $sub16 = 0.0, $cmp = 0, $and22 = 0, $add = 0.0, $add31 = 0.0, $6 = 0.0, $add34 = 0.0, $div = 0.0, $add37 = 0.0, $7 = 0.0, $sub41 = 0.0, $y = 0, $8 = 0.0, $y45 = 0, $9 = 0.0, $sub46 = 0.0, $sub48 = 0.0, $cmp49 = 0, $10 = 0, $conv54 = 0, $and55 = 0, $add60 = 0.0, $add66 = 0.0, $11 = 0.0, $add69 = 0.0, $div71 = 0.0, $add74 = 0.0, $12 = 0.0, $sub78 = 0.0, $box83 = 0, $13 = 0, $14 = 0, $conv84 = 0, $sides86 = 0, $x88 = 0, $15 = 0.0, $border = 0, $16 = 0, $conv90 = 0, $conv91 = 0.0, $add92 = 0.0, $pad = 0, $17 = 0, $conv94 = 0, $conv95 = 0.0, $add96 = 0.0, $x98 = 0, $y100 = 0, $18 = 0.0, $19 = 0, $conv103 = 0, $conv104 = 0.0, $add105 = 0.0, $20 = 0, $conv108 = 0, $conv109 = 0.0, $add110 = 0.0, $y112 = 0, $x114 = 0, $21 = 0.0, $22 = 0, $conv117 = 0, $conv118 = 0.0, $sub119 = 0.0, $23 = 0, $conv122 = 0, $conv123 = 0.0, $sub124 = 0.0, $x126 = 0, $y128 = 0, $24 = 0.0, $25 = 0, $conv131 = 0, $conv132 = 0.0, $sub133 = 0.0, $26 = 0, $conv136 = 0, $conv137 = 0.0, $sub138 = 0.0, $y140 = 0, $child = 0, $kind = 0, $27 = 0, $tbl = 0, $28 = 0, $img = 0, $29 = 0, $oldsz_sroa_0_0__idx2 = 0, $oldsz_sroa_0_0_copyload3 = 0.0, $oldsz_sroa_1_8__idx10 = 0, $oldsz_sroa_1_8_copyload11 = 0.0, $30 = 0.0, $31 = 0.0, $sub160 = 0.0, $sub162 = 0.0, $cmp163 = 0, $32 = 0, $conv168 = 0, $and169 = 0, $sub173 = 0.0, $add177 = 0.0, $33 = 0.0, $34 = 0.0, $sub184 = 0.0, $sub186 = 0.0, $cmp187 = 0, $35 = 0, $conv192 = 0, $and193 = 0, $sub197 = 0.0, $add201 = 0.0, $36 = 0, $txt = 0, $37 = 0, $oldsz_sroa_0_0__idx = 0, $oldsz_sroa_0_0_copyload = 0.0, $oldsz_sroa_1_8__idx8 = 0, $oldsz_sroa_1_8_copyload = 0.0, $38 = 0.0, $39 = 0.0, $sub216 = 0.0, $sub218 = 0.0, $cmp219 = 0, $40 = 0, $conv224 = 0, $and225 = 0, $sub232 = 0.0, $add236 = 0.0, $div238 = 0.0, $add241 = 0.0, $41 = 0.0, $sub245 = 0.0, $42 = 0.0, $43 = 0.0, $sub252 = 0.0, $sub254 = 0.0, $cmp255 = 0, $44 = 0, $conv260 = 0, $and261 = 0, $sub265 = 0.0, $add269 = 0.0, $div271 = 0.0, $add274 = 0.0, $45 = 0.0, $sub278 = 0.0, $46 = 0, $box284 = 0, $47 = 0, $48 = 0, $49 = 0, $conv287 = 0, $and288 = 0, $dfltalign_0 = 0, $50 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $pos;
  $pos = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($pos, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cbox = __stackBase__ | 0;
    $pencolor = $cp + 24 | 0;
    $0 = HEAP32[$pencolor >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $parent = $cp + 88 | 0;
    $1 = HEAP32[$parent >> 2] | 0;
    $pencolor2 = $1 + 24 | 0;
    $2 = HEAP32[$pencolor2 >> 2] | 0;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _strdup($2 | 0) | 0;
    HEAP32[$pencolor >> 2] = $call;
    label = 5;
    break;
   case 5:
    $flags = $cp + 32 | 0;
    $3 = HEAP16[$flags >> 1] | 0;
    $conv = $3 & 65535;
    $and = $conv & 1;
    $tobool10 = ($and | 0) == 0;
    if ($tobool10) {
      label = 16;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $oldsz_sroa_0_0__idx6 = $cp + 56 | 0;
    $oldsz_sroa_0_0_copyload7 = +HEAPF64[$oldsz_sroa_0_0__idx6 >> 3];
    $oldsz_sroa_1_8__idx14 = $cp + 64 | 0;
    $oldsz_sroa_1_8_copyload15 = +HEAPF64[$oldsz_sroa_1_8__idx14 >> 3];
    $x = $pos + 16 | 0;
    $4 = +HEAPF64[$x >> 3];
    $x14 = $pos | 0;
    $5 = +HEAPF64[$x14 >> 3];
    $sub = $4 - $5;
    $sub16 = $sub - $oldsz_sroa_0_0_copyload7;
    $cmp = $sub16 > 0.0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $and22 = $conv & 6;
    if (($and22 | 0) == 4) {
      label = 8;
      break;
    } else if (($and22 | 0) == 2) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $add = $oldsz_sroa_0_0_copyload7 + $5;
    HEAPF64[$x >> 3] = $add;
    label = 11;
    break;
   case 9:
    $add31 = $4 + $sub16;
    HEAPF64[$x >> 3] = $add31;
    $6 = +HEAPF64[$x14 >> 3];
    $add34 = $sub16 + $6;
    HEAPF64[$x14 >> 3] = $add34;
    label = 11;
    break;
   case 10:
    $div = $sub16 * .5;
    $add37 = $5 + $div;
    HEAPF64[$x14 >> 3] = $add37;
    $7 = +HEAPF64[$x >> 3];
    $sub41 = $7 - $div;
    HEAPF64[$x >> 3] = $sub41;
    label = 11;
    break;
   case 11:
    $y = $pos + 24 | 0;
    $8 = +HEAPF64[$y >> 3];
    $y45 = $pos + 8 | 0;
    $9 = +HEAPF64[$y45 >> 3];
    $sub46 = $8 - $9;
    $sub48 = $sub46 - $oldsz_sroa_1_8_copyload15;
    $cmp49 = $sub48 > 0.0;
    if ($cmp49) {
      label = 12;
      break;
    } else {
      label = 16;
      break;
    }
   case 12:
    $10 = HEAP16[$flags >> 1] | 0;
    $conv54 = $10 & 65535;
    $and55 = $conv54 & 24;
    if (($and55 | 0) == 16) {
      label = 13;
      break;
    } else if (($and55 | 0) == 8) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $add60 = $oldsz_sroa_1_8_copyload15 + $9;
    HEAPF64[$y >> 3] = $add60;
    label = 16;
    break;
   case 14:
    $add66 = $8 + $sub48;
    HEAPF64[$y >> 3] = $add66;
    $11 = +HEAPF64[$y45 >> 3];
    $add69 = $sub48 + $11;
    HEAPF64[$y45 >> 3] = $add69;
    label = 16;
    break;
   case 15:
    $div71 = $sub48 * .5;
    $add74 = $9 + $div71;
    HEAPF64[$y45 >> 3] = $add74;
    $12 = +HEAPF64[$y >> 3];
    $sub78 = $12 - $div71;
    HEAPF64[$y >> 3] = $sub78;
    label = 16;
    break;
   case 16:
    $box83 = $cp + 40 | 0;
    $13 = $box83;
    $14 = $pos;
    HEAP32[$13 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    HEAP32[$13 + 16 >> 2] = HEAP32[$14 + 16 >> 2] | 0;
    HEAP32[$13 + 20 >> 2] = HEAP32[$14 + 20 >> 2] | 0;
    HEAP32[$13 + 24 >> 2] = HEAP32[$14 + 24 >> 2] | 0;
    HEAP32[$13 + 28 >> 2] = HEAP32[$14 + 28 >> 2] | 0;
    $conv84 = $sides & 255;
    $sides86 = $cp + 31 | 0;
    HEAP8[$sides86] = $conv84;
    $x88 = $pos | 0;
    $15 = +HEAPF64[$x88 >> 3];
    $border = $cp + 29 | 0;
    $16 = HEAP8[$border] | 0;
    $conv90 = $16 & 255;
    $conv91 = +($conv90 | 0);
    $add92 = $15 + $conv91;
    $pad = $cp + 30 | 0;
    $17 = HEAP8[$pad] | 0;
    $conv94 = $17 & 255;
    $conv95 = +($conv94 | 0);
    $add96 = $add92 + $conv95;
    $x98 = $cbox | 0;
    HEAPF64[$x98 >> 3] = $add96;
    $y100 = $pos + 8 | 0;
    $18 = +HEAPF64[$y100 >> 3];
    $19 = HEAP8[$border] | 0;
    $conv103 = $19 & 255;
    $conv104 = +($conv103 | 0);
    $add105 = $18 + $conv104;
    $20 = HEAP8[$pad] | 0;
    $conv108 = $20 & 255;
    $conv109 = +($conv108 | 0);
    $add110 = $add105 + $conv109;
    $y112 = $cbox + 8 | 0;
    HEAPF64[$y112 >> 3] = $add110;
    $x114 = $pos + 16 | 0;
    $21 = +HEAPF64[$x114 >> 3];
    $22 = HEAP8[$border] | 0;
    $conv117 = $22 & 255;
    $conv118 = +($conv117 | 0);
    $sub119 = $21 - $conv118;
    $23 = HEAP8[$pad] | 0;
    $conv122 = $23 & 255;
    $conv123 = +($conv122 | 0);
    $sub124 = $sub119 - $conv123;
    $x126 = $cbox + 16 | 0;
    HEAPF64[$x126 >> 3] = $sub124;
    $y128 = $pos + 24 | 0;
    $24 = +HEAPF64[$y128 >> 3];
    $25 = HEAP8[$border] | 0;
    $conv131 = $25 & 255;
    $conv132 = +($conv131 | 0);
    $sub133 = $24 - $conv132;
    $26 = HEAP8[$pad] | 0;
    $conv136 = $26 & 255;
    $conv137 = +($conv136 | 0);
    $sub138 = $sub133 - $conv137;
    $y140 = $cbox + 24 | 0;
    HEAPF64[$y140 >> 3] = $sub138;
    $child = $cp + 80 | 0;
    $kind = $cp + 84 | 0;
    $27 = HEAP8[$kind] | 0;
    if (($27 << 24 >> 24 | 0) == 1) {
      label = 17;
      break;
    } else if (($27 << 24 >> 24 | 0) == 3) {
      label = 18;
      break;
    } else {
      label = 27;
      break;
    }
   case 17:
    $tbl = $child | 0;
    $28 = HEAP32[$tbl >> 2] | 0;
    _pos_html_tbl($28, $cbox, $sides);
    label = 41;
    break;
   case 18:
    $img = $child;
    $29 = HEAP32[$img >> 2] | 0;
    $oldsz_sroa_0_0__idx2 = $29 + 16 | 0;
    $oldsz_sroa_0_0_copyload3 = +HEAPF64[$oldsz_sroa_0_0__idx2 >> 3];
    $oldsz_sroa_1_8__idx10 = $29 + 24 | 0;
    $oldsz_sroa_1_8_copyload11 = +HEAPF64[$oldsz_sroa_1_8__idx10 >> 3];
    $30 = +HEAPF64[$x126 >> 3];
    $31 = +HEAPF64[$x98 >> 3];
    $sub160 = $30 - $31;
    $sub162 = $sub160 - $oldsz_sroa_0_0_copyload3;
    $cmp163 = $sub162 > 0.0;
    if ($cmp163) {
      label = 19;
      break;
    } else {
      label = 22;
      break;
    }
   case 19:
    $32 = HEAP16[$flags >> 1] | 0;
    $conv168 = $32 & 65535;
    $and169 = $conv168 & 6;
    if (($and169 | 0) == 4) {
      label = 20;
      break;
    } else if (($and169 | 0) == 2) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 20:
    $sub173 = $30 - $sub162;
    HEAPF64[$x126 >> 3] = $sub173;
    label = 22;
    break;
   case 21:
    $add177 = $31 + $sub162;
    HEAPF64[$x98 >> 3] = $add177;
    label = 22;
    break;
   case 22:
    $33 = +HEAPF64[$y140 >> 3];
    $34 = +HEAPF64[$y112 >> 3];
    $sub184 = $33 - $34;
    $sub186 = $sub184 - $oldsz_sroa_1_8_copyload11;
    $cmp187 = $sub186 > 0.0;
    if ($cmp187) {
      label = 23;
      break;
    } else {
      label = 26;
      break;
    }
   case 23:
    $35 = HEAP16[$flags >> 1] | 0;
    $conv192 = $35 & 65535;
    $and193 = $conv192 & 24;
    if (($and193 | 0) == 16) {
      label = 24;
      break;
    } else if (($and193 | 0) == 8) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $sub197 = $33 - $sub186;
    HEAPF64[$y140 >> 3] = $sub197;
    label = 26;
    break;
   case 25:
    $add201 = $34 + $sub186;
    HEAPF64[$y112 >> 3] = $add201;
    label = 26;
    break;
   case 26:
    $36 = HEAP32[$img >> 2] | 0;
    _pos_html_img($36, $cbox);
    label = 41;
    break;
   case 27:
    $txt = $child;
    $37 = HEAP32[$txt >> 2] | 0;
    $oldsz_sroa_0_0__idx = $37 + 24 | 0;
    $oldsz_sroa_0_0_copyload = +HEAPF64[$oldsz_sroa_0_0__idx >> 3];
    $oldsz_sroa_1_8__idx8 = $37 + 32 | 0;
    $oldsz_sroa_1_8_copyload = +HEAPF64[$oldsz_sroa_1_8__idx8 >> 3];
    $38 = +HEAPF64[$x126 >> 3];
    $39 = +HEAPF64[$x98 >> 3];
    $sub216 = $38 - $39;
    $sub218 = $sub216 - $oldsz_sroa_0_0_copyload;
    $cmp219 = $sub218 > 0.0;
    if ($cmp219) {
      label = 28;
      break;
    } else {
      label = 32;
      break;
    }
   case 28:
    $40 = HEAP16[$flags >> 1] | 0;
    $conv224 = $40 & 65535;
    $and225 = $conv224 & 6;
    if (($and225 | 0) == 4) {
      label = 29;
      break;
    } else if (($and225 | 0) == 2) {
      label = 30;
      break;
    } else if (($and225 | 0) == 6) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 29:
    $sub232 = $38 - $sub218;
    HEAPF64[$x126 >> 3] = $sub232;
    label = 32;
    break;
   case 30:
    $add236 = $39 + $sub218;
    HEAPF64[$x98 >> 3] = $add236;
    label = 32;
    break;
   case 31:
    $div238 = $sub218 * .5;
    $add241 = $39 + $div238;
    HEAPF64[$x98 >> 3] = $add241;
    $41 = +HEAPF64[$x126 >> 3];
    $sub245 = $41 - $div238;
    HEAPF64[$x126 >> 3] = $sub245;
    label = 32;
    break;
   case 32:
    $42 = +HEAPF64[$y140 >> 3];
    $43 = +HEAPF64[$y112 >> 3];
    $sub252 = $42 - $43;
    $sub254 = $sub252 - $oldsz_sroa_1_8_copyload;
    $cmp255 = $sub254 > 0.0;
    if ($cmp255) {
      label = 33;
      break;
    } else {
      label = 37;
      break;
    }
   case 33:
    $44 = HEAP16[$flags >> 1] | 0;
    $conv260 = $44 & 65535;
    $and261 = $conv260 & 24;
    if (($and261 | 0) == 16) {
      label = 34;
      break;
    } else if (($and261 | 0) == 8) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 34:
    $sub265 = $42 - $sub254;
    HEAPF64[$y140 >> 3] = $sub265;
    label = 37;
    break;
   case 35:
    $add269 = $43 + $sub254;
    HEAPF64[$y112 >> 3] = $add269;
    label = 37;
    break;
   case 36:
    $div271 = $sub254 * .5;
    $add274 = $43 + $div271;
    HEAPF64[$y112 >> 3] = $add274;
    $45 = +HEAPF64[$y140 >> 3];
    $sub278 = $45 - $div271;
    HEAPF64[$y140 >> 3] = $sub278;
    label = 37;
    break;
   case 37:
    $46 = HEAP32[$txt >> 2] | 0;
    $box284 = $46 + 8 | 0;
    $47 = $box284;
    $48 = $cbox;
    HEAP32[$47 >> 2] = HEAP32[$48 >> 2] | 0;
    HEAP32[$47 + 4 >> 2] = HEAP32[$48 + 4 >> 2] | 0;
    HEAP32[$47 + 8 >> 2] = HEAP32[$48 + 8 >> 2] | 0;
    HEAP32[$47 + 12 >> 2] = HEAP32[$48 + 12 >> 2] | 0;
    HEAP32[$47 + 16 >> 2] = HEAP32[$48 + 16 >> 2] | 0;
    HEAP32[$47 + 20 >> 2] = HEAP32[$48 + 20 >> 2] | 0;
    HEAP32[$47 + 24 >> 2] = HEAP32[$48 + 24 >> 2] | 0;
    HEAP32[$47 + 28 >> 2] = HEAP32[$48 + 28 >> 2] | 0;
    $49 = HEAP16[$flags >> 1] | 0;
    $conv287 = $49 & 65535;
    $and288 = $conv287 & 768;
    if (($and288 | 0) == 256) {
      label = 38;
      break;
    } else if (($and288 | 0) == 512) {
      $dfltalign_0 = 108;
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    $dfltalign_0 = 114;
    label = 40;
    break;
   case 39:
    $dfltalign_0 = 110;
    label = 40;
    break;
   case 40:
    $50 = HEAP32[$txt >> 2] | 0;
    _pos_html_txt($50, $dfltalign_0);
    label = 41;
    break;
   case 41:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pos_html_img($cp, $pos) {
  $cp = $cp | 0;
  $pos = $pos | 0;
  var $0 = 0, $1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pos;
  $pos = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($pos, tempParam, 32);
  $0 = $cp;
  $1 = $pos;
  HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
  HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
  HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
  HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
  HEAP32[$0 + 16 >> 2] = HEAP32[$1 + 16 >> 2] | 0;
  HEAP32[$0 + 20 >> 2] = HEAP32[$1 + 20 >> 2] | 0;
  HEAP32[$0 + 24 >> 2] = HEAP32[$1 + 24 >> 2] | 0;
  HEAP32[$0 + 28 >> 2] = HEAP32[$1 + 28 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _processTbl($g, $tbl, $env) {
  $g = $g | 0;
  $tbl = $tbl | 0;
  $env = $env | 0;
  var $rows1 = 0, $0 = 0, $1 = 0, $call = 0, $call2 = 0, $tobool65 = 0, $rp_0_in67 = 0, $cnt_066 = 0, $u3 = 0, $rp4 = 0, $2 = 0, $call5 = 0, $tobool761 = 0, $cp_0_in63 = 0, $cnt_162 = 0, $inc = 0, $right = 0, $3 = 0, $tobool7 = 0, $cnt_1_lcssa = 0, $right11 = 0, $4 = 0, $tobool = 0, $cnt_0_lcssa = 0, $add = 0, $mul = 0, $call13 = 0, $5 = 0, $call16 = 0, $tobool1850 = 0, $rp_1_in57 = 0, $n_cols_056 = 0, $n_rows_055 = 0, $rv_054 = 0, $cells_053 = 0, $r_051 = 0, $u20 = 0, $rp21 = 0, $6 = 0, $call22 = 0, $tobool2440 = 0, $conv = 0, $n_cols_146 = 0, $n_rows_145 = 0, $rv_144 = 0, $cp_1_in43 = 0, $cells_142 = 0, $c_041 = 0, $u26 = 0, $cp27 = 0, $7 = 0, $incdec_ptr = 0, $call28 = 0, $or = 0, $call29 = 0, $row = 0, $conv30 = 0, $col = 0, $cspan = 0, $8 = 0, $conv31 = 0, $add32 = 0, $cmp = 0, $cond = 0, $rspan = 0, $9 = 0, $conv34 = 0, $add35 = 0, $cmp36 = 0, $add35_n_rows_1 = 0, $right45 = 0, $10 = 0, $tobool24 = 0, $n_cols_1_lcssa = 0, $n_rows_1_lcssa = 0, $rv_1_lcssa = 0, $cells_1_lcssa = 0, $right47 = 0, $11 = 0, $inc48 = 0, $tobool18 = 0, $n_cols_0_lcssa = 0, $n_rows_0_lcssa = 0, $rv_0_lcssa = 0, $rc = 0, $cc = 0, $call50 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rows1 = $tbl + 76 | 0;
    $0 = HEAP32[$rows1 >> 2] | 0;
    $1 = $0;
    $call = _newPS() | 0;
    $call2 = _dtflatten($1) | 0;
    $tobool65 = ($call2 | 0) == 0;
    if ($tobool65) {
      $cnt_0_lcssa = 0;
      label = 6;
      break;
    } else {
      $cnt_066 = 0;
      $rp_0_in67 = $call2;
      label = 3;
      break;
    }
   case 3:
    $u3 = $rp_0_in67 + 8 | 0;
    $rp4 = $u3;
    $2 = HEAP32[$rp4 >> 2] | 0;
    $call5 = _dtflatten($2) | 0;
    $tobool761 = ($call5 | 0) == 0;
    if ($tobool761) {
      $cnt_1_lcssa = $cnt_066;
      label = 5;
      break;
    } else {
      $cnt_162 = $cnt_066;
      $cp_0_in63 = $call5;
      label = 4;
      break;
    }
   case 4:
    $inc = $cnt_162 + 1 | 0;
    $right = $cp_0_in63 | 0;
    $3 = HEAP32[$right >> 2] | 0;
    $tobool7 = ($3 | 0) == 0;
    if ($tobool7) {
      $cnt_1_lcssa = $inc;
      label = 5;
      break;
    } else {
      $cnt_162 = $inc;
      $cp_0_in63 = $3;
      label = 4;
      break;
    }
   case 5:
    $right11 = $rp_0_in67 | 0;
    $4 = HEAP32[$right11 >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      $cnt_0_lcssa = $cnt_1_lcssa;
      label = 6;
      break;
    } else {
      $cnt_066 = $cnt_1_lcssa;
      $rp_0_in67 = $4;
      label = 3;
      break;
    }
   case 6:
    $add = $cnt_0_lcssa << 2;
    $mul = $add + 4 | 0;
    $call13 = _zmalloc($mul) | 0;
    $5 = $call13;
    HEAP32[$rows1 >> 2] = $5;
    $call16 = _dtflatten($1) | 0;
    $tobool1850 = ($call16 | 0) == 0;
    if ($tobool1850) {
      $rv_0_lcssa = 0;
      $n_rows_0_lcssa = 0;
      $n_cols_0_lcssa = 0;
      label = 11;
      break;
    } else {
      $r_051 = 0;
      $cells_053 = $5;
      $rv_054 = 0;
      $n_rows_055 = 0;
      $n_cols_056 = 0;
      $rp_1_in57 = $call16;
      label = 7;
      break;
    }
   case 7:
    $u20 = $rp_1_in57 + 8 | 0;
    $rp21 = $u20;
    $6 = HEAP32[$rp21 >> 2] | 0;
    $call22 = _dtflatten($6) | 0;
    $tobool2440 = ($call22 | 0) == 0;
    if ($tobool2440) {
      $cells_1_lcssa = $cells_053;
      $rv_1_lcssa = $rv_054;
      $n_rows_1_lcssa = $n_rows_055;
      $n_cols_1_lcssa = $n_cols_056;
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $conv = $r_051 & 65535;
    $c_041 = 0;
    $cells_142 = $cells_053;
    $cp_1_in43 = $call22;
    $rv_144 = $rv_054;
    $n_rows_145 = $n_rows_055;
    $n_cols_146 = $n_cols_056;
    label = 9;
    break;
   case 9:
    $u26 = $cp_1_in43 + 8 | 0;
    $cp27 = $u26;
    $7 = HEAP32[$cp27 >> 2] | 0;
    $incdec_ptr = $cells_142 + 4 | 0;
    HEAP32[$cells_142 >> 2] = $7;
    $call28 = _size_html_cell($g, $7, $tbl, $env) | 0;
    $or = $call28 | $rv_144;
    $call29 = _findCol($call, $r_051, $c_041, $7) | 0;
    $row = $7 + 78 | 0;
    HEAP16[$row >> 1] = $conv;
    $conv30 = $call29 & 65535;
    $col = $7 + 76 | 0;
    HEAP16[$col >> 1] = $conv30;
    $cspan = $7 + 72 | 0;
    $8 = HEAP16[$cspan >> 1] | 0;
    $conv31 = $8 & 65535;
    $add32 = $conv31 + $call29 | 0;
    $cmp = ($add32 | 0) > ($n_cols_146 | 0);
    $cond = $cmp ? $add32 : $n_cols_146;
    $rspan = $7 + 74 | 0;
    $9 = HEAP16[$rspan >> 1] | 0;
    $conv34 = $9 & 65535;
    $add35 = $conv34 + $r_051 | 0;
    $cmp36 = ($add35 | 0) > ($n_rows_145 | 0);
    $add35_n_rows_1 = $cmp36 ? $add35 : $n_rows_145;
    $right45 = $cp_1_in43 | 0;
    $10 = HEAP32[$right45 >> 2] | 0;
    $tobool24 = ($10 | 0) == 0;
    if ($tobool24) {
      $cells_1_lcssa = $incdec_ptr;
      $rv_1_lcssa = $or;
      $n_rows_1_lcssa = $add35_n_rows_1;
      $n_cols_1_lcssa = $cond;
      label = 10;
      break;
    } else {
      $c_041 = $add32;
      $cells_142 = $incdec_ptr;
      $cp_1_in43 = $10;
      $rv_144 = $or;
      $n_rows_145 = $add35_n_rows_1;
      $n_cols_146 = $cond;
      label = 9;
      break;
    }
   case 10:
    $right47 = $rp_1_in57 | 0;
    $11 = HEAP32[$right47 >> 2] | 0;
    $inc48 = $r_051 + 1 | 0;
    $tobool18 = ($11 | 0) == 0;
    if ($tobool18) {
      $rv_0_lcssa = $rv_1_lcssa;
      $n_rows_0_lcssa = $n_rows_1_lcssa;
      $n_cols_0_lcssa = $n_cols_1_lcssa;
      label = 11;
      break;
    } else {
      $r_051 = $inc48;
      $cells_053 = $cells_1_lcssa;
      $rv_054 = $rv_1_lcssa;
      $n_rows_055 = $n_rows_1_lcssa;
      $n_cols_056 = $n_cols_1_lcssa;
      $rp_1_in57 = $11;
      label = 7;
      break;
    }
   case 11:
    $rc = $tbl + 92 | 0;
    HEAP32[$rc >> 2] = $n_rows_0_lcssa;
    $cc = $tbl + 96 | 0;
    HEAP32[$cc >> 2] = $n_cols_0_lcssa;
    $call50 = _dtclose($1) | 0;
    _freePS($call);
    return $rv_0_lcssa | 0;
  }
  return 0;
}
function _size_html_cell($g, $cp, $parent, $env) {
  $g = $g | 0;
  $cp = $cp | 0;
  $parent = $parent | 0;
  $env = $env | 0;
  var $parent1 = 0, $flags = 0, $0 = 0, $and = 0, $tobool = 0, $flags3 = 0, $1 = 0, $and5 = 0, $tobool6 = 0, $pad = 0, $2 = 0, $pad10 = 0, $pad12 = 0, $3 = 0, $and17 = 0, $tobool18 = 0, $cb = 0, $4 = 0, $cmp = 0, $border = 0, $flags27 = 0, $5 = 0, $and29 = 0, $tobool30 = 0, $border33 = 0, $6 = 0, $border35 = 0, $border38 = 0, $child = 0, $kind = 0, $7 = 0, $tbl = 0, $8 = 0, $call = 0, $9 = 0, $child_sz_sroa_0_0__idx4 = 0, $child_sz_sroa_1_8__idx9 = 0, $img = 0, $10 = 0, $call60 = 0, $11 = 0, $child_sz_sroa_0_0__idx2 = 0, $child_sz_sroa_1_8__idx7 = 0, $txt = 0, $12 = 0, $13 = 0, $child_sz_sroa_0_0__idx = 0, $child_sz_sroa_1_8__idx6 = 0, $child_sz_sroa_1_0_in = 0, $child_sz_sroa_0_0_in = 0, $rv_0 = 0, $child_sz_sroa_0_0 = 0.0, $child_sz_sroa_1_0 = 0.0, $pad78 = 0, $14 = 0, $conv79 = 0, $border81 = 0, $15 = 0, $conv82 = 0, $add = 0, $mul = 0, $conv83 = 0.0, $add84 = 0.0, $add87 = 0.0, $16 = 0, $and92 = 0, $tobool93 = 0, $width = 0, $17 = 0, $conv96 = 0, $tobool97 = 0, $height = 0, $18 = 0, $conv99 = 0, $tobool100 = 0, $conv105 = 0.0, $cmp107 = 0, $conv112 = 0.0, $cmp114 = 0, $call117 = 0, $call122 = 0, $sz_sroa_1_0 = 0.0, $sz_sroa_0_0 = 0.0, $rv_2 = 0, $width127 = 0, $19 = 0, $conv128 = 0, $conv129 = 0.0, $cmp130 = 0, $sz_sroa_0_0_conv129 = 0.0, $x140 = 0, $height143 = 0, $20 = 0, $conv144 = 0, $conv145 = 0.0, $cmp146 = 0, $cond156 = 0.0, $y160 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $parent1 = $cp + 88 | 0;
    HEAP32[$parent1 >> 2] = $parent;
    $flags = $cp + 32 | 0;
    $0 = HEAP16[$flags >> 1] | 0;
    $and = $0 & 64;
    $tobool = $and << 16 >> 16 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $flags3 = $parent + 32 | 0;
    $1 = HEAP16[$flags3 >> 1] | 0;
    $and5 = $1 & 64;
    $tobool6 = $and5 << 16 >> 16 == 0;
    if ($tobool6) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $pad = $parent + 30 | 0;
    $2 = HEAP8[$pad] | 0;
    $pad10 = $cp + 30 | 0;
    HEAP8[$pad10] = $2;
    label = 6;
    break;
   case 5:
    $pad12 = $cp + 30 | 0;
    HEAP8[$pad12] = 2;
    label = 6;
    break;
   case 6:
    $3 = HEAP16[$flags >> 1] | 0;
    $and17 = $3 & 32;
    $tobool18 = $and17 << 16 >> 16 == 0;
    if ($tobool18) {
      label = 7;
      break;
    } else {
      label = 12;
      break;
    }
   case 7:
    $cb = $parent + 80 | 0;
    $4 = HEAP8[$cb] | 0;
    $cmp = $4 << 24 >> 24 > -1;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $border = $cp + 29 | 0;
    HEAP8[$border] = $4;
    label = 12;
    break;
   case 9:
    $flags27 = $parent + 32 | 0;
    $5 = HEAP16[$flags27 >> 1] | 0;
    $and29 = $5 & 32;
    $tobool30 = $and29 << 16 >> 16 == 0;
    if ($tobool30) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $border33 = $parent + 29 | 0;
    $6 = HEAP8[$border33] | 0;
    $border35 = $cp + 29 | 0;
    HEAP8[$border35] = $6;
    label = 12;
    break;
   case 11:
    $border38 = $cp + 29 | 0;
    HEAP8[$border38] = 1;
    label = 12;
    break;
   case 12:
    $child = $cp + 80 | 0;
    $kind = $cp + 84 | 0;
    $7 = HEAP8[$kind] | 0;
    if (($7 << 24 >> 24 | 0) == 1) {
      label = 13;
      break;
    } else if (($7 << 24 >> 24 | 0) == 3) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $tbl = $child | 0;
    $8 = HEAP32[$tbl >> 2] | 0;
    $call = _size_html_tbl($g, $8, $cp, $env) | 0;
    $9 = HEAP32[$tbl >> 2] | 0;
    $child_sz_sroa_0_0__idx4 = $9 + 56 | 0;
    $child_sz_sroa_1_8__idx9 = $9 + 64 | 0;
    $rv_0 = $call;
    $child_sz_sroa_0_0_in = $child_sz_sroa_0_0__idx4;
    $child_sz_sroa_1_0_in = $child_sz_sroa_1_8__idx9;
    label = 16;
    break;
   case 14:
    $img = $child;
    $10 = HEAP32[$img >> 2] | 0;
    $call60 = _size_html_img($10, $env) | 0;
    $11 = HEAP32[$img >> 2] | 0;
    $child_sz_sroa_0_0__idx2 = $11 + 16 | 0;
    $child_sz_sroa_1_8__idx7 = $11 + 24 | 0;
    $rv_0 = $call60;
    $child_sz_sroa_0_0_in = $child_sz_sroa_0_0__idx2;
    $child_sz_sroa_1_0_in = $child_sz_sroa_1_8__idx7;
    label = 16;
    break;
   case 15:
    $txt = $child;
    $12 = HEAP32[$txt >> 2] | 0;
    _size_html_txt($g, $12, $env);
    $13 = HEAP32[$txt >> 2] | 0;
    $child_sz_sroa_0_0__idx = $13 + 24 | 0;
    $child_sz_sroa_1_8__idx6 = $13 + 32 | 0;
    $rv_0 = 0;
    $child_sz_sroa_0_0_in = $child_sz_sroa_0_0__idx;
    $child_sz_sroa_1_0_in = $child_sz_sroa_1_8__idx6;
    label = 16;
    break;
   case 16:
    $child_sz_sroa_0_0 = +HEAPF64[$child_sz_sroa_0_0_in >> 3];
    $child_sz_sroa_1_0 = +HEAPF64[$child_sz_sroa_1_0_in >> 3];
    $pad78 = $cp + 30 | 0;
    $14 = HEAP8[$pad78] | 0;
    $conv79 = $14 & 255;
    $border81 = $cp + 29 | 0;
    $15 = HEAP8[$border81] | 0;
    $conv82 = $15 & 255;
    $add = $conv82 + $conv79 | 0;
    $mul = $add << 1;
    $conv83 = +($mul | 0);
    $add84 = $child_sz_sroa_0_0 + $conv83;
    $add87 = $child_sz_sroa_1_0 + $conv83;
    $16 = HEAP16[$flags >> 1] | 0;
    $and92 = $16 & 1;
    $tobool93 = $and92 << 16 >> 16 == 0;
    if ($tobool93) {
      $rv_2 = $rv_0;
      $sz_sroa_0_0 = $add84;
      $sz_sroa_1_0 = $add87;
      label = 23;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $width = $cp + 34 | 0;
    $17 = HEAP16[$width >> 1] | 0;
    $conv96 = $17 & 65535;
    $tobool97 = $17 << 16 >> 16 == 0;
    if ($tobool97) {
      label = 22;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $height = $cp + 36 | 0;
    $18 = HEAP16[$height >> 1] | 0;
    $conv99 = $18 & 65535;
    $tobool100 = $18 << 16 >> 16 == 0;
    if ($tobool100) {
      label = 22;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $conv105 = +($conv96 | 0);
    $cmp107 = $conv105 < $add84;
    if ($cmp107) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $conv112 = +($conv99 | 0);
    $cmp114 = $conv112 < $add87;
    if ($cmp114) {
      label = 21;
      break;
    } else {
      $rv_2 = $rv_0;
      $sz_sroa_0_0 = 0.0;
      $sz_sroa_1_0 = 0.0;
      label = 23;
      break;
    }
   case 21:
    $call117 = _agerr(0, 154112, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $rv_2 = 1;
    $sz_sroa_0_0 = 0.0;
    $sz_sroa_1_0 = 0.0;
    label = 23;
    break;
   case 22:
    $call122 = _agerr(0, 150376, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $rv_2 = 1;
    $sz_sroa_0_0 = $add84;
    $sz_sroa_1_0 = $add87;
    label = 23;
    break;
   case 23:
    $width127 = $cp + 34 | 0;
    $19 = HEAP16[$width127 >> 1] | 0;
    $conv128 = $19 & 65535;
    $conv129 = +($conv128 | 0);
    $cmp130 = $sz_sroa_0_0 > $conv129;
    $sz_sroa_0_0_conv129 = $cmp130 ? $sz_sroa_0_0 : $conv129;
    $x140 = $cp + 56 | 0;
    HEAPF64[$x140 >> 3] = $sz_sroa_0_0_conv129;
    $height143 = $cp + 36 | 0;
    $20 = HEAP16[$height143 >> 1] | 0;
    $conv144 = $20 & 65535;
    $conv145 = +($conv144 | 0);
    $cmp146 = $sz_sroa_1_0 > $conv145;
    $cond156 = $cmp146 ? $sz_sroa_1_0 : $conv145;
    $y160 = $cp + 64 | 0;
    HEAPF64[$y160 >> 3] = $cond156;
    STACKTOP = __stackBase__;
    return $rv_2 | 0;
  }
  return 0;
}
function _findCol($ps, $row, $col, $cellp) {
  $ps = $ps | 0;
  $row = $row | 0;
  $col = $col | 0;
  $cellp = $cellp | 0;
  var $cspan = 0, $0 = 0, $conv = 0, $sub = 0, $col_addr_0_ph32 = 0, $1 = 0, $cmp1224 = 0, $rspan = 0, $col_addr_0_ph34 = 0, $add = 0, $c_0 = 0, $cmp = 0, $call = 0, $tobool2 = 0, $dec = 0, $add6 = 0, $j_025 = 0, $2 = 0, $cmp1820 = 0, $i_021 = 0, $inc = 0, $3 = 0, $conv16 = 0, $add17 = 0, $cmp18 = 0, $inc24 = 0, $4 = 0, $conv10 = 0, $add11 = 0, $cmp12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cspan = $cellp + 72 | 0;
    $0 = HEAP16[$cspan >> 1] | 0;
    $conv = $0 & 65535;
    $sub = $conv - 1 | 0;
    $col_addr_0_ph34 = $col;
    label = 5;
    break;
   case 3:
    $1 = HEAP16[$cspan >> 1] | 0;
    $cmp1224 = $1 << 16 >> 16 == 0;
    if ($cmp1224) {
      label = 12;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $rspan = $cellp + 74 | 0;
    $j_025 = $col_addr_0_ph32;
    label = 9;
    break;
   case 5:
    $add = $sub + $col_addr_0_ph34 | 0;
    $c_0 = $add;
    label = 6;
    break;
   case 6:
    $cmp = ($c_0 | 0) < ($col_addr_0_ph34 | 0);
    if ($cmp) {
      $col_addr_0_ph32 = $col_addr_0_ph34;
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call = _isInPS($ps, $c_0, $row) | 0;
    $tobool2 = ($call | 0) == 0;
    $dec = $c_0 - 1 | 0;
    if ($tobool2) {
      $c_0 = $dec;
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add6 = $c_0 + 1 | 0;
    if (0) {
      $col_addr_0_ph32 = $add6;
      label = 3;
      break;
    } else {
      $col_addr_0_ph34 = $add6;
      label = 5;
      break;
    }
   case 9:
    $2 = HEAP16[$rspan >> 1] | 0;
    $cmp1820 = $2 << 16 >> 16 == 0;
    if ($cmp1820) {
      label = 11;
      break;
    } else {
      $i_021 = $row;
      label = 10;
      break;
    }
   case 10:
    _addPS($ps, $j_025, $i_021);
    $inc = $i_021 + 1 | 0;
    $3 = HEAP16[$rspan >> 1] | 0;
    $conv16 = $3 & 65535;
    $add17 = $conv16 + $row | 0;
    $cmp18 = ($inc | 0) < ($add17 | 0);
    if ($cmp18) {
      $i_021 = $inc;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $inc24 = $j_025 + 1 | 0;
    $4 = HEAP16[$cspan >> 1] | 0;
    $conv10 = $4 & 65535;
    $add11 = $conv10 + $col_addr_0_ph32 | 0;
    $cmp12 = ($inc24 | 0) < ($add11 | 0);
    if ($cmp12) {
      $j_025 = $inc24;
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    return $col_addr_0_ph32 | 0;
  }
  return 0;
}
function _size_html_img($img, $env) {
  $img = $img | 0;
  $env = $env | 0;
  var $tmp = 0, $g = 0, $0 = 0, $src = 0, $1 = 0, $b_sroa_2_8__idx = 0, $b_sroa_2_8_copyload = 0, $b_sroa_3_12__idx3 = 0, $b_sroa_3_12_copyload = 0, $cmp = 0, $cmp6 = 0, $or_cond = 0, $2 = 0, $call = 0, $3 = 0, $has_images = 0, $phitmp = 0.0, $phitmp10 = 0.0, $b_sroa_2_0 = 0.0, $b_sroa_3_0 = 0.0, $rv_0 = 0, $x28 = 0, $4 = 0, $y34 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $g = $env + 44 | 0;
    $0 = HEAP32[$g >> 2] | 0;
    $src = $img + 32 | 0;
    $1 = HEAP32[$src >> 2] | 0;
    _gvusershape_size($tmp, $0, $1);
    $b_sroa_2_8__idx = $tmp | 0;
    $b_sroa_2_8_copyload = HEAP32[$b_sroa_2_8__idx >> 2] | 0;
    $b_sroa_3_12__idx3 = $tmp + 4 | 0;
    $b_sroa_3_12_copyload = HEAP32[$b_sroa_3_12__idx3 >> 2] | 0;
    $cmp = ($b_sroa_2_8_copyload | 0) == -1;
    $cmp6 = ($b_sroa_3_12_copyload | 0) == -1;
    $or_cond = $cmp & $cmp6;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = HEAP32[$src >> 2] | 0;
    $call = _agerr(1, 147528, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $2, tempInt) | 0) | 0;
    $rv_0 = 1;
    $b_sroa_3_0 = 0.0;
    $b_sroa_2_0 = 0.0;
    label = 5;
    break;
   case 4:
    $3 = HEAP32[$g >> 2] | 0;
    $has_images = $3 + 154 | 0;
    HEAP8[$has_images] = 1;
    $phitmp = +($b_sroa_2_8_copyload | 0);
    $phitmp10 = +($b_sroa_3_12_copyload | 0);
    $rv_0 = 0;
    $b_sroa_3_0 = $phitmp10;
    $b_sroa_2_0 = $phitmp;
    label = 5;
    break;
   case 5:
    $x28 = $img + 16 | 0;
    $4 = $img;
    _memset($4 | 0, 0, 16);
    HEAPF64[$x28 >> 3] = $b_sroa_2_0;
    $y34 = $img + 24 | 0;
    HEAPF64[$y34 >> 3] = $b_sroa_3_0;
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _portToCell($cp, $id) {
  $cp = $cp | 0;
  $id = $id | 0;
  var $port = 0, $0 = 0, $tobool = 0, $data = 0, $call = 0, $cmp = 0, $kind = 0, $1 = 0, $cmp4 = 0, $tbl = 0, $2 = 0, $call8 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $port = $cp + 4 | 0;
    $0 = HEAP32[$port >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $data = $cp | 0;
    $call = _strcasecmp($0, $id) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      $rv_0 = $data;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $kind = $cp + 84 | 0;
    $1 = HEAP8[$kind] | 0;
    $cmp4 = $1 << 24 >> 24 == 1;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      $rv_0 = 0;
      label = 6;
      break;
    }
   case 5:
    $tbl = $cp + 80 | 0;
    $2 = HEAP32[$tbl >> 2] | 0;
    $call8 = _portToTbl($2, $id) | 0;
    $rv_0 = $call8;
    label = 6;
    break;
   case 6:
    return $rv_0 | 0;
  }
  return 0;
}
function _free_html_cell($cp) {
  $cp = $cp | 0;
  _free_html_label($cp + 80 | 0, 0);
  _free_html_data($cp | 0);
  _free($cp);
  return;
}
function _graphSize($g, $nn, $ne) {
  $g = $g | 0;
  $nn = $nn | 0;
  $ne = $ne | 0;
  var $nlist = 0, $n_09 = 0, $tobool10 = 0, $n_013 = 0, $nedges_012 = 0, $nnodes_011 = 0, $inc = 0, $list = 0, $0 = 0, $1 = 0, $tobool36 = 0, $2 = 0, $i_08 = 0, $nedges_17 = 0, $inc5 = 0, $inc6 = 0, $arrayidx = 0, $3 = 0, $tobool3 = 0, $nedges_1_lcssa = 0, $next = 0, $n_0 = 0, $tobool = 0, $nedges_0_lcssa = 0, $nnodes_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_09 = HEAP32[$nlist >> 2] | 0;
    $tobool10 = ($n_09 | 0) == 0;
    if ($tobool10) {
      $nnodes_0_lcssa = 0;
      $nedges_0_lcssa = 0;
      label = 7;
      break;
    } else {
      $nnodes_011 = 0;
      $nedges_012 = 0;
      $n_013 = $n_09;
      label = 3;
      break;
    }
   case 3:
    $inc = $nnodes_011 + 1 | 0;
    $list = $n_013 + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool36 = ($1 | 0) == 0;
    if ($tobool36) {
      $nedges_1_lcssa = $nedges_012;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP32[$list >> 2] | 0;
    $nedges_17 = $nedges_012;
    $i_08 = 0;
    label = 5;
    break;
   case 5:
    $inc5 = $nedges_17 + 1 | 0;
    $inc6 = $i_08 + 1 | 0;
    $arrayidx = $2 + ($inc6 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $tobool3 = ($3 | 0) == 0;
    if ($tobool3) {
      $nedges_1_lcssa = $inc5;
      label = 6;
      break;
    } else {
      $nedges_17 = $inc5;
      $i_08 = $inc6;
      label = 5;
      break;
    }
   case 6:
    $next = $n_013 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      $nnodes_0_lcssa = $inc;
      $nedges_0_lcssa = $nedges_1_lcssa;
      label = 7;
      break;
    } else {
      $nnodes_011 = $inc;
      $nedges_012 = $nedges_1_lcssa;
      $n_013 = $n_0;
      label = 3;
      break;
    }
   case 7:
    HEAP32[$nn >> 2] = $nnodes_0_lcssa;
    HEAP32[$ne >> 2] = $nedges_0_lcssa;
    return;
  }
}
function _emit_htextparas($job, $nparas, $paras, $p, $halfwidth_x, $finfo, $b) {
  $job = $job | 0;
  $nparas = $nparas | 0;
  $paras = $paras | 0;
  $p = $p | 0;
  $halfwidth_x = +$halfwidth_x;
  $finfo = $finfo | 0;
  $b = $b | 0;
  var $tl = 0, $p_ = 0, $0 = 0, $$etemp$0$0 = 0, $$etemp$0$1 = 0, $st$1$0 = 0, $st$2$1 = 0, $x = 0, $1 = 0.0, $sub = 0.0, $add = 0.0, $y = 0, $2 = 0.0, $y1 = 0, $3 = 0.0, $y2 = 0, $4 = 0.0, $sub3 = 0.0, $div = 0.0, $add4 = 0.0, $y5 = 0, $cmp41 = 0, $size33 = 0, $name43 = 0, $color54 = 0, $str56 = 0, $fontname = 0, $fontsize = 0, $yoffset_layout57 = 0, $yoffset_centerline = 0, $postscript_alias58 = 0, $layout59 = 0, $width = 0, $height = 0, $just63 = 0, $x65 = 0, $i_042 = 0, $just = 0, $5 = 0, $conv = 0, $size = 0, $6 = 0.0, $sub9 = 0.0, $size13 = 0, $7 = 0.0, $div14 = 0.0, $sub15 = 0.0, $lfsize = 0, $8 = 0.0, $9 = 0.0, $sub19 = 0.0, $nitems = 0, $10 = 0, $cmp2438 = 0, $items = 0, $11 = 0, $ti_040 = 0, $j_039 = 0, $font = 0, $12 = 0, $tobool = 0, $size28 = 0, $13 = 0.0, $cmp29 = 0, $14 = 0.0, $fsize__0 = 0.0, $15 = 0, $tobool35 = 0, $name = 0, $16 = 0, $tobool38 = 0, $17 = 0, $fname__0 = 0, $18 = 0, $tobool46 = 0, $color = 0, $19 = 0, $tobool49 = 0, $20 = 0, $fcolor__0 = 0, $str = 0, $21 = 0, $yoffset_layout = 0, $22 = 0.0, $postscript_alias = 0, $23 = 0, $layout = 0, $24 = 0, $size60 = 0, $25 = 0.0, $26 = 0.0, $27 = 0.0, $28 = 0.0, $29 = 0.0, $add68 = 0.0, $incdec_ptr = 0, $inc = 0, $30 = 0, $conv23 = 0, $cmp24 = 0, $inc70 = 0, $cmp = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $finfo;
  $finfo = STACKTOP;
  STACKTOP = STACKTOP + 24 | 0;
  HEAP32[$finfo >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$finfo + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$finfo + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$finfo + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  HEAP32[$finfo + 16 >> 2] = HEAP32[tempParam + 16 >> 2] | 0;
  HEAP32[$finfo + 20 >> 2] = HEAP32[tempParam + 20 >> 2] | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tl = __stackBase__ | 0;
    $p_ = __stackBase__ + 80 | 0;
    $0 = $p_;
    $$etemp$0$0 = 0;
    $$etemp$0$1 = 0;
    $st$1$0 = $0 | 0;
    HEAP32[$st$1$0 >> 2] = $$etemp$0$0;
    $st$2$1 = $0 + 4 | 0;
    HEAP32[$st$2$1 >> 2] = $$etemp$0$1;
    $x = $p | 0;
    $1 = +HEAPF64[$x >> 3];
    $sub = $1 - $halfwidth_x;
    $add = $1 + $halfwidth_x;
    $y = $p + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y1 = $b + 24 | 0;
    $3 = +HEAPF64[$y1 >> 3];
    $y2 = $b + 8 | 0;
    $4 = +HEAPF64[$y2 >> 3];
    $sub3 = $3 - $4;
    $div = $sub3 * .5;
    $add4 = $2 + $div;
    $y5 = $p_ + 8 | 0;
    HEAPF64[$y5 >> 3] = $add4;
    _gvrender_begin_label($job, 1);
    $cmp41 = ($nparas | 0) > 0;
    if ($cmp41) {
      label = 3;
      break;
    } else {
      label = 21;
      break;
    }
   case 3:
    $size33 = $finfo + 16 | 0;
    $name43 = $finfo | 0;
    $color54 = $finfo + 4 | 0;
    $str56 = $tl | 0;
    $fontname = $tl + 20 | 0;
    $fontsize = $tl + 24 | 0;
    $yoffset_layout57 = $tl + 40 | 0;
    $yoffset_centerline = $tl + 48 | 0;
    $postscript_alias58 = $tl + 4 | 0;
    $layout59 = $tl + 8 | 0;
    $width = $tl + 56 | 0;
    $height = $tl + 64 | 0;
    $just63 = $tl + 72 | 0;
    $x65 = $p_ | 0;
    $i_042 = 0;
    label = 4;
    break;
   case 4:
    $just = $paras + ($i_042 * 24 & -1) + 6 | 0;
    $5 = HEAP8[$just] | 0;
    $conv = $5 << 24 >> 24;
    if (($conv | 0) == 108) {
      label = 5;
      break;
    } else if (($conv | 0) == 114) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    HEAPF64[$x >> 3] = $sub;
    label = 8;
    break;
   case 6:
    $size = $paras + ($i_042 * 24 & -1) + 8 | 0;
    $6 = +HEAPF64[$size >> 3];
    $sub9 = $add - $6;
    HEAPF64[$x >> 3] = $sub9;
    label = 8;
    break;
   case 7:
    $size13 = $paras + ($i_042 * 24 & -1) + 8 | 0;
    $7 = +HEAPF64[$size13 >> 3];
    $div14 = $7 * .5;
    $sub15 = $1 - $div14;
    HEAPF64[$x >> 3] = $sub15;
    label = 8;
    break;
   case 8:
    $lfsize = $paras + ($i_042 * 24 & -1) + 16 | 0;
    $8 = +HEAPF64[$lfsize >> 3];
    $9 = +HEAPF64[$y5 >> 3];
    $sub19 = $9 - $8;
    HEAPF64[$y5 >> 3] = $sub19;
    $nitems = $paras + ($i_042 * 24 & -1) + 4 | 0;
    $10 = HEAP16[$nitems >> 1] | 0;
    $cmp2438 = $10 << 16 >> 16 > 0;
    if ($cmp2438) {
      label = 9;
      break;
    } else {
      label = 20;
      break;
    }
   case 9:
    $items = $paras + ($i_042 * 24 & -1) | 0;
    $11 = HEAP32[$items >> 2] | 0;
    $j_039 = 0;
    $ti_040 = $11;
    label = 10;
    break;
   case 10:
    $font = $ti_040 + 16 | 0;
    $12 = HEAP32[$font >> 2] | 0;
    $tobool = ($12 | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $size28 = $12 + 16 | 0;
    $13 = +HEAPF64[$size28 >> 3];
    $cmp29 = $13 > 0.0;
    if ($cmp29) {
      $fsize__0 = $13;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $14 = +HEAPF64[$size33 >> 3];
    $fsize__0 = $14;
    label = 13;
    break;
   case 13:
    $15 = HEAP32[$font >> 2] | 0;
    $tobool35 = ($15 | 0) == 0;
    if ($tobool35) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $name = $15 | 0;
    $16 = HEAP32[$name >> 2] | 0;
    $tobool38 = ($16 | 0) == 0;
    if ($tobool38) {
      label = 15;
      break;
    } else {
      $fname__0 = $16;
      label = 16;
      break;
    }
   case 15:
    $17 = HEAP32[$name43 >> 2] | 0;
    $fname__0 = $17;
    label = 16;
    break;
   case 16:
    $18 = HEAP32[$font >> 2] | 0;
    $tobool46 = ($18 | 0) == 0;
    if ($tobool46) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $color = $18 + 4 | 0;
    $19 = HEAP32[$color >> 2] | 0;
    $tobool49 = ($19 | 0) == 0;
    if ($tobool49) {
      label = 18;
      break;
    } else {
      $fcolor__0 = $19;
      label = 19;
      break;
    }
   case 18:
    $20 = HEAP32[$color54 >> 2] | 0;
    $fcolor__0 = $20;
    label = 19;
    break;
   case 19:
    _gvrender_set_pencolor($job, $fcolor__0);
    $str = $ti_040 | 0;
    $21 = HEAP32[$str >> 2] | 0;
    HEAP32[$str56 >> 2] = $21;
    HEAP32[$fontname >> 2] = $fname__0;
    HEAPF64[$fontsize >> 3] = $fsize__0;
    $yoffset_layout = $ti_040 + 40 | 0;
    $22 = +HEAPF64[$yoffset_layout >> 3];
    HEAPF64[$yoffset_layout57 >> 3] = $22;
    HEAPF64[$yoffset_centerline >> 3] = 1.0;
    $postscript_alias = $ti_040 + 4 | 0;
    $23 = HEAP32[$postscript_alias >> 2] | 0;
    HEAP32[$postscript_alias58 >> 2] = $23;
    $layout = $ti_040 + 8 | 0;
    $24 = HEAP32[$layout >> 2] | 0;
    HEAP32[$layout59 >> 2] = $24;
    $size60 = $ti_040 + 32 | 0;
    $25 = +HEAPF64[$size60 >> 3];
    HEAPF64[$width >> 3] = $25;
    $26 = +HEAPF64[$lfsize >> 3];
    HEAPF64[$height >> 3] = $26;
    HEAP8[$just63] = 108;
    $27 = +HEAPF64[$x >> 3];
    HEAPF64[$x65 >> 3] = $27;
    _gvrender_textpara($job, $p_, $tl);
    $28 = +HEAPF64[$size60 >> 3];
    $29 = +HEAPF64[$x >> 3];
    $add68 = $28 + $29;
    HEAPF64[$x >> 3] = $add68;
    $incdec_ptr = $ti_040 + 80 | 0;
    $inc = $j_039 + 1 | 0;
    $30 = HEAP16[$nitems >> 1] | 0;
    $conv23 = $30 << 16 >> 16;
    $cmp24 = ($inc | 0) < ($conv23 | 0);
    if ($cmp24) {
      $j_039 = $inc;
      $ti_040 = $incdec_ptr;
      label = 10;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $inc70 = $i_042 + 1 | 0;
    $cmp = ($inc70 | 0) < ($nparas | 0);
    if ($cmp) {
      $i_042 = $inc70;
      label = 4;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    _gvrender_end_label($job);
    STACKTOP = __stackBase__;
    return;
  }
}
function _initAnchor($job, $env, $data, $b, $save, $closePrev) {
  $job = $job | 0;
  $env = $env | 0;
  $data = $data | 0;
  $b = $b | 0;
  $save = $save | 0;
  $closePrev = $closePrev | 0;
  var $xb = 0, $intbuf = 0, $buf = 0, $obj1 = 0, $0 = 0, $url = 0, $1 = 0, $url2 = 0, $tooltip = 0, $2 = 0, $tooltip3 = 0, $target = 0, $3 = 0, $target4 = 0, $id5 = 0, $4 = 0, $id6 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $bf_val_sext = 0, $conv = 0, $explicit_tooltip = 0, $id7 = 0, $9 = 0, $tobool = 0, $10 = 0, $tobool8 = 0, $arraydecay = 0, $objid = 0, $11 = 0, $tobool9 = 0, $u = 0, $n = 0, $12 = 0, $13 = 0, $call = 0, $call11 = 0, $objid_set = 0, $14 = 0, $call14 = 0, $arraydecay15 = 0, $15 = 0, $inc = 0, $call16 = 0, $call18 = 0, $ptr = 0, $16 = 0, $eptr = 0, $17 = 0, $cmp = 0, $call20 = 0, $18 = 0, $buf22 = 0, $19 = 0, $id_0 = 0, $internalId_0 = 0, $href = 0, $20 = 0, $title = 0, $21 = 0, $target25 = 0, $22 = 0, $g = 0, $23 = 0, $24 = 0, $call27 = 0, $tobool31 = 0, $tobool33 = 0, $25 = 0, $tobool35 = 0, $26 = 0, $tobool39 = 0, $27 = 0, $tobool43 = 0, $28 = 0, $_mask = 0, $tobool48 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 176 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $xb = __stackBase__ | 0;
    $intbuf = __stackBase__ + 16 | 0;
    $buf = __stackBase__ + 48 | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url = $0 + 160 | 0;
    $1 = HEAP32[$url >> 2] | 0;
    $url2 = $save | 0;
    HEAP32[$url2 >> 2] = $1;
    $tooltip = $0 + 180 | 0;
    $2 = HEAP32[$tooltip >> 2] | 0;
    $tooltip3 = $save + 4 | 0;
    HEAP32[$tooltip3 >> 2] = $2;
    $target = $0 + 196 | 0;
    $3 = HEAP32[$target >> 2] | 0;
    $target4 = $save + 8 | 0;
    HEAP32[$target4 >> 2] = $3;
    $id5 = $0 + 164 | 0;
    $4 = HEAP32[$id5 >> 2] | 0;
    $id6 = $save + 12 | 0;
    HEAP32[$id6 >> 2] = $4;
    $5 = $0 + 212 | 0;
    $6 = $5;
    $7 = HEAP32[$6 >> 2] | 0;
    $8 = $7 << 31;
    $bf_val_sext = $8 >> 31;
    $conv = $bf_val_sext & 255;
    $explicit_tooltip = $save + 16 | 0;
    HEAP8[$explicit_tooltip] = $conv;
    $id7 = $data + 16 | 0;
    $9 = HEAP32[$id7 >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $10 = HEAP8[$9] | 0;
    $tobool8 = $10 << 24 >> 24 == 0;
    if ($tobool8) {
      label = 4;
      break;
    } else {
      $internalId_0 = 0;
      $id_0 = $9;
      label = 9;
      break;
    }
   case 4:
    $arraydecay = $buf | 0;
    _agxbinit($xb, 128, $arraydecay);
    $objid = $env + 52 | 0;
    $11 = HEAP32[$objid >> 2] | 0;
    $tobool9 = ($11 | 0) == 0;
    if ($tobool9) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $u = $0 + 8 | 0;
    $n = $u;
    $12 = HEAP32[$n >> 2] | 0;
    $13 = $12 | 0;
    $call = _getObjId($job, $13, $xb) | 0;
    $call11 = _strdup($call | 0) | 0;
    HEAP32[$objid >> 2] = $call11;
    $objid_set = $env + 56 | 0;
    HEAP8[$objid_set] = 1;
    label = 6;
    break;
   case 6:
    $14 = HEAP32[$objid >> 2] | 0;
    $call14 = _agxbput($xb, $14) | 0;
    $arraydecay15 = $intbuf | 0;
    $15 = HEAP32[3192] | 0;
    $inc = $15 + 1 | 0;
    HEAP32[3192] = $inc;
    $call16 = _sprintf($arraydecay15 | 0, 113208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $15, tempInt) | 0) | 0;
    $call18 = _agxbput($xb, $arraydecay15) | 0;
    $ptr = $xb + 4 | 0;
    $16 = HEAP32[$ptr >> 2] | 0;
    $eptr = $xb + 8 | 0;
    $17 = HEAP32[$eptr >> 2] | 0;
    $cmp = $16 >>> 0 < $17 >>> 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call20 = _agxbmore($xb, 1) | 0;
    label = 8;
    break;
   case 8:
    $18 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$18] = 0;
    $buf22 = $xb | 0;
    $19 = HEAP32[$buf22 >> 2] | 0;
    HEAP32[$ptr >> 2] = $19;
    $internalId_0 = 1;
    $id_0 = $19;
    label = 9;
    break;
   case 9:
    $href = $data | 0;
    $20 = HEAP32[$href >> 2] | 0;
    $title = $data + 12 | 0;
    $21 = HEAP32[$title >> 2] | 0;
    $target25 = $data + 8 | 0;
    $22 = HEAP32[$target25 >> 2] | 0;
    $g = $0 + 8 | 0;
    $23 = HEAP32[$g >> 2] | 0;
    $24 = $23 | 0;
    $call27 = _initMapData($job, 0, $20, $21, $22, $id_0, $24) | 0;
    if ($internalId_0) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _agxbfree($xb);
    label = 11;
    break;
   case 11:
    $tobool31 = ($call27 | 0) == 0;
    if ($tobool31) {
      label = 19;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $tobool33 = ($closePrev | 0) == 0;
    if ($tobool33) {
      label = 16;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $25 = HEAP32[$url2 >> 2] | 0;
    $tobool35 = ($25 | 0) == 0;
    if ($tobool35) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $26 = HEAP8[$explicit_tooltip] | 0;
    $tobool39 = $26 << 24 >> 24 == 0;
    if ($tobool39) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    _gvrender_end_anchor($job);
    label = 16;
    break;
   case 16:
    $27 = HEAP32[$url >> 2] | 0;
    $tobool43 = ($27 | 0) == 0;
    if ($tobool43) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $28 = HEAP32[$6 >> 2] | 0;
    $_mask = $28 & 1;
    $tobool48 = ($_mask | 0) == 0;
    if ($tobool48) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    _emit_map_rect($job, $b);
    $29 = HEAP32[$url >> 2] | 0;
    $30 = HEAP32[$tooltip >> 2] | 0;
    $31 = HEAP32[$target >> 2] | 0;
    $32 = HEAP32[$id5 >> 2] | 0;
    _gvrender_begin_anchor($job, $29, $30, $31, $32);
    label = 19;
    break;
   case 19:
    STACKTOP = __stackBase__;
    return $call27 | 0;
  }
  return 0;
}
function _doFill($job, $color, $BF) {
  $job = $job | 0;
  $color = $color | 0;
  $BF = $BF | 0;
  var tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $BF;
  $BF = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($BF, tempParam, 32);
  _gvrender_set_fillcolor($job, $color);
  _gvrender_set_pencolor($job, $color);
  _gvrender_box($job, $BF, 1);
  STACKTOP = __stackBase__;
  return;
}
function _doBorder($job, $color, $border, $BF) {
  $job = $job | 0;
  $color = $color | 0;
  $border = $border | 0;
  $BF = $BF | 0;
  var $pt = 0, $tobool = 0, $_color = 0, $cmp = 0, $dec = 0, $UR = 0, $y = 0, $0 = 0.0, $LL = 0, $y2 = 0, $1 = 0.0, $sub = 0.0, $x = 0, $2 = 0.0, $x5 = 0, $3 = 0.0, $sub6 = 0.0, $conv = 0.0, $4 = 0.0, $x10 = 0, $5 = 0.0, $y13 = 0, $sub14 = 0, $conv15 = 0.0, $sub19 = 0.0, $6 = 0.0, $7 = 0.0, $sub26 = 0.0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $BF;
  $BF = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($BF, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pt = __stackBase__ | 0;
    $tobool = ($color | 0) == 0;
    $_color = $tobool ? 121304 : $color;
    _gvrender_set_fillcolor($job, $_color);
    _gvrender_set_pencolor($job, $_color);
    $cmp = ($border | 0) == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _gvrender_box($job, $BF, 0);
    label = 5;
    break;
   case 4:
    $dec = $border - 1 | 0;
    $UR = $BF + 16 | 0;
    $y = $BF + 24 | 0;
    $0 = +HEAPF64[$y >> 3];
    $LL = $BF | 0;
    $y2 = $BF + 8 | 0;
    $1 = +HEAPF64[$y2 >> 3];
    $sub = $0 - $1;
    $x = $UR | 0;
    $2 = +HEAPF64[$x >> 3];
    $x5 = $BF | 0;
    $3 = +HEAPF64[$x5 >> 3];
    $sub6 = $2 - $3;
    $conv = +($dec | 0);
    _doSide($job, $LL, $conv, $sub);
    $4 = +HEAPF64[$x5 >> 3];
    $x10 = $pt | 0;
    HEAPF64[$x10 >> 3] = $4;
    $5 = +HEAPF64[$y >> 3];
    $y13 = $pt + 8 | 0;
    HEAPF64[$y13 >> 3] = $5;
    $sub14 = 1 - $border | 0;
    $conv15 = +($sub14 | 0);
    _doSide($job, $pt, $sub6, $conv15);
    $sub19 = -0.0 - $sub;
    _doSide($job, $UR, $conv15, $sub19);
    $6 = +HEAPF64[$x >> 3];
    HEAPF64[$x10 >> 3] = $6;
    $7 = +HEAPF64[$y2 >> 3];
    HEAPF64[$y13 >> 3] = $7;
    $sub26 = -0.0 - $sub6;
    _doSide($job, $pt, $sub26, $conv);
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _emit_html_cell($job, $cp, $env) {
  $job = $job | 0;
  $cp = $cp | 0;
  $env = $env | 0;
  var $saved = 0, $pts = 0, $data = 0, $box = 0, $0 = 0, $1 = 0, $pos_sroa_0_0__idx = 0, $pos_sroa_0_0_copyload = 0.0, $pos_sroa_1_8__idx4 = 0, $pos_sroa_1_8_copyload = 0.0, $href = 0, $2 = 0, $tobool = 0, $target = 0, $3 = 0, $tobool4 = 0, $4 = 0, $x5 = 0, $5 = 0.0, $add = 0.0, $x7 = 0, $6 = 0.0, $add8 = 0.0, $y10 = 0, $7 = 0.0, $add11 = 0.0, $y14 = 0, $8 = 0.0, $add15 = 0.0, $flags = 0, $9 = 0, $and = 0, $tobool17 = 0, $call = 0, $inAnchor_0 = 0, $bgcolor = 0, $10 = 0, $tobool20 = 0, $border = 0, $11 = 0, $tobool26 = 0, $pencolor = 0, $12 = 0, $conv = 0, $child = 0, $kind = 0, $13 = 0, $tbl = 0, $14 = 0, $img = 0, $15 = 0, $txt = 0, $16 = 0, $tobool50 = 0, $flags55 = 0, $17 = 0, $and56 = 0, $tobool57 = 0, $call60 = 0, $tobool61 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 72 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $saved = __stackBase__ | 0;
    $pts = __stackBase__ + 40 | 0;
    $data = $cp | 0;
    $box = $cp + 40 | 0;
    $0 = $pts;
    $1 = $box;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    HEAP32[$0 + 16 >> 2] = HEAP32[$1 + 16 >> 2] | 0;
    HEAP32[$0 + 20 >> 2] = HEAP32[$1 + 20 >> 2] | 0;
    HEAP32[$0 + 24 >> 2] = HEAP32[$1 + 24 >> 2] | 0;
    HEAP32[$0 + 28 >> 2] = HEAP32[$1 + 28 >> 2] | 0;
    $pos_sroa_0_0__idx = $env | 0;
    $pos_sroa_0_0_copyload = +HEAPF64[$pos_sroa_0_0__idx >> 3];
    $pos_sroa_1_8__idx4 = $env + 8 | 0;
    $pos_sroa_1_8_copyload = +HEAPF64[$pos_sroa_1_8__idx4 >> 3];
    $href = $cp | 0;
    $2 = HEAP32[$href >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $4 = 1;
      label = 4;
      break;
    }
   case 3:
    $target = $cp + 8 | 0;
    $3 = HEAP32[$target >> 2] | 0;
    $tobool4 = ($3 | 0) != 0;
    $4 = $tobool4;
    label = 4;
    break;
   case 4:
    $x5 = $pts | 0;
    $5 = +HEAPF64[$x5 >> 3];
    $add = $pos_sroa_0_0_copyload + $5;
    HEAPF64[$x5 >> 3] = $add;
    $x7 = $pts + 16 | 0;
    $6 = +HEAPF64[$x7 >> 3];
    $add8 = $pos_sroa_0_0_copyload + $6;
    HEAPF64[$x7 >> 3] = $add8;
    $y10 = $pts + 8 | 0;
    $7 = +HEAPF64[$y10 >> 3];
    $add11 = $pos_sroa_1_8_copyload + $7;
    HEAPF64[$y10 >> 3] = $add11;
    $y14 = $pts + 24 | 0;
    $8 = +HEAPF64[$y14 >> 3];
    $add15 = $pos_sroa_1_8_copyload + $8;
    HEAPF64[$y14 >> 3] = $add15;
    if ($4) {
      label = 5;
      break;
    } else {
      $inAnchor_0 = 0;
      label = 7;
      break;
    }
   case 5:
    $flags = $job + 152 | 0;
    $9 = HEAP32[$flags >> 2] | 0;
    $and = $9 & 4;
    $tobool17 = ($and | 0) == 0;
    if ($tobool17) {
      label = 6;
      break;
    } else {
      $inAnchor_0 = 0;
      label = 7;
      break;
    }
   case 6:
    $call = _initAnchor($job, $env, $data, $pts, $saved, 1) | 0;
    $inAnchor_0 = $call;
    label = 7;
    break;
   case 7:
    $bgcolor = $cp + 20 | 0;
    $10 = HEAP32[$bgcolor >> 2] | 0;
    $tobool20 = ($10 | 0) == 0;
    if ($tobool20) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _doFill($job, $10, $pts);
    label = 9;
    break;
   case 9:
    $border = $cp + 29 | 0;
    $11 = HEAP8[$border] | 0;
    $tobool26 = $11 << 24 >> 24 == 0;
    if ($tobool26) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $pencolor = $cp + 24 | 0;
    $12 = HEAP32[$pencolor >> 2] | 0;
    $conv = $11 & 255;
    _doBorder($job, $12, $conv, $pts);
    label = 11;
    break;
   case 11:
    $child = $cp + 80 | 0;
    $kind = $cp + 84 | 0;
    $13 = HEAP8[$kind] | 0;
    if (($13 << 24 >> 24 | 0) == 1) {
      label = 12;
      break;
    } else if (($13 << 24 >> 24 | 0) == 3) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $tbl = $child | 0;
    $14 = HEAP32[$tbl >> 2] | 0;
    _emit_html_tbl($job, $14, $env);
    label = 15;
    break;
   case 13:
    $img = $child;
    $15 = HEAP32[$img >> 2] | 0;
    _emit_html_img($job, $15, $env);
    label = 15;
    break;
   case 14:
    $txt = $child;
    $16 = HEAP32[$txt >> 2] | 0;
    _emit_html_txt($job, $16, $env);
    label = 15;
    break;
   case 15:
    $tobool50 = ($inAnchor_0 | 0) == 0;
    if ($tobool50) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _endAnchor($job, $saved, 1);
    label = 17;
    break;
   case 17:
    if ($4) {
      label = 18;
      break;
    } else {
      label = 21;
      break;
    }
   case 18:
    $flags55 = $job + 152 | 0;
    $17 = HEAP32[$flags55 >> 2] | 0;
    $and56 = $17 & 4;
    $tobool57 = ($and56 | 0) == 0;
    if ($tobool57) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $call60 = _initAnchor($job, $env, $data, $pts, $saved, 0) | 0;
    $tobool61 = ($call60 | 0) == 0;
    if ($tobool61) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    _endAnchor($job, $saved, 0);
    label = 21;
    break;
   case 21:
    STACKTOP = __stackBase__;
    return;
  }
}
function _endAnchor($job, $save, $openPrev) {
  $job = $job | 0;
  $save = $save | 0;
  $openPrev = $openPrev | 0;
  var $obj1 = 0, $0 = 0, $url = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $4 = 0, $_mask = 0, $tobool2 = 0, $5 = 0, $url4 = 0, $6 = 0, $cmp = 0, $7 = 0, $tooltip = 0, $8 = 0, $tooltip10 = 0, $9 = 0, $cmp11 = 0, $10 = 0, $target = 0, $11 = 0, $target17 = 0, $12 = 0, $cmp18 = 0, $13 = 0, $id = 0, $14 = 0, $id24 = 0, $15 = 0, $cmp25 = 0, $16 = 0, $explicit_tooltip = 0, $17 = 0, $conv = 0, $bf_value = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $tobool32 = 0, $23 = 0, $tobool34 = 0, $tobool39 = 0, $or_cond = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url = $0 + 160 | 0;
    $1 = HEAP32[$url >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = $0 + 212 | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $_mask = $4 & 1;
    $tobool2 = ($_mask | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _gvrender_end_anchor($job);
    label = 5;
    break;
   case 5:
    $5 = HEAP32[$url >> 2] | 0;
    $url4 = $save | 0;
    $6 = HEAP32[$url4 >> 2] | 0;
    $cmp = ($5 | 0) == ($6 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($5);
    $7 = HEAP32[$url4 >> 2] | 0;
    HEAP32[$url >> 2] = $7;
    label = 7;
    break;
   case 7:
    $tooltip = $0 + 180 | 0;
    $8 = HEAP32[$tooltip >> 2] | 0;
    $tooltip10 = $save + 4 | 0;
    $9 = HEAP32[$tooltip10 >> 2] | 0;
    $cmp11 = ($8 | 0) == ($9 | 0);
    if ($cmp11) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free($8);
    $10 = HEAP32[$tooltip10 >> 2] | 0;
    HEAP32[$tooltip >> 2] = $10;
    label = 9;
    break;
   case 9:
    $target = $0 + 196 | 0;
    $11 = HEAP32[$target >> 2] | 0;
    $target17 = $save + 8 | 0;
    $12 = HEAP32[$target17 >> 2] | 0;
    $cmp18 = ($11 | 0) == ($12 | 0);
    if ($cmp18) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _free($11);
    $13 = HEAP32[$target17 >> 2] | 0;
    HEAP32[$target >> 2] = $13;
    label = 11;
    break;
   case 11:
    $id = $0 + 164 | 0;
    $14 = HEAP32[$id >> 2] | 0;
    $id24 = $save + 12 | 0;
    $15 = HEAP32[$id24 >> 2] | 0;
    $cmp25 = ($14 | 0) == ($15 | 0);
    if ($cmp25) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _free($14);
    $16 = HEAP32[$id24 >> 2] | 0;
    HEAP32[$id >> 2] = $16;
    label = 13;
    break;
   case 13:
    $explicit_tooltip = $save + 16 | 0;
    $17 = HEAP8[$explicit_tooltip] | 0;
    $conv = $17 & 255;
    $bf_value = $conv & 1;
    $18 = $0 + 212 | 0;
    $19 = $18;
    $20 = HEAP32[$19 >> 2] | 0;
    $21 = $20 & -2;
    $22 = $21 | $bf_value;
    HEAP32[$19 >> 2] = $22;
    $tobool32 = ($openPrev | 0) == 0;
    if ($tobool32) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $23 = HEAP32[$url >> 2] | 0;
    $tobool34 = ($23 | 0) == 0;
    $tobool39 = ($bf_value | 0) == 0;
    $or_cond = $tobool34 & $tobool39;
    if ($or_cond) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $24 = HEAP32[$url >> 2] | 0;
    $25 = HEAP32[$tooltip >> 2] | 0;
    $26 = HEAP32[$target >> 2] | 0;
    $27 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $24, $25, $26, $27);
    label = 16;
    break;
   case 16:
    return;
  }
}
function _emit_html_img($job, $cp, $env) {
  $job = $job | 0;
  $cp = $cp | 0;
  $env = $env | 0;
  var $A = 0, $bb_sroa_0_0__idx = 0, $bb_sroa_0_0_copyload = 0.0, $bb_sroa_1_8__idx3 = 0, $bb_sroa_1_8_copyload = 0.0, $bb_sroa_2_16__idx6 = 0, $bb_sroa_2_16_copyload = 0.0, $bb_sroa_3_24__idx8 = 0, $bb_sroa_3_24_copyload = 0.0, $x = 0, $0 = 0.0, $add = 0.0, $y = 0, $1 = 0.0, $add5 = 0.0, $add9 = 0.0, $add14 = 0.0, $bb_sroa_2_16__idx = 0, $bb_sroa_3_24__idx9 = 0, $bb_sroa_0_0__idx1 = 0, $bb_sroa_1_8__idx4 = 0, $2 = 0.0, $x21 = 0, $arrayidx22 = 0, $3 = 0.0, $y25 = 0, $4 = 0.0, $x29 = 0, $5 = 0.0, $y33 = 0, $scale34 = 0, $6 = 0, $tobool = 0, $imgscale = 0, $7 = 0, $scale_0 = 0, $src = 0, $8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $A = __stackBase__ | 0;
    $bb_sroa_0_0__idx = $cp | 0;
    $bb_sroa_0_0_copyload = +HEAPF64[$bb_sroa_0_0__idx >> 3];
    $bb_sroa_1_8__idx3 = $cp + 8 | 0;
    $bb_sroa_1_8_copyload = +HEAPF64[$bb_sroa_1_8__idx3 >> 3];
    $bb_sroa_2_16__idx6 = $cp + 16 | 0;
    $bb_sroa_2_16_copyload = +HEAPF64[$bb_sroa_2_16__idx6 >> 3];
    $bb_sroa_3_24__idx8 = $cp + 24 | 0;
    $bb_sroa_3_24_copyload = +HEAPF64[$bb_sroa_3_24__idx8 >> 3];
    $x = $env | 0;
    $0 = +HEAPF64[$x >> 3];
    $add = $bb_sroa_0_0_copyload + $0;
    $y = $env + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $add5 = $bb_sroa_1_8_copyload + $1;
    $add9 = $bb_sroa_2_16_copyload + $0;
    $add14 = $bb_sroa_3_24_copyload + $1;
    $bb_sroa_2_16__idx = $A | 0;
    HEAPF64[$bb_sroa_2_16__idx >> 3] = $add9;
    $bb_sroa_3_24__idx9 = $A + 8 | 0;
    HEAPF64[$bb_sroa_3_24__idx9 >> 3] = $add14;
    $bb_sroa_0_0__idx1 = $A + 32 | 0;
    HEAPF64[$bb_sroa_0_0__idx1 >> 3] = $add;
    $bb_sroa_1_8__idx4 = $A + 40 | 0;
    HEAPF64[$bb_sroa_1_8__idx4 >> 3] = $add5;
    $2 = +HEAPF64[$bb_sroa_0_0__idx1 >> 3];
    $x21 = $A + 16 | 0;
    HEAPF64[$x21 >> 3] = $2;
    $arrayidx22 = $A | 0;
    $3 = +HEAPF64[$bb_sroa_3_24__idx9 >> 3];
    $y25 = $A + 24 | 0;
    HEAPF64[$y25 >> 3] = $3;
    $4 = +HEAPF64[$bb_sroa_2_16__idx >> 3];
    $x29 = $A + 48 | 0;
    HEAPF64[$x29 >> 3] = $4;
    $5 = +HEAPF64[$bb_sroa_1_8__idx4 >> 3];
    $y33 = $A + 56 | 0;
    HEAPF64[$y33 >> 3] = $5;
    $scale34 = $cp + 36 | 0;
    $6 = HEAP32[$scale34 >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $scale_0 = $6;
      label = 4;
      break;
    }
   case 3:
    $imgscale = $env + 48 | 0;
    $7 = HEAP32[$imgscale >> 2] | 0;
    $scale_0 = $7;
    label = 4;
    break;
   case 4:
    $src = $cp + 32 | 0;
    $8 = HEAP32[$src >> 2] | 0;
    _gvrender_usershape($job, $8, $arrayidx22, 4, 1, $scale_0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _doSide($job, $p, $wd, $ht) {
  $job = $job | 0;
  $p = $p | 0;
  $wd = +$wd;
  $ht = +$ht;
  var $BF = 0, $0 = 0, $1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $BF = __stackBase__ | 0;
  $0 = $BF;
  $1 = $p;
  HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
  HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
  HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
  HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
  HEAPF64[$BF + 16 >> 3] = +HEAPF64[$p >> 3] + $wd;
  HEAPF64[$BF + 24 >> 3] = +HEAPF64[$p + 8 >> 3] + $ht;
  _gvrender_box($job, $BF, 1);
  STACKTOP = __stackBase__;
  return;
}
function _rank($g, $balance, $maxiter) {
  $g = $g | 0;
  $balance = $balance | 0;
  $maxiter = $maxiter | 0;
  var $nn = 0, $ne = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $3 = 0, $call = 0, $call1 = 0, $tobool2 = 0, $cmp = 0, $4 = 0, $call7 = 0, $tobool8 = 0, $call10 = 0, $storemerge = 0, $call12 = 0, $tobool13 = 0, $iter_0 = 0, $call16 = 0, $tobool17 = 0, $call18 = 0, $inc = 0, $5 = 0, $tobool19 = 0, $rem = 0, $cmp20 = 0, $rem23 = 0, $cmp24 = 0, $6 = 0, $7 = 0, $8 = 0, $call2917 = 0, $call29 = 0, $cmp31 = 0, $9 = 0, $call34 = 0, $cmp37 = 0, $iter_1 = 0, $10 = 0, $tobool42 = 0, $cmp44 = 0, $11 = 0, $call47 = 0, $12 = 0, $13 = 0, $14 = 0, $call49 = 0.0, $call50 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nn = __stackBase__ | 0;
    $ne = __stackBase__ + 8 | 0;
    $0 = HEAP8[164912] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _graphSize($g, $nn, $ne);
    $1 = HEAP32[_stderr >> 2] | 0;
    $2 = HEAP32[$nn >> 2] | 0;
    $3 = HEAP32[$ne >> 2] | 0;
    $call = _fprintf($1 | 0, 141440, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = 102112, HEAP32[tempInt + 8 >> 2] = $2, HEAP32[tempInt + 16 >> 2] = $3, HEAP32[tempInt + 24 >> 2] = $maxiter, HEAP32[tempInt + 32 >> 2] = $balance, tempInt) | 0) | 0;
    _start_timer();
    label = 4;
    break;
   case 4:
    $call1 = _init_graph($g) | 0;
    $tobool2 = ($call1 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _init_rank();
    label = 6;
    break;
   case 6:
    $cmp = ($maxiter | 0) < 1;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    _freeTreeList();
    $retval_0 = 0;
    label = 28;
    break;
   case 8:
    $4 = $g | 0;
    $call7 = _agget($4, 120848) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      $storemerge = 30;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call10 = _atoi($call7 | 0) | 0;
    $storemerge = $call10;
    label = 10;
    break;
   case 10:
    HEAP32[41520] = $storemerge;
    $call12 = _feasible_tree() | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      $iter_0 = 0;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _freeTreeList();
    $retval_0 = 1;
    label = 28;
    break;
   case 12:
    $call16 = _leave_edge() | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      $iter_1 = $iter_0;
      label = 20;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $call18 = _enter_edge($call16) | 0;
    _update($call16, $call18);
    $inc = $iter_0 + 1 | 0;
    $5 = HEAP8[164912] | 0;
    $tobool19 = $5 << 24 >> 24 == 0;
    if ($tobool19) {
      label = 19;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $rem = ($inc | 0) % 100;
    $cmp20 = ($rem | 0) == 0;
    if ($cmp20) {
      label = 15;
      break;
    } else {
      label = 19;
      break;
    }
   case 15:
    $rem23 = ($inc | 0) % 1e3;
    $cmp24 = ($rem23 | 0) == 100;
    $6 = HEAP32[_stderr >> 2] | 0;
    if ($cmp24) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $7 = _fwrite(102112, 17, 1, $6 | 0) | 0;
    $8 = HEAP32[_stderr >> 2] | 0;
    $call2917 = _fprintf($8 | 0, 115224, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $inc, tempInt) | 0) | 0;
    label = 19;
    break;
   case 17:
    $call29 = _fprintf($6 | 0, 115224, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $inc, tempInt) | 0) | 0;
    $cmp31 = ($rem23 | 0) == 0;
    if ($cmp31) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $9 = HEAP32[_stderr >> 2] | 0;
    $call34 = _fputc(10, $9 | 0) | 0;
    label = 19;
    break;
   case 19:
    $cmp37 = ($inc | 0) < ($maxiter | 0);
    if ($cmp37) {
      $iter_0 = $inc;
      label = 12;
      break;
    } else {
      $iter_1 = $inc;
      label = 20;
      break;
    }
   case 20:
    if (($balance | 0) == 1) {
      label = 21;
      break;
    } else if (($balance | 0) == 2) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 21:
    _TB_balance();
    label = 24;
    break;
   case 22:
    _LR_balance();
    label = 24;
    break;
   case 23:
    _scan_and_normalize();
    label = 24;
    break;
   case 24:
    $10 = HEAP8[164912] | 0;
    $tobool42 = $10 << 24 >> 24 == 0;
    if ($tobool42) {
      $retval_0 = 0;
      label = 28;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $cmp44 = ($iter_1 | 0) > 99;
    if ($cmp44) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $11 = HEAP32[_stderr >> 2] | 0;
    $call47 = _fputc(10, $11 | 0) | 0;
    label = 27;
    break;
   case 27:
    $12 = HEAP32[_stderr >> 2] | 0;
    $13 = HEAP32[41584] | 0;
    $14 = HEAP32[41606] | 0;
    $call49 = +_elapsed_sec();
    $call50 = _fprintf($12 | 0, 110368, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = 102112, HEAP32[tempInt + 8 >> 2] = $13, HEAP32[tempInt + 16 >> 2] = $14, HEAP32[tempInt + 24 >> 2] = $iter_1, HEAPF64[tempInt + 32 >> 3] = $call49, tempInt) | 0) | 0;
    $retval_0 = 0;
    label = 28;
    break;
   case 28:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _leave_edge() {
  var $0 = 0, $1 = 0, $cmp20 = 0, $2 = 0, $cnt_022 = 0, $rv_021 = 0, $3 = 0, $arrayidx = 0, $4 = 0, $cutvalue = 0, $5 = 0, $cmp1 = 0, $tobool = 0, $cutvalue4 = 0, $6 = 0, $cmp7 = 0, $_rv_0 = 0, $rv_1 = 0, $inc = 0, $7 = 0, $cmp11 = 0, $rv_2 = 0, $cnt_1 = 0, $8 = 0, $inc15 = 0, $9 = 0, $cmp = 0, $cnt_0_lcssa = 0, $rv_0_lcssa = 0, $cmp16 = 0, $cnt_215 = 0, $rv_314 = 0, $storemerge13 = 0, $10 = 0, $arrayidx21 = 0, $11 = 0, $cutvalue23 = 0, $12 = 0, $cmp24 = 0, $tobool26 = 0, $cutvalue29 = 0, $13 = 0, $cmp32 = 0, $_rv_3 = 0, $rv_4 = 0, $inc38 = 0, $14 = 0, $cmp39 = 0, $rv_5 = 0, $cnt_3 = 0, $15 = 0, $inc43 = 0, $cmp19 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41522] | 0;
    $1 = HEAP32[41338] | 0;
    $cmp20 = ($0 | 0) < ($1 | 0);
    if ($cmp20) {
      $rv_021 = 0;
      $cnt_022 = 0;
      $2 = $0;
      label = 3;
      break;
    } else {
      $rv_0_lcssa = 0;
      $cnt_0_lcssa = 0;
      label = 8;
      break;
    }
   case 3:
    $3 = HEAP32[41340] | 0;
    $arrayidx = $3 + ($2 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $cutvalue = $4 + 176 | 0;
    $5 = HEAP32[$cutvalue >> 2] | 0;
    $cmp1 = ($5 | 0) < 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $cnt_1 = $cnt_022;
      $rv_2 = $rv_021;
      label = 7;
      break;
    }
   case 4:
    $tobool = ($rv_021 | 0) == 0;
    if ($tobool) {
      $rv_1 = $4;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cutvalue4 = $rv_021 + 176 | 0;
    $6 = HEAP32[$cutvalue4 >> 2] | 0;
    $cmp7 = ($6 | 0) > ($5 | 0);
    $_rv_0 = $cmp7 ? $4 : $rv_021;
    $rv_1 = $_rv_0;
    label = 6;
    break;
   case 6:
    $inc = $cnt_022 + 1 | 0;
    $7 = HEAP32[41520] | 0;
    $cmp11 = ($inc | 0) < ($7 | 0);
    if ($cmp11) {
      $cnt_1 = $inc;
      $rv_2 = $rv_1;
      label = 7;
      break;
    } else {
      $retval_0 = $rv_1;
      label = 15;
      break;
    }
   case 7:
    $8 = HEAP32[41522] | 0;
    $inc15 = $8 + 1 | 0;
    HEAP32[41522] = $inc15;
    $9 = HEAP32[41338] | 0;
    $cmp = ($inc15 | 0) < ($9 | 0);
    if ($cmp) {
      $rv_021 = $rv_2;
      $cnt_022 = $cnt_1;
      $2 = $inc15;
      label = 3;
      break;
    } else {
      $rv_0_lcssa = $rv_2;
      $cnt_0_lcssa = $cnt_1;
      label = 8;
      break;
    }
   case 8:
    $cmp16 = ($0 | 0) > 0;
    if ($cmp16) {
      label = 9;
      break;
    } else {
      $retval_0 = $rv_0_lcssa;
      label = 15;
      break;
    }
   case 9:
    HEAP32[41522] = 0;
    $storemerge13 = 0;
    $rv_314 = $rv_0_lcssa;
    $cnt_215 = $cnt_0_lcssa;
    label = 10;
    break;
   case 10:
    $10 = HEAP32[41340] | 0;
    $arrayidx21 = $10 + ($storemerge13 << 2) | 0;
    $11 = HEAP32[$arrayidx21 >> 2] | 0;
    $cutvalue23 = $11 + 176 | 0;
    $12 = HEAP32[$cutvalue23 >> 2] | 0;
    $cmp24 = ($12 | 0) < 0;
    if ($cmp24) {
      label = 11;
      break;
    } else {
      $cnt_3 = $cnt_215;
      $rv_5 = $rv_314;
      label = 14;
      break;
    }
   case 11:
    $tobool26 = ($rv_314 | 0) == 0;
    if ($tobool26) {
      $rv_4 = $11;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $cutvalue29 = $rv_314 + 176 | 0;
    $13 = HEAP32[$cutvalue29 >> 2] | 0;
    $cmp32 = ($13 | 0) > ($12 | 0);
    $_rv_3 = $cmp32 ? $11 : $rv_314;
    $rv_4 = $_rv_3;
    label = 13;
    break;
   case 13:
    $inc38 = $cnt_215 + 1 | 0;
    $14 = HEAP32[41520] | 0;
    $cmp39 = ($inc38 | 0) < ($14 | 0);
    if ($cmp39) {
      $cnt_3 = $inc38;
      $rv_5 = $rv_4;
      label = 14;
      break;
    } else {
      $retval_0 = $rv_4;
      label = 15;
      break;
    }
   case 14:
    $15 = HEAP32[41522] | 0;
    $inc43 = $15 + 1 | 0;
    HEAP32[41522] = $inc43;
    $cmp19 = ($inc43 | 0) < ($0 | 0);
    if ($cmp19) {
      $storemerge13 = $inc43;
      $rv_314 = $rv_5;
      $cnt_215 = $cnt_3;
      label = 10;
      break;
    } else {
      $retval_0 = $rv_5;
      label = 15;
      break;
    }
   case 15:
    return $retval_0 | 0;
  }
  return 0;
}
function _init_graph($g) {
  $g = $g | 0;
  var $nlist = 0, $n_040 = 0, $tobool41 = 0, $n_042 = 0, $mark = 0, $0 = 0, $inc = 0, $list = 0, $1 = 0, $2 = 0, $tobool438 = 0, $i_039 = 0, $3 = 0, $inc6 = 0, $inc7 = 0, $4 = 0, $arrayidx = 0, $5 = 0, $tobool4 = 0, $next = 0, $n_0 = 0, $tobool = 0, $6 = 0, $tobool11 = 0, $7 = 0, $8 = 0, $mul = 0, $call = 0, $9 = 0, $mul12 = 0, $call13 = 0, $call_sink = 0, $10 = 0, $11 = 0, $tobool14 = 0, $12 = 0, $13 = 0, $mul16 = 0, $call17 = 0, $14 = 0, $mul19 = 0, $call20 = 0, $call17_sink = 0, $15 = 0, $n_132 = 0, $tobool2633 = 0, $n_135 = 0, $feasible_034 = 0, $priority = 0, $list31 = 0, $16 = 0, $17 = 0, $tobool3328 = 0, $18 = 0, $feasible_130 = 0, $i_129 = 0, $19 = 0, $inc37 = 0, $cutvalue = 0, $tree_index = 0, $tobool40 = 0, $head = 0, $20 = 0, $rank = 0, $21 = 0, $tail = 0, $22 = 0, $rank43 = 0, $23 = 0, $sub = 0, $minlen = 0, $24 = 0, $conv = 0, $cmp = 0, $_feasible_1 = 0, $feasible_2 = 0, $inc47 = 0, $25 = 0, $arrayidx32 = 0, $26 = 0, $tobool33 = 0, $phitmp = 0, $phitmp43 = 0, $feasible_1_lcssa = 0, $i_1_lcssa = 0, $call50 = 0, $27 = 0, $list52 = 0, $size = 0, $list58 = 0, $28 = 0, $i_2 = 0, $arrayidx59 = 0, $29 = 0, $tobool60 = 0, $inc63 = 0, $mul66 = 0, $call67 = 0, $30 = 0, $list69 = 0, $size72 = 0, $next75 = 0, $n_1 = 0, $tobool26 = 0, $feasible_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[41882] = $g;
    HEAP32[41522] = 0;
    HEAP32[41606] = 0;
    HEAP32[41584] = 0;
    $nlist = $g + 220 | 0;
    $n_040 = HEAP32[$nlist >> 2] | 0;
    $tobool41 = ($n_040 | 0) == 0;
    if ($tobool41) {
      label = 6;
      break;
    } else {
      $n_042 = $n_040;
      label = 3;
      break;
    }
   case 3:
    $mark = $n_042 + 163 | 0;
    HEAP8[$mark] = 0;
    $0 = HEAP32[41584] | 0;
    $inc = $0 + 1 | 0;
    HEAP32[41584] = $inc;
    $list = $n_042 + 184 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool438 = ($2 | 0) == 0;
    if ($tobool438) {
      label = 5;
      break;
    } else {
      $i_039 = 0;
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP32[41606] | 0;
    $inc6 = $3 + 1 | 0;
    HEAP32[41606] = $inc6;
    $inc7 = $i_039 + 1 | 0;
    $4 = HEAP32[$list >> 2] | 0;
    $arrayidx = $4 + ($inc7 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $tobool4 = ($5 | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      $i_039 = $inc7;
      label = 4;
      break;
    }
   case 5:
    $next = $n_042 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_042 = $n_0;
      label = 3;
      break;
    }
   case 6:
    $6 = HEAP32[41336] | 0;
    $tobool11 = ($6 | 0) == 0;
    if ($tobool11) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = $6;
    $8 = HEAP32[41584] | 0;
    $mul = $8 << 2;
    $call = _grealloc($7, $mul) | 0;
    $call_sink = $call;
    label = 9;
    break;
   case 8:
    $9 = HEAP32[41584] | 0;
    $mul12 = $9 << 2;
    $call13 = _gmalloc($mul12) | 0;
    $call_sink = $call13;
    label = 9;
    break;
   case 9:
    $10 = $call_sink;
    HEAP32[41336] = $10;
    HEAP32[41334] = 0;
    $11 = HEAP32[41340] | 0;
    $tobool14 = ($11 | 0) == 0;
    if ($tobool14) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $12 = $11;
    $13 = HEAP32[41584] | 0;
    $mul16 = $13 << 2;
    $call17 = _grealloc($12, $mul16) | 0;
    $call17_sink = $call17;
    label = 12;
    break;
   case 11:
    $14 = HEAP32[41584] | 0;
    $mul19 = $14 << 2;
    $call20 = _gmalloc($mul19) | 0;
    $call17_sink = $call20;
    label = 12;
    break;
   case 12:
    $15 = $call17_sink;
    HEAP32[41340] = $15;
    HEAP32[41338] = 0;
    $n_132 = HEAP32[$nlist >> 2] | 0;
    $tobool2633 = ($n_132 | 0) == 0;
    if ($tobool2633) {
      $feasible_0_lcssa = 1;
      label = 21;
      break;
    } else {
      $feasible_034 = 1;
      $n_135 = $n_132;
      label = 13;
      break;
    }
   case 13:
    $priority = $n_135 + 292 | 0;
    HEAP32[$priority >> 2] = 0;
    $list31 = $n_135 + 176 | 0;
    $16 = HEAP32[$list31 >> 2] | 0;
    $17 = HEAP32[$16 >> 2] | 0;
    $tobool3328 = ($17 | 0) == 0;
    if ($tobool3328) {
      $i_1_lcssa = 4;
      $feasible_1_lcssa = $feasible_034;
      label = 18;
      break;
    } else {
      $i_129 = 0;
      $feasible_130 = $feasible_034;
      $18 = $17;
      label = 14;
      break;
    }
   case 14:
    $19 = HEAP32[$priority >> 2] | 0;
    $inc37 = $19 + 1 | 0;
    HEAP32[$priority >> 2] = $inc37;
    $cutvalue = $18 + 176 | 0;
    HEAP32[$cutvalue >> 2] = 0;
    $tree_index = $18 + 180 | 0;
    HEAP32[$tree_index >> 2] = -1;
    $tobool40 = ($feasible_130 | 0) == 0;
    if ($tobool40) {
      $feasible_2 = 0;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $head = $18 + 12 | 0;
    $20 = HEAP32[$head >> 2] | 0;
    $rank = $20 + 236 | 0;
    $21 = HEAP32[$rank >> 2] | 0;
    $tail = $18 + 16 | 0;
    $22 = HEAP32[$tail >> 2] | 0;
    $rank43 = $22 + 236 | 0;
    $23 = HEAP32[$rank43 >> 2] | 0;
    $sub = $21 - $23 | 0;
    $minlen = $18 + 186 | 0;
    $24 = HEAP16[$minlen >> 1] | 0;
    $conv = $24 & 65535;
    $cmp = ($sub | 0) < ($conv | 0);
    $_feasible_1 = $cmp ? 0 : $feasible_130;
    $feasible_2 = $_feasible_1;
    label = 16;
    break;
   case 16:
    $inc47 = $i_129 + 1 | 0;
    $25 = HEAP32[$list31 >> 2] | 0;
    $arrayidx32 = $25 + ($inc47 << 2) | 0;
    $26 = HEAP32[$arrayidx32 >> 2] | 0;
    $tobool33 = ($26 | 0) == 0;
    if ($tobool33) {
      label = 17;
      break;
    } else {
      $i_129 = $inc47;
      $feasible_130 = $feasible_2;
      $18 = $26;
      label = 14;
      break;
    }
   case 17:
    $phitmp = $inc47 << 2;
    $phitmp43 = $phitmp + 4 | 0;
    $i_1_lcssa = $phitmp43;
    $feasible_1_lcssa = $feasible_2;
    label = 18;
    break;
   case 18:
    $call50 = _zmalloc($i_1_lcssa) | 0;
    $27 = $call50;
    $list52 = $n_135 + 264 | 0;
    HEAP32[$list52 >> 2] = $27;
    $size = $n_135 + 268 | 0;
    HEAP32[$size >> 2] = 0;
    $list58 = $n_135 + 184 | 0;
    $28 = HEAP32[$list58 >> 2] | 0;
    $i_2 = 0;
    label = 19;
    break;
   case 19:
    $arrayidx59 = $28 + ($i_2 << 2) | 0;
    $29 = HEAP32[$arrayidx59 >> 2] | 0;
    $tobool60 = ($29 | 0) == 0;
    $inc63 = $i_2 + 1 | 0;
    if ($tobool60) {
      label = 20;
      break;
    } else {
      $i_2 = $inc63;
      label = 19;
      break;
    }
   case 20:
    $mul66 = $inc63 << 2;
    $call67 = _zmalloc($mul66) | 0;
    $30 = $call67;
    $list69 = $n_135 + 272 | 0;
    HEAP32[$list69 >> 2] = $30;
    $size72 = $n_135 + 276 | 0;
    HEAP32[$size72 >> 2] = 0;
    $next75 = $n_135 + 168 | 0;
    $n_1 = HEAP32[$next75 >> 2] | 0;
    $tobool26 = ($n_1 | 0) == 0;
    if ($tobool26) {
      $feasible_0_lcssa = $feasible_1_lcssa;
      label = 21;
      break;
    } else {
      $feasible_034 = $feasible_1_lcssa;
      $n_135 = $n_1;
      label = 13;
      break;
    }
   case 21:
    return $feasible_0_lcssa | 0;
  }
  return 0;
}
function _init_rank() {
  var $0 = 0, $call = 0, $1 = 0, $nlist = 0, $v_040 = 0, $tobool41 = 0, $call336 = 0, $tobool437 = 0, $v_042 = 0, $priority = 0, $2 = 0, $cmp = 0, $next = 0, $v_0 = 0, $tobool = 0, $call3 = 0, $tobool4 = 0, $call339 = 0, $ctr_038 = 0, $rank = 0, $inc = 0, $list = 0, $3 = 0, $4 = 0, $tobool831 = 0, $5 = 0, $i_032 = 0, $6 = 0, $tail = 0, $7 = 0, $rank13 = 0, $8 = 0, $minlen = 0, $9 = 0, $conv = 0, $add = 0, $cmp15 = 0, $_add = 0, $inc29 = 0, $10 = 0, $arrayidx = 0, $11 = 0, $tobool8 = 0, $list33 = 0, $12 = 0, $13 = 0, $tobool3534 = 0, $14 = 0, $i_135 = 0, $head = 0, $15 = 0, $priority38 = 0, $16 = 0, $dec = 0, $cmp39 = 0, $17 = 0, $inc45 = 0, $18 = 0, $arrayidx34 = 0, $19 = 0, $tobool35 = 0, $ctr_0_lcssa = 0, $20 = 0, $cmp47 = 0, $call50 = 0, $21 = 0, $nlist52 = 0, $v_127 = 0, $tobool5428 = 0, $v_129 = 0, $priority57 = 0, $22 = 0, $tobool58 = 0, $name = 0, $23 = 0, $call62 = 0, $next66 = 0, $v_1 = 0, $tobool54 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41584] | 0;
    $call = _new_queue($0) | 0;
    $1 = HEAP32[41882] | 0;
    $nlist = $1 + 220 | 0;
    $v_040 = HEAP32[$nlist >> 2] | 0;
    $tobool41 = ($v_040 | 0) == 0;
    if ($tobool41) {
      label = 3;
      break;
    } else {
      $v_042 = $v_040;
      label = 4;
      break;
    }
   case 3:
    $call336 = _dequeue($call) | 0;
    $tobool437 = ($call336 | 0) == 0;
    if ($tobool437) {
      $ctr_0_lcssa = 0;
      label = 14;
      break;
    } else {
      $ctr_038 = 0;
      $call339 = $call336;
      label = 8;
      break;
    }
   case 4:
    $priority = $v_042 + 292 | 0;
    $2 = HEAP32[$priority >> 2] | 0;
    $cmp = ($2 | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _enqueue($call, $v_042);
    label = 6;
    break;
   case 6:
    $next = $v_042 + 168 | 0;
    $v_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($v_0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $v_042 = $v_0;
      label = 4;
      break;
    }
   case 7:
    $call3 = _dequeue($call) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      $ctr_0_lcssa = $inc;
      label = 14;
      break;
    } else {
      $ctr_038 = $inc;
      $call339 = $call3;
      label = 8;
      break;
    }
   case 8:
    $rank = $call339 + 236 | 0;
    HEAP32[$rank >> 2] = 0;
    $inc = $ctr_038 + 1 | 0;
    $list = $call339 + 176 | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool831 = ($4 | 0) == 0;
    if ($tobool831) {
      label = 10;
      break;
    } else {
      $i_032 = 0;
      $5 = $4;
      label = 9;
      break;
    }
   case 9:
    $6 = HEAP32[$rank >> 2] | 0;
    $tail = $5 + 16 | 0;
    $7 = HEAP32[$tail >> 2] | 0;
    $rank13 = $7 + 236 | 0;
    $8 = HEAP32[$rank13 >> 2] | 0;
    $minlen = $5 + 186 | 0;
    $9 = HEAP16[$minlen >> 1] | 0;
    $conv = $9 & 65535;
    $add = $conv + $8 | 0;
    $cmp15 = ($6 | 0) > ($add | 0);
    $_add = $cmp15 ? $6 : $add;
    HEAP32[$rank >> 2] = $_add;
    $inc29 = $i_032 + 1 | 0;
    $10 = HEAP32[$list >> 2] | 0;
    $arrayidx = $10 + ($inc29 << 2) | 0;
    $11 = HEAP32[$arrayidx >> 2] | 0;
    $tobool8 = ($11 | 0) == 0;
    if ($tobool8) {
      label = 10;
      break;
    } else {
      $i_032 = $inc29;
      $5 = $11;
      label = 9;
      break;
    }
   case 10:
    $list33 = $call339 + 184 | 0;
    $12 = HEAP32[$list33 >> 2] | 0;
    $13 = HEAP32[$12 >> 2] | 0;
    $tobool3534 = ($13 | 0) == 0;
    if ($tobool3534) {
      label = 7;
      break;
    } else {
      $i_135 = 0;
      $14 = $13;
      label = 11;
      break;
    }
   case 11:
    $head = $14 + 12 | 0;
    $15 = HEAP32[$head >> 2] | 0;
    $priority38 = $15 + 292 | 0;
    $16 = HEAP32[$priority38 >> 2] | 0;
    $dec = $16 - 1 | 0;
    HEAP32[$priority38 >> 2] = $dec;
    $cmp39 = ($dec | 0) < 1;
    if ($cmp39) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $17 = HEAP32[$head >> 2] | 0;
    _enqueue($call, $17);
    label = 13;
    break;
   case 13:
    $inc45 = $i_135 + 1 | 0;
    $18 = HEAP32[$list33 >> 2] | 0;
    $arrayidx34 = $18 + ($inc45 << 2) | 0;
    $19 = HEAP32[$arrayidx34 >> 2] | 0;
    $tobool35 = ($19 | 0) == 0;
    if ($tobool35) {
      label = 7;
      break;
    } else {
      $i_135 = $inc45;
      $14 = $19;
      label = 11;
      break;
    }
   case 14:
    $20 = HEAP32[41584] | 0;
    $cmp47 = ($ctr_0_lcssa | 0) == ($20 | 0);
    if ($cmp47) {
      label = 19;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call50 = _agerr(1, 106192, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $21 = HEAP32[41882] | 0;
    $nlist52 = $21 + 220 | 0;
    $v_127 = HEAP32[$nlist52 >> 2] | 0;
    $tobool5428 = ($v_127 | 0) == 0;
    if ($tobool5428) {
      label = 19;
      break;
    } else {
      $v_129 = $v_127;
      label = 16;
      break;
    }
   case 16:
    $priority57 = $v_129 + 292 | 0;
    $22 = HEAP32[$priority57 >> 2] | 0;
    $tobool58 = ($22 | 0) == 0;
    if ($tobool58) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $name = $v_129 + 12 | 0;
    $23 = HEAP32[$name >> 2] | 0;
    $call62 = _agerr(3, 102288, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $23, HEAP32[tempInt + 8 >> 2] = $22, tempInt) | 0) | 0;
    label = 18;
    break;
   case 18:
    $next66 = $v_129 + 168 | 0;
    $v_1 = HEAP32[$next66 >> 2] | 0;
    $tobool54 = ($v_1 | 0) == 0;
    if ($tobool54) {
      label = 19;
      break;
    } else {
      $v_129 = $v_1;
      label = 16;
      break;
    }
   case 19:
    _free_queue($call);
    STACKTOP = __stackBase__;
    return;
  }
}
function _freeTreeList() {
  var $0 = 0, $nlist = 0, $n_01 = 0, $tobool3 = 0, $n_04 = 0, $list = 0, $1 = 0, $tobool2 = 0, $2 = 0, $list8 = 0, $3 = 0, $tobool9 = 0, $4 = 0, $mark = 0, $next = 0, $n_0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41882] | 0;
    $nlist = $0 + 220 | 0;
    $n_01 = HEAP32[$nlist >> 2] | 0;
    $tobool3 = ($n_01 | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      $n_04 = $n_01;
      label = 3;
      break;
    }
   case 3:
    $list = $n_04 + 264 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = $1;
    _free($2);
    label = 5;
    break;
   case 5:
    $list8 = $n_04 + 272 | 0;
    $3 = HEAP32[$list8 >> 2] | 0;
    $tobool9 = ($3 | 0) == 0;
    if ($tobool9) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = $3;
    _free($4);
    label = 7;
    break;
   case 7:
    $mark = $n_04 + 163 | 0;
    HEAP8[$mark] = 0;
    $next = $n_04 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $n_04 = $n_0;
      label = 3;
      break;
    }
   case 8:
    return;
  }
}
function _feasible_tree() {
  var $0 = 0, $cmp = 0, $call35 = 0, $1 = 0, $cmp136 = 0, $2 = 0, $nlist = 0, $n_028 = 0, $tobool29 = 0, $n_031 = 0, $e_030 = 0, $list = 0, $3 = 0, $4 = 0, $tobool425 = 0, $5 = 0, $6 = 0, $e_127 = 0, $i_026 = 0, $tree_index = 0, $7 = 0, $cmp8 = 0, $call10 = 0, $tobool11 = 0, $cmp13 = 0, $head = 0, $8 = 0, $rank = 0, $9 = 0, $tail = 0, $10 = 0, $rank17 = 0, $11 = 0, $sub = 0, $minlen = 0, $12 = 0, $conv19 = 0, $sub20 = 0, $head21 = 0, $13 = 0, $rank23 = 0, $14 = 0, $tail24 = 0, $15 = 0, $rank26 = 0, $16 = 0, $sub27 = 0, $minlen29 = 0, $17 = 0, $conv30 = 0, $sub31 = 0, $cmp32 = 0, $e_2 = 0, $inc = 0, $arrayidx = 0, $18 = 0, $tobool4 = 0, $e_1_lcssa = 0, $next = 0, $n_0 = 0, $tobool = 0, $tobool39 = 0, $head41 = 0, $19 = 0, $rank43 = 0, $20 = 0, $tail44 = 0, $21 = 0, $rank46 = 0, $22 = 0, $sub47 = 0, $minlen49 = 0, $23 = 0, $conv50 = 0, $sub51 = 0, $tobool52 = 0, $call = 0, $24 = 0, $cmp1 = 0, $call54 = 0, $cmp56 = 0, $sub59 = 0, $sub59_sub51 = 0, $25 = 0, $cmp6233 = 0, $i_134 = 0, $26 = 0, $arrayidx65 = 0, $27 = 0, $rank67 = 0, $28 = 0, $add = 0, $inc69 = 0, $29 = 0, $cmp62 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41584] | 0;
    $cmp = ($0 | 0) < 2;
    if ($cmp) {
      $retval_0 = 0;
      label = 20;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call35 = _tight_tree() | 0;
    $1 = HEAP32[41584] | 0;
    $cmp136 = ($call35 | 0) < ($1 | 0);
    if ($cmp136) {
      label = 4;
      break;
    } else {
      label = 19;
      break;
    }
   case 4:
    $2 = HEAP32[41882] | 0;
    $nlist = $2 + 220 | 0;
    $n_028 = HEAP32[$nlist >> 2] | 0;
    $tobool29 = ($n_028 | 0) == 0;
    if ($tobool29) {
      $retval_0 = 1;
      label = 20;
      break;
    } else {
      $e_030 = 0;
      $n_031 = $n_028;
      label = 5;
      break;
    }
   case 5:
    $list = $n_031 + 184 | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool425 = ($4 | 0) == 0;
    if ($tobool425) {
      $e_1_lcssa = $e_030;
      label = 13;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $5 = HEAP32[$list >> 2] | 0;
    $i_026 = 0;
    $e_127 = $e_030;
    $6 = $4;
    label = 7;
    break;
   case 7:
    $tree_index = $6 + 180 | 0;
    $7 = HEAP32[$tree_index >> 2] | 0;
    $cmp8 = ($7 | 0) < 0;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      $e_2 = $e_127;
      label = 12;
      break;
    }
   case 8:
    $call10 = _incident($6) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      $e_2 = $e_127;
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp13 = ($e_127 | 0) == 0;
    if ($cmp13) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $head = $6 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $rank = $8 + 236 | 0;
    $9 = HEAP32[$rank >> 2] | 0;
    $tail = $6 + 16 | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $rank17 = $10 + 236 | 0;
    $11 = HEAP32[$rank17 >> 2] | 0;
    $sub = $9 - $11 | 0;
    $minlen = $6 + 186 | 0;
    $12 = HEAP16[$minlen >> 1] | 0;
    $conv19 = $12 & 65535;
    $sub20 = $sub - $conv19 | 0;
    $head21 = $e_127 + 12 | 0;
    $13 = HEAP32[$head21 >> 2] | 0;
    $rank23 = $13 + 236 | 0;
    $14 = HEAP32[$rank23 >> 2] | 0;
    $tail24 = $e_127 + 16 | 0;
    $15 = HEAP32[$tail24 >> 2] | 0;
    $rank26 = $15 + 236 | 0;
    $16 = HEAP32[$rank26 >> 2] | 0;
    $sub27 = $14 - $16 | 0;
    $minlen29 = $e_127 + 186 | 0;
    $17 = HEAP16[$minlen29 >> 1] | 0;
    $conv30 = $17 & 65535;
    $sub31 = $sub27 - $conv30 | 0;
    $cmp32 = ($sub20 | 0) < ($sub31 | 0);
    if ($cmp32) {
      label = 11;
      break;
    } else {
      $e_2 = $e_127;
      label = 12;
      break;
    }
   case 11:
    $e_2 = $6;
    label = 12;
    break;
   case 12:
    $inc = $i_026 + 1 | 0;
    $arrayidx = $5 + ($inc << 2) | 0;
    $18 = HEAP32[$arrayidx >> 2] | 0;
    $tobool4 = ($18 | 0) == 0;
    if ($tobool4) {
      $e_1_lcssa = $e_2;
      label = 13;
      break;
    } else {
      $i_026 = $inc;
      $e_127 = $e_2;
      $6 = $18;
      label = 7;
      break;
    }
   case 13:
    $next = $n_031 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      $e_030 = $e_1_lcssa;
      $n_031 = $n_0;
      label = 5;
      break;
    }
   case 14:
    $tobool39 = ($e_1_lcssa | 0) == 0;
    if ($tobool39) {
      $retval_0 = 1;
      label = 20;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $head41 = $e_1_lcssa + 12 | 0;
    $19 = HEAP32[$head41 >> 2] | 0;
    $rank43 = $19 + 236 | 0;
    $20 = HEAP32[$rank43 >> 2] | 0;
    $tail44 = $e_1_lcssa + 16 | 0;
    $21 = HEAP32[$tail44 >> 2] | 0;
    $rank46 = $21 + 236 | 0;
    $22 = HEAP32[$rank46 >> 2] | 0;
    $sub47 = $20 - $22 | 0;
    $minlen49 = $e_1_lcssa + 186 | 0;
    $23 = HEAP16[$minlen49 >> 1] | 0;
    $conv50 = $23 & 65535;
    $sub51 = $sub47 - $conv50 | 0;
    $tobool52 = ($sub47 | 0) == ($conv50 | 0);
    if ($tobool52) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $call = _tight_tree() | 0;
    $24 = HEAP32[41584] | 0;
    $cmp1 = ($call | 0) < ($24 | 0);
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 19;
      break;
    }
   case 17:
    $call54 = _incident($e_1_lcssa) | 0;
    $cmp56 = ($call54 | 0) == ($19 | 0);
    $sub59 = -$sub51 | 0;
    $sub59_sub51 = $cmp56 ? $sub59 : $sub51;
    $25 = HEAP32[41334] | 0;
    $cmp6233 = ($25 | 0) > 0;
    if ($cmp6233) {
      $i_134 = 0;
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 18:
    $26 = HEAP32[41336] | 0;
    $arrayidx65 = $26 + ($i_134 << 2) | 0;
    $27 = HEAP32[$arrayidx65 >> 2] | 0;
    $rank67 = $27 + 236 | 0;
    $28 = HEAP32[$rank67 >> 2] | 0;
    $add = $28 + $sub59_sub51 | 0;
    HEAP32[$rank67 >> 2] = $add;
    $inc69 = $i_134 + 1 | 0;
    $29 = HEAP32[41334] | 0;
    $cmp62 = ($inc69 | 0) < ($29 | 0);
    if ($cmp62) {
      $i_134 = $inc69;
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 19:
    _init_cutvalues();
    $retval_0 = 0;
    label = 20;
    break;
   case 20:
    return $retval_0 | 0;
  }
  return 0;
}
function _enter_edge($e) {
  $e = $e | 0;
  var $tail = 0, $0 = 0, $lim = 0, $1 = 0, $head = 0, $2 = 0, $lim2 = 0, $3 = 0, $cmp = 0, $_ = 0, $low = 0, $4 = 0, $lim7 = 0, $5 = 0, $6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $lim = $0 + 288 | 0;
    $1 = HEAP32[$lim >> 2] | 0;
    $head = $e + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $lim2 = $2 + 288 | 0;
    $3 = HEAP32[$lim2 >> 2] | 0;
    $cmp = ($1 | 0) < ($3 | 0);
    $_ = $cmp ? $0 : $2;
    HEAP32[41890] = 0;
    HEAP32[41360] = 2147483647;
    $low = $_ + 284 | 0;
    $4 = HEAP32[$low >> 2] | 0;
    HEAP32[41636] = $4;
    $lim7 = $_ + 288 | 0;
    $5 = HEAP32[$lim7 >> 2] | 0;
    HEAP32[41642] = $5;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _dfs_enter_outedge($_);
    label = 5;
    break;
   case 4:
    _dfs_enter_inedge($_);
    label = 5;
    break;
   case 5:
    $6 = HEAP32[41890] | 0;
    return $6 | 0;
  }
  return 0;
}
function _TB_balance() {
  var $0 = 0, $add = 0, $mul = 0, $call = 0, $1 = 0, $2 = 0, $cmp77 = 0, $i_078 = 0, $arrayidx = 0, $inc = 0, $3 = 0, $cmp = 0, $4 = 0, $nlist = 0, $n_074 = 0, $tobool75 = 0, $n_076 = 0, $node_type = 0, $5 = 0, $cmp4 = 0, $rank = 0, $6 = 0, $arrayidx7 = 0, $7 = 0, $inc8 = 0, $next = 0, $n_0 = 0, $tobool = 0, $8 = 0, $nlist13 = 0, $n_169 = 0, $tobool1570 = 0, $n_171 = 0, $node_type18 = 0, $9 = 0, $cmp20 = 0, $10 = 0, $list = 0, $11 = 0, $12 = 0, $tobool2752 = 0, $13 = 0, $14 = 0, $inweight_055 = 0, $low_054 = 0, $i_153 = 0, $weight = 0, $15 = 0.0, $conv30 = 0.0, $add31 = 0.0, $conv32 = 0, $tail = 0, $16 = 0, $rank34 = 0, $17 = 0, $minlen = 0, $18 = 0, $conv36 = 0, $add37 = 0, $cmp38 = 0, $low_0_add37 = 0, $inc48 = 0, $arrayidx26 = 0, $19 = 0, $tobool27 = 0, $inweight_0_lcssa = 0, $low_0_lcssa = 0, $list52 = 0, $20 = 0, $21 = 0, $tobool5458 = 0, $22 = 0, $23 = 0, $outweight_061 = 0, $high_060 = 0, $i_259 = 0, $weight57 = 0, $24 = 0.0, $conv58 = 0.0, $add59 = 0.0, $conv60 = 0, $head = 0, $25 = 0, $rank62 = 0, $26 = 0, $minlen64 = 0, $27 = 0, $conv65 = 0, $sub = 0, $cmp66 = 0, $high_0_sub = 0, $inc80 = 0, $arrayidx53 = 0, $28 = 0, $tobool54 = 0, $outweight_0_lcssa = 0, $high_0_lcssa = 0, $cmp82 = 0, $_low_0 = 0, $cmp86 = 0, $i_364 = 0, $cmp9165 = 0, $i_367 = 0, $choice_066 = 0, $arrayidx94 = 0, $29 = 0, $arrayidx95 = 0, $30 = 0, $cmp96 = 0, $i_3_choice_0 = 0, $i_3 = 0, $cmp91 = 0, $choice_0_lcssa = 0, $rank104 = 0, $31 = 0, $arrayidx105 = 0, $32 = 0, $dec = 0, $arrayidx106 = 0, $33 = 0, $inc107 = 0, $list112 = 0, $34 = 0, $tobool113 = 0, $35 = 0, $list121 = 0, $36 = 0, $tobool122 = 0, $37 = 0, $mark = 0, $next132 = 0, $n_1 = 0, $tobool15 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _scan_and_normalize();
    $0 = HEAP32[41632] | 0;
    $add = $0 << 2;
    $mul = $add + 4 | 0;
    $call = _zmalloc($mul) | 0;
    $1 = $call;
    $2 = HEAP32[41632] | 0;
    $cmp77 = ($2 | 0) < 0;
    if ($cmp77) {
      label = 4;
      break;
    } else {
      $i_078 = 0;
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $1 + ($i_078 << 2) | 0;
    HEAP32[$arrayidx >> 2] = 0;
    $inc = $i_078 + 1 | 0;
    $3 = HEAP32[41632] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $i_078 = $inc;
      label = 3;
      break;
    }
   case 4:
    $4 = HEAP32[41882] | 0;
    $nlist = $4 + 220 | 0;
    $n_074 = HEAP32[$nlist >> 2] | 0;
    $tobool75 = ($n_074 | 0) == 0;
    if ($tobool75) {
      label = 8;
      break;
    } else {
      $n_076 = $n_074;
      label = 5;
      break;
    }
   case 5:
    $node_type = $n_076 + 162 | 0;
    $5 = HEAP8[$node_type] | 0;
    $cmp4 = $5 << 24 >> 24 == 0;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $rank = $n_076 + 236 | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $arrayidx7 = $1 + ($6 << 2) | 0;
    $7 = HEAP32[$arrayidx7 >> 2] | 0;
    $inc8 = $7 + 1 | 0;
    HEAP32[$arrayidx7 >> 2] = $inc8;
    label = 7;
    break;
   case 7:
    $next = $n_076 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $n_076 = $n_0;
      label = 5;
      break;
    }
   case 8:
    $8 = HEAP32[41882] | 0;
    $nlist13 = $8 + 220 | 0;
    $n_169 = HEAP32[$nlist13 >> 2] | 0;
    $tobool1570 = ($n_169 | 0) == 0;
    if ($tobool1570) {
      label = 26;
      break;
    } else {
      $n_171 = $n_169;
      label = 9;
      break;
    }
   case 9:
    $node_type18 = $n_171 + 162 | 0;
    $9 = HEAP8[$node_type18] | 0;
    $cmp20 = $9 << 24 >> 24 == 0;
    if ($cmp20) {
      label = 10;
      break;
    } else {
      label = 25;
      break;
    }
   case 10:
    $10 = HEAP32[41632] | 0;
    $list = $n_171 + 176 | 0;
    $11 = HEAP32[$list >> 2] | 0;
    $12 = HEAP32[$11 >> 2] | 0;
    $tobool2752 = ($12 | 0) == 0;
    if ($tobool2752) {
      $low_0_lcssa = 0;
      $inweight_0_lcssa = 0;
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $13 = HEAP32[$list >> 2] | 0;
    $i_153 = 0;
    $low_054 = 0;
    $inweight_055 = 0;
    $14 = $12;
    label = 12;
    break;
   case 12:
    $weight = $14 + 172 | 0;
    $15 = +HEAPF32[$weight >> 2];
    $conv30 = +($inweight_055 | 0);
    $add31 = $conv30 + $15;
    $conv32 = ~~$add31;
    $tail = $14 + 16 | 0;
    $16 = HEAP32[$tail >> 2] | 0;
    $rank34 = $16 + 236 | 0;
    $17 = HEAP32[$rank34 >> 2] | 0;
    $minlen = $14 + 186 | 0;
    $18 = HEAP16[$minlen >> 1] | 0;
    $conv36 = $18 & 65535;
    $add37 = $conv36 + $17 | 0;
    $cmp38 = ($low_054 | 0) > ($add37 | 0);
    $low_0_add37 = $cmp38 ? $low_054 : $add37;
    $inc48 = $i_153 + 1 | 0;
    $arrayidx26 = $13 + ($inc48 << 2) | 0;
    $19 = HEAP32[$arrayidx26 >> 2] | 0;
    $tobool27 = ($19 | 0) == 0;
    if ($tobool27) {
      $low_0_lcssa = $low_0_add37;
      $inweight_0_lcssa = $conv32;
      label = 13;
      break;
    } else {
      $i_153 = $inc48;
      $low_054 = $low_0_add37;
      $inweight_055 = $conv32;
      $14 = $19;
      label = 12;
      break;
    }
   case 13:
    $list52 = $n_171 + 184 | 0;
    $20 = HEAP32[$list52 >> 2] | 0;
    $21 = HEAP32[$20 >> 2] | 0;
    $tobool5458 = ($21 | 0) == 0;
    if ($tobool5458) {
      $high_0_lcssa = $10;
      $outweight_0_lcssa = 0;
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $22 = HEAP32[$list52 >> 2] | 0;
    $i_259 = 0;
    $high_060 = $10;
    $outweight_061 = 0;
    $23 = $21;
    label = 15;
    break;
   case 15:
    $weight57 = $23 + 172 | 0;
    $24 = +HEAPF32[$weight57 >> 2];
    $conv58 = +($outweight_061 | 0);
    $add59 = $conv58 + $24;
    $conv60 = ~~$add59;
    $head = $23 + 12 | 0;
    $25 = HEAP32[$head >> 2] | 0;
    $rank62 = $25 + 236 | 0;
    $26 = HEAP32[$rank62 >> 2] | 0;
    $minlen64 = $23 + 186 | 0;
    $27 = HEAP16[$minlen64 >> 1] | 0;
    $conv65 = $27 & 65535;
    $sub = $26 - $conv65 | 0;
    $cmp66 = ($high_060 | 0) < ($sub | 0);
    $high_0_sub = $cmp66 ? $high_060 : $sub;
    $inc80 = $i_259 + 1 | 0;
    $arrayidx53 = $22 + ($inc80 << 2) | 0;
    $28 = HEAP32[$arrayidx53 >> 2] | 0;
    $tobool54 = ($28 | 0) == 0;
    if ($tobool54) {
      $high_0_lcssa = $high_0_sub;
      $outweight_0_lcssa = $conv60;
      label = 16;
      break;
    } else {
      $i_259 = $inc80;
      $high_060 = $high_0_sub;
      $outweight_061 = $conv60;
      $23 = $28;
      label = 15;
      break;
    }
   case 16:
    $cmp82 = ($low_0_lcssa | 0) < 0;
    $_low_0 = $cmp82 ? 0 : $low_0_lcssa;
    $cmp86 = ($inweight_0_lcssa | 0) == ($outweight_0_lcssa | 0);
    if ($cmp86) {
      label = 17;
      break;
    } else {
      label = 20;
      break;
    }
   case 17:
    $i_364 = $_low_0 + 1 | 0;
    $cmp9165 = ($i_364 | 0) > ($high_0_lcssa | 0);
    if ($cmp9165) {
      $choice_0_lcssa = $_low_0;
      label = 19;
      break;
    } else {
      $choice_066 = $_low_0;
      $i_367 = $i_364;
      label = 18;
      break;
    }
   case 18:
    $arrayidx94 = $1 + ($i_367 << 2) | 0;
    $29 = HEAP32[$arrayidx94 >> 2] | 0;
    $arrayidx95 = $1 + ($choice_066 << 2) | 0;
    $30 = HEAP32[$arrayidx95 >> 2] | 0;
    $cmp96 = ($29 | 0) < ($30 | 0);
    $i_3_choice_0 = $cmp96 ? $i_367 : $choice_066;
    $i_3 = $i_367 + 1 | 0;
    $cmp91 = ($i_3 | 0) > ($high_0_lcssa | 0);
    if ($cmp91) {
      $choice_0_lcssa = $i_3_choice_0;
      label = 19;
      break;
    } else {
      $choice_066 = $i_3_choice_0;
      $i_367 = $i_3;
      label = 18;
      break;
    }
   case 19:
    $rank104 = $n_171 + 236 | 0;
    $31 = HEAP32[$rank104 >> 2] | 0;
    $arrayidx105 = $1 + ($31 << 2) | 0;
    $32 = HEAP32[$arrayidx105 >> 2] | 0;
    $dec = $32 - 1 | 0;
    HEAP32[$arrayidx105 >> 2] = $dec;
    $arrayidx106 = $1 + ($choice_0_lcssa << 2) | 0;
    $33 = HEAP32[$arrayidx106 >> 2] | 0;
    $inc107 = $33 + 1 | 0;
    HEAP32[$arrayidx106 >> 2] = $inc107;
    HEAP32[$rank104 >> 2] = $choice_0_lcssa;
    label = 20;
    break;
   case 20:
    $list112 = $n_171 + 264 | 0;
    $34 = HEAP32[$list112 >> 2] | 0;
    $tobool113 = ($34 | 0) == 0;
    if ($tobool113) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $35 = $34;
    _free($35);
    label = 22;
    break;
   case 22:
    $list121 = $n_171 + 272 | 0;
    $36 = HEAP32[$list121 >> 2] | 0;
    $tobool122 = ($36 | 0) == 0;
    if ($tobool122) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $37 = $36;
    _free($37);
    label = 24;
    break;
   case 24:
    $mark = $n_171 + 163 | 0;
    HEAP8[$mark] = 0;
    label = 25;
    break;
   case 25:
    $next132 = $n_171 + 168 | 0;
    $n_1 = HEAP32[$next132 >> 2] | 0;
    $tobool15 = ($n_1 | 0) == 0;
    if ($tobool15) {
      label = 26;
      break;
    } else {
      $n_171 = $n_1;
      label = 9;
      break;
    }
   case 26:
    _free($call);
    return;
  }
}
function _update($e, $f) {
  $e = $e | 0;
  $f = $f | 0;
  var $head = 0, $0 = 0, $rank = 0, $1 = 0, $tail = 0, $2 = 0, $rank2 = 0, $3 = 0, $sub = 0, $minlen = 0, $4 = 0, $conv = 0, $sub4 = 0, $cmp = 0, $tail6 = 0, $5 = 0, $size = 0, $6 = 0, $size10 = 0, $7 = 0, $add = 0, $cmp11 = 0, $head15 = 0, $8 = 0, $size18 = 0, $9 = 0, $size22 = 0, $10 = 0, $add23 = 0, $cmp24 = 0, $sub28 = 0, $lim = 0, $11 = 0, $lim34 = 0, $12 = 0, $cmp35 = 0, $sub41 = 0, $cutvalue46 = 0, $13 = 0, $14 = 0, $15 = 0, $call = 0, $16 = 0, $17 = 0, $call51 = 0, $cmp52 = 0, $sub56 = 0, $cutvalue58 = 0, $par = 0, $18 = 0, $low = 0, $19 = 0, $call63 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $head = $f + 12 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $rank = $0 + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $tail = $f + 16 | 0;
    $2 = HEAP32[$tail >> 2] | 0;
    $rank2 = $2 + 236 | 0;
    $3 = HEAP32[$rank2 >> 2] | 0;
    $sub = $1 - $3 | 0;
    $minlen = $f + 186 | 0;
    $4 = HEAP16[$minlen >> 1] | 0;
    $conv = $4 & 65535;
    $sub4 = $sub - $conv | 0;
    $cmp = ($sub4 | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $tail6 = $e + 16 | 0;
    $5 = HEAP32[$tail6 >> 2] | 0;
    $size = $5 + 268 | 0;
    $6 = HEAP32[$size >> 2] | 0;
    $size10 = $5 + 276 | 0;
    $7 = HEAP32[$size10 >> 2] | 0;
    $add = $7 + $6 | 0;
    $cmp11 = ($add | 0) == 1;
    if ($cmp11) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    _rerank($5, $sub4);
    label = 10;
    break;
   case 5:
    $head15 = $e + 12 | 0;
    $8 = HEAP32[$head15 >> 2] | 0;
    $size18 = $8 + 268 | 0;
    $9 = HEAP32[$size18 >> 2] | 0;
    $size22 = $8 + 276 | 0;
    $10 = HEAP32[$size22 >> 2] | 0;
    $add23 = $10 + $9 | 0;
    $cmp24 = ($add23 | 0) == 1;
    if ($cmp24) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $sub28 = -$sub4 | 0;
    _rerank($8, $sub28);
    label = 10;
    break;
   case 7:
    $lim = $5 + 288 | 0;
    $11 = HEAP32[$lim >> 2] | 0;
    $lim34 = $8 + 288 | 0;
    $12 = HEAP32[$lim34 >> 2] | 0;
    $cmp35 = ($11 | 0) < ($12 | 0);
    if ($cmp35) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    _rerank($5, $sub4);
    label = 10;
    break;
   case 9:
    $sub41 = -$sub4 | 0;
    _rerank($8, $sub41);
    label = 10;
    break;
   case 10:
    $cutvalue46 = $e + 176 | 0;
    $13 = HEAP32[$cutvalue46 >> 2] | 0;
    $14 = HEAP32[$tail >> 2] | 0;
    $15 = HEAP32[$head >> 2] | 0;
    $call = _treeupdate($14, $15, $13, 1) | 0;
    $16 = HEAP32[$head >> 2] | 0;
    $17 = HEAP32[$tail >> 2] | 0;
    $call51 = _treeupdate($16, $17, $13, 0) | 0;
    $cmp52 = ($call51 | 0) == ($call | 0);
    if ($cmp52) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _abort();
   case 12:
    $sub56 = -$13 | 0;
    $cutvalue58 = $f + 176 | 0;
    HEAP32[$cutvalue58 >> 2] = $sub56;
    HEAP32[$cutvalue46 >> 2] = 0;
    _exchange_tree_edges($e, $f);
    $par = $call + 280 | 0;
    $18 = HEAP32[$par >> 2] | 0;
    $low = $call + 284 | 0;
    $19 = HEAP32[$low >> 2] | 0;
    $call63 = _dfs_range($call, $18, $19) | 0;
    return;
  }
}
function _scan_and_normalize() {
  var $0 = 0, $nlist = 0, $n_013 = 0, $tobool14 = 0, $n_015 = 0, $node_type = 0, $1 = 0, $cmp = 0, $2 = 0, $rank = 0, $3 = 0, $cmp4 = 0, $_ = 0, $4 = 0, $5 = 0, $cmp10 = 0, $cond17 = 0, $next = 0, $n_0 = 0, $tobool = 0, $6 = 0, $cmp19 = 0, $7 = 0, $nlist23 = 0, $n_110 = 0, $tobool2511 = 0, $8 = 0, $9 = 0, $n_112 = 0, $rank28 = 0, $10 = 0, $sub = 0, $next31 = 0, $n_1 = 0, $tobool25 = 0, $11 = 0, $_lcssa = 0, $12 = 0, $sub33 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[41628] = 2147483647;
    HEAP32[41632] = -2147483647;
    $0 = HEAP32[41882] | 0;
    $nlist = $0 + 220 | 0;
    $n_013 = HEAP32[$nlist >> 2] | 0;
    $tobool14 = ($n_013 | 0) == 0;
    if ($tobool14) {
      label = 6;
      break;
    } else {
      $n_015 = $n_013;
      label = 3;
      break;
    }
   case 3:
    $node_type = $n_015 + 162 | 0;
    $1 = HEAP8[$node_type] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $2 = HEAP32[41628] | 0;
    $rank = $n_015 + 236 | 0;
    $3 = HEAP32[$rank >> 2] | 0;
    $cmp4 = ($2 | 0) < ($3 | 0);
    $_ = $cmp4 ? $2 : $3;
    HEAP32[41628] = $_;
    $4 = HEAP32[41632] | 0;
    $5 = HEAP32[$rank >> 2] | 0;
    $cmp10 = ($4 | 0) > ($5 | 0);
    $cond17 = $cmp10 ? $4 : $5;
    HEAP32[41632] = $cond17;
    label = 5;
    break;
   case 5:
    $next = $n_015 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_015 = $n_0;
      label = 3;
      break;
    }
   case 6:
    $6 = HEAP32[41628] | 0;
    $cmp19 = ($6 | 0) == 0;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = HEAP32[41882] | 0;
    $nlist23 = $7 + 220 | 0;
    $n_110 = HEAP32[$nlist23 >> 2] | 0;
    $tobool2511 = ($n_110 | 0) == 0;
    $8 = HEAP32[41628] | 0;
    if ($tobool2511) {
      $_lcssa = $8;
      label = 9;
      break;
    } else {
      $n_112 = $n_110;
      $9 = $8;
      label = 8;
      break;
    }
   case 8:
    $rank28 = $n_112 + 236 | 0;
    $10 = HEAP32[$rank28 >> 2] | 0;
    $sub = $10 - $9 | 0;
    HEAP32[$rank28 >> 2] = $sub;
    $next31 = $n_112 + 168 | 0;
    $n_1 = HEAP32[$next31 >> 2] | 0;
    $tobool25 = ($n_1 | 0) == 0;
    $11 = HEAP32[41628] | 0;
    if ($tobool25) {
      $_lcssa = $11;
      label = 9;
      break;
    } else {
      $n_112 = $n_1;
      $9 = $11;
      label = 8;
      break;
    }
   case 9:
    $12 = HEAP32[41632] | 0;
    $sub33 = $12 - $_lcssa | 0;
    HEAP32[41632] = $sub33;
    HEAP32[41628] = 0;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _treeupdate($v, $w, $cutvalue, $dir) {
  $v = $v | 0;
  $w = $w | 0;
  $cutvalue = $cutvalue | 0;
  $dir = $dir | 0;
  var $lim = 0, $0 = 0, $lnot9 = 0, $lnot_ext = 0, $v_addr_0 = 0, $low = 0, $1 = 0, $2 = 0, $cmp = 0, $lim5 = 0, $3 = 0, $phitmp = 0, $par = 0, $4 = 0, $tail = 0, $5 = 0, $cmp8 = 0, $dir_lnot_ext = 0, $tobool10 = 0, $cutvalue13 = 0, $6 = 0, $storemerge_p = 0, $storemerge = 0, $7 = 0, $lim20 = 0, $8 = 0, $head = 0, $9 = 0, $lim22 = 0, $10 = 0, $cmp23 = 0, $_ = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $lim = $w + 288 | 0;
    $0 = -$cutvalue | 0;
    $lnot9 = ($dir | 0) == 0;
    $lnot_ext = $lnot9 & 1;
    $v_addr_0 = $v;
    label = 3;
    break;
   case 3:
    $low = $v_addr_0 + 284 | 0;
    $1 = HEAP32[$low >> 2] | 0;
    $2 = HEAP32[$lim >> 2] | 0;
    $cmp = ($1 | 0) > ($2 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $lim5 = $v_addr_0 + 288 | 0;
    $3 = HEAP32[$lim5 >> 2] | 0;
    $phitmp = ($2 | 0) > ($3 | 0);
    if ($phitmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $par = $v_addr_0 + 280 | 0;
    $4 = HEAP32[$par >> 2] | 0;
    $tail = $4 + 16 | 0;
    $5 = HEAP32[$tail >> 2] | 0;
    $cmp8 = ($v_addr_0 | 0) == ($5 | 0);
    $dir_lnot_ext = $cmp8 ? $dir : $lnot_ext;
    $tobool10 = ($dir_lnot_ext | 0) == 0;
    $cutvalue13 = $4 + 176 | 0;
    $6 = HEAP32[$cutvalue13 >> 2] | 0;
    $storemerge_p = $tobool10 ? $0 : $cutvalue;
    $storemerge = $storemerge_p + $6 | 0;
    HEAP32[$cutvalue13 >> 2] = $storemerge;
    $7 = HEAP32[$tail >> 2] | 0;
    $lim20 = $7 + 288 | 0;
    $8 = HEAP32[$lim20 >> 2] | 0;
    $head = $4 + 12 | 0;
    $9 = HEAP32[$head >> 2] | 0;
    $lim22 = $9 + 288 | 0;
    $10 = HEAP32[$lim22 >> 2] | 0;
    $cmp23 = ($8 | 0) > ($10 | 0);
    $_ = $cmp23 ? $7 : $9;
    $v_addr_0 = $_;
    label = 3;
    break;
   case 6:
    return $v_addr_0 | 0;
  }
  return 0;
}
function _exchange_tree_edges($e, $f) {
  $e = $e | 0;
  $f = $f | 0;
  var $tree_index = 0, $0 = 0, $tree_index2 = 0, $1 = 0, $2 = 0, $arrayidx = 0, $tail = 0, $3 = 0, $tree_out = 0, $size = 0, $4 = 0, $dec = 0, $list = 0, $j_0 = 0, $cmp = 0, $5 = 0, $arrayidx10 = 0, $6 = 0, $cmp11 = 0, $inc = 0, $list14 = 0, $7 = 0, $arrayidx15 = 0, $8 = 0, $arrayidx19 = 0, $9 = 0, $arrayidx23 = 0, $head = 0, $10 = 0, $tree_in = 0, $size25 = 0, $11 = 0, $dec26 = 0, $list32 = 0, $j_1 = 0, $cmp28 = 0, $12 = 0, $arrayidx33 = 0, $13 = 0, $cmp34 = 0, $inc38 = 0, $list42 = 0, $14 = 0, $arrayidx43 = 0, $15 = 0, $arrayidx47 = 0, $16 = 0, $arrayidx51 = 0, $tail52 = 0, $17 = 0, $size55 = 0, $18 = 0, $inc56 = 0, $list59 = 0, $19 = 0, $arrayidx60 = 0, $20 = 0, $21 = 0, $arrayidx67 = 0, $head68 = 0, $22 = 0, $size71 = 0, $23 = 0, $inc72 = 0, $list75 = 0, $24 = 0, $arrayidx76 = 0, $25 = 0, $26 = 0, $arrayidx83 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tree_index = $e + 180 | 0;
    $0 = HEAP32[$tree_index >> 2] | 0;
    $tree_index2 = $f + 180 | 0;
    HEAP32[$tree_index2 >> 2] = $0;
    $1 = HEAP32[$tree_index >> 2] | 0;
    $2 = HEAP32[41340] | 0;
    $arrayidx = $2 + ($1 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $f;
    HEAP32[$tree_index >> 2] = -1;
    $tail = $e + 16 | 0;
    $3 = HEAP32[$tail >> 2] | 0;
    $tree_out = $3 + 272 | 0;
    $size = $3 + 276 | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $dec = $4 - 1 | 0;
    HEAP32[$size >> 2] = $dec;
    $list = $tree_out | 0;
    $j_0 = 0;
    label = 3;
    break;
   case 3:
    $cmp = ($j_0 | 0) > ($dec | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $5 = HEAP32[$list >> 2] | 0;
    $arrayidx10 = $5 + ($j_0 << 2) | 0;
    $6 = HEAP32[$arrayidx10 >> 2] | 0;
    $cmp11 = ($6 | 0) == ($e | 0);
    $inc = $j_0 + 1 | 0;
    if ($cmp11) {
      label = 5;
      break;
    } else {
      $j_0 = $inc;
      label = 3;
      break;
    }
   case 5:
    $list14 = $tree_out | 0;
    $7 = HEAP32[$list14 >> 2] | 0;
    $arrayidx15 = $7 + ($dec << 2) | 0;
    $8 = HEAP32[$arrayidx15 >> 2] | 0;
    $arrayidx19 = $7 + ($j_0 << 2) | 0;
    HEAP32[$arrayidx19 >> 2] = $8;
    $9 = HEAP32[$list14 >> 2] | 0;
    $arrayidx23 = $9 + ($dec << 2) | 0;
    HEAP32[$arrayidx23 >> 2] = 0;
    $head = $e + 12 | 0;
    $10 = HEAP32[$head >> 2] | 0;
    $tree_in = $10 + 264 | 0;
    $size25 = $10 + 268 | 0;
    $11 = HEAP32[$size25 >> 2] | 0;
    $dec26 = $11 - 1 | 0;
    HEAP32[$size25 >> 2] = $dec26;
    $list32 = $tree_in | 0;
    $j_1 = 0;
    label = 6;
    break;
   case 6:
    $cmp28 = ($j_1 | 0) > ($dec26 | 0);
    if ($cmp28) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $12 = HEAP32[$list32 >> 2] | 0;
    $arrayidx33 = $12 + ($j_1 << 2) | 0;
    $13 = HEAP32[$arrayidx33 >> 2] | 0;
    $cmp34 = ($13 | 0) == ($e | 0);
    $inc38 = $j_1 + 1 | 0;
    if ($cmp34) {
      label = 8;
      break;
    } else {
      $j_1 = $inc38;
      label = 6;
      break;
    }
   case 8:
    $list42 = $tree_in | 0;
    $14 = HEAP32[$list42 >> 2] | 0;
    $arrayidx43 = $14 + ($dec26 << 2) | 0;
    $15 = HEAP32[$arrayidx43 >> 2] | 0;
    $arrayidx47 = $14 + ($j_1 << 2) | 0;
    HEAP32[$arrayidx47 >> 2] = $15;
    $16 = HEAP32[$list42 >> 2] | 0;
    $arrayidx51 = $16 + ($dec26 << 2) | 0;
    HEAP32[$arrayidx51 >> 2] = 0;
    $tail52 = $f + 16 | 0;
    $17 = HEAP32[$tail52 >> 2] | 0;
    $size55 = $17 + 276 | 0;
    $18 = HEAP32[$size55 >> 2] | 0;
    $inc56 = $18 + 1 | 0;
    HEAP32[$size55 >> 2] = $inc56;
    $list59 = $17 + 272 | 0;
    $19 = HEAP32[$list59 >> 2] | 0;
    $arrayidx60 = $19 + ($18 << 2) | 0;
    HEAP32[$arrayidx60 >> 2] = $f;
    $20 = HEAP32[$size55 >> 2] | 0;
    $21 = HEAP32[$list59 >> 2] | 0;
    $arrayidx67 = $21 + ($20 << 2) | 0;
    HEAP32[$arrayidx67 >> 2] = 0;
    $head68 = $f + 12 | 0;
    $22 = HEAP32[$head68 >> 2] | 0;
    $size71 = $22 + 268 | 0;
    $23 = HEAP32[$size71 >> 2] | 0;
    $inc72 = $23 + 1 | 0;
    HEAP32[$size71 >> 2] = $inc72;
    $list75 = $22 + 264 | 0;
    $24 = HEAP32[$list75 >> 2] | 0;
    $arrayidx76 = $24 + ($23 << 2) | 0;
    HEAP32[$arrayidx76 >> 2] = $f;
    $25 = HEAP32[$size71 >> 2] | 0;
    $26 = HEAP32[$list75 >> 2] | 0;
    $arrayidx83 = $26 + ($25 << 2) | 0;
    HEAP32[$arrayidx83 >> 2] = 0;
    return;
  }
}
function _incident($e) {
  $e = $e | 0;
  var $tail = 0, $0 = 0, $mark = 0, $1 = 0, $tobool = 0, $head = 0, $2 = 0, $mark2 = 0, $3 = 0, $tobool9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $mark = $0 + 163 | 0;
    $1 = HEAP8[$mark] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    $head = $e + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $mark2 = $2 + 163 | 0;
    $3 = HEAP8[$mark2] | 0;
    $tobool9 = $3 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    if ($tobool9) {
      $retval_0 = $0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    if ($tobool9) {
      label = 5;
      break;
    } else {
      $retval_0 = $2;
      label = 6;
      break;
    }
   case 5:
    $retval_0 = 0;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _x_val($e, $v, $dir) {
  $e = $e | 0;
  $v = $v | 0;
  $dir = $dir | 0;
  var $tail = 0, $0 = 0, $cmp = 0, $head = 0, $1 = 0, $other_0 = 0, $low = 0, $2 = 0, $lim = 0, $3 = 0, $cmp3 = 0, $lim7 = 0, $4 = 0, $cmp8 = 0, $weight = 0, $5 = 0.0, $tree_index = 0, $6 = 0, $cmp13 = 0, $cutvalue = 0, $7 = 0, $phitmp = 0.0, $rv_0 = 0.0, $weight20 = 0, $8 = 0.0, $sub = 0.0, $rv_1_in = 0.0, $f_0 = 0, $rv_1 = 0, $cmp24 = 0, $head27 = 0, $_sink_in = 0, $_sink = 0, $cmp28 = 0, $_ = 0, $sub42 = 0, $d_1 = 0, $cmp44 = 0, $sub47 = 0, $sub47_rv_1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $cmp = ($0 | 0) == ($v | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $other_0 = $0;
      label = 4;
      break;
    }
   case 3:
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $other_0 = $1;
    label = 4;
    break;
   case 4:
    $low = $v + 284 | 0;
    $2 = HEAP32[$low >> 2] | 0;
    $lim = $other_0 + 288 | 0;
    $3 = HEAP32[$lim >> 2] | 0;
    $cmp3 = ($2 | 0) > ($3 | 0);
    if ($cmp3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $lim7 = $v + 288 | 0;
    $4 = HEAP32[$lim7 >> 2] | 0;
    $cmp8 = ($3 | 0) > ($4 | 0);
    if ($cmp8) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $weight = $e + 172 | 0;
    $5 = +HEAPF32[$weight >> 2];
    $f_0 = 0;
    $rv_1_in = $5;
    label = 10;
    break;
   case 7:
    $tree_index = $e + 180 | 0;
    $6 = HEAP32[$tree_index >> 2] | 0;
    $cmp13 = ($6 | 0) > -1;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      $rv_0 = 0.0;
      label = 9;
      break;
    }
   case 8:
    $cutvalue = $e + 176 | 0;
    $7 = HEAP32[$cutvalue >> 2] | 0;
    $phitmp = +($7 | 0);
    $rv_0 = $phitmp;
    label = 9;
    break;
   case 9:
    $weight20 = $e + 172 | 0;
    $8 = +HEAPF32[$weight20 >> 2];
    $sub = $rv_0 - $8;
    $f_0 = 1;
    $rv_1_in = $sub;
    label = 10;
    break;
   case 10:
    $rv_1 = ~~$rv_1_in;
    $cmp24 = ($dir | 0) > 0;
    $head27 = $e + 12 | 0;
    $_sink_in = $cmp24 ? $head27 : $tail;
    $_sink = HEAP32[$_sink_in >> 2] | 0;
    $cmp28 = ($_sink | 0) == ($v | 0);
    $_ = $cmp28 ? 1 : -1;
    $sub42 = -$_ | 0;
    $d_1 = $f_0 ? $_ : $sub42;
    $cmp44 = ($d_1 | 0) < 0;
    $sub47 = -$rv_1 | 0;
    $sub47_rv_1 = $cmp44 ? $sub47 : $rv_1;
    return $sub47_rv_1 | 0;
  }
  return 0;
}
function _LR_balance() {
  var $0 = 0, $cmp12 = 0, $i_013 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $cutvalue = 0, $3 = 0, $cmp1 = 0, $call = 0, $cmp2 = 0, $head = 0, $4 = 0, $rank = 0, $5 = 0, $tail = 0, $6 = 0, $rank6 = 0, $7 = 0, $sub = 0, $minlen = 0, $8 = 0, $conv = 0, $sub8 = 0, $cmp9 = 0, $tail13 = 0, $9 = 0, $lim = 0, $10 = 0, $head15 = 0, $11 = 0, $lim17 = 0, $12 = 0, $cmp18 = 0, $div = 0, $div24 = 0, $inc = 0, $13 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41338] | 0;
    $cmp12 = ($0 | 0) > 0;
    if ($cmp12) {
      $i_013 = 0;
      label = 3;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $1 = HEAP32[41340] | 0;
    $arrayidx = $1 + ($i_013 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $cutvalue = $2 + 176 | 0;
    $3 = HEAP32[$cutvalue >> 2] | 0;
    $cmp1 = ($3 | 0) == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 9;
      break;
    }
   case 4:
    $call = _enter_edge($2) | 0;
    $cmp2 = ($call | 0) == 0;
    if ($cmp2) {
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $head = $call + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $rank = $4 + 236 | 0;
    $5 = HEAP32[$rank >> 2] | 0;
    $tail = $call + 16 | 0;
    $6 = HEAP32[$tail >> 2] | 0;
    $rank6 = $6 + 236 | 0;
    $7 = HEAP32[$rank6 >> 2] | 0;
    $sub = $5 - $7 | 0;
    $minlen = $call + 186 | 0;
    $8 = HEAP16[$minlen >> 1] | 0;
    $conv = $8 & 65535;
    $sub8 = $sub - $conv | 0;
    $cmp9 = ($sub8 | 0) < 2;
    if ($cmp9) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $tail13 = $2 + 16 | 0;
    $9 = HEAP32[$tail13 >> 2] | 0;
    $lim = $9 + 288 | 0;
    $10 = HEAP32[$lim >> 2] | 0;
    $head15 = $2 + 12 | 0;
    $11 = HEAP32[$head15 >> 2] | 0;
    $lim17 = $11 + 288 | 0;
    $12 = HEAP32[$lim17 >> 2] | 0;
    $cmp18 = ($10 | 0) < ($12 | 0);
    if ($cmp18) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $div = ($sub8 | 0) / 2 & -1;
    _rerank($9, $div);
    label = 9;
    break;
   case 8:
    $div24 = ($sub8 | 0) / -2 & -1;
    _rerank($11, $div24);
    label = 9;
    break;
   case 9:
    $inc = $i_013 + 1 | 0;
    $13 = HEAP32[41338] | 0;
    $cmp = ($inc | 0) < ($13 | 0);
    if ($cmp) {
      $i_013 = $inc;
      label = 3;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _freeTreeList();
    return;
  }
}
function _rerank($v, $delta) {
  $v = $v | 0;
  $delta = $delta | 0;
  var $rank = 0, $0 = 0, $sub = 0, $list = 0, $1 = 0, $2 = 0, $tobool15 = 0, $par = 0, $list5 = 0, $3 = 0, $4 = 0, $tobool713 = 0, $par10 = 0, $5 = 0, $i_016 = 0, $6 = 0, $cmp = 0, $head = 0, $7 = 0, $inc = 0, $8 = 0, $arrayidx = 0, $9 = 0, $tobool = 0, $10 = 0, $i_114 = 0, $11 = 0, $cmp11 = 0, $tail = 0, $12 = 0, $inc15 = 0, $13 = 0, $arrayidx6 = 0, $14 = 0, $tobool7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $v + 236 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $sub = $0 - $delta | 0;
    HEAP32[$rank >> 2] = $sub;
    $list = $v + 272 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool15 = ($2 | 0) == 0;
    if ($tobool15) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $par = $v + 280 | 0;
    $i_016 = 0;
    $5 = $2;
    label = 6;
    break;
   case 4:
    $list5 = $v + 264 | 0;
    $3 = HEAP32[$list5 >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool713 = ($4 | 0) == 0;
    if ($tobool713) {
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $par10 = $v + 280 | 0;
    $i_114 = 0;
    $10 = $4;
    label = 9;
    break;
   case 6:
    $6 = HEAP32[$par >> 2] | 0;
    $cmp = ($5 | 0) == ($6 | 0);
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $head = $5 + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    _rerank($7, $delta);
    label = 8;
    break;
   case 8:
    $inc = $i_016 + 1 | 0;
    $8 = HEAP32[$list >> 2] | 0;
    $arrayidx = $8 + ($inc << 2) | 0;
    $9 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $i_016 = $inc;
      $5 = $9;
      label = 6;
      break;
    }
   case 9:
    $11 = HEAP32[$par10 >> 2] | 0;
    $cmp11 = ($10 | 0) == ($11 | 0);
    if ($cmp11) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $tail = $10 + 16 | 0;
    $12 = HEAP32[$tail >> 2] | 0;
    _rerank($12, $delta);
    label = 11;
    break;
   case 11:
    $inc15 = $i_114 + 1 | 0;
    $13 = HEAP32[$list5 >> 2] | 0;
    $arrayidx6 = $13 + ($inc15 << 2) | 0;
    $14 = HEAP32[$arrayidx6 >> 2] | 0;
    $tobool7 = ($14 | 0) == 0;
    if ($tobool7) {
      label = 12;
      break;
    } else {
      $i_114 = $inc15;
      $10 = $14;
      label = 9;
      break;
    }
   case 12:
    return;
  }
}
function _dfs_range($v, $par, $low) {
  $v = $v | 0;
  $par = $par | 0;
  $low = $low | 0;
  var $par1 = 0, $low3 = 0, $list = 0, $0 = 0, $1 = 0, $tobool22 = 0, $lim_0_lcssa = 0, $list7 = 0, $2 = 0, $3 = 0, $tobool919 = 0, $4 = 0, $lim_024 = 0, $i_023 = 0, $cmp = 0, $head = 0, $5 = 0, $call = 0, $lim_1 = 0, $inc = 0, $6 = 0, $arrayidx = 0, $7 = 0, $tobool = 0, $8 = 0, $lim_221 = 0, $i_120 = 0, $cmp11 = 0, $tail = 0, $9 = 0, $call13 = 0, $lim_3 = 0, $inc16 = 0, $10 = 0, $arrayidx8 = 0, $11 = 0, $tobool9 = 0, $lim_2_lcssa = 0, $lim19 = 0, $add = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $par1 = $v + 280 | 0;
    HEAP32[$par1 >> 2] = $par;
    $low3 = $v + 284 | 0;
    HEAP32[$low3 >> 2] = $low;
    $list = $v + 272 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool22 = ($1 | 0) == 0;
    if ($tobool22) {
      $lim_0_lcssa = $low;
      label = 3;
      break;
    } else {
      $i_023 = 0;
      $lim_024 = $low;
      $4 = $1;
      label = 4;
      break;
    }
   case 3:
    $list7 = $v + 264 | 0;
    $2 = HEAP32[$list7 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool919 = ($3 | 0) == 0;
    if ($tobool919) {
      $lim_2_lcssa = $lim_0_lcssa;
      label = 10;
      break;
    } else {
      $i_120 = 0;
      $lim_221 = $lim_0_lcssa;
      $8 = $3;
      label = 7;
      break;
    }
   case 4:
    $cmp = ($4 | 0) == ($par | 0);
    if ($cmp) {
      $lim_1 = $lim_024;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $head = $4 + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $call = _dfs_range($5, $4, $lim_024) | 0;
    $lim_1 = $call;
    label = 6;
    break;
   case 6:
    $inc = $i_023 + 1 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $arrayidx = $6 + ($inc << 2) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      $lim_0_lcssa = $lim_1;
      label = 3;
      break;
    } else {
      $i_023 = $inc;
      $lim_024 = $lim_1;
      $4 = $7;
      label = 4;
      break;
    }
   case 7:
    $cmp11 = ($8 | 0) == ($par | 0);
    if ($cmp11) {
      $lim_3 = $lim_221;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $tail = $8 + 16 | 0;
    $9 = HEAP32[$tail >> 2] | 0;
    $call13 = _dfs_range($9, $8, $lim_221) | 0;
    $lim_3 = $call13;
    label = 9;
    break;
   case 9:
    $inc16 = $i_120 + 1 | 0;
    $10 = HEAP32[$list7 >> 2] | 0;
    $arrayidx8 = $10 + ($inc16 << 2) | 0;
    $11 = HEAP32[$arrayidx8 >> 2] | 0;
    $tobool9 = ($11 | 0) == 0;
    if ($tobool9) {
      $lim_2_lcssa = $lim_3;
      label = 10;
      break;
    } else {
      $i_120 = $inc16;
      $lim_221 = $lim_3;
      $8 = $11;
      label = 7;
      break;
    }
   case 10:
    $lim19 = $v + 288 | 0;
    HEAP32[$lim19 >> 2] = $lim_2_lcssa;
    $add = $lim_2_lcssa + 1 | 0;
    return $add | 0;
  }
  return 0;
}
function _dfs_enter_outedge($v) {
  $v = $v | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool24 = 0, $lim30 = 0, $list39 = 0, $2 = 0, $3 = 0, $tobool4120 = 0, $4 = 0, $cmp4221 = 0, $or_cond122 = 0, $lim49 = 0, $5 = 0, $i_025 = 0, $tree_index = 0, $6 = 0, $cmp2 = 0, $7 = 0, $head = 0, $8 = 0, $lim = 0, $9 = 0, $cmp5 = 0, $10 = 0, $cmp10 = 0, $or_cond19 = 0, $rank = 0, $11 = 0, $tail = 0, $12 = 0, $rank16 = 0, $13 = 0, $sub = 0, $minlen = 0, $14 = 0, $conv18 = 0, $sub19 = 0, $15 = 0, $cmp20 = 0, $16 = 0, $cmp22 = 0, $or_cond = 0, $head26 = 0, $17 = 0, $lim28 = 0, $18 = 0, $19 = 0, $cmp31 = 0, $inc = 0, $20 = 0, $arrayidx = 0, $21 = 0, $tobool = 0, $22 = 0, $i_123 = 0, $tail45 = 0, $23 = 0, $lim47 = 0, $24 = 0, $25 = 0, $cmp50 = 0, $inc56 = 0, $26 = 0, $arrayidx40 = 0, $27 = 0, $tobool41 = 0, $28 = 0, $cmp42 = 0, $or_cond1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $v + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool24 = ($1 | 0) == 0;
    if ($tobool24) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $lim30 = $v + 288 | 0;
    $i_025 = 0;
    $5 = $1;
    label = 6;
    break;
   case 4:
    $list39 = $v + 264 | 0;
    $2 = HEAP32[$list39 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool4120 = ($3 | 0) != 0;
    $4 = HEAP32[41360] | 0;
    $cmp4221 = ($4 | 0) > 0;
    $or_cond122 = $tobool4120 & $cmp4221;
    if ($or_cond122) {
      label = 5;
      break;
    } else {
      label = 16;
      break;
    }
   case 5:
    $lim49 = $v + 288 | 0;
    $i_123 = 0;
    $22 = $3;
    label = 13;
    break;
   case 6:
    $tree_index = $5 + 180 | 0;
    $6 = HEAP32[$tree_index >> 2] | 0;
    $cmp2 = ($6 | 0) < 0;
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $7 = HEAP32[41636] | 0;
    $head = $5 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $lim = $8 + 288 | 0;
    $9 = HEAP32[$lim >> 2] | 0;
    $cmp5 = ($7 | 0) > ($9 | 0);
    $10 = HEAP32[41642] | 0;
    $cmp10 = ($9 | 0) > ($10 | 0);
    $or_cond19 = $cmp5 | $cmp10;
    if ($or_cond19) {
      label = 8;
      break;
    } else {
      label = 12;
      break;
    }
   case 8:
    $rank = $8 + 236 | 0;
    $11 = HEAP32[$rank >> 2] | 0;
    $tail = $5 + 16 | 0;
    $12 = HEAP32[$tail >> 2] | 0;
    $rank16 = $12 + 236 | 0;
    $13 = HEAP32[$rank16 >> 2] | 0;
    $sub = $11 - $13 | 0;
    $minlen = $5 + 186 | 0;
    $14 = HEAP16[$minlen >> 1] | 0;
    $conv18 = $14 & 65535;
    $sub19 = $sub - $conv18 | 0;
    $15 = HEAP32[41360] | 0;
    $cmp20 = ($sub19 | 0) < ($15 | 0);
    $16 = HEAP32[41890] | 0;
    $cmp22 = ($16 | 0) == 0;
    $or_cond = $cmp20 | $cmp22;
    if ($or_cond) {
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 9:
    HEAP32[41890] = $5;
    HEAP32[41360] = $sub19;
    label = 12;
    break;
   case 10:
    $head26 = $5 + 12 | 0;
    $17 = HEAP32[$head26 >> 2] | 0;
    $lim28 = $17 + 288 | 0;
    $18 = HEAP32[$lim28 >> 2] | 0;
    $19 = HEAP32[$lim30 >> 2] | 0;
    $cmp31 = ($18 | 0) < ($19 | 0);
    if ($cmp31) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _dfs_enter_outedge($17);
    label = 12;
    break;
   case 12:
    $inc = $i_025 + 1 | 0;
    $20 = HEAP32[$list >> 2] | 0;
    $arrayidx = $20 + ($inc << 2) | 0;
    $21 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($21 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $i_025 = $inc;
      $5 = $21;
      label = 6;
      break;
    }
   case 13:
    $tail45 = $22 + 16 | 0;
    $23 = HEAP32[$tail45 >> 2] | 0;
    $lim47 = $23 + 288 | 0;
    $24 = HEAP32[$lim47 >> 2] | 0;
    $25 = HEAP32[$lim49 >> 2] | 0;
    $cmp50 = ($24 | 0) < ($25 | 0);
    if ($cmp50) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    _dfs_enter_outedge($23);
    label = 15;
    break;
   case 15:
    $inc56 = $i_123 + 1 | 0;
    $26 = HEAP32[$list39 >> 2] | 0;
    $arrayidx40 = $26 + ($inc56 << 2) | 0;
    $27 = HEAP32[$arrayidx40 >> 2] | 0;
    $tobool41 = ($27 | 0) != 0;
    $28 = HEAP32[41360] | 0;
    $cmp42 = ($28 | 0) > 0;
    $or_cond1 = $tobool41 & $cmp42;
    if ($or_cond1) {
      $i_123 = $inc56;
      $22 = $27;
      label = 13;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    return;
  }
}
function _dfs_enter_inedge($v) {
  $v = $v | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool24 = 0, $lim30 = 0, $list39 = 0, $2 = 0, $3 = 0, $tobool4120 = 0, $4 = 0, $cmp4221 = 0, $or_cond122 = 0, $lim49 = 0, $5 = 0, $i_025 = 0, $tree_index = 0, $6 = 0, $cmp2 = 0, $7 = 0, $tail = 0, $8 = 0, $lim = 0, $9 = 0, $cmp5 = 0, $10 = 0, $cmp10 = 0, $or_cond19 = 0, $head = 0, $11 = 0, $rank = 0, $12 = 0, $rank16 = 0, $13 = 0, $sub = 0, $minlen = 0, $14 = 0, $conv18 = 0, $sub19 = 0, $15 = 0, $cmp20 = 0, $16 = 0, $cmp22 = 0, $or_cond = 0, $tail26 = 0, $17 = 0, $lim28 = 0, $18 = 0, $19 = 0, $cmp31 = 0, $inc = 0, $20 = 0, $arrayidx = 0, $21 = 0, $tobool = 0, $22 = 0, $i_123 = 0, $head45 = 0, $23 = 0, $lim47 = 0, $24 = 0, $25 = 0, $cmp50 = 0, $inc56 = 0, $26 = 0, $arrayidx40 = 0, $27 = 0, $tobool41 = 0, $28 = 0, $cmp42 = 0, $or_cond1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $v + 176 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool24 = ($1 | 0) == 0;
    if ($tobool24) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $lim30 = $v + 288 | 0;
    $i_025 = 0;
    $5 = $1;
    label = 6;
    break;
   case 4:
    $list39 = $v + 272 | 0;
    $2 = HEAP32[$list39 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool4120 = ($3 | 0) != 0;
    $4 = HEAP32[41360] | 0;
    $cmp4221 = ($4 | 0) > 0;
    $or_cond122 = $tobool4120 & $cmp4221;
    if ($or_cond122) {
      label = 5;
      break;
    } else {
      label = 16;
      break;
    }
   case 5:
    $lim49 = $v + 288 | 0;
    $i_123 = 0;
    $22 = $3;
    label = 13;
    break;
   case 6:
    $tree_index = $5 + 180 | 0;
    $6 = HEAP32[$tree_index >> 2] | 0;
    $cmp2 = ($6 | 0) < 0;
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $7 = HEAP32[41636] | 0;
    $tail = $5 + 16 | 0;
    $8 = HEAP32[$tail >> 2] | 0;
    $lim = $8 + 288 | 0;
    $9 = HEAP32[$lim >> 2] | 0;
    $cmp5 = ($7 | 0) > ($9 | 0);
    $10 = HEAP32[41642] | 0;
    $cmp10 = ($9 | 0) > ($10 | 0);
    $or_cond19 = $cmp5 | $cmp10;
    if ($or_cond19) {
      label = 8;
      break;
    } else {
      label = 12;
      break;
    }
   case 8:
    $head = $5 + 12 | 0;
    $11 = HEAP32[$head >> 2] | 0;
    $rank = $11 + 236 | 0;
    $12 = HEAP32[$rank >> 2] | 0;
    $rank16 = $8 + 236 | 0;
    $13 = HEAP32[$rank16 >> 2] | 0;
    $sub = $12 - $13 | 0;
    $minlen = $5 + 186 | 0;
    $14 = HEAP16[$minlen >> 1] | 0;
    $conv18 = $14 & 65535;
    $sub19 = $sub - $conv18 | 0;
    $15 = HEAP32[41360] | 0;
    $cmp20 = ($sub19 | 0) < ($15 | 0);
    $16 = HEAP32[41890] | 0;
    $cmp22 = ($16 | 0) == 0;
    $or_cond = $cmp20 | $cmp22;
    if ($or_cond) {
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 9:
    HEAP32[41890] = $5;
    HEAP32[41360] = $sub19;
    label = 12;
    break;
   case 10:
    $tail26 = $5 + 16 | 0;
    $17 = HEAP32[$tail26 >> 2] | 0;
    $lim28 = $17 + 288 | 0;
    $18 = HEAP32[$lim28 >> 2] | 0;
    $19 = HEAP32[$lim30 >> 2] | 0;
    $cmp31 = ($18 | 0) < ($19 | 0);
    if ($cmp31) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _dfs_enter_inedge($17);
    label = 12;
    break;
   case 12:
    $inc = $i_025 + 1 | 0;
    $20 = HEAP32[$list >> 2] | 0;
    $arrayidx = $20 + ($inc << 2) | 0;
    $21 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($21 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $i_025 = $inc;
      $5 = $21;
      label = 6;
      break;
    }
   case 13:
    $head45 = $22 + 12 | 0;
    $23 = HEAP32[$head45 >> 2] | 0;
    $lim47 = $23 + 288 | 0;
    $24 = HEAP32[$lim47 >> 2] | 0;
    $25 = HEAP32[$lim49 >> 2] | 0;
    $cmp50 = ($24 | 0) < ($25 | 0);
    if ($cmp50) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    _dfs_enter_inedge($23);
    label = 15;
    break;
   case 15:
    $inc56 = $i_123 + 1 | 0;
    $26 = HEAP32[$list39 >> 2] | 0;
    $arrayidx40 = $26 + ($inc56 << 2) | 0;
    $27 = HEAP32[$arrayidx40 >> 2] | 0;
    $tobool41 = ($27 | 0) != 0;
    $28 = HEAP32[41360] | 0;
    $cmp42 = ($28 | 0) > 0;
    $or_cond1 = $tobool41 & $cmp42;
    if ($or_cond1) {
      $i_123 = $inc56;
      $22 = $27;
      label = 13;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    return;
  }
}
function _tight_tree() {
  var $0 = 0, $nlist = 0, $n_019 = 0, $tobool20 = 0, $1 = 0, $cmp17 = 0, $n_021 = 0, $mark = 0, $list = 0, $2 = 0, $list4 = 0, $3 = 0, $size = 0, $size10 = 0, $next = 0, $n_0 = 0, $tobool = 0, $i_018 = 0, $4 = 0, $arrayidx14 = 0, $5 = 0, $tree_index = 0, $inc = 0, $6 = 0, $cmp = 0, $7 = 0, $nlist19 = 0, $n_112 = 0, $tobool2113 = 0, $n_116 = 0, $call = 0, $next26 = 0, $n_1 = 0, $tobool21 = 0, $8 = 0, $cmp22 = 0, $or_cond = 0, $9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41882] | 0;
    $nlist = $0 + 220 | 0;
    $n_019 = HEAP32[$nlist >> 2] | 0;
    $tobool20 = ($n_019 | 0) == 0;
    if ($tobool20) {
      label = 3;
      break;
    } else {
      $n_021 = $n_019;
      label = 4;
      break;
    }
   case 3:
    $1 = HEAP32[41338] | 0;
    $cmp17 = ($1 | 0) > 0;
    if ($cmp17) {
      $i_018 = 0;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $mark = $n_021 + 163 | 0;
    HEAP8[$mark] = 0;
    $list = $n_021 + 272 | 0;
    $2 = HEAP32[$list >> 2] | 0;
    HEAP32[$2 >> 2] = 0;
    $list4 = $n_021 + 264 | 0;
    $3 = HEAP32[$list4 >> 2] | 0;
    HEAP32[$3 >> 2] = 0;
    $size = $n_021 + 276 | 0;
    HEAP32[$size >> 2] = 0;
    $size10 = $n_021 + 268 | 0;
    HEAP32[$size10 >> 2] = 0;
    $next = $n_021 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $n_021 = $n_0;
      label = 4;
      break;
    }
   case 5:
    $4 = HEAP32[41340] | 0;
    $arrayidx14 = $4 + ($i_018 << 2) | 0;
    $5 = HEAP32[$arrayidx14 >> 2] | 0;
    $tree_index = $5 + 180 | 0;
    HEAP32[$tree_index >> 2] = -1;
    $inc = $i_018 + 1 | 0;
    $6 = HEAP32[41338] | 0;
    $cmp = ($inc | 0) < ($6 | 0);
    if ($cmp) {
      $i_018 = $inc;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    HEAP32[41338] = 0;
    HEAP32[41334] = 0;
    $7 = HEAP32[41882] | 0;
    $nlist19 = $7 + 220 | 0;
    $n_112 = HEAP32[$nlist19 >> 2] | 0;
    $tobool2113 = ($n_112 | 0) == 0;
    if ($tobool2113) {
      label = 8;
      break;
    } else {
      $n_116 = $n_112;
      label = 7;
      break;
    }
   case 7:
    $call = _treesearch($n_116) | 0;
    $next26 = $n_116 + 168 | 0;
    $n_1 = HEAP32[$next26 >> 2] | 0;
    $tobool21 = ($n_1 | 0) != 0;
    $8 = HEAP32[41338] | 0;
    $cmp22 = ($8 | 0) == 0;
    $or_cond = $tobool21 & $cmp22;
    if ($or_cond) {
      $n_116 = $n_1;
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $9 = HEAP32[41334] | 0;
    return $9 | 0;
  }
  return 0;
}
function _init_cutvalues() {
  _dfs_range(HEAP32[(HEAP32[41882] | 0) + 220 >> 2] | 0, 0, 1);
  _dfs_cutval(HEAP32[(HEAP32[41882] | 0) + 220 >> 2] | 0, 0);
  return;
}
function _dfs_cutval($v, $par) {
  $v = $v | 0;
  $par = $par | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool15 = 0, $list3 = 0, $2 = 0, $3 = 0, $tobool513 = 0, $4 = 0, $i_016 = 0, $cmp = 0, $head = 0, $5 = 0, $inc = 0, $6 = 0, $arrayidx = 0, $7 = 0, $tobool = 0, $8 = 0, $i_114 = 0, $cmp7 = 0, $tail = 0, $9 = 0, $inc11 = 0, $10 = 0, $arrayidx4 = 0, $11 = 0, $tobool5 = 0, $tobool13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $v + 272 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool15 = ($1 | 0) == 0;
    if ($tobool15) {
      label = 3;
      break;
    } else {
      $i_016 = 0;
      $4 = $1;
      label = 4;
      break;
    }
   case 3:
    $list3 = $v + 264 | 0;
    $2 = HEAP32[$list3 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool513 = ($3 | 0) == 0;
    if ($tobool513) {
      label = 10;
      break;
    } else {
      $i_114 = 0;
      $8 = $3;
      label = 7;
      break;
    }
   case 4:
    $cmp = ($4 | 0) == ($par | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $head = $4 + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    _dfs_cutval($5, $4);
    label = 6;
    break;
   case 6:
    $inc = $i_016 + 1 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $arrayidx = $6 + ($inc << 2) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $i_016 = $inc;
      $4 = $7;
      label = 4;
      break;
    }
   case 7:
    $cmp7 = ($8 | 0) == ($par | 0);
    if ($cmp7) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $tail = $8 + 16 | 0;
    $9 = HEAP32[$tail >> 2] | 0;
    _dfs_cutval($9, $8);
    label = 9;
    break;
   case 9:
    $inc11 = $i_114 + 1 | 0;
    $10 = HEAP32[$list3 >> 2] | 0;
    $arrayidx4 = $10 + ($inc11 << 2) | 0;
    $11 = HEAP32[$arrayidx4 >> 2] | 0;
    $tobool5 = ($11 | 0) == 0;
    if ($tobool5) {
      label = 10;
      break;
    } else {
      $i_114 = $inc11;
      $8 = $11;
      label = 7;
      break;
    }
   case 10:
    $tobool13 = ($par | 0) == 0;
    if ($tobool13) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _x_cutval($par);
    label = 12;
    break;
   case 12:
    return;
  }
}
function _x_cutval($f) {
  $f = $f | 0;
  var $tail = 0, $0 = 0, $par = 0, $1 = 0, $cmp = 0, $head = 0, $2 = 0, $v_0 = 0, $dir_0 = 0, $list = 0, $3 = 0, $4 = 0, $tobool17 = 0, $5 = 0, $sum_0_lcssa = 0, $list5 = 0, $6 = 0, $7 = 0, $tobool714 = 0, $8 = 0, $9 = 0, $sum_019 = 0, $i_018 = 0, $call = 0, $add = 0, $inc = 0, $arrayidx = 0, $10 = 0, $tobool = 0, $11 = 0, $sum_116 = 0, $i_115 = 0, $call9 = 0, $add10 = 0, $inc12 = 0, $arrayidx6 = 0, $12 = 0, $tobool7 = 0, $sum_1_lcssa = 0, $cutvalue = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $f + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $par = $0 + 280 | 0;
    $1 = HEAP32[$par >> 2] | 0;
    $cmp = ($1 | 0) == ($f | 0);
    if ($cmp) {
      $dir_0 = 1;
      $v_0 = $0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $f + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $dir_0 = -1;
    $v_0 = $2;
    label = 4;
    break;
   case 4:
    $list = $v_0 + 184 | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool17 = ($4 | 0) == 0;
    if ($tobool17) {
      $sum_0_lcssa = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP32[$list >> 2] | 0;
    $i_018 = 0;
    $sum_019 = 0;
    $9 = $4;
    label = 8;
    break;
   case 6:
    $list5 = $v_0 + 176 | 0;
    $6 = HEAP32[$list5 >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $tobool714 = ($7 | 0) == 0;
    if ($tobool714) {
      $sum_1_lcssa = $sum_0_lcssa;
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $8 = HEAP32[$list5 >> 2] | 0;
    $i_115 = 0;
    $sum_116 = $sum_0_lcssa;
    $11 = $7;
    label = 9;
    break;
   case 8:
    $call = _x_val($9, $v_0, $dir_0) | 0;
    $add = $call + $sum_019 | 0;
    $inc = $i_018 + 1 | 0;
    $arrayidx = $5 + ($inc << 2) | 0;
    $10 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($10 | 0) == 0;
    if ($tobool) {
      $sum_0_lcssa = $add;
      label = 6;
      break;
    } else {
      $i_018 = $inc;
      $sum_019 = $add;
      $9 = $10;
      label = 8;
      break;
    }
   case 9:
    $call9 = _x_val($11, $v_0, $dir_0) | 0;
    $add10 = $call9 + $sum_116 | 0;
    $inc12 = $i_115 + 1 | 0;
    $arrayidx6 = $8 + ($inc12 << 2) | 0;
    $12 = HEAP32[$arrayidx6 >> 2] | 0;
    $tobool7 = ($12 | 0) == 0;
    if ($tobool7) {
      $sum_1_lcssa = $add10;
      label = 10;
      break;
    } else {
      $i_115 = $inc12;
      $sum_116 = $add10;
      $11 = $12;
      label = 9;
      break;
    }
   case 10:
    $cutvalue = $f + 176 | 0;
    HEAP32[$cutvalue >> 2] = $sum_1_lcssa;
    return;
  }
}
function _cmppair($d, $key1, $key2, $disc) {
  $d = $d | 0;
  $key1 = $key1 | 0;
  $key2 = $key2 | 0;
  $disc = $disc | 0;
  var $x = 0, $0 = 0, $x1 = 0, $1 = 0, $cmp = 0, $cmp4 = 0, $y = 0, $2 = 0, $y7 = 0, $3 = 0, $cmp8 = 0, $cmp13 = 0, $_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $key1 | 0;
    $0 = HEAP32[$x >> 2] | 0;
    $x1 = $key2 | 0;
    $1 = HEAP32[$x1 >> 2] | 0;
    $cmp = ($0 | 0) > ($1 | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp4 = ($0 | 0) < ($1 | 0);
    if ($cmp4) {
      $retval_0 = -1;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $key1 + 4 | 0;
    $2 = HEAP32[$y >> 2] | 0;
    $y7 = $key2 + 4 | 0;
    $3 = HEAP32[$y7 >> 2] | 0;
    $cmp8 = ($2 | 0) > ($3 | 0);
    if ($cmp8) {
      $retval_0 = 1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp13 = ($2 | 0) < ($3 | 0);
    $_ = $cmp13 << 31 >> 31;
    $retval_0 = $_;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _pointfof693($agg_result, $x, $y) {
  $agg_result = $agg_result | 0;
  $x = +$x;
  $y = +$y;
  HEAPF64[$agg_result >> 3] = $x;
  HEAPF64[$agg_result + 8 >> 3] = $y;
  return;
}
function _treesearch($v) {
  $v = $v | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool19 = 0, $list21 = 0, $2 = 0, $3 = 0, $tobool2316 = 0, $4 = 0, $i_020 = 0, $head = 0, $5 = 0, $mark = 0, $6 = 0, $cmp = 0, $rank = 0, $7 = 0, $tail = 0, $8 = 0, $rank6 = 0, $9 = 0, $sub = 0, $minlen = 0, $10 = 0, $conv8 = 0, $cmp10 = 0, $11 = 0, $12 = 0, $sub12 = 0, $cmp13 = 0, $13 = 0, $call = 0, $tobool16 = 0, $inc = 0, $14 = 0, $arrayidx = 0, $15 = 0, $tobool = 0, $16 = 0, $i_117 = 0, $tail25 = 0, $17 = 0, $mark27 = 0, $18 = 0, $cmp29 = 0, $head32 = 0, $19 = 0, $rank34 = 0, $20 = 0, $rank37 = 0, $21 = 0, $sub38 = 0, $minlen40 = 0, $22 = 0, $conv41 = 0, $cmp43 = 0, $23 = 0, $24 = 0, $sub46 = 0, $cmp47 = 0, $25 = 0, $call51 = 0, $tobool52 = 0, $inc57 = 0, $26 = 0, $arrayidx22 = 0, $27 = 0, $tobool23 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $v + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool19 = ($1 | 0) == 0;
    if ($tobool19) {
      label = 3;
      break;
    } else {
      $i_020 = 0;
      $4 = $1;
      label = 4;
      break;
    }
   case 3:
    $list21 = $v + 176 | 0;
    $2 = HEAP32[$list21 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool2316 = ($3 | 0) == 0;
    if ($tobool2316) {
      $retval_0 = 0;
      label = 14;
      break;
    } else {
      $i_117 = 0;
      $16 = $3;
      label = 9;
      break;
    }
   case 4:
    $head = $4 + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $mark = $5 + 163 | 0;
    $6 = HEAP8[$mark] | 0;
    $cmp = $6 << 24 >> 24 == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $rank = $5 + 236 | 0;
    $7 = HEAP32[$rank >> 2] | 0;
    $tail = $4 + 16 | 0;
    $8 = HEAP32[$tail >> 2] | 0;
    $rank6 = $8 + 236 | 0;
    $9 = HEAP32[$rank6 >> 2] | 0;
    $sub = $7 - $9 | 0;
    $minlen = $4 + 186 | 0;
    $10 = HEAP16[$minlen >> 1] | 0;
    $conv8 = $10 & 65535;
    $cmp10 = ($sub | 0) == ($conv8 | 0);
    if ($cmp10) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    _add_tree_edge($4);
    $11 = HEAP32[41338] | 0;
    $12 = HEAP32[41584] | 0;
    $sub12 = $12 - 1 | 0;
    $cmp13 = ($11 | 0) == ($sub12 | 0);
    if ($cmp13) {
      $retval_0 = 1;
      label = 14;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $13 = HEAP32[$head >> 2] | 0;
    $call = _treesearch($13) | 0;
    $tobool16 = ($call | 0) == 0;
    if ($tobool16) {
      label = 8;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 8:
    $inc = $i_020 + 1 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $arrayidx = $14 + ($inc << 2) | 0;
    $15 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($15 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $i_020 = $inc;
      $4 = $15;
      label = 4;
      break;
    }
   case 9:
    $tail25 = $16 + 16 | 0;
    $17 = HEAP32[$tail25 >> 2] | 0;
    $mark27 = $17 + 163 | 0;
    $18 = HEAP8[$mark27] | 0;
    $cmp29 = $18 << 24 >> 24 == 0;
    if ($cmp29) {
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    $head32 = $16 + 12 | 0;
    $19 = HEAP32[$head32 >> 2] | 0;
    $rank34 = $19 + 236 | 0;
    $20 = HEAP32[$rank34 >> 2] | 0;
    $rank37 = $17 + 236 | 0;
    $21 = HEAP32[$rank37 >> 2] | 0;
    $sub38 = $20 - $21 | 0;
    $minlen40 = $16 + 186 | 0;
    $22 = HEAP16[$minlen40 >> 1] | 0;
    $conv41 = $22 & 65535;
    $cmp43 = ($sub38 | 0) == ($conv41 | 0);
    if ($cmp43) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    _add_tree_edge($16);
    $23 = HEAP32[41338] | 0;
    $24 = HEAP32[41584] | 0;
    $sub46 = $24 - 1 | 0;
    $cmp47 = ($23 | 0) == ($sub46 | 0);
    if ($cmp47) {
      $retval_0 = 1;
      label = 14;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $25 = HEAP32[$tail25 >> 2] | 0;
    $call51 = _treesearch($25) | 0;
    $tobool52 = ($call51 | 0) == 0;
    if ($tobool52) {
      label = 13;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 13:
    $inc57 = $i_117 + 1 | 0;
    $26 = HEAP32[$list21 >> 2] | 0;
    $arrayidx22 = $26 + ($inc57 << 2) | 0;
    $27 = HEAP32[$arrayidx22 >> 2] | 0;
    $tobool23 = ($27 | 0) == 0;
    if ($tobool23) {
      $retval_0 = 0;
      label = 14;
      break;
    } else {
      $i_117 = $inc57;
      $16 = $27;
      label = 9;
      break;
    }
   case 14:
    return $retval_0 | 0;
  }
  return 0;
}
function _newPS() {
  return _dtopen(12728, HEAP32[41978] | 0) | 0;
}
function _freePS($ps) {
  $ps = $ps | 0;
  _dtclose($ps);
  return;
}
function _mkPair($p) {
  $p = $p | 0;
  var $call = 0, $1 = 0, $2 = 0, $3$1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  $call = _zmalloc(16) | 0;
  $1 = $p;
  $2 = $call + 8 | 0;
  $3$1 = HEAP32[$1 + 4 >> 2] | 0;
  HEAP32[$2 >> 2] = HEAP32[$1 >> 2] | 0;
  HEAP32[$2 + 4 >> 2] = $3$1;
  STACKTOP = __stackBase__;
  return $call | 0;
}
function _addPS($ps, $x, $y) {
  $ps = $ps | 0;
  $x = $x | 0;
  $y = $y | 0;
  var $pt = 0, $0 = 0, $1 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  $pt = __stackBase__ | 0;
  HEAP32[$pt >> 2] = $x;
  HEAP32[$pt + 4 >> 2] = $y;
  $0 = HEAP32[$ps >> 2] | 0;
  $1 = _mkPair($pt) | 0;
  FUNCTION_TABLE_iiii[$0 & 1023]($ps, $1, 1);
  STACKTOP = __stackBase__;
  return;
}
function _isInPS($ps, $x, $y) {
  $ps = $ps | 0;
  $x = $x | 0;
  $y = $y | 0;
  var $p = 0, $cond = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  $p = __stackBase__ | 0;
  HEAP32[$p + 8 >> 2] = $x;
  HEAP32[$p + 12 >> 2] = $y;
  $cond = (FUNCTION_TABLE_iiii[HEAP32[$ps >> 2] & 1023]($ps, $p, 4) | 0) != 0 & 1;
  STACKTOP = __stackBase__;
  return $cond | 0;
}
function _freePair($d, $pp, $disc) {
  $d = $d | 0;
  $pp = $pp | 0;
  $disc = $disc | 0;
  _free($pp);
  return;
}
function _translate_bb($g, $rankdir) {
  $g = $g | 0;
  $rankdir = $rankdir | 0;
  var $new_bb = 0, $agg_tmp = 0, $agg_tmp5 = 0, $tmp10 = 0, $agg_tmp12 = 0, $agg_tmp19 = 0, $tmp24 = 0, $tmp34 = 0, $bb_sroa_0_0__idx = 0, $bb_sroa_0_0_copyload = 0.0, $bb_sroa_1_8__idx1 = 0, $bb_sroa_1_8_copyload = 0.0, $bb_sroa_2_16__idx3 = 0, $bb_sroa_2_16_copyload = 0.0, $bb_sroa_3_24__idx5 = 0, $bb_sroa_3_24_copyload = 0.0, $rankdir_off = 0, $0 = 0, $new_bb19 = 0, $UR4 = 0, $1 = 0, $2 = 0, $new_bb20 = 0, $UR18 = 0, $3 = 0, $4 = 0, $bb26 = 0, $5 = 0, $6 = 0, $label = 0, $7 = 0, $tobool = 0, $pos = 0, $8 = 0, $9 = 0, $n_cluster = 0, $10 = 0, $cmp3717 = 0, $clust = 0, $c_018 = 0, $11 = 0, $arrayidx = 0, $12 = 0, $inc = 0, $13 = 0, $cmp37 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $new_bb = __stackBase__ | 0;
    $agg_tmp = __stackBase__ + 32 | 0;
    $agg_tmp5 = __stackBase__ + 48 | 0;
    $tmp10 = __stackBase__ + 64 | 0;
    $agg_tmp12 = __stackBase__ + 80 | 0;
    $agg_tmp19 = __stackBase__ + 96 | 0;
    $tmp24 = __stackBase__ + 112 | 0;
    $tmp34 = __stackBase__ + 128 | 0;
    $bb_sroa_0_0__idx = $g + 56 | 0;
    $bb_sroa_0_0_copyload = +HEAPF64[$bb_sroa_0_0__idx >> 3];
    $bb_sroa_1_8__idx1 = $g + 64 | 0;
    $bb_sroa_1_8_copyload = +HEAPF64[$bb_sroa_1_8__idx1 >> 3];
    $bb_sroa_2_16__idx3 = $g + 72 | 0;
    $bb_sroa_2_16_copyload = +HEAPF64[$bb_sroa_2_16__idx3 >> 3];
    $bb_sroa_3_24__idx5 = $g + 80 | 0;
    $bb_sroa_3_24_copyload = +HEAPF64[$bb_sroa_3_24__idx5 >> 3];
    $rankdir_off = $rankdir - 1 | 0;
    $0 = $rankdir_off >>> 0 < 2;
    if ($0) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _pointfof693($agg_tmp, $bb_sroa_0_0_copyload, $bb_sroa_3_24_copyload);
    $new_bb19 = $new_bb | 0;
    _map_point692($new_bb19, $agg_tmp);
    $UR4 = $new_bb + 16 | 0;
    _pointfof693($agg_tmp5, $bb_sroa_2_16_copyload, $bb_sroa_1_8_copyload);
    _map_point692($tmp10, $agg_tmp5);
    $1 = $UR4;
    $2 = $tmp10;
    HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    label = 5;
    break;
   case 4:
    _pointfof693($agg_tmp12, $bb_sroa_0_0_copyload, $bb_sroa_1_8_copyload);
    $new_bb20 = $new_bb | 0;
    _map_point692($new_bb20, $agg_tmp12);
    $UR18 = $new_bb + 16 | 0;
    _pointfof693($agg_tmp19, $bb_sroa_2_16_copyload, $bb_sroa_3_24_copyload);
    _map_point692($tmp24, $agg_tmp19);
    $3 = $UR18;
    $4 = $tmp24;
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    label = 5;
    break;
   case 5:
    $bb26 = $g + 56 | 0;
    $5 = $bb26;
    $6 = $new_bb;
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    HEAP32[$5 + 16 >> 2] = HEAP32[$6 + 16 >> 2] | 0;
    HEAP32[$5 + 20 >> 2] = HEAP32[$6 + 20 >> 2] | 0;
    HEAP32[$5 + 24 >> 2] = HEAP32[$6 + 24 >> 2] | 0;
    HEAP32[$5 + 28 >> 2] = HEAP32[$6 + 28 >> 2] | 0;
    $label = $g + 52 | 0;
    $7 = HEAP32[$label >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $pos = $7 + 56 | 0;
    _map_point692($tmp34, $pos);
    $8 = $pos;
    $9 = $tmp34;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    label = 7;
    break;
   case 7:
    $n_cluster = $g + 212 | 0;
    $10 = HEAP32[$n_cluster >> 2] | 0;
    $cmp3717 = ($10 | 0) < 1;
    if ($cmp3717) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $clust = $g + 216 | 0;
    $c_018 = 1;
    label = 9;
    break;
   case 9:
    $11 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $11 + ($c_018 << 2) | 0;
    $12 = HEAP32[$arrayidx >> 2] | 0;
    _translate_bb($12, $rankdir);
    $inc = $c_018 + 1 | 0;
    $13 = HEAP32[$n_cluster >> 2] | 0;
    $cmp37 = ($inc | 0) > ($13 | 0);
    if ($cmp37) {
      label = 10;
      break;
    } else {
      $c_018 = $inc;
      label = 9;
      break;
    }
   case 10:
    STACKTOP = __stackBase__;
    return;
  }
}
function _map_point692($agg_result, $p) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  var $tmp = 0, $1 = 0, $2 = 0, $x = 0, $y = 0, $7 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $tmp = __stackBase__ | 0;
  _ccwrotatepf($tmp, $p, (HEAP32[41540] | 0) * 90 & -1);
  $1 = $p;
  $2 = $tmp;
  HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
  HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
  HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
  HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
  $x = $p | 0;
  HEAPF64[$x >> 3] = +HEAPF64[$x >> 3] - +HEAPF64[20772];
  $y = $p + 8 | 0;
  HEAPF64[$y >> 3] = +HEAPF64[$y >> 3] - +HEAPF64[20773];
  $7 = $agg_result;
  HEAP32[$7 >> 2] = HEAP32[$1 >> 2] | 0;
  HEAP32[$7 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
  HEAP32[$7 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
  HEAP32[$7 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _gv_postprocess($g, $allowTranslation) {
  $g = $g | 0;
  $allowTranslation = $allowTranslation | 0;
  var $dimen = 0, $tmp = 0, $tmp172 = 0, $tmp182 = 0, $buf = 0, $0 = 0, $rankdir = 0, $1 = 0, $and = 0, $2 = 0, $_tr = 0, $conv = 0, $tobool = 0, $label = 0, $3 = 0, $tobool6 = 0, $set = 0, $4 = 0, $tobool9 = 0, $dimen13 = 0, $5 = 0, $x = 0, $6 = 0.0, $add = 0.0, $y = 0, $7 = 0.0, $add14 = 0.0, $8 = 0, $tobool15 = 0, $label_pos = 0, $9 = 0, $and19 = 0, $tobool20 = 0, $x24 = 0, $10 = 0.0, $add25 = 0.0, $x30 = 0, $11 = 0.0, $sub = 0.0, $12 = 0.0, $y36 = 0, $13 = 0.0, $y40 = 0, $14 = 0.0, $sub41 = 0.0, $cmp = 0, $sub54 = 0.0, $div = 0.0, $sub59 = 0.0, $15 = 0.0, $add64 = 0.0, $16 = 0, $cmp73 = 0, $y80 = 0, $17 = 0.0, $add81 = 0.0, $y87 = 0, $18 = 0.0, $sub88 = 0.0, $y98 = 0, $19 = 0.0, $sub99 = 0.0, $y105 = 0, $20 = 0.0, $add106 = 0.0, $21 = 0.0, $x113 = 0, $22 = 0.0, $x117 = 0, $23 = 0.0, $sub118 = 0.0, $cmp119 = 0, $sub132 = 0.0, $div133 = 0.0, $sub138 = 0.0, $24 = 0.0, $add143 = 0.0, $tobool147 = 0, $25 = 0, $LL151 = 0, $26 = 0, $y156 = 0, $27 = 0.0, $sub157 = 0.0, $x161 = 0, $28 = 0.0, $29 = 0, $x166 = 0, $30 = 0.0, $y170 = 0, $31 = 0.0, $sub171 = 0.0, $32 = 0, $y177 = 0, $33 = 0.0, $x181 = 0, $34 = 0.0, $35 = 0, $36 = 0, $tobool186 = 0, $set190 = 0, $37 = 0, $tobool191 = 0, $38 = 0, $tobool194 = 0, $39 = 0, $tobool197 = 0, $arraydecay = 0, $40 = 0.0, $41 = 0.0, $call = 0, $42 = 0.0, $43 = 0.0, $sub201 = 0.0, $sub202 = 0.0, $call203 = 0, $call206 = 0, $44 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1088 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dimen = __stackBase__ | 0;
    $tmp = __stackBase__ + 16 | 0;
    $tmp172 = __stackBase__ + 32 | 0;
    $tmp182 = __stackBase__ + 48 | 0;
    $buf = __stackBase__ + 64 | 0;
    $0 = $dimen;
    _memset($0 | 0, 0, 16);
    _addXLabels($g);
    $rankdir = $g + 156 | 0;
    $1 = HEAP32[$rankdir >> 2] | 0;
    $and = $1 & 3;
    HEAP32[41540] = $and;
    $2 = HEAP32[$rankdir >> 2] | 0;
    $_tr = $2 & 255;
    $conv = $_tr & 1;
    HEAP8[167536] = $conv;
    $tobool = $conv << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _place_flip_graph_label($g);
    label = 5;
    break;
   case 4:
    _place_graph_label($g);
    label = 5;
    break;
   case 5:
    $label = $g + 52 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $tobool6 = ($3 | 0) == 0;
    if ($tobool6) {
      label = 22;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $set = $3 + 81 | 0;
    $4 = HEAP8[$set] | 0;
    $tobool9 = $4 << 24 >> 24 == 0;
    if ($tobool9) {
      label = 7;
      break;
    } else {
      label = 22;
      break;
    }
   case 7:
    $dimen13 = $3 + 24 | 0;
    $5 = $dimen13;
    HEAP32[$0 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $x = $dimen | 0;
    $6 = +HEAPF64[$x >> 3];
    $add = $6 + 16.0;
    HEAPF64[$x >> 3] = $add;
    $y = $dimen + 8 | 0;
    $7 = +HEAPF64[$y >> 3];
    $add14 = $7 + 8.0;
    HEAPF64[$y >> 3] = $add14;
    $8 = HEAP8[167536] | 0;
    $tobool15 = $8 << 24 >> 24 == 0;
    $label_pos = $g + 287 | 0;
    $9 = HEAP8[$label_pos] | 0;
    $and19 = $9 & 1;
    $tobool20 = $and19 << 24 >> 24 != 0;
    if ($tobool15) {
      label = 13;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    if ($tobool20) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $x24 = $g + 72 | 0;
    $10 = +HEAPF64[$x24 >> 3];
    $add25 = $add14 + $10;
    HEAPF64[$x24 >> 3] = $add25;
    label = 11;
    break;
   case 10:
    $x30 = $g + 56 | 0;
    $11 = +HEAPF64[$x30 >> 3];
    $sub = $11 - $add14;
    HEAPF64[$x30 >> 3] = $sub;
    label = 11;
    break;
   case 11:
    $12 = +HEAPF64[$x >> 3];
    $y36 = $g + 80 | 0;
    $13 = +HEAPF64[$y36 >> 3];
    $y40 = $g + 64 | 0;
    $14 = +HEAPF64[$y40 >> 3];
    $sub41 = $13 - $14;
    $cmp = $12 > $sub41;
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 22;
      break;
    }
   case 12:
    $sub54 = $12 - $sub41;
    $div = $sub54 * .5;
    $sub59 = $14 - $div;
    HEAPF64[$y40 >> 3] = $sub59;
    $15 = +HEAPF64[$y36 >> 3];
    $add64 = $div + $15;
    HEAPF64[$y36 >> 3] = $add64;
    label = 22;
    break;
   case 13:
    $16 = HEAP32[41540] | 0;
    $cmp73 = ($16 | 0) == 0;
    if ($tobool20) {
      label = 14;
      break;
    } else {
      label = 17;
      break;
    }
   case 14:
    if ($cmp73) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $y80 = $g + 80 | 0;
    $17 = +HEAPF64[$y80 >> 3];
    $add81 = $add14 + $17;
    HEAPF64[$y80 >> 3] = $add81;
    label = 20;
    break;
   case 16:
    $y87 = $g + 64 | 0;
    $18 = +HEAPF64[$y87 >> 3];
    $sub88 = $18 - $add14;
    HEAPF64[$y87 >> 3] = $sub88;
    label = 20;
    break;
   case 17:
    if ($cmp73) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $y98 = $g + 64 | 0;
    $19 = +HEAPF64[$y98 >> 3];
    $sub99 = $19 - $add14;
    HEAPF64[$y98 >> 3] = $sub99;
    label = 20;
    break;
   case 19:
    $y105 = $g + 80 | 0;
    $20 = +HEAPF64[$y105 >> 3];
    $add106 = $add14 + $20;
    HEAPF64[$y105 >> 3] = $add106;
    label = 20;
    break;
   case 20:
    $21 = +HEAPF64[$x >> 3];
    $x113 = $g + 72 | 0;
    $22 = +HEAPF64[$x113 >> 3];
    $x117 = $g + 56 | 0;
    $23 = +HEAPF64[$x117 >> 3];
    $sub118 = $22 - $23;
    $cmp119 = $21 > $sub118;
    if ($cmp119) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $sub132 = $21 - $sub118;
    $div133 = $sub132 * .5;
    $sub138 = $23 - $div133;
    HEAPF64[$x117 >> 3] = $sub138;
    $24 = +HEAPF64[$x113 >> 3];
    $add143 = $div133 + $24;
    HEAPF64[$x113 >> 3] = $add143;
    label = 22;
    break;
   case 22:
    $tobool147 = ($allowTranslation | 0) == 0;
    if ($tobool147) {
      label = 29;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $25 = HEAP32[41540] | 0;
    if (($25 | 0) == 0) {
      label = 24;
      break;
    } else if (($25 | 0) == 1) {
      label = 25;
      break;
    } else if (($25 | 0) == 2) {
      label = 26;
      break;
    } else if (($25 | 0) == 3) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 24:
    $LL151 = $g + 56 | 0;
    $26 = $LL151;
    HEAP32[41544] = HEAP32[$26 >> 2] | 0;
    HEAP32[41545] = HEAP32[$26 + 4 >> 2] | 0;
    HEAP32[41546] = HEAP32[$26 + 8 >> 2] | 0;
    HEAP32[41547] = HEAP32[$26 + 12 >> 2] | 0;
    label = 28;
    break;
   case 25:
    $y156 = $g + 80 | 0;
    $27 = +HEAPF64[$y156 >> 3];
    $sub157 = -0.0 - $27;
    $x161 = $g + 56 | 0;
    $28 = +HEAPF64[$x161 >> 3];
    _pointfof693($tmp, $sub157, $28);
    $29 = $tmp;
    HEAP32[41544] = HEAP32[$29 >> 2] | 0;
    HEAP32[41545] = HEAP32[$29 + 4 >> 2] | 0;
    HEAP32[41546] = HEAP32[$29 + 8 >> 2] | 0;
    HEAP32[41547] = HEAP32[$29 + 12 >> 2] | 0;
    label = 28;
    break;
   case 26:
    $x166 = $g + 56 | 0;
    $30 = +HEAPF64[$x166 >> 3];
    $y170 = $g + 80 | 0;
    $31 = +HEAPF64[$y170 >> 3];
    $sub171 = -0.0 - $31;
    _pointfof693($tmp172, $30, $sub171);
    $32 = $tmp172;
    HEAP32[41544] = HEAP32[$32 >> 2] | 0;
    HEAP32[41545] = HEAP32[$32 + 4 >> 2] | 0;
    HEAP32[41546] = HEAP32[$32 + 8 >> 2] | 0;
    HEAP32[41547] = HEAP32[$32 + 12 >> 2] | 0;
    label = 28;
    break;
   case 27:
    $y177 = $g + 64 | 0;
    $33 = +HEAPF64[$y177 >> 3];
    $x181 = $g + 56 | 0;
    $34 = +HEAPF64[$x181 >> 3];
    _pointfof693($tmp182, $33, $34);
    $35 = $tmp182;
    HEAP32[41544] = HEAP32[$35 >> 2] | 0;
    HEAP32[41545] = HEAP32[$35 + 4 >> 2] | 0;
    HEAP32[41546] = HEAP32[$35 + 8 >> 2] | 0;
    HEAP32[41547] = HEAP32[$35 + 12 >> 2] | 0;
    label = 28;
    break;
   case 28:
    _translate_drawing($g);
    label = 29;
    break;
   case 29:
    $36 = HEAP32[$label >> 2] | 0;
    $tobool186 = ($36 | 0) == 0;
    if ($tobool186) {
      label = 32;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $set190 = $36 + 81 | 0;
    $37 = HEAP8[$set190] | 0;
    $tobool191 = $37 << 24 >> 24 == 0;
    if ($tobool191) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    _place_root_label($g, $dimen);
    label = 32;
    break;
   case 32:
    $38 = HEAP32[41362] | 0;
    $tobool194 = ($38 | 0) == 0;
    if ($tobool194) {
      label = 37;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $39 = HEAP8[167536] | 0;
    $tobool197 = $39 << 24 >> 24 == 0;
    $arraydecay = $buf | 0;
    if ($tobool197) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $40 = +HEAPF64[20772];
    $41 = +HEAPF64[20773];
    $call = _sprintf($arraydecay | 0, 101192, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $40, HEAPF64[tempInt + 8 >> 3] = $41, HEAPF64[tempInt + 16 >> 3] = $40, HEAPF64[tempInt + 24 >> 3] = $41, tempInt) | 0) | 0;
    label = 36;
    break;
   case 35:
    $42 = +HEAPF64[20773];
    $43 = +HEAPF64[20772];
    $sub201 = -0.0 - $43;
    $sub202 = -0.0 - $42;
    $call203 = _sprintf($arraydecay | 0, 140248, (tempInt = STACKTOP, STACKTOP = STACKTOP + 48 | 0, HEAPF64[tempInt >> 3] = $42, HEAPF64[tempInt + 8 >> 3] = $43, HEAPF64[tempInt + 16 >> 3] = $42, HEAPF64[tempInt + 24 >> 3] = $43, HEAPF64[tempInt + 32 >> 3] = $sub201, HEAPF64[tempInt + 40 >> 3] = $sub202, tempInt) | 0) | 0;
    label = 36;
    break;
   case 36:
    $call206 = _strdup($arraydecay | 0) | 0;
    $44 = HEAP32[41362] | 0;
    HEAP32[$44 >> 2] = $call206;
    label = 37;
    break;
   case 37:
    STACKTOP = __stackBase__;
    return;
  }
}
function _addXLabels($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool11 = 0, $n_0_in13 = 0, $pp_sroa_0_012 = 0.0, $xlabel = 0, $1 = 0, $tobool1 = 0, $u = 0, $p_sroa_0_0__idx = 0, $2 = 0, $p_sroa_0_0_copyload = 0.0, $p_sroa_1_8__idx6 = 0, $3 = 0, $p_sroa_1_8_copyload = 0.0, $rw = 0, $4 = 0, $5 = 0.0, $add = 0.0, $dimen = 0, $x5 = 0, $6 = 0.0, $div = 0.0, $add6 = 0.0, $add8 = 0.0, $pp_sroa_0_0__idx = 0, $7 = 0, $pp_sroa_1_8__idx5 = 0, $8 = 0, $9 = 0, $pp_sroa_0_1 = 0.0, $call9 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool11 = ($call | 0) == 0;
    if ($tobool11) {
      label = 6;
      break;
    } else {
      $pp_sroa_0_012 = 0.0;
      $n_0_in13 = $call;
      label = 3;
      break;
    }
   case 3:
    $xlabel = $n_0_in13 + 124 | 0;
    $1 = HEAP32[$xlabel >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      $pp_sroa_0_1 = $pp_sroa_0_012;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $u = $n_0_in13 + 24 | 0;
    $p_sroa_0_0__idx = $n_0_in13 + 32 | 0;
    $2 = $p_sroa_0_0__idx;
    $p_sroa_0_0_copyload = +HEAPF64[$2 >> 3];
    $p_sroa_1_8__idx6 = $n_0_in13 + 40 | 0;
    $3 = $p_sroa_1_8__idx6;
    $p_sroa_1_8_copyload = +HEAPF64[$3 >> 3];
    $rw = $u + 88 | 0;
    $4 = $rw;
    $5 = +HEAPF64[$4 >> 3];
    $add = $p_sroa_0_0_copyload + $5;
    $dimen = $1 + 24 | 0;
    $x5 = $dimen;
    $6 = +HEAPF64[$x5 >> 3];
    $div = $6 * .5;
    $add6 = $add + $div;
    $add8 = $pp_sroa_0_012 + $add6;
    $pp_sroa_0_0__idx = $1 + 56 | 0;
    $7 = $pp_sroa_0_0__idx;
    HEAPF64[$7 >> 3] = $add8;
    $pp_sroa_1_8__idx5 = $1 + 64 | 0;
    $8 = $pp_sroa_1_8__idx5;
    HEAPF64[$8 >> 3] = $p_sroa_1_8_copyload;
    $9 = $1 + 81 | 0;
    HEAP8[$9] = 1;
    $pp_sroa_0_1 = $add8;
    label = 5;
    break;
   case 5:
    $call9 = _agnxtnode($0, $n_0_in13) | 0;
    $tobool = ($call9 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $pp_sroa_0_012 = $pp_sroa_0_1;
      $n_0_in13 = $call9;
      label = 3;
      break;
    }
   case 6:
    return;
  }
}
function _place_flip_graph_label($g) {
  $g = $g | 0;
  var $root = 0, $0 = 0, $cmp = 0, $label = 0, $1 = 0, $tobool = 0, $set = 0, $2 = 0, $tobool4 = 0, $label_pos = 0, $3 = 0, $and = 0, $tobool6 = 0, $d_sroa_0_0__idx2 = 0, $d_sroa_0_0_copyload3 = 0.0, $d_sroa_1_8__idx6 = 0, $x = 0, $4 = 0.0, $div = 0.0, $sub = 0.0, $d_sroa_0_0__idx = 0, $d_sroa_0_0_copyload = 0.0, $d_sroa_1_8__idx5 = 0, $x17 = 0, $5 = 0.0, $div19 = 0.0, $add = 0.0, $p_sroa_0_0 = 0.0, $d_sroa_1_0_in = 0, $d_sroa_1_0 = 0.0, $6 = 0, $conv23 = 0, $and24 = 0, $tobool25 = 0, $y = 0, $7 = 0.0, $div31 = 0.0, $add32 = 0.0, $and38 = 0, $tobool39 = 0, $y44 = 0, $8 = 0.0, $div46 = 0.0, $sub47 = 0.0, $y53 = 0, $9 = 0.0, $y57 = 0, $10 = 0.0, $add58 = 0.0, $div59 = 0.0, $p_sroa_1_0 = 0.0, $11 = 0, $p_sroa_0_0__idx = 0, $p_sroa_1_8__idx8 = 0, $12 = 0, $set67 = 0, $n_cluster = 0, $13 = 0, $cmp7027 = 0, $clust = 0, $c_028 = 0, $14 = 0, $arrayidx73 = 0, $15 = 0, $inc = 0, $16 = 0, $cmp70 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $cmp = ($0 | 0) == ($g | 0);
    if ($cmp) {
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $label = $g + 52 | 0;
    $1 = HEAP32[$label >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $set = $1 + 81 | 0;
    $2 = HEAP8[$set] | 0;
    $tobool4 = $2 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 14;
      break;
    }
   case 5:
    $label_pos = $g + 287 | 0;
    $3 = HEAP8[$label_pos] | 0;
    $and = $3 & 1;
    $tobool6 = $and << 24 >> 24 == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $d_sroa_0_0__idx2 = $g + 104 | 0;
    $d_sroa_0_0_copyload3 = +HEAPF64[$d_sroa_0_0__idx2 >> 3];
    $d_sroa_1_8__idx6 = $g + 112 | 0;
    $x = $g + 72 | 0;
    $4 = +HEAPF64[$x >> 3];
    $div = $d_sroa_0_0_copyload3 * .5;
    $sub = $4 - $div;
    $d_sroa_1_0_in = $d_sroa_1_8__idx6;
    $p_sroa_0_0 = $sub;
    label = 8;
    break;
   case 7:
    $d_sroa_0_0__idx = $g + 136 | 0;
    $d_sroa_0_0_copyload = +HEAPF64[$d_sroa_0_0__idx >> 3];
    $d_sroa_1_8__idx5 = $g + 144 | 0;
    $x17 = $g + 56 | 0;
    $5 = +HEAPF64[$x17 >> 3];
    $div19 = $d_sroa_0_0_copyload * .5;
    $add = $5 + $div19;
    $d_sroa_1_0_in = $d_sroa_1_8__idx5;
    $p_sroa_0_0 = $add;
    label = 8;
    break;
   case 8:
    $d_sroa_1_0 = +HEAPF64[$d_sroa_1_0_in >> 3];
    $6 = HEAP8[$label_pos] | 0;
    $conv23 = $6 << 24 >> 24;
    $and24 = $conv23 & 4;
    $tobool25 = ($and24 | 0) == 0;
    if ($tobool25) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $y = $g + 64 | 0;
    $7 = +HEAPF64[$y >> 3];
    $div31 = $d_sroa_1_0 * .5;
    $add32 = $div31 + $7;
    $p_sroa_1_0 = $add32;
    label = 13;
    break;
   case 10:
    $and38 = $conv23 & 2;
    $tobool39 = ($and38 | 0) == 0;
    if ($tobool39) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $y44 = $g + 80 | 0;
    $8 = +HEAPF64[$y44 >> 3];
    $div46 = $d_sroa_1_0 * .5;
    $sub47 = $8 - $div46;
    $p_sroa_1_0 = $sub47;
    label = 13;
    break;
   case 12:
    $y53 = $g + 64 | 0;
    $9 = +HEAPF64[$y53 >> 3];
    $y57 = $g + 80 | 0;
    $10 = +HEAPF64[$y57 >> 3];
    $add58 = $9 + $10;
    $div59 = $add58 * .5;
    $p_sroa_1_0 = $div59;
    label = 13;
    break;
   case 13:
    $11 = HEAP32[$label >> 2] | 0;
    $p_sroa_0_0__idx = $11 + 56 | 0;
    HEAPF64[$p_sroa_0_0__idx >> 3] = $p_sroa_0_0;
    $p_sroa_1_8__idx8 = $11 + 64 | 0;
    HEAPF64[$p_sroa_1_8__idx8 >> 3] = $p_sroa_1_0;
    $12 = HEAP32[$label >> 2] | 0;
    $set67 = $12 + 81 | 0;
    HEAP8[$set67] = 1;
    label = 14;
    break;
   case 14:
    $n_cluster = $g + 212 | 0;
    $13 = HEAP32[$n_cluster >> 2] | 0;
    $cmp7027 = ($13 | 0) < 1;
    if ($cmp7027) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $clust = $g + 216 | 0;
    $c_028 = 1;
    label = 16;
    break;
   case 16:
    $14 = HEAP32[$clust >> 2] | 0;
    $arrayidx73 = $14 + ($c_028 << 2) | 0;
    $15 = HEAP32[$arrayidx73 >> 2] | 0;
    _place_flip_graph_label($15);
    $inc = $c_028 + 1 | 0;
    $16 = HEAP32[$n_cluster >> 2] | 0;
    $cmp70 = ($inc | 0) > ($16 | 0);
    if ($cmp70) {
      label = 17;
      break;
    } else {
      $c_028 = $inc;
      label = 16;
      break;
    }
   case 17:
    return;
  }
}
function _place_graph_label($g) {
  $g = $g | 0;
  var $root = 0, $0 = 0, $cmp = 0, $label = 0, $1 = 0, $tobool = 0, $set = 0, $2 = 0, $tobool4 = 0, $label_pos = 0, $3 = 0, $and = 0, $tobool6 = 0, $d_sroa_0_0__idx2 = 0, $d_sroa_1_8__idx6 = 0, $d_sroa_1_8_copyload7 = 0.0, $y = 0, $4 = 0.0, $div = 0.0, $sub = 0.0, $d_sroa_0_0__idx = 0, $d_sroa_1_8__idx4 = 0, $d_sroa_1_8_copyload = 0.0, $y17 = 0, $5 = 0.0, $div19 = 0.0, $add = 0.0, $p_sroa_1_0 = 0.0, $d_sroa_0_0_in = 0, $d_sroa_0_0 = 0.0, $6 = 0, $conv23 = 0, $and24 = 0, $tobool25 = 0, $x = 0, $7 = 0.0, $div31 = 0.0, $sub32 = 0.0, $and38 = 0, $tobool39 = 0, $x44 = 0, $8 = 0.0, $div46 = 0.0, $add47 = 0.0, $x57 = 0, $9 = 0.0, $add58 = 0.0, $div59 = 0.0, $p_sroa_0_0 = 0.0, $10 = 0, $p_sroa_0_0__idx = 0, $p_sroa_1_8__idx8 = 0, $11 = 0, $set67 = 0, $n_cluster = 0, $12 = 0, $cmp7027 = 0, $clust = 0, $c_028 = 0, $13 = 0, $arrayidx73 = 0, $14 = 0, $inc = 0, $15 = 0, $cmp70 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $cmp = ($0 | 0) == ($g | 0);
    if ($cmp) {
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $label = $g + 52 | 0;
    $1 = HEAP32[$label >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $set = $1 + 81 | 0;
    $2 = HEAP8[$set] | 0;
    $tobool4 = $2 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 14;
      break;
    }
   case 5:
    $label_pos = $g + 287 | 0;
    $3 = HEAP8[$label_pos] | 0;
    $and = $3 & 1;
    $tobool6 = $and << 24 >> 24 == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $d_sroa_0_0__idx2 = $g + 120 | 0;
    $d_sroa_1_8__idx6 = $g + 128 | 0;
    $d_sroa_1_8_copyload7 = +HEAPF64[$d_sroa_1_8__idx6 >> 3];
    $y = $g + 80 | 0;
    $4 = +HEAPF64[$y >> 3];
    $div = $d_sroa_1_8_copyload7 * .5;
    $sub = $4 - $div;
    $d_sroa_0_0_in = $d_sroa_0_0__idx2;
    $p_sroa_1_0 = $sub;
    label = 8;
    break;
   case 7:
    $d_sroa_0_0__idx = $g + 88 | 0;
    $d_sroa_1_8__idx4 = $g + 96 | 0;
    $d_sroa_1_8_copyload = +HEAPF64[$d_sroa_1_8__idx4 >> 3];
    $y17 = $g + 64 | 0;
    $5 = +HEAPF64[$y17 >> 3];
    $div19 = $d_sroa_1_8_copyload * .5;
    $add = $5 + $div19;
    $d_sroa_0_0_in = $d_sroa_0_0__idx;
    $p_sroa_1_0 = $add;
    label = 8;
    break;
   case 8:
    $d_sroa_0_0 = +HEAPF64[$d_sroa_0_0_in >> 3];
    $6 = HEAP8[$label_pos] | 0;
    $conv23 = $6 << 24 >> 24;
    $and24 = $conv23 & 4;
    $tobool25 = ($and24 | 0) == 0;
    if ($tobool25) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $x = $g + 72 | 0;
    $7 = +HEAPF64[$x >> 3];
    $div31 = $d_sroa_0_0 * .5;
    $sub32 = $7 - $div31;
    $p_sroa_0_0 = $sub32;
    label = 13;
    break;
   case 10:
    $and38 = $conv23 & 2;
    $tobool39 = ($and38 | 0) == 0;
    $x44 = $g + 56 | 0;
    $8 = +HEAPF64[$x44 >> 3];
    if ($tobool39) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $div46 = $d_sroa_0_0 * .5;
    $add47 = $div46 + $8;
    $p_sroa_0_0 = $add47;
    label = 13;
    break;
   case 12:
    $x57 = $g + 72 | 0;
    $9 = +HEAPF64[$x57 >> 3];
    $add58 = $8 + $9;
    $div59 = $add58 * .5;
    $p_sroa_0_0 = $div59;
    label = 13;
    break;
   case 13:
    $10 = HEAP32[$label >> 2] | 0;
    $p_sroa_0_0__idx = $10 + 56 | 0;
    HEAPF64[$p_sroa_0_0__idx >> 3] = $p_sroa_0_0;
    $p_sroa_1_8__idx8 = $10 + 64 | 0;
    HEAPF64[$p_sroa_1_8__idx8 >> 3] = $p_sroa_1_0;
    $11 = HEAP32[$label >> 2] | 0;
    $set67 = $11 + 81 | 0;
    HEAP8[$set67] = 1;
    label = 14;
    break;
   case 14:
    $n_cluster = $g + 212 | 0;
    $12 = HEAP32[$n_cluster >> 2] | 0;
    $cmp7027 = ($12 | 0) < 1;
    if ($cmp7027) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $clust = $g + 216 | 0;
    $c_028 = 1;
    label = 16;
    break;
   case 16:
    $13 = HEAP32[$clust >> 2] | 0;
    $arrayidx73 = $13 + ($c_028 << 2) | 0;
    $14 = HEAP32[$arrayidx73 >> 2] | 0;
    _place_graph_label($14);
    $inc = $c_028 + 1 | 0;
    $15 = HEAP32[$n_cluster >> 2] | 0;
    $cmp70 = ($inc | 0) > ($15 | 0);
    if ($cmp70) {
      label = 17;
      break;
    } else {
      $c_028 = $inc;
      label = 16;
      break;
    }
   case 17:
    return;
  }
}
function _add_tree_edge($e) {
  $e = $e | 0;
  var $tree_index = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $inc = 0, $3 = 0, $arrayidx = 0, $tail = 0, $4 = 0, $mark = 0, $5 = 0, $cmp4 = 0, $6 = 0, $inc8 = 0, $7 = 0, $arrayidx9 = 0, $head = 0, $8 = 0, $mark12 = 0, $9 = 0, $cmp14 = 0, $10 = 0, $inc18 = 0, $11 = 0, $arrayidx19 = 0, $12 = 0, $mark23 = 0, $size = 0, $13 = 0, $inc25 = 0, $list = 0, $14 = 0, $arrayidx28 = 0, $15 = 0, $16 = 0, $arrayidx35 = 0, $17 = 0, $sub = 0, $list40 = 0, $18 = 0, $arrayidx41 = 0, $19 = 0, $cmp42 = 0, $20 = 0, $mark48 = 0, $size50 = 0, $21 = 0, $inc51 = 0, $list54 = 0, $22 = 0, $arrayidx55 = 0, $23 = 0, $24 = 0, $arrayidx62 = 0, $25 = 0, $sub66 = 0, $list68 = 0, $26 = 0, $arrayidx69 = 0, $27 = 0, $cmp70 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tree_index = $e + 180 | 0;
    $0 = HEAP32[$tree_index >> 2] | 0;
    $cmp = ($0 | 0) > -1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _abort();
   case 4:
    $1 = HEAP32[41338] | 0;
    HEAP32[$tree_index >> 2] = $1;
    $2 = HEAP32[41338] | 0;
    $inc = $2 + 1 | 0;
    HEAP32[41338] = $inc;
    $3 = HEAP32[41340] | 0;
    $arrayidx = $3 + ($2 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $e;
    $tail = $e + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $mark = $4 + 163 | 0;
    $5 = HEAP8[$mark] | 0;
    $cmp4 = $5 << 24 >> 24 == 0;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $6 = HEAP32[41334] | 0;
    $inc8 = $6 + 1 | 0;
    HEAP32[41334] = $inc8;
    $7 = HEAP32[41336] | 0;
    $arrayidx9 = $7 + ($6 << 2) | 0;
    HEAP32[$arrayidx9 >> 2] = $4;
    label = 6;
    break;
   case 6:
    $head = $e + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $mark12 = $8 + 163 | 0;
    $9 = HEAP8[$mark12] | 0;
    $cmp14 = $9 << 24 >> 24 == 0;
    if ($cmp14) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $10 = HEAP32[41334] | 0;
    $inc18 = $10 + 1 | 0;
    HEAP32[41334] = $inc18;
    $11 = HEAP32[41336] | 0;
    $arrayidx19 = $11 + ($10 << 2) | 0;
    HEAP32[$arrayidx19 >> 2] = $8;
    label = 8;
    break;
   case 8:
    $12 = HEAP32[$tail >> 2] | 0;
    $mark23 = $12 + 163 | 0;
    HEAP8[$mark23] = 1;
    $size = $12 + 276 | 0;
    $13 = HEAP32[$size >> 2] | 0;
    $inc25 = $13 + 1 | 0;
    HEAP32[$size >> 2] = $inc25;
    $list = $12 + 272 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $arrayidx28 = $14 + ($13 << 2) | 0;
    HEAP32[$arrayidx28 >> 2] = $e;
    $15 = HEAP32[$size >> 2] | 0;
    $16 = HEAP32[$list >> 2] | 0;
    $arrayidx35 = $16 + ($15 << 2) | 0;
    HEAP32[$arrayidx35 >> 2] = 0;
    $17 = HEAP32[$size >> 2] | 0;
    $sub = $17 - 1 | 0;
    $list40 = $12 + 184 | 0;
    $18 = HEAP32[$list40 >> 2] | 0;
    $arrayidx41 = $18 + ($sub << 2) | 0;
    $19 = HEAP32[$arrayidx41 >> 2] | 0;
    $cmp42 = ($19 | 0) == 0;
    if ($cmp42) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    _abort();
   case 10:
    $20 = HEAP32[$head >> 2] | 0;
    $mark48 = $20 + 163 | 0;
    HEAP8[$mark48] = 1;
    $size50 = $20 + 268 | 0;
    $21 = HEAP32[$size50 >> 2] | 0;
    $inc51 = $21 + 1 | 0;
    HEAP32[$size50 >> 2] = $inc51;
    $list54 = $20 + 264 | 0;
    $22 = HEAP32[$list54 >> 2] | 0;
    $arrayidx55 = $22 + ($21 << 2) | 0;
    HEAP32[$arrayidx55 >> 2] = $e;
    $23 = HEAP32[$size50 >> 2] | 0;
    $24 = HEAP32[$list54 >> 2] | 0;
    $arrayidx62 = $24 + ($23 << 2) | 0;
    HEAP32[$arrayidx62 >> 2] = 0;
    $25 = HEAP32[$size50 >> 2] | 0;
    $sub66 = $25 - 1 | 0;
    $list68 = $20 + 176 | 0;
    $26 = HEAP32[$list68 >> 2] | 0;
    $arrayidx69 = $26 + ($sub66 << 2) | 0;
    $27 = HEAP32[$arrayidx69 >> 2] | 0;
    $cmp70 = ($27 | 0) == 0;
    if ($cmp70) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _abort();
   case 12:
    return;
  }
}
function _place_root_label($g, $d) {
  $g = $g | 0;
  $d = $d | 0;
  var $label_pos = 0, $0 = 0, $conv = 0, $and = 0, $tobool = 0, $x = 0, $1 = 0.0, $x2 = 0, $2 = 0.0, $div = 0.0, $sub = 0.0, $and7 = 0, $tobool8 = 0, $x12 = 0, $3 = 0.0, $x13 = 0, $4 = 0.0, $div14 = 0.0, $add = 0.0, $x24 = 0, $5 = 0.0, $add25 = 0.0, $div26 = 0.0, $p_sroa_0_0 = 0.0, $6 = 0, $and32 = 0, $tobool33 = 0, $y = 0, $7 = 0.0, $y38 = 0, $8 = 0.0, $div39 = 0.0, $sub40 = 0.0, $y46 = 0, $9 = 0.0, $y47 = 0, $10 = 0.0, $div48 = 0.0, $add49 = 0.0, $p_sroa_1_0 = 0.0, $label = 0, $11 = 0, $p_sroa_0_0__idx = 0, $p_sroa_1_8__idx1 = 0, $12 = 0, $set = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $d;
  $d = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$d >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$d + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$d + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$d + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $label_pos = $g + 287 | 0;
    $0 = HEAP8[$label_pos] | 0;
    $conv = $0 << 24 >> 24;
    $and = $conv & 4;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x = $g + 72 | 0;
    $1 = +HEAPF64[$x >> 3];
    $x2 = $d | 0;
    $2 = +HEAPF64[$x2 >> 3];
    $div = $2 * .5;
    $sub = $1 - $div;
    $p_sroa_0_0 = $sub;
    label = 7;
    break;
   case 4:
    $and7 = $conv & 2;
    $tobool8 = ($and7 | 0) == 0;
    $x12 = $g + 56 | 0;
    $3 = +HEAPF64[$x12 >> 3];
    if ($tobool8) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $x13 = $d | 0;
    $4 = +HEAPF64[$x13 >> 3];
    $div14 = $4 * .5;
    $add = $3 + $div14;
    $p_sroa_0_0 = $add;
    label = 7;
    break;
   case 6:
    $x24 = $g + 72 | 0;
    $5 = +HEAPF64[$x24 >> 3];
    $add25 = $3 + $5;
    $div26 = $add25 * .5;
    $p_sroa_0_0 = $div26;
    label = 7;
    break;
   case 7:
    $6 = HEAP8[$label_pos] | 0;
    $and32 = $6 & 1;
    $tobool33 = $and32 << 24 >> 24 == 0;
    if ($tobool33) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $y = $g + 80 | 0;
    $7 = +HEAPF64[$y >> 3];
    $y38 = $d + 8 | 0;
    $8 = +HEAPF64[$y38 >> 3];
    $div39 = $8 * .5;
    $sub40 = $7 - $div39;
    $p_sroa_1_0 = $sub40;
    label = 10;
    break;
   case 9:
    $y46 = $g + 64 | 0;
    $9 = +HEAPF64[$y46 >> 3];
    $y47 = $d + 8 | 0;
    $10 = +HEAPF64[$y47 >> 3];
    $div48 = $10 * .5;
    $add49 = $9 + $div48;
    $p_sroa_1_0 = $add49;
    label = 10;
    break;
   case 10:
    $label = $g + 52 | 0;
    $11 = HEAP32[$label >> 2] | 0;
    $p_sroa_0_0__idx = $11 + 56 | 0;
    HEAPF64[$p_sroa_0_0__idx >> 3] = $p_sroa_0_0;
    $p_sroa_1_8__idx1 = $11 + 64 | 0;
    HEAPF64[$p_sroa_1_8__idx1 >> 3] = $p_sroa_1_0;
    $12 = HEAP32[$label >> 2] | 0;
    $set = $12 + 81 | 0;
    HEAP8[$set] = 1;
    STACKTOP = __stackBase__;
    return;
  }
}
function _translate_drawing($g) {
  $g = $g | 0;
  var $tmp = 0, $tmp18 = 0, $0 = 0.0, $tobool = 0, $1 = 0.0, $tobool1 = 0, $2 = 0, $tobool3 = 0, $or_cond = 0, $3 = 0, $call = 0, $tobool421 = 0, $4 = 0, $5 = 0, $v_023_in = 0, $6 = 0, $tobool5 = 0, $v_023 = 0, $coord = 0, $7 = 0, $8 = 0, $xlabel = 0, $9 = 0, $tobool11 = 0, $pos = 0, $10 = 0, $11 = 0, $cmp = 0, $call21 = 0, $tobool2318 = 0, $e_0_in19 = 0, $e_0 = 0, $call25 = 0, $tobool23 = 0, $call28 = 0, $tobool4 = 0, $rankdir = 0, $12 = 0, $and = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp18 = __stackBase__ + 16 | 0;
    $0 = +HEAPF64[20772];
    $tobool = $0 != 0.0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = +HEAPF64[20773];
    $tobool1 = $1 != 0.0;
    $2 = HEAP32[41540] | 0;
    $tobool3 = ($2 | 0) != 0;
    $or_cond = $tobool1 | $tobool3;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      label = 15;
      break;
    }
   case 4:
    $3 = $g;
    $call = _agfstnode($3) | 0;
    $tobool421 = ($call | 0) == 0;
    if ($tobool421) {
      label = 14;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = $tmp;
    $5 = $tmp18;
    $v_023_in = $call;
    label = 6;
    break;
   case 6:
    $6 = HEAP32[41540] | 0;
    $tobool5 = ($6 | 0) == 0;
    if ($tobool5) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $v_023 = $v_023_in;
    _gv_nodesize($v_023, 0);
    label = 8;
    break;
   case 8:
    $coord = $v_023_in + 32 | 0;
    $7 = $coord;
    _map_point692($tmp, $7);
    $8 = $coord;
    HEAP32[$8 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $xlabel = $v_023_in + 124 | 0;
    $9 = HEAP32[$xlabel >> 2] | 0;
    $tobool11 = ($9 | 0) == 0;
    if ($tobool11) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $pos = $9 + 56 | 0;
    $10 = $pos;
    _map_point692($tmp18, $10);
    HEAP32[$pos >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$pos + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$pos + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$pos + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    label = 10;
    break;
   case 10:
    $11 = HEAP32[41356] | 0;
    $cmp = ($11 | 0) == 1;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $call21 = _agfstout($3, $v_023_in) | 0;
    $tobool2318 = ($call21 | 0) == 0;
    if ($tobool2318) {
      label = 13;
      break;
    } else {
      $e_0_in19 = $call21;
      label = 12;
      break;
    }
   case 12:
    $e_0 = $e_0_in19;
    _map_edge($e_0);
    $call25 = _agnxtout($3, $e_0_in19) | 0;
    $tobool23 = ($call25 | 0) == 0;
    if ($tobool23) {
      label = 13;
      break;
    } else {
      $e_0_in19 = $call25;
      label = 12;
      break;
    }
   case 13:
    $call28 = _agnxtnode($3, $v_023_in) | 0;
    $tobool4 = ($call28 | 0) == 0;
    if ($tobool4) {
      label = 14;
      break;
    } else {
      $v_023_in = $call28;
      label = 6;
      break;
    }
   case 14:
    $rankdir = $g + 156 | 0;
    $12 = HEAP32[$rankdir >> 2] | 0;
    $and = $12 & 3;
    _translate_bb($g, $and);
    label = 15;
    break;
   case 15:
    STACKTOP = __stackBase__;
    return;
  }
}
function _dotneato_postprocess($g) {
  $g = $g | 0;
  _gv_postprocess($g, 1);
  return;
}
function _map_edge($e) {
  $e = $e | 0;
  var $tmp = 0, $tmp35 = 0, $tmp48 = 0, $tmp61 = 0, $tmp72 = 0, $tmp83 = 0, $tmp94 = 0, $spl = 0, $0 = 0, $cmp = 0, $1 = 0, $size37 = 0, $2 = 0, $cmp1238 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $cmp1 = 0, $edge_type = 0, $7 = 0, $cmp5 = 0, $tail = 0, $8 = 0, $name = 0, $9 = 0, $head = 0, $10 = 0, $name8 = 0, $11 = 0, $call = 0, $12 = 0, $j_039 = 0, $list = 0, $13 = 0, $bz_sroa_0_0__idx = 0, $bz_sroa_0_0_copyload = 0, $bz_sroa_1_4__idx2 = 0, $bz_sroa_1_4_copyload = 0, $bz_sroa_2_8__idx3 = 0, $bz_sroa_2_8_copyload = 0, $bz_sroa_3_12__idx4 = 0, $bz_sroa_3_12_copyload = 0, $cmp1835 = 0, $k_036 = 0, $arrayidx22 = 0, $14 = 0, $inc = 0, $cmp18 = 0, $tobool = 0, $15 = 0, $list28 = 0, $16 = 0, $sp = 0, $17 = 0, $tobool37 = 0, $18 = 0, $list41 = 0, $19 = 0, $ep = 0, $20 = 0, $inc51 = 0, $21 = 0, $size = 0, $22 = 0, $cmp12 = 0, $label = 0, $23 = 0, $tobool54 = 0, $pos = 0, $24 = 0, $25 = 0, $xlabel = 0, $26 = 0, $tobool64 = 0, $pos68 = 0, $27 = 0, $28 = 0, $head_label = 0, $29 = 0, $tobool75 = 0, $pos79 = 0, $30 = 0, $31 = 0, $tail_label = 0, $32 = 0, $tobool86 = 0, $pos90 = 0, $33 = 0, $34 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 112 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp35 = __stackBase__ + 16 | 0;
    $tmp48 = __stackBase__ + 32 | 0;
    $tmp61 = __stackBase__ + 48 | 0;
    $tmp72 = __stackBase__ + 64 | 0;
    $tmp83 = __stackBase__ + 80 | 0;
    $tmp94 = __stackBase__ + 96 | 0;
    $spl = $e + 24 | 0;
    $0 = HEAP32[$spl >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[$spl >> 2] | 0;
    $size37 = $1 + 4 | 0;
    $2 = HEAP32[$size37 >> 2] | 0;
    $cmp1238 = ($2 | 0) > 0;
    if ($cmp1238) {
      label = 4;
      break;
    } else {
      label = 15;
      break;
    }
   case 4:
    $3 = $tmp48;
    $4 = $tmp35;
    $5 = $tmp;
    $j_039 = 0;
    $12 = $1;
    label = 8;
    break;
   case 5:
    $6 = HEAP8[167952] | 0;
    $cmp1 = $6 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $edge_type = $e + 128 | 0;
    $7 = HEAP8[$edge_type] | 0;
    $cmp5 = $7 << 24 >> 24 == 6;
    if ($cmp5) {
      label = 23;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $tail = $e + 16 | 0;
    $8 = HEAP32[$tail >> 2] | 0;
    $name = $8 + 12 | 0;
    $9 = HEAP32[$name >> 2] | 0;
    $head = $e + 12 | 0;
    $10 = HEAP32[$head >> 2] | 0;
    $name8 = $10 + 12 | 0;
    $11 = HEAP32[$name8 >> 2] | 0;
    $call = _agerr(1, 120776, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $9, HEAP32[tempInt + 8 >> 2] = $11, tempInt) | 0) | 0;
    label = 23;
    break;
   case 8:
    $list = $12 | 0;
    $13 = HEAP32[$list >> 2] | 0;
    $bz_sroa_0_0__idx = $13 + ($j_039 * 48 & -1) | 0;
    $bz_sroa_0_0_copyload = HEAP32[$bz_sroa_0_0__idx >> 2] | 0;
    $bz_sroa_1_4__idx2 = $13 + ($j_039 * 48 & -1) + 4 | 0;
    $bz_sroa_1_4_copyload = HEAP32[$bz_sroa_1_4__idx2 >> 2] | 0;
    $bz_sroa_2_8__idx3 = $13 + ($j_039 * 48 & -1) + 8 | 0;
    $bz_sroa_2_8_copyload = HEAP32[$bz_sroa_2_8__idx3 >> 2] | 0;
    $bz_sroa_3_12__idx4 = $13 + ($j_039 * 48 & -1) + 12 | 0;
    $bz_sroa_3_12_copyload = HEAP32[$bz_sroa_3_12__idx4 >> 2] | 0;
    $cmp1835 = ($bz_sroa_1_4_copyload | 0) > 0;
    if ($cmp1835) {
      $k_036 = 0;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $arrayidx22 = $bz_sroa_0_0_copyload + ($k_036 << 4) | 0;
    _map_point692($tmp, $arrayidx22);
    $14 = $arrayidx22;
    HEAP32[$14 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $inc = $k_036 + 1 | 0;
    $cmp18 = ($inc | 0) < ($bz_sroa_1_4_copyload | 0);
    if ($cmp18) {
      $k_036 = $inc;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $tobool = ($bz_sroa_2_8_copyload | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $15 = HEAP32[$spl >> 2] | 0;
    $list28 = $15 | 0;
    $16 = HEAP32[$list28 >> 2] | 0;
    $sp = $16 + ($j_039 * 48 & -1) + 16 | 0;
    _map_point692($tmp35, $sp);
    $17 = $sp;
    HEAP32[$17 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$17 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$17 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$17 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    label = 12;
    break;
   case 12:
    $tobool37 = ($bz_sroa_3_12_copyload | 0) == 0;
    if ($tobool37) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $18 = HEAP32[$spl >> 2] | 0;
    $list41 = $18 | 0;
    $19 = HEAP32[$list41 >> 2] | 0;
    $ep = $19 + ($j_039 * 48 & -1) + 32 | 0;
    _map_point692($tmp48, $ep);
    $20 = $ep;
    HEAP32[$20 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$20 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$20 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$20 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    label = 14;
    break;
   case 14:
    $inc51 = $j_039 + 1 | 0;
    $21 = HEAP32[$spl >> 2] | 0;
    $size = $21 + 4 | 0;
    $22 = HEAP32[$size >> 2] | 0;
    $cmp12 = ($inc51 | 0) < ($22 | 0);
    if ($cmp12) {
      $j_039 = $inc51;
      $12 = $21;
      label = 8;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $label = $e + 112 | 0;
    $23 = HEAP32[$label >> 2] | 0;
    $tobool54 = ($23 | 0) == 0;
    if ($tobool54) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $pos = $23 + 56 | 0;
    _map_point692($tmp61, $pos);
    $24 = $pos;
    $25 = $tmp61;
    HEAP32[$24 >> 2] = HEAP32[$25 >> 2] | 0;
    HEAP32[$24 + 4 >> 2] = HEAP32[$25 + 4 >> 2] | 0;
    HEAP32[$24 + 8 >> 2] = HEAP32[$25 + 8 >> 2] | 0;
    HEAP32[$24 + 12 >> 2] = HEAP32[$25 + 12 >> 2] | 0;
    label = 17;
    break;
   case 17:
    $xlabel = $e + 124 | 0;
    $26 = HEAP32[$xlabel >> 2] | 0;
    $tobool64 = ($26 | 0) == 0;
    if ($tobool64) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $pos68 = $26 + 56 | 0;
    _map_point692($tmp72, $pos68);
    $27 = $pos68;
    $28 = $tmp72;
    HEAP32[$27 >> 2] = HEAP32[$28 >> 2] | 0;
    HEAP32[$27 + 4 >> 2] = HEAP32[$28 + 4 >> 2] | 0;
    HEAP32[$27 + 8 >> 2] = HEAP32[$28 + 8 >> 2] | 0;
    HEAP32[$27 + 12 >> 2] = HEAP32[$28 + 12 >> 2] | 0;
    label = 19;
    break;
   case 19:
    $head_label = $e + 116 | 0;
    $29 = HEAP32[$head_label >> 2] | 0;
    $tobool75 = ($29 | 0) == 0;
    if ($tobool75) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $pos79 = $29 + 56 | 0;
    _map_point692($tmp83, $pos79);
    $30 = $pos79;
    $31 = $tmp83;
    HEAP32[$30 >> 2] = HEAP32[$31 >> 2] | 0;
    HEAP32[$30 + 4 >> 2] = HEAP32[$31 + 4 >> 2] | 0;
    HEAP32[$30 + 8 >> 2] = HEAP32[$31 + 8 >> 2] | 0;
    HEAP32[$30 + 12 >> 2] = HEAP32[$31 + 12 >> 2] | 0;
    label = 21;
    break;
   case 21:
    $tail_label = $e + 120 | 0;
    $32 = HEAP32[$tail_label >> 2] | 0;
    $tobool86 = ($32 | 0) == 0;
    if ($tobool86) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $pos90 = $32 + 56 | 0;
    _map_point692($tmp94, $pos90);
    $33 = $pos90;
    $34 = $tmp94;
    HEAP32[$33 >> 2] = HEAP32[$34 >> 2] | 0;
    HEAP32[$33 + 4 >> 2] = HEAP32[$34 + 4 >> 2] | 0;
    HEAP32[$33 + 8 >> 2] = HEAP32[$34 + 8 >> 2] | 0;
    HEAP32[$33 + 12 >> 2] = HEAP32[$34 + 12 >> 2] | 0;
    label = 23;
    break;
   case 23:
    STACKTOP = __stackBase__;
    return;
  }
}
function _simpleSplineRoute($tp, $hp, $poly, $n_spl_pts, $polyline) {
  $tp = $tp | 0;
  $hp = $hp | 0;
  $poly = $poly | 0;
  $n_spl_pts = $n_spl_pts | 0;
  $polyline = $polyline | 0;
  var $pl = 0, $spl = 0, $eps = 0, $evs = 0, $x = 0, $0 = 0.0, $arrayidx = 0, $x1 = 0, $y = 0, $1 = 0.0, $y3 = 0, $x4 = 0, $2 = 0.0, $x6 = 0, $y7 = 0, $3 = 0.0, $y9 = 0, $call = 0, $cmp = 0, $tobool = 0, $pn = 0, $4 = 0, $5 = 0, $cmp11 = 0, $6 = 0, $tobool13 = 0, $7 = 0, $mul = 0, $call15 = 0, $mul17 = 0, $call18 = 0, $call15_sink = 0, $8 = 0, $9 = 0, $_pr = 0, $10 = 0, $cmp2212 = 0, $11 = 0, $ps = 0, $12 = 0, $13 = 0, $i_013 = 0, $a = 0, $arrayidx24 = 0, $14 = 0, $15 = 0, $b = 0, $add = 0, $rem = 0, $arrayidx28 = 0, $16 = 0, $17 = 0, $cmp22 = 0, $arrayidx29 = 0, $18 = 0, $19 = 0, $20 = 0, $call39 = 0, $cmp40 = 0, $pn44 = 0, $21 = 0, $22 = 0, $cmp4710 = 0, $23 = 0, $ps50 = 0, $24 = 0, $25 = 0, $i_111 = 0, $arrayidx49 = 0, $arrayidx51 = 0, $26 = 0, $27 = 0, $inc53 = 0, $cmp47 = 0, $_lcssa = 0, $28 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  tempParam = $tp;
  $tp = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$tp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$tp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$tp + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$tp + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $hp;
  $hp = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$hp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$hp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$hp + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$hp + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $poly;
  $poly = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$poly >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$poly + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pl = __stackBase__ | 0;
    $spl = __stackBase__ + 8 | 0;
    $eps = __stackBase__ + 16 | 0;
    $evs = __stackBase__ + 48 | 0;
    $x = $tp | 0;
    $0 = +HEAPF64[$x >> 3];
    $arrayidx = $eps | 0;
    $x1 = $eps | 0;
    HEAPF64[$x1 >> 3] = $0;
    $y = $tp + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $y3 = $eps + 8 | 0;
    HEAPF64[$y3 >> 3] = $1;
    $x4 = $hp | 0;
    $2 = +HEAPF64[$x4 >> 3];
    $x6 = $eps + 16 | 0;
    HEAPF64[$x6 >> 3] = $2;
    $y7 = $hp + 8 | 0;
    $3 = +HEAPF64[$y7 >> 3];
    $y9 = $eps + 24 | 0;
    HEAPF64[$y9 >> 3] = $3;
    $call = _Pshortestpath($poly, $arrayidx, $pl) | 0;
    $cmp = ($call | 0) == -1;
    if ($cmp) {
      $retval_0 = 0;
      label = 18;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool = ($polyline | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _make_polyline($pl, $spl);
    label = 14;
    break;
   case 5:
    $pn = $poly + 4 | 0;
    $4 = HEAP32[$pn >> 2] | 0;
    $5 = HEAP32[5082] | 0;
    $cmp11 = ($4 | 0) > ($5 | 0);
    if ($cmp11) {
      label = 6;
      break;
    } else {
      $10 = $4;
      label = 10;
      break;
    }
   case 6:
    $6 = HEAP32[5080] | 0;
    $tobool13 = ($6 | 0) == 0;
    if ($tobool13) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = $6;
    $mul = $4 << 5;
    $call15 = _grealloc($7, $mul) | 0;
    $call15_sink = $call15;
    label = 9;
    break;
   case 8:
    $mul17 = $4 << 5;
    $call18 = _gmalloc($mul17) | 0;
    $call15_sink = $call18;
    label = 9;
    break;
   case 9:
    $8 = $call15_sink;
    HEAP32[5080] = $8;
    $9 = HEAP32[$pn >> 2] | 0;
    HEAP32[5082] = $9;
    $_pr = HEAP32[$pn >> 2] | 0;
    $10 = $_pr;
    label = 10;
    break;
   case 10:
    $cmp2212 = ($10 | 0) > 0;
    if ($cmp2212) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $11 = HEAP32[5080] | 0;
    $ps = $poly | 0;
    $12 = HEAP32[$ps >> 2] | 0;
    $13 = HEAP32[$pn >> 2] | 0;
    $i_013 = 0;
    label = 12;
    break;
   case 12:
    $a = $11 + ($i_013 << 5) | 0;
    $arrayidx24 = $12 + ($i_013 << 4) | 0;
    $14 = $a;
    $15 = $arrayidx24;
    HEAP32[$14 >> 2] = HEAP32[$15 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$15 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$15 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$15 + 12 >> 2] | 0;
    $b = $11 + ($i_013 << 5) + 16 | 0;
    $add = $i_013 + 1 | 0;
    $rem = ($add | 0) % ($13 | 0);
    $arrayidx28 = $12 + ($rem << 4) | 0;
    $16 = $b;
    $17 = $arrayidx28;
    HEAP32[$16 >> 2] = HEAP32[$17 >> 2] | 0;
    HEAP32[$16 + 4 >> 2] = HEAP32[$17 + 4 >> 2] | 0;
    HEAP32[$16 + 8 >> 2] = HEAP32[$17 + 8 >> 2] | 0;
    HEAP32[$16 + 12 >> 2] = HEAP32[$17 + 12 >> 2] | 0;
    $cmp22 = ($add | 0) < ($13 | 0);
    if ($cmp22) {
      $i_013 = $add;
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $arrayidx29 = $evs | 0;
    $18 = $evs;
    _memset($18 | 0, 0, 32);
    $19 = HEAP32[5080] | 0;
    $20 = HEAP32[$pn >> 2] | 0;
    $call39 = _Proutespline($19, $20, $pl, $arrayidx29, $spl) | 0;
    $cmp40 = ($call39 | 0) == -1;
    if ($cmp40) {
      $retval_0 = 0;
      label = 18;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $pn44 = $spl + 4 | 0;
    $21 = HEAP32[$pn44 >> 2] | 0;
    _mkspacep($21);
    $22 = HEAP32[$pn44 >> 2] | 0;
    $cmp4710 = ($22 | 0) > 0;
    if ($cmp4710) {
      label = 15;
      break;
    } else {
      $_lcssa = $22;
      label = 17;
      break;
    }
   case 15:
    $23 = HEAP32[1392] | 0;
    $ps50 = $spl | 0;
    $24 = HEAP32[$ps50 >> 2] | 0;
    $25 = HEAP32[$pn44 >> 2] | 0;
    $i_111 = 0;
    label = 16;
    break;
   case 16:
    $arrayidx49 = $23 + ($i_111 << 4) | 0;
    $arrayidx51 = $24 + ($i_111 << 4) | 0;
    $26 = $arrayidx49;
    $27 = $arrayidx51;
    HEAP32[$26 >> 2] = HEAP32[$27 >> 2] | 0;
    HEAP32[$26 + 4 >> 2] = HEAP32[$27 + 4 >> 2] | 0;
    HEAP32[$26 + 8 >> 2] = HEAP32[$27 + 8 >> 2] | 0;
    HEAP32[$26 + 12 >> 2] = HEAP32[$27 + 12 >> 2] | 0;
    $inc53 = $i_111 + 1 | 0;
    $cmp47 = ($inc53 | 0) < ($25 | 0);
    if ($cmp47) {
      $i_111 = $inc53;
      label = 16;
      break;
    } else {
      $_lcssa = $25;
      label = 17;
      break;
    }
   case 17:
    HEAP32[$n_spl_pts >> 2] = $_lcssa;
    $28 = HEAP32[1392] | 0;
    $retval_0 = $28;
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _routesplinesterm() {
  var $0 = 0, $dec = 0, $cmp = 0, $1 = 0, $2 = 0, $3 = 0, $tobool = 0, $4 = 0, $5 = 0, $6 = 0, $call = 0.0, $call2 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1080] | 0;
    $dec = $0 - 1 | 0;
    HEAP32[1080] = $dec;
    $cmp = ($dec | 0) > 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[1392] | 0;
    $2 = $1;
    _free($2);
    $3 = HEAP8[164912] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = HEAP32[_stderr >> 2] | 0;
    $5 = HEAP32[2382] | 0;
    $6 = HEAP32[2384] | 0;
    $call = +_elapsed_sec();
    $call2 = _fprintf($4 | 0, 140048, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $5, HEAP32[tempInt + 8 >> 2] = $6, HEAPF64[tempInt + 16 >> 3] = $call, tempInt) | 0) | 0;
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _routesplines($pp, $npoints) {
  $pp = $pp | 0;
  $npoints = $npoints | 0;
  return __routesplines($pp, $npoints, 0) | 0;
}
function _mkspacep($size) {
  $size = $size | 0;
  var $0 = 0, $cmp = 0, $div = 0, $1 = 0, $mul = 0, $add1 = 0, $2 = 0, $3 = 0, $mul2 = 0, $call = 0, $4 = 0, $tobool = 0, $call4 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2810] | 0;
    $cmp = ($0 | 0) < ($size | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $div = ($size | 0) % 300;
    $1 = $size + 300 | 0;
    $mul = $1 + $0 | 0;
    $add1 = $mul - $div | 0;
    $2 = HEAP32[1392] | 0;
    $3 = $2;
    $mul2 = $add1 << 4;
    $call = _grealloc($3, $mul2) | 0;
    $4 = $call;
    HEAP32[1392] = $4;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call4 = _agerr(1, 120736, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _abort();
   case 5:
    HEAP32[2810] = $add1;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return;
  }
}
function _routesplinesinit() {
  var $0 = 0, $inc = 0, $cmp = 0, $call = 0, $1 = 0, $tobool = 0, $call2 = 0, $2 = 0, $tobool4 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1080] | 0;
    $inc = $0 + 1 | 0;
    HEAP32[1080] = $inc;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _gmalloc(4800) | 0;
    $1 = $call;
    HEAP32[1392] = $1;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call2 = _agerr(1, 101024, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _abort();
   case 5:
    HEAP32[2810] = 300;
    HEAP32[2382] = 0;
    HEAP32[2384] = 0;
    $2 = HEAP8[164912] | 0;
    $tobool4 = $2 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _start_timer();
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _routepolylines($pp, $npoints) {
  $pp = $pp | 0;
  $npoints = $npoints | 0;
  return __routesplines($pp, $npoints, 1) | 0;
}
function __routesplines($pp, $npoints, $polyline) {
  $pp = $pp | 0;
  $npoints = $npoints | 0;
  $polyline = $polyline | 0;
  var $poly = 0, $pl = 0, $spl = 0, $eps = 0, $evs = 0, $0 = 0, $inc = 0, $nbox = 0, $1 = 0, $2 = 0, $add = 0, $data = 0, $3 = 0, $tobool326 = 0, $4 = 0, $realedge_0327 = 0, $edge_type = 0, $5 = 0, $cmp = 0, $to_orig = 0, $6 = 0, $tobool = 0, $call = 0, $boxes4 = 0, $7 = 0, $8 = 0, $mul = 0, $9 = 0, $cmp6 = 0, $10 = 0, $tobool9 = 0, $11 = 0, $mul11 = 0, $call12 = 0, $mul14 = 0, $call15 = 0, $call12_sink = 0, $12 = 0, $cmp18 = 0, $y = 0, $13 = 0.0, $y22 = 0, $14 = 0.0, $cmp23 = 0, $cmp27323 = 0, $bi_0324 = 0, $y31 = 0, $15 = 0.0, $y34 = 0, $16 = 0.0, $mul35 = 0.0, $sub = 0.0, $inc43 = 0, $cmp27 = 0, $flip_0 = 0, $tail = 0, $17 = 0, $head = 0, $18 = 0, $cmp46 = 0, $cmp50319 = 0, $sub67 = 0, $19 = 0, $bi_1321 = 0, $pi_0320 = 0, $cmp53 = 0, $y58 = 0, $20 = 0.0, $sub59 = 0, $y62 = 0, $21 = 0.0, $cmp63 = 0, $cond65 = 0, $prev_0 = 0, $cmp68 = 0, $add71 = 0, $y74 = 0, $22 = 0.0, $y77 = 0, $23 = 0.0, $cmp78 = 0, $cond80 = 0, $next_0 = 0, $cmp82 = 0, $cmp85 = 0, $cmp87 = 0, $or_cond = 0, $x = 0, $24 = 0.0, $x93 = 0, $y96 = 0, $25 = 0.0, $inc97 = 0, $y99 = 0, $26 = 0.0, $x104 = 0, $y107 = 0, $27 = 0.0, $inc108 = 0, $y110 = 0, $x114 = 0, $28 = 0.0, $x116 = 0, $y119 = 0, $29 = 0.0, $inc120 = 0, $y122 = 0, $30 = 0.0, $x127 = 0, $y130 = 0, $31 = 0.0, $inc131 = 0, $y133 = 0, $x141 = 0, $32 = 0.0, $x143 = 0, $y146 = 0, $33 = 0.0, $inc147 = 0, $y149 = 0, $34 = 0.0, $x154 = 0, $y157 = 0, $35 = 0.0, $inc158 = 0, $y160 = 0, $cmp165 = 0, $pi_1 = 0, $inc172 = 0, $cmp50 = 0, $sub174 = 0, $cmp176315 = 0, $36 = 0, $bi_2317 = 0, $pi_2316 = 0, $cmp180 = 0, $y185 = 0, $37 = 0.0, $add186 = 0, $y189 = 0, $38 = 0.0, $cmp190 = 0, $cond192 = 0, $prev_1 = 0, $cmp194 = 0, $sub197 = 0, $y200 = 0, $39 = 0.0, $y203 = 0, $40 = 0.0, $cmp204 = 0, $cond206 = 0, $next_1 = 0, $cmp208 = 0, $cmp211 = 0, $cmp214 = 0, $or_cond292 = 0, $x219 = 0, $41 = 0.0, $x221 = 0, $y224 = 0, $42 = 0.0, $inc225 = 0, $y227 = 0, $43 = 0.0, $x232 = 0, $y235 = 0, $44 = 0.0, $inc236 = 0, $y238 = 0, $x242 = 0, $45 = 0.0, $x244 = 0, $y247 = 0, $46 = 0.0, $inc248 = 0, $y250 = 0, $47 = 0.0, $x255 = 0, $y258 = 0, $48 = 0.0, $inc259 = 0, $y261 = 0, $x269 = 0, $49 = 0.0, $x271 = 0, $y274 = 0, $50 = 0.0, $inc275 = 0, $y277 = 0, $51 = 0.0, $x282 = 0, $y285 = 0, $52 = 0.0, $inc286 = 0, $y288 = 0, $cmp293 = 0, $x299 = 0, $53 = 0.0, $x301 = 0, $y304 = 0, $54 = 0.0, $inc305 = 0, $y307 = 0, $55 = 0.0, $x312 = 0, $y315 = 0, $56 = 0.0, $inc316 = 0, $y318 = 0, $x321 = 0, $57 = 0.0, $x323 = 0, $58 = 0.0, $inc327 = 0, $y329 = 0, $59 = 0.0, $x334 = 0, $60 = 0.0, $inc338 = 0, $y340 = 0, $pi_3 = 0, $dec = 0, $cmp176 = 0, $pi_2_lcssa = 0, $tobool347 = 0, $cmp350311 = 0, $cmp374309 = 0, $61 = 0, $bi_3312 = 0, $y356 = 0, $62 = 0.0, $conv357 = 0, $y360 = 0, $63 = 0.0, $mul361 = 0.0, $sub365 = 0, $conv366 = 0.0, $inc371 = 0, $cmp350 = 0, $cmp385307 = 0, $i_0310 = 0, $y378 = 0, $64 = 0.0, $mul379 = 0.0, $inc381 = 0, $cmp374 = 0, $bi_4308 = 0, $x390 = 0, $x393 = 0, $inc395 = 0, $cmp385 = 0, $65 = 0, $ps = 0, $pn = 0, $x397 = 0, $66 = 0.0, $arrayidx398 = 0, $x399 = 0, $y402 = 0, $67 = 0.0, $y404 = 0, $x406 = 0, $68 = 0.0, $x408 = 0, $y411 = 0, $69 = 0.0, $y413 = 0, $call414 = 0, $cmp415 = 0, $tobool419 = 0, $70 = 0, $71 = 0, $cmp423 = 0, $72 = 0, $tobool426 = 0, $73 = 0, $mul429 = 0, $call430 = 0, $mul433 = 0, $call434 = 0, $call430_sink = 0, $74 = 0, $75 = 0, $_pr = 0, $76 = 0, $cmp441305 = 0, $77 = 0, $78 = 0, $79 = 0, $edgei_0306 = 0, $a = 0, $arrayidx445 = 0, $80 = 0, $81 = 0, $b = 0, $add447 = 0, $rem = 0, $arrayidx449 = 0, $82 = 0, $83 = 0, $cmp441 = 0, $constrained = 0, $84 = 0, $tobool454 = 0, $theta = 0, $85 = 0.0, $call457 = 0.0, $x459 = 0, $86 = 0.0, $call462 = 0.0, $y464 = 0, $87 = 0, $constrained472 = 0, $88 = 0, $tobool473 = 0, $theta476 = 0, $89 = 0.0, $call477 = 0.0, $sub478 = 0.0, $x480 = 0, $90 = 0.0, $call483 = 0.0, $sub484 = 0.0, $y486 = 0, $x491 = 0, $91 = 0, $92 = 0, $93 = 0, $arraydecay494 = 0, $call495 = 0, $cmp496 = 0, $pn501 = 0, $94 = 0, $cmp503303 = 0, $95 = 0, $cmp517301 = 0, $96 = 0, $ps521 = 0, $97 = 0, $98 = 0, $bi_5304 = 0, $x508 = 0, $x511 = 0, $inc513 = 0, $cmp503 = 0, $_pr331 = 0, $99 = 0, $cmp529298 = 0, $100 = 0, $cmp683293 = 0, $splinepi_0302 = 0, $arrayidx520 = 0, $arrayidx522 = 0, $101 = 0, $102 = 0, $inc524 = 0, $cmp517 = 0, $delta_0 = 0, $mul532 = 0, $cmp534296 = 0, $conv538 = 0.0, $add527 = 0, $cmp529 = 0, $add527300 = 0, $splinepi_1299 = 0, $sp_sroa_0_0__idx = 0, $sp_sroa_1_8__idx229 = 0, $add542 = 0, $sp_sroa_2_16__idx = 0, $sp_sroa_3_24__idx242 = 0, $add545 = 0, $sp_sroa_4_32__idx = 0, $sp_sroa_5_40__idx249 = 0, $sp_sroa_6_48__idx = 0, $sp_sroa_7_56__idx250 = 0, $si_0297 = 0, $conv537 = 0.0, $div = 0.0, $sp_sroa_0_0_copyload = 0.0, $sp_sroa_1_8_copyload = 0.0, $sp_sroa_2_16_copyload = 0.0, $sp_sroa_3_24_copyload = 0.0, $sp_sroa_4_32_copyload = 0.0, $sp_sroa_5_40_copyload = 0.0, $sp_sroa_6_48_copyload = 0.0, $sp_sroa_7_56_copyload = 0.0, $sub556 = 0.0, $mul557 = 0.0, $add558 = 0.0, $sub567 = 0.0, $mul568 = 0.0, $add569 = 0.0, $sub578 = 0.0, $mul579 = 0.0, $add580 = 0.0, $sub589 = 0.0, $mul590 = 0.0, $add591 = 0.0, $sub600 = 0.0, $mul601 = 0.0, $add602 = 0.0, $sub611 = 0.0, $mul612 = 0.0, $add613 = 0.0, $sub622 = 0.0, $mul623 = 0.0, $add624 = 0.0, $sub633 = 0.0, $mul634 = 0.0, $add635 = 0.0, $sub644 = 0.0, $mul645 = 0.0, $add646 = 0.0, $sub655 = 0.0, $mul656 = 0.0, $add657 = 0.0, $sub666 = 0.0, $mul667 = 0.0, $add668 = 0.0, $sub677 = 0.0, $mul678 = 0.0, $add679 = 0.0, $bi_6294 = 0, $y690 = 0, $103 = 0.0, $add691 = 0.0, $cmp692 = 0, $y699 = 0, $104 = 0.0, $sub700 = 0.0, $cmp701 = 0, $x706 = 0, $105 = 0.0, $cmp709 = 0, $x720 = 0, $106 = 0.0, $cmp723 = 0, $inc734 = 0, $cmp683 = 0, $inc737 = 0, $cmp534 = 0, $bi_7 = 0, $cmp743 = 0, $x748 = 0, $107 = 0.0, $cmp749 = 0, $x754 = 0, $108 = 0.0, $cmp755 = 0, $inc761 = 0, $mul758 = 0, $109 = 0, $110 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 88 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $poly = __stackBase__ | 0;
    $pl = __stackBase__ + 8 | 0;
    $spl = __stackBase__ + 16 | 0;
    $eps = __stackBase__ + 24 | 0;
    $evs = __stackBase__ + 56 | 0;
    $0 = HEAP32[2382] | 0;
    $inc = $0 + 1 | 0;
    HEAP32[2382] = $inc;
    $nbox = $pp + 80 | 0;
    $1 = HEAP32[$nbox >> 2] | 0;
    $2 = HEAP32[2384] | 0;
    $add = $2 + $1 | 0;
    HEAP32[2384] = $add;
    $data = $pp + 88 | 0;
    $3 = HEAP32[$data >> 2] | 0;
    $tobool326 = ($3 | 0) == 0;
    if ($tobool326) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = $3;
    $realedge_0327 = $4;
    label = 4;
    break;
   case 4:
    $edge_type = $realedge_0327 + 128 | 0;
    $5 = HEAP8[$edge_type] | 0;
    $cmp = $5 << 24 >> 24 == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $to_orig = $realedge_0327 + 132 | 0;
    $6 = HEAP32[$to_orig >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $realedge_0327 = $6;
      label = 4;
      break;
    }
   case 6:
    $call = _agerr(1, 115128, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _abort();
    return 0;
    return 0;
   case 7:
    $boxes4 = $pp + 84 | 0;
    $7 = HEAP32[$boxes4 >> 2] | 0;
    $8 = HEAP32[$nbox >> 2] | 0;
    _checkpath($8, $7, $pp);
    $mul = $8 << 3;
    $9 = HEAP32[1730] | 0;
    $cmp6 = ($mul | 0) > ($9 | 0);
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 12;
      break;
    }
   case 8:
    $10 = HEAP32[1728] | 0;
    $tobool9 = ($10 | 0) == 0;
    if ($tobool9) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $11 = $10;
    $mul11 = $8 << 7;
    $call12 = _grealloc($11, $mul11) | 0;
    $call12_sink = $call12;
    label = 11;
    break;
   case 10:
    $mul14 = $8 << 7;
    $call15 = _gmalloc($mul14) | 0;
    $call12_sink = $call15;
    label = 11;
    break;
   case 11:
    $12 = $call12_sink;
    HEAP32[1728] = $12;
    HEAP32[1730] = $mul;
    label = 12;
    break;
   case 12:
    $cmp18 = ($8 | 0) > 1;
    if ($cmp18) {
      label = 13;
      break;
    } else {
      $flip_0 = 0;
      label = 16;
      break;
    }
   case 13:
    $y = $7 + 8 | 0;
    $13 = +HEAPF64[$y >> 3];
    $y22 = $7 + 40 | 0;
    $14 = +HEAPF64[$y22 >> 3];
    $cmp23 = $13 > $14;
    if ($cmp23) {
      label = 14;
      break;
    } else {
      $flip_0 = 0;
      label = 16;
      break;
    }
   case 14:
    $cmp27323 = ($8 | 0) > 0;
    if ($cmp27323) {
      $bi_0324 = 0;
      label = 15;
      break;
    } else {
      $flip_0 = 1;
      label = 16;
      break;
    }
   case 15:
    $y31 = $7 + ($bi_0324 << 5) + 24 | 0;
    $15 = +HEAPF64[$y31 >> 3];
    $y34 = $7 + ($bi_0324 << 5) + 8 | 0;
    $16 = +HEAPF64[$y34 >> 3];
    $mul35 = $16 * -1.0;
    HEAPF64[$y31 >> 3] = $mul35;
    $sub = -0.0 - $15;
    HEAPF64[$y34 >> 3] = $sub;
    $inc43 = $bi_0324 + 1 | 0;
    $cmp27 = ($inc43 | 0) < ($8 | 0);
    if ($cmp27) {
      $bi_0324 = $inc43;
      label = 15;
      break;
    } else {
      $flip_0 = 1;
      label = 16;
      break;
    }
   case 16:
    $tail = $realedge_0327 + 16 | 0;
    $17 = HEAP32[$tail >> 2] | 0;
    $head = $realedge_0327 + 12 | 0;
    $18 = HEAP32[$head >> 2] | 0;
    $cmp46 = ($17 | 0) == ($18 | 0);
    if ($cmp46) {
      label = 48;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $cmp50319 = ($8 | 0) > 0;
    if ($cmp50319) {
      label = 18;
      break;
    } else {
      $pi_2_lcssa = 0;
      label = 49;
      break;
    }
   case 18:
    $sub67 = $8 - 1 | 0;
    $19 = HEAP32[1728] | 0;
    $pi_0320 = 0;
    $bi_1321 = 0;
    label = 19;
    break;
   case 19:
    $cmp53 = ($bi_1321 | 0) > 0;
    if ($cmp53) {
      label = 20;
      break;
    } else {
      $prev_0 = 0;
      label = 21;
      break;
    }
   case 20:
    $y58 = $7 + ($bi_1321 << 5) + 8 | 0;
    $20 = +HEAPF64[$y58 >> 3];
    $sub59 = $bi_1321 - 1 | 0;
    $y62 = $7 + ($sub59 << 5) + 8 | 0;
    $21 = +HEAPF64[$y62 >> 3];
    $cmp63 = $20 > $21;
    $cond65 = $cmp63 ? -1 : 1;
    $prev_0 = $cond65;
    label = 21;
    break;
   case 21:
    $cmp68 = ($bi_1321 | 0) < ($sub67 | 0);
    if ($cmp68) {
      label = 22;
      break;
    } else {
      $next_0 = 0;
      label = 23;
      break;
    }
   case 22:
    $add71 = $bi_1321 + 1 | 0;
    $y74 = $7 + ($add71 << 5) + 8 | 0;
    $22 = +HEAPF64[$y74 >> 3];
    $y77 = $7 + ($bi_1321 << 5) + 8 | 0;
    $23 = +HEAPF64[$y77 >> 3];
    $cmp78 = $22 > $23;
    $cond80 = $cmp78 ? 1 : -1;
    $next_0 = $cond80;
    label = 23;
    break;
   case 23:
    $cmp82 = ($prev_0 | 0) == ($next_0 | 0);
    if ($cmp82) {
      label = 27;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $cmp85 = ($next_0 | 0) == -1;
    $cmp87 = ($prev_0 | 0) == 1;
    $or_cond = $cmp85 | $cmp87;
    if ($or_cond) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $x = $7 + ($bi_1321 << 5) | 0;
    $24 = +HEAPF64[$x >> 3];
    $x93 = $19 + ($pi_0320 << 4) | 0;
    HEAPF64[$x93 >> 3] = $24;
    $y96 = $7 + ($bi_1321 << 5) + 24 | 0;
    $25 = +HEAPF64[$y96 >> 3];
    $inc97 = $pi_0320 + 1 | 0;
    $y99 = $19 + ($pi_0320 << 4) + 8 | 0;
    HEAPF64[$y99 >> 3] = $25;
    $26 = +HEAPF64[$x >> 3];
    $x104 = $19 + ($inc97 << 4) | 0;
    HEAPF64[$x104 >> 3] = $26;
    $y107 = $7 + ($bi_1321 << 5) + 8 | 0;
    $27 = +HEAPF64[$y107 >> 3];
    $inc108 = $pi_0320 + 2 | 0;
    $y110 = $19 + ($inc97 << 4) + 8 | 0;
    HEAPF64[$y110 >> 3] = $27;
    $pi_1 = $inc108;
    label = 31;
    break;
   case 26:
    $x114 = $7 + ($bi_1321 << 5) + 16 | 0;
    $28 = +HEAPF64[$x114 >> 3];
    $x116 = $19 + ($pi_0320 << 4) | 0;
    HEAPF64[$x116 >> 3] = $28;
    $y119 = $7 + ($bi_1321 << 5) + 8 | 0;
    $29 = +HEAPF64[$y119 >> 3];
    $inc120 = $pi_0320 + 1 | 0;
    $y122 = $19 + ($pi_0320 << 4) + 8 | 0;
    HEAPF64[$y122 >> 3] = $29;
    $30 = +HEAPF64[$x114 >> 3];
    $x127 = $19 + ($inc120 << 4) | 0;
    HEAPF64[$x127 >> 3] = $30;
    $y130 = $7 + ($bi_1321 << 5) + 24 | 0;
    $31 = +HEAPF64[$y130 >> 3];
    $inc131 = $pi_0320 + 2 | 0;
    $y133 = $19 + ($inc120 << 4) + 8 | 0;
    HEAPF64[$y133 >> 3] = $31;
    $pi_1 = $inc131;
    label = 31;
    break;
   case 27:
    if (($prev_0 | 0) == 0) {
      label = 28;
      break;
    } else if (($prev_0 | 0) == (-1 | 0)) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 28:
    $x141 = $7 + ($bi_1321 << 5) | 0;
    $32 = +HEAPF64[$x141 >> 3];
    $x143 = $19 + ($pi_0320 << 4) | 0;
    HEAPF64[$x143 >> 3] = $32;
    $y146 = $7 + ($bi_1321 << 5) + 24 | 0;
    $33 = +HEAPF64[$y146 >> 3];
    $inc147 = $pi_0320 + 1 | 0;
    $y149 = $19 + ($pi_0320 << 4) + 8 | 0;
    HEAPF64[$y149 >> 3] = $33;
    $34 = +HEAPF64[$x141 >> 3];
    $x154 = $19 + ($inc147 << 4) | 0;
    HEAPF64[$x154 >> 3] = $34;
    $y157 = $7 + ($bi_1321 << 5) + 8 | 0;
    $35 = +HEAPF64[$y157 >> 3];
    $inc158 = $pi_0320 + 2 | 0;
    $y160 = $19 + ($inc147 << 4) + 8 | 0;
    HEAPF64[$y160 >> 3] = $35;
    $pi_1 = $inc158;
    label = 31;
    break;
   case 29:
    $cmp165 = ($next_0 | 0) == -1;
    if ($cmp165) {
      $pi_1 = $pi_0320;
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    _abort();
    return 0;
    return 0;
   case 31:
    $inc172 = $bi_1321 + 1 | 0;
    $cmp50 = ($inc172 | 0) < ($8 | 0);
    if ($cmp50) {
      $pi_0320 = $pi_1;
      $bi_1321 = $inc172;
      label = 19;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $sub174 = $8 - 1 | 0;
    $cmp176315 = ($8 | 0) > 0;
    if ($cmp176315) {
      label = 33;
      break;
    } else {
      $pi_2_lcssa = $pi_1;
      label = 49;
      break;
    }
   case 33:
    $36 = HEAP32[1728] | 0;
    $pi_2316 = $pi_1;
    $bi_2317 = $sub174;
    label = 34;
    break;
   case 34:
    $cmp180 = ($bi_2317 | 0) < ($sub174 | 0);
    if ($cmp180) {
      label = 35;
      break;
    } else {
      $prev_1 = 0;
      label = 36;
      break;
    }
   case 35:
    $y185 = $7 + ($bi_2317 << 5) + 8 | 0;
    $37 = +HEAPF64[$y185 >> 3];
    $add186 = $bi_2317 + 1 | 0;
    $y189 = $7 + ($add186 << 5) + 8 | 0;
    $38 = +HEAPF64[$y189 >> 3];
    $cmp190 = $37 > $38;
    $cond192 = $cmp190 ? -1 : 1;
    $prev_1 = $cond192;
    label = 36;
    break;
   case 36:
    $cmp194 = ($bi_2317 | 0) > 0;
    if ($cmp194) {
      label = 37;
      break;
    } else {
      $next_1 = 0;
      label = 38;
      break;
    }
   case 37:
    $sub197 = $bi_2317 - 1 | 0;
    $y200 = $7 + ($sub197 << 5) + 8 | 0;
    $39 = +HEAPF64[$y200 >> 3];
    $y203 = $7 + ($bi_2317 << 5) + 8 | 0;
    $40 = +HEAPF64[$y203 >> 3];
    $cmp204 = $39 > $40;
    $cond206 = $cmp204 ? 1 : -1;
    $next_1 = $cond206;
    label = 38;
    break;
   case 38:
    $cmp208 = ($prev_1 | 0) == ($next_1 | 0);
    if ($cmp208) {
      label = 42;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $cmp211 = ($next_1 | 0) == -1;
    $cmp214 = ($prev_1 | 0) == 1;
    $or_cond292 = $cmp211 | $cmp214;
    if ($or_cond292) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 40:
    $x219 = $7 + ($bi_2317 << 5) | 0;
    $41 = +HEAPF64[$x219 >> 3];
    $x221 = $36 + ($pi_2316 << 4) | 0;
    HEAPF64[$x221 >> 3] = $41;
    $y224 = $7 + ($bi_2317 << 5) + 24 | 0;
    $42 = +HEAPF64[$y224 >> 3];
    $inc225 = $pi_2316 + 1 | 0;
    $y227 = $36 + ($pi_2316 << 4) + 8 | 0;
    HEAPF64[$y227 >> 3] = $42;
    $43 = +HEAPF64[$x219 >> 3];
    $x232 = $36 + ($inc225 << 4) | 0;
    HEAPF64[$x232 >> 3] = $43;
    $y235 = $7 + ($bi_2317 << 5) + 8 | 0;
    $44 = +HEAPF64[$y235 >> 3];
    $inc236 = $pi_2316 + 2 | 0;
    $y238 = $36 + ($inc225 << 4) + 8 | 0;
    HEAPF64[$y238 >> 3] = $44;
    $pi_3 = $inc236;
    label = 47;
    break;
   case 41:
    $x242 = $7 + ($bi_2317 << 5) + 16 | 0;
    $45 = +HEAPF64[$x242 >> 3];
    $x244 = $36 + ($pi_2316 << 4) | 0;
    HEAPF64[$x244 >> 3] = $45;
    $y247 = $7 + ($bi_2317 << 5) + 8 | 0;
    $46 = +HEAPF64[$y247 >> 3];
    $inc248 = $pi_2316 + 1 | 0;
    $y250 = $36 + ($pi_2316 << 4) + 8 | 0;
    HEAPF64[$y250 >> 3] = $46;
    $47 = +HEAPF64[$x242 >> 3];
    $x255 = $36 + ($inc248 << 4) | 0;
    HEAPF64[$x255 >> 3] = $47;
    $y258 = $7 + ($bi_2317 << 5) + 24 | 0;
    $48 = +HEAPF64[$y258 >> 3];
    $inc259 = $pi_2316 + 2 | 0;
    $y261 = $36 + ($inc248 << 4) + 8 | 0;
    HEAPF64[$y261 >> 3] = $48;
    $pi_3 = $inc259;
    label = 47;
    break;
   case 42:
    if (($prev_1 | 0) == 0) {
      label = 43;
      break;
    } else if (($prev_1 | 0) == (-1 | 0)) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 43:
    $x269 = $7 + ($bi_2317 << 5) + 16 | 0;
    $49 = +HEAPF64[$x269 >> 3];
    $x271 = $36 + ($pi_2316 << 4) | 0;
    HEAPF64[$x271 >> 3] = $49;
    $y274 = $7 + ($bi_2317 << 5) + 8 | 0;
    $50 = +HEAPF64[$y274 >> 3];
    $inc275 = $pi_2316 + 1 | 0;
    $y277 = $36 + ($pi_2316 << 4) + 8 | 0;
    HEAPF64[$y277 >> 3] = $50;
    $51 = +HEAPF64[$x269 >> 3];
    $x282 = $36 + ($inc275 << 4) | 0;
    HEAPF64[$x282 >> 3] = $51;
    $y285 = $7 + ($bi_2317 << 5) + 24 | 0;
    $52 = +HEAPF64[$y285 >> 3];
    $inc286 = $pi_2316 + 2 | 0;
    $y288 = $36 + ($inc275 << 4) + 8 | 0;
    HEAPF64[$y288 >> 3] = $52;
    $pi_3 = $inc286;
    label = 47;
    break;
   case 44:
    $cmp293 = ($next_1 | 0) == -1;
    if ($cmp293) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    HEAP32[$npoints >> 2] = 0;
    _abort();
    return 0;
    return 0;
   case 46:
    $x299 = $7 + ($bi_2317 << 5) + 16 | 0;
    $53 = +HEAPF64[$x299 >> 3];
    $x301 = $36 + ($pi_2316 << 4) | 0;
    HEAPF64[$x301 >> 3] = $53;
    $y304 = $7 + ($bi_2317 << 5) + 8 | 0;
    $54 = +HEAPF64[$y304 >> 3];
    $inc305 = $pi_2316 + 1 | 0;
    $y307 = $36 + ($pi_2316 << 4) + 8 | 0;
    HEAPF64[$y307 >> 3] = $54;
    $55 = +HEAPF64[$x299 >> 3];
    $x312 = $36 + ($inc305 << 4) | 0;
    HEAPF64[$x312 >> 3] = $55;
    $y315 = $7 + ($bi_2317 << 5) + 24 | 0;
    $56 = +HEAPF64[$y315 >> 3];
    $inc316 = $pi_2316 + 2 | 0;
    $y318 = $36 + ($inc305 << 4) + 8 | 0;
    HEAPF64[$y318 >> 3] = $56;
    $x321 = $7 + ($bi_2317 << 5) | 0;
    $57 = +HEAPF64[$x321 >> 3];
    $x323 = $36 + ($inc316 << 4) | 0;
    HEAPF64[$x323 >> 3] = $57;
    $58 = +HEAPF64[$y315 >> 3];
    $inc327 = $pi_2316 + 3 | 0;
    $y329 = $36 + ($inc316 << 4) + 8 | 0;
    HEAPF64[$y329 >> 3] = $58;
    $59 = +HEAPF64[$x321 >> 3];
    $x334 = $36 + ($inc327 << 4) | 0;
    HEAPF64[$x334 >> 3] = $59;
    $60 = +HEAPF64[$y304 >> 3];
    $inc338 = $pi_2316 + 4 | 0;
    $y340 = $36 + ($inc327 << 4) + 8 | 0;
    HEAPF64[$y340 >> 3] = $60;
    $pi_3 = $inc338;
    label = 47;
    break;
   case 47:
    $dec = $bi_2317 - 1 | 0;
    $cmp176 = ($bi_2317 | 0) > 0;
    if ($cmp176) {
      $pi_2316 = $pi_3;
      $bi_2317 = $dec;
      label = 34;
      break;
    } else {
      $pi_2_lcssa = $pi_3;
      label = 49;
      break;
    }
   case 48:
    _abort();
    return 0;
    return 0;
   case 49:
    $tobool347 = ($flip_0 | 0) == 0;
    if ($tobool347) {
      label = 54;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $cmp350311 = ($8 | 0) > 0;
    if ($cmp350311) {
      $bi_3312 = 0;
      label = 53;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $cmp374309 = ($pi_2_lcssa | 0) > 0;
    if ($cmp374309) {
      label = 52;
      break;
    } else {
      label = 54;
      break;
    }
   case 52:
    $61 = HEAP32[1728] | 0;
    $i_0310 = 0;
    label = 55;
    break;
   case 53:
    $y356 = $7 + ($bi_3312 << 5) + 24 | 0;
    $62 = +HEAPF64[$y356 >> 3];
    $conv357 = ~~$62;
    $y360 = $7 + ($bi_3312 << 5) + 8 | 0;
    $63 = +HEAPF64[$y360 >> 3];
    $mul361 = $63 * -1.0;
    HEAPF64[$y356 >> 3] = $mul361;
    $sub365 = -$conv357 | 0;
    $conv366 = +($sub365 | 0);
    HEAPF64[$y360 >> 3] = $conv366;
    $inc371 = $bi_3312 + 1 | 0;
    $cmp350 = ($inc371 | 0) < ($8 | 0);
    if ($cmp350) {
      $bi_3312 = $inc371;
      label = 53;
      break;
    } else {
      label = 51;
      break;
    }
   case 54:
    $cmp385307 = ($8 | 0) > 0;
    if ($cmp385307) {
      $bi_4308 = 0;
      label = 56;
      break;
    } else {
      label = 57;
      break;
    }
   case 55:
    $y378 = $61 + ($i_0310 << 4) + 8 | 0;
    $64 = +HEAPF64[$y378 >> 3];
    $mul379 = $64 * -1.0;
    HEAPF64[$y378 >> 3] = $mul379;
    $inc381 = $i_0310 + 1 | 0;
    $cmp374 = ($inc381 | 0) < ($pi_2_lcssa | 0);
    if ($cmp374) {
      $i_0310 = $inc381;
      label = 55;
      break;
    } else {
      label = 54;
      break;
    }
   case 56:
    $x390 = $7 + ($bi_4308 << 5) | 0;
    HEAPF64[$x390 >> 3] = 2147483647.0;
    $x393 = $7 + ($bi_4308 << 5) + 16 | 0;
    HEAPF64[$x393 >> 3] = -2147483648.0;
    $inc395 = $bi_4308 + 1 | 0;
    $cmp385 = ($inc395 | 0) < ($8 | 0);
    if ($cmp385) {
      $bi_4308 = $inc395;
      label = 56;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $65 = HEAP32[1728] | 0;
    $ps = $poly | 0;
    HEAP32[$ps >> 2] = $65;
    $pn = $poly + 4 | 0;
    HEAP32[$pn >> 2] = $pi_2_lcssa;
    $x397 = $pp | 0;
    $66 = +HEAPF64[$x397 >> 3];
    $arrayidx398 = $eps | 0;
    $x399 = $eps | 0;
    HEAPF64[$x399 >> 3] = $66;
    $y402 = $pp + 8 | 0;
    $67 = +HEAPF64[$y402 >> 3];
    $y404 = $eps + 8 | 0;
    HEAPF64[$y404 >> 3] = $67;
    $x406 = $pp + 40 | 0;
    $68 = +HEAPF64[$x406 >> 3];
    $x408 = $eps + 16 | 0;
    HEAPF64[$x408 >> 3] = $68;
    $y411 = $pp + 48 | 0;
    $69 = +HEAPF64[$y411 >> 3];
    $y413 = $eps + 24 | 0;
    HEAPF64[$y413 >> 3] = $69;
    $call414 = _Pshortestpath($poly, $arrayidx398, $pl) | 0;
    $cmp415 = ($call414 | 0) == -1;
    if ($cmp415) {
      label = 58;
      break;
    } else {
      label = 59;
      break;
    }
   case 58:
    _abort();
    return 0;
    return 0;
   case 59:
    $tobool419 = ($polyline | 0) == 0;
    if ($tobool419) {
      label = 61;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    _make_polyline($pl, $spl);
    label = 77;
    break;
   case 61:
    $70 = HEAP32[$pn >> 2] | 0;
    $71 = HEAP32[5082] | 0;
    $cmp423 = ($70 | 0) > ($71 | 0);
    if ($cmp423) {
      label = 62;
      break;
    } else {
      $76 = $70;
      label = 66;
      break;
    }
   case 62:
    $72 = HEAP32[5080] | 0;
    $tobool426 = ($72 | 0) == 0;
    if ($tobool426) {
      label = 64;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $73 = $72;
    $mul429 = $70 << 5;
    $call430 = _grealloc($73, $mul429) | 0;
    $call430_sink = $call430;
    label = 65;
    break;
   case 64:
    $mul433 = $70 << 5;
    $call434 = _gmalloc($mul433) | 0;
    $call430_sink = $call434;
    label = 65;
    break;
   case 65:
    $74 = $call430_sink;
    HEAP32[5080] = $74;
    $75 = HEAP32[$pn >> 2] | 0;
    HEAP32[5082] = $75;
    $_pr = HEAP32[$pn >> 2] | 0;
    $76 = $_pr;
    label = 66;
    break;
   case 66:
    $cmp441305 = ($76 | 0) > 0;
    if ($cmp441305) {
      label = 67;
      break;
    } else {
      label = 69;
      break;
    }
   case 67:
    $77 = HEAP32[5080] | 0;
    $78 = HEAP32[1728] | 0;
    $79 = HEAP32[$pn >> 2] | 0;
    $edgei_0306 = 0;
    label = 68;
    break;
   case 68:
    $a = $77 + ($edgei_0306 << 5) | 0;
    $arrayidx445 = $78 + ($edgei_0306 << 4) | 0;
    $80 = $a;
    $81 = $arrayidx445;
    HEAP32[$80 >> 2] = HEAP32[$81 >> 2] | 0;
    HEAP32[$80 + 4 >> 2] = HEAP32[$81 + 4 >> 2] | 0;
    HEAP32[$80 + 8 >> 2] = HEAP32[$81 + 8 >> 2] | 0;
    HEAP32[$80 + 12 >> 2] = HEAP32[$81 + 12 >> 2] | 0;
    $b = $77 + ($edgei_0306 << 5) + 16 | 0;
    $add447 = $edgei_0306 + 1 | 0;
    $rem = ($add447 | 0) % ($79 | 0);
    $arrayidx449 = $78 + ($rem << 4) | 0;
    $82 = $b;
    $83 = $arrayidx449;
    HEAP32[$82 >> 2] = HEAP32[$83 >> 2] | 0;
    HEAP32[$82 + 4 >> 2] = HEAP32[$83 + 4 >> 2] | 0;
    HEAP32[$82 + 8 >> 2] = HEAP32[$83 + 8 >> 2] | 0;
    HEAP32[$82 + 12 >> 2] = HEAP32[$83 + 12 >> 2] | 0;
    $cmp441 = ($add447 | 0) < ($79 | 0);
    if ($cmp441) {
      $edgei_0306 = $add447;
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 69:
    $constrained = $pp + 29 | 0;
    $84 = HEAP8[$constrained] | 0;
    $tobool454 = $84 << 24 >> 24 == 0;
    if ($tobool454) {
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $theta = $pp + 16 | 0;
    $85 = +HEAPF64[$theta >> 3];
    $call457 = +Math_cos(+$85);
    $x459 = $evs | 0;
    HEAPF64[$x459 >> 3] = $call457;
    $86 = +HEAPF64[$theta >> 3];
    $call462 = +Math_sin(+$86);
    $y464 = $evs + 8 | 0;
    HEAPF64[$y464 >> 3] = $call462;
    label = 72;
    break;
   case 71:
    $87 = $evs;
    _memset($87 | 0, 0, 16);
    label = 72;
    break;
   case 72:
    $constrained472 = $pp + 69 | 0;
    $88 = HEAP8[$constrained472] | 0;
    $tobool473 = $88 << 24 >> 24 == 0;
    if ($tobool473) {
      label = 74;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $theta476 = $pp + 56 | 0;
    $89 = +HEAPF64[$theta476 >> 3];
    $call477 = +Math_cos(+$89);
    $sub478 = -0.0 - $call477;
    $x480 = $evs + 16 | 0;
    HEAPF64[$x480 >> 3] = $sub478;
    $90 = +HEAPF64[$theta476 >> 3];
    $call483 = +Math_sin(+$90);
    $sub484 = -0.0 - $call483;
    $y486 = $evs + 24 | 0;
    HEAPF64[$y486 >> 3] = $sub484;
    label = 75;
    break;
   case 74:
    $x491 = $evs + 16 | 0;
    $91 = $x491;
    _memset($91 | 0, 0, 16);
    label = 75;
    break;
   case 75:
    $92 = HEAP32[5080] | 0;
    $93 = HEAP32[$pn >> 2] | 0;
    $arraydecay494 = $evs | 0;
    $call495 = _Proutespline($92, $93, $pl, $arraydecay494, $spl) | 0;
    $cmp496 = ($call495 | 0) == -1;
    if ($cmp496) {
      label = 76;
      break;
    } else {
      label = 77;
      break;
    }
   case 76:
    _abort();
    return 0;
    return 0;
   case 77:
    $pn501 = $spl + 4 | 0;
    $94 = HEAP32[$pn501 >> 2] | 0;
    _mkspacep($94);
    $cmp503303 = ($8 | 0) > 0;
    if ($cmp503303) {
      $bi_5304 = 0;
      label = 80;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $95 = HEAP32[$pn501 >> 2] | 0;
    $cmp517301 = ($95 | 0) > 0;
    if ($cmp517301) {
      label = 79;
      break;
    } else {
      $99 = $95;
      label = 82;
      break;
    }
   case 79:
    $96 = HEAP32[1392] | 0;
    $ps521 = $spl | 0;
    $97 = HEAP32[$ps521 >> 2] | 0;
    $98 = HEAP32[$pn501 >> 2] | 0;
    $splinepi_0302 = 0;
    label = 83;
    break;
   case 80:
    $x508 = $7 + ($bi_5304 << 5) | 0;
    HEAPF64[$x508 >> 3] = 2147483647.0;
    $x511 = $7 + ($bi_5304 << 5) + 16 | 0;
    HEAPF64[$x511 >> 3] = -2147483648.0;
    $inc513 = $bi_5304 + 1 | 0;
    $cmp503 = ($inc513 | 0) < ($8 | 0);
    if ($cmp503) {
      $bi_5304 = $inc513;
      label = 80;
      break;
    } else {
      label = 78;
      break;
    }
   case 81:
    $_pr331 = HEAP32[$pn501 >> 2] | 0;
    $99 = $_pr331;
    label = 82;
    break;
   case 82:
    $cmp529298 = ($99 | 0) > 3;
    $100 = HEAP32[1392] | 0;
    $cmp683293 = ($8 | 0) > 0;
    $delta_0 = 10;
    label = 84;
    break;
   case 83:
    $arrayidx520 = $96 + ($splinepi_0302 << 4) | 0;
    $arrayidx522 = $97 + ($splinepi_0302 << 4) | 0;
    $101 = $arrayidx520;
    $102 = $arrayidx522;
    HEAP32[$101 >> 2] = HEAP32[$102 >> 2] | 0;
    HEAP32[$101 + 4 >> 2] = HEAP32[$102 + 4 >> 2] | 0;
    HEAP32[$101 + 8 >> 2] = HEAP32[$102 + 8 >> 2] | 0;
    HEAP32[$101 + 12 >> 2] = HEAP32[$102 + 12 >> 2] | 0;
    $inc524 = $splinepi_0302 + 1 | 0;
    $cmp517 = ($inc524 | 0) < ($98 | 0);
    if ($cmp517) {
      $splinepi_0302 = $inc524;
      label = 83;
      break;
    } else {
      label = 81;
      break;
    }
   case 84:
    if ($cmp529298) {
      label = 85;
      break;
    } else {
      $bi_7 = 0;
      label = 98;
      break;
    }
   case 85:
    $mul532 = Math_imul($delta_0, $8);
    $cmp534296 = ($mul532 | 0) < 0;
    $conv538 = +($mul532 | 0);
    $splinepi_1299 = 0;
    $add527300 = 3;
    label = 87;
    break;
   case 86:
    $add527 = $add527300 + 3 | 0;
    $cmp529 = ($add527 | 0) < ($99 | 0);
    if ($cmp529) {
      $splinepi_1299 = $add527300;
      $add527300 = $add527;
      label = 87;
      break;
    } else {
      $bi_7 = 0;
      label = 98;
      break;
    }
   case 87:
    if ($cmp534296) {
      label = 86;
      break;
    } else {
      label = 88;
      break;
    }
   case 88:
    $sp_sroa_0_0__idx = $100 + ($splinepi_1299 << 4) | 0;
    $sp_sroa_1_8__idx229 = $100 + ($splinepi_1299 << 4) + 8 | 0;
    $add542 = $splinepi_1299 + 1 | 0;
    $sp_sroa_2_16__idx = $100 + ($add542 << 4) | 0;
    $sp_sroa_3_24__idx242 = $100 + ($add542 << 4) + 8 | 0;
    $add545 = $splinepi_1299 + 2 | 0;
    $sp_sroa_4_32__idx = $100 + ($add545 << 4) | 0;
    $sp_sroa_5_40__idx249 = $100 + ($add545 << 4) + 8 | 0;
    $sp_sroa_6_48__idx = $100 + ($add527300 << 4) | 0;
    $sp_sroa_7_56__idx250 = $100 + ($add527300 << 4) + 8 | 0;
    $si_0297 = 0;
    label = 89;
    break;
   case 89:
    $conv537 = +($si_0297 | 0);
    $div = $conv537 / $conv538;
    $sp_sroa_0_0_copyload = +HEAPF64[$sp_sroa_0_0__idx >> 3];
    $sp_sroa_1_8_copyload = +HEAPF64[$sp_sroa_1_8__idx229 >> 3];
    $sp_sroa_2_16_copyload = +HEAPF64[$sp_sroa_2_16__idx >> 3];
    $sp_sroa_3_24_copyload = +HEAPF64[$sp_sroa_3_24__idx242 >> 3];
    $sp_sroa_4_32_copyload = +HEAPF64[$sp_sroa_4_32__idx >> 3];
    $sp_sroa_5_40_copyload = +HEAPF64[$sp_sroa_5_40__idx249 >> 3];
    $sp_sroa_6_48_copyload = +HEAPF64[$sp_sroa_6_48__idx >> 3];
    $sp_sroa_7_56_copyload = +HEAPF64[$sp_sroa_7_56__idx250 >> 3];
    $sub556 = $sp_sroa_2_16_copyload - $sp_sroa_0_0_copyload;
    $mul557 = $div * $sub556;
    $add558 = $sp_sroa_0_0_copyload + $mul557;
    $sub567 = $sp_sroa_3_24_copyload - $sp_sroa_1_8_copyload;
    $mul568 = $div * $sub567;
    $add569 = $sp_sroa_1_8_copyload + $mul568;
    $sub578 = $sp_sroa_4_32_copyload - $sp_sroa_2_16_copyload;
    $mul579 = $div * $sub578;
    $add580 = $sp_sroa_2_16_copyload + $mul579;
    $sub589 = $sp_sroa_5_40_copyload - $sp_sroa_3_24_copyload;
    $mul590 = $div * $sub589;
    $add591 = $sp_sroa_3_24_copyload + $mul590;
    $sub600 = $sp_sroa_6_48_copyload - $sp_sroa_4_32_copyload;
    $mul601 = $div * $sub600;
    $add602 = $sp_sroa_4_32_copyload + $mul601;
    $sub611 = $sp_sroa_7_56_copyload - $sp_sroa_5_40_copyload;
    $mul612 = $div * $sub611;
    $add613 = $sp_sroa_5_40_copyload + $mul612;
    $sub622 = $add580 - $add558;
    $mul623 = $div * $sub622;
    $add624 = $add558 + $mul623;
    $sub633 = $add591 - $add569;
    $mul634 = $div * $sub633;
    $add635 = $add569 + $mul634;
    $sub644 = $add602 - $add580;
    $mul645 = $div * $sub644;
    $add646 = $add580 + $mul645;
    $sub655 = $add613 - $add591;
    $mul656 = $div * $sub655;
    $add657 = $add591 + $mul656;
    $sub666 = $add646 - $add624;
    $mul667 = $div * $sub666;
    $add668 = $add624 + $mul667;
    $sub677 = $add657 - $add635;
    $mul678 = $div * $sub677;
    $add679 = $add635 + $mul678;
    if ($cmp683293) {
      $bi_6294 = 0;
      label = 90;
      break;
    } else {
      label = 97;
      break;
    }
   case 90:
    $y690 = $7 + ($bi_6294 << 5) + 24 | 0;
    $103 = +HEAPF64[$y690 >> 3];
    $add691 = $103 + 1.0e-4;
    $cmp692 = $add679 > $add691;
    if ($cmp692) {
      label = 96;
      break;
    } else {
      label = 91;
      break;
    }
   case 91:
    $y699 = $7 + ($bi_6294 << 5) + 8 | 0;
    $104 = +HEAPF64[$y699 >> 3];
    $sub700 = $104 + -1.0e-4;
    $cmp701 = $add679 < $sub700;
    if ($cmp701) {
      label = 96;
      break;
    } else {
      label = 92;
      break;
    }
   case 92:
    $x706 = $7 + ($bi_6294 << 5) | 0;
    $105 = +HEAPF64[$x706 >> 3];
    $cmp709 = $105 > $add668;
    if ($cmp709) {
      label = 93;
      break;
    } else {
      label = 94;
      break;
    }
   case 93:
    HEAPF64[$x706 >> 3] = $add668;
    label = 94;
    break;
   case 94:
    $x720 = $7 + ($bi_6294 << 5) + 16 | 0;
    $106 = +HEAPF64[$x720 >> 3];
    $cmp723 = $106 < $add668;
    if ($cmp723) {
      label = 95;
      break;
    } else {
      label = 96;
      break;
    }
   case 95:
    HEAPF64[$x720 >> 3] = $add668;
    label = 96;
    break;
   case 96:
    $inc734 = $bi_6294 + 1 | 0;
    $cmp683 = ($inc734 | 0) < ($8 | 0);
    if ($cmp683) {
      $bi_6294 = $inc734;
      label = 90;
      break;
    } else {
      label = 97;
      break;
    }
   case 97:
    $inc737 = $si_0297 + 1 | 0;
    $cmp534 = ($inc737 | 0) > ($mul532 | 0);
    if ($cmp534) {
      label = 86;
      break;
    } else {
      $si_0297 = $inc737;
      label = 89;
      break;
    }
   case 98:
    $cmp743 = ($bi_7 | 0) < ($8 | 0);
    if ($cmp743) {
      label = 99;
      break;
    } else {
      label = 102;
      break;
    }
   case 99:
    $x748 = $7 + ($bi_7 << 5) | 0;
    $107 = +HEAPF64[$x748 >> 3];
    $cmp749 = $107 == 2147483647.0;
    if ($cmp749) {
      label = 101;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $x754 = $7 + ($bi_7 << 5) + 16 | 0;
    $108 = +HEAPF64[$x754 >> 3];
    $cmp755 = $108 == -2147483648.0;
    $inc761 = $bi_7 + 1 | 0;
    if ($cmp755) {
      label = 101;
      break;
    } else {
      $bi_7 = $inc761;
      label = 98;
      break;
    }
   case 101:
    $mul758 = $delta_0 << 1;
    $delta_0 = $mul758;
    label = 84;
    break;
   case 102:
    $109 = HEAP32[$pn501 >> 2] | 0;
    HEAP32[$npoints >> 2] = $109;
    $110 = HEAP32[1392] | 0;
    STACKTOP = __stackBase__;
    return $110 | 0;
  }
  return 0;
}
function _overlap($i0, $i1, $j0, $j1) {
  $i0 = $i0 | 0;
  $i1 = $i1 | 0;
  $j0 = $j0 | 0;
  $j1 = $j1 | 0;
  var $cmp = 0, $cmp1 = 0, $or_cond22 = 0, $cmp4 = 0, $cmp5 = 0, $or_cond = 0, $sub = 0, $cmp8 = 0, $cmp10 = 0, $or_cond21 = 0, $sub12 = 0, $sub14 = 0, $sub15 = 0, $cmp16 = 0, $sub14_sub15 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($i1 | 0) > ($j0 | 0);
    $cmp1 = ($i0 | 0) < ($j1 | 0);
    $or_cond22 = $cmp & $cmp1;
    if ($or_cond22) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 8;
      break;
    }
   case 3:
    $cmp4 = ($j0 | 0) > ($i0 | 0);
    $cmp5 = ($i0 | 0) > ($j1 | 0);
    $or_cond = $cmp4 | $cmp5;
    if ($or_cond) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $sub = $j1 - $i0 | 0;
    $retval_0 = $sub;
    label = 8;
    break;
   case 5:
    $cmp8 = ($j0 | 0) > ($i1 | 0);
    $cmp10 = ($i1 | 0) > ($j1 | 0);
    $or_cond21 = $cmp8 | $cmp10;
    if ($or_cond21) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $sub12 = $i1 - $j0 | 0;
    $retval_0 = $sub12;
    label = 8;
    break;
   case 7:
    $sub14 = $i1 - $i0 | 0;
    $sub15 = $j1 - $j0 | 0;
    $cmp16 = ($sub14 | 0) < ($sub15 | 0);
    $sub14_sub15 = $cmp16 ? $sub14 : $sub15;
    $retval_0 = $sub14_sub15;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _printpath($pp) {
  $pp = $pp | 0;
  var $0 = 0, $nbox = 0, $1 = 0, $call = 0, $2 = 0, $cmp20 = 0, $3 = 0, $boxes = 0, $4 = 0, $bi_021 = 0, $5 = 0, $x = 0, $6 = 0.0, $y = 0, $7 = 0.0, $x7 = 0, $8 = 0.0, $y11 = 0, $9 = 0.0, $call12 = 0, $inc = 0, $10 = 0, $cmp = 0, $11 = 0, $_lcssa = 0, $x13 = 0, $12 = 0.0, $y16 = 0, $13 = 0.0, $theta = 0, $14 = 0.0, $constrained = 0, $15 = 0, $tobool = 0, $cond = 0, $call19 = 0, $16 = 0, $x21 = 0, $17 = 0.0, $y24 = 0, $18 = 0.0, $theta26 = 0, $19 = 0.0, $constrained28 = 0, $20 = 0, $tobool30 = 0, $cond31 = 0, $call32 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[_stderr >> 2] | 0;
    $nbox = $pp + 80 | 0;
    $1 = HEAP32[$nbox >> 2] | 0;
    $call = _fprintf($0 | 0, 90672, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $1, tempInt) | 0) | 0;
    $2 = HEAP32[$nbox >> 2] | 0;
    $cmp20 = ($2 | 0) > 0;
    $3 = HEAP32[_stderr >> 2] | 0;
    if ($cmp20) {
      label = 3;
      break;
    } else {
      $_lcssa = $3;
      label = 5;
      break;
    }
   case 3:
    $boxes = $pp + 84 | 0;
    $bi_021 = 0;
    $4 = $3;
    label = 4;
    break;
   case 4:
    $5 = HEAP32[$boxes >> 2] | 0;
    $x = $5 + ($bi_021 << 5) | 0;
    $6 = +HEAPF64[$x >> 3];
    $y = $5 + ($bi_021 << 5) + 8 | 0;
    $7 = +HEAPF64[$y >> 3];
    $x7 = $5 + ($bi_021 << 5) + 16 | 0;
    $8 = +HEAPF64[$x7 >> 3];
    $y11 = $5 + ($bi_021 << 5) + 24 | 0;
    $9 = +HEAPF64[$y11 >> 3];
    $call12 = _fprintf($4 | 0, 160832, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = $bi_021, HEAPF64[tempInt + 8 >> 3] = $6, HEAPF64[tempInt + 16 >> 3] = $7, HEAPF64[tempInt + 24 >> 3] = $8, HEAPF64[tempInt + 32 >> 3] = $9, tempInt) | 0) | 0;
    $inc = $bi_021 + 1 | 0;
    $10 = HEAP32[$nbox >> 2] | 0;
    $cmp = ($inc | 0) < ($10 | 0);
    $11 = HEAP32[_stderr >> 2] | 0;
    if ($cmp) {
      $bi_021 = $inc;
      $4 = $11;
      label = 4;
      break;
    } else {
      $_lcssa = $11;
      label = 5;
      break;
    }
   case 5:
    $x13 = $pp | 0;
    $12 = +HEAPF64[$x13 >> 3];
    $y16 = $pp + 8 | 0;
    $13 = +HEAPF64[$y16 >> 3];
    $theta = $pp + 16 | 0;
    $14 = +HEAPF64[$theta >> 3];
    $constrained = $pp + 29 | 0;
    $15 = HEAP8[$constrained] | 0;
    $tobool = $15 << 24 >> 24 != 0;
    $cond = $tobool ? 153880 : 150200;
    $call19 = _fprintf($_lcssa | 0, 157096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $12, HEAPF64[tempInt + 8 >> 3] = $13, HEAPF64[tempInt + 16 >> 3] = $14, HEAP32[tempInt + 24 >> 2] = $cond, tempInt) | 0) | 0;
    $16 = HEAP32[_stderr >> 2] | 0;
    $x21 = $pp + 40 | 0;
    $17 = +HEAPF64[$x21 >> 3];
    $y24 = $pp + 48 | 0;
    $18 = +HEAPF64[$y24 >> 3];
    $theta26 = $pp + 56 | 0;
    $19 = +HEAPF64[$theta26 >> 3];
    $constrained28 = $pp + 69 | 0;
    $20 = HEAP8[$constrained28] | 0;
    $tobool30 = $20 << 24 >> 24 != 0;
    $cond31 = $tobool30 ? 153880 : 150200;
    $call32 = _fprintf($16 | 0, 147320, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $17, HEAPF64[tempInt + 8 >> 3] = $18, HEAPF64[tempInt + 16 >> 3] = $19, HEAP32[tempInt + 24 >> 2] = $cond31, tempInt) | 0) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _checkpath($boxn, $boxes, $thepath) {
  $boxn = $boxn | 0;
  $boxes = $boxes | 0;
  $thepath = $thepath | 0;
  var $cmp207 = 0, $bi_0209 = 0, $i_0208 = 0, $arrayidx = 0, $y = 0, $0 = 0.0, $y2 = 0, $1 = 0.0, $sub = 0.0, $cmp3 = 0, $sub18 = 0.0, $cond = 0.0, $cmp19 = 0, $x = 0, $2 = 0.0, $x24 = 0, $3 = 0.0, $sub25 = 0.0, $cmp26 = 0, $sub43 = 0.0, $cond45 = 0.0, $cmp46 = 0, $cmp49 = 0, $arrayidx51 = 0, $4 = 0, $5 = 0, $inc = 0, $i_1 = 0, $inc54 = 0, $cmp = 0, $i_0_lcssa = 0, $x57 = 0, $6 = 0.0, $x59 = 0, $7 = 0.0, $cmp60 = 0, $y62 = 0, $8 = 0.0, $y64 = 0, $9 = 0.0, $cmp65 = 0, $sub69 = 0, $cmp70205 = 0, $call = 0, $bi_1206 = 0, $add = 0, $x75 = 0, $10 = 0.0, $x77 = 0, $11 = 0.0, $cmp78 = 0, $y81 = 0, $12 = 0.0, $y83 = 0, $13 = 0.0, $cmp84 = 0, $call87 = 0, $x90 = 0, $14 = 0.0, $cmp93 = 0, $cond94 = 0, $x96 = 0, $15 = 0.0, $cmp99 = 0, $cond100 = 0, $y102 = 0, $16 = 0.0, $cmp105 = 0, $cond106 = 0, $y108 = 0, $17 = 0.0, $cmp111 = 0, $cond112 = 0, $add113 = 0, $add114 = 0, $add115 = 0, $cmp116 = 0, $cmp116_not = 0, $18 = 0, $tobool = 0, $or_cond = 0, $19 = 0, $call119 = 0, $20 = 0.0, $conv129 = 0, $21 = 0.0, $conv134 = 0.0, $22 = 0.0, $conv142 = 0, $23 = 0.0, $conv147 = 0.0, $24 = 0.0, $conv156 = 0, $25 = 0.0, $conv161 = 0.0, $26 = 0.0, $conv170 = 0, $27 = 0.0, $conv175 = 0.0, $l_1_ph = 0, $r_1_ph = 0, $d_1_ph = 0, $u_1_ph = 0, $sub183 = 0, $cmp184198 = 0, $u_1203 = 0, $d_1202 = 0, $r_1201 = 0, $l_1200 = 0, $i_2199 = 0, $cmp187 = 0, $28 = 0.0, $29 = 0.0, $add194 = 0.0, $div = 0.0, $add195 = 0.0, $conv196 = 0, $conv197 = 0.0, $cmp203 = 0, $30 = 0.0, $31 = 0.0, $add210 = 0.0, $div211 = 0.0, $add212 = 0.0, $conv213 = 0, $conv214 = 0.0, $cmp220 = 0, $32 = 0.0, $33 = 0.0, $add227 = 0.0, $div228 = 0.0, $add229 = 0.0, $conv230 = 0, $conv231 = 0.0, $cmp237 = 0, $34 = 0.0, $35 = 0.0, $add244 = 0.0, $div245 = 0.0, $add246 = 0.0, $conv247 = 0, $conv248 = 0.0, $l_2 = 0, $r_2 = 0, $d_2 = 0, $u_2 = 0, $inc258 = 0, $cmp184 = 0, $36 = 0.0, $conv263 = 0, $37 = 0.0, $conv266 = 0, $38 = 0.0, $conv269 = 0, $39 = 0.0, $conv272 = 0, $call273 = 0, $40 = 0.0, $conv276 = 0, $41 = 0.0, $conv279 = 0, $42 = 0.0, $conv282 = 0, $43 = 0.0, $conv285 = 0, $call286 = 0, $tobool287 = 0, $tobool289 = 0, $or_cond197 = 0, $cmp70 = 0, $cmp291 = 0, $sub298 = 0.0, $sub303 = 0.0, $cmp304 = 0, $cmp311 = 0, $sub348 = 0.0, $sub353 = 0.0, $cmp354 = 0, $cmp361 = 0, $x398 = 0, $44 = 0.0, $45 = 0.0, $cmp402 = 0, $46 = 0.0, $cmp411 = 0, $y416 = 0, $47 = 0.0, $48 = 0.0, $cmp420 = 0, $49 = 0.0, $cmp429 = 0, $50 = 0, $tobool432 = 0, $51 = 0, $52 = 0, $53 = 0.0, $54 = 0.0, $cmp442 = 0, $55 = 0.0, $56 = 0.0, $cmp458 = 0, $y470 = 0, $57 = 0.0, $58 = 0.0, $cmp474 = 0, $59 = 0.0, $60 = 0.0, $cmp490 = 0, $x502 = 0, $61 = 0.0, $x506 = 0, $62 = 0.0, $cmp507 = 0, $x516 = 0, $63 = 0.0, $cmp517 = 0, $y522 = 0, $64 = 0.0, $y526 = 0, $65 = 0.0, $cmp527 = 0, $y536 = 0, $66 = 0.0, $cmp537 = 0, $67 = 0, $tobool540 = 0, $68 = 0, $69 = 0, $70 = 0.0, $71 = 0.0, $cmp551 = 0, $72 = 0.0, $x568 = 0, $73 = 0.0, $cmp569 = 0, $y582 = 0, $74 = 0.0, $y586 = 0, $75 = 0.0, $cmp587 = 0, $76 = 0.0, $y604 = 0, $77 = 0.0, $cmp605 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp207 = ($boxn | 0) > 0;
    if ($cmp207) {
      $i_0208 = 0;
      $bi_0209 = 0;
      label = 3;
      break;
    } else {
      $i_0_lcssa = 0;
      label = 13;
      break;
    }
   case 3:
    $arrayidx = $boxes + ($bi_0209 << 5) | 0;
    $y = $boxes + ($bi_0209 << 5) + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $y2 = $boxes + ($bi_0209 << 5) + 24 | 0;
    $1 = +HEAPF64[$y2 >> 3];
    $sub = $0 - $1;
    $cmp3 = $sub < 0.0;
    if ($cmp3) {
      label = 4;
      break;
    } else {
      $cond = $sub;
      label = 5;
      break;
    }
   case 4:
    $sub18 = -0.0 - $sub;
    $cond = $sub18;
    label = 5;
    break;
   case 5:
    $cmp19 = $cond < .01;
    if ($cmp19) {
      $i_1 = $i_0208;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x = $arrayidx | 0;
    $2 = +HEAPF64[$x >> 3];
    $x24 = $boxes + ($bi_0209 << 5) + 16 | 0;
    $3 = +HEAPF64[$x24 >> 3];
    $sub25 = $2 - $3;
    $cmp26 = $sub25 < 0.0;
    if ($cmp26) {
      label = 7;
      break;
    } else {
      $cond45 = $sub25;
      label = 8;
      break;
    }
   case 7:
    $sub43 = -0.0 - $sub25;
    $cond45 = $sub43;
    label = 8;
    break;
   case 8:
    $cmp46 = $cond45 < .01;
    if ($cmp46) {
      $i_1 = $i_0208;
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp49 = ($i_0208 | 0) == ($bi_0209 | 0);
    if ($cmp49) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $arrayidx51 = $boxes + ($i_0208 << 5) | 0;
    $4 = $arrayidx51;
    $5 = $arrayidx;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    HEAP32[$4 + 16 >> 2] = HEAP32[$5 + 16 >> 2] | 0;
    HEAP32[$4 + 20 >> 2] = HEAP32[$5 + 20 >> 2] | 0;
    HEAP32[$4 + 24 >> 2] = HEAP32[$5 + 24 >> 2] | 0;
    HEAP32[$4 + 28 >> 2] = HEAP32[$5 + 28 >> 2] | 0;
    label = 11;
    break;
   case 11:
    $inc = $i_0208 + 1 | 0;
    $i_1 = $inc;
    label = 12;
    break;
   case 12:
    $inc54 = $bi_0209 + 1 | 0;
    $cmp = ($inc54 | 0) < ($boxn | 0);
    if ($cmp) {
      $i_0208 = $i_1;
      $bi_0209 = $inc54;
      label = 3;
      break;
    } else {
      $i_0_lcssa = $i_1;
      label = 13;
      break;
    }
   case 13:
    $x57 = $boxes | 0;
    $6 = +HEAPF64[$x57 >> 3];
    $x59 = $boxes + 16 | 0;
    $7 = +HEAPF64[$x59 >> 3];
    $cmp60 = $6 > $7;
    if ($cmp60) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $y62 = $boxes + 8 | 0;
    $8 = +HEAPF64[$y62 >> 3];
    $y64 = $boxes + 24 | 0;
    $9 = +HEAPF64[$y64 >> 3];
    $cmp65 = $8 > $9;
    if ($cmp65) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $sub69 = $i_0_lcssa - 1 | 0;
    $cmp70205 = ($sub69 | 0) > 0;
    if ($cmp70205) {
      $bi_1206 = 0;
      label = 17;
      break;
    } else {
      label = 58;
      break;
    }
   case 16:
    $call = _agerr(1, 110272, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _printpath($thepath);
    _abort();
   case 17:
    $add = $bi_1206 + 1 | 0;
    $x75 = $boxes + ($add << 5) | 0;
    $10 = +HEAPF64[$x75 >> 3];
    $x77 = $boxes + ($add << 5) + 16 | 0;
    $11 = +HEAPF64[$x77 >> 3];
    $cmp78 = $10 > $11;
    if ($cmp78) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $y81 = $boxes + ($add << 5) + 8 | 0;
    $12 = +HEAPF64[$y81 >> 3];
    $y83 = $boxes + ($add << 5) + 24 | 0;
    $13 = +HEAPF64[$y83 >> 3];
    $cmp84 = $12 > $13;
    if ($cmp84) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $call87 = _agerr(1, 106096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $add, tempInt) | 0) | 0;
    _printpath($thepath);
    _abort();
   case 20:
    $x90 = $boxes + ($bi_1206 << 5) + 16 | 0;
    $14 = +HEAPF64[$x90 >> 3];
    $cmp93 = $14 < $10;
    $cond94 = $cmp93 & 1;
    $x96 = $boxes + ($bi_1206 << 5) | 0;
    $15 = +HEAPF64[$x96 >> 3];
    $cmp99 = $15 > $11;
    $cond100 = $cmp99 & 1;
    $y102 = $boxes + ($bi_1206 << 5) + 24 | 0;
    $16 = +HEAPF64[$y102 >> 3];
    $cmp105 = $16 < $12;
    $cond106 = $cmp105 & 1;
    $y108 = $boxes + ($bi_1206 << 5) + 8 | 0;
    $17 = +HEAPF64[$y108 >> 3];
    $cmp111 = $17 > $13;
    $cond112 = $cmp111 & 1;
    $add113 = $cond100 + $cond94 | 0;
    $add114 = $add113 + $cond106 | 0;
    $add115 = $add114 + $cond112 | 0;
    $cmp116 = ($add115 | 0) > 0;
    $cmp116_not = $cmp116 ^ 1;
    $18 = HEAP8[164912] | 0;
    $tobool = $18 << 24 >> 24 == 0;
    $or_cond = $tobool | $cmp116_not;
    if ($or_cond) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $19 = HEAP32[_stderr >> 2] | 0;
    $call119 = _fprintf($19 | 0, 102168, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $bi_1206, HEAP32[tempInt + 8 >> 2] = $add, tempInt) | 0) | 0;
    _printpath($thepath);
    label = 22;
    break;
   case 22:
    if ($cmp116) {
      label = 23;
      break;
    } else {
      label = 41;
      break;
    }
   case 23:
    if ($cmp93) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $20 = +HEAPF64[$x90 >> 3];
    $conv129 = ~~$20;
    $21 = +HEAPF64[$x75 >> 3];
    HEAPF64[$x90 >> 3] = $21;
    $conv134 = +($conv129 | 0);
    HEAPF64[$x75 >> 3] = $conv134;
    $u_1_ph = $cond112;
    $d_1_ph = $cond106;
    $r_1_ph = $cond100;
    $l_1_ph = 0;
    label = 31;
    break;
   case 25:
    if ($cmp99) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $22 = +HEAPF64[$x96 >> 3];
    $conv142 = ~~$22;
    $23 = +HEAPF64[$x77 >> 3];
    HEAPF64[$x96 >> 3] = $23;
    $conv147 = +($conv142 | 0);
    HEAPF64[$x77 >> 3] = $conv147;
    $u_1_ph = $cond112;
    $d_1_ph = $cond106;
    $r_1_ph = 0;
    $l_1_ph = $cond94;
    label = 31;
    break;
   case 27:
    if ($cmp105) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $24 = +HEAPF64[$y102 >> 3];
    $conv156 = ~~$24;
    $25 = +HEAPF64[$y81 >> 3];
    HEAPF64[$y102 >> 3] = $25;
    $conv161 = +($conv156 | 0);
    HEAPF64[$y81 >> 3] = $conv161;
    $u_1_ph = $cond112;
    $d_1_ph = 0;
    $r_1_ph = $cond100;
    $l_1_ph = $cond94;
    label = 31;
    break;
   case 29:
    if ($cmp111) {
      label = 30;
      break;
    } else {
      $u_1_ph = $cond112;
      $d_1_ph = $cond106;
      $r_1_ph = $cond100;
      $l_1_ph = $cond94;
      label = 31;
      break;
    }
   case 30:
    $26 = +HEAPF64[$y108 >> 3];
    $conv170 = ~~$26;
    $27 = +HEAPF64[$y83 >> 3];
    HEAPF64[$y108 >> 3] = $27;
    $conv175 = +($conv170 | 0);
    HEAPF64[$y83 >> 3] = $conv175;
    $u_1_ph = 0;
    $d_1_ph = $cond106;
    $r_1_ph = $cond100;
    $l_1_ph = $cond94;
    label = 31;
    break;
   case 31:
    $sub183 = $add115 - 1 | 0;
    $cmp184198 = ($sub183 | 0) > 0;
    if ($cmp184198) {
      $i_2199 = 0;
      $l_1200 = $l_1_ph;
      $r_1201 = $r_1_ph;
      $d_1202 = $d_1_ph;
      $u_1203 = $u_1_ph;
      label = 32;
      break;
    } else {
      label = 41;
      break;
    }
   case 32:
    $cmp187 = ($l_1200 | 0) == 1;
    if ($cmp187) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $28 = +HEAPF64[$x90 >> 3];
    $29 = +HEAPF64[$x75 >> 3];
    $add194 = $28 + $29;
    $div = $add194 * .5;
    $add195 = $div + .5;
    $conv196 = ~~$add195;
    $conv197 = +($conv196 | 0);
    HEAPF64[$x75 >> 3] = $conv197;
    HEAPF64[$x90 >> 3] = $conv197;
    $u_2 = $u_1203;
    $d_2 = $d_1202;
    $r_2 = $r_1201;
    $l_2 = 0;
    label = 40;
    break;
   case 34:
    $cmp203 = ($r_1201 | 0) == 1;
    if ($cmp203) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $30 = +HEAPF64[$x96 >> 3];
    $31 = +HEAPF64[$x77 >> 3];
    $add210 = $30 + $31;
    $div211 = $add210 * .5;
    $add212 = $div211 + .5;
    $conv213 = ~~$add212;
    $conv214 = +($conv213 | 0);
    HEAPF64[$x77 >> 3] = $conv214;
    HEAPF64[$x96 >> 3] = $conv214;
    $u_2 = $u_1203;
    $d_2 = $d_1202;
    $r_2 = 0;
    $l_2 = $l_1200;
    label = 40;
    break;
   case 36:
    $cmp220 = ($d_1202 | 0) == 1;
    if ($cmp220) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $32 = +HEAPF64[$y102 >> 3];
    $33 = +HEAPF64[$y81 >> 3];
    $add227 = $32 + $33;
    $div228 = $add227 * .5;
    $add229 = $div228 + .5;
    $conv230 = ~~$add229;
    $conv231 = +($conv230 | 0);
    HEAPF64[$y81 >> 3] = $conv231;
    HEAPF64[$y102 >> 3] = $conv231;
    $u_2 = $u_1203;
    $d_2 = 0;
    $r_2 = $r_1201;
    $l_2 = $l_1200;
    label = 40;
    break;
   case 38:
    $cmp237 = ($u_1203 | 0) == 1;
    if ($cmp237) {
      label = 39;
      break;
    } else {
      $u_2 = $u_1203;
      $d_2 = $d_1202;
      $r_2 = $r_1201;
      $l_2 = $l_1200;
      label = 40;
      break;
    }
   case 39:
    $34 = +HEAPF64[$y108 >> 3];
    $35 = +HEAPF64[$y83 >> 3];
    $add244 = $34 + $35;
    $div245 = $add244 * .5;
    $add246 = $div245 + .5;
    $conv247 = ~~$add246;
    $conv248 = +($conv247 | 0);
    HEAPF64[$y83 >> 3] = $conv248;
    HEAPF64[$y108 >> 3] = $conv248;
    $u_2 = 0;
    $d_2 = $d_1202;
    $r_2 = $r_1201;
    $l_2 = $l_1200;
    label = 40;
    break;
   case 40:
    $inc258 = $i_2199 + 1 | 0;
    $cmp184 = ($inc258 | 0) < ($sub183 | 0);
    if ($cmp184) {
      $i_2199 = $inc258;
      $l_1200 = $l_2;
      $r_1201 = $r_2;
      $d_1202 = $d_2;
      $u_1203 = $u_2;
      label = 32;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $36 = +HEAPF64[$x96 >> 3];
    $conv263 = ~~$36;
    $37 = +HEAPF64[$x90 >> 3];
    $conv266 = ~~$37;
    $38 = +HEAPF64[$x75 >> 3];
    $conv269 = ~~$38;
    $39 = +HEAPF64[$x77 >> 3];
    $conv272 = ~~$39;
    $call273 = _overlap($conv263, $conv266, $conv269, $conv272) | 0;
    $40 = +HEAPF64[$y108 >> 3];
    $conv276 = ~~$40;
    $41 = +HEAPF64[$y102 >> 3];
    $conv279 = ~~$41;
    $42 = +HEAPF64[$y81 >> 3];
    $conv282 = ~~$42;
    $43 = +HEAPF64[$y83 >> 3];
    $conv285 = ~~$43;
    $call286 = _overlap($conv276, $conv279, $conv282, $conv285) | 0;
    $tobool287 = ($call273 | 0) == 0;
    $tobool289 = ($call286 | 0) == 0;
    $or_cond197 = $tobool287 | $tobool289;
    if ($or_cond197) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    $cmp70 = ($add | 0) < ($sub69 | 0);
    if ($cmp70) {
      $bi_1206 = $add;
      label = 17;
      break;
    } else {
      label = 58;
      break;
    }
   case 43:
    $cmp291 = ($call273 | 0) < ($call286 | 0);
    if ($cmp291) {
      label = 44;
      break;
    } else {
      label = 51;
      break;
    }
   case 44:
    $sub298 = $37 - $36;
    $sub303 = $39 - $38;
    $cmp304 = $sub298 > $sub303;
    $cmp311 = $37 < $39;
    if ($cmp304) {
      label = 45;
      break;
    } else {
      label = 48;
      break;
    }
   case 45:
    if ($cmp311) {
      label = 46;
      break;
    } else {
      label = 47;
      break;
    }
   case 46:
    HEAPF64[$x90 >> 3] = $38;
    label = 42;
    break;
   case 47:
    HEAPF64[$x96 >> 3] = $39;
    label = 42;
    break;
   case 48:
    if ($cmp311) {
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 49:
    HEAPF64[$x75 >> 3] = $37;
    label = 42;
    break;
   case 50:
    HEAPF64[$x77 >> 3] = $36;
    label = 42;
    break;
   case 51:
    $sub348 = $41 - $40;
    $sub353 = $43 - $42;
    $cmp354 = $sub348 > $sub353;
    $cmp361 = $41 < $43;
    if ($cmp354) {
      label = 52;
      break;
    } else {
      label = 55;
      break;
    }
   case 52:
    if ($cmp361) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    HEAPF64[$y102 >> 3] = $42;
    label = 42;
    break;
   case 54:
    HEAPF64[$y108 >> 3] = $43;
    label = 42;
    break;
   case 55:
    if ($cmp361) {
      label = 56;
      break;
    } else {
      label = 57;
      break;
    }
   case 56:
    HEAPF64[$y81 >> 3] = $41;
    label = 42;
    break;
   case 57:
    HEAPF64[$y83 >> 3] = $40;
    label = 42;
    break;
   case 58:
    $x398 = $thepath | 0;
    $44 = +HEAPF64[$x398 >> 3];
    $45 = +HEAPF64[$x57 >> 3];
    $cmp402 = $44 < $45;
    if ($cmp402) {
      label = 62;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $46 = +HEAPF64[$x59 >> 3];
    $cmp411 = $44 > $46;
    if ($cmp411) {
      label = 62;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $y416 = $thepath + 8 | 0;
    $47 = +HEAPF64[$y416 >> 3];
    $48 = +HEAPF64[$y62 >> 3];
    $cmp420 = $47 < $48;
    if ($cmp420) {
      label = 62;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    $49 = +HEAPF64[$y64 >> 3];
    $cmp429 = $47 > $49;
    if ($cmp429) {
      label = 62;
      break;
    } else {
      label = 72;
      break;
    }
   case 62:
    $50 = HEAP8[164912] | 0;
    $tobool432 = $50 << 24 >> 24 == 0;
    if ($tobool432) {
      label = 64;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $51 = HEAP32[_stderr >> 2] | 0;
    $52 = _fwrite(97888, 42, 1, $51 | 0) | 0;
    _printpath($thepath);
    label = 64;
    break;
   case 64:
    $53 = +HEAPF64[$x398 >> 3];
    $54 = +HEAPF64[$x57 >> 3];
    $cmp442 = $53 < $54;
    if ($cmp442) {
      label = 65;
      break;
    } else {
      label = 66;
      break;
    }
   case 65:
    HEAPF64[$x398 >> 3] = $54;
    label = 66;
    break;
   case 66:
    $55 = +HEAPF64[$x398 >> 3];
    $56 = +HEAPF64[$x59 >> 3];
    $cmp458 = $55 > $56;
    if ($cmp458) {
      label = 67;
      break;
    } else {
      label = 68;
      break;
    }
   case 67:
    HEAPF64[$x398 >> 3] = $56;
    label = 68;
    break;
   case 68:
    $y470 = $thepath + 8 | 0;
    $57 = +HEAPF64[$y470 >> 3];
    $58 = +HEAPF64[$y62 >> 3];
    $cmp474 = $57 < $58;
    if ($cmp474) {
      label = 69;
      break;
    } else {
      label = 70;
      break;
    }
   case 69:
    HEAPF64[$y470 >> 3] = $58;
    label = 70;
    break;
   case 70:
    $59 = +HEAPF64[$y470 >> 3];
    $60 = +HEAPF64[$y64 >> 3];
    $cmp490 = $59 > $60;
    if ($cmp490) {
      label = 71;
      break;
    } else {
      label = 72;
      break;
    }
   case 71:
    HEAPF64[$y470 >> 3] = $60;
    label = 72;
    break;
   case 72:
    $x502 = $thepath + 40 | 0;
    $61 = +HEAPF64[$x502 >> 3];
    $x506 = $boxes + ($sub69 << 5) | 0;
    $62 = +HEAPF64[$x506 >> 3];
    $cmp507 = $61 < $62;
    if ($cmp507) {
      label = 76;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $x516 = $boxes + ($sub69 << 5) + 16 | 0;
    $63 = +HEAPF64[$x516 >> 3];
    $cmp517 = $61 > $63;
    if ($cmp517) {
      label = 76;
      break;
    } else {
      label = 74;
      break;
    }
   case 74:
    $y522 = $thepath + 48 | 0;
    $64 = +HEAPF64[$y522 >> 3];
    $y526 = $boxes + ($sub69 << 5) + 8 | 0;
    $65 = +HEAPF64[$y526 >> 3];
    $cmp527 = $64 < $65;
    if ($cmp527) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $y536 = $boxes + ($sub69 << 5) + 24 | 0;
    $66 = +HEAPF64[$y536 >> 3];
    $cmp537 = $64 > $66;
    if ($cmp537) {
      label = 76;
      break;
    } else {
      label = 86;
      break;
    }
   case 76:
    $67 = HEAP8[164912] | 0;
    $tobool540 = $67 << 24 >> 24 == 0;
    if ($tobool540) {
      label = 78;
      break;
    } else {
      label = 77;
      break;
    }
   case 77:
    $68 = HEAP32[_stderr >> 2] | 0;
    $69 = _fwrite(94152, 39, 1, $68 | 0) | 0;
    _printpath($thepath);
    label = 78;
    break;
   case 78:
    $70 = +HEAPF64[$x502 >> 3];
    $71 = +HEAPF64[$x506 >> 3];
    $cmp551 = $70 < $71;
    if ($cmp551) {
      label = 79;
      break;
    } else {
      label = 80;
      break;
    }
   case 79:
    HEAPF64[$x502 >> 3] = $71;
    label = 80;
    break;
   case 80:
    $72 = +HEAPF64[$x502 >> 3];
    $x568 = $boxes + ($sub69 << 5) + 16 | 0;
    $73 = +HEAPF64[$x568 >> 3];
    $cmp569 = $72 > $73;
    if ($cmp569) {
      label = 81;
      break;
    } else {
      label = 82;
      break;
    }
   case 81:
    HEAPF64[$x502 >> 3] = $73;
    label = 82;
    break;
   case 82:
    $y582 = $thepath + 48 | 0;
    $74 = +HEAPF64[$y582 >> 3];
    $y586 = $boxes + ($sub69 << 5) + 8 | 0;
    $75 = +HEAPF64[$y586 >> 3];
    $cmp587 = $74 < $75;
    if ($cmp587) {
      label = 83;
      break;
    } else {
      label = 84;
      break;
    }
   case 83:
    HEAPF64[$y582 >> 3] = $75;
    label = 84;
    break;
   case 84:
    $76 = +HEAPF64[$y582 >> 3];
    $y604 = $boxes + ($sub69 << 5) + 24 | 0;
    $77 = +HEAPF64[$y604 >> 3];
    $cmp605 = $76 > $77;
    if ($cmp605) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    HEAPF64[$y582 >> 3] = $77;
    label = 86;
    break;
   case 86:
    STACKTOP = __stackBase__;
    return;
  }
}
function _interpolate_pointf($agg_result, $t, $p, $q) {
  $agg_result = $agg_result | 0;
  $t = +$t;
  $p = $p | 0;
  $q = $q | 0;
  var $0 = 0.0, $2 = 0.0, $add8 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $0 = +HEAPF64[$p >> 3];
  $2 = +HEAPF64[$p + 8 >> 3];
  $add8 = $2 + (+HEAPF64[$q + 8 >> 3] - $2) * $t;
  HEAPF64[$agg_result >> 3] = $0 + (+HEAPF64[$q >> 3] - $0) * $t;
  HEAPF64[$agg_result + 8 >> 3] = $add8;
  STACKTOP = __stackBase__;
  return;
}
function _shapeOf($n) {
  $n = $n | 0;
  var $shape = 0, $0 = 0, $tobool = 0, $fns = 0, $1 = 0, $initfn = 0, $2 = 0, $cmp = 0, $cmp4 = 0, $cmp7 = 0, $cmp10 = 0, $_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $shape = $n + 24 | 0;
    $0 = HEAP32[$shape >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $fns = $0 + 4 | 0;
    $1 = HEAP32[$fns >> 2] | 0;
    $initfn = $1 | 0;
    $2 = HEAP32[$initfn >> 2] | 0;
    $cmp = ($2 | 0) == 476;
    if ($cmp) {
      $retval_0 = 1;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $cmp4 = ($2 | 0) == 66;
    if ($cmp4) {
      $retval_0 = 2;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp7 = ($2 | 0) == 62;
    if ($cmp7) {
      $retval_0 = 3;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp10 = ($2 | 0) == 632;
    $_ = $cmp10 ? 4 : 0;
    $retval_0 = $_;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _round_corners($job, $fillc, $penc, $AF, $sides, $style, $filled) {
  $job = $job | 0;
  $fillc = $fillc | 0;
  $penc = $penc | 0;
  $AF = $AF | 0;
  $sides = $sides | 0;
  $style = $style | 0;
  $filled = $filled | 0;
  var $C = 0, $p0 = 0, $p1 = 0, $tmp = 0, $tmp72 = 0, $tmp76 = 0, $tmp83 = 0, $and = 0, $tobool = 0, $and1 = 0, $tobool2 = 0, $_and1 = 0, $mode_0 = 0, $mul = 0, $mul7 = 0, $call = 0, $0 = 0, $cmp400 = 0, $1 = 0, $sub = 0, $2 = 0, $x = 0, $x15 = 0, $y = 0, $y17 = 0, $3 = 0, $4 = 0, $cmp26397 = 0, $5 = 0, $sub29 = 0, $6 = 0, $x37 = 0, $x38 = 0, $y40 = 0, $y41 = 0, $and48 = 0, $tobool49 = 0, $and53 = 0, $tobool54 = 0, $cmp59 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $11 = 0, $12 = 0, $seg_0402 = 0, $rbconst_0401 = 0.0, $arrayidx = 0, $13 = 0, $cmp8 = 0, $add10 = 0, $arrayidx11 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $sub16 = 0.0, $17 = 0.0, $18 = 0.0, $sub18 = 0.0, $mul19 = 0.0, $mul20 = 0.0, $add21 = 0.0, $call22 = 0.0, $div = 0.0, $cmp23 = 0, $rbconst_0_div = 0.0, $inc = 0, $cmp = 0, $seg_1399 = 0, $i_0398 = 0, $arrayidx28 = 0, $19 = 0, $cmp30 = 0, $add32 = 0, $arrayidx33 = 0, $20 = 0, $21 = 0.0, $22 = 0.0, $sub39 = 0.0, $23 = 0.0, $24 = 0.0, $sub42 = 0.0, $mul43 = 0.0, $mul44 = 0.0, $add45 = 0.0, $call46 = 0.0, $div47 = 0.0, $div51 = 0.0, $div56 = 0.0, $t_0 = 0.0, $inc66 = 0, $arrayidx67 = 0, $25 = 0, $mul68 = 0.0, $26 = 0, $inc70 = 0, $arrayidx71 = 0, $27 = 0, $inc73 = 0, $arrayidx74 = 0, $sub75 = 0.0, $28 = 0, $inc79 = 0, $arrayidx80 = 0, $mul81 = 0.0, $sub82 = 0.0, $29 = 0, $i_3 = 0, $inc86 = 0, $cmp26 = 0, $i_0_lcssa = 0, $inc88 = 0, $arrayidx89 = 0, $30 = 0, $inc91 = 0, $arrayidx92 = 0, $arrayidx93 = 0, $31 = 0, $arrayidx95 = 0, $arrayidx96 = 0, $32 = 0, $tobool97 = 0, $mul101 = 0, $mul102 = 0, $call103 = 0, $33 = 0, $cmp105385 = 0, $j_0387 = 0, $seg_2386 = 0, $inc107379 = 0, $arrayidx108 = 0, $mul109 = 0, $add110377 = 0, $arrayidx111 = 0, $34 = 0, $35 = 0, $inc112 = 0, $arrayidx113 = 0, $add115378 = 0, $arrayidx116 = 0, $36 = 0, $37 = 0, $inc118 = 0, $cmp105 = 0, $cmp122383 = 0, $seg_3384 = 0, $mul124 = 0, $add_ptr_sum376 = 0, $add_ptr125 = 0, $inc127 = 0, $cmp122 = 0, $cmp131381 = 0, $seg_4382 = 0, $mul133 = 0, $add_ptr134_sum374 = 0, $add_ptr135 = 0, $add_ptr134_sum375 = 0, $add_ptr138 = 0, $inc140 = 0, $cmp131 = 0, $tobool143 = 0, $conv = 0, $cmp147389 = 0, $arrayidx150 = 0, $38 = 0, $arrayidx154 = 0, $39 = 0, $seg_5390 = 0, $mul151 = 0, $add152 = 0, $arrayidx153 = 0, $40 = 0, $add156 = 0, $arrayidx157 = 0, $41 = 0, $inc159 = 0, $cmp147 = 0, $tobool162 = 0, $add165 = 0, $mul166 = 0, $call167 = 0, $42 = 0, $cmp169391 = 0, $seg_6392 = 0, $arrayidx172 = 0, $arrayidx173 = 0, $43 = 0, $44 = 0, $inc175 = 0, $cmp169 = 0, $45 = 0, $add180 = 0, $arrayidx181 = 0, $46 = 0, $arrayidx182 = 0, $add185 = 0, $arrayidx186 = 0, $47 = 0, $48 = 0, $conv188 = 0, $arrayidx190 = 0, $49 = 0, $arrayidx194 = 0, $50 = 0, $x199 = 0, $51 = 0.0, $x201 = 0, $52 = 0.0, $x205 = 0, $53 = 0.0, $sub206 = 0.0, $add207 = 0.0, $arrayidx208 = 0, $x209 = 0, $y211 = 0, $54 = 0.0, $y213 = 0, $55 = 0.0, $y217 = 0, $56 = 0.0, $sub218 = 0.0, $add219 = 0.0, $y221 = 0, $57 = 0, $tobool228 = 0, $add231 = 0, $mul232 = 0, $call233 = 0, $58 = 0, $59 = 0, $arrayidx236 = 0, $x239 = 0, $60 = 0.0, $arrayidx240 = 0, $x241 = 0, $61 = 0.0, $arrayidx242 = 0, $x243 = 0, $62 = 0.0, $sub244 = 0.0, $div245 = 0.0, $add246 = 0.0, $arrayidx247 = 0, $x248 = 0, $y250 = 0, $63 = 0, $64 = 0.0, $y252 = 0, $65 = 0, $66 = 0.0, $y254 = 0, $67 = 0, $68 = 0.0, $sub255 = 0.0, $div256 = 0.0, $add257 = 0.0, $y259 = 0, $69 = 0, $70 = 0.0, $71 = 0.0, $sub266 = 0.0, $div267 = 0.0, $add268 = 0.0, $arrayidx269 = 0, $x270 = 0, $72 = 0.0, $73 = 0.0, $sub277 = 0.0, $div278 = 0.0, $add279 = 0.0, $y281 = 0, $74 = 0, $cmp284393 = 0, $seg_7394 = 0, $arrayidx287 = 0, $sub288 = 0, $arrayidx289 = 0, $75 = 0, $76 = 0, $inc291 = 0, $cmp284 = 0, $conv294 = 0, $arrayidx295 = 0, $77 = 0, $arrayidx297 = 0, $78 = 0, $tobool301 = 0, $add304 = 0, $mul305 = 0, $call306 = 0, $79 = 0, $80 = 0, $x310 = 0, $81 = 0.0, $x314 = 0, $82 = 0.0, $sub315 = 0.0, $div316 = 0.0, $sub317 = 0.0, $arrayidx318 = 0, $x319 = 0, $y321 = 0, $83 = 0.0, $arrayidx322 = 0, $y323 = 0, $84 = 0, $85 = 0.0, $y325 = 0, $86 = 0, $87 = 0.0, $sub326 = 0.0, $div327 = 0.0, $add328 = 0.0, $y330 = 0, $88 = 0, $89 = 0.0, $90 = 0.0, $sub337 = 0.0, $mul338 = 0.0, $sub339 = 0.0, $arrayidx340 = 0, $x341 = 0, $91 = 0.0, $y345 = 0, $92 = 0, $93 = 0.0, $94 = 0.0, $sub352 = 0.0, $mul353 = 0.0, $sub354 = 0.0, $arrayidx355 = 0, $x356 = 0, $95 = 0.0, $y360 = 0, $96 = 0, $x362 = 0, $97 = 0.0, $arrayidx363 = 0, $x364 = 0, $98 = 0.0, $y368 = 0, $99 = 0, $cmp371395 = 0, $seg_8396 = 0, $arrayidx374 = 0, $sub375 = 0, $arrayidx376 = 0, $100 = 0, $101 = 0, $inc378 = 0, $cmp371 = 0, $conv381 = 0, $cmp383 = 0, $tobool388 = 0, $add391 = 0, $mul392 = 0, $call393 = 0, $102 = 0, $103 = 0, $arrayidx396 = 0, $arrayidx398 = 0, $arrayidx399 = 0, $arrayidx400 = 0, $arrayidx401 = 0, $104 = 0, $arrayidx402 = 0, $arrayidx403 = 0, $arrayidx404 = 0, $arrayidx405 = 0, $conv407 = 0, $x409 = 0, $105 = 0.0, $arrayidx410 = 0, $x411 = 0, $106 = 0.0, $x413 = 0, $107 = 0.0, $sub414 = 0.0, $add415 = 0.0, $arrayidx416 = 0, $x417 = 0, $y419 = 0, $108 = 0, $109 = 0.0, $y421 = 0, $110 = 0, $111 = 0.0, $y423 = 0, $112 = 0, $113 = 0.0, $sub424 = 0.0, $add425 = 0.0, $y427 = 0, $arrayidx428 = 0, $114 = 0, $cmp438 = 0, $tobool443 = 0, $add446 = 0, $mul447 = 0, $call448 = 0, $115 = 0, $116 = 0, $arrayidx451 = 0, $arrayidx452 = 0, $117 = 0, $arrayidx453 = 0, $x454 = 0, $118 = 0.0, $arrayidx455 = 0, $x456 = 0, $119 = 0.0, $sub459 = 0.0, $add460 = 0.0, $arrayidx461 = 0, $x462 = 0, $y464 = 0, $120 = 0, $121 = 0.0, $y466 = 0, $122 = 0, $123 = 0.0, $sub469 = 0.0, $add470 = 0.0, $y472 = 0, $124 = 0, $125 = 0.0, $126 = 0.0, $x478 = 0, $127 = 0.0, $sub479 = 0.0, $add480 = 0.0, $arrayidx481 = 0, $x482 = 0, $128 = 0.0, $129 = 0.0, $y488 = 0, $130 = 0, $131 = 0.0, $sub489 = 0.0, $add490 = 0.0, $y492 = 0, $132 = 0, $133 = 0.0, $134 = 0.0, $135 = 0.0, $sub499 = 0.0, $add500 = 0.0, $arrayidx501 = 0, $x502 = 0, $136 = 0.0, $137 = 0.0, $138 = 0.0, $sub509 = 0.0, $add510 = 0.0, $y512 = 0, $139 = 0, $140 = 0.0, $141 = 0.0, $142 = 0.0, $sub519 = 0.0, $add520 = 0.0, $arrayidx521 = 0, $x522 = 0, $143 = 0.0, $144 = 0.0, $145 = 0.0, $sub529 = 0.0, $add530 = 0.0, $y532 = 0, $146 = 0, $arrayidx533 = 0, $x534 = 0, $147 = 0.0, $arrayidx535 = 0, $x536 = 0, $148 = 0.0, $sub539 = 0.0, $add540 = 0.0, $arrayidx541 = 0, $x542 = 0, $y544 = 0, $149 = 0, $150 = 0.0, $y546 = 0, $151 = 0, $152 = 0.0, $sub549 = 0.0, $add550 = 0.0, $y552 = 0, $153 = 0, $154 = 0.0, $155 = 0.0, $arrayidx557 = 0, $x558 = 0, $156 = 0.0, $sub559 = 0.0, $add560 = 0.0, $arrayidx561 = 0, $x562 = 0, $157 = 0.0, $158 = 0.0, $y568 = 0, $159 = 0, $160 = 0.0, $sub569 = 0.0, $add570 = 0.0, $y572 = 0, $161 = 0, $162 = 0.0, $163 = 0.0, $164 = 0.0, $sub579 = 0.0, $add580 = 0.0, $arrayidx581 = 0, $x582 = 0, $165 = 0.0, $166 = 0.0, $167 = 0.0, $sub589 = 0.0, $add590 = 0.0, $y592 = 0, $168 = 0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $sub599 = 0.0, $add600 = 0.0, $arrayidx601 = 0, $x602 = 0, $172 = 0.0, $173 = 0.0, $174 = 0.0, $sub609 = 0.0, $add610 = 0.0, $y612 = 0, $175 = 0, $arrayidx613 = 0, $arrayidx614 = 0, $176 = 0, $arrayidx615 = 0, $arrayidx616 = 0, $177 = 0, $conv618 = 0, $arrayidx619 = 0, $178 = 0, $179 = 0.0, $180 = 0.0, $sub627 = 0.0, $sub628 = 0.0, $x630 = 0, $181 = 0.0, $182 = 0.0, $sub637 = 0.0, $sub638 = 0.0, $y640 = 0, $183 = 0.0, $184 = 0.0, $185 = 0.0, $sub647 = 0.0, $add648 = 0.0, $x650 = 0, $186 = 0.0, $187 = 0.0, $188 = 0.0, $sub657 = 0.0, $add658 = 0.0, $y660 = 0, $arrayidx661 = 0, $189 = 0, $190 = 0.0, $191 = 0.0, $sub672 = 0.0, $sub673 = 0.0, $192 = 0.0, $193 = 0.0, $sub682 = 0.0, $sub683 = 0.0, $194 = 0.0, $195 = 0.0, $196 = 0.0, $sub692 = 0.0, $add693 = 0.0, $197 = 0.0, $198 = 0.0, $199 = 0.0, $sub702 = 0.0, $add703 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 160 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $C = __stackBase__ | 0;
    $p0 = __stackBase__ + 64 | 0;
    $p1 = __stackBase__ + 80 | 0;
    $tmp = __stackBase__ + 96 | 0;
    $tmp72 = __stackBase__ + 112 | 0;
    $tmp76 = __stackBase__ + 128 | 0;
    $tmp83 = __stackBase__ + 144 | 0;
    $and = $style & 4;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $mode_0 = 4;
      label = 4;
      break;
    }
   case 3:
    $and1 = $style & 992;
    $tobool2 = ($and1 | 0) == 0;
    $_and1 = $tobool2 ? 2 : $and1;
    $mode_0 = $_and1;
    label = 4;
    break;
   case 4:
    $mul = $sides << 6;
    $mul7 = $mul + 64 | 0;
    $call = _zmalloc($mul7) | 0;
    $0 = $call;
    $cmp400 = ($sides | 0) > 0;
    if ($cmp400) {
      label = 5;
      break;
    } else {
      $i_0_lcssa = 0;
      label = 25;
      break;
    }
   case 5:
    $1 = $p0;
    $sub = $sides - 1 | 0;
    $2 = $p1;
    $x = $p1 | 0;
    $x15 = $p0 | 0;
    $y = $p1 + 8 | 0;
    $y17 = $p0 + 8 | 0;
    $3 = $p1;
    $4 = $AF;
    $rbconst_0401 = 12.0;
    $seg_0402 = 0;
    label = 8;
    break;
   case 6:
    $cmp26397 = ($sides | 0) > 0;
    if ($cmp26397) {
      label = 7;
      break;
    } else {
      $i_0_lcssa = 0;
      label = 25;
      break;
    }
   case 7:
    $5 = $p0;
    $sub29 = $sides - 1 | 0;
    $6 = $p1;
    $x37 = $p1 | 0;
    $x38 = $p0 | 0;
    $y40 = $p1 + 8 | 0;
    $y41 = $p0 + 8 | 0;
    $and48 = $style & 768;
    $tobool49 = ($and48 | 0) == 0;
    $and53 = $style & 32;
    $tobool54 = ($and53 | 0) == 0;
    $cmp59 = ($mode_0 | 0) == 2;
    $7 = $tmp;
    $8 = $tmp72;
    $9 = $tmp76;
    $10 = $tmp83;
    $11 = $p1;
    $12 = $AF;
    $i_0398 = 0;
    $seg_1399 = 0;
    label = 12;
    break;
   case 8:
    $arrayidx = $AF + ($seg_0402 << 4) | 0;
    $13 = $arrayidx;
    HEAP32[$1 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $cmp8 = ($seg_0402 | 0) < ($sub | 0);
    if ($cmp8) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $add10 = $seg_0402 + 1 | 0;
    $arrayidx11 = $AF + ($add10 << 4) | 0;
    $14 = $arrayidx11;
    HEAP32[$2 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    label = 11;
    break;
   case 10:
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    label = 11;
    break;
   case 11:
    $15 = +HEAPF64[$x >> 3];
    $16 = +HEAPF64[$x15 >> 3];
    $sub16 = $15 - $16;
    $17 = +HEAPF64[$y >> 3];
    $18 = +HEAPF64[$y17 >> 3];
    $sub18 = $17 - $18;
    $mul19 = $sub16 * $sub16;
    $mul20 = $sub18 * $sub18;
    $add21 = $mul19 + $mul20;
    $call22 = +Math_sqrt(+$add21);
    $div = $call22 / 3.0;
    $cmp23 = $rbconst_0401 < $div;
    $rbconst_0_div = $cmp23 ? $rbconst_0401 : $div;
    $inc = $seg_0402 + 1 | 0;
    $cmp = ($inc | 0) < ($sides | 0);
    if ($cmp) {
      $rbconst_0401 = $rbconst_0_div;
      $seg_0402 = $inc;
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 12:
    $arrayidx28 = $AF + ($seg_1399 << 4) | 0;
    $19 = $arrayidx28;
    HEAP32[$5 >> 2] = HEAP32[$19 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$19 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$19 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$19 + 12 >> 2] | 0;
    $cmp30 = ($seg_1399 | 0) < ($sub29 | 0);
    if ($cmp30) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add32 = $seg_1399 + 1 | 0;
    $arrayidx33 = $AF + ($add32 << 4) | 0;
    $20 = $arrayidx33;
    HEAP32[$6 >> 2] = HEAP32[$20 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$20 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$20 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$20 + 12 >> 2] | 0;
    label = 15;
    break;
   case 14:
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    label = 15;
    break;
   case 15:
    $21 = +HEAPF64[$x37 >> 3];
    $22 = +HEAPF64[$x38 >> 3];
    $sub39 = $21 - $22;
    $23 = +HEAPF64[$y40 >> 3];
    $24 = +HEAPF64[$y41 >> 3];
    $sub42 = $23 - $24;
    $mul43 = $sub39 * $sub39;
    $mul44 = $sub42 * $sub42;
    $add45 = $mul43 + $mul44;
    $call46 = +Math_sqrt(+$add45);
    $div47 = $rbconst_0_div / $call46;
    if ($tobool49) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $div51 = $div47 / 3.0;
    $t_0 = $div51;
    label = 19;
    break;
   case 17:
    if ($tobool54) {
      $t_0 = $div47;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $div56 = $div47 * .5;
    $t_0 = $div56;
    label = 19;
    break;
   case 19:
    $inc66 = $i_0398 + 1 | 0;
    $arrayidx67 = $0 + ($i_0398 << 4) | 0;
    if ($cmp59) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $25 = $arrayidx67;
    HEAP32[$25 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$25 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$25 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$25 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    label = 22;
    break;
   case 21:
    $mul68 = $t_0 * .5;
    _interpolate_pointf($tmp, $mul68, $p0, $p1);
    $26 = $arrayidx67;
    HEAP32[$26 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$26 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$26 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$26 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    label = 22;
    break;
   case 22:
    $inc70 = $i_0398 + 2 | 0;
    $arrayidx71 = $0 + ($inc66 << 4) | 0;
    _interpolate_pointf($tmp72, $t_0, $p0, $p1);
    $27 = $arrayidx71;
    HEAP32[$27 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$27 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$27 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$27 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $inc73 = $i_0398 + 3 | 0;
    $arrayidx74 = $0 + ($inc70 << 4) | 0;
    $sub75 = 1.0 - $t_0;
    _interpolate_pointf($tmp76, $sub75, $p0, $p1);
    $28 = $arrayidx74;
    HEAP32[$28 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$28 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$28 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$28 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    if ($cmp59) {
      label = 23;
      break;
    } else {
      $i_3 = $inc73;
      label = 24;
      break;
    }
   case 23:
    $inc79 = $i_0398 + 4 | 0;
    $arrayidx80 = $0 + ($inc73 << 4) | 0;
    $mul81 = $t_0 * .5;
    $sub82 = 1.0 - $mul81;
    _interpolate_pointf($tmp83, $sub82, $p0, $p1);
    $29 = $arrayidx80;
    HEAP32[$29 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$29 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$29 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$29 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $i_3 = $inc79;
    label = 24;
    break;
   case 24:
    $inc86 = $seg_1399 + 1 | 0;
    $cmp26 = ($inc86 | 0) < ($sides | 0);
    if ($cmp26) {
      $i_0398 = $i_3;
      $seg_1399 = $inc86;
      label = 12;
      break;
    } else {
      $i_0_lcssa = $i_3;
      label = 25;
      break;
    }
   case 25:
    $inc88 = $i_0_lcssa + 1 | 0;
    $arrayidx89 = $0 + ($i_0_lcssa << 4) | 0;
    $30 = $arrayidx89;
    HEAP32[$30 >> 2] = HEAP32[$call >> 2] | 0;
    HEAP32[$30 + 4 >> 2] = HEAP32[$call + 4 >> 2] | 0;
    HEAP32[$30 + 8 >> 2] = HEAP32[$call + 8 >> 2] | 0;
    HEAP32[$30 + 12 >> 2] = HEAP32[$call + 12 >> 2] | 0;
    $inc91 = $i_0_lcssa + 2 | 0;
    $arrayidx92 = $0 + ($inc88 << 4) | 0;
    $arrayidx93 = $call + 16 | 0;
    $31 = $arrayidx92;
    HEAP32[$31 >> 2] = HEAP32[$arrayidx93 >> 2] | 0;
    HEAP32[$31 + 4 >> 2] = HEAP32[$arrayidx93 + 4 >> 2] | 0;
    HEAP32[$31 + 8 >> 2] = HEAP32[$arrayidx93 + 8 >> 2] | 0;
    HEAP32[$31 + 12 >> 2] = HEAP32[$arrayidx93 + 12 >> 2] | 0;
    $arrayidx95 = $0 + ($inc91 << 4) | 0;
    $arrayidx96 = $call + 32 | 0;
    $32 = $arrayidx95;
    HEAP32[$32 >> 2] = HEAP32[$arrayidx96 >> 2] | 0;
    HEAP32[$32 + 4 >> 2] = HEAP32[$arrayidx96 + 4 >> 2] | 0;
    HEAP32[$32 + 8 >> 2] = HEAP32[$arrayidx96 + 8 >> 2] | 0;
    HEAP32[$32 + 12 >> 2] = HEAP32[$arrayidx96 + 12 >> 2] | 0;
    if (($mode_0 | 0) == 2) {
      label = 26;
      break;
    } else if (($mode_0 | 0) == 4) {
      label = 34;
      break;
    } else if (($mode_0 | 0) == 32) {
      label = 39;
      break;
    } else if (($mode_0 | 0) == 64) {
      label = 44;
      break;
    } else if (($mode_0 | 0) == 128) {
      label = 49;
      break;
    } else if (($mode_0 | 0) == 256) {
      label = 54;
      break;
    } else if (($mode_0 | 0) == 512) {
      label = 59;
      break;
    } else {
      label = 64;
      break;
    }
   case 26:
    $tobool97 = ($filled | 0) == 0;
    if ($tobool97) {
      label = 32;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $mul101 = $sides << 1;
    $mul102 = $sides << 5;
    $call103 = _gmalloc($mul102) | 0;
    $33 = $call103;
    _gvrender_set_pencolor($job, $fillc);
    _gvrender_set_fillcolor($job, $fillc);
    $cmp105385 = ($sides | 0) > 0;
    if ($cmp105385) {
      $seg_2386 = 0;
      $j_0387 = 0;
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $inc107379 = $j_0387 | 1;
    $arrayidx108 = $33 + ($j_0387 << 4) | 0;
    $mul109 = $seg_2386 << 2;
    $add110377 = $mul109 | 1;
    $arrayidx111 = $0 + ($add110377 << 4) | 0;
    $34 = $arrayidx108;
    $35 = $arrayidx111;
    HEAP32[$34 >> 2] = HEAP32[$35 >> 2] | 0;
    HEAP32[$34 + 4 >> 2] = HEAP32[$35 + 4 >> 2] | 0;
    HEAP32[$34 + 8 >> 2] = HEAP32[$35 + 8 >> 2] | 0;
    HEAP32[$34 + 12 >> 2] = HEAP32[$35 + 12 >> 2] | 0;
    $inc112 = $j_0387 + 2 | 0;
    $arrayidx113 = $33 + ($inc107379 << 4) | 0;
    $add115378 = $mul109 | 2;
    $arrayidx116 = $0 + ($add115378 << 4) | 0;
    $36 = $arrayidx113;
    $37 = $arrayidx116;
    HEAP32[$36 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$36 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$36 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$36 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    $inc118 = $seg_2386 + 1 | 0;
    $cmp105 = ($inc118 | 0) < ($sides | 0);
    if ($cmp105) {
      $seg_2386 = $inc118;
      $j_0387 = $inc112;
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    _gvrender_polygon($job, $33, $mul101, 1);
    _free($call103);
    $cmp122383 = ($sides | 0) > 0;
    if ($cmp122383) {
      $seg_3384 = 0;
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    _gvrender_set_pencolor($job, $penc);
    label = 64;
    break;
   case 31:
    $mul124 = $seg_3384 << 2;
    $add_ptr_sum376 = $mul124 | 2;
    $add_ptr125 = $0 + ($add_ptr_sum376 << 4) | 0;
    _gvrender_beziercurve($job, $add_ptr125, 4, 0, 0, 1);
    $inc127 = $seg_3384 + 1 | 0;
    $cmp122 = ($inc127 | 0) < ($sides | 0);
    if ($cmp122) {
      $seg_3384 = $inc127;
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    _gvrender_set_pencolor($job, $penc);
    $cmp131381 = ($sides | 0) > 0;
    if ($cmp131381) {
      $seg_4382 = 0;
      label = 33;
      break;
    } else {
      label = 64;
      break;
    }
   case 33:
    $mul133 = $seg_4382 << 2;
    $add_ptr134_sum374 = $mul133 | 1;
    $add_ptr135 = $0 + ($add_ptr134_sum374 << 4) | 0;
    _gvrender_polyline($job, $add_ptr135, 2);
    $add_ptr134_sum375 = $mul133 | 2;
    $add_ptr138 = $0 + ($add_ptr134_sum375 << 4) | 0;
    _gvrender_beziercurve($job, $add_ptr138, 4, 0, 0, 0);
    $inc140 = $seg_4382 + 1 | 0;
    $cmp131 = ($inc140 | 0) < ($sides | 0);
    if ($cmp131) {
      $seg_4382 = $inc140;
      label = 33;
      break;
    } else {
      label = 64;
      break;
    }
   case 34:
    _gvrender_set_pencolor($job, $penc);
    $tobool143 = ($filled | 0) == 0;
    if ($tobool143) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    _gvrender_set_fillcolor($job, $fillc);
    label = 36;
    break;
   case 36:
    $conv = $filled & 255;
    _gvrender_polygon($job, $AF, $sides, $conv);
    $cmp147389 = ($sides | 0) > 0;
    if ($cmp147389) {
      label = 37;
      break;
    } else {
      label = 64;
      break;
    }
   case 37:
    $arrayidx150 = $C | 0;
    $38 = $C;
    $arrayidx154 = $C + 16 | 0;
    $39 = $arrayidx154;
    $seg_5390 = 0;
    label = 38;
    break;
   case 38:
    $mul151 = $seg_5390 * 3 & -1;
    $add152 = $mul151 + 2 | 0;
    $arrayidx153 = $0 + ($add152 << 4) | 0;
    $40 = $arrayidx153;
    HEAP32[$38 >> 2] = HEAP32[$40 >> 2] | 0;
    HEAP32[$38 + 4 >> 2] = HEAP32[$40 + 4 >> 2] | 0;
    HEAP32[$38 + 8 >> 2] = HEAP32[$40 + 8 >> 2] | 0;
    HEAP32[$38 + 12 >> 2] = HEAP32[$40 + 12 >> 2] | 0;
    $add156 = $mul151 + 4 | 0;
    $arrayidx157 = $0 + ($add156 << 4) | 0;
    $41 = $arrayidx157;
    HEAP32[$39 >> 2] = HEAP32[$41 >> 2] | 0;
    HEAP32[$39 + 4 >> 2] = HEAP32[$41 + 4 >> 2] | 0;
    HEAP32[$39 + 8 >> 2] = HEAP32[$41 + 8 >> 2] | 0;
    HEAP32[$39 + 12 >> 2] = HEAP32[$41 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx150, 2);
    $inc159 = $seg_5390 + 1 | 0;
    $cmp147 = ($inc159 | 0) < ($sides | 0);
    if ($cmp147) {
      $seg_5390 = $inc159;
      label = 38;
      break;
    } else {
      label = 64;
      break;
    }
   case 39:
    _gvrender_set_pencolor($job, $penc);
    $tobool162 = ($filled | 0) == 0;
    if ($tobool162) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    _gvrender_set_fillcolor($job, $fillc);
    label = 41;
    break;
   case 41:
    $add165 = $sides + 1 | 0;
    $mul166 = $add165 << 4;
    $call167 = _zmalloc($mul166) | 0;
    $42 = $call167;
    $cmp169391 = ($sides | 0) > 1;
    if ($cmp169391) {
      $seg_6392 = 1;
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    $arrayidx172 = $42 + ($seg_6392 << 4) | 0;
    $arrayidx173 = $AF + ($seg_6392 << 4) | 0;
    $43 = $arrayidx172;
    $44 = $arrayidx173;
    HEAP32[$43 >> 2] = HEAP32[$44 >> 2] | 0;
    HEAP32[$43 + 4 >> 2] = HEAP32[$44 + 4 >> 2] | 0;
    HEAP32[$43 + 8 >> 2] = HEAP32[$44 + 8 >> 2] | 0;
    HEAP32[$43 + 12 >> 2] = HEAP32[$44 + 12 >> 2] | 0;
    $inc175 = $seg_6392 + 1 | 0;
    $cmp169 = ($inc175 | 0) < ($sides | 0);
    if ($cmp169) {
      $seg_6392 = $inc175;
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $45 = $sides * 3 & -1;
    $add180 = $45 + 1 | 0;
    $arrayidx181 = $0 + ($add180 << 4) | 0;
    $46 = $arrayidx181;
    HEAP32[$call167 >> 2] = HEAP32[$46 >> 2] | 0;
    HEAP32[$call167 + 4 >> 2] = HEAP32[$46 + 4 >> 2] | 0;
    HEAP32[$call167 + 8 >> 2] = HEAP32[$46 + 8 >> 2] | 0;
    HEAP32[$call167 + 12 >> 2] = HEAP32[$46 + 12 >> 2] | 0;
    $arrayidx182 = $42 + ($sides << 4) | 0;
    $add185 = $45 - 1 | 0;
    $arrayidx186 = $0 + ($add185 << 4) | 0;
    $47 = $arrayidx182;
    $48 = $arrayidx186;
    HEAP32[$47 >> 2] = HEAP32[$48 >> 2] | 0;
    HEAP32[$47 + 4 >> 2] = HEAP32[$48 + 4 >> 2] | 0;
    HEAP32[$47 + 8 >> 2] = HEAP32[$48 + 8 >> 2] | 0;
    HEAP32[$47 + 12 >> 2] = HEAP32[$48 + 12 >> 2] | 0;
    $conv188 = $filled & 255;
    _gvrender_polygon($job, $42, $add165, $conv188);
    _free($call167);
    $arrayidx190 = $C | 0;
    $49 = $C;
    HEAP32[$49 >> 2] = HEAP32[$48 >> 2] | 0;
    HEAP32[$49 + 4 >> 2] = HEAP32[$48 + 4 >> 2] | 0;
    HEAP32[$49 + 8 >> 2] = HEAP32[$48 + 8 >> 2] | 0;
    HEAP32[$49 + 12 >> 2] = HEAP32[$48 + 12 >> 2] | 0;
    $arrayidx194 = $C + 16 | 0;
    $50 = $arrayidx194;
    HEAP32[$50 >> 2] = HEAP32[$46 >> 2] | 0;
    HEAP32[$50 + 4 >> 2] = HEAP32[$46 + 4 >> 2] | 0;
    HEAP32[$50 + 8 >> 2] = HEAP32[$46 + 8 >> 2] | 0;
    HEAP32[$50 + 12 >> 2] = HEAP32[$46 + 12 >> 2] | 0;
    $x199 = $arrayidx194 | 0;
    $51 = +HEAPF64[$x199 >> 3];
    $x201 = $C | 0;
    $52 = +HEAPF64[$x201 >> 3];
    $x205 = $0 + ($45 << 4) | 0;
    $53 = +HEAPF64[$x205 >> 3];
    $sub206 = $52 - $53;
    $add207 = $51 + $sub206;
    $arrayidx208 = $C + 32 | 0;
    $x209 = $arrayidx208 | 0;
    HEAPF64[$x209 >> 3] = $add207;
    $y211 = $C + 24 | 0;
    $54 = +HEAPF64[$y211 >> 3];
    $y213 = $C + 8 | 0;
    $55 = +HEAPF64[$y213 >> 3];
    $y217 = $0 + ($45 << 4) + 8 | 0;
    $56 = +HEAPF64[$y217 >> 3];
    $sub218 = $55 - $56;
    $add219 = $54 + $sub218;
    $y221 = $C + 40 | 0;
    HEAPF64[$y221 >> 3] = $add219;
    _gvrender_polyline($job, $arrayidx194, 2);
    $57 = $arrayidx208;
    HEAP32[$50 >> 2] = HEAP32[$57 >> 2] | 0;
    HEAP32[$50 + 4 >> 2] = HEAP32[$57 + 4 >> 2] | 0;
    HEAP32[$50 + 8 >> 2] = HEAP32[$57 + 8 >> 2] | 0;
    HEAP32[$50 + 12 >> 2] = HEAP32[$57 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx190, 2);
    label = 64;
    break;
   case 44:
    _gvrender_set_pencolor($job, $penc);
    $tobool228 = ($filled | 0) == 0;
    if ($tobool228) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    _gvrender_set_fillcolor($job, $fillc);
    label = 46;
    break;
   case 46:
    $add231 = $sides + 2 | 0;
    $mul232 = $add231 << 4;
    $call233 = _zmalloc($mul232) | 0;
    $58 = $call233;
    $59 = $AF;
    HEAP32[$call233 >> 2] = HEAP32[$59 >> 2] | 0;
    HEAP32[$call233 + 4 >> 2] = HEAP32[$59 + 4 >> 2] | 0;
    HEAP32[$call233 + 8 >> 2] = HEAP32[$59 + 8 >> 2] | 0;
    HEAP32[$call233 + 12 >> 2] = HEAP32[$59 + 12 >> 2] | 0;
    $arrayidx236 = $call233 + 16 | 0;
    HEAP32[$arrayidx236 >> 2] = HEAP32[$arrayidx96 >> 2] | 0;
    HEAP32[$arrayidx236 + 4 >> 2] = HEAP32[$arrayidx96 + 4 >> 2] | 0;
    HEAP32[$arrayidx236 + 8 >> 2] = HEAP32[$arrayidx96 + 8 >> 2] | 0;
    HEAP32[$arrayidx236 + 12 >> 2] = HEAP32[$arrayidx96 + 12 >> 2] | 0;
    $x239 = $arrayidx96;
    $60 = +HEAPF64[$x239 >> 3];
    $arrayidx240 = $call + 48 | 0;
    $x241 = $arrayidx240;
    $61 = +HEAPF64[$x241 >> 3];
    $arrayidx242 = $call + 64 | 0;
    $x243 = $arrayidx242;
    $62 = +HEAPF64[$x243 >> 3];
    $sub244 = $61 - $62;
    $div245 = $sub244 / 3.0;
    $add246 = $60 + $div245;
    $arrayidx247 = $call233 + 32 | 0;
    $x248 = $arrayidx247;
    HEAPF64[$x248 >> 3] = $add246;
    $y250 = $call + 40 | 0;
    $63 = $y250;
    $64 = +HEAPF64[$63 >> 3];
    $y252 = $call + 56 | 0;
    $65 = $y252;
    $66 = +HEAPF64[$65 >> 3];
    $y254 = $call + 72 | 0;
    $67 = $y254;
    $68 = +HEAPF64[$67 >> 3];
    $sub255 = $66 - $68;
    $div256 = $sub255 / 3.0;
    $add257 = $64 + $div256;
    $y259 = $call233 + 40 | 0;
    $69 = $y259;
    HEAPF64[$69 >> 3] = $add257;
    $70 = +HEAPF64[$x241 >> 3];
    $71 = +HEAPF64[$x243 >> 3];
    $sub266 = $70 - $71;
    $div267 = $sub266 / 3.0;
    $add268 = $70 + $div267;
    $arrayidx269 = $call233 + 48 | 0;
    $x270 = $arrayidx269;
    HEAPF64[$x270 >> 3] = $add268;
    $72 = +HEAPF64[$65 >> 3];
    $73 = +HEAPF64[$67 >> 3];
    $sub277 = $72 - $73;
    $div278 = $sub277 / 3.0;
    $add279 = $72 + $div278;
    $y281 = $call233 + 56 | 0;
    $74 = $y281;
    HEAPF64[$74 >> 3] = $add279;
    $cmp284393 = ($add231 | 0) > 4;
    if ($cmp284393) {
      $seg_7394 = 4;
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    $arrayidx287 = $58 + ($seg_7394 << 4) | 0;
    $sub288 = $seg_7394 - 2 | 0;
    $arrayidx289 = $AF + ($sub288 << 4) | 0;
    $75 = $arrayidx287;
    $76 = $arrayidx289;
    HEAP32[$75 >> 2] = HEAP32[$76 >> 2] | 0;
    HEAP32[$75 + 4 >> 2] = HEAP32[$76 + 4 >> 2] | 0;
    HEAP32[$75 + 8 >> 2] = HEAP32[$76 + 8 >> 2] | 0;
    HEAP32[$75 + 12 >> 2] = HEAP32[$76 + 12 >> 2] | 0;
    $inc291 = $seg_7394 + 1 | 0;
    $cmp284 = ($inc291 | 0) < ($add231 | 0);
    if ($cmp284) {
      $seg_7394 = $inc291;
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $conv294 = $filled & 255;
    _gvrender_polygon($job, $58, $add231, $conv294);
    _free($call233);
    $arrayidx295 = $C | 0;
    $77 = $C;
    HEAP32[$77 >> 2] = HEAP32[$arrayidx240 >> 2] | 0;
    HEAP32[$77 + 4 >> 2] = HEAP32[$arrayidx240 + 4 >> 2] | 0;
    HEAP32[$77 + 8 >> 2] = HEAP32[$arrayidx240 + 8 >> 2] | 0;
    HEAP32[$77 + 12 >> 2] = HEAP32[$arrayidx240 + 12 >> 2] | 0;
    $arrayidx297 = $C + 16 | 0;
    $78 = $arrayidx297;
    HEAP32[$78 >> 2] = HEAP32[$arrayidx96 >> 2] | 0;
    HEAP32[$78 + 4 >> 2] = HEAP32[$arrayidx96 + 4 >> 2] | 0;
    HEAP32[$78 + 8 >> 2] = HEAP32[$arrayidx96 + 8 >> 2] | 0;
    HEAP32[$78 + 12 >> 2] = HEAP32[$arrayidx96 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx295, 2);
    label = 64;
    break;
   case 49:
    _gvrender_set_pencolor($job, $penc);
    $tobool301 = ($filled | 0) == 0;
    if ($tobool301) {
      label = 51;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    _gvrender_set_fillcolor($job, $fillc);
    label = 51;
    break;
   case 51:
    $add304 = $sides + 3 | 0;
    $mul305 = $add304 << 4;
    $call306 = _zmalloc($mul305) | 0;
    $79 = $call306;
    $80 = $AF;
    HEAP32[$call306 >> 2] = HEAP32[$80 >> 2] | 0;
    HEAP32[$call306 + 4 >> 2] = HEAP32[$80 + 4 >> 2] | 0;
    HEAP32[$call306 + 8 >> 2] = HEAP32[$80 + 8 >> 2] | 0;
    HEAP32[$call306 + 12 >> 2] = HEAP32[$80 + 12 >> 2] | 0;
    $x310 = $AF | 0;
    $81 = +HEAPF64[$x310 >> 3];
    $x314 = $arrayidx93;
    $82 = +HEAPF64[$x314 >> 3];
    $sub315 = $81 - $82;
    $div316 = $sub315 * .25;
    $sub317 = $81 - $div316;
    $arrayidx318 = $call306 + 16 | 0;
    $x319 = $arrayidx318;
    HEAPF64[$x319 >> 3] = $sub317;
    $y321 = $AF + 8 | 0;
    $83 = +HEAPF64[$y321 >> 3];
    $arrayidx322 = $call + 48 | 0;
    $y323 = $call + 56 | 0;
    $84 = $y323;
    $85 = +HEAPF64[$84 >> 3];
    $y325 = $call + 72 | 0;
    $86 = $y325;
    $87 = +HEAPF64[$86 >> 3];
    $sub326 = $85 - $87;
    $div327 = $sub326 / 3.0;
    $add328 = $83 + $div327;
    $y330 = $call306 + 24 | 0;
    $88 = $y330;
    HEAPF64[$88 >> 3] = $add328;
    $89 = +HEAPF64[$x310 >> 3];
    $90 = +HEAPF64[$x314 >> 3];
    $sub337 = $89 - $90;
    $mul338 = $sub337 * 2.0;
    $sub339 = $89 - $mul338;
    $arrayidx340 = $call306 + 32 | 0;
    $x341 = $arrayidx340;
    HEAPF64[$x341 >> 3] = $sub339;
    $91 = +HEAPF64[$88 >> 3];
    $y345 = $call306 + 40 | 0;
    $92 = $y345;
    HEAPF64[$92 >> 3] = $91;
    $93 = +HEAPF64[$x310 >> 3];
    $94 = +HEAPF64[$x314 >> 3];
    $sub352 = $93 - $94;
    $mul353 = $sub352 * 2.25;
    $sub354 = $93 - $mul353;
    $arrayidx355 = $call306 + 48 | 0;
    $x356 = $arrayidx355;
    HEAPF64[$x356 >> 3] = $sub354;
    $95 = +HEAPF64[$84 >> 3];
    $y360 = $call306 + 56 | 0;
    $96 = $y360;
    HEAPF64[$96 >> 3] = $95;
    $x362 = $arrayidx322;
    $97 = +HEAPF64[$x362 >> 3];
    $arrayidx363 = $call306 + 64 | 0;
    $x364 = $arrayidx363;
    HEAPF64[$x364 >> 3] = $97;
    $98 = +HEAPF64[$84 >> 3];
    $y368 = $call306 + 72 | 0;
    $99 = $y368;
    HEAPF64[$99 >> 3] = $98;
    $cmp371395 = ($add304 | 0) > 4;
    if ($cmp371395) {
      $seg_8396 = 4;
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 52:
    $arrayidx374 = $79 + ($seg_8396 << 4) | 0;
    $sub375 = $seg_8396 - 3 | 0;
    $arrayidx376 = $AF + ($sub375 << 4) | 0;
    $100 = $arrayidx374;
    $101 = $arrayidx376;
    HEAP32[$100 >> 2] = HEAP32[$101 >> 2] | 0;
    HEAP32[$100 + 4 >> 2] = HEAP32[$101 + 4 >> 2] | 0;
    HEAP32[$100 + 8 >> 2] = HEAP32[$101 + 8 >> 2] | 0;
    HEAP32[$100 + 12 >> 2] = HEAP32[$101 + 12 >> 2] | 0;
    $inc378 = $seg_8396 + 1 | 0;
    $cmp371 = ($inc378 | 0) < ($add304 | 0);
    if ($cmp371) {
      $seg_8396 = $inc378;
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $conv381 = $filled & 255;
    _gvrender_polygon($job, $79, $add304, $conv381);
    _free($call306);
    label = 64;
    break;
   case 54:
    $cmp383 = ($sides | 0) == 4;
    if ($cmp383) {
      label = 56;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    ___assert_func(100480, 562, 163904, 139704);
   case 56:
    _gvrender_set_pencolor($job, $penc);
    $tobool388 = ($filled | 0) == 0;
    if ($tobool388) {
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    _gvrender_set_fillcolor($job, $fillc);
    label = 58;
    break;
   case 58:
    $add391 = $sides + 2 | 0;
    $mul392 = $add391 << 4;
    $call393 = _zmalloc($mul392) | 0;
    $102 = $call393;
    $103 = $AF;
    HEAP32[$call393 >> 2] = HEAP32[$103 >> 2] | 0;
    HEAP32[$call393 + 4 >> 2] = HEAP32[$103 + 4 >> 2] | 0;
    HEAP32[$call393 + 8 >> 2] = HEAP32[$103 + 8 >> 2] | 0;
    HEAP32[$call393 + 12 >> 2] = HEAP32[$103 + 12 >> 2] | 0;
    $arrayidx396 = $call393 + 16 | 0;
    HEAP32[$arrayidx396 >> 2] = HEAP32[$arrayidx96 >> 2] | 0;
    HEAP32[$arrayidx396 + 4 >> 2] = HEAP32[$arrayidx96 + 4 >> 2] | 0;
    HEAP32[$arrayidx396 + 8 >> 2] = HEAP32[$arrayidx96 + 8 >> 2] | 0;
    HEAP32[$arrayidx396 + 12 >> 2] = HEAP32[$arrayidx96 + 12 >> 2] | 0;
    $arrayidx398 = $call393 + 32 | 0;
    $arrayidx399 = $call + 64 | 0;
    HEAP32[$arrayidx398 >> 2] = HEAP32[$arrayidx399 >> 2] | 0;
    HEAP32[$arrayidx398 + 4 >> 2] = HEAP32[$arrayidx399 + 4 >> 2] | 0;
    HEAP32[$arrayidx398 + 8 >> 2] = HEAP32[$arrayidx399 + 8 >> 2] | 0;
    HEAP32[$arrayidx398 + 12 >> 2] = HEAP32[$arrayidx399 + 12 >> 2] | 0;
    $arrayidx400 = $call393 + 48 | 0;
    $arrayidx401 = $AF + 32 | 0;
    $104 = $arrayidx401;
    HEAP32[$arrayidx400 >> 2] = HEAP32[$104 >> 2] | 0;
    HEAP32[$arrayidx400 + 4 >> 2] = HEAP32[$104 + 4 >> 2] | 0;
    HEAP32[$arrayidx400 + 8 >> 2] = HEAP32[$104 + 8 >> 2] | 0;
    HEAP32[$arrayidx400 + 12 >> 2] = HEAP32[$104 + 12 >> 2] | 0;
    $arrayidx402 = $call393 + 64 | 0;
    $arrayidx403 = $call + 128 | 0;
    HEAP32[$arrayidx402 >> 2] = HEAP32[$arrayidx403 >> 2] | 0;
    HEAP32[$arrayidx402 + 4 >> 2] = HEAP32[$arrayidx403 + 4 >> 2] | 0;
    HEAP32[$arrayidx402 + 8 >> 2] = HEAP32[$arrayidx403 + 8 >> 2] | 0;
    HEAP32[$arrayidx402 + 12 >> 2] = HEAP32[$arrayidx403 + 12 >> 2] | 0;
    $arrayidx404 = $call393 + 80 | 0;
    $arrayidx405 = $call + 160 | 0;
    HEAP32[$arrayidx404 >> 2] = HEAP32[$arrayidx405 >> 2] | 0;
    HEAP32[$arrayidx404 + 4 >> 2] = HEAP32[$arrayidx405 + 4 >> 2] | 0;
    HEAP32[$arrayidx404 + 8 >> 2] = HEAP32[$arrayidx405 + 8 >> 2] | 0;
    HEAP32[$arrayidx404 + 12 >> 2] = HEAP32[$arrayidx405 + 12 >> 2] | 0;
    $conv407 = $filled & 255;
    _gvrender_polygon($job, $102, $add391, $conv407);
    _free($call393);
    $x409 = $arrayidx93;
    $105 = +HEAPF64[$x409 >> 3];
    $arrayidx410 = $call + 176 | 0;
    $x411 = $arrayidx410;
    $106 = +HEAPF64[$x411 >> 3];
    $x413 = $call;
    $107 = +HEAPF64[$x413 >> 3];
    $sub414 = $106 - $107;
    $add415 = $105 + $sub414;
    $arrayidx416 = $C | 0;
    $x417 = $C | 0;
    HEAPF64[$x417 >> 3] = $add415;
    $y419 = $call + 24 | 0;
    $108 = $y419;
    $109 = +HEAPF64[$108 >> 3];
    $y421 = $call + 184 | 0;
    $110 = $y421;
    $111 = +HEAPF64[$110 >> 3];
    $y423 = $call + 8 | 0;
    $112 = $y423;
    $113 = +HEAPF64[$112 >> 3];
    $sub424 = $111 - $113;
    $add425 = $109 + $sub424;
    $y427 = $C + 8 | 0;
    HEAPF64[$y427 >> 3] = $add425;
    $arrayidx428 = $C + 16 | 0;
    $114 = $arrayidx428;
    HEAP32[$114 >> 2] = HEAP32[$arrayidx399 >> 2] | 0;
    HEAP32[$114 + 4 >> 2] = HEAP32[$arrayidx399 + 4 >> 2] | 0;
    HEAP32[$114 + 8 >> 2] = HEAP32[$arrayidx399 + 8 >> 2] | 0;
    HEAP32[$114 + 12 >> 2] = HEAP32[$arrayidx399 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx416, 2);
    HEAP32[$114 >> 2] = HEAP32[$arrayidx403 >> 2] | 0;
    HEAP32[$114 + 4 >> 2] = HEAP32[$arrayidx403 + 4 >> 2] | 0;
    HEAP32[$114 + 8 >> 2] = HEAP32[$arrayidx403 + 8 >> 2] | 0;
    HEAP32[$114 + 12 >> 2] = HEAP32[$arrayidx403 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx416, 2);
    HEAP32[$114 >> 2] = HEAP32[$call >> 2] | 0;
    HEAP32[$114 + 4 >> 2] = HEAP32[$call + 4 >> 2] | 0;
    HEAP32[$114 + 8 >> 2] = HEAP32[$call + 8 >> 2] | 0;
    HEAP32[$114 + 12 >> 2] = HEAP32[$call + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx416, 2);
    label = 64;
    break;
   case 59:
    $cmp438 = ($sides | 0) == 4;
    if ($cmp438) {
      label = 61;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    ___assert_func(100480, 588, 163904, 139704);
   case 61:
    _gvrender_set_pencolor($job, $penc);
    $tobool443 = ($filled | 0) == 0;
    if ($tobool443) {
      label = 63;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    _gvrender_set_fillcolor($job, $fillc);
    label = 63;
    break;
   case 63:
    $add446 = $sides + 8 | 0;
    $mul447 = $add446 << 4;
    $call448 = _zmalloc($mul447) | 0;
    $115 = $call448;
    $116 = $AF;
    HEAP32[$call448 >> 2] = HEAP32[$116 >> 2] | 0;
    HEAP32[$call448 + 4 >> 2] = HEAP32[$116 + 4 >> 2] | 0;
    HEAP32[$call448 + 8 >> 2] = HEAP32[$116 + 8 >> 2] | 0;
    HEAP32[$call448 + 12 >> 2] = HEAP32[$116 + 12 >> 2] | 0;
    $arrayidx451 = $call448 + 16 | 0;
    $arrayidx452 = $AF + 16 | 0;
    $117 = $arrayidx452;
    HEAP32[$arrayidx451 >> 2] = HEAP32[$117 >> 2] | 0;
    HEAP32[$arrayidx451 + 4 >> 2] = HEAP32[$117 + 4 >> 2] | 0;
    HEAP32[$arrayidx451 + 8 >> 2] = HEAP32[$117 + 8 >> 2] | 0;
    HEAP32[$arrayidx451 + 12 >> 2] = HEAP32[$117 + 12 >> 2] | 0;
    $arrayidx453 = $call + 48 | 0;
    $x454 = $arrayidx453;
    $118 = +HEAPF64[$x454 >> 3];
    $arrayidx455 = $call + 64 | 0;
    $x456 = $arrayidx455;
    $119 = +HEAPF64[$x456 >> 3];
    $sub459 = $119 - $118;
    $add460 = $118 + $sub459;
    $arrayidx461 = $call448 + 32 | 0;
    $x462 = $arrayidx461;
    HEAPF64[$x462 >> 3] = $add460;
    $y464 = $call + 56 | 0;
    $120 = $y464;
    $121 = +HEAPF64[$120 >> 3];
    $y466 = $call + 72 | 0;
    $122 = $y466;
    $123 = +HEAPF64[$122 >> 3];
    $sub469 = $123 - $121;
    $add470 = $121 + $sub469;
    $y472 = $call448 + 40 | 0;
    $124 = $y472;
    HEAPF64[$124 >> 3] = $add470;
    $125 = +HEAPF64[$x462 >> 3];
    $126 = +HEAPF64[$x454 >> 3];
    $x478 = $arrayidx96;
    $127 = +HEAPF64[$x478 >> 3];
    $sub479 = $126 - $127;
    $add480 = $125 + $sub479;
    $arrayidx481 = $call448 + 48 | 0;
    $x482 = $arrayidx481;
    HEAPF64[$x482 >> 3] = $add480;
    $128 = +HEAPF64[$124 >> 3];
    $129 = +HEAPF64[$120 >> 3];
    $y488 = $call + 40 | 0;
    $130 = $y488;
    $131 = +HEAPF64[$130 >> 3];
    $sub489 = $129 - $131;
    $add490 = $128 + $sub489;
    $y492 = $call448 + 56 | 0;
    $132 = $y492;
    HEAPF64[$132 >> 3] = $add490;
    $133 = +HEAPF64[$x482 >> 3];
    $134 = +HEAPF64[$x456 >> 3];
    $135 = +HEAPF64[$x454 >> 3];
    $sub499 = $134 - $135;
    $add500 = $133 + $sub499;
    $arrayidx501 = $call448 + 64 | 0;
    $x502 = $arrayidx501;
    HEAPF64[$x502 >> 3] = $add500;
    $136 = +HEAPF64[$132 >> 3];
    $137 = +HEAPF64[$122 >> 3];
    $138 = +HEAPF64[$120 >> 3];
    $sub509 = $137 - $138;
    $add510 = $136 + $sub509;
    $y512 = $call448 + 72 | 0;
    $139 = $y512;
    HEAPF64[$139 >> 3] = $add510;
    $140 = +HEAPF64[$x502 >> 3];
    $141 = +HEAPF64[$x462 >> 3];
    $142 = +HEAPF64[$x482 >> 3];
    $sub519 = $141 - $142;
    $add520 = $140 + $sub519;
    $arrayidx521 = $call448 + 80 | 0;
    $x522 = $arrayidx521;
    HEAPF64[$x522 >> 3] = $add520;
    $143 = +HEAPF64[$139 >> 3];
    $144 = +HEAPF64[$124 >> 3];
    $145 = +HEAPF64[$132 >> 3];
    $sub529 = $144 - $145;
    $add530 = $143 + $sub529;
    $y532 = $call448 + 88 | 0;
    $146 = $y532;
    HEAPF64[$146 >> 3] = $add530;
    $arrayidx533 = $call + 96 | 0;
    $x534 = $arrayidx533;
    $147 = +HEAPF64[$x534 >> 3];
    $arrayidx535 = $call + 80 | 0;
    $x536 = $arrayidx535;
    $148 = +HEAPF64[$x536 >> 3];
    $sub539 = $148 - $147;
    $add540 = $147 + $sub539;
    $arrayidx541 = $call448 + 144 | 0;
    $x542 = $arrayidx541;
    HEAPF64[$x542 >> 3] = $add540;
    $y544 = $call + 104 | 0;
    $149 = $y544;
    $150 = +HEAPF64[$149 >> 3];
    $y546 = $call + 88 | 0;
    $151 = $y546;
    $152 = +HEAPF64[$151 >> 3];
    $sub549 = $152 - $150;
    $add550 = $150 + $sub549;
    $y552 = $call448 + 152 | 0;
    $153 = $y552;
    HEAPF64[$153 >> 3] = $add550;
    $154 = +HEAPF64[$x542 >> 3];
    $155 = +HEAPF64[$x534 >> 3];
    $arrayidx557 = $call + 112 | 0;
    $x558 = $arrayidx557;
    $156 = +HEAPF64[$x558 >> 3];
    $sub559 = $155 - $156;
    $add560 = $154 + $sub559;
    $arrayidx561 = $call448 + 128 | 0;
    $x562 = $arrayidx561;
    HEAPF64[$x562 >> 3] = $add560;
    $157 = +HEAPF64[$153 >> 3];
    $158 = +HEAPF64[$149 >> 3];
    $y568 = $call + 120 | 0;
    $159 = $y568;
    $160 = +HEAPF64[$159 >> 3];
    $sub569 = $158 - $160;
    $add570 = $157 + $sub569;
    $y572 = $call448 + 136 | 0;
    $161 = $y572;
    HEAPF64[$161 >> 3] = $add570;
    $162 = +HEAPF64[$x562 >> 3];
    $163 = +HEAPF64[$x536 >> 3];
    $164 = +HEAPF64[$x534 >> 3];
    $sub579 = $163 - $164;
    $add580 = $162 + $sub579;
    $arrayidx581 = $call448 + 112 | 0;
    $x582 = $arrayidx581;
    HEAPF64[$x582 >> 3] = $add580;
    $165 = +HEAPF64[$161 >> 3];
    $166 = +HEAPF64[$151 >> 3];
    $167 = +HEAPF64[$149 >> 3];
    $sub589 = $166 - $167;
    $add590 = $165 + $sub589;
    $y592 = $call448 + 120 | 0;
    $168 = $y592;
    HEAPF64[$168 >> 3] = $add590;
    $169 = +HEAPF64[$x582 >> 3];
    $170 = +HEAPF64[$x542 >> 3];
    $171 = +HEAPF64[$x562 >> 3];
    $sub599 = $170 - $171;
    $add600 = $169 + $sub599;
    $arrayidx601 = $call448 + 96 | 0;
    $x602 = $arrayidx601;
    HEAPF64[$x602 >> 3] = $add600;
    $172 = +HEAPF64[$168 >> 3];
    $173 = +HEAPF64[$153 >> 3];
    $174 = +HEAPF64[$161 >> 3];
    $sub609 = $173 - $174;
    $add610 = $172 + $sub609;
    $y612 = $call448 + 104 | 0;
    $175 = $y612;
    HEAPF64[$175 >> 3] = $add610;
    $arrayidx613 = $call448 + 160 | 0;
    $arrayidx614 = $AF + 32 | 0;
    $176 = $arrayidx614;
    HEAP32[$arrayidx613 >> 2] = HEAP32[$176 >> 2] | 0;
    HEAP32[$arrayidx613 + 4 >> 2] = HEAP32[$176 + 4 >> 2] | 0;
    HEAP32[$arrayidx613 + 8 >> 2] = HEAP32[$176 + 8 >> 2] | 0;
    HEAP32[$arrayidx613 + 12 >> 2] = HEAP32[$176 + 12 >> 2] | 0;
    $arrayidx615 = $call448 + 176 | 0;
    $arrayidx616 = $AF + 48 | 0;
    $177 = $arrayidx616;
    HEAP32[$arrayidx615 >> 2] = HEAP32[$177 >> 2] | 0;
    HEAP32[$arrayidx615 + 4 >> 2] = HEAP32[$177 + 4 >> 2] | 0;
    HEAP32[$arrayidx615 + 8 >> 2] = HEAP32[$177 + 8 >> 2] | 0;
    HEAP32[$arrayidx615 + 12 >> 2] = HEAP32[$177 + 12 >> 2] | 0;
    $conv618 = $filled & 255;
    _gvrender_polygon($job, $115, $add446, $conv618);
    $arrayidx619 = $C | 0;
    $178 = $C;
    HEAP32[$178 >> 2] = HEAP32[$arrayidx461 >> 2] | 0;
    HEAP32[$178 + 4 >> 2] = HEAP32[$arrayidx461 + 4 >> 2] | 0;
    HEAP32[$178 + 8 >> 2] = HEAP32[$arrayidx461 + 8 >> 2] | 0;
    HEAP32[$178 + 12 >> 2] = HEAP32[$arrayidx461 + 12 >> 2] | 0;
    $179 = +HEAPF64[$x462 >> 3];
    $180 = +HEAPF64[$x482 >> 3];
    $sub627 = $180 - $179;
    $sub628 = $179 - $sub627;
    $x630 = $C + 16 | 0;
    HEAPF64[$x630 >> 3] = $sub628;
    $181 = +HEAPF64[$124 >> 3];
    $182 = +HEAPF64[$132 >> 3];
    $sub637 = $182 - $181;
    $sub638 = $181 - $sub637;
    $y640 = $C + 24 | 0;
    HEAPF64[$y640 >> 3] = $sub638;
    $183 = +HEAPF64[$x630 >> 3];
    $184 = +HEAPF64[$x502 >> 3];
    $185 = +HEAPF64[$x482 >> 3];
    $sub647 = $184 - $185;
    $add648 = $183 + $sub647;
    $x650 = $C + 32 | 0;
    HEAPF64[$x650 >> 3] = $add648;
    $186 = +HEAPF64[$y640 >> 3];
    $187 = +HEAPF64[$139 >> 3];
    $188 = +HEAPF64[$132 >> 3];
    $sub657 = $187 - $188;
    $add658 = $186 + $sub657;
    $y660 = $C + 40 | 0;
    HEAPF64[$y660 >> 3] = $add658;
    $arrayidx661 = $C + 48 | 0;
    $189 = $arrayidx661;
    HEAP32[$189 >> 2] = HEAP32[$arrayidx521 >> 2] | 0;
    HEAP32[$189 + 4 >> 2] = HEAP32[$arrayidx521 + 4 >> 2] | 0;
    HEAP32[$189 + 8 >> 2] = HEAP32[$arrayidx521 + 8 >> 2] | 0;
    HEAP32[$189 + 12 >> 2] = HEAP32[$arrayidx521 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx619, 4);
    HEAP32[$178 >> 2] = HEAP32[$arrayidx601 >> 2] | 0;
    HEAP32[$178 + 4 >> 2] = HEAP32[$arrayidx601 + 4 >> 2] | 0;
    HEAP32[$178 + 8 >> 2] = HEAP32[$arrayidx601 + 8 >> 2] | 0;
    HEAP32[$178 + 12 >> 2] = HEAP32[$arrayidx601 + 12 >> 2] | 0;
    $190 = +HEAPF64[$x602 >> 3];
    $191 = +HEAPF64[$x582 >> 3];
    $sub672 = $191 - $190;
    $sub673 = $190 - $sub672;
    HEAPF64[$x630 >> 3] = $sub673;
    $192 = +HEAPF64[$175 >> 3];
    $193 = +HEAPF64[$168 >> 3];
    $sub682 = $193 - $192;
    $sub683 = $192 - $sub682;
    HEAPF64[$y640 >> 3] = $sub683;
    $194 = +HEAPF64[$x630 >> 3];
    $195 = +HEAPF64[$x562 >> 3];
    $196 = +HEAPF64[$x582 >> 3];
    $sub692 = $195 - $196;
    $add693 = $194 + $sub692;
    HEAPF64[$x650 >> 3] = $add693;
    $197 = +HEAPF64[$y640 >> 3];
    $198 = +HEAPF64[$161 >> 3];
    $199 = +HEAPF64[$168 >> 3];
    $sub702 = $198 - $199;
    $add703 = $197 + $sub702;
    HEAPF64[$y660 >> 3] = $add703;
    HEAP32[$189 >> 2] = HEAP32[$arrayidx541 >> 2] | 0;
    HEAP32[$189 + 4 >> 2] = HEAP32[$arrayidx541 + 4 >> 2] | 0;
    HEAP32[$189 + 8 >> 2] = HEAP32[$arrayidx541 + 8 >> 2] | 0;
    HEAP32[$189 + 12 >> 2] = HEAP32[$arrayidx541 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx619, 4);
    _free($call448);
    label = 64;
    break;
   case 64:
    _free($call);
    STACKTOP = __stackBase__;
    return;
  }
}
function _poly_init($n) {
  $n = $n | 0;
  var $marginx = 0, $marginy = 0, $tmp = 0, $tmp321 = 0, $call = 0, $shape = 0, $0 = 0, $polygon = 0, $1 = 0, $regular1 = 0, $2 = 0, $peripheries5 = 0, $3 = 0, $sides9 = 0, $4 = 0, $orientation13 = 0, $5 = 0.0, $skew17 = 0, $6 = 0.0, $distortion21 = 0, $7 = 0.0, $8 = 0, $call22 = 0, $call23 = 0, $conv = 0, $or = 0, $tobool = 0, $call24 = 0.0, $cmp = 0, $width28 = 0, $9 = 0.0, $height30 = 0, $10 = 0.0, $cmp31 = 0, $cond = 0.0, $mul = 0.0, $cmp33 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv43 = 0, $conv55 = 0.0, $width58 = 0, $11 = 0.0, $mul59 = 0.0, $cmp60 = 0, $add66 = 0.0, $sub72 = 0.0, $add66_sink = 0.0, $conv67 = 0, $conv76 = 0.0, $height78 = 0, $12 = 0.0, $mul79 = 0.0, $cmp80 = 0, $add86 = 0.0, $sub92 = 0.0, $add86_sink = 0.0, $conv87 = 0, $conv96 = 0.0, $width_0 = 0.0, $height_0 = 0.0, $13 = 0, $call98 = 0, $14 = 0, $call99 = 0.0, $add100 = 0.0, $cmp101 = 0, $15 = 0, $call104 = 0.0, $16 = 0, $call105 = 0, $17 = 0, $call106 = 0.0, $distortion_0 = 0.0, $skew_0 = 0.0, $sides_0 = 0, $label = 0, $18 = 0, $dimen_sroa_0_0__idx = 0, $dimen_sroa_0_0_copyload = 0.0, $dimen_sroa_1_8__idx336 = 0, $dimen_sroa_1_8_copyload = 0.0, $conv110 = 0, $ispos = 0, $neg = 0, $call111 = 0, $cmp112 = 0, $ispos389 = 0, $neg390 = 0, $call117 = 0, $conv118 = 0.0, $add119 = 0.0, $conv120 = 0, $tobool121 = 0, $sub127 = 0.0, $conv128 = 0, $tobool129 = 0, $conv130 = 0, $ispos391 = 0, $neg392 = 0, $call131 = 0, $cmp132 = 0, $ispos393 = 0, $neg394 = 0, $call137 = 0, $conv138 = 0.0, $add139 = 0.0, $conv140 = 0, $tobool141 = 0, $sub147 = 0.0, $conv148 = 0, $tobool149 = 0, $call151 = 0, $tobool152 = 0, $call154 = 0, $19 = 0.0, $cmp155 = 0, $20 = 0.0, $cmp159 = 0, $cmp163 = 0, $21 = 0.0, $mul166 = 0.0, $cmp167 = 0, $add171 = 0.0, $sub175 = 0.0, $add171_sink = 0.0, $conv172 = 0, $mul179 = 0, $conv180 = 0.0, $add182 = 0.0, $cmp183 = 0, $22 = 0.0, $mul186 = 0.0, $cmp187 = 0, $add191 = 0.0, $sub195 = 0.0, $add191_sink = 0.0, $conv192 = 0, $mul199 = 0, $conv200 = 0.0, $add202 = 0.0, $23 = 0.0, $mul204 = 0.0, $cmp205 = 0, $add209 = 0.0, $sub213 = 0.0, $add209_sink = 0.0, $conv210 = 0, $mul217 = 0, $conv218 = 0.0, $add220 = 0.0, $add224 = 0.0, $add226 = 0.0, $add230 = 0.0, $add232 = 0.0, $dimen_sroa_0_0 = 0.0, $dimen_sroa_1_0 = 0.0, $24 = 0, $x239 = 0, $25 = 0.0, $sub240 = 0.0, $graph = 0, $26 = 0, $drawing = 0, $27 = 0, $quantum = 0, $28 = 0.0, $cmp242 = 0, $mul245 = 0.0, $cmp246 = 0, $add250 = 0.0, $sub254 = 0.0, $add250_sink = 0.0, $conv251 = 0, $conv258 = 0.0, $call260 = 0.0, $call263 = 0.0, $dimen_sroa_0_1 = 0.0, $dimen_sroa_1_1 = 0.0, $29 = 0, $usershape = 0, $30 = 0, $tobool270 = 0, $name = 0, $31 = 0, $32 = 0, $cmp276 = 0, $call281 = 0, $tobool282 = 0, $call284 = 0, $33 = 0, $imagesize_sroa_0_0__idx262 = 0, $imagesize_sroa_0_0_copyload263 = 0, $imagesize_sroa_1_4__idx272 = 0, $imagesize_sroa_1_4_copyload273 = 0, $cmp287 = 0, $cmp291 = 0, $or_cond = 0, $tobool294 = 0, $cond298 = 0, $name299 = 0, $34 = 0, $call300 = 0, $35 = 0, $has_images = 0, $add307 = 0, $add309 = 0, $call313 = 0, $tobool314 = 0, $36 = 0, $cmp317 = 0, $37 = 0, $imagesize_sroa_0_0__idx = 0, $imagesize_sroa_0_0_copyload = 0, $imagesize_sroa_1_4__idx269 = 0, $imagesize_sroa_1_4_copyload = 0, $cmp323 = 0, $cmp327 = 0, $or_cond385 = 0, $cond334 = 0, $name335 = 0, $38 = 0, $call336 = 0, $39 = 0, $has_images342 = 0, $add344 = 0, $add346 = 0, $imagesize_sroa_0_0 = 0, $imagesize_sroa_1_0 = 0, $conv352 = 0.0, $cmp353 = 0, $dimen_sroa_0_1_conv352 = 0.0, $conv365 = 0.0, $cmp366 = 0, $cond374 = 0.0, $cmp376 = 0, $cmp379 = 0, $cmp382 = 0, $or_cond386 = 0, $_sides_0 = 0, $sides_1 = 0, $call386 = 0, $tobool387 = 0, $40 = 0, $41 = 0, $42 = 0, $valign = 0, $43 = 0, $valign404 = 0, $cmp406 = 0, $cmp409 = 0, $add412 = 0.0, $sub415 = 0.0, $add412_sink = 0.0, $conv413 = 0, $rem = 0, $cmp419 = 0, $cmp422 = 0, $or_cond387 = 0, $cmp424 = 0, $or_cond395 = 0, $mul430 = 0.0, $cmp431 = 0, $44 = 0, $valign436 = 0, $45 = 0, $cmp438 = 0, $div = 0.0, $mul444 = 0.0, $sub445 = 0.0, $div446 = 0.0, $call447 = 0.0, $call447_pn = 0.0, $bb_sroa_1_0 = 0.0, $bb_sroa_0_0 = 0.0, $cmp455 = 0, $conv458 = 0.0, $div459 = 0.0, $call460 = 0.0, $div462 = 0.0, $div464 = 0.0, $46 = 0, $bb_sroa_0_1 = 0.0, $bb_sroa_1_1 = 0.0, $47 = 0, $call467 = 0, $call468 = 0, $tobool469 = 0, $cmp472 = 0, $cmp476 = 0, $or_cond388 = 0, $name479 = 0, $48 = 0, $49 = 0, $name481 = 0, $50 = 0, $call482 = 0, $cmp488 = 0, $width_0_bb_sroa_0_1 = 0.0, $cmp497 = 0, $cond503 = 0.0, $width_1 = 0.0, $height_1 = 0.0, $cmp510 = 0, $width_1_height_1 = 0.0, $width_2 = 0.0, $height_2 = 0.0, $51 = 0, $call521 = 0, $call522 = 0, $tobool523 = 0, $cmp529 = 0, $dimen_sroa_0_1_width_2 = 0.0, $sub537 = 0.0, $52 = 0, $x540 = 0, $cmp544 = 0, $mul550 = 0.0, $mul553 = 0.0, $div554 = 0.0, $sub555 = 0.0, $call556 = 0.0, $mul557 = 0.0, $cmp559 = 0, $dimen_sroa_0_1_mul557 = 0.0, $sub566 = 0.0, $53 = 0, $x570 = 0, $sub573 = 0.0, $54 = 0, $x577 = 0, $sub582 = 0.0, $55 = 0, $x586 = 0, $sub590 = 0.0, $cmp594 = 0, $sub600 = 0.0, $add601 = 0.0, $temp_0 = 0.0, $add604 = 0.0, $56 = 0, $y608 = 0, $cmp609 = 0, $_call98 = 0, $cmp613 = 0, $mul617 = 0, $call618 = 0, $57 = 0, $div620 = 0.0, $div623 = 0.0, $sub626 = 0.0, $x628 = 0, $sub630 = 0.0, $y632 = 0, $58 = 0, $P_sroa_0_0__idx229 = 0, $59 = 0, $P_sroa_1_8__idx254 = 0, $60 = 0, $cmp634 = 0, $j_0400 = 0, $i_0399 = 0, $P_sroa_1_0398 = 0.0, $P_sroa_0_0397 = 0.0, $add640 = 0.0, $add642 = 0.0, $sub644 = 0.0, $x646 = 0, $sub648 = 0.0, $y650 = 0, $inc384 = 0, $x653 = 0, $y656 = 0, $inc657 = 0, $inc658 = 0, $cmp637 = 0, $mul660 = 0.0, $mul663 = 0.0, $mul667 = 0, $mul668 = 0, $call669 = 0, $61 = 0, $conv670 = 0.0, $div671 = 0.0, $div672 = 0.0, $call673 = 0.0, $call674 = 0.0, $call675 = 0.0, $add676 = 0.0, $call677 = 0.0, $mul678 = 0.0, $call680 = 0.0, $div681 = 0.0, $div682 = 0.0, $sub683 = 0.0, $div684 = 0.0, $call685 = 0.0, $call686 = 0.0, $mul687 = 0.0, $mul689 = 0.0, $sub691 = 0.0, $div692 = 0.0, $add693 = 0.0, $div718 = 0.0, $mul719 = 0.0, $R_sroa_0_0 = 0.0, $R_sroa_1_0 = 0.0, $angle_0 = 0.0, $xmax_0 = 0.0, $ymax_0 = 0.0, $i_1 = 0, $cmp695 = 0, $add698 = 0.0, $call699 = 0.0, $call700 = 0.0, $mul701 = 0.0, $add703 = 0.0, $mul704 = 0.0, $add706 = 0.0, $mul709 = 0.0, $add710 = 0.0, $mul711 = 0.0, $mul713 = 0.0, $add714 = 0.0, $call722 = 0.0, $add723 = 0.0, $call724 = 0.0, $call725 = 0.0, $call728 = 0.0, $mul732 = 0.0, $mul734 = 0.0, $mul737 = 0.0, $mul740 = 0.0, $call742 = 0.0, $cmp743 = 0, $call742_xmax_0 = 0.0, $call752 = 0.0, $cmp753 = 0, $cond760 = 0.0, $P_sroa_0_0__idx218 = 0, $P_sroa_1_8__idx242 = 0, $inc788 = 0, $sub765 = 0.0, $arrayidx766 = 0, $x767 = 0, $y770 = 0, $62 = 0, $arrayidx773 = 0, $x774 = 0, $sub776 = 0.0, $y778 = 0, $63 = 0, $arrayidx780 = 0, $x781 = 0, $y785 = 0, $64 = 0, $xmax_1 = 0.0, $ymax_1 = 0.0, $mul790 = 0.0, $mul791 = 0.0, $cmp792 = 0, $cond797 = 0.0, $cmp799 = 0, $cond804 = 0.0, $div807 = 0.0, $div809 = 0.0, $cmp811417 = 0, $i_2418 = 0, $P_sroa_0_0__idx213 = 0, $P_sroa_0_0_copyload214 = 0.0, $P_sroa_1_8__idx237 = 0, $P_sroa_1_8_copyload238 = 0.0, $mul816 = 0.0, $mul818 = 0.0, $inc821 = 0, $cmp811 = 0, $cmp823 = 0, $sub826 = 0, $R_sroa_0_0__idx182 = 0, $R_sroa_0_0_copyload183 = 0.0, $R_sroa_1_8__idx190 = 0, $65 = 0, $R_sroa_1_8_copyload191 = 0.0, $cmp837412 = 0, $Q_sroa_1_8__idx207 = 0, $Q_sroa_0_0__idx200 = 0, $Q_sroa_1_8_copyload208 = 0.0, $Q_sroa_0_0_copyload201 = 0.0, $sub834 = 0.0, $sub831 = 0.0, $call835 = 0.0, $cmp862408 = 0, $cmp837 = 0, $cmp879402 = 0, $sub882 = 0, $mul883 = 0, $i_3416 = 0, $R_sroa_1_1415 = 0.0, $R_sroa_0_1414 = 0.0, $beta_0413 = 0.0, $add840 = 0, $66 = 0, $tmp421 = 0, $R_sroa_0_0__idx = 0, $R_sroa_0_0_copyload = 0.0, $R_sroa_1_8__idx186 = 0, $R_sroa_1_8_copyload = 0.0, $sub845 = 0.0, $sub848 = 0.0, $call849 = 0.0, $add850 = 0.0, $sub851 = 0.0, $div852 = 0.0, $call853 = 0.0, $div854 = 0.0, $sub855 = 0.0, $call856 = 0.0, $call858 = 0.0, $mul859 = 0.0, $mul860 = 0.0, $j_1411 = 0, $Q_sroa_1_1410 = 0.0, $Q_sroa_0_1409 = 0.0, $add866 = 0.0, $add868 = 0.0, $mul869 = 0, $add870 = 0, $Q_sroa_0_0__idx = 0, $Q_sroa_1_8__idx202 = 0, $inc873 = 0, $cmp862 = 0, $bb_sroa_1_4405 = 0.0, $i_4404 = 0, $bb_sroa_0_4403 = 0.0, $add884 = 0, $P_sroa_0_0__idx = 0, $P_sroa_0_0_copyload = 0.0, $P_sroa_1_8__idx233 = 0, $P_sroa_1_8_copyload = 0.0, $call887 = 0.0, $mul888 = 0.0, $cmp890 = 0, $mul888_bb_sroa_0_4 = 0.0, $call902 = 0.0, $mul903 = 0.0, $cmp905 = 0, $cond914 = 0.0, $inc917 = 0, $cmp879 = 0, $vertices_0 = 0, $bb_sroa_0_5 = 0.0, $sides_2 = 0, $bb_sroa_1_5 = 0.0, $regular921 = 0, $peripheries922 = 0, $67 = 0, $sides923 = 0, $68 = 0, $orientation924 = 0, $69 = 0, $skew925 = 0, $70 = 0, $distortion926 = 0, $71 = 0, $vertices927 = 0, $72 = 0, $div929 = 0.0, $width931 = 0, $div933 = 0.0, $height935 = 0, $shape_info = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $marginx = __stackBase__ | 0;
    $marginy = __stackBase__ + 8 | 0;
    $tmp = __stackBase__ + 16 | 0;
    $tmp321 = __stackBase__ + 24 | 0;
    $call = _zmalloc(48) | 0;
    $shape = $n + 24 | 0;
    $0 = HEAP32[$shape >> 2] | 0;
    $polygon = $0 + 8 | 0;
    $1 = HEAP32[$polygon >> 2] | 0;
    $regular1 = $1 | 0;
    $2 = HEAP32[$regular1 >> 2] | 0;
    $peripheries5 = $1 + 4 | 0;
    $3 = HEAP32[$peripheries5 >> 2] | 0;
    $sides9 = $1 + 8 | 0;
    $4 = HEAP32[$sides9 >> 2] | 0;
    $orientation13 = $1 + 16 | 0;
    $5 = +HEAPF64[$orientation13 >> 3];
    $skew17 = $1 + 32 | 0;
    $6 = +HEAPF64[$skew17 >> 3];
    $distortion21 = $1 + 24 | 0;
    $7 = +HEAPF64[$distortion21 >> 3];
    $8 = $n | 0;
    $call22 = _agget($8, 98792) | 0;
    $call23 = _mapbool($call22) | 0;
    $conv = $call23 & 255;
    $or = $conv | $2;
    $tobool = ($or | 0) != 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $call24 = +_userSize($n);
    $cmp = $call24 > 0.0;
    if ($cmp) {
      $height_0 = $call24;
      $width_0 = $call24;
      label = 15;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $width28 = $n + 48 | 0;
    $9 = +HEAPF64[$width28 >> 3];
    $height30 = $n + 56 | 0;
    $10 = +HEAPF64[$height30 >> 3];
    $cmp31 = $9 < $10;
    $cond = $cmp31 ? $9 : $10;
    $mul = $cond * 72.0;
    $cmp33 = $mul < 0.0;
    if ($cmp33) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add = $mul + .5;
    $add_sink = $add;
    label = 7;
    break;
   case 6:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 7;
    break;
   case 7:
    $conv43 = ~~$add_sink;
    $conv55 = +($conv43 | 0);
    $height_0 = $conv55;
    $width_0 = $conv55;
    label = 15;
    break;
   case 8:
    $width58 = $n + 48 | 0;
    $11 = +HEAPF64[$width58 >> 3];
    $mul59 = $11 * 72.0;
    $cmp60 = $mul59 < 0.0;
    if ($cmp60) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add66 = $mul59 + .5;
    $add66_sink = $add66;
    label = 11;
    break;
   case 10:
    $sub72 = $mul59 + -.5;
    $add66_sink = $sub72;
    label = 11;
    break;
   case 11:
    $conv67 = ~~$add66_sink;
    $conv76 = +($conv67 | 0);
    $height78 = $n + 56 | 0;
    $12 = +HEAPF64[$height78 >> 3];
    $mul79 = $12 * 72.0;
    $cmp80 = $mul79 < 0.0;
    if ($cmp80) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add86 = $mul79 + .5;
    $add86_sink = $add86;
    label = 14;
    break;
   case 13:
    $sub92 = $mul79 + -.5;
    $add86_sink = $sub92;
    label = 14;
    break;
   case 14:
    $conv87 = ~~$add86_sink;
    $conv96 = +($conv87 | 0);
    $height_0 = $conv96;
    $width_0 = $conv76;
    label = 15;
    break;
   case 15:
    $13 = HEAP32[41574] | 0;
    $call98 = _late_int($8, $13, $3, 0) | 0;
    $14 = HEAP32[41578] | 0;
    $call99 = +_late_double($8, $14, 0.0, -360.0);
    $add100 = $5 + $call99;
    $cmp101 = ($4 | 0) == 0;
    if ($cmp101) {
      label = 16;
      break;
    } else {
      $sides_0 = $4;
      $skew_0 = $6;
      $distortion_0 = $7;
      label = 17;
      break;
    }
   case 16:
    $15 = HEAP32[41562] | 0;
    $call104 = +_late_double($8, $15, 0.0, -100.0);
    $16 = HEAP32[41564] | 0;
    $call105 = _late_int($8, $16, 4, 0) | 0;
    $17 = HEAP32[41608] | 0;
    $call106 = +_late_double($8, $17, 0.0, -100.0);
    $sides_0 = $call105;
    $skew_0 = $call104;
    $distortion_0 = $call106;
    label = 17;
    break;
   case 17:
    $label = $n + 120 | 0;
    $18 = HEAP32[$label >> 2] | 0;
    $dimen_sroa_0_0__idx = $18 + 24 | 0;
    $dimen_sroa_0_0_copyload = +HEAPF64[$dimen_sroa_0_0__idx >> 3];
    $dimen_sroa_1_8__idx336 = $18 + 32 | 0;
    $dimen_sroa_1_8_copyload = +HEAPF64[$dimen_sroa_1_8__idx336 >> 3];
    $conv110 = ~~$dimen_sroa_0_0_copyload;
    $ispos = ($conv110 | 0) > -1;
    $neg = -$conv110 | 0;
    $call111 = $ispos ? $conv110 : $neg;
    $cmp112 = ($call111 | 0) > -1;
    $ispos389 = ($conv110 | 0) > -1;
    $neg390 = -$conv110 | 0;
    $call117 = $ispos389 ? $conv110 : $neg390;
    $conv118 = +($call117 | 0);
    if ($cmp112) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $add119 = $conv118 + .5;
    $conv120 = ~~$add119;
    $tobool121 = ($conv120 | 0) == 0;
    if ($tobool121) {
      label = 20;
      break;
    } else {
      label = 23;
      break;
    }
   case 19:
    $sub127 = $conv118 + -.5;
    $conv128 = ~~$sub127;
    $tobool129 = ($conv128 | 0) == 0;
    if ($tobool129) {
      label = 20;
      break;
    } else {
      label = 23;
      break;
    }
   case 20:
    $conv130 = ~~$dimen_sroa_1_8_copyload;
    $ispos391 = ($conv130 | 0) > -1;
    $neg392 = -$conv130 | 0;
    $call131 = $ispos391 ? $conv130 : $neg392;
    $cmp132 = ($call131 | 0) > -1;
    $ispos393 = ($conv130 | 0) > -1;
    $neg394 = -$conv130 | 0;
    $call137 = $ispos393 ? $conv130 : $neg394;
    $conv138 = +($call137 | 0);
    if ($cmp132) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $add139 = $conv138 + .5;
    $conv140 = ~~$add139;
    $tobool141 = ($conv140 | 0) == 0;
    if ($tobool141) {
      $dimen_sroa_1_0 = $dimen_sroa_1_8_copyload;
      $dimen_sroa_0_0 = $dimen_sroa_0_0_copyload;
      label = 43;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $sub147 = $conv138 + -.5;
    $conv148 = ~~$sub147;
    $tobool149 = ($conv148 | 0) == 0;
    if ($tobool149) {
      $dimen_sroa_1_0 = $dimen_sroa_1_8_copyload;
      $dimen_sroa_0_0 = $dimen_sroa_0_0_copyload;
      label = 43;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $call151 = _agget($8, 99584) | 0;
    $tobool152 = ($call151 | 0) == 0;
    if ($tobool152) {
      label = 42;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $call154 = _sscanf($call151 | 0, 99208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $marginx, HEAP32[tempInt + 8 >> 2] = $marginy, tempInt) | 0) | 0;
    $19 = +HEAPF64[$marginx >> 3];
    $cmp155 = $19 < 0.0;
    if ($cmp155) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    HEAPF64[$marginx >> 3] = 0.0;
    label = 26;
    break;
   case 26:
    $20 = +HEAPF64[$marginy >> 3];
    $cmp159 = $20 < 0.0;
    if ($cmp159) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    HEAPF64[$marginy >> 3] = 0.0;
    label = 28;
    break;
   case 28:
    $cmp163 = ($call154 | 0) > 0;
    if ($cmp163) {
      label = 29;
      break;
    } else {
      label = 41;
      break;
    }
   case 29:
    $21 = +HEAPF64[$marginx >> 3];
    $mul166 = $21 * 72.0;
    $cmp167 = $mul166 < 0.0;
    if ($cmp167) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $add171 = $mul166 + .5;
    $add171_sink = $add171;
    label = 32;
    break;
   case 31:
    $sub175 = $mul166 + -.5;
    $add171_sink = $sub175;
    label = 32;
    break;
   case 32:
    $conv172 = ~~$add171_sink;
    $mul179 = $conv172 << 1;
    $conv180 = +($mul179 | 0);
    $add182 = $dimen_sroa_0_0_copyload + $conv180;
    $cmp183 = ($call154 | 0) > 1;
    if ($cmp183) {
      label = 33;
      break;
    } else {
      label = 37;
      break;
    }
   case 33:
    $22 = +HEAPF64[$marginy >> 3];
    $mul186 = $22 * 72.0;
    $cmp187 = $mul186 < 0.0;
    if ($cmp187) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $add191 = $mul186 + .5;
    $add191_sink = $add191;
    label = 36;
    break;
   case 35:
    $sub195 = $mul186 + -.5;
    $add191_sink = $sub195;
    label = 36;
    break;
   case 36:
    $conv192 = ~~$add191_sink;
    $mul199 = $conv192 << 1;
    $conv200 = +($mul199 | 0);
    $add202 = $dimen_sroa_1_8_copyload + $conv200;
    $dimen_sroa_1_0 = $add202;
    $dimen_sroa_0_0 = $add182;
    label = 43;
    break;
   case 37:
    $23 = +HEAPF64[$marginx >> 3];
    $mul204 = $23 * 72.0;
    $cmp205 = $mul204 < 0.0;
    if ($cmp205) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $add209 = $mul204 + .5;
    $add209_sink = $add209;
    label = 40;
    break;
   case 39:
    $sub213 = $mul204 + -.5;
    $add209_sink = $sub213;
    label = 40;
    break;
   case 40:
    $conv210 = ~~$add209_sink;
    $mul217 = $conv210 << 1;
    $conv218 = +($mul217 | 0);
    $add220 = $dimen_sroa_1_8_copyload + $conv218;
    $dimen_sroa_1_0 = $add220;
    $dimen_sroa_0_0 = $add182;
    label = 43;
    break;
   case 41:
    $add224 = $dimen_sroa_0_0_copyload + 16.0;
    $add226 = $dimen_sroa_1_8_copyload + 8.0;
    $dimen_sroa_1_0 = $add226;
    $dimen_sroa_0_0 = $add224;
    label = 43;
    break;
   case 42:
    $add230 = $dimen_sroa_0_0_copyload + 16.0;
    $add232 = $dimen_sroa_1_8_copyload + 8.0;
    $dimen_sroa_1_0 = $add232;
    $dimen_sroa_0_0 = $add230;
    label = 43;
    break;
   case 43:
    $24 = HEAP32[$label >> 2] | 0;
    $x239 = $24 + 24 | 0;
    $25 = +HEAPF64[$x239 >> 3];
    $sub240 = $dimen_sroa_0_0 - $25;
    $graph = $n + 20 | 0;
    $26 = HEAP32[$graph >> 2] | 0;
    $drawing = $26 + 48 | 0;
    $27 = HEAP32[$drawing >> 2] | 0;
    $quantum = $27 | 0;
    $28 = +HEAPF64[$quantum >> 3];
    $cmp242 = $28 > 0.0;
    if ($cmp242) {
      label = 44;
      break;
    } else {
      $dimen_sroa_1_1 = $dimen_sroa_1_0;
      $dimen_sroa_0_1 = $dimen_sroa_0_0;
      label = 48;
      break;
    }
   case 44:
    $mul245 = $28 * 72.0;
    $cmp246 = $mul245 < 0.0;
    if ($cmp246) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $add250 = $mul245 + .5;
    $add250_sink = $add250;
    label = 47;
    break;
   case 46:
    $sub254 = $mul245 + -.5;
    $add250_sink = $sub254;
    label = 47;
    break;
   case 47:
    $conv251 = ~~$add250_sink;
    $conv258 = +($conv251 | 0);
    $call260 = +_quant($dimen_sroa_0_0, $conv258);
    $call263 = +_quant($dimen_sroa_1_0, $conv258);
    $dimen_sroa_1_1 = $call263;
    $dimen_sroa_0_1 = $call260;
    label = 48;
    break;
   case 48:
    $29 = HEAP32[$shape >> 2] | 0;
    $usershape = $29 + 12 | 0;
    $30 = HEAP8[$usershape] | 0;
    $tobool270 = $30 << 24 >> 24 == 0;
    if ($tobool270) {
      label = 54;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $name = $29 | 0;
    $31 = HEAP32[$name >> 2] | 0;
    $32 = HEAP8[$31] | 0;
    $cmp276 = $32 << 24 >> 24 == 99;
    if ($cmp276) {
      label = 50;
      break;
    } else {
      $imagesize_sroa_1_0 = 0;
      $imagesize_sroa_0_0 = 0;
      label = 59;
      break;
    }
   case 50:
    $call281 = _strcmp($31 | 0, 110216) | 0;
    $tobool282 = ($call281 | 0) == 0;
    if ($tobool282) {
      label = 51;
      break;
    } else {
      $imagesize_sroa_1_0 = 0;
      $imagesize_sroa_0_0 = 0;
      label = 59;
      break;
    }
   case 51:
    $call284 = _agget($8, 120672) | 0;
    $33 = HEAP32[$graph >> 2] | 0;
    _gvusershape_size($tmp, $33, $call284);
    $imagesize_sroa_0_0__idx262 = $tmp | 0;
    $imagesize_sroa_0_0_copyload263 = HEAP32[$imagesize_sroa_0_0__idx262 >> 2] | 0;
    $imagesize_sroa_1_4__idx272 = $tmp + 4 | 0;
    $imagesize_sroa_1_4_copyload273 = HEAP32[$imagesize_sroa_1_4__idx272 >> 2] | 0;
    $cmp287 = ($imagesize_sroa_0_0_copyload263 | 0) == -1;
    $cmp291 = ($imagesize_sroa_1_4_copyload273 | 0) == -1;
    $or_cond = $cmp287 & $cmp291;
    if ($or_cond) {
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 52:
    $tobool294 = ($call284 | 0) != 0;
    $cond298 = $tobool294 ? $call284 : 98008;
    $name299 = $n + 12 | 0;
    $34 = HEAP32[$name299 >> 2] | 0;
    $call300 = _agerr(0, 98360, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $cond298, HEAP32[tempInt + 8 >> 2] = $34, tempInt) | 0) | 0;
    $imagesize_sroa_1_0 = 0;
    $imagesize_sroa_0_0 = 0;
    label = 59;
    break;
   case 53:
    $35 = HEAP32[$graph >> 2] | 0;
    $has_images = $35 + 154 | 0;
    HEAP8[$has_images] = 1;
    $add307 = $imagesize_sroa_0_0_copyload263 + 2 | 0;
    $add309 = $imagesize_sroa_1_4_copyload273 + 2 | 0;
    $imagesize_sroa_1_0 = $add309;
    $imagesize_sroa_0_0 = $add307;
    label = 59;
    break;
   case 54:
    $call313 = _agget($8, 101440) | 0;
    $tobool314 = ($call313 | 0) != 0;
    if ($tobool314) {
      label = 55;
      break;
    } else {
      $imagesize_sroa_1_0 = 0;
      $imagesize_sroa_0_0 = 0;
      label = 59;
      break;
    }
   case 55:
    $36 = HEAP8[$call313] | 0;
    $cmp317 = $36 << 24 >> 24 == 0;
    if ($cmp317) {
      $imagesize_sroa_1_0 = 0;
      $imagesize_sroa_0_0 = 0;
      label = 59;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $37 = HEAP32[$graph >> 2] | 0;
    _gvusershape_size($tmp321, $37, $call313);
    $imagesize_sroa_0_0__idx = $tmp321 | 0;
    $imagesize_sroa_0_0_copyload = HEAP32[$imagesize_sroa_0_0__idx >> 2] | 0;
    $imagesize_sroa_1_4__idx269 = $tmp321 + 4 | 0;
    $imagesize_sroa_1_4_copyload = HEAP32[$imagesize_sroa_1_4__idx269 >> 2] | 0;
    $cmp323 = ($imagesize_sroa_0_0_copyload | 0) == -1;
    $cmp327 = ($imagesize_sroa_1_4_copyload | 0) == -1;
    $or_cond385 = $cmp323 & $cmp327;
    if ($or_cond385) {
      label = 57;
      break;
    } else {
      label = 58;
      break;
    }
   case 57:
    $cond334 = $tobool314 ? $call313 : 98008;
    $name335 = $n + 12 | 0;
    $38 = HEAP32[$name335 >> 2] | 0;
    $call336 = _agerr(0, 97504, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $cond334, HEAP32[tempInt + 8 >> 2] = $38, tempInt) | 0) | 0;
    $imagesize_sroa_1_0 = 0;
    $imagesize_sroa_0_0 = 0;
    label = 59;
    break;
   case 58:
    $39 = HEAP32[$graph >> 2] | 0;
    $has_images342 = $39 + 154 | 0;
    HEAP8[$has_images342] = 1;
    $add344 = $imagesize_sroa_0_0_copyload + 2 | 0;
    $add346 = $imagesize_sroa_1_4_copyload + 2 | 0;
    $imagesize_sroa_1_0 = $add346;
    $imagesize_sroa_0_0 = $add344;
    label = 59;
    break;
   case 59:
    $conv352 = +($imagesize_sroa_0_0 | 0);
    $cmp353 = $dimen_sroa_0_1 > $conv352;
    $dimen_sroa_0_1_conv352 = $cmp353 ? $dimen_sroa_0_1 : $conv352;
    $conv365 = +($imagesize_sroa_1_0 | 0);
    $cmp366 = $dimen_sroa_1_1 > $conv365;
    $cond374 = $cmp366 ? $dimen_sroa_1_1 : $conv365;
    $cmp376 = ($sides_0 | 0) < 3;
    if ($cmp376) {
      label = 60;
      break;
    } else {
      $sides_1 = $sides_0;
      label = 61;
      break;
    }
   case 60:
    $cmp379 = $distortion_0 != 0.0;
    $cmp382 = $skew_0 != 0.0;
    $or_cond386 = $cmp379 | $cmp382;
    $_sides_0 = $or_cond386 ? 120 : $sides_0;
    $sides_1 = $_sides_0;
    label = 61;
    break;
   case 61:
    $call386 = _agget($8, 97168) | 0;
    $tobool387 = ($call386 | 0) == 0;
    if ($tobool387) {
      label = 64;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    $40 = HEAP8[$call386] | 0;
    if (($40 << 24 >> 24 | 0) == 116 | ($40 << 24 >> 24 | 0) == 98) {
      label = 63;
      break;
    } else {
      label = 64;
      break;
    }
   case 63:
    $41 = HEAP8[$call386] | 0;
    $42 = HEAP32[$label >> 2] | 0;
    $valign = $42 + 80 | 0;
    HEAP8[$valign] = $41;
    label = 65;
    break;
   case 64:
    $43 = HEAP32[$label >> 2] | 0;
    $valign404 = $43 + 80 | 0;
    HEAP8[$valign404] = 99;
    label = 65;
    break;
   case 65:
    $cmp406 = ($sides_1 | 0) == 4;
    if ($cmp406) {
      label = 66;
      break;
    } else {
      label = 70;
      break;
    }
   case 66:
    $cmp409 = $add100 < 0.0;
    if ($cmp409) {
      label = 68;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $add412 = $add100 + .5;
    $add412_sink = $add412;
    label = 69;
    break;
   case 68:
    $sub415 = $add100 + -.5;
    $add412_sink = $sub415;
    label = 69;
    break;
   case 69:
    $conv413 = ~~$add412_sink;
    $rem = ($conv413 | 0) % 90;
    $cmp419 = ($rem | 0) == 0;
    $cmp422 = $distortion_0 == 0.0;
    $or_cond387 = $cmp419 & $cmp422;
    $cmp424 = $skew_0 == 0.0;
    $or_cond395 = $or_cond387 & $cmp424;
    if ($or_cond395) {
      $bb_sroa_1_1 = $cond374;
      $bb_sroa_0_1 = $dimen_sroa_0_1_conv352;
      $46 = 1;
      label = 75;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $mul430 = $cond374 * 1.4142135623730951;
    $cmp431 = $height_0 > $mul430;
    if ($cmp431) {
      label = 71;
      break;
    } else {
      $bb_sroa_1_0 = $mul430;
      $call447_pn = 1.4142135623730951;
      label = 73;
      break;
    }
   case 71:
    $44 = HEAP32[$label >> 2] | 0;
    $valign436 = $44 + 80 | 0;
    $45 = HEAP8[$valign436] | 0;
    $cmp438 = $45 << 24 >> 24 == 99;
    if ($cmp438) {
      label = 72;
      break;
    } else {
      $bb_sroa_1_0 = $mul430;
      $call447_pn = 1.4142135623730951;
      label = 73;
      break;
    }
   case 72:
    $div = $cond374 / $height_0;
    $mul444 = $div * $div;
    $sub445 = 1.0 - $mul444;
    $div446 = 1.0 / $sub445;
    $call447 = +Math_sqrt(+$div446);
    $bb_sroa_1_0 = $cond374;
    $call447_pn = $call447;
    label = 73;
    break;
   case 73:
    $bb_sroa_0_0 = $dimen_sroa_0_1_conv352 * $call447_pn;
    $cmp455 = ($sides_1 | 0) > 2;
    if ($cmp455) {
      label = 74;
      break;
    } else {
      $bb_sroa_1_1 = $bb_sroa_1_0;
      $bb_sroa_0_1 = $bb_sroa_0_0;
      $46 = 0;
      label = 75;
      break;
    }
   case 74:
    $conv458 = +($sides_1 | 0);
    $div459 = 3.141592653589793 / $conv458;
    $call460 = +Math_cos(+$div459);
    $div462 = $bb_sroa_0_0 / $call460;
    $div464 = $bb_sroa_1_0 / $call460;
    $bb_sroa_1_1 = $div464;
    $bb_sroa_0_1 = $div462;
    $46 = 0;
    label = 75;
    break;
   case 75:
    $47 = HEAP32[41602] | 0;
    $call467 = _late_string($8, $47, 100880) | 0;
    $call468 = _mapbool($call467) | 0;
    $tobool469 = $call468 << 24 >> 24 == 0;
    if ($tobool469) {
      label = 78;
      break;
    } else {
      label = 76;
      break;
    }
   case 76:
    $cmp472 = $width_0 < $bb_sroa_0_1;
    $cmp476 = $height_0 < $bb_sroa_1_1;
    $or_cond388 = $cmp472 | $cmp476;
    if ($or_cond388) {
      label = 77;
      break;
    } else {
      $height_1 = $height_0;
      $width_1 = $width_0;
      label = 79;
      break;
    }
   case 77:
    $name479 = $n + 12 | 0;
    $48 = HEAP32[$name479 >> 2] | 0;
    $49 = HEAP32[$graph >> 2] | 0;
    $name481 = $49 + 12 | 0;
    $50 = HEAP32[$name481 >> 2] | 0;
    $call482 = _agerr(0, 96728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $48, HEAP32[tempInt + 8 >> 2] = $50, tempInt) | 0) | 0;
    $height_1 = $height_0;
    $width_1 = $width_0;
    label = 79;
    break;
   case 78:
    $cmp488 = $width_0 > $bb_sroa_0_1;
    $width_0_bb_sroa_0_1 = $cmp488 ? $width_0 : $bb_sroa_0_1;
    $cmp497 = $height_0 > $bb_sroa_1_1;
    $cond503 = $cmp497 ? $height_0 : $bb_sroa_1_1;
    $height_1 = $cond503;
    $width_1 = $width_0_bb_sroa_0_1;
    label = 79;
    break;
   case 79:
    if ($tobool) {
      label = 80;
      break;
    } else {
      $height_2 = $height_1;
      $width_2 = $width_1;
      label = 81;
      break;
    }
   case 80:
    $cmp510 = $width_1 > $height_1;
    $width_1_height_1 = $cmp510 ? $width_1 : $height_1;
    $height_2 = $width_1_height_1;
    $width_2 = $width_1_height_1;
    label = 81;
    break;
   case 81:
    $51 = HEAP32[41582] | 0;
    $call521 = _late_string($8, $51, 100880) | 0;
    $call522 = _mapbool($call521) | 0;
    $tobool523 = $call522 << 24 >> 24 == 0;
    if ($tobool523) {
      label = 82;
      break;
    } else {
      label = 87;
      break;
    }
   case 82:
    if ($46) {
      label = 83;
      break;
    } else {
      label = 84;
      break;
    }
   case 83:
    $cmp529 = $dimen_sroa_0_1 > $width_2;
    $dimen_sroa_0_1_width_2 = $cmp529 ? $dimen_sroa_0_1 : $width_2;
    $sub537 = $dimen_sroa_0_1_width_2 - $sub240;
    $52 = HEAP32[$label >> 2] | 0;
    $x540 = $52 + 40 | 0;
    HEAPF64[$x540 >> 3] = $sub537;
    label = 88;
    break;
   case 84:
    $cmp544 = $dimen_sroa_1_1 < $height_2;
    if ($cmp544) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    $mul550 = $dimen_sroa_1_1 * $dimen_sroa_1_1;
    $mul553 = $height_2 * $height_2;
    $div554 = $mul550 / $mul553;
    $sub555 = 1.0 - $div554;
    $call556 = +Math_sqrt(+$sub555);
    $mul557 = $width_2 * $call556;
    $cmp559 = $dimen_sroa_0_1 > $mul557;
    $dimen_sroa_0_1_mul557 = $cmp559 ? $dimen_sroa_0_1 : $mul557;
    $sub566 = $dimen_sroa_0_1_mul557 - $sub240;
    $53 = HEAP32[$label >> 2] | 0;
    $x570 = $53 + 40 | 0;
    HEAPF64[$x570 >> 3] = $sub566;
    label = 88;
    break;
   case 86:
    $sub573 = $dimen_sroa_0_1 - $sub240;
    $54 = HEAP32[$label >> 2] | 0;
    $x577 = $54 + 40 | 0;
    HEAPF64[$x577 >> 3] = $sub573;
    label = 88;
    break;
   case 87:
    $sub582 = $dimen_sroa_0_1 - $sub240;
    $55 = HEAP32[$label >> 2] | 0;
    $x586 = $55 + 40 | 0;
    HEAPF64[$x586 >> 3] = $sub582;
    label = 88;
    break;
   case 88:
    $sub590 = $height_2 - $bb_sroa_1_1;
    $cmp594 = $dimen_sroa_1_1 < $conv365;
    if ($cmp594) {
      label = 89;
      break;
    } else {
      $temp_0 = $sub590;
      label = 90;
      break;
    }
   case 89:
    $sub600 = $conv365 - $dimen_sroa_1_1;
    $add601 = $sub600 + $sub590;
    $temp_0 = $add601;
    label = 90;
    break;
   case 90:
    $add604 = $dimen_sroa_1_1 + $temp_0;
    $56 = HEAP32[$label >> 2] | 0;
    $y608 = $56 + 48 | 0;
    HEAPF64[$y608 >> 3] = $add604;
    $cmp609 = ($call98 | 0) < 1;
    $_call98 = $cmp609 ? 1 : $call98;
    $cmp613 = ($sides_1 | 0) < 3;
    if ($cmp613) {
      label = 91;
      break;
    } else {
      label = 94;
      break;
    }
   case 91:
    $mul617 = $_call98 << 5;
    $call618 = _zmalloc($mul617) | 0;
    $57 = $call618;
    $div620 = $width_2 * .5;
    $div623 = $height_2 * .5;
    $sub626 = -0.0 - $div620;
    $x628 = $call618;
    HEAPF64[$x628 >> 3] = $sub626;
    $sub630 = -0.0 - $div623;
    $y632 = $call618 + 8 | 0;
    $58 = $y632;
    HEAPF64[$58 >> 3] = $sub630;
    $P_sroa_0_0__idx229 = $call618 + 16 | 0;
    $59 = $P_sroa_0_0__idx229;
    HEAPF64[$59 >> 3] = $div620;
    $P_sroa_1_8__idx254 = $call618 + 24 | 0;
    $60 = $P_sroa_1_8__idx254;
    HEAPF64[$60 >> 3] = $div623;
    $cmp634 = ($call98 | 0) > 1;
    if ($cmp634) {
      $P_sroa_0_0397 = $div620;
      $P_sroa_1_0398 = $div623;
      $i_0399 = 2;
      $j_0400 = 1;
      label = 92;
      break;
    } else {
      $bb_sroa_1_5 = $height_2;
      $sides_2 = 2;
      $bb_sroa_0_5 = $width_2;
      $vertices_0 = $57;
      label = 109;
      break;
    }
   case 92:
    $add640 = $P_sroa_0_0397 + 4.0;
    $add642 = $P_sroa_1_0398 + 4.0;
    $sub644 = -0.0 - $add640;
    $x646 = $57 + ($i_0399 << 4) | 0;
    HEAPF64[$x646 >> 3] = $sub644;
    $sub648 = -0.0 - $add642;
    $y650 = $57 + ($i_0399 << 4) + 8 | 0;
    HEAPF64[$y650 >> 3] = $sub648;
    $inc384 = $i_0399 | 1;
    $x653 = $57 + ($inc384 << 4) | 0;
    HEAPF64[$x653 >> 3] = $add640;
    $y656 = $57 + ($inc384 << 4) + 8 | 0;
    HEAPF64[$y656 >> 3] = $add642;
    $inc657 = $i_0399 + 2 | 0;
    $inc658 = $j_0400 + 1 | 0;
    $cmp637 = ($inc658 | 0) < ($call98 | 0);
    if ($cmp637) {
      $P_sroa_0_0397 = $add640;
      $P_sroa_1_0398 = $add642;
      $i_0399 = $inc657;
      $j_0400 = $inc658;
      label = 92;
      break;
    } else {
      label = 93;
      break;
    }
   case 93:
    $mul660 = $add640 * 2.0;
    $mul663 = $add642 * 2.0;
    $bb_sroa_1_5 = $mul663;
    $sides_2 = 2;
    $bb_sroa_0_5 = $mul660;
    $vertices_0 = $57;
    label = 109;
    break;
   case 94:
    $mul667 = $_call98 << 4;
    $mul668 = Math_imul($mul667, $sides_1);
    $call669 = _zmalloc($mul668) | 0;
    $61 = $call669;
    $conv670 = +($sides_1 | 0);
    $div671 = 6.283185307179586 / $conv670;
    $div672 = $div671 * .5;
    $call673 = +Math_sin(+$div672);
    $call674 = +Math_abs(+$distortion_0);
    $call675 = +Math_abs(+$skew_0);
    $add676 = $call674 + $call675;
    $call677 = +_hypot(+$add676, 1.0);
    $mul678 = $distortion_0 * 1.4142135623730951;
    $call680 = +Math_cos(+$div672);
    $div681 = $mul678 / $call680;
    $div682 = $skew_0 * .5;
    $sub683 = $div671 - 3.141592653589793;
    $div684 = $sub683 * .5;
    $call685 = +Math_sin(+$div684);
    $call686 = +Math_cos(+$div684);
    $mul687 = $call686 * .5;
    $mul689 = $call685 * .5;
    $sub691 = 3.141592653589793 - $div671;
    $div692 = $sub691 * .5;
    $add693 = $div684 + $div692;
    $div718 = $add100 / 180.0;
    $mul719 = $div718 * 3.141592653589793;
    $i_1 = 0;
    $ymax_0 = 0.0;
    $xmax_0 = 0.0;
    $angle_0 = $add693;
    $R_sroa_1_0 = $mul689;
    $R_sroa_0_0 = $mul687;
    label = 95;
    break;
   case 95:
    $cmp695 = ($i_1 | 0) < ($sides_1 | 0);
    if ($cmp695) {
      label = 96;
      break;
    } else {
      $ymax_1 = $ymax_0;
      $xmax_1 = $xmax_0;
      label = 98;
      break;
    }
   case 96:
    $add698 = $div671 + $angle_0;
    $call699 = +Math_sin(+$add698);
    $call700 = +Math_cos(+$add698);
    $mul701 = $call673 * $call700;
    $add703 = $R_sroa_0_0 + $mul701;
    $mul704 = $call673 * $call699;
    $add706 = $R_sroa_1_0 + $mul704;
    $mul709 = $div681 * $add706;
    $add710 = $call677 + $mul709;
    $mul711 = $add703 * $add710;
    $mul713 = $div682 * $add706;
    $add714 = $mul713 + $mul711;
    $call722 = +Math_atan2(+$add706, +$add714);
    $add723 = $mul719 + $call722;
    $call724 = +Math_sin(+$add723);
    $call725 = +Math_cos(+$add723);
    $call728 = +_hypot(+$add714, +$add706);
    $mul732 = $call725 * $call728;
    $mul734 = $call724 * $call728;
    $mul737 = $width_2 * $mul732;
    $mul740 = $height_2 * $mul734;
    $call742 = +Math_abs(+$mul737);
    $cmp743 = $call742 > $xmax_0;
    $call742_xmax_0 = $cmp743 ? $call742 : $xmax_0;
    $call752 = +Math_abs(+$mul740);
    $cmp753 = $call752 > $ymax_0;
    $cond760 = $cmp753 ? $call752 : $ymax_0;
    $P_sroa_0_0__idx218 = $61 + ($i_1 << 4) | 0;
    HEAPF64[$P_sroa_0_0__idx218 >> 3] = $mul737;
    $P_sroa_1_8__idx242 = $61 + ($i_1 << 4) + 8 | 0;
    HEAPF64[$P_sroa_1_8__idx242 >> 3] = $mul740;
    $inc788 = $i_1 + 1 | 0;
    if ($46) {
      label = 97;
      break;
    } else {
      $i_1 = $inc788;
      $ymax_0 = $cond760;
      $xmax_0 = $call742_xmax_0;
      $angle_0 = $add698;
      $R_sroa_1_0 = $add706;
      $R_sroa_0_0 = $add703;
      label = 95;
      break;
    }
   case 97:
    $sub765 = -0.0 - $mul737;
    $arrayidx766 = $call669 + 16 | 0;
    $x767 = $arrayidx766;
    HEAPF64[$x767 >> 3] = $sub765;
    $y770 = $call669 + 24 | 0;
    $62 = $y770;
    HEAPF64[$62 >> 3] = $mul740;
    $arrayidx773 = $call669 + 32 | 0;
    $x774 = $arrayidx773;
    HEAPF64[$x774 >> 3] = $sub765;
    $sub776 = -0.0 - $mul740;
    $y778 = $call669 + 40 | 0;
    $63 = $y778;
    HEAPF64[$63 >> 3] = $sub776;
    $arrayidx780 = $call669 + 48 | 0;
    $x781 = $arrayidx780;
    HEAPF64[$x781 >> 3] = $mul737;
    $y785 = $call669 + 56 | 0;
    $64 = $y785;
    HEAPF64[$64 >> 3] = $sub776;
    $ymax_1 = $cond760;
    $xmax_1 = $call742_xmax_0;
    label = 98;
    break;
   case 98:
    $mul790 = $xmax_1 * 2.0;
    $mul791 = $ymax_1 * 2.0;
    $cmp792 = $width_2 > $mul790;
    $cond797 = $cmp792 ? $width_2 : $mul790;
    $cmp799 = $height_2 > $mul791;
    $cond804 = $cmp799 ? $height_2 : $mul791;
    $div807 = $cond797 / $mul790;
    $div809 = $cond804 / $mul791;
    $cmp811417 = ($sides_1 | 0) > 0;
    if ($cmp811417) {
      $i_2418 = 0;
      label = 99;
      break;
    } else {
      label = 100;
      break;
    }
   case 99:
    $P_sroa_0_0__idx213 = $61 + ($i_2418 << 4) | 0;
    $P_sroa_0_0_copyload214 = +HEAPF64[$P_sroa_0_0__idx213 >> 3];
    $P_sroa_1_8__idx237 = $61 + ($i_2418 << 4) + 8 | 0;
    $P_sroa_1_8_copyload238 = +HEAPF64[$P_sroa_1_8__idx237 >> 3];
    $mul816 = $div807 * $P_sroa_0_0_copyload214;
    $mul818 = $div809 * $P_sroa_1_8_copyload238;
    HEAPF64[$P_sroa_0_0__idx213 >> 3] = $mul816;
    HEAPF64[$P_sroa_1_8__idx237 >> 3] = $mul818;
    $inc821 = $i_2418 + 1 | 0;
    $cmp811 = ($inc821 | 0) < ($sides_1 | 0);
    if ($cmp811) {
      $i_2418 = $inc821;
      label = 99;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $cmp823 = ($call98 | 0) > 1;
    if ($cmp823) {
      label = 101;
      break;
    } else {
      $bb_sroa_1_5 = $cond804;
      $sides_2 = $sides_1;
      $bb_sroa_0_5 = $cond797;
      $vertices_0 = $61;
      label = 109;
      break;
    }
   case 101:
    $sub826 = $sides_1 - 1 | 0;
    $R_sroa_0_0__idx182 = $call669;
    $R_sroa_0_0_copyload183 = +HEAPF64[$R_sroa_0_0__idx182 >> 3];
    $R_sroa_1_8__idx190 = $call669 + 8 | 0;
    $65 = $R_sroa_1_8__idx190;
    $R_sroa_1_8_copyload191 = +HEAPF64[$65 >> 3];
    $cmp837412 = ($sides_1 | 0) > 0;
    if ($cmp837412) {
      label = 102;
      break;
    } else {
      $bb_sroa_1_5 = $cond804;
      $sides_2 = $sides_1;
      $bb_sroa_0_5 = $cond797;
      $vertices_0 = $61;
      label = 109;
      break;
    }
   case 102:
    $Q_sroa_1_8__idx207 = $61 + ($sub826 << 4) + 8 | 0;
    $Q_sroa_0_0__idx200 = $61 + ($sub826 << 4) | 0;
    $Q_sroa_1_8_copyload208 = +HEAPF64[$Q_sroa_1_8__idx207 >> 3];
    $Q_sroa_0_0_copyload201 = +HEAPF64[$Q_sroa_0_0__idx200 >> 3];
    $sub834 = $R_sroa_0_0_copyload183 - $Q_sroa_0_0_copyload201;
    $sub831 = $R_sroa_1_8_copyload191 - $Q_sroa_1_8_copyload208;
    $call835 = +Math_atan2(+$sub831, +$sub834);
    $cmp862408 = ($call98 | 0) > 1;
    $beta_0413 = $call835;
    $R_sroa_0_1414 = $R_sroa_0_0_copyload183;
    $R_sroa_1_1415 = $R_sroa_1_8_copyload191;
    $i_3416 = 0;
    label = 106;
    break;
   case 103:
    $cmp837 = ($add840 | 0) < ($sides_1 | 0);
    if ($cmp837) {
      $beta_0413 = $call849;
      $R_sroa_0_1414 = $R_sroa_0_0_copyload;
      $R_sroa_1_1415 = $R_sroa_1_8_copyload;
      $i_3416 = $add840;
      label = 106;
      break;
    } else {
      label = 104;
      break;
    }
   case 104:
    $cmp879402 = ($sides_1 | 0) > 0;
    if ($cmp879402) {
      label = 105;
      break;
    } else {
      $bb_sroa_1_5 = $cond804;
      $sides_2 = $sides_1;
      $bb_sroa_0_5 = $cond797;
      $vertices_0 = $61;
      label = 109;
      break;
    }
   case 105:
    $sub882 = $call98 - 1 | 0;
    $mul883 = Math_imul($sides_1, $sub882);
    $bb_sroa_0_4403 = $cond797;
    $i_4404 = 0;
    $bb_sroa_1_4405 = $cond804;
    label = 108;
    break;
   case 106:
    $add840 = $i_3416 + 1 | 0;
    $66 = ($add840 | 0) == ($sides_1 | 0);
    $tmp421 = $66 ? 0 : $add840;
    $R_sroa_0_0__idx = $61 + ($tmp421 << 4) | 0;
    $R_sroa_0_0_copyload = +HEAPF64[$R_sroa_0_0__idx >> 3];
    $R_sroa_1_8__idx186 = $61 + ($tmp421 << 4) + 8 | 0;
    $R_sroa_1_8_copyload = +HEAPF64[$R_sroa_1_8__idx186 >> 3];
    $sub845 = $R_sroa_1_8_copyload - $R_sroa_1_1415;
    $sub848 = $R_sroa_0_0_copyload - $R_sroa_0_1414;
    $call849 = +Math_atan2(+$sub845, +$sub848);
    $add850 = $beta_0413 + 3.141592653589793;
    $sub851 = $add850 - $call849;
    $div852 = $sub851 * .5;
    $call853 = +Math_sin(+$div852);
    $div854 = 4.0 / $call853;
    $sub855 = $beta_0413 - $div852;
    $call856 = +Math_sin(+$sub855);
    $call858 = +Math_cos(+$sub855);
    $mul859 = $div854 * $call856;
    $mul860 = $div854 * $call858;
    if ($cmp862408) {
      $Q_sroa_0_1409 = $R_sroa_0_1414;
      $Q_sroa_1_1410 = $R_sroa_1_1415;
      $j_1411 = 1;
      label = 107;
      break;
    } else {
      label = 103;
      break;
    }
   case 107:
    $add866 = $mul860 + $Q_sroa_0_1409;
    $add868 = $mul859 + $Q_sroa_1_1410;
    $mul869 = Math_imul($j_1411, $sides_1);
    $add870 = $mul869 + $i_3416 | 0;
    $Q_sroa_0_0__idx = $61 + ($add870 << 4) | 0;
    HEAPF64[$Q_sroa_0_0__idx >> 3] = $add866;
    $Q_sroa_1_8__idx202 = $61 + ($add870 << 4) + 8 | 0;
    HEAPF64[$Q_sroa_1_8__idx202 >> 3] = $add868;
    $inc873 = $j_1411 + 1 | 0;
    $cmp862 = ($inc873 | 0) < ($call98 | 0);
    if ($cmp862) {
      $Q_sroa_0_1409 = $add866;
      $Q_sroa_1_1410 = $add868;
      $j_1411 = $inc873;
      label = 107;
      break;
    } else {
      label = 103;
      break;
    }
   case 108:
    $add884 = $i_4404 + $mul883 | 0;
    $P_sroa_0_0__idx = $61 + ($add884 << 4) | 0;
    $P_sroa_0_0_copyload = +HEAPF64[$P_sroa_0_0__idx >> 3];
    $P_sroa_1_8__idx233 = $61 + ($add884 << 4) + 8 | 0;
    $P_sroa_1_8_copyload = +HEAPF64[$P_sroa_1_8__idx233 >> 3];
    $call887 = +Math_abs(+$P_sroa_0_0_copyload);
    $mul888 = $call887 * 2.0;
    $cmp890 = $mul888 > $bb_sroa_0_4403;
    $mul888_bb_sroa_0_4 = $cmp890 ? $mul888 : $bb_sroa_0_4403;
    $call902 = +Math_abs(+$P_sroa_1_8_copyload);
    $mul903 = $call902 * 2.0;
    $cmp905 = $mul903 > $bb_sroa_1_4405;
    $cond914 = $cmp905 ? $mul903 : $bb_sroa_1_4405;
    $inc917 = $i_4404 + 1 | 0;
    $cmp879 = ($inc917 | 0) < ($sides_1 | 0);
    if ($cmp879) {
      $bb_sroa_0_4403 = $mul888_bb_sroa_0_4;
      $i_4404 = $inc917;
      $bb_sroa_1_4405 = $cond914;
      label = 108;
      break;
    } else {
      $bb_sroa_1_5 = $cond914;
      $sides_2 = $sides_1;
      $bb_sroa_0_5 = $mul888_bb_sroa_0_4;
      $vertices_0 = $61;
      label = 109;
      break;
    }
   case 109:
    $regular921 = $call;
    HEAP32[$regular921 >> 2] = $or;
    $peripheries922 = $call + 4 | 0;
    $67 = $peripheries922;
    HEAP32[$67 >> 2] = $call98;
    $sides923 = $call + 8 | 0;
    $68 = $sides923;
    HEAP32[$68 >> 2] = $sides_2;
    $orientation924 = $call + 16 | 0;
    $69 = $orientation924;
    HEAPF64[$69 >> 3] = $add100;
    $skew925 = $call + 32 | 0;
    $70 = $skew925;
    HEAPF64[$70 >> 3] = $skew_0;
    $distortion926 = $call + 24 | 0;
    $71 = $distortion926;
    HEAPF64[$71 >> 3] = $distortion_0;
    $vertices927 = $call + 44 | 0;
    $72 = $vertices927;
    HEAP32[$72 >> 2] = $vertices_0;
    $div929 = $bb_sroa_0_5 / 72.0;
    $width931 = $n + 48 | 0;
    HEAPF64[$width931 >> 3] = $div929;
    $div933 = $bb_sroa_1_5 / 72.0;
    $height935 = $n + 56 | 0;
    HEAPF64[$height935 >> 3] = $div933;
    $shape_info = $n + 28 | 0;
    HEAP32[$shape_info >> 2] = $call;
    STACKTOP = __stackBase__;
    return;
  }
}
function _isPolygon($n) {
  $n = $n | 0;
  var $shape = 0, $0 = 0, $tobool = 0, $fns = 0, $1 = 0, $initfn = 0, $2 = 0, $cmp = 0, $phitmp = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $shape = $n + 24 | 0;
    $0 = HEAP32[$shape >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $3 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $fns = $0 + 4 | 0;
    $1 = HEAP32[$fns >> 2] | 0;
    $initfn = $1 | 0;
    $2 = HEAP32[$initfn >> 2] | 0;
    $cmp = ($2 | 0) == 476;
    $phitmp = $cmp & 1;
    $3 = $phitmp;
    label = 4;
    break;
   case 4:
    return $3 | 0;
  }
  return 0;
}
function _pointfof795($agg_result, $x, $y) {
  $agg_result = $agg_result | 0;
  $x = +$x;
  $y = +$y;
  HEAPF64[$agg_result >> 3] = $x;
  HEAPF64[$agg_result + 8 >> 3] = $y;
  return;
}
function _record_init($n) {
  $n = $n | 0;
  var $ul = 0, $sz = 0, $tmp = 0, $graph = 0, $0 = 0, $rankdir = 0, $1 = 0, $and = 0, $and_lobit = 0, $2 = 0, $label = 0, $3 = 0, $text = 0, $4 = 0, $call = 0, $cmp = 0, $call_op = 0, $add = 0, $call2 = 0, $call3 = 0, $tobool4 = 0, $5 = 0, $text7 = 0, $6 = 0, $call8 = 0, $call9 = 0, $info_0 = 0, $width = 0, $7 = 0.0, $mul11 = 0.0, $cmp12 = 0, $add17 = 0.0, $sub = 0.0, $add17_sink = 0.0, $conv = 0, $conv25 = 0.0, $x = 0, $height = 0, $8 = 0.0, $mul27 = 0.0, $cmp28 = 0, $add34 = 0.0, $sub40 = 0.0, $add34_sink = 0.0, $conv35 = 0, $conv44 = 0.0, $y = 0, $9 = 0, $10 = 0, $call45 = 0, $call46 = 0, $tobool47 = 0, $x61 = 0, $11 = 0.0, $12 = 0.0, $cmp63 = 0, $_ = 0.0, $y74 = 0, $13 = 0.0, $14 = 0.0, $cmp76 = 0, $cond84 = 0.0, $15 = 0, $call87 = 0, $call88 = 0, $conv89 = 0, $16 = 0.0, $div = 0.0, $17 = 0.0, $div93 = 0.0, $x96 = 0, $18 = 0.0, $div97 = 0.0, $y101 = 0, $19 = 0.0, $add102 = 0.0, $div103 = 0.0, $20 = 0, $shape_info = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ul = __stackBase__ | 0;
    $sz = __stackBase__ + 16 | 0;
    $tmp = __stackBase__ + 32 | 0;
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $rankdir = $0 + 156 | 0;
    $1 = HEAP32[$rankdir >> 2] | 0;
    $and = $1 >>> 2;
    $and_lobit = $and & 1;
    $2 = $and_lobit ^ 1;
    $label = $n + 120 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $text = $3 | 0;
    $4 = HEAP32[$text >> 2] | 0;
    HEAP32[1158] = $4;
    $call = _strlen($4 | 0) | 0;
    $cmp = ($call | 0) > 1;
    $call_op = $call + 1 | 0;
    $add = $cmp ? $call_op : 2;
    $call2 = _zmalloc($add) | 0;
    $call3 = _parse_reclbl($n, $2, 1, $call2) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 3;
      break;
    } else {
      $info_0 = $call3;
      label = 4;
      break;
    }
   case 3:
    $5 = HEAP32[$label >> 2] | 0;
    $text7 = $5 | 0;
    $6 = HEAP32[$text7 >> 2] | 0;
    $call8 = _agerr(1, 100528, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $6, tempInt) | 0) | 0;
    HEAP32[1158] = 100032;
    $call9 = _parse_reclbl($n, $2, 1, $call2) | 0;
    $info_0 = $call9;
    label = 4;
    break;
   case 4:
    _free($call2);
    _size_reclbl($tmp, $n, $info_0);
    $width = $n + 48 | 0;
    $7 = +HEAPF64[$width >> 3];
    $mul11 = $7 * 72.0;
    $cmp12 = $mul11 < 0.0;
    if ($cmp12) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add17 = $mul11 + .5;
    $add17_sink = $add17;
    label = 7;
    break;
   case 6:
    $sub = $mul11 + -.5;
    $add17_sink = $sub;
    label = 7;
    break;
   case 7:
    $conv = ~~$add17_sink;
    $conv25 = +($conv | 0);
    $x = $sz | 0;
    HEAPF64[$x >> 3] = $conv25;
    $height = $n + 56 | 0;
    $8 = +HEAPF64[$height >> 3];
    $mul27 = $8 * 72.0;
    $cmp28 = $mul27 < 0.0;
    if ($cmp28) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add34 = $mul27 + .5;
    $add34_sink = $add34;
    label = 10;
    break;
   case 9:
    $sub40 = $mul27 + -.5;
    $add34_sink = $sub40;
    label = 10;
    break;
   case 10:
    $conv35 = ~~$add34_sink;
    $conv44 = +($conv35 | 0);
    $y = $sz + 8 | 0;
    HEAPF64[$y >> 3] = $conv44;
    $9 = $n | 0;
    $10 = HEAP32[41602] | 0;
    $call45 = _late_string($9, $10, 100880) | 0;
    $call46 = _mapbool($call45) | 0;
    $tobool47 = $call46 << 24 >> 24 == 0;
    if ($tobool47) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $x61 = $info_0 | 0;
    $11 = +HEAPF64[$x61 >> 3];
    $12 = +HEAPF64[$x >> 3];
    $cmp63 = $11 > $12;
    $_ = $cmp63 ? $11 : $12;
    HEAPF64[$x >> 3] = $_;
    $y74 = $info_0 + 8 | 0;
    $13 = +HEAPF64[$y74 >> 3];
    $14 = +HEAPF64[$y >> 3];
    $cmp76 = $13 > $14;
    $cond84 = $cmp76 ? $13 : $14;
    HEAPF64[$y >> 3] = $cond84;
    label = 12;
    break;
   case 12:
    $15 = HEAP32[41582] | 0;
    $call87 = _late_string($9, $15, 100880) | 0;
    $call88 = _mapbool($call87) | 0;
    $conv89 = $call88 & 255;
    _resize_reclbl($info_0, $sz, $conv89);
    $16 = +HEAPF64[$x >> 3];
    $div = $16 * -.5;
    $17 = +HEAPF64[$y >> 3];
    $div93 = $17 * .5;
    _pointfof795($ul, $div, $div93);
    _pos_reclbl($info_0, $ul, 15);
    $x96 = $info_0 | 0;
    $18 = +HEAPF64[$x96 >> 3];
    $div97 = $18 / 72.0;
    HEAPF64[$width >> 3] = $div97;
    $y101 = $info_0 + 8 | 0;
    $19 = +HEAPF64[$y101 >> 3];
    $add102 = $19 + 1.0;
    $div103 = $add102 / 72.0;
    HEAPF64[$height >> 3] = $div103;
    $20 = $info_0;
    $shape_info = $n + 28 | 0;
    HEAP32[$shape_info >> 2] = $20;
    STACKTOP = __stackBase__;
    return;
  }
}
function _point_init($n) {
  $n = $n | 0;
  var $call = 0, $shape = 0, $0 = 0, $polygon = 0, $1 = 0, $peripheries1 = 0, $2 = 0, $3 = 0, $4 = 0, $call2 = 0.0, $5 = 0, $call3 = 0.0, $cmp = 0, $cond = 0.0, $cmp4 = 0, $cmp5 = 0, $or_cond = 0, $height = 0, $width = 0, $width11 = 0, $width13 = 0, $6 = 0.0, $mul = 0.0, $7 = 0, $call14 = 0, $cmp15 = 0, $phitmp = 0, $outp_0 = 0, $call21 = 0, $8 = 0, $div = 0.0, $sub = 0.0, $x23 = 0, $y27 = 0, $9 = 0, $P_sroa_0_0__idx = 0, $10 = 0, $P_sroa_1_8__idx24 = 0, $11 = 0, $cmp29 = 0, $j_056 = 0, $i_055 = 0, $P_sroa_0_054 = 0.0, $P_sroa_1_053 = 0.0, $add = 0.0, $add34 = 0.0, $sub36 = 0.0, $x38 = 0, $sub40 = 0.0, $y42 = 0, $inc51 = 0, $x45 = 0, $y48 = 0, $inc49 = 0, $inc50 = 0, $cmp31 = 0, $mul52 = 0.0, $sz_0 = 0.0, $regular = 0, $peripheries54 = 0, $12 = 0, $sides55 = 0, $13 = 0, $orientation = 0, $vertices56 = 0, $14 = 0, $div57 = 0.0, $shape_info = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(48) | 0;
    $shape = $n + 24 | 0;
    $0 = HEAP32[$shape >> 2] | 0;
    $polygon = $0 + 8 | 0;
    $1 = HEAP32[$polygon >> 2] | 0;
    $peripheries1 = $1 + 4 | 0;
    $2 = HEAP32[$peripheries1 >> 2] | 0;
    $3 = $n | 0;
    $4 = HEAP32[41552] | 0;
    $call2 = +_late_double($3, $4, 1.7976931348623157e+308, 3.0e-4);
    $5 = HEAP32[41592] | 0;
    $call3 = +_late_double($3, $5, 1.7976931348623157e+308, 3.0e-4);
    $cmp = $call2 < $call3;
    $cond = $cmp ? $call2 : $call3;
    $cmp4 = $cond == 1.7976931348623157e+308;
    $cmp5 = $call3 == 1.7976931348623157e+308;
    $or_cond = $cmp4 & $cmp5;
    $height = $n + 56 | 0;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAPF64[$height >> 3] = .05;
    $width = $n + 48 | 0;
    HEAPF64[$width >> 3] = .05;
    label = 5;
    break;
   case 4:
    HEAPF64[$height >> 3] = $cond;
    $width11 = $n + 48 | 0;
    HEAPF64[$width11 >> 3] = $cond;
    label = 5;
    break;
   case 5:
    $width13 = $n + 48 | 0;
    $6 = +HEAPF64[$width13 >> 3];
    $mul = $6 * 72.0;
    $7 = HEAP32[41574] | 0;
    $call14 = _late_int($3, $7, $2, 0) | 0;
    $cmp15 = ($call14 | 0) < 1;
    $phitmp = $call14 << 5;
    $outp_0 = $cmp15 ? 32 : $phitmp;
    $call21 = _zmalloc($outp_0) | 0;
    $8 = $call21;
    $div = $mul * .5;
    $sub = -0.0 - $div;
    $x23 = $call21;
    HEAPF64[$x23 >> 3] = $sub;
    $y27 = $call21 + 8 | 0;
    $9 = $y27;
    HEAPF64[$9 >> 3] = $sub;
    $P_sroa_0_0__idx = $call21 + 16 | 0;
    $10 = $P_sroa_0_0__idx;
    HEAPF64[$10 >> 3] = $div;
    $P_sroa_1_8__idx24 = $call21 + 24 | 0;
    $11 = $P_sroa_1_8__idx24;
    HEAPF64[$11 >> 3] = $div;
    $cmp29 = ($call14 | 0) > 1;
    if ($cmp29) {
      $P_sroa_1_053 = $div;
      $P_sroa_0_054 = $div;
      $i_055 = 2;
      $j_056 = 1;
      label = 6;
      break;
    } else {
      $sz_0 = $mul;
      label = 8;
      break;
    }
   case 6:
    $add = $P_sroa_0_054 + 4.0;
    $add34 = $P_sroa_1_053 + 4.0;
    $sub36 = -0.0 - $add;
    $x38 = $8 + ($i_055 << 4) | 0;
    HEAPF64[$x38 >> 3] = $sub36;
    $sub40 = -0.0 - $add34;
    $y42 = $8 + ($i_055 << 4) + 8 | 0;
    HEAPF64[$y42 >> 3] = $sub40;
    $inc51 = $i_055 | 1;
    $x45 = $8 + ($inc51 << 4) | 0;
    HEAPF64[$x45 >> 3] = $add;
    $y48 = $8 + ($inc51 << 4) + 8 | 0;
    HEAPF64[$y48 >> 3] = $add34;
    $inc49 = $i_055 + 2 | 0;
    $inc50 = $j_056 + 1 | 0;
    $cmp31 = ($inc50 | 0) < ($call14 | 0);
    if ($cmp31) {
      $P_sroa_1_053 = $add34;
      $P_sroa_0_054 = $add;
      $i_055 = $inc49;
      $j_056 = $inc50;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $mul52 = $add * 2.0;
    $sz_0 = $mul52;
    label = 8;
    break;
   case 8:
    $regular = $call;
    HEAP32[$regular >> 2] = 1;
    $peripheries54 = $call + 4 | 0;
    $12 = $peripheries54;
    HEAP32[$12 >> 2] = $call14;
    $sides55 = $call + 8 | 0;
    $13 = $sides55;
    HEAP32[$13 >> 2] = 2;
    $orientation = $call + 16 | 0;
    $vertices56 = $call + 44 | 0;
    $14 = $vertices56;
    _memset($orientation | 0, 0, 24);
    HEAP32[$14 >> 2] = $8;
    $div57 = $sz_0 / 72.0;
    HEAPF64[$width13 >> 3] = $div57;
    HEAPF64[$height >> 3] = $div57;
    $shape_info = $n + 28 | 0;
    HEAP32[$shape_info >> 2] = $call;
    return;
  }
}
function _find_user_shape($name) {
  $name = $name | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $cmp6 = 0, $or_cond = 0, $2 = 0, $3 = 0, $4 = 0, $i_07 = 0, $arrayidx = 0, $5 = 0, $name1 = 0, $6 = 0, $7 = 0, $cmp3 = 0, $call = 0, $tobool7 = 0, $inc = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41230] | 0;
    $tobool = ($0 | 0) != 0;
    $1 = HEAP32[41622] | 0;
    $cmp6 = ($1 | 0) > 0;
    $or_cond = $tobool & $cmp6;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 3:
    $2 = HEAP32[41230] | 0;
    $3 = HEAP8[$name] | 0;
    $4 = HEAP32[41622] | 0;
    $i_07 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx = $2 + ($i_07 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $name1 = $5 | 0;
    $6 = HEAP32[$name1 >> 2] | 0;
    $7 = HEAP8[$6] | 0;
    $cmp3 = $7 << 24 >> 24 == $3 << 24 >> 24;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call = _strcmp($6 | 0, $name | 0) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      $retval_0 = $5;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $inc = $i_07 + 1 | 0;
    $cmp = ($inc | 0) < ($4 | 0);
    if ($cmp) {
      $i_07 = $inc;
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _bind_shape($name, $np) {
  $name = $name | 0;
  $np = $np | 0;
  var $0 = 0, $call = 0, $call1 = 0, $tobool = 0, $1 = 0, $cmp = 0, $call5 = 0, $tobool6 = 0, $name_addr_0 = 0, $2 = 0, $cmp9 = 0, $call12 = 0, $tobool13 = 0, $3 = 0, $tobool1614 = 0, $4 = 0, $5 = 0, $ptr_015 = 0, $6 = 0, $cmp20 = 0, $call24 = 0, $tobool25 = 0, $incdec_ptr = 0, $name15 = 0, $7 = 0, $tobool16 = 0, $cmp29 = 0, $call32 = 0, $rv_1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $np | 0;
    $call = _agget($0, 120672) | 0;
    $call1 = _safefile($call) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      $name_addr_0 = $name;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$name] | 0;
    $cmp = $1 << 24 >> 24 == 101;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call5 = _strcmp($name | 0, 115056) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      $name_addr_0 = $name;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $name_addr_0 = 110216;
    label = 6;
    break;
   case 6:
    $2 = HEAP8[$name_addr_0] | 0;
    $cmp9 = $2 << 24 >> 24 == 99;
    if ($cmp9) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call12 = _strcmp($name_addr_0 | 0, 110216) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 14;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $3 = HEAP32[41364] | 0;
    $tobool1614 = ($3 | 0) == 0;
    if ($tobool1614) {
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $4 = HEAP8[$name_addr_0] | 0;
    $ptr_015 = 165456;
    $5 = $3;
    label = 10;
    break;
   case 10:
    $6 = HEAP8[$5] | 0;
    $cmp20 = $6 << 24 >> 24 == $4 << 24 >> 24;
    if ($cmp20) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $call24 = _strcmp($5 | 0, $name_addr_0 | 0) | 0;
    $tobool25 = ($call24 | 0) == 0;
    if ($tobool25) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $incdec_ptr = $ptr_015 + 16 | 0;
    $name15 = $incdec_ptr | 0;
    $7 = HEAP32[$name15 >> 2] | 0;
    $tobool16 = ($7 | 0) == 0;
    if ($tobool16) {
      label = 14;
      break;
    } else {
      $ptr_015 = $incdec_ptr;
      $5 = $7;
      label = 10;
      break;
    }
   case 13:
    $cmp29 = ($ptr_015 | 0) == 0;
    if ($cmp29) {
      label = 14;
      break;
    } else {
      $rv_1 = $ptr_015;
      label = 15;
      break;
    }
   case 14:
    $call32 = _user_shape($name_addr_0) | 0;
    $rv_1 = $call32;
    label = 15;
    break;
   case 15:
    return $rv_1 | 0;
  }
  return 0;
}
function _user_shape($name) {
  $name = $name | 0;
  var $call = 0, $tobool = 0, $0 = 0, $inc = 0, $1 = 0, $tobool1 = 0, $2 = 0, $mul = 0, $call2 = 0, $mul3 = 0, $call4 = 0, $call2_sink = 0, $3 = 0, $call5 = 0, $4 = 0, $5 = 0, $arrayidx = 0, $call6 = 0, $name7 = 0, $6 = 0, $cmp = 0, $7 = 0, $cmp9 = 0, $call12 = 0, $tobool13 = 0, $8 = 0, $9 = 0, $call16 = 0, $10 = 0, $11 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _find_user_shape($name) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = $call;
      label = 11;
      break;
    }
   case 3:
    $0 = HEAP32[41622] | 0;
    $inc = $0 + 1 | 0;
    HEAP32[41622] = $inc;
    $1 = HEAP32[41230] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = $1;
    $mul = $inc << 2;
    $call2 = _grealloc($2, $mul) | 0;
    $call2_sink = $call2;
    label = 6;
    break;
   case 5:
    $mul3 = $inc << 2;
    $call4 = _gmalloc($mul3) | 0;
    $call2_sink = $call4;
    label = 6;
    break;
   case 6:
    $3 = $call2_sink;
    HEAP32[41230] = $3;
    $call5 = _zmalloc(16) | 0;
    $4 = $call5;
    $5 = HEAP32[41230] | 0;
    $arrayidx = $5 + ($0 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $4;
    HEAP32[$call5 >> 2] = HEAP32[41364] | 0;
    HEAP32[$call5 + 4 >> 2] = HEAP32[41365] | 0;
    HEAP32[$call5 + 8 >> 2] = HEAP32[41366] | 0;
    HEAP32[$call5 + 12 >> 2] = HEAP32[41367] | 0;
    $call6 = _strdup($name | 0) | 0;
    $name7 = $call5;
    HEAP32[$name7 >> 2] = $call6;
    $6 = HEAP32[41648] | 0;
    $cmp = ($6 | 0) == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $7 = HEAP8[$name] | 0;
    $cmp9 = $7 << 24 >> 24 == 99;
    if ($cmp9) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $call12 = _strcmp($name | 0, 110216) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $8 = HEAP32[41364] | 0;
    $9 = HEAP32[$name7 >> 2] | 0;
    $call16 = _agerr(0, 90624, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $8, HEAP32[tempInt + 8 >> 2] = $9, tempInt) | 0) | 0;
    $10 = $call5 + 12 | 0;
    HEAP8[$10] = 0;
    $retval_0 = $4;
    label = 11;
    break;
   case 10:
    $11 = $call5 + 12 | 0;
    HEAP8[$11] = 1;
    $retval_0 = $4;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _resolvePort($agg_result, $n, $other, $oldport) {
  $agg_result = $agg_result | 0;
  $n = $n | 0;
  $other = $other | 0;
  $oldport = $oldport | 0;
  var $rv = 0, $call = 0, $3 = 0, $4 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  $rv = __stackBase__ | 0;
  $call = _closestSide($n, $other, $oldport) | 0;
  HEAP32[$rv + 36 >> 2] = HEAP32[$oldport + 36 >> 2] | 0;
  _compassPort($n, HEAP32[$oldport + 24 >> 2] | 0, $rv, $call, HEAPU8[$oldport + 33 | 0] | 0, 0);
  $3 = $agg_result;
  $4 = $rv;
  HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
  HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
  HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
  HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
  HEAP32[$3 + 16 >> 2] = HEAP32[$4 + 16 >> 2] | 0;
  HEAP32[$3 + 20 >> 2] = HEAP32[$4 + 20 >> 2] | 0;
  HEAP32[$3 + 24 >> 2] = HEAP32[$4 + 24 >> 2] | 0;
  HEAP32[$3 + 28 >> 2] = HEAP32[$4 + 28 >> 2] | 0;
  HEAP32[$3 + 32 >> 2] = HEAP32[$4 + 32 >> 2] | 0;
  HEAP32[$3 + 36 >> 2] = HEAP32[$4 + 36 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _closestSide($n, $other, $oldport) {
  $n = $n | 0;
  $other = $other | 0;
  $oldport = $oldport | 0;
  var $pt = 0, $opt = 0, $graph = 0, $0 = 0, $root = 0, $1 = 0, $rankdir = 0, $2 = 0, $and = 0, $coord = 0, $coord3 = 0, $side = 0, $3 = 0, $conv = 0, $bp = 0, $4 = 0, $tobool = 0, $b_sroa_0_0__idx = 0, $b_sroa_0_0_copyload = 0.0, $b_sroa_1_8__idx17 = 0, $b_sroa_1_8_copyload = 0.0, $b_sroa_2_16__idx20 = 0, $b_sroa_2_16_copyload = 0.0, $b_sroa_3_24__idx25 = 0, $b_sroa_3_24_copyload = 0.0, $5 = 0, $rankdir11 = 0, $6 = 0, $and13 = 0, $tobool14 = 0, $ht = 0, $7 = 0.0, $div = 0.0, $sub35 = 0.0, $lw39 = 0, $8 = 0.0, $sub44 = 0.0, $sub35_sub44 = 0.0, $sub44_sub35 = 0.0, $_div = 0.0, $div_ = 0.0, $b_sroa_1_0 = 0.0, $b_sroa_0_0 = 0.0, $b_sroa_2_0 = 0.0, $b_sroa_3_0 = 0.0, $x106 = 0, $9 = 0, $y109 = 0, $10 = 0, $x113 = 0, $11 = 0, $y119 = 0, $12 = 0, $conv70 = 0, $add76 = 0.0, $div77 = 0.0, $conv78 = 0, $conv83 = 0, $add89 = 0.0, $div90 = 0.0, $conv91 = 0, $conv96 = 0, $add102 = 0.0, $div103 = 0.0, $conv104 = 0, $and51 = 0, $cmp52 = 0, $add = 0.0, $div64 = 0.0, $conv65 = 0, $conv58 = 0, $add108 = 0, $add111 = 0, $sub114 = 0, $sub120 = 0, $mul124 = 0, $mul = 0, $add125 = 0, $rv_1 = 0, $mind_1 = 0, $and51_1 = 0, $cmp52_1 = 0, $retval_0 = 0, $add108_1 = 0, $add111_1 = 0, $sub114_1 = 0, $mul_1 = 0, $sub120_1 = 0, $mul124_1 = 0, $add125_1 = 0, $tobool126_1 = 0, $cmp128_1 = 0, $or_cond_1 = 0, $_rv_1 = 0, $add125_1_mind_1 = 0, $rv_1_1 = 0, $mind_1_1 = 0, $and51_2 = 0, $cmp52_2 = 0, $add108_2 = 0, $add111_2 = 0, $sub114_2 = 0, $mul_2 = 0, $sub120_2 = 0, $mul124_2 = 0, $add125_2 = 0, $tobool126_2 = 0, $cmp128_2 = 0, $or_cond_2 = 0, $_rv_1_1 = 0, $add125_2_mind_1_1 = 0, $rv_1_2 = 0, $mind_1_2 = 0, $and51_3 = 0, $cmp52_3 = 0, $add108_3 = 0, $add111_3 = 0, $sub114_3 = 0, $mul_3 = 0, $sub120_3 = 0, $mul124_3 = 0, $add125_3 = 0, $tobool126_3 = 0, $cmp128_3 = 0, $or_cond_3 = 0, $_rv_1_2 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pt = __stackBase__ | 0;
    $opt = __stackBase__ + 8 | 0;
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $root = $0 + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $rankdir = $1 + 156 | 0;
    $2 = HEAP32[$rankdir >> 2] | 0;
    $and = $2 & 3;
    $coord = $n + 32 | 0;
    _cvtPt($pt, $coord, $and);
    $coord3 = $other + 32 | 0;
    _cvtPt($opt, $coord3, $and);
    $side = $oldport + 33 | 0;
    $3 = HEAP8[$side] | 0;
    $conv = $3 & 255;
    if (($3 << 24 >> 24 | 0) == 15 | ($3 << 24 >> 24 | 0) == 0) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $bp = $oldport + 24 | 0;
    $4 = HEAP32[$bp >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $b_sroa_0_0__idx = $4 | 0;
    $b_sroa_0_0_copyload = +HEAPF64[$b_sroa_0_0__idx >> 3];
    $b_sroa_1_8__idx17 = $4 + 8 | 0;
    $b_sroa_1_8_copyload = +HEAPF64[$b_sroa_1_8__idx17 >> 3];
    $b_sroa_2_16__idx20 = $4 + 16 | 0;
    $b_sroa_2_16_copyload = +HEAPF64[$b_sroa_2_16__idx20 >> 3];
    $b_sroa_3_24__idx25 = $4 + 24 | 0;
    $b_sroa_3_24_copyload = +HEAPF64[$b_sroa_3_24__idx25 >> 3];
    $b_sroa_3_0 = $b_sroa_3_24_copyload;
    $b_sroa_2_0 = $b_sroa_2_16_copyload;
    $b_sroa_0_0 = $b_sroa_0_0_copyload;
    $b_sroa_1_0 = $b_sroa_1_8_copyload;
    label = 6;
    break;
   case 5:
    $5 = HEAP32[$graph >> 2] | 0;
    $rankdir11 = $5 + 156 | 0;
    $6 = HEAP32[$rankdir11 >> 2] | 0;
    $and13 = $6 & 1;
    $tobool14 = ($and13 | 0) == 0;
    $ht = $n + 96 | 0;
    $7 = +HEAPF64[$ht >> 3];
    $div = $7 * .5;
    $sub35 = -0.0 - $div;
    $lw39 = $n + 104 | 0;
    $8 = +HEAPF64[$lw39 >> 3];
    $sub44 = -0.0 - $8;
    $sub35_sub44 = $tobool14 ? $sub35 : $sub44;
    $sub44_sub35 = $tobool14 ? $sub44 : $sub35;
    $_div = $tobool14 ? $8 : $div;
    $div_ = $tobool14 ? $div : $8;
    $b_sroa_3_0 = $div_;
    $b_sroa_2_0 = $_div;
    $b_sroa_0_0 = $sub44_sub35;
    $b_sroa_1_0 = $sub35_sub44;
    label = 6;
    break;
   case 6:
    $x106 = $pt | 0;
    $9 = HEAP32[$x106 >> 2] | 0;
    $y109 = $pt + 4 | 0;
    $10 = HEAP32[$y109 >> 2] | 0;
    $x113 = $opt | 0;
    $11 = HEAP32[$x113 >> 2] | 0;
    $y119 = $opt + 4 | 0;
    $12 = HEAP32[$y119 >> 2] | 0;
    $conv70 = ~~$b_sroa_2_0;
    $add76 = $b_sroa_1_0 + $b_sroa_3_0;
    $div77 = $add76 * .5;
    $conv78 = ~~$div77;
    $conv83 = ~~$b_sroa_3_0;
    $add89 = $b_sroa_0_0 + $b_sroa_2_0;
    $div90 = $add89 * .5;
    $conv91 = ~~$div90;
    $conv96 = ~~$b_sroa_0_0;
    $add102 = $b_sroa_1_0 + $b_sroa_3_0;
    $div103 = $add102 * .5;
    $conv104 = ~~$div103;
    $and51 = $conv & 1;
    $cmp52 = ($and51 | 0) == 0;
    if ($cmp52) {
      $mind_1 = 0;
      $rv_1 = 0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add = $b_sroa_0_0 + $b_sroa_2_0;
    $div64 = $add * .5;
    $conv65 = ~~$div64;
    $conv58 = ~~$b_sroa_1_0;
    $add108 = $9 + $conv65 | 0;
    $add111 = $10 + $conv58 | 0;
    $sub114 = $add108 - $11 | 0;
    $sub120 = $add111 - $12 | 0;
    $mul124 = Math_imul($sub120, $sub120);
    $mul = Math_imul($sub114, $sub114);
    $add125 = $mul124 + $mul | 0;
    $mind_1 = $add125;
    $rv_1 = 106048;
    label = 8;
    break;
   case 8:
    $and51_1 = $conv & 2;
    $cmp52_1 = ($and51_1 | 0) == 0;
    if ($cmp52_1) {
      $mind_1_1 = $mind_1;
      $rv_1_1 = $rv_1;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
   case 10:
    $add108_1 = $9 + $conv70 | 0;
    $add111_1 = $10 + $conv78 | 0;
    $sub114_1 = $add108_1 - $11 | 0;
    $mul_1 = Math_imul($sub114_1, $sub114_1);
    $sub120_1 = $add111_1 - $12 | 0;
    $mul124_1 = Math_imul($sub120_1, $sub120_1);
    $add125_1 = $mul124_1 + $mul_1 | 0;
    $tobool126_1 = ($rv_1 | 0) == 0;
    $cmp128_1 = ($add125_1 | 0) < ($mind_1 | 0);
    $or_cond_1 = $tobool126_1 | $cmp128_1;
    $_rv_1 = $or_cond_1 ? 102144 : $rv_1;
    $add125_1_mind_1 = $or_cond_1 ? $add125_1 : $mind_1;
    $mind_1_1 = $add125_1_mind_1;
    $rv_1_1 = $_rv_1;
    label = 11;
    break;
   case 11:
    $and51_2 = $conv & 4;
    $cmp52_2 = ($and51_2 | 0) == 0;
    if ($cmp52_2) {
      $mind_1_2 = $mind_1_1;
      $rv_1_2 = $rv_1_1;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add108_2 = $9 + $conv91 | 0;
    $add111_2 = $10 + $conv83 | 0;
    $sub114_2 = $add108_2 - $11 | 0;
    $mul_2 = Math_imul($sub114_2, $sub114_2);
    $sub120_2 = $add111_2 - $12 | 0;
    $mul124_2 = Math_imul($sub120_2, $sub120_2);
    $add125_2 = $mul124_2 + $mul_2 | 0;
    $tobool126_2 = ($rv_1_1 | 0) == 0;
    $cmp128_2 = ($add125_2 | 0) < ($mind_1_1 | 0);
    $or_cond_2 = $tobool126_2 | $cmp128_2;
    $_rv_1_1 = $or_cond_2 ? 97864 : $rv_1_1;
    $add125_2_mind_1_1 = $or_cond_2 ? $add125_2 : $mind_1_1;
    $mind_1_2 = $add125_2_mind_1_1;
    $rv_1_2 = $_rv_1_1;
    label = 13;
    break;
   case 13:
    $and51_3 = $conv & 8;
    $cmp52_3 = ($and51_3 | 0) == 0;
    if ($cmp52_3) {
      $retval_0 = $rv_1_2;
      label = 9;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $add108_3 = $9 + $conv96 | 0;
    $add111_3 = $10 + $conv104 | 0;
    $sub114_3 = $add108_3 - $11 | 0;
    $mul_3 = Math_imul($sub114_3, $sub114_3);
    $sub120_3 = $add111_3 - $12 | 0;
    $mul124_3 = Math_imul($sub120_3, $sub120_3);
    $add125_3 = $mul124_3 + $mul_3 | 0;
    $tobool126_3 = ($rv_1_2 | 0) == 0;
    $cmp128_3 = ($add125_3 | 0) < ($mind_1_2 | 0);
    $or_cond_3 = $tobool126_3 | $cmp128_3;
    $_rv_1_2 = $or_cond_3 ? 94128 : $rv_1_2;
    STACKTOP = __stackBase__;
    return $_rv_1_2 | 0;
  }
  return 0;
}
function _compassPort($n, $bp, $pp, $compass, $sides, $ictxt) {
  $n = $n | 0;
  $bp = $bp | 0;
  $pp = $pp | 0;
  $compass = $compass | 0;
  $sides = $sides | 0;
  $ictxt = $ictxt | 0;
  var $p = 0, $tmp155 = 0, $tobool = 0, $b_sroa_0_0__idx = 0, $b_sroa_0_0_copyload = 0.0, $b_sroa_1_8__idx12 = 0, $b_sroa_1_8_copyload = 0.0, $b_sroa_2_16__idx14 = 0, $b_sroa_2_16_copyload = 0.0, $b_sroa_3_24__idx20 = 0, $b_sroa_3_24_copyload = 0.0, $add = 0.0, $div = 0.0, $add5 = 0.0, $div6 = 0.0, $graph = 0, $0 = 0, $1 = 0, $rankdir = 0, $2 = 0, $and9 = 0, $tobool10 = 0, $ht = 0, $3 = 0.0, $div13 = 0.0, $lw40 = 0, $4 = 0.0, $_div13 = 0.0, $div13_ = 0.0, $b_sroa_0_0 = 0.0, $b_sroa_1_0 = 0.0, $b_sroa_2_1 = 0.0, $b_sroa_1_1 = 0.0, $b_sroa_0_1 = 0.0, $b_sroa_3_1 = 0.0, $defined_0 = 0, $ctr_sroa_0_0__idx = 0, $ctr_sroa_0_0_copyload = 0.0, $ctr_sroa_1_8__idx8 = 0, $ctr_sroa_1_8_copyload = 0.0, $tobool49 = 0, $5 = 0, $tobool50 = 0, $conv = 0, $incdec_ptr = 0, $6 = 0, $tobool53 = 0, $and59 = 0, $7 = 0, $conv65 = 0, $tobool67 = 0, $and75 = 0, $tobool77 = 0, $and85 = 0, $tobool87 = 0, $and95 = 0, $8 = 0, $tobool99 = 0, $and105 = 0, $9 = 0, $conv111 = 0, $tobool113 = 0, $and121 = 0, $tobool123 = 0, $and131 = 0, $tobool133 = 0, $and141 = 0, $rv_0 = 0, $theta_0 = 0.0, $constrain_0 = 0, $dyna_0 = 0, $side_0 = 0, $clip_0 = 0, $defined_1 = 0, $graph151 = 0, $10 = 0, $rankdir153 = 0, $11 = 0, $and154 = 0, $mul = 0, $12 = 0, $13 = 0, $tobool156 = 0, $conv158 = 0, $side159 = 0, $14 = 0, $rankdir163 = 0, $15 = 0, $and164 = 0, $call = 0, $conv165 = 0, $side166 = 0, $bp168 = 0, $16 = 0.0, $cmp = 0, $add172 = 0.0, $sub175 = 0.0, $add172_sink = 0.0, $conv173 = 0, $conv177 = 0.0, $x179 = 0, $17 = 0.0, $cmp181 = 0, $add185 = 0.0, $sub189 = 0.0, $add185_sink = 0.0, $conv186 = 0, $conv193 = 0.0, $y195 = 0, $18 = 0, $rankdir198 = 0, $19 = 0, $and199 = 0, $call200 = 0.0, $theta201 = 0, $20 = 0.0, $cmp203 = 0, $21 = 0.0, $cmp207 = 0, $order = 0, $22 = 0.0, $23 = 0.0, $call214 = 0.0, $add215 = 0.0, $cmp216 = 0, $sub219 = 0.0, $angle_0 = 0.0, $mul221 = 0.0, $div222 = 0.0, $conv223 = 0, $conv224 = 0, $order225 = 0, $constrained = 0, $defined227 = 0, $clip228 = 0, $dyna229 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = __stackBase__ | 0;
    $tmp155 = __stackBase__ + 16 | 0;
    $tobool = ($bp | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $b_sroa_0_0__idx = $bp | 0;
    $b_sroa_0_0_copyload = +HEAPF64[$b_sroa_0_0__idx >> 3];
    $b_sroa_1_8__idx12 = $bp + 8 | 0;
    $b_sroa_1_8_copyload = +HEAPF64[$b_sroa_1_8__idx12 >> 3];
    $b_sroa_2_16__idx14 = $bp + 16 | 0;
    $b_sroa_2_16_copyload = +HEAPF64[$b_sroa_2_16__idx14 >> 3];
    $b_sroa_3_24__idx20 = $bp + 24 | 0;
    $b_sroa_3_24_copyload = +HEAPF64[$b_sroa_3_24__idx20 >> 3];
    $add = $b_sroa_0_0_copyload + $b_sroa_2_16_copyload;
    $div = $add * .5;
    $add5 = $b_sroa_1_8_copyload + $b_sroa_3_24_copyload;
    $div6 = $add5 * .5;
    _pointfof795($p, $div, $div6);
    $defined_0 = 1;
    $b_sroa_3_1 = $b_sroa_3_24_copyload;
    $b_sroa_0_1 = $b_sroa_0_0_copyload;
    $b_sroa_1_1 = $b_sroa_1_8_copyload;
    $b_sroa_2_1 = $b_sroa_2_16_copyload;
    label = 5;
    break;
   case 4:
    $graph = $n + 20 | 0;
    $0 = $p;
    _memset($0 | 0, 0, 16);
    $1 = HEAP32[$graph >> 2] | 0;
    $rankdir = $1 + 156 | 0;
    $2 = HEAP32[$rankdir >> 2] | 0;
    $and9 = $2 & 1;
    $tobool10 = ($and9 | 0) == 0;
    $ht = $n + 96 | 0;
    $3 = +HEAPF64[$ht >> 3];
    $div13 = $3 * .5;
    $lw40 = $n + 104 | 0;
    $4 = +HEAPF64[$lw40 >> 3];
    $_div13 = $tobool10 ? $4 : $div13;
    $div13_ = $tobool10 ? $div13 : $4;
    $b_sroa_0_0 = -0.0 - $_div13;
    $b_sroa_1_0 = -0.0 - $div13_;
    $defined_0 = 0;
    $b_sroa_3_1 = $div13_;
    $b_sroa_0_1 = $b_sroa_0_0;
    $b_sroa_1_1 = $b_sroa_1_0;
    $b_sroa_2_1 = $_div13;
    label = 5;
    break;
   case 5:
    $ctr_sroa_0_0__idx = $p | 0;
    $ctr_sroa_0_0_copyload = +HEAPF64[$ctr_sroa_0_0__idx >> 3];
    $ctr_sroa_1_8__idx8 = $p + 8 | 0;
    $ctr_sroa_1_8_copyload = +HEAPF64[$ctr_sroa_1_8__idx8 >> 3];
    $tobool49 = ($compass | 0) == 0;
    if ($tobool49) {
      $defined_1 = $defined_0;
      $clip_0 = 1;
      $side_0 = 0;
      $dyna_0 = 0;
      $constrain_0 = 0;
      $theta_0 = 0.0;
      $rv_0 = 0;
      label = 42;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $5 = HEAP8[$compass] | 0;
    $tobool50 = $5 << 24 >> 24 == 0;
    if ($tobool50) {
      $defined_1 = $defined_0;
      $clip_0 = 1;
      $side_0 = 0;
      $dyna_0 = 0;
      $constrain_0 = 0;
      $theta_0 = 0.0;
      $rv_0 = 0;
      label = 42;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $conv = $5 << 24 >> 24;
    $incdec_ptr = $compass + 1 | 0;
    if (($conv | 0) == 101) {
      label = 8;
      break;
    } else if (($conv | 0) == 115) {
      label = 10;
      break;
    } else if (($conv | 0) == 119) {
      label = 24;
      break;
    } else if (($conv | 0) == 110) {
      label = 26;
      break;
    } else if (($conv | 0) == 95) {
      label = 40;
      break;
    } else if (($conv | 0) == 99) {
      $defined_1 = $defined_0;
      $clip_0 = 1;
      $side_0 = 0;
      $dyna_0 = 0;
      $constrain_0 = 0;
      $theta_0 = 0.0;
      $rv_0 = 0;
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 8:
    $6 = HEAP8[$incdec_ptr] | 0;
    $tobool53 = $6 << 24 >> 24 == 0;
    if ($tobool53) {
      label = 9;
      break;
    } else {
      $defined_1 = $defined_0;
      $clip_0 = 1;
      $side_0 = 0;
      $dyna_0 = 0;
      $constrain_0 = 0;
      $theta_0 = 0.0;
      $rv_0 = 1;
      label = 42;
      break;
    }
   case 9:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $b_sroa_2_1;
    $and59 = $sides & 2;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and59;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = 0.0;
    $rv_0 = 0;
    label = 42;
    break;
   case 10:
    HEAPF64[$ctr_sroa_1_8__idx8 >> 3] = $b_sroa_1_1;
    $7 = HEAP8[$incdec_ptr] | 0;
    $conv65 = $7 << 24 >> 24;
    if (($conv65 | 0) == 0) {
      label = 11;
      break;
    } else if (($conv65 | 0) == 101) {
      label = 15;
      break;
    } else if (($conv65 | 0) == 119) {
      label = 19;
      break;
    } else {
      label = 23;
      break;
    }
   case 11:
    $tobool67 = ($ictxt | 0) == 0;
    if ($tobool67) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _compassPoint($p, $ictxt, -2147483647.0, $ctr_sroa_0_0_copyload);
    label = 14;
    break;
   case 13:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $ctr_sroa_0_0_copyload;
    label = 14;
    break;
   case 14:
    $and75 = $sides & 1;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and75;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = -1.5707963267948966;
    $rv_0 = 0;
    label = 42;
    break;
   case 15:
    $tobool77 = ($ictxt | 0) == 0;
    if ($tobool77) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _compassPoint($p, $ictxt, -2147483647.0, 2147483647.0);
    label = 18;
    break;
   case 17:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $b_sroa_2_1;
    label = 18;
    break;
   case 18:
    $and85 = $sides & 3;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and85;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = -.7853981633974483;
    $rv_0 = 0;
    label = 42;
    break;
   case 19:
    $tobool87 = ($ictxt | 0) == 0;
    if ($tobool87) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    _compassPoint($p, $ictxt, -2147483647.0, -2147483647.0);
    label = 22;
    break;
   case 21:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $b_sroa_0_1;
    label = 22;
    break;
   case 22:
    $and95 = $sides & 9;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and95;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = -2.356194490192345;
    $rv_0 = 0;
    label = 42;
    break;
   case 23:
    HEAPF64[$ctr_sroa_1_8__idx8 >> 3] = $ctr_sroa_1_8_copyload;
    $defined_1 = $defined_0;
    $clip_0 = 1;
    $side_0 = 0;
    $dyna_0 = 0;
    $constrain_0 = 0;
    $theta_0 = 0.0;
    $rv_0 = 1;
    label = 42;
    break;
   case 24:
    $8 = HEAP8[$incdec_ptr] | 0;
    $tobool99 = $8 << 24 >> 24 == 0;
    if ($tobool99) {
      label = 25;
      break;
    } else {
      $defined_1 = $defined_0;
      $clip_0 = 1;
      $side_0 = 0;
      $dyna_0 = 0;
      $constrain_0 = 0;
      $theta_0 = 0.0;
      $rv_0 = 1;
      label = 42;
      break;
    }
   case 25:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $b_sroa_0_1;
    $and105 = $sides & 8;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and105;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = 3.141592653589793;
    $rv_0 = 0;
    label = 42;
    break;
   case 26:
    HEAPF64[$ctr_sroa_1_8__idx8 >> 3] = $b_sroa_3_1;
    $9 = HEAP8[$incdec_ptr] | 0;
    $conv111 = $9 << 24 >> 24;
    if (($conv111 | 0) == 0) {
      label = 27;
      break;
    } else if (($conv111 | 0) == 101) {
      label = 31;
      break;
    } else if (($conv111 | 0) == 119) {
      label = 35;
      break;
    } else {
      label = 39;
      break;
    }
   case 27:
    $tobool113 = ($ictxt | 0) == 0;
    if ($tobool113) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    _compassPoint($p, $ictxt, 2147483647.0, $ctr_sroa_0_0_copyload);
    label = 30;
    break;
   case 29:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $ctr_sroa_0_0_copyload;
    label = 30;
    break;
   case 30:
    $and121 = $sides & 4;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and121;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = 1.5707963267948966;
    $rv_0 = 0;
    label = 42;
    break;
   case 31:
    $tobool123 = ($ictxt | 0) == 0;
    if ($tobool123) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    _compassPoint($p, $ictxt, 2147483647.0, 2147483647.0);
    label = 34;
    break;
   case 33:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $b_sroa_2_1;
    label = 34;
    break;
   case 34:
    $and131 = $sides & 6;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and131;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = .7853981633974483;
    $rv_0 = 0;
    label = 42;
    break;
   case 35:
    $tobool133 = ($ictxt | 0) == 0;
    if ($tobool133) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    _compassPoint($p, $ictxt, 2147483647.0, -2147483647.0);
    label = 38;
    break;
   case 37:
    HEAPF64[$ctr_sroa_0_0__idx >> 3] = $b_sroa_0_1;
    label = 38;
    break;
   case 38:
    $and141 = $sides & 12;
    $defined_1 = 1;
    $clip_0 = 0;
    $side_0 = $and141;
    $dyna_0 = 0;
    $constrain_0 = 1;
    $theta_0 = 2.356194490192345;
    $rv_0 = 0;
    label = 42;
    break;
   case 39:
    HEAPF64[$ctr_sroa_1_8__idx8 >> 3] = $ctr_sroa_1_8_copyload;
    $defined_1 = $defined_0;
    $clip_0 = 1;
    $side_0 = 0;
    $dyna_0 = 0;
    $constrain_0 = 0;
    $theta_0 = 0.0;
    $rv_0 = 1;
    label = 42;
    break;
   case 40:
    $defined_1 = $defined_0;
    $clip_0 = 1;
    $side_0 = $sides;
    $dyna_0 = 1;
    $constrain_0 = 0;
    $theta_0 = 0.0;
    $rv_0 = 0;
    label = 42;
    break;
   case 41:
    $defined_1 = $defined_0;
    $clip_0 = 1;
    $side_0 = 0;
    $dyna_0 = 0;
    $constrain_0 = 0;
    $theta_0 = 0.0;
    $rv_0 = 1;
    label = 42;
    break;
   case 42:
    $graph151 = $n + 20 | 0;
    $10 = HEAP32[$graph151 >> 2] | 0;
    $rankdir153 = $10 + 156 | 0;
    $11 = HEAP32[$rankdir153 >> 2] | 0;
    $and154 = $11 & 3;
    $mul = $and154 * 90 & -1;
    _cwrotatepf($tmp155, $p, $mul);
    $12 = $p;
    $13 = $tmp155;
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    $tobool156 = $dyna_0 << 24 >> 24 == 0;
    if ($tobool156) {
      label = 44;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $conv158 = $side_0 & 255;
    $side159 = $pp + 33 | 0;
    HEAP8[$side159] = $conv158;
    label = 45;
    break;
   case 44:
    $14 = HEAP32[$graph151 >> 2] | 0;
    $rankdir163 = $14 + 156 | 0;
    $15 = HEAP32[$rankdir163 >> 2] | 0;
    $and164 = $15 & 3;
    $call = _invflip_side($side_0, $and164) | 0;
    $conv165 = $call & 255;
    $side166 = $pp + 33 | 0;
    HEAP8[$side166] = $conv165;
    label = 45;
    break;
   case 45:
    $bp168 = $pp + 24 | 0;
    HEAP32[$bp168 >> 2] = $bp;
    $16 = +HEAPF64[$ctr_sroa_0_0__idx >> 3];
    $cmp = $16 < 0.0;
    if ($cmp) {
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $add172 = $16 + .5;
    $add172_sink = $add172;
    label = 48;
    break;
   case 47:
    $sub175 = $16 + -.5;
    $add172_sink = $sub175;
    label = 48;
    break;
   case 48:
    $conv173 = ~~$add172_sink;
    $conv177 = +($conv173 | 0);
    $x179 = $pp | 0;
    HEAPF64[$x179 >> 3] = $conv177;
    $17 = +HEAPF64[$ctr_sroa_1_8__idx8 >> 3];
    $cmp181 = $17 < 0.0;
    if ($cmp181) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $add185 = $17 + .5;
    $add185_sink = $add185;
    label = 51;
    break;
   case 50:
    $sub189 = $17 + -.5;
    $add185_sink = $sub189;
    label = 51;
    break;
   case 51:
    $conv186 = ~~$add185_sink;
    $conv193 = +($conv186 | 0);
    $y195 = $pp + 8 | 0;
    HEAPF64[$y195 >> 3] = $conv193;
    $18 = HEAP32[$graph151 >> 2] | 0;
    $rankdir198 = $18 + 156 | 0;
    $19 = HEAP32[$rankdir198 >> 2] | 0;
    $and199 = $19 & 3;
    $call200 = +_invflip_angle($theta_0, $and199);
    $theta201 = $pp + 16 | 0;
    HEAPF64[$theta201 >> 3] = $call200;
    $20 = +HEAPF64[$ctr_sroa_0_0__idx >> 3];
    $cmp203 = $20 == 0.0;
    if ($cmp203) {
      label = 52;
      break;
    } else {
      label = 54;
      break;
    }
   case 52:
    $21 = +HEAPF64[$ctr_sroa_1_8__idx8 >> 3];
    $cmp207 = $21 == 0.0;
    if ($cmp207) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    $order = $pp + 32 | 0;
    HEAP8[$order] = -128;
    label = 57;
    break;
   case 54:
    $22 = +HEAPF64[$ctr_sroa_1_8__idx8 >> 3];
    $23 = +HEAPF64[$ctr_sroa_0_0__idx >> 3];
    $call214 = +Math_atan2(+$22, +$23);
    $add215 = $call214 + 4.71238898038469;
    $cmp216 = $add215 < 6.283185307179586;
    if ($cmp216) {
      $angle_0 = $add215;
      label = 56;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $sub219 = $add215 - 6.283185307179586;
    $angle_0 = $sub219;
    label = 56;
    break;
   case 56:
    $mul221 = $angle_0 * 256.0;
    $div222 = $mul221 / 6.283185307179586;
    $conv223 = ~~$div222;
    $conv224 = $conv223 & 255;
    $order225 = $pp + 32 | 0;
    HEAP8[$order225] = $conv224;
    label = 57;
    break;
   case 57:
    $constrained = $pp + 29 | 0;
    HEAP8[$constrained] = $constrain_0;
    $defined227 = $pp + 28 | 0;
    HEAP8[$defined227] = $defined_1;
    $clip228 = $pp + 30 | 0;
    HEAP8[$clip228] = $clip_0;
    $dyna229 = $pp + 31 | 0;
    HEAP8[$dyna229] = $dyna_0;
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _invflip_side($side, $rankdir) {
  $side = $side | 0;
  $rankdir = $rankdir | 0;
  var $side_addr_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($rankdir | 0) == 2) {
      label = 3;
      break;
    } else if (($rankdir | 0) == 1) {
      label = 6;
      break;
    } else if (($rankdir | 0) == 3) {
      label = 11;
      break;
    } else {
      $side_addr_0 = $side;
      label = 16;
      break;
    }
   case 3:
    if (($side | 0) == 4) {
      label = 4;
      break;
    } else if (($side | 0) == 1) {
      label = 5;
      break;
    } else {
      $side_addr_0 = $side;
      label = 16;
      break;
    }
   case 4:
    $side_addr_0 = 1;
    label = 16;
    break;
   case 5:
    $side_addr_0 = 4;
    label = 16;
    break;
   case 6:
    if (($side | 0) == 4) {
      label = 7;
      break;
    } else if (($side | 0) == 1) {
      label = 8;
      break;
    } else if (($side | 0) == 8) {
      label = 9;
      break;
    } else if (($side | 0) == 2) {
      label = 10;
      break;
    } else {
      $side_addr_0 = $side;
      label = 16;
      break;
    }
   case 7:
    $side_addr_0 = 2;
    label = 16;
    break;
   case 8:
    $side_addr_0 = 8;
    label = 16;
    break;
   case 9:
    $side_addr_0 = 4;
    label = 16;
    break;
   case 10:
    $side_addr_0 = 1;
    label = 16;
    break;
   case 11:
    if (($side | 0) == 4) {
      label = 12;
      break;
    } else if (($side | 0) == 1) {
      label = 13;
      break;
    } else if (($side | 0) == 8) {
      label = 14;
      break;
    } else if (($side | 0) == 2) {
      label = 15;
      break;
    } else {
      $side_addr_0 = $side;
      label = 16;
      break;
    }
   case 12:
    $side_addr_0 = 2;
    label = 16;
    break;
   case 13:
    $side_addr_0 = 8;
    label = 16;
    break;
   case 14:
    $side_addr_0 = 1;
    label = 16;
    break;
   case 15:
    $side_addr_0 = 4;
    label = 16;
    break;
   case 16:
    return $side_addr_0 | 0;
  }
  return 0;
}
function _invflip_angle($angle, $rankdir) {
  $angle = +$angle;
  $rankdir = $rankdir | 0;
  var $mul = 0.0, $sub = 0.0, $cmp = 0, $cmp4 = 0, $cmp7 = 0, $cmp10 = 0, $cmp13 = 0, $cmp16 = 0, $cmp19 = 0, $retval = 0.0, $angle_addr_0 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($rankdir | 0) == 2) {
      label = 3;
      break;
    } else if (($rankdir | 0) == 1) {
      label = 4;
      break;
    } else if (($rankdir | 0) == 3) {
      label = 5;
      break;
    } else {
      $angle_addr_0 = $angle;
      label = 12;
      break;
    }
   case 3:
    $mul = $angle * -1.0;
    $angle_addr_0 = $mul;
    label = 12;
    break;
   case 4:
    $sub = $angle - 1.5707963267948966;
    $angle_addr_0 = $sub;
    label = 12;
    break;
   case 5:
    $cmp = $angle == 3.141592653589793;
    if ($cmp) {
      $angle_addr_0 = -1.5707963267948966;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp4 = $angle == 2.356194490192345;
    if ($cmp4) {
      $angle_addr_0 = -.7853981633974483;
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp7 = $angle == 1.5707963267948966;
    if ($cmp7) {
      $angle_addr_0 = 0.0;
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $cmp10 = $angle == .7853981633974483;
    if ($cmp10) {
      $angle_addr_0 = $angle;
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp13 = $angle == 0.0;
    if ($cmp13) {
      $angle_addr_0 = 1.5707963267948966;
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $cmp16 = $angle == -.7853981633974483;
    if ($cmp16) {
      $angle_addr_0 = 2.356194490192345;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $cmp19 = $angle == -1.5707963267948966;
    $retval = $cmp19 ? 3.141592653589793 : $angle;
    return +$retval;
   case 12:
    return +$angle_addr_0;
  }
  return 0.0;
}
function _cvtPt($agg_result, $p, $rankdir) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $rankdir = $rankdir | 0;
  var $q_sroa_0_0__idx = 0, $q_sroa_0_0_copyload = 0.0, $q_sroa_1_8__idx4 = 0, $q_sroa_1_8_copyload = 0.0, $x = 0, $0 = 0.0, $y = 0, $1 = 0.0, $sub = 0.0, $x5 = 0, $2 = 0.0, $y7 = 0, $3 = 0.0, $sub8 = 0.0, $x11 = 0, $4 = 0.0, $y13 = 0, $5 = 0.0, $q_sroa_0_0 = 0.0, $q_sroa_1_0 = 0.0, $cmp = 0, $q_sroa_1_08 = 0.0, $q_sroa_0_06 = 0.0, $add = 0.0, $sub18 = 0.0, $q_sroa_1_07 = 0.0, $add_sink = 0.0, $conv = 0, $cmp22 = 0, $add26 = 0.0, $sub30 = 0.0, $add26_sink = 0.0, $conv27 = 0, $Q_sroa_0_0__idx = 0, $Q_sroa_1_4__idx1 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($rankdir | 0) == 0) {
      label = 3;
      break;
    } else if (($rankdir | 0) == 2) {
      label = 4;
      break;
    } else if (($rankdir | 0) == 1) {
      label = 5;
      break;
    } else if (($rankdir | 0) == 3) {
      label = 6;
      break;
    } else {
      $q_sroa_0_06 = 0.0;
      $q_sroa_1_08 = 0.0;
      label = 8;
      break;
    }
   case 3:
    $q_sroa_0_0__idx = $p | 0;
    $q_sroa_0_0_copyload = +HEAPF64[$q_sroa_0_0__idx >> 3];
    $q_sroa_1_8__idx4 = $p + 8 | 0;
    $q_sroa_1_8_copyload = +HEAPF64[$q_sroa_1_8__idx4 >> 3];
    $q_sroa_1_0 = $q_sroa_1_8_copyload;
    $q_sroa_0_0 = $q_sroa_0_0_copyload;
    label = 7;
    break;
   case 4:
    $x = $p | 0;
    $0 = +HEAPF64[$x >> 3];
    $y = $p + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $sub = -0.0 - $1;
    $q_sroa_1_0 = $sub;
    $q_sroa_0_0 = $0;
    label = 7;
    break;
   case 5:
    $x5 = $p | 0;
    $2 = +HEAPF64[$x5 >> 3];
    $y7 = $p + 8 | 0;
    $3 = +HEAPF64[$y7 >> 3];
    $sub8 = -0.0 - $3;
    $q_sroa_1_0 = $2;
    $q_sroa_0_0 = $sub8;
    label = 7;
    break;
   case 6:
    $x11 = $p | 0;
    $4 = +HEAPF64[$x11 >> 3];
    $y13 = $p + 8 | 0;
    $5 = +HEAPF64[$y13 >> 3];
    $q_sroa_1_0 = $4;
    $q_sroa_0_0 = $5;
    label = 7;
    break;
   case 7:
    $cmp = $q_sroa_0_0 < 0.0;
    if ($cmp) {
      label = 9;
      break;
    } else {
      $q_sroa_0_06 = $q_sroa_0_0;
      $q_sroa_1_08 = $q_sroa_1_0;
      label = 8;
      break;
    }
   case 8:
    $add = $q_sroa_0_06 + .5;
    $add_sink = $add;
    $q_sroa_1_07 = $q_sroa_1_08;
    label = 10;
    break;
   case 9:
    $sub18 = $q_sroa_0_0 + -.5;
    $add_sink = $sub18;
    $q_sroa_1_07 = $q_sroa_1_0;
    label = 10;
    break;
   case 10:
    $conv = ~~$add_sink;
    $cmp22 = $q_sroa_1_07 < 0.0;
    if ($cmp22) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $add26 = $q_sroa_1_07 + .5;
    $add26_sink = $add26;
    label = 13;
    break;
   case 12:
    $sub30 = $q_sroa_1_07 + -.5;
    $add26_sink = $sub30;
    label = 13;
    break;
   case 13:
    $conv27 = ~~$add26_sink;
    $Q_sroa_0_0__idx = $agg_result | 0;
    HEAP32[$Q_sroa_0_0__idx >> 2] = $conv;
    $Q_sroa_1_4__idx1 = $agg_result + 4 | 0;
    HEAP32[$Q_sroa_1_4__idx1 >> 2] = $conv27;
    STACKTOP = __stackBase__;
    return;
  }
}
function _compassPoint($agg_result, $ictxt, $y, $x) {
  $agg_result = $agg_result | 0;
  $ictxt = $ictxt | 0;
  $y = +$y;
  $x = +$x;
  var $curve = 0, $0 = 0, $5 = 0, $6 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  $curve = __stackBase__ | 0;
  $0 = HEAP32[$ictxt >> 2] | 0;
  _memset($curve | 0, 0, 16);
  HEAPF64[$curve + 16 >> 3] = $x / 3.0;
  HEAPF64[$curve + 24 >> 3] = $y / 3.0;
  HEAPF64[$curve + 32 >> 3] = $x * 2.0 / 3.0;
  HEAPF64[$curve + 40 >> 3] = $y * 2.0 / 3.0;
  HEAPF64[$curve + 48 >> 3] = $x;
  HEAPF64[$curve + 56 >> 3] = $y;
  _bezier_clip($ictxt, HEAP32[(HEAP32[(HEAP32[$0 + 24 >> 2] | 0) + 4 >> 2] | 0) + 12 >> 2] | 0, $curve | 0, 1);
  $5 = $agg_result;
  $6 = $curve;
  HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
  HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
  HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
  HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _poly_port($agg_result, $n, $portname, $compass) {
  $agg_result = $agg_result | 0;
  $n = $n | 0;
  $portname = $portname | 0;
  $compass = $compass | 0;
  var $rv = 0, $sides = 0, $ictxt = 0, $0 = 0, $cmp = 0, $1 = 0, $cmp2 = 0, $_compass = 0, $label = 0, $2 = 0, $html = 0, $3 = 0, $tobool = 0, $call = 0, $tobool7 = 0, $4 = 0, $call9 = 0, $tobool10 = 0, $name = 0, $5 = 0, $call12 = 0, $shape = 0, $6 = 0, $polygon = 0, $7 = 0, $cmp15 = 0, $8 = 0, $n_c = 0, $bp21 = 0, $ictxtp_0 = 0, $9 = 0, $call23 = 0, $tobool24 = 0, $10 = 0, $11 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 56 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rv = __stackBase__ | 0;
    $sides = __stackBase__ + 40 | 0;
    $ictxt = __stackBase__ + 48 | 0;
    $0 = HEAP8[$portname] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $1 = $agg_result;
    HEAP32[$1 >> 2] = HEAP32[42020] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[42021] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[42022] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[42023] | 0;
    HEAP32[$1 + 16 >> 2] = HEAP32[42024] | 0;
    HEAP32[$1 + 20 >> 2] = HEAP32[42025] | 0;
    HEAP32[$1 + 24 >> 2] = HEAP32[42026] | 0;
    HEAP32[$1 + 28 >> 2] = HEAP32[42027] | 0;
    HEAP32[$1 + 32 >> 2] = HEAP32[42028] | 0;
    HEAP32[$1 + 36 >> 2] = HEAP32[42029] | 0;
    label = 13;
    break;
   case 4:
    $cmp2 = ($compass | 0) == 0;
    $_compass = $cmp2 ? 109560 : $compass;
    HEAP32[$sides >> 2] = 15;
    $label = $n + 120 | 0;
    $2 = HEAP32[$label >> 2] | 0;
    $html = $2 + 82 | 0;
    $3 = HEAP8[$html] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call = _html_port($n, $portname, $sides) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = HEAP32[$sides >> 2] | 0;
    $call9 = _compassPort($n, $call, $rv, $_compass, $4, 0) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $name = $n + 12 | 0;
    $5 = HEAP32[$name >> 2] | 0;
    $call12 = _agerr(0, 109200, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $5, HEAP32[tempInt + 8 >> 2] = $portname, HEAP32[tempInt + 16 >> 2] = $_compass, tempInt) | 0) | 0;
    label = 12;
    break;
   case 8:
    $shape = $n + 24 | 0;
    $6 = HEAP32[$shape >> 2] | 0;
    $polygon = $6 + 8 | 0;
    $7 = HEAP32[$polygon >> 2] | 0;
    $cmp15 = ($7 | 0) == 8800;
    if ($cmp15) {
      $ictxtp_0 = 0;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $8 = $ictxt | 0;
    $n_c = $n;
    HEAP32[$8 >> 2] = $n_c;
    $bp21 = $ictxt + 4 | 0;
    HEAP32[$bp21 >> 2] = 0;
    $ictxtp_0 = $ictxt;
    label = 10;
    break;
   case 10:
    $9 = HEAP32[$sides >> 2] | 0;
    $call23 = _compassPort($n, 0, $rv, $portname, $9, $ictxtp_0) | 0;
    $tobool24 = ($call23 | 0) == 0;
    if ($tobool24) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _unrecognized($n, $portname);
    label = 12;
    break;
   case 12:
    $10 = $agg_result;
    $11 = $rv;
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    HEAP32[$10 + 16 >> 2] = HEAP32[$11 + 16 >> 2] | 0;
    HEAP32[$10 + 20 >> 2] = HEAP32[$11 + 20 >> 2] | 0;
    HEAP32[$10 + 24 >> 2] = HEAP32[$11 + 24 >> 2] | 0;
    HEAP32[$10 + 28 >> 2] = HEAP32[$11 + 28 >> 2] | 0;
    HEAP32[$10 + 32 >> 2] = HEAP32[$11 + 32 >> 2] | 0;
    HEAP32[$10 + 36 >> 2] = HEAP32[$11 + 36 >> 2] | 0;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _epsf_inside($inside_context, $p) {
  $inside_context = $inside_context | 0;
  $p = $p | 0;
  var $tmp = 0, $n1 = 0, $0 = 0, $graph = 0, $1 = 0, $rankdir = 0, $2 = 0, $and = 0, $mul = 0, $P_sroa_0_0__idx = 0, $P_sroa_0_0_copyload = 0.0, $P_sroa_1_8__idx7 = 0, $P_sroa_1_8_copyload = 0.0, $ht = 0, $3 = 0.0, $div = 0.0, $sub = 0.0, $cmp = 0, $cmp4 = 0, $or_cond = 0, $lw = 0, $4 = 0.0, $sub7 = 0.0, $cmp8 = 0, $rw = 0, $5 = 0.0, $cmp11 = 0, $phitmp = 0, $6 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $n1 = $inside_context;
    $0 = HEAP32[$n1 >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $rankdir = $1 + 156 | 0;
    $2 = HEAP32[$rankdir >> 2] | 0;
    $and = $2 & 3;
    $mul = $and * 90 & -1;
    _ccwrotatepf($tmp, $p, $mul);
    $P_sroa_0_0__idx = $tmp | 0;
    $P_sroa_0_0_copyload = +HEAPF64[$P_sroa_0_0__idx >> 3];
    $P_sroa_1_8__idx7 = $tmp + 8 | 0;
    $P_sroa_1_8_copyload = +HEAPF64[$P_sroa_1_8__idx7 >> 3];
    $ht = $0 + 96 | 0;
    $3 = +HEAPF64[$ht >> 3];
    $div = $3 * .5;
    $sub = -0.0 - $div;
    $cmp = $P_sroa_1_8_copyload < $sub;
    $cmp4 = $P_sroa_1_8_copyload > $div;
    $or_cond = $cmp | $cmp4;
    if ($or_cond) {
      $6 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $lw = $0 + 104 | 0;
    $4 = +HEAPF64[$lw >> 3];
    $sub7 = -0.0 - $4;
    $cmp8 = $P_sroa_0_0_copyload < $sub7;
    if ($cmp8) {
      $6 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $rw = $0 + 112 | 0;
    $5 = +HEAPF64[$rw >> 3];
    $cmp11 = $P_sroa_0_0_copyload <= $5;
    $phitmp = $cmp11 & 1;
    $6 = $phitmp;
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return $6 | 0;
  }
  return 0;
}
function _epsf_gencode($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $obj1 = 0, $0 = 0, $url = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $4 = 0, $_mask = 0, $tobool2 = 0, $5 = 0, $shape_info = 0, $6 = 0, $tobool3 = 0, $flags = 0, $7 = 0, $and = 0, $tobool5 = 0, $8 = 0, $tooltip = 0, $9 = 0, $target = 0, $10 = 0, $id = 0, $11 = 0, $output_file = 0, $12 = 0, $x = 0, $13 = 0.0, $offset = 0, $x12 = 0, $14 = 0, $conv = 0.0, $add = 0.0, $y = 0, $15 = 0.0, $y16 = 0, $16 = 0, $17 = 0, $conv17 = 0.0, $add18 = 0.0, $macro_id = 0, $18 = 0, $call = 0, $label = 0, $19 = 0, $pos = 0, $coord22 = 0, $20 = 0, $21 = 0, $22 = 0, $flags27 = 0, $23 = 0, $and28 = 0, $tobool29 = 0, $24 = 0, $tooltip32 = 0, $25 = 0, $target33 = 0, $26 = 0, $id34 = 0, $27 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url = $0 + 160 | 0;
    $1 = HEAP32[$url >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $5 = 1;
      label = 4;
      break;
    }
   case 3:
    $2 = $0 + 212 | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $_mask = $4 & 1;
    $tobool2 = ($_mask | 0) != 0;
    $5 = $tobool2;
    label = 4;
    break;
   case 4:
    $shape_info = $n + 28 | 0;
    $6 = HEAP32[$shape_info >> 2] | 0;
    $tobool3 = ($6 | 0) != 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      label = 14;
      break;
    }
   case 5:
    if ($5) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $flags = $job + 152 | 0;
    $7 = HEAP32[$flags >> 2] | 0;
    $and = $7 & 4;
    $tobool5 = ($and | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $8 = HEAP32[$url >> 2] | 0;
    $tooltip = $0 + 180 | 0;
    $9 = HEAP32[$tooltip >> 2] | 0;
    $target = $0 + 196 | 0;
    $10 = HEAP32[$target >> 2] | 0;
    $id = $0 + 164 | 0;
    $11 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $8, $9, $10, $11);
    label = 8;
    break;
   case 8:
    if ($tobool3) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $output_file = $job + 36 | 0;
    $12 = HEAP32[$output_file >> 2] | 0;
    $x = $n + 32 | 0;
    $13 = +HEAPF64[$x >> 3];
    $offset = $6 + 4 | 0;
    $x12 = $offset;
    $14 = HEAP32[$x12 >> 2] | 0;
    $conv = +($14 | 0);
    $add = $13 + $conv;
    $y = $n + 40 | 0;
    $15 = +HEAPF64[$y >> 3];
    $y16 = $6 + 8 | 0;
    $16 = $y16;
    $17 = HEAP32[$16 >> 2] | 0;
    $conv17 = +($17 | 0);
    $add18 = $15 + $conv17;
    $macro_id = $6;
    $18 = HEAP32[$macro_id >> 2] | 0;
    $call = _fprintf($12 | 0, 109912, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAPF64[tempInt >> 3] = $add, HEAPF64[tempInt + 8 >> 3] = $add18, HEAP32[tempInt + 16 >> 2] = $18, tempInt) | 0) | 0;
    label = 10;
    break;
   case 10:
    $label = $n + 120 | 0;
    $19 = HEAP32[$label >> 2] | 0;
    $pos = $19 + 56 | 0;
    $coord22 = $n + 32 | 0;
    $20 = $pos;
    $21 = $coord22;
    HEAP32[$20 >> 2] = HEAP32[$21 >> 2] | 0;
    HEAP32[$20 + 4 >> 2] = HEAP32[$21 + 4 >> 2] | 0;
    HEAP32[$20 + 8 >> 2] = HEAP32[$21 + 8 >> 2] | 0;
    HEAP32[$20 + 12 >> 2] = HEAP32[$21 + 12 >> 2] | 0;
    $22 = HEAP32[$label >> 2] | 0;
    _emit_label($job, 10, $22);
    if ($5) {
      label = 11;
      break;
    } else {
      label = 14;
      break;
    }
   case 11:
    $flags27 = $job + 152 | 0;
    $23 = HEAP32[$flags27 >> 2] | 0;
    $and28 = $23 & 4;
    $tobool29 = ($and28 | 0) == 0;
    if ($tobool29) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $24 = HEAP32[$url >> 2] | 0;
    $tooltip32 = $0 + 180 | 0;
    $25 = HEAP32[$tooltip32 >> 2] | 0;
    $target33 = $0 + 196 | 0;
    $26 = HEAP32[$target33 >> 2] | 0;
    $id34 = $0 + 164 | 0;
    $27 = HEAP32[$id34 >> 2] | 0;
    _gvrender_begin_anchor($job, $24, $25, $26, $27);
    label = 13;
    break;
   case 13:
    _gvrender_end_anchor($job);
    label = 14;
    break;
   case 14:
    STACKTOP = __stackBase__;
    return;
  }
}
function _unrecognized($n, $p) {
  $n = $n | 0;
  $p = $p | 0;
  var __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  _agerr(0, 108792, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = HEAP32[$n + 12 >> 2] | 0, HEAP32[tempInt + 8 >> 2] = $p, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _record_free($n) {
  $n = $n | 0;
  _free_field(HEAP32[$n + 28 >> 2] | 0);
  return;
}
function _record_port($agg_result, $n, $portname, $compass) {
  $agg_result = $agg_result | 0;
  $n = $n | 0;
  $portname = $portname | 0;
  $compass = $compass | 0;
  var $rv = 0, $0 = 0, $cmp = 0, $1 = 0, $cmp2 = 0, $_compass = 0, $shape_info = 0, $2 = 0, $3 = 0, $call = 0, $tobool = 0, $b = 0, $sides7 = 0, $4 = 0, $conv8 = 0, $call9 = 0, $tobool10 = 0, $name = 0, $5 = 0, $call12 = 0, $b14 = 0, $6 = 0, $call15 = 0, $tobool16 = 0, $7 = 0, $8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rv = __stackBase__ | 0;
    $0 = HEAP8[$portname] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $1 = $agg_result;
    HEAP32[$1 >> 2] = HEAP32[42020] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[42021] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[42022] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[42023] | 0;
    HEAP32[$1 + 16 >> 2] = HEAP32[42024] | 0;
    HEAP32[$1 + 20 >> 2] = HEAP32[42025] | 0;
    HEAP32[$1 + 24 >> 2] = HEAP32[42026] | 0;
    HEAP32[$1 + 28 >> 2] = HEAP32[42027] | 0;
    HEAP32[$1 + 32 >> 2] = HEAP32[42028] | 0;
    HEAP32[$1 + 36 >> 2] = HEAP32[42029] | 0;
    label = 10;
    break;
   case 4:
    $cmp2 = ($compass | 0) == 0;
    $_compass = $cmp2 ? 109560 : $compass;
    $shape_info = $n + 28 | 0;
    $2 = HEAP32[$shape_info >> 2] | 0;
    $3 = $2;
    $call = _map_rec_port($3, $portname) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $b = $call + 16 | 0;
    $sides7 = $call + 65 | 0;
    $4 = HEAP8[$sides7] | 0;
    $conv8 = $4 & 255;
    $call9 = _compassPort($n, $b, $rv, $_compass, $conv8, 0) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $name = $n + 12 | 0;
    $5 = HEAP32[$name >> 2] | 0;
    $call12 = _agerr(0, 109200, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $5, HEAP32[tempInt + 8 >> 2] = $portname, HEAP32[tempInt + 16 >> 2] = $_compass, tempInt) | 0) | 0;
    label = 9;
    break;
   case 7:
    $b14 = $2 + 16 | 0;
    $6 = $b14;
    $call15 = _compassPort($n, $6, $rv, $portname, 15, 0) | 0;
    $tobool16 = ($call15 | 0) == 0;
    if ($tobool16) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _unrecognized($n, $portname);
    label = 9;
    break;
   case 9:
    $7 = $agg_result;
    $8 = $rv;
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    HEAP32[$7 + 16 >> 2] = HEAP32[$8 + 16 >> 2] | 0;
    HEAP32[$7 + 20 >> 2] = HEAP32[$8 + 20 >> 2] | 0;
    HEAP32[$7 + 24 >> 2] = HEAP32[$8 + 24 >> 2] | 0;
    HEAP32[$7 + 28 >> 2] = HEAP32[$8 + 28 >> 2] | 0;
    HEAP32[$7 + 32 >> 2] = HEAP32[$8 + 32 >> 2] | 0;
    HEAP32[$7 + 36 >> 2] = HEAP32[$8 + 36 >> 2] | 0;
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return;
  }
}
function _record_inside($inside_context, $p) {
  $inside_context = $inside_context | 0;
  $p = $p | 0;
  var $tmp = 0, $bp1 = 0, $0 = 0, $n3 = 0, $1 = 0, $graph = 0, $2 = 0, $rankdir = 0, $3 = 0, $and = 0, $mul = 0, $4 = 0, $5 = 0, $cmp = 0, $shape_info = 0, $6 = 0, $bbox_sroa_0_0__idx1 = 0, $7 = 0, $bbox_sroa_1_8__idx4 = 0, $8 = 0, $bbox_sroa_2_16__idx7 = 0, $9 = 0, $bbox_sroa_3_24__idx10 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $bbox_sroa_3_0_in = 0, $bbox_sroa_2_0_in = 0, $bbox_sroa_1_0_in = 0, $bbox_sroa_0_0_in = 0, $bbox_sroa_0_0 = 0.0, $bbox_sroa_1_0 = 0.0, $bbox_sroa_3_0 = 0.0, $x5 = 0, $14 = 0.0, $cmp6 = 0, $bbox_sroa_2_0 = 0.0, $cmp9 = 0, $y11 = 0, $15 = 0.0, $cmp12 = 0, $cmp17 = 0, $phitmp = 0, $16 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $bp1 = $inside_context + 4 | 0;
    $0 = HEAP32[$bp1 >> 2] | 0;
    $n3 = $inside_context;
    $1 = HEAP32[$n3 >> 2] | 0;
    $graph = $1 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $rankdir = $2 + 156 | 0;
    $3 = HEAP32[$rankdir >> 2] | 0;
    $and = $3 & 3;
    $mul = $and * 90 & -1;
    _ccwrotatepf($tmp, $p, $mul);
    $4 = $p;
    $5 = $tmp;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $shape_info = $1 + 28 | 0;
    $6 = HEAP32[$shape_info >> 2] | 0;
    $bbox_sroa_0_0__idx1 = $6 + 16 | 0;
    $7 = $bbox_sroa_0_0__idx1;
    $bbox_sroa_1_8__idx4 = $6 + 24 | 0;
    $8 = $bbox_sroa_1_8__idx4;
    $bbox_sroa_2_16__idx7 = $6 + 32 | 0;
    $9 = $bbox_sroa_2_16__idx7;
    $bbox_sroa_3_24__idx10 = $6 + 40 | 0;
    $10 = $bbox_sroa_3_24__idx10;
    $bbox_sroa_0_0_in = $7;
    $bbox_sroa_1_0_in = $8;
    $bbox_sroa_2_0_in = $9;
    $bbox_sroa_3_0_in = $10;
    label = 5;
    break;
   case 4:
    $11 = $0 + 8 | 0;
    $12 = $0 + 16 | 0;
    $13 = $0 + 24 | 0;
    $bbox_sroa_0_0_in = $0;
    $bbox_sroa_1_0_in = $11;
    $bbox_sroa_2_0_in = $12;
    $bbox_sroa_3_0_in = $13;
    label = 5;
    break;
   case 5:
    $bbox_sroa_0_0 = +HEAPF64[$bbox_sroa_0_0_in >> 3];
    $bbox_sroa_1_0 = +HEAPF64[$bbox_sroa_1_0_in >> 3];
    $bbox_sroa_3_0 = +HEAPF64[$bbox_sroa_3_0_in >> 3];
    $x5 = $p | 0;
    $14 = +HEAPF64[$x5 >> 3];
    $cmp6 = $bbox_sroa_0_0 > $14;
    if ($cmp6) {
      $16 = 0;
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $bbox_sroa_2_0 = +HEAPF64[$bbox_sroa_2_0_in >> 3];
    $cmp9 = $14 > $bbox_sroa_2_0;
    if ($cmp9) {
      $16 = 0;
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $y11 = $p + 8 | 0;
    $15 = +HEAPF64[$y11 >> 3];
    $cmp12 = $bbox_sroa_1_0 > $15;
    if ($cmp12) {
      $16 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $cmp17 = $15 <= $bbox_sroa_3_0;
    $phitmp = $cmp17 & 1;
    $16 = $phitmp;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return $16 | 0;
  }
  return 0;
}
function _record_path($n, $prt, $side, $rv, $kptr) {
  $n = $n | 0;
  $prt = $prt | 0;
  $side = $side | 0;
  $rv = $rv | 0;
  $kptr = $kptr | 0;
  var $tmp = 0, $defined = 0, $0 = 0, $tobool = 0, $p_sroa_0_0__idx = 0, $p_sroa_0_0_copyload = 0.0, $shape_info = 0, $1 = 0, $n_flds = 0, $2 = 0, $3 = 0, $cmp30 = 0, $graph = 0, $4 = 0, $rankdir = 0, $5 = 0, $and3 = 0, $tobool4 = 0, $fld11 = 0, $6 = 0, $7 = 0, $i_031 = 0, $arrayidx12 = 0, $8 = 0, $x = 0, $x9 = 0, $y = 0, $y20 = 0, $rs_0_in_in = 0, $ls_0_in_in = 0, $ls_0_in = 0.0, $ls_0 = 0, $conv23 = 0.0, $cmp25 = 0, $rs_0_in = 0.0, $rs_0 = 0, $conv28 = 0.0, $cmp29 = 0, $9 = 0, $rankdir34 = 0, $10 = 0, $and36 = 0, $tobool37 = 0, $11 = 0, $arrayidx41 = 0, $12 = 0, $b42 = 0, $coord = 0, $13 = 0, $14 = 0, $x47 = 0, $15 = 0.0, $add = 0.0, $x51 = 0, $y54 = 0, $16 = 0.0, $ht = 0, $17 = 0.0, $div = 0.0, $sub = 0.0, $y58 = 0, $18 = 0.0, $add63 = 0.0, $x66 = 0, $y70 = 0, $19 = 0.0, $ht72 = 0, $20 = 0.0, $div73 = 0.0, $add74 = 0.0, $y77 = 0, $inc = 0, $21 = 0, $cmp = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $defined = $prt + 28 | 0;
    $0 = HEAP8[$defined] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $p_sroa_0_0__idx = $prt | 0;
    $p_sroa_0_0_copyload = +HEAPF64[$p_sroa_0_0__idx >> 3];
    $shape_info = $n + 28 | 0;
    $1 = HEAP32[$shape_info >> 2] | 0;
    $n_flds = $1 + 48 | 0;
    $2 = $n_flds;
    $3 = HEAP32[$2 >> 2] | 0;
    $cmp30 = ($3 | 0) > 0;
    if ($cmp30) {
      label = 4;
      break;
    } else {
      $retval_0 = $side;
      label = 15;
      break;
    }
   case 4:
    $graph = $n + 20 | 0;
    $4 = HEAP32[$graph >> 2] | 0;
    $rankdir = $4 + 156 | 0;
    $5 = HEAP32[$rankdir >> 2] | 0;
    $and3 = $5 & 1;
    $tobool4 = ($and3 | 0) == 0;
    $fld11 = $1 + 56 | 0;
    $6 = $fld11;
    $7 = HEAP32[$6 >> 2] | 0;
    $i_031 = 0;
    label = 5;
    break;
   case 5:
    $arrayidx12 = $7 + ($i_031 << 2) | 0;
    $8 = HEAP32[$arrayidx12 >> 2] | 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $x = $8 + 16 | 0;
    $x9 = $8 + 32 | 0;
    $ls_0_in_in = $x;
    $rs_0_in_in = $x9;
    label = 8;
    break;
   case 7:
    $y = $8 + 24 | 0;
    $y20 = $8 + 40 | 0;
    $ls_0_in_in = $y;
    $rs_0_in_in = $y20;
    label = 8;
    break;
   case 8:
    $ls_0_in = +HEAPF64[$ls_0_in_in >> 3];
    $ls_0 = ~~$ls_0_in;
    $conv23 = +($ls_0 | 0);
    $cmp25 = $conv23 > $p_sroa_0_0_copyload;
    if ($cmp25) {
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $rs_0_in = +HEAPF64[$rs_0_in_in >> 3];
    $rs_0 = ~~$rs_0_in;
    $conv28 = +($rs_0 | 0);
    $cmp29 = $p_sroa_0_0_copyload > $conv28;
    if ($cmp29) {
      label = 14;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $9 = HEAP32[$graph >> 2] | 0;
    $rankdir34 = $9 + 156 | 0;
    $10 = HEAP32[$rankdir34 >> 2] | 0;
    $and36 = $10 & 1;
    $tobool37 = ($and36 | 0) == 0;
    if ($tobool37) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $11 = HEAP32[$6 >> 2] | 0;
    $arrayidx41 = $11 + ($i_031 << 2) | 0;
    $12 = HEAP32[$arrayidx41 >> 2] | 0;
    $b42 = $12 + 16 | 0;
    $coord = $n + 32 | 0;
    _flip_rec_boxf($tmp, $b42, $coord);
    $13 = $rv;
    $14 = $tmp;
    HEAP32[$13 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    HEAP32[$13 + 16 >> 2] = HEAP32[$14 + 16 >> 2] | 0;
    HEAP32[$13 + 20 >> 2] = HEAP32[$14 + 20 >> 2] | 0;
    HEAP32[$13 + 24 >> 2] = HEAP32[$14 + 24 >> 2] | 0;
    HEAP32[$13 + 28 >> 2] = HEAP32[$14 + 28 >> 2] | 0;
    label = 13;
    break;
   case 12:
    $x47 = $n + 32 | 0;
    $15 = +HEAPF64[$x47 >> 3];
    $add = $conv23 + $15;
    $x51 = $rv | 0;
    HEAPF64[$x51 >> 3] = $add;
    $y54 = $n + 40 | 0;
    $16 = +HEAPF64[$y54 >> 3];
    $ht = $n + 96 | 0;
    $17 = +HEAPF64[$ht >> 3];
    $div = $17 * .5;
    $sub = $16 - $div;
    $y58 = $rv + 8 | 0;
    HEAPF64[$y58 >> 3] = $sub;
    $18 = +HEAPF64[$x47 >> 3];
    $add63 = $conv28 + $18;
    $x66 = $rv + 16 | 0;
    HEAPF64[$x66 >> 3] = $add63;
    label = 13;
    break;
   case 13:
    $y70 = $n + 40 | 0;
    $19 = +HEAPF64[$y70 >> 3];
    $ht72 = $n + 96 | 0;
    $20 = +HEAPF64[$ht72 >> 3];
    $div73 = $20 * .5;
    $add74 = $19 + $div73;
    $y77 = $rv + 24 | 0;
    HEAPF64[$y77 >> 3] = $add74;
    HEAP32[$kptr >> 2] = 1;
    $retval_0 = $side;
    label = 15;
    break;
   case 14:
    $inc = $i_031 + 1 | 0;
    $21 = HEAP32[$2 >> 2] | 0;
    $cmp = ($inc | 0) < ($21 | 0);
    if ($cmp) {
      $i_031 = $inc;
      label = 5;
      break;
    } else {
      $retval_0 = $side;
      label = 15;
      break;
    }
   case 15:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _record_gencode($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $BF = 0, $AF = 0, $obj1 = 0, $0 = 0, $url = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $4 = 0, $_mask = 0, $tobool2 = 0, $5 = 0, $shape_info = 0, $6 = 0, $7 = 0, $b = 0, $8 = 0, $x = 0, $9 = 0.0, $x4 = 0, $10 = 0.0, $add = 0.0, $y = 0, $11 = 0.0, $y8 = 0, $12 = 0.0, $add9 = 0.0, $13 = 0.0, $UR = 0, $x13 = 0, $14 = 0.0, $add14 = 0.0, $15 = 0.0, $y19 = 0, $16 = 0.0, $add20 = 0.0, $flags = 0, $17 = 0, $and = 0, $tobool22 = 0, $18 = 0, $tooltip = 0, $19 = 0, $target = 0, $20 = 0, $id = 0, $21 = 0, $call = 0, $and24 = 0, $tobool25 = 0, $call27 = 0, $shape = 0, $22 = 0, $name = 0, $23 = 0, $24 = 0, $cmp = 0, $call36 = 0, $tobool37 = 0, $or = 0, $or_call = 0, $style_0 = 0, $and40 = 0, $tobool41 = 0, $arrayidx = 0, $25 = 0, $arrayidx44 = 0, $26 = 0, $27 = 0, $x47 = 0, $28 = 0.0, $x49 = 0, $y51 = 0, $29 = 0.0, $y53 = 0, $x55 = 0, $30 = 0.0, $x57 = 0, $y59 = 0, $31 = 0.0, $y61 = 0, $and62 = 0, $style_0_tr = 0, $conv64 = 0, $flags68 = 0, $32 = 0, $and69 = 0, $tobool70 = 0, $33 = 0, $tooltip73 = 0, $34 = 0, $target74 = 0, $35 = 0, $id75 = 0, $36 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $BF = __stackBase__ | 0;
    $AF = __stackBase__ + 32 | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url = $0 + 160 | 0;
    $1 = HEAP32[$url >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $5 = 1;
      label = 4;
      break;
    }
   case 3:
    $2 = $0 + 212 | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $_mask = $4 & 1;
    $tobool2 = ($_mask | 0) != 0;
    $5 = $tobool2;
    label = 4;
    break;
   case 4:
    $shape_info = $n + 28 | 0;
    $6 = HEAP32[$shape_info >> 2] | 0;
    $7 = $6;
    $b = $6 + 16 | 0;
    $8 = $BF;
    HEAP32[$8 >> 2] = HEAP32[$b >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$b + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$b + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$b + 12 >> 2] | 0;
    HEAP32[$8 + 16 >> 2] = HEAP32[$b + 16 >> 2] | 0;
    HEAP32[$8 + 20 >> 2] = HEAP32[$b + 20 >> 2] | 0;
    HEAP32[$8 + 24 >> 2] = HEAP32[$b + 24 >> 2] | 0;
    HEAP32[$8 + 28 >> 2] = HEAP32[$b + 28 >> 2] | 0;
    $x = $n + 32 | 0;
    $9 = +HEAPF64[$x >> 3];
    $x4 = $BF | 0;
    $10 = +HEAPF64[$x4 >> 3];
    $add = $9 + $10;
    HEAPF64[$x4 >> 3] = $add;
    $y = $n + 40 | 0;
    $11 = +HEAPF64[$y >> 3];
    $y8 = $BF + 8 | 0;
    $12 = +HEAPF64[$y8 >> 3];
    $add9 = $11 + $12;
    HEAPF64[$y8 >> 3] = $add9;
    $13 = +HEAPF64[$x >> 3];
    $UR = $BF + 16 | 0;
    $x13 = $UR | 0;
    $14 = +HEAPF64[$x13 >> 3];
    $add14 = $13 + $14;
    HEAPF64[$x13 >> 3] = $add14;
    $15 = +HEAPF64[$y >> 3];
    $y19 = $BF + 24 | 0;
    $16 = +HEAPF64[$y19 >> 3];
    $add20 = $15 + $16;
    HEAPF64[$y19 >> 3] = $add20;
    if ($5) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $flags = $job + 152 | 0;
    $17 = HEAP32[$flags >> 2] | 0;
    $and = $17 & 4;
    $tobool22 = ($and | 0) == 0;
    if ($tobool22) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $18 = HEAP32[$url >> 2] | 0;
    $tooltip = $0 + 180 | 0;
    $19 = HEAP32[$tooltip >> 2] | 0;
    $target = $0 + 196 | 0;
    $20 = HEAP32[$target >> 2] | 0;
    $id = $0 + 164 | 0;
    $21 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $18, $19, $20, $21);
    label = 7;
    break;
   case 7:
    $call = _stylenode($job, $n) | 0;
    _pencolor($job, $n);
    $and24 = $call & 1;
    $tobool25 = ($and24 | 0) == 0;
    if ($tobool25) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call27 = _findFill($n) | 0;
    _gvrender_set_fillcolor($job, $call27);
    label = 9;
    break;
   case 9:
    $shape = $n + 24 | 0;
    $22 = HEAP32[$shape >> 2] | 0;
    $name = $22 | 0;
    $23 = HEAP32[$name >> 2] | 0;
    $24 = HEAP8[$23] | 0;
    $cmp = $24 << 24 >> 24 == 77;
    if ($cmp) {
      label = 10;
      break;
    } else {
      $style_0 = $call;
      label = 11;
      break;
    }
   case 10:
    $call36 = _strcmp($23 | 0, 110408) | 0;
    $tobool37 = ($call36 | 0) == 0;
    $or = $call | 2;
    $or_call = $tobool37 ? $or : $call;
    $style_0 = $or_call;
    label = 11;
    break;
   case 11:
    $and40 = $style_0 & 998;
    $tobool41 = ($and40 | 0) == 0;
    if ($tobool41) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $arrayidx = $AF | 0;
    $25 = $AF;
    HEAP32[$25 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$25 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$25 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$25 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $arrayidx44 = $AF + 32 | 0;
    $26 = $arrayidx44;
    $27 = $UR;
    HEAP32[$26 >> 2] = HEAP32[$27 >> 2] | 0;
    HEAP32[$26 + 4 >> 2] = HEAP32[$27 + 4 >> 2] | 0;
    HEAP32[$26 + 8 >> 2] = HEAP32[$27 + 8 >> 2] | 0;
    HEAP32[$26 + 12 >> 2] = HEAP32[$27 + 12 >> 2] | 0;
    $x47 = $arrayidx44 | 0;
    $28 = +HEAPF64[$x47 >> 3];
    $x49 = $AF + 16 | 0;
    HEAPF64[$x49 >> 3] = $28;
    $y51 = $AF + 8 | 0;
    $29 = +HEAPF64[$y51 >> 3];
    $y53 = $AF + 24 | 0;
    HEAPF64[$y53 >> 3] = $29;
    $x55 = $AF | 0;
    $30 = +HEAPF64[$x55 >> 3];
    $x57 = $AF + 48 | 0;
    HEAPF64[$x57 >> 3] = $30;
    $y59 = $AF + 40 | 0;
    $31 = +HEAPF64[$y59 >> 3];
    $y61 = $AF + 56 | 0;
    HEAPF64[$y61 >> 3] = $31;
    $and62 = $style_0 & 1;
    _node_round_corners($job, $n, $arrayidx, 4, $style_0, $and62);
    label = 14;
    break;
   case 13:
    $style_0_tr = $style_0 & 255;
    $conv64 = $style_0_tr & 1;
    _gvrender_box($job, $BF, $conv64);
    label = 14;
    break;
   case 14:
    _gen_fields($job, $n, $7);
    if ($5) {
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $flags68 = $job + 152 | 0;
    $32 = HEAP32[$flags68 >> 2] | 0;
    $and69 = $32 & 4;
    $tobool70 = ($and69 | 0) == 0;
    if ($tobool70) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $33 = HEAP32[$url >> 2] | 0;
    $tooltip73 = $0 + 180 | 0;
    $34 = HEAP32[$tooltip73 >> 2] | 0;
    $target74 = $0 + 196 | 0;
    $35 = HEAP32[$target74 >> 2] | 0;
    $id75 = $0 + 164 | 0;
    $36 = HEAP32[$id75 >> 2] | 0;
    _gvrender_begin_anchor($job, $33, $34, $35, $36);
    label = 17;
    break;
   case 17:
    _gvrender_end_anchor($job);
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return;
  }
}
function _stylenode($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $istyle = 0, $call = 0, $tobool = 0, $0 = 0, $tobool1 = 0, $1 = 0, $index = 0, $2 = 0, $call2 = 0, $tobool3 = 0, $3 = 0, $tobool5 = 0, $call7 = 0.0, $4 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $istyle = __stackBase__ | 0;
    $call = _checkStyle($n, $istyle) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _gvrender_set_style($job, $call);
    label = 4;
    break;
   case 4:
    $0 = HEAP32[41576] | 0;
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $1 = $n | 0;
    $index = $0 + 8 | 0;
    $2 = HEAP32[$index >> 2] | 0;
    $call2 = _agxget($1, $2) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP8[$call2] | 0;
    $tobool5 = $3 << 24 >> 24 == 0;
    if ($tobool5) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call7 = +_late_double($1, $0, 1.0, 0.0);
    _gvrender_set_penwidth($job, $call7);
    label = 8;
    break;
   case 8:
    $4 = HEAP32[$istyle >> 2] | 0;
    STACKTOP = __stackBase__;
    return $4 | 0;
  }
  return 0;
}
function _pencolor($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $0 = 0, $1 = 0, $call = 0, $2 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $1 = HEAP32[41616] | 0;
    $call = _late_nnstring($0, $1, 108168) | 0;
    $2 = HEAP8[$call] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _gvrender_set_pencolor($job, $call);
    label = 5;
    break;
   case 4:
    _gvrender_set_pencolor($job, 107704);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _findFill($n) {
  $n = $n | 0;
  return _findFillDflt($n, 107272) | 0;
}
function _node_round_corners($job, $n, $AF, $sides, $style, $filled) {
  $job = $job | 0;
  $n = $n | 0;
  $AF = $AF | 0;
  $sides = $sides | 0;
  $style = $style | 0;
  $filled = $filled | 0;
  var $call = 0;
  $call = _findFill($n) | 0;
  _round_corners($job, $call, _findPen($n) | 0, $AF, $sides, $style, $filled);
  return;
}
function _add_pointf796($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $add4 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $add4 = +HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p >> 3] + +HEAPF64[$q >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $add4;
  STACKTOP = __stackBase__;
  return;
}
function _mid_pointf797($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $div5 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $div5 = (+HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3]) * .5;
  HEAPF64[$agg_result >> 3] = (+HEAPF64[$p >> 3] + +HEAPF64[$q >> 3]) * .5;
  HEAPF64[$agg_result + 8 >> 3] = $div5;
  STACKTOP = __stackBase__;
  return;
}
function _gen_fields($job, $n, $f) {
  $job = $job | 0;
  $n = $n | 0;
  $f = $f | 0;
  var $AF = 0, $coord = 0, $agg_tmp = 0, $tmp = 0, $tmp42 = 0, $tmp45 = 0, $lp = 0, $0 = 0, $tobool = 0, $pos = 0, $LL = 0, $UR = 0, $coord3 = 0, $1 = 0, $2 = 0, $3 = 0, $coord6 = 0, $4 = 0, $5 = 0, $n_flds = 0, $6 = 0, $cmp25 = 0, $LR = 0, $arrayidx23 = 0, $fld24 = 0, $7 = 0, $x34 = 0, $y36 = 0, $y38 = 0, $arrayidx40 = 0, $8 = 0, $9 = 0, $arrayidx43 = 0, $10 = 0, $11 = 0, $fld = 0, $12 = 0, $x = 0, $x16 = 0, $y22 = 0, $fld47 = 0, $i_026 = 0, $cmp7 = 0, $13 = 0, $tobool9 = 0, $14 = 0, $arrayidx11 = 0, $15 = 0, $LL13 = 0, $16 = 0, $17 = 0.0, $18 = 0, $arrayidx18 = 0, $19 = 0, $y = 0, $20 = 0.0, $21 = 0, $arrayidx25 = 0, $22 = 0, $UR27 = 0, $23 = 0, $24 = 0, $arrayidx29 = 0, $25 = 0, $x32 = 0, $26 = 0.0, $27 = 0.0, $28 = 0, $arrayidx48 = 0, $29 = 0, $inc = 0, $30 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 112 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $AF = __stackBase__ | 0;
    $coord = __stackBase__ + 32 | 0;
    $agg_tmp = __stackBase__ + 48 | 0;
    $tmp = __stackBase__ + 64 | 0;
    $tmp42 = __stackBase__ + 80 | 0;
    $tmp45 = __stackBase__ + 96 | 0;
    $lp = $f + 52 | 0;
    $0 = HEAP32[$lp >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $pos = $0 + 56 | 0;
    $LL = $f + 16 | 0;
    $UR = $f + 32 | 0;
    _mid_pointf797($agg_tmp, $LL, $UR);
    $coord3 = $n + 32 | 0;
    _add_pointf796($tmp, $agg_tmp, $coord3);
    $1 = $pos;
    $2 = $tmp;
    HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    $3 = HEAP32[$lp >> 2] | 0;
    _emit_label($job, 10, $3);
    _pencolor($job, $n);
    label = 4;
    break;
   case 4:
    $coord6 = $n + 32 | 0;
    $4 = $coord;
    $5 = $coord6;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $n_flds = $f + 48 | 0;
    $6 = HEAP32[$n_flds >> 2] | 0;
    $cmp25 = ($6 | 0) > 0;
    if ($cmp25) {
      label = 5;
      break;
    } else {
      label = 12;
      break;
    }
   case 5:
    $LR = $f + 64 | 0;
    $arrayidx23 = $AF + 16 | 0;
    $fld24 = $f + 56 | 0;
    $7 = $arrayidx23;
    $x34 = $AF | 0;
    $y36 = $AF + 24 | 0;
    $y38 = $AF + 8 | 0;
    $arrayidx40 = $AF | 0;
    $8 = $AF;
    $9 = $tmp42;
    $arrayidx43 = $AF + 16 | 0;
    $10 = $arrayidx43;
    $11 = $tmp45;
    $fld = $f + 56 | 0;
    $12 = $AF;
    $x = $AF | 0;
    $x16 = $AF + 16 | 0;
    $y22 = $AF + 24 | 0;
    $fld47 = $f + 56 | 0;
    $i_026 = 0;
    label = 6;
    break;
   case 6:
    $cmp7 = ($i_026 | 0) > 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $13 = HEAP8[$LR] | 0;
    $tobool9 = $13 << 24 >> 24 == 0;
    if ($tobool9) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $14 = HEAP32[$fld >> 2] | 0;
    $arrayidx11 = $14 + ($i_026 << 2) | 0;
    $15 = HEAP32[$arrayidx11 >> 2] | 0;
    $LL13 = $15 + 16 | 0;
    $16 = $LL13;
    HEAP32[$12 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $17 = +HEAPF64[$x >> 3];
    HEAPF64[$x16 >> 3] = $17;
    $18 = HEAP32[$fld >> 2] | 0;
    $arrayidx18 = $18 + ($i_026 << 2) | 0;
    $19 = HEAP32[$arrayidx18 >> 2] | 0;
    $y = $19 + 40 | 0;
    $20 = +HEAPF64[$y >> 3];
    HEAPF64[$y22 >> 3] = $20;
    label = 10;
    break;
   case 9:
    $21 = HEAP32[$fld24 >> 2] | 0;
    $arrayidx25 = $21 + ($i_026 << 2) | 0;
    $22 = HEAP32[$arrayidx25 >> 2] | 0;
    $UR27 = $22 + 32 | 0;
    $23 = $UR27;
    HEAP32[$7 >> 2] = HEAP32[$23 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$23 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$23 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$23 + 12 >> 2] | 0;
    $24 = HEAP32[$fld24 >> 2] | 0;
    $arrayidx29 = $24 + ($i_026 << 2) | 0;
    $25 = HEAP32[$arrayidx29 >> 2] | 0;
    $x32 = $25 + 16 | 0;
    $26 = +HEAPF64[$x32 >> 3];
    HEAPF64[$x34 >> 3] = $26;
    $27 = +HEAPF64[$y36 >> 3];
    HEAPF64[$y38 >> 3] = $27;
    label = 10;
    break;
   case 10:
    _add_pointf796($tmp42, $arrayidx40, $coord);
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    _add_pointf796($tmp45, $arrayidx43, $coord);
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    _gvrender_polyline($job, $arrayidx40, 2);
    label = 11;
    break;
   case 11:
    $28 = HEAP32[$fld47 >> 2] | 0;
    $arrayidx48 = $28 + ($i_026 << 2) | 0;
    $29 = HEAP32[$arrayidx48 >> 2] | 0;
    _gen_fields($job, $n, $29);
    $inc = $i_026 + 1 | 0;
    $30 = HEAP32[$n_flds >> 2] | 0;
    $cmp = ($inc | 0) < ($30 | 0);
    if ($cmp) {
      $i_026 = $inc;
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _findPen($n) {
  $n = $n | 0;
  var $call = 0;
  $call = _late_nnstring($n | 0, HEAP32[41616] | 0, 108168) | 0;
  return ((HEAP8[$call] | 0) == 0 ? 107704 : $call) | 0;
}
function _findFillDflt($n, $dflt) {
  $n = $n | 0;
  $dflt = $dflt | 0;
  var $0 = 0, $1 = 0, $call = 0, $2 = 0, $tobool = 0, $3 = 0, $call1 = 0, $4 = 0, $tobool3 = 0, $dflt_call1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $1 = HEAP32[41604] | 0;
    $call = _late_nnstring($0, $1, 108168) | 0;
    $2 = HEAP8[$call] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $3 = HEAP32[41616] | 0;
    $call1 = _late_nnstring($0, $3, 108168) | 0;
    $4 = HEAP8[$call1] | 0;
    $tobool3 = $4 << 24 >> 24 == 0;
    $dflt_call1 = $tobool3 ? $dflt : $call1;
    return $dflt_call1 | 0;
   case 4:
    return $call | 0;
  }
  return 0;
}
function _checkStyle($n, $flagp) {
  $n = $n | 0;
  $flagp = $flagp | 0;
  var $0 = 0, $1 = 0, $call = 0, $2 = 0, $tobool = 0, $call1 = 0, $3 = 0, $tobool23337 = 0, $or28 = 0, $or16 = 0, $4 = 0, $pp_0_ph39 = 0, $istyle_0_ph38 = 0, $5 = 0, $pp_034 = 0, $6 = 0, $cmp = 0, $call5 = 0, $tobool6 = 0, $or = 0, $incdec_ptr = 0, $_pr = 0, $7 = 0, $cmp10 = 0, $call13 = 0, $tobool14 = 0, $qp_0 = 0, $incdec_ptr17 = 0, $8 = 0, $9 = 0, $tobool18 = 0, $10 = 0, $cmp22 = 0, $call25 = 0, $tobool26 = 0, $qp_1 = 0, $incdec_ptr30 = 0, $11 = 0, $12 = 0, $tobool33 = 0, $_pr27 = 0, $13 = 0, $cmp38 = 0, $call41 = 0, $tobool42 = 0, $or44 = 0, $incdec_ptr45 = 0, $istyle_0_ph_be = 0, $pp_0_ph_be = 0, $14 = 0, $tobool233 = 0, $incdec_ptr47 = 0, $15 = 0, $tobool2 = 0, $istyle_1 = 0, $pstyle_0 = 0, $shape = 0, $16 = 0, $polygon = 0, $17 = 0, $tobool52 = 0, $option = 0, $18 = 0, $or54 = 0, $istyle_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $1 = HEAP32[41560] | 0;
    $call = _late_nnstring($0, $1, 108168) | 0;
    $2 = HEAP8[$call] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      $pstyle_0 = 0;
      $istyle_1 = 0;
      label = 23;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _parse_style($call) | 0;
    $3 = HEAP32[1820] | 0;
    $tobool23337 = ($3 | 0) == 0;
    if ($tobool23337) {
      $pstyle_0 = 7280;
      $istyle_1 = 0;
      label = 23;
      break;
    } else {
      $istyle_0_ph38 = 0;
      $pp_0_ph39 = 7280;
      $4 = $3;
      label = 6;
      break;
    }
   case 4:
    $or28 = $istyle_0_ph38 | 4;
    $pp_0_ph_be = $pp_034;
    $istyle_0_ph_be = $or28;
    label = 21;
    break;
   case 5:
    $or16 = $istyle_0_ph38 | 2;
    $pp_0_ph_be = $pp_034;
    $istyle_0_ph_be = $or16;
    label = 21;
    break;
   case 6:
    $pp_034 = $pp_0_ph39;
    $5 = $4;
    label = 7;
    break;
   case 7:
    $6 = HEAP8[$5] | 0;
    $cmp = $6 << 24 >> 24 == 102;
    if ($cmp) {
      label = 8;
      break;
    } else {
      $7 = $6;
      label = 11;
      break;
    }
   case 8:
    $call5 = _strcmp($5 | 0, 106944) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $or = $istyle_0_ph38 | 1;
    $incdec_ptr = $pp_034 + 4 | 0;
    $pp_0_ph_be = $incdec_ptr;
    $istyle_0_ph_be = $or;
    label = 21;
    break;
   case 10:
    $_pr = HEAP8[$5] | 0;
    $7 = $_pr;
    label = 11;
    break;
   case 11:
    $cmp10 = $7 << 24 >> 24 == 114;
    if ($cmp10) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $call13 = _strcmp($5 | 0, 106552) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      $qp_0 = $pp_034;
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $incdec_ptr17 = $qp_0 + 4 | 0;
    $8 = HEAP32[$incdec_ptr17 >> 2] | 0;
    HEAP32[$qp_0 >> 2] = $8;
    $9 = HEAP32[$incdec_ptr17 >> 2] | 0;
    $tobool18 = ($9 | 0) == 0;
    if ($tobool18) {
      label = 5;
      break;
    } else {
      $qp_0 = $incdec_ptr17;
      label = 13;
      break;
    }
   case 14:
    $10 = HEAP8[$5] | 0;
    $cmp22 = $10 << 24 >> 24 == 100;
    if ($cmp22) {
      label = 15;
      break;
    } else {
      $13 = $10;
      label = 18;
      break;
    }
   case 15:
    $call25 = _strcmp($5 | 0, 106216) | 0;
    $tobool26 = ($call25 | 0) == 0;
    if ($tobool26) {
      $qp_1 = $pp_034;
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $incdec_ptr30 = $qp_1 + 4 | 0;
    $11 = HEAP32[$incdec_ptr30 >> 2] | 0;
    HEAP32[$qp_1 >> 2] = $11;
    $12 = HEAP32[$incdec_ptr30 >> 2] | 0;
    $tobool33 = ($12 | 0) == 0;
    if ($tobool33) {
      label = 4;
      break;
    } else {
      $qp_1 = $incdec_ptr30;
      label = 16;
      break;
    }
   case 17:
    $_pr27 = HEAP8[$5] | 0;
    $13 = $_pr27;
    label = 18;
    break;
   case 18:
    $cmp38 = $13 << 24 >> 24 == 105;
    if ($cmp38) {
      label = 19;
      break;
    } else {
      label = 22;
      break;
    }
   case 19:
    $call41 = _strcmp($5 | 0, 105840) | 0;
    $tobool42 = ($call41 | 0) == 0;
    if ($tobool42) {
      label = 20;
      break;
    } else {
      label = 22;
      break;
    }
   case 20:
    $or44 = $istyle_0_ph38 | 16;
    $incdec_ptr45 = $pp_034 + 4 | 0;
    $pp_0_ph_be = $incdec_ptr45;
    $istyle_0_ph_be = $or44;
    label = 21;
    break;
   case 21:
    $14 = HEAP32[$pp_0_ph_be >> 2] | 0;
    $tobool233 = ($14 | 0) == 0;
    if ($tobool233) {
      $pstyle_0 = 7280;
      $istyle_1 = $istyle_0_ph_be;
      label = 23;
      break;
    } else {
      $istyle_0_ph38 = $istyle_0_ph_be;
      $pp_0_ph39 = $pp_0_ph_be;
      $4 = $14;
      label = 6;
      break;
    }
   case 22:
    $incdec_ptr47 = $pp_034 + 4 | 0;
    $15 = HEAP32[$incdec_ptr47 >> 2] | 0;
    $tobool2 = ($15 | 0) == 0;
    if ($tobool2) {
      $pstyle_0 = 7280;
      $istyle_1 = $istyle_0_ph38;
      label = 23;
      break;
    } else {
      $pp_034 = $incdec_ptr47;
      $5 = $15;
      label = 7;
      break;
    }
   case 23:
    $shape = $n + 24 | 0;
    $16 = HEAP32[$shape >> 2] | 0;
    $polygon = $16 + 8 | 0;
    $17 = HEAP32[$polygon >> 2] | 0;
    $tobool52 = ($17 | 0) == 0;
    if ($tobool52) {
      $istyle_2 = $istyle_1;
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $option = $17 + 40 | 0;
    $18 = HEAP32[$option >> 2] | 0;
    $or54 = $18 | $istyle_1;
    $istyle_2 = $or54;
    label = 25;
    break;
   case 25:
    HEAP32[$flagp >> 2] = $istyle_2;
    return $pstyle_0 | 0;
  }
  return 0;
}
function _map_rec_port($f, $str) {
  $f = $f | 0;
  $str = $str | 0;
  var $id = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $cmp = 0, $call = 0, $tobool6 = 0, $fld = 0, $n_flds = 0, $3 = 0, $sub_0 = 0, $cmp7 = 0, $4 = 0, $arrayidx = 0, $5 = 0, $call9 = 0, $tobool10 = 0, $inc = 0, $rv_1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $id = $f + 60 | 0;
    $0 = HEAP32[$id >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$0] | 0;
    $2 = HEAP8[$str] | 0;
    $cmp = $1 << 24 >> 24 == $2 << 24 >> 24;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call = _strcmp($0 | 0, $str | 0) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      $rv_1 = $f;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $fld = $f + 56 | 0;
    $n_flds = $f + 48 | 0;
    $3 = HEAP32[$n_flds >> 2] | 0;
    $sub_0 = 0;
    label = 6;
    break;
   case 6:
    $cmp7 = ($sub_0 | 0) < ($3 | 0);
    if ($cmp7) {
      label = 7;
      break;
    } else {
      $rv_1 = 0;
      label = 8;
      break;
    }
   case 7:
    $4 = HEAP32[$fld >> 2] | 0;
    $arrayidx = $4 + ($sub_0 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $call9 = _map_rec_port($5, $str) | 0;
    $tobool10 = ($call9 | 0) == 0;
    $inc = $sub_0 + 1 | 0;
    if ($tobool10) {
      $sub_0 = $inc;
      label = 6;
      break;
    } else {
      $rv_1 = $call9;
      label = 8;
      break;
    }
   case 8:
    return $rv_1 | 0;
  }
  return 0;
}
function _free_field($f) {
  $f = $f | 0;
  var $n_flds = 0, $0 = 0, $cmp8 = 0, $fld = 0, $i_09 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, $id = 0, $4 = 0, $lp = 0, $5 = 0, $fld1 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_flds = $f + 48 | 0;
    $0 = HEAP32[$n_flds >> 2] | 0;
    $cmp8 = ($0 | 0) > 0;
    if ($cmp8) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $fld = $f + 56 | 0;
    $i_09 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$fld >> 2] | 0;
    $arrayidx = $1 + ($i_09 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _free_field($2);
    $inc = $i_09 + 1 | 0;
    $3 = HEAP32[$n_flds >> 2] | 0;
    $cmp = ($inc | 0) < ($3 | 0);
    if ($cmp) {
      $i_09 = $inc;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $id = $f + 60 | 0;
    $4 = HEAP32[$id >> 2] | 0;
    _free($4);
    $lp = $f + 52 | 0;
    $5 = HEAP32[$lp >> 2] | 0;
    _free_label($5);
    $fld1 = $f + 56 | 0;
    $6 = HEAP32[$fld1 >> 2] | 0;
    $7 = $6;
    _free($7);
    $8 = $f;
    _free($8);
    return;
  }
}
function _poly_free($n) {
  $n = $n | 0;
  var $shape_info = 0, $0 = 0, $tobool = 0, $vertices = 0, $1 = 0, $2 = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $shape_info = $n + 28 | 0;
    $0 = HEAP32[$shape_info >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $vertices = $0 + 44 | 0;
    $1 = $vertices;
    $2 = HEAP32[$1 >> 2] | 0;
    $3 = $2;
    _free($3);
    _free($0);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _point_inside($inside_context, $p) {
  $inside_context = $inside_context | 0;
  $p = $p | 0;
  var $tmp = 0, $n1 = 0, $0 = 0, $graph = 0, $1 = 0, $rankdir = 0, $2 = 0, $and = 0, $mul = 0, $P_sroa_0_0__idx = 0, $P_sroa_0_0_copyload = 0.0, $P_sroa_1_8__idx8 = 0, $P_sroa_1_8_copyload = 0.0, $3 = 0, $cmp = 0, $shape_info = 0, $4 = 0, $peripheries = 0, $5 = 0, $6 = 0, $sub = 0, $mul5 = 0, $cmp6 = 0, $mul5_op = 0, $add9 = 0, $vertices = 0, $7 = 0, $8 = 0, $x = 0, $9 = 0.0, $call = 0.0, $10 = 0.0, $cmp10 = 0, $call11 = 0.0, $cmp12 = 0, $call17 = 0.0, $11 = 0.0, $cmp18 = 0, $conv19 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $n1 = $inside_context;
    $0 = HEAP32[$n1 >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $rankdir = $1 + 156 | 0;
    $2 = HEAP32[$rankdir >> 2] | 0;
    $and = $2 & 3;
    $mul = $and * 90 & -1;
    _ccwrotatepf($tmp, $p, $mul);
    $P_sroa_0_0__idx = $tmp | 0;
    $P_sroa_0_0_copyload = +HEAPF64[$P_sroa_0_0__idx >> 3];
    $P_sroa_1_8__idx8 = $tmp + 8 | 0;
    $P_sroa_1_8_copyload = +HEAPF64[$P_sroa_1_8__idx8 >> 3];
    $3 = HEAP32[1776] | 0;
    $cmp = ($0 | 0) == ($3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $shape_info = $0 + 28 | 0;
    $4 = HEAP32[$shape_info >> 2] | 0;
    $peripheries = $4 + 4 | 0;
    $5 = $peripheries;
    $6 = HEAP32[$5 >> 2] | 0;
    $sub = $6 << 1;
    $mul5 = $sub - 2 | 0;
    $cmp6 = ($mul5 | 0) < 0;
    $mul5_op = $mul5 | 1;
    $add9 = $cmp6 ? 1 : $mul5_op;
    $vertices = $4 + 44 | 0;
    $7 = $vertices;
    $8 = HEAP32[$7 >> 2] | 0;
    $x = $8 + ($add9 << 4) | 0;
    $9 = +HEAPF64[$x >> 3];
    HEAPF64[887] = $9;
    HEAP32[1776] = $0;
    label = 4;
    break;
   case 4:
    $call = +Math_abs(+$P_sroa_0_0_copyload);
    $10 = +HEAPF64[887];
    $cmp10 = $call > $10;
    if ($cmp10) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call11 = +Math_abs(+$P_sroa_1_8_copyload);
    $cmp12 = $call11 > $10;
    if ($cmp12) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call17 = +_hypot(+$P_sroa_0_0_copyload, +$P_sroa_1_8_copyload);
    $11 = +HEAPF64[887];
    $cmp18 = $call17 <= $11;
    $conv19 = $cmp18 & 1;
    $retval_0 = $conv19;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _point_gencode($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $style = 0, $obj1 = 0, $0 = 0, $url = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $4 = 0, $_mask = 0, $tobool2 = 0, $flags = 0, $5 = 0, $and = 0, $tobool4 = 0, $6 = 0, $tooltip = 0, $7 = 0, $target = 0, $8 = 0, $id = 0, $9 = 0, $10 = 0, $shape_info = 0, $11 = 0, $vertices6 = 0, $12 = 0, $13 = 0, $sides7 = 0, $14 = 0, $15 = 0, $peripheries8 = 0, $16 = 0, $17 = 0, $18 = 0, $cmp = 0, $add = 0, $19 = 0, $tobool10 = 0, $20 = 0, $mul = 0, $call = 0, $mul11 = 0, $call12 = 0, $call_sink = 0, $21 = 0, $call14 = 0, $22 = 0, $and15 = 0, $tobool16 = 0, $gui_state = 0, $23 = 0, $conv = 0, $and20 = 0, $tobool21 = 0, $24 = 0, $25 = 0, $call23 = 0, $26 = 0, $call24 = 0, $and29 = 0, $tobool30 = 0, $27 = 0, $28 = 0, $call32 = 0, $29 = 0, $call33 = 0, $and38 = 0, $tobool39 = 0, $30 = 0, $31 = 0, $call41 = 0, $32 = 0, $call42 = 0, $and47 = 0, $tobool48 = 0, $33 = 0, $34 = 0, $call50 = 0, $35 = 0, $call51 = 0, $call53 = 0, $color_0 = 0, $cmp58 = 0, $36 = 0, $tobool61 = 0, $cmp6568 = 0, $peripheries_072 = 0, $cmp6866 = 0, $x75 = 0, $y81 = 0, $filled_070 = 0, $j_069 = 0, $mul71 = 0, $37 = 0, $i_067 = 0, $add72 = 0, $P_sroa_0_0__idx = 0, $P_sroa_0_0_copyload = 0.0, $P_sroa_1_8__idx12 = 0, $P_sroa_1_8_copyload = 0.0, $38 = 0.0, $add76 = 0.0, $x78 = 0, $39 = 0.0, $add82 = 0.0, $y84 = 0, $inc = 0, $cmp68 = 0, $40 = 0, $inc86 = 0, $cmp65 = 0, $flags90 = 0, $41 = 0, $and91 = 0, $tobool92 = 0, $42 = 0, $tooltip95 = 0, $43 = 0, $target96 = 0, $44 = 0, $id97 = 0, $45 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $style = __stackBase__ | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url = $0 + 160 | 0;
    $1 = HEAP32[$url >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = $0 + 212 | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $_mask = $4 & 1;
    $tobool2 = ($_mask | 0) == 0;
    if ($tobool2) {
      $10 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $flags = $job + 152 | 0;
    $5 = HEAP32[$flags >> 2] | 0;
    $and = $5 & 4;
    $tobool4 = ($and | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      $10 = 1;
      label = 6;
      break;
    }
   case 5:
    $6 = HEAP32[$url >> 2] | 0;
    $tooltip = $0 + 180 | 0;
    $7 = HEAP32[$tooltip >> 2] | 0;
    $target = $0 + 196 | 0;
    $8 = HEAP32[$target >> 2] | 0;
    $id = $0 + 164 | 0;
    $9 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $6, $7, $8, $9);
    $10 = 1;
    label = 6;
    break;
   case 6:
    $shape_info = $n + 28 | 0;
    $11 = HEAP32[$shape_info >> 2] | 0;
    $vertices6 = $11 + 44 | 0;
    $12 = $vertices6;
    $13 = HEAP32[$12 >> 2] | 0;
    $sides7 = $11 + 8 | 0;
    $14 = $sides7;
    $15 = HEAP32[$14 >> 2] | 0;
    $peripheries8 = $11 + 4 | 0;
    $16 = $peripheries8;
    $17 = HEAP32[$16 >> 2] | 0;
    $18 = HEAP32[1778] | 0;
    $cmp = ($18 | 0) < ($15 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $add = $15 + 2 | 0;
    HEAP32[1778] = $add;
    $19 = HEAP32[1780] | 0;
    $tobool10 = ($19 | 0) == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $20 = $19;
    $mul = $add << 4;
    $call = _grealloc($20, $mul) | 0;
    $call_sink = $call;
    label = 10;
    break;
   case 9:
    $mul11 = $add << 4;
    $call12 = _gmalloc($mul11) | 0;
    $call_sink = $call12;
    label = 10;
    break;
   case 10:
    $21 = $call_sink;
    HEAP32[1780] = $21;
    label = 11;
    break;
   case 11:
    $call14 = _checkStyle($n, $style) | 0;
    $22 = HEAP32[$style >> 2] | 0;
    $and15 = $22 & 16;
    $tobool16 = ($and15 | 0) == 0;
    if ($tobool16) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _gvrender_set_style($job, 7080);
    label = 14;
    break;
   case 13:
    _gvrender_set_style($job, 7084);
    label = 14;
    break;
   case 14:
    $gui_state = $n + 133 | 0;
    $23 = HEAP8[$gui_state] | 0;
    $conv = $23 & 255;
    $and20 = $conv & 1;
    $tobool21 = ($and20 | 0) == 0;
    if ($tobool21) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $24 = $n | 0;
    $25 = HEAP32[41618] | 0;
    $call23 = _late_nnstring($24, $25, 105440) | 0;
    _gvrender_set_pencolor($job, $call23);
    $26 = HEAP32[41620] | 0;
    $call24 = _late_nnstring($24, $26, 105128) | 0;
    _gvrender_set_fillcolor($job, $call24);
    $color_0 = $call24;
    label = 23;
    break;
   case 16:
    $and29 = $conv & 2;
    $tobool30 = ($and29 | 0) == 0;
    if ($tobool30) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $27 = $n | 0;
    $28 = HEAP32[41570] | 0;
    $call32 = _late_nnstring($27, $28, 104760) | 0;
    _gvrender_set_pencolor($job, $call32);
    $29 = HEAP32[41572] | 0;
    $call33 = _late_nnstring($27, $29, 104240) | 0;
    _gvrender_set_fillcolor($job, $call33);
    $color_0 = $call33;
    label = 23;
    break;
   case 18:
    $and38 = $conv & 8;
    $tobool39 = ($and38 | 0) == 0;
    if ($tobool39) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $30 = $n | 0;
    $31 = HEAP32[41610] | 0;
    $call41 = _late_nnstring($30, $31, 103768) | 0;
    _gvrender_set_pencolor($job, $call41);
    $32 = HEAP32[41612] | 0;
    $call42 = _late_nnstring($30, $32, 103376) | 0;
    _gvrender_set_fillcolor($job, $call42);
    $color_0 = $call42;
    label = 23;
    break;
   case 20:
    $and47 = $conv & 4;
    $tobool48 = ($and47 | 0) == 0;
    if ($tobool48) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $33 = $n | 0;
    $34 = HEAP32[41554] | 0;
    $call50 = _late_nnstring($33, $34, 103016) | 0;
    _gvrender_set_pencolor($job, $call50);
    $35 = HEAP32[41556] | 0;
    $call51 = _late_nnstring($33, $35, 102672) | 0;
    _gvrender_set_fillcolor($job, $call51);
    $color_0 = $call51;
    label = 23;
    break;
   case 22:
    $call53 = _findFillDflt($n, 107704) | 0;
    _gvrender_set_fillcolor($job, $call53);
    _pencolor($job, $n);
    $color_0 = $call53;
    label = 23;
    break;
   case 23:
    $cmp58 = ($17 | 0) == 0;
    if ($cmp58) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $36 = HEAP8[$color_0] | 0;
    $tobool61 = $36 << 24 >> 24 == 0;
    if ($tobool61) {
      $peripheries_072 = 1;
      label = 27;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    _gvrender_set_pencolor($job, $color_0);
    $peripheries_072 = 1;
    label = 27;
    break;
   case 26:
    $cmp6568 = ($17 | 0) > 0;
    if ($cmp6568) {
      $peripheries_072 = $17;
      label = 27;
      break;
    } else {
      label = 32;
      break;
    }
   case 27:
    $cmp6866 = ($15 | 0) > 0;
    $x75 = $n + 32 | 0;
    $y81 = $n + 40 | 0;
    $j_069 = 0;
    $filled_070 = 1;
    label = 28;
    break;
   case 28:
    if ($cmp6866) {
      label = 29;
      break;
    } else {
      label = 31;
      break;
    }
   case 29:
    $mul71 = Math_imul($j_069, $15);
    $37 = HEAP32[1780] | 0;
    $i_067 = 0;
    label = 30;
    break;
   case 30:
    $add72 = $i_067 + $mul71 | 0;
    $P_sroa_0_0__idx = $13 + ($add72 << 4) | 0;
    $P_sroa_0_0_copyload = +HEAPF64[$P_sroa_0_0__idx >> 3];
    $P_sroa_1_8__idx12 = $13 + ($add72 << 4) + 8 | 0;
    $P_sroa_1_8_copyload = +HEAPF64[$P_sroa_1_8__idx12 >> 3];
    $38 = +HEAPF64[$x75 >> 3];
    $add76 = $P_sroa_0_0_copyload + $38;
    $x78 = $37 + ($i_067 << 4) | 0;
    HEAPF64[$x78 >> 3] = $add76;
    $39 = +HEAPF64[$y81 >> 3];
    $add82 = $P_sroa_1_8_copyload + $39;
    $y84 = $37 + ($i_067 << 4) + 8 | 0;
    HEAPF64[$y84 >> 3] = $add82;
    $inc = $i_067 + 1 | 0;
    $cmp68 = ($inc | 0) < ($15 | 0);
    if ($cmp68) {
      $i_067 = $inc;
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $40 = HEAP32[1780] | 0;
    _gvrender_ellipse($job, $40, 0, $filled_070);
    $inc86 = $j_069 + 1 | 0;
    $cmp65 = ($inc86 | 0) < ($peripheries_072 | 0);
    if ($cmp65) {
      $j_069 = $inc86;
      $filled_070 = 0;
      label = 28;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    if ($10) {
      label = 33;
      break;
    } else {
      label = 36;
      break;
    }
   case 33:
    $flags90 = $job + 152 | 0;
    $41 = HEAP32[$flags90 >> 2] | 0;
    $and91 = $41 & 4;
    $tobool92 = ($and91 | 0) == 0;
    if ($tobool92) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $42 = HEAP32[$url >> 2] | 0;
    $tooltip95 = $0 + 180 | 0;
    $43 = HEAP32[$tooltip95 >> 2] | 0;
    $target96 = $0 + 196 | 0;
    $44 = HEAP32[$target96 >> 2] | 0;
    $id97 = $0 + 164 | 0;
    $45 = HEAP32[$id97 >> 2] | 0;
    _gvrender_begin_anchor($job, $42, $43, $44, $45);
    label = 35;
    break;
   case 35:
    _gvrender_end_anchor($job);
    label = 36;
    break;
   case 36:
    STACKTOP = __stackBase__;
    return;
  }
}
function _poly_path($n, $p, $side, $rv, $kptr) {
  $n = $n | 0;
  $p = $p | 0;
  $side = $side | 0;
  $rv = $rv | 0;
  $kptr = $kptr | 0;
  return 0;
}
function _same_side($p0, $p1, $L0, $L1) {
  $p0 = $p0 | 0;
  $p1 = $p1 | 0;
  $L0 = $L0 | 0;
  $L1 = $L1 | 0;
  var $1 = 0.0, $sub2 = 0.0, $3 = 0.0, $sub4 = 0.0, $add = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p0;
  $p0 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p0 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p0 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p0 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p0 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $L0;
  $L0 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$L0 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$L0 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$L0 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$L0 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $L1;
  $L1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$L1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$L1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$L1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$L1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $1 = +HEAPF64[$L0 + 8 >> 3];
  $sub2 = -0.0 - (+HEAPF64[$L1 + 8 >> 3] - $1);
  $3 = +HEAPF64[$L0 >> 3];
  $sub4 = +HEAPF64[$L1 >> 3] - $3;
  $add = $3 * $sub2 + $1 * $sub4;
  STACKTOP = __stackBase__;
  return (+HEAPF64[$p0 >> 3] * $sub2 + $sub4 * +HEAPF64[$p0 + 8 >> 3] - $add >= 0.0 ^ +HEAPF64[$p1 >> 3] * $sub2 + $sub4 * +HEAPF64[$p1 + 8 >> 3] - $add >= 0.0) & 1 ^ 1 | 0;
}
function _poly_inside($inside_context, $p) {
  $inside_context = $inside_context | 0;
  $p = $p | 0;
  var $P = 0, $Q = 0, $R = 0, $bp2 = 0, $0 = 0, $n4 = 0, $1 = 0, $graph = 0, $2 = 0, $rankdir = 0, $3 = 0, $and = 0, $mul = 0, $tobool = 0, $bbox_sroa_0_0_copyload = 0.0, $4 = 0, $bbox_sroa_1_8_copyload = 0.0, $5 = 0, $bbox_sroa_3_24_copyload = 0.0, $x6 = 0, $6 = 0.0, $cmp = 0, $7 = 0, $bbox_sroa_2_16_copyload = 0.0, $cmp9 = 0, $y11 = 0, $8 = 0.0, $cmp12 = 0, $cmp17 = 0, $phitmp = 0, $9 = 0, $cmp19 = 0, $shape_info = 0, $10 = 0, $11 = 0, $vertices = 0, $12 = 0, $13 = 0, $sides = 0, $14 = 0, $15 = 0, $16 = 0, $rankdir25 = 0, $17 = 0, $and27 = 0, $tobool28 = 0, $lw = 0, $18 = 0.0, $rw = 0, $19 = 0.0, $add = 0.0, $ht = 0, $20 = 0.0, $ht39 = 0, $21 = 0.0, $22 = 0.0, $cmp41 = 0, $23 = 0.0, $cmp45 = 0, $width = 0, $24 = 0.0, $mul50 = 0.0, $cmp51 = 0, $add56 = 0.0, $sub = 0.0, $add56_sink = 0.0, $conv57 = 0, $conv62 = 0.0, $25 = 0.0, $div = 0.0, $height = 0, $26 = 0.0, $mul64 = 0.0, $cmp65 = 0, $add71 = 0.0, $sub77 = 0.0, $add71_sink = 0.0, $conv72 = 0, $conv81 = 0.0, $27 = 0.0, $div82 = 0.0, $28 = 0.0, $mul85 = 0.0, $cmp86 = 0, $add92 = 0.0, $sub98 = 0.0, $add92_sink = 0.0, $conv93 = 0, $conv102 = 0.0, $div103 = 0.0, $29 = 0.0, $mul106 = 0.0, $cmp107 = 0, $add113 = 0.0, $sub119 = 0.0, $add113_sink = 0.0, $conv114 = 0, $conv123 = 0.0, $div124 = 0.0, $30 = 0, $peripheries = 0, $31 = 0, $sub125 = 0, $32 = 0, $mul126 = 0, $cmp127 = 0, $_mul126 = 0, $33 = 0.0, $x132 = 0, $34 = 0.0, $mul133 = 0.0, $35 = 0.0, $y134 = 0, $36 = 0.0, $mul135 = 0.0, $37 = 0.0, $call = 0.0, $38 = 0.0, $cmp137 = 0, $call140 = 0.0, $39 = 0.0, $cmp141 = 0, $40 = 0, $cmp145 = 0, $div149 = 0.0, $div151 = 0.0, $call152 = 0.0, $cmp153 = 0, $conv155 = 0, $41 = 0, $rem = 0, $add157 = 0, $rem158 = 0, $42 = 0, $add159 = 0, $43 = 0, $arrayidx = 0, $44 = 0, $45 = 0, $46 = 0, $add160 = 0, $47 = 0, $arrayidx161 = 0, $48 = 0, $49 = 0, $call162 = 0, $tobool163 = 0, $call166 = 0, $tobool167 = 0, $call169 = 0, $tobool170 = 0, $50 = 0, $51 = 0, $52 = 0, $j_0 = 0, $i1_0 = 0, $i_0 = 0, $cmp173 = 0, $add177 = 0, $rem178 = 0, $add180 = 0, $sub181 = 0, $rem182 = 0, $i1_1 = 0, $i_1 = 0, $add184 = 0, $arrayidx185 = 0, $add186 = 0, $arrayidx187 = 0, $call188 = 0, $tobool189 = 0, $inc = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $P = __stackBase__ | 0;
    $Q = __stackBase__ + 16 | 0;
    $R = __stackBase__ + 32 | 0;
    $bp2 = $inside_context + 4 | 0;
    $0 = HEAP32[$bp2 >> 2] | 0;
    $n4 = $inside_context;
    $1 = HEAP32[$n4 >> 2] | 0;
    $graph = $1 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $rankdir = $2 + 156 | 0;
    $3 = HEAP32[$rankdir >> 2] | 0;
    $and = $3 & 3;
    $mul = $and * 90 & -1;
    _ccwrotatepf($P, $p, $mul);
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $bbox_sroa_0_0_copyload = +HEAPF64[$0 >> 3];
    $4 = $0 + 8 | 0;
    $bbox_sroa_1_8_copyload = +HEAPF64[$4 >> 3];
    $5 = $0 + 24 | 0;
    $bbox_sroa_3_24_copyload = +HEAPF64[$5 >> 3];
    $x6 = $P | 0;
    $6 = +HEAPF64[$x6 >> 3];
    $cmp = $bbox_sroa_0_0_copyload > $6;
    if ($cmp) {
      $retval_0 = 0;
      label = 43;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $7 = $0 + 16 | 0;
    $bbox_sroa_2_16_copyload = +HEAPF64[$7 >> 3];
    $cmp9 = $6 > $bbox_sroa_2_16_copyload;
    if ($cmp9) {
      $retval_0 = 0;
      label = 43;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y11 = $P + 8 | 0;
    $8 = +HEAPF64[$y11 >> 3];
    $cmp12 = $bbox_sroa_1_8_copyload > $8;
    if ($cmp12) {
      $retval_0 = 0;
      label = 43;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp17 = $8 <= $bbox_sroa_3_24_copyload;
    $phitmp = $cmp17 & 1;
    $retval_0 = $phitmp;
    label = 43;
    break;
   case 7:
    $9 = HEAP32[1748] | 0;
    $cmp19 = ($1 | 0) == ($9 | 0);
    if ($cmp19) {
      label = 28;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $shape_info = $1 + 28 | 0;
    $10 = HEAP32[$shape_info >> 2] | 0;
    $11 = $10;
    HEAP32[1744] = $11;
    $vertices = $10 + 44 | 0;
    $12 = $vertices;
    $13 = HEAP32[$12 >> 2] | 0;
    HEAP32[1736] = $13;
    $sides = $10 + 8 | 0;
    $14 = $sides;
    $15 = HEAP32[$14 >> 2] | 0;
    HEAP32[1738] = $15;
    $16 = HEAP32[$graph >> 2] | 0;
    $rankdir25 = $16 + 156 | 0;
    $17 = HEAP32[$rankdir25 >> 2] | 0;
    $and27 = $17 & 1;
    $tobool28 = ($and27 | 0) == 0;
    $lw = $1 + 104 | 0;
    $18 = +HEAPF64[$lw >> 3];
    $rw = $1 + 112 | 0;
    $19 = +HEAPF64[$rw >> 3];
    $add = $18 + $19;
    if ($tobool28) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAPF64[866] = $add;
    $ht = $1 + 96 | 0;
    $20 = +HEAPF64[$ht >> 3];
    HEAPF64[867] = $20;
    $22 = $20;
    label = 11;
    break;
   case 10:
    HEAPF64[867] = $add;
    $ht39 = $1 + 96 | 0;
    $21 = +HEAPF64[$ht39 >> 3];
    HEAPF64[866] = $21;
    $22 = $add;
    label = 11;
    break;
   case 11:
    $cmp41 = $22 == 0.0;
    if ($cmp41) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAPF64[867] = 1.0;
    label = 13;
    break;
   case 13:
    $23 = +HEAPF64[866];
    $cmp45 = $23 == 0.0;
    if ($cmp45) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAPF64[866] = 1.0;
    label = 15;
    break;
   case 15:
    $width = $1 + 48 | 0;
    $24 = +HEAPF64[$width >> 3];
    $mul50 = $24 * 72.0;
    $cmp51 = $mul50 < 0.0;
    if ($cmp51) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $add56 = $mul50 + .5;
    $add56_sink = $add56;
    label = 18;
    break;
   case 17:
    $sub = $mul50 + -.5;
    $add56_sink = $sub;
    label = 18;
    break;
   case 18:
    $conv57 = ~~$add56_sink;
    $conv62 = +($conv57 | 0);
    $25 = +HEAPF64[867];
    $div = $conv62 / $25;
    HEAPF64[871] = $div;
    $height = $1 + 56 | 0;
    $26 = +HEAPF64[$height >> 3];
    $mul64 = $26 * 72.0;
    $cmp65 = $mul64 < 0.0;
    if ($cmp65) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $add71 = $mul64 + .5;
    $add71_sink = $add71;
    label = 21;
    break;
   case 20:
    $sub77 = $mul64 + -.5;
    $add71_sink = $sub77;
    label = 21;
    break;
   case 21:
    $conv72 = ~~$add71_sink;
    $conv81 = +($conv72 | 0);
    $27 = +HEAPF64[866];
    $div82 = $conv81 / $27;
    HEAPF64[870] = $div82;
    $28 = +HEAPF64[$width >> 3];
    $mul85 = $28 * 72.0;
    $cmp86 = $mul85 < 0.0;
    if ($cmp86) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $add92 = $mul85 + .5;
    $add92_sink = $add92;
    label = 24;
    break;
   case 23:
    $sub98 = $mul85 + -.5;
    $add92_sink = $sub98;
    label = 24;
    break;
   case 24:
    $conv93 = ~~$add92_sink;
    $conv102 = +($conv93 | 0);
    $div103 = $conv102 * .5;
    HEAPF64[877] = $div103;
    $29 = +HEAPF64[$height >> 3];
    $mul106 = $29 * 72.0;
    $cmp107 = $mul106 < 0.0;
    if ($cmp107) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $add113 = $mul106 + .5;
    $add113_sink = $add113;
    label = 27;
    break;
   case 26:
    $sub119 = $mul106 + -.5;
    $add113_sink = $sub119;
    label = 27;
    break;
   case 27:
    $conv114 = ~~$add113_sink;
    $conv123 = +($conv114 | 0);
    $div124 = $conv123 * .5;
    HEAPF64[876] = $div124;
    $30 = HEAP32[1744] | 0;
    $peripheries = $30 + 4 | 0;
    $31 = HEAP32[$peripheries >> 2] | 0;
    $sub125 = $31 - 1 | 0;
    $32 = HEAP32[1738] | 0;
    $mul126 = Math_imul($sub125, $32);
    $cmp127 = ($mul126 | 0) < 0;
    $_mul126 = $cmp127 ? 0 : $mul126;
    HEAP32[1746] = $_mul126;
    HEAP32[1748] = $1;
    label = 28;
    break;
   case 28:
    $33 = +HEAPF64[871];
    $x132 = $P | 0;
    $34 = +HEAPF64[$x132 >> 3];
    $mul133 = $33 * $34;
    HEAPF64[$x132 >> 3] = $mul133;
    $35 = +HEAPF64[870];
    $y134 = $P + 8 | 0;
    $36 = +HEAPF64[$y134 >> 3];
    $mul135 = $35 * $36;
    HEAPF64[$y134 >> 3] = $mul135;
    $37 = +HEAPF64[$x132 >> 3];
    $call = +Math_abs(+$37);
    $38 = +HEAPF64[877];
    $cmp137 = $call > $38;
    if ($cmp137) {
      $retval_0 = 0;
      label = 43;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $call140 = +Math_abs(+$mul135);
    $39 = +HEAPF64[876];
    $cmp141 = $call140 > $39;
    if ($cmp141) {
      $retval_0 = 0;
      label = 43;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $40 = HEAP32[1738] | 0;
    $cmp145 = ($40 | 0) < 3;
    if ($cmp145) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    $div149 = $37 / $38;
    $div151 = $mul135 / $39;
    $call152 = +_hypot(+$div149, +$div151);
    $cmp153 = $call152 < 1.0;
    $conv155 = $cmp153 & 1;
    $retval_0 = $conv155;
    label = 43;
    break;
   case 32:
    $41 = HEAP32[1750] | 0;
    $rem = ($41 | 0) % ($40 | 0);
    $add157 = $rem + 1 | 0;
    $rem158 = ($add157 | 0) % ($40 | 0);
    $42 = HEAP32[1746] | 0;
    $add159 = $42 + $rem | 0;
    $43 = HEAP32[1736] | 0;
    $arrayidx = $43 + ($add159 << 4) | 0;
    $44 = $Q;
    $45 = $arrayidx;
    HEAP32[$44 >> 2] = HEAP32[$45 >> 2] | 0;
    HEAP32[$44 + 4 >> 2] = HEAP32[$45 + 4 >> 2] | 0;
    HEAP32[$44 + 8 >> 2] = HEAP32[$45 + 8 >> 2] | 0;
    HEAP32[$44 + 12 >> 2] = HEAP32[$45 + 12 >> 2] | 0;
    $46 = HEAP32[1746] | 0;
    $add160 = $46 + $rem158 | 0;
    $47 = HEAP32[1736] | 0;
    $arrayidx161 = $47 + ($add160 << 4) | 0;
    $48 = $R;
    $49 = $arrayidx161;
    HEAP32[$48 >> 2] = HEAP32[$49 >> 2] | 0;
    HEAP32[$48 + 4 >> 2] = HEAP32[$49 + 4 >> 2] | 0;
    HEAP32[$48 + 8 >> 2] = HEAP32[$49 + 8 >> 2] | 0;
    HEAP32[$48 + 12 >> 2] = HEAP32[$49 + 12 >> 2] | 0;
    $call162 = _same_side($P, 7024, $Q, $R) | 0;
    $tobool163 = ($call162 | 0) == 0;
    if ($tobool163) {
      $retval_0 = 0;
      label = 43;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $call166 = _same_side($P, $Q, $R, 7024) | 0;
    $tobool167 = ($call166 | 0) != 0;
    if ($tobool167) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    $call169 = _same_side($P, $R, 7024, $Q) | 0;
    $tobool170 = ($call169 | 0) == 0;
    if ($tobool170) {
      label = 35;
      break;
    } else {
      $retval_0 = 1;
      label = 43;
      break;
    }
   case 35:
    $50 = HEAP32[1738] | 0;
    $51 = HEAP32[1746] | 0;
    $52 = HEAP32[1736] | 0;
    $i_0 = $rem;
    $i1_0 = $rem158;
    $j_0 = 1;
    label = 36;
    break;
   case 36:
    $cmp173 = ($j_0 | 0) < ($50 | 0);
    if ($cmp173) {
      label = 37;
      break;
    } else {
      label = 42;
      break;
    }
   case 37:
    if ($tobool167) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    $add177 = $i1_0 + 1 | 0;
    $rem178 = ($add177 | 0) % ($50 | 0);
    $i_1 = $i1_0;
    $i1_1 = $rem178;
    label = 40;
    break;
   case 39:
    $add180 = $i_0 - 1 | 0;
    $sub181 = $add180 + $50 | 0;
    $rem182 = ($sub181 | 0) % ($50 | 0);
    $i_1 = $rem182;
    $i1_1 = $i_0;
    label = 40;
    break;
   case 40:
    $add184 = $51 + $i_1 | 0;
    $arrayidx185 = $52 + ($add184 << 4) | 0;
    $add186 = $51 + $i1_1 | 0;
    $arrayidx187 = $52 + ($add186 << 4) | 0;
    $call188 = _same_side($P, 7024, $arrayidx185, $arrayidx187) | 0;
    $tobool189 = ($call188 | 0) == 0;
    $inc = $j_0 + 1 | 0;
    if ($tobool189) {
      label = 41;
      break;
    } else {
      $i_0 = $i_1;
      $i1_0 = $i1_1;
      $j_0 = $inc;
      label = 36;
      break;
    }
   case 41:
    HEAP32[1750] = $i_1;
    $retval_0 = 0;
    label = 43;
    break;
   case 42:
    HEAP32[1750] = $i_0;
    $retval_0 = 1;
    label = 43;
    break;
   case 43:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _poly_gencode($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $obj1 = 0, $0 = 0, $url = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $4 = 0, $_mask = 0, $tobool2 = 0, $flags = 0, $5 = 0, $and = 0, $tobool4 = 0, $6 = 0, $tooltip = 0, $7 = 0, $target = 0, $8 = 0, $id = 0, $9 = 0, $10 = 0, $shape_info = 0, $11 = 0, $vertices6 = 0, $12 = 0, $13 = 0, $sides7 = 0, $14 = 0, $15 = 0, $peripheries8 = 0, $16 = 0, $17 = 0, $18 = 0, $cmp = 0, $add = 0, $19 = 0, $tobool10 = 0, $20 = 0, $mul = 0, $call = 0, $mul11 = 0, $call12 = 0, $call_sink = 0, $21 = 0, $label = 0, $22 = 0, $pos = 0, $coord = 0, $23 = 0, $24 = 0, $lw = 0, $25 = 0.0, $rw = 0, $26 = 0.0, $add18 = 0.0, $width = 0, $27 = 0.0, $mul20 = 0.0, $cmp21 = 0, $add26 = 0.0, $sub = 0.0, $add26_sink = 0.0, $conv = 0, $conv34 = 0.0, $div = 0.0, $ht = 0, $28 = 0.0, $height = 0, $29 = 0.0, $mul37 = 0.0, $cmp38 = 0, $add44 = 0.0, $sub50 = 0.0, $add44_sink = 0.0, $conv45 = 0, $conv54 = 0.0, $div55 = 0.0, $call56 = 0, $gui_state = 0, $30 = 0, $conv58 = 0, $and59 = 0, $tobool60 = 0, $31 = 0, $32 = 0, $call62 = 0, $33 = 0, $call63 = 0, $and67 = 0, $tobool68 = 0, $34 = 0, $35 = 0, $call70 = 0, $36 = 0, $call71 = 0, $and76 = 0, $tobool77 = 0, $37 = 0, $38 = 0, $call79 = 0, $39 = 0, $call80 = 0, $and85 = 0, $tobool86 = 0, $40 = 0, $41 = 0, $call88 = 0, $42 = 0, $call89 = 0, $and91 = 0, $tobool92 = 0, $call94 = 0, $filled_0 = 0, $filled_1 = 0, $shape = 0, $43 = 0, $usershape = 0, $44 = 0, $tobool102 = 0, $name106 = 0, $45 = 0, $46 = 0, $cmp109 = 0, $tobool123140 = 0, $call114 = 0, $phitmp = 0, $47 = 0, $cmp119 = 0, $tobool123 = 0, $or_cond = 0, $or_cond137 = 0, $call129 = 0, $48 = 0, $tobool130 = 0, $tobool126145 = 0, $tobool123144 = 0, $peripheries_0 = 0, $49 = 0, $usershape136 = 0, $50 = 0, $tobool137 = 0, $name141 = 0, $51 = 0, $52 = 0, $cmp144 = 0, $call147 = 0, $tobool148 = 0, $53 = 0, $call150 = 0, $54 = 0, $call153 = 0, $not_tobool154 = 0, $name_1146_ph = 0, $cmp160152 = 0, $x166 = 0, $55 = 0, $y173 = 0, $i_0153 = 0, $P_sroa_0_0__idx23 = 0, $P_sroa_0_0_copyload24 = 0.0, $P_sroa_1_8__idx27 = 0, $P_sroa_1_8_copyload28 = 0.0, $mul163 = 0.0, $56 = 0.0, $add167 = 0.0, $x169 = 0, $mul170 = 0.0, $57 = 0.0, $add174 = 0.0, $y176 = 0, $inc = 0, $cmp160 = 0, $conv177 = 0, $or_cond138 = 0, $cmp183 = 0, $58 = 0, $and186 = 0, $tobool187 = 0, $and191 = 0, $tobool192 = 0, $59 = 0, $60 = 0, $61 = 0, $62 = 0, $call199 = 0, $filled_3_ph = 0, $cmp202149 = 0, $cmp206147 = 0, $cmp231 = 0, $and234 = 0, $tobool235 = 0, $and239 = 0, $tobool240 = 0, $x216 = 0, $y224 = 0, $j_0151 = 0, $filled_3150 = 0, $mul209 = 0, $63 = 0, $i_1148 = 0, $add210 = 0, $P_sroa_0_0__idx = 0, $P_sroa_0_0_copyload = 0.0, $P_sroa_1_8__idx25 = 0, $P_sroa_1_8_copyload = 0.0, $mul213 = 0.0, $64 = 0.0, $add217 = 0.0, $x219 = 0, $mul221 = 0.0, $65 = 0.0, $add225 = 0.0, $y227 = 0, $inc229 = 0, $cmp206 = 0, $66 = 0, $conv242 = 0, $inc247 = 0, $cmp202 = 0, $67 = 0, $flags253 = 0, $68 = 0, $and254 = 0, $tobool255 = 0, $69 = 0, $tooltip258 = 0, $70 = 0, $target259 = 0, $71 = 0, $id260 = 0, $72 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url = $0 + 160 | 0;
    $1 = HEAP32[$url >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = $0 + 212 | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $_mask = $4 & 1;
    $tobool2 = ($_mask | 0) == 0;
    if ($tobool2) {
      $10 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $flags = $job + 152 | 0;
    $5 = HEAP32[$flags >> 2] | 0;
    $and = $5 & 4;
    $tobool4 = ($and | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      $10 = 1;
      label = 6;
      break;
    }
   case 5:
    $6 = HEAP32[$url >> 2] | 0;
    $tooltip = $0 + 180 | 0;
    $7 = HEAP32[$tooltip >> 2] | 0;
    $target = $0 + 196 | 0;
    $8 = HEAP32[$target >> 2] | 0;
    $id = $0 + 164 | 0;
    $9 = HEAP32[$id >> 2] | 0;
    _gvrender_begin_anchor($job, $6, $7, $8, $9);
    $10 = 1;
    label = 6;
    break;
   case 6:
    $shape_info = $n + 28 | 0;
    $11 = HEAP32[$shape_info >> 2] | 0;
    $vertices6 = $11 + 44 | 0;
    $12 = $vertices6;
    $13 = HEAP32[$12 >> 2] | 0;
    $sides7 = $11 + 8 | 0;
    $14 = $sides7;
    $15 = HEAP32[$14 >> 2] | 0;
    $peripheries8 = $11 + 4 | 0;
    $16 = $peripheries8;
    $17 = HEAP32[$16 >> 2] | 0;
    $18 = HEAP32[1760] | 0;
    $cmp = ($18 | 0) < ($15 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $add = $15 + 5 | 0;
    HEAP32[1760] = $add;
    $19 = HEAP32[1762] | 0;
    $tobool10 = ($19 | 0) == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $20 = $19;
    $mul = $add << 4;
    $call = _grealloc($20, $mul) | 0;
    $call_sink = $call;
    label = 10;
    break;
   case 9:
    $mul11 = $add << 4;
    $call12 = _gmalloc($mul11) | 0;
    $call_sink = $call12;
    label = 10;
    break;
   case 10:
    $21 = $call_sink;
    HEAP32[1762] = $21;
    label = 11;
    break;
   case 11:
    $label = $n + 120 | 0;
    $22 = HEAP32[$label >> 2] | 0;
    $pos = $22 + 56 | 0;
    $coord = $n + 32 | 0;
    $23 = $pos;
    $24 = $coord;
    HEAP32[$23 >> 2] = HEAP32[$24 >> 2] | 0;
    HEAP32[$23 + 4 >> 2] = HEAP32[$24 + 4 >> 2] | 0;
    HEAP32[$23 + 8 >> 2] = HEAP32[$24 + 8 >> 2] | 0;
    HEAP32[$23 + 12 >> 2] = HEAP32[$24 + 12 >> 2] | 0;
    $lw = $n + 104 | 0;
    $25 = +HEAPF64[$lw >> 3];
    $rw = $n + 112 | 0;
    $26 = +HEAPF64[$rw >> 3];
    $add18 = $25 + $26;
    $width = $n + 48 | 0;
    $27 = +HEAPF64[$width >> 3];
    $mul20 = $27 * 72.0;
    $cmp21 = $mul20 < 0.0;
    if ($cmp21) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add26 = $mul20 + .5;
    $add26_sink = $add26;
    label = 14;
    break;
   case 13:
    $sub = $mul20 + -.5;
    $add26_sink = $sub;
    label = 14;
    break;
   case 14:
    $conv = ~~$add26_sink;
    $conv34 = +($conv | 0);
    $div = $add18 / $conv34;
    $ht = $n + 96 | 0;
    $28 = +HEAPF64[$ht >> 3];
    $height = $n + 56 | 0;
    $29 = +HEAPF64[$height >> 3];
    $mul37 = $29 * 72.0;
    $cmp38 = $mul37 < 0.0;
    if ($cmp38) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add44 = $mul37 + .5;
    $add44_sink = $add44;
    label = 17;
    break;
   case 16:
    $sub50 = $mul37 + -.5;
    $add44_sink = $sub50;
    label = 17;
    break;
   case 17:
    $conv45 = ~~$add44_sink;
    $conv54 = +($conv45 | 0);
    $div55 = $28 / $conv54;
    $call56 = _stylenode($job, $n) | 0;
    $gui_state = $n + 133 | 0;
    $30 = HEAP8[$gui_state] | 0;
    $conv58 = $30 & 255;
    $and59 = $conv58 & 1;
    $tobool60 = ($and59 | 0) == 0;
    if ($tobool60) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $31 = $n | 0;
    $32 = HEAP32[41618] | 0;
    $call62 = _late_nnstring($31, $32, 105440) | 0;
    _gvrender_set_pencolor($job, $call62);
    $33 = HEAP32[41620] | 0;
    $call63 = _late_nnstring($31, $33, 105128) | 0;
    _gvrender_set_fillcolor($job, $call63);
    $filled_1 = 1;
    label = 28;
    break;
   case 19:
    $and67 = $conv58 & 2;
    $tobool68 = ($and67 | 0) == 0;
    if ($tobool68) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $34 = $n | 0;
    $35 = HEAP32[41570] | 0;
    $call70 = _late_nnstring($34, $35, 104760) | 0;
    _gvrender_set_pencolor($job, $call70);
    $36 = HEAP32[41572] | 0;
    $call71 = _late_nnstring($34, $36, 104240) | 0;
    _gvrender_set_fillcolor($job, $call71);
    $filled_1 = 1;
    label = 28;
    break;
   case 21:
    $and76 = $conv58 & 8;
    $tobool77 = ($and76 | 0) == 0;
    if ($tobool77) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $37 = $n | 0;
    $38 = HEAP32[41610] | 0;
    $call79 = _late_nnstring($37, $38, 103768) | 0;
    _gvrender_set_pencolor($job, $call79);
    $39 = HEAP32[41612] | 0;
    $call80 = _late_nnstring($37, $39, 103376) | 0;
    _gvrender_set_fillcolor($job, $call80);
    $filled_1 = 1;
    label = 28;
    break;
   case 23:
    $and85 = $conv58 & 4;
    $tobool86 = ($and85 | 0) == 0;
    if ($tobool86) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $40 = $n | 0;
    $41 = HEAP32[41554] | 0;
    $call88 = _late_nnstring($40, $41, 103016) | 0;
    _gvrender_set_pencolor($job, $call88);
    $42 = HEAP32[41556] | 0;
    $call89 = _late_nnstring($40, $42, 102672) | 0;
    _gvrender_set_fillcolor($job, $call89);
    $filled_1 = 1;
    label = 28;
    break;
   case 25:
    $and91 = $call56 & 1;
    $tobool92 = ($and91 | 0) == 0;
    if ($tobool92) {
      $filled_0 = 0;
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $call94 = _findFill($n) | 0;
    _gvrender_set_fillcolor($job, $call94);
    $filled_0 = 1;
    label = 27;
    break;
   case 27:
    _pencolor($job, $n);
    $filled_1 = $filled_0;
    label = 28;
    break;
   case 28:
    $shape = $n + 24 | 0;
    $43 = HEAP32[$shape >> 2] | 0;
    $usershape = $43 + 12 | 0;
    $44 = HEAP8[$usershape] | 0;
    $tobool102 = $44 << 24 >> 24 == 0;
    if ($tobool102) {
      $47 = 0;
      label = 32;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $name106 = $43 | 0;
    $45 = HEAP32[$name106 >> 2] | 0;
    $46 = HEAP8[$45] | 0;
    $cmp109 = $46 << 24 >> 24 == 99;
    if ($cmp109) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $tobool123140 = $filled_1 << 24 >> 24 == 0;
    $peripheries_0 = $17;
    $tobool123144 = $tobool123140;
    $tobool126145 = 1;
    label = 35;
    break;
   case 31:
    $call114 = _strcmp($45 | 0, 110216) | 0;
    $phitmp = ($call114 | 0) != 0;
    $47 = $phitmp;
    label = 32;
    break;
   case 32:
    $cmp119 = ($17 | 0) != 0;
    $tobool123 = $filled_1 << 24 >> 24 == 0;
    $or_cond = $cmp119 | $tobool123;
    $or_cond137 = $or_cond | $47;
    if ($or_cond137) {
      $peripheries_0 = $17;
      $tobool123144 = $tobool123;
      $tobool126145 = $47;
      label = 35;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $call129 = _findFill($n) | 0;
    $48 = HEAP8[$call129] | 0;
    $tobool130 = $48 << 24 >> 24 == 0;
    if ($tobool130) {
      $peripheries_0 = 1;
      $tobool123144 = $tobool123;
      $tobool126145 = $47;
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    _gvrender_set_pencolor($job, $call129);
    $peripheries_0 = 1;
    $tobool123144 = $tobool123;
    $tobool126145 = $47;
    label = 35;
    break;
   case 35:
    $49 = HEAP32[$shape >> 2] | 0;
    $usershape136 = $49 + 12 | 0;
    $50 = HEAP8[$usershape136] | 0;
    $tobool137 = $50 << 24 >> 24 == 0;
    if ($tobool137) {
      label = 39;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $name141 = $49 | 0;
    $51 = HEAP32[$name141 >> 2] | 0;
    $52 = HEAP8[$51] | 0;
    $cmp144 = $52 << 24 >> 24 == 99;
    if ($cmp144) {
      label = 37;
      break;
    } else {
      $name_1146_ph = $51;
      label = 40;
      break;
    }
   case 37:
    $call147 = _strcmp($51 | 0, 110216) | 0;
    $tobool148 = ($call147 | 0) == 0;
    if ($tobool148) {
      label = 38;
      break;
    } else {
      $name_1146_ph = $51;
      label = 40;
      break;
    }
   case 38:
    $53 = $n | 0;
    $call150 = _agget($53, 120672) | 0;
    $name_1146_ph = $call150;
    label = 40;
    break;
   case 39:
    $54 = $n | 0;
    $call153 = _agget($54, 101440) | 0;
    $not_tobool154 = ($call153 | 0) == 0;
    if ($not_tobool154) {
      $filled_3_ph = $filled_1;
      label = 51;
      break;
    } else {
      $name_1146_ph = $call153;
      label = 40;
      break;
    }
   case 40:
    $cmp160152 = ($15 | 0) > 0;
    if ($cmp160152) {
      label = 41;
      break;
    } else {
      label = 43;
      break;
    }
   case 41:
    $x166 = $coord | 0;
    $55 = HEAP32[1762] | 0;
    $y173 = $n + 40 | 0;
    $i_0153 = 0;
    label = 42;
    break;
   case 42:
    $P_sroa_0_0__idx23 = $13 + ($i_0153 << 4) | 0;
    $P_sroa_0_0_copyload24 = +HEAPF64[$P_sroa_0_0__idx23 >> 3];
    $P_sroa_1_8__idx27 = $13 + ($i_0153 << 4) + 8 | 0;
    $P_sroa_1_8_copyload28 = +HEAPF64[$P_sroa_1_8__idx27 >> 3];
    $mul163 = $div * $P_sroa_0_0_copyload24;
    $56 = +HEAPF64[$x166 >> 3];
    $add167 = $mul163 + $56;
    $x169 = $55 + ($i_0153 << 4) | 0;
    HEAPF64[$x169 >> 3] = $add167;
    $mul170 = $div55 * $P_sroa_1_8_copyload28;
    $57 = +HEAPF64[$y173 >> 3];
    $add174 = $mul170 + $57;
    $y176 = $55 + ($i_0153 << 4) + 8 | 0;
    HEAPF64[$y176 >> 3] = $add174;
    $inc = $i_0153 + 1 | 0;
    $cmp160 = ($inc | 0) < ($15 | 0);
    if ($cmp160) {
      $i_0153 = $inc;
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $conv177 = $filled_1 & 255;
    $or_cond138 = $tobool123144 | $tobool126145;
    if ($or_cond138) {
      label = 50;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $cmp183 = ($15 | 0) < 3;
    if ($cmp183) {
      label = 45;
      break;
    } else {
      label = 47;
      break;
    }
   case 45:
    $58 = HEAP32[1762] | 0;
    _gvrender_ellipse($job, $58, 0, $filled_1);
    $and186 = $call56 & 4;
    $tobool187 = ($and186 | 0) == 0;
    if ($tobool187) {
      label = 50;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    _Mcircle_hack($job, $n);
    label = 50;
    break;
   case 47:
    $and191 = $call56 & 6;
    $tobool192 = ($and191 | 0) == 0;
    $59 = HEAP32[1762] | 0;
    if ($tobool192) {
      label = 49;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    _node_round_corners($job, $n, $59, $15, $call56, $conv177);
    label = 50;
    break;
   case 49:
    _gvrender_polygon($job, $59, $15, $filled_1);
    label = 50;
    break;
   case 50:
    $60 = HEAP32[1762] | 0;
    $61 = $n | 0;
    $62 = HEAP32[41590] | 0;
    $call199 = _late_string($61, $62, 100880) | 0;
    _gvrender_usershape($job, $name_1146_ph, $60, $15, $filled_1, $call199);
    $filled_3_ph = 0;
    label = 51;
    break;
   case 51:
    $cmp202149 = ($peripheries_0 | 0) > 0;
    if ($cmp202149) {
      label = 52;
      break;
    } else {
      label = 63;
      break;
    }
   case 52:
    $cmp206147 = ($15 | 0) > 0;
    $cmp231 = ($15 | 0) < 3;
    $and234 = $call56 & 4;
    $tobool235 = ($and234 | 0) == 0;
    $and239 = $call56 & 998;
    $tobool240 = ($and239 | 0) == 0;
    $x216 = $coord | 0;
    $y224 = $n + 40 | 0;
    $filled_3150 = $filled_3_ph;
    $j_0151 = 0;
    label = 53;
    break;
   case 53:
    if ($cmp206147) {
      label = 54;
      break;
    } else {
      label = 56;
      break;
    }
   case 54:
    $mul209 = Math_imul($j_0151, $15);
    $63 = HEAP32[1762] | 0;
    $i_1148 = 0;
    label = 55;
    break;
   case 55:
    $add210 = $i_1148 + $mul209 | 0;
    $P_sroa_0_0__idx = $13 + ($add210 << 4) | 0;
    $P_sroa_0_0_copyload = +HEAPF64[$P_sroa_0_0__idx >> 3];
    $P_sroa_1_8__idx25 = $13 + ($add210 << 4) + 8 | 0;
    $P_sroa_1_8_copyload = +HEAPF64[$P_sroa_1_8__idx25 >> 3];
    $mul213 = $div * $P_sroa_0_0_copyload;
    $64 = +HEAPF64[$x216 >> 3];
    $add217 = $mul213 + $64;
    $x219 = $63 + ($i_1148 << 4) | 0;
    HEAPF64[$x219 >> 3] = $add217;
    $mul221 = $div55 * $P_sroa_1_8_copyload;
    $65 = +HEAPF64[$y224 >> 3];
    $add225 = $mul221 + $65;
    $y227 = $63 + ($i_1148 << 4) + 8 | 0;
    HEAPF64[$y227 >> 3] = $add225;
    $inc229 = $i_1148 + 1 | 0;
    $cmp206 = ($inc229 | 0) < ($15 | 0);
    if ($cmp206) {
      $i_1148 = $inc229;
      label = 55;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $66 = HEAP32[1762] | 0;
    if ($cmp231) {
      label = 57;
      break;
    } else {
      label = 59;
      break;
    }
   case 57:
    _gvrender_ellipse($job, $66, 0, $filled_3150);
    if ($tobool235) {
      label = 62;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    _Mcircle_hack($job, $n);
    label = 62;
    break;
   case 59:
    if ($tobool240) {
      label = 61;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $conv242 = $filled_3150 & 255;
    _node_round_corners($job, $n, $66, $15, $call56, $conv242);
    label = 62;
    break;
   case 61:
    _gvrender_polygon($job, $66, $15, $filled_3150);
    label = 62;
    break;
   case 62:
    $inc247 = $j_0151 + 1 | 0;
    $cmp202 = ($inc247 | 0) < ($peripheries_0 | 0);
    if ($cmp202) {
      $filled_3150 = 0;
      $j_0151 = $inc247;
      label = 53;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $67 = HEAP32[$label >> 2] | 0;
    _emit_label($job, 10, $67);
    if ($10) {
      label = 64;
      break;
    } else {
      label = 67;
      break;
    }
   case 64:
    $flags253 = $job + 152 | 0;
    $68 = HEAP32[$flags253 >> 2] | 0;
    $and254 = $68 & 4;
    $tobool255 = ($and254 | 0) == 0;
    if ($tobool255) {
      label = 66;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $69 = HEAP32[$url >> 2] | 0;
    $tooltip258 = $0 + 180 | 0;
    $70 = HEAP32[$tooltip258 >> 2] | 0;
    $target259 = $0 + 196 | 0;
    $71 = HEAP32[$target259 >> 2] | 0;
    $id260 = $0 + 164 | 0;
    $72 = HEAP32[$id260 >> 2] | 0;
    _gvrender_begin_anchor($job, $69, $70, $71, $72);
    label = 66;
    break;
   case 66:
    _gvrender_end_anchor($job);
    label = 67;
    break;
   case 67:
    return;
  }
}
function _Mcircle_hack($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $AF = 0, $p = 0, $y1 = 0, $x4 = 0, $arrayidx = 0, $y7 = 0, $y9 = 0, $sub20 = 0.0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  $AF = __stackBase__ | 0;
  $p = __stackBase__ + 32 | 0;
  $y1 = $p + 8 | 0;
  HEAPF64[$y1 >> 3] = +HEAPF64[$n + 96 >> 3] * .75 * .5;
  $x4 = $p | 0;
  HEAPF64[$x4 >> 3] = +HEAPF64[$n + 112 >> 3] * .6614;
  $arrayidx = $AF | 0;
  _add_pointf796($AF | 0, $p, $n + 32 | 0);
  $y7 = $AF + 8 | 0;
  $y9 = $AF + 24 | 0;
  HEAPF64[$y9 >> 3] = +HEAPF64[$y7 >> 3];
  HEAPF64[$AF + 16 >> 3] = +HEAPF64[$AF >> 3] - +HEAPF64[$x4 >> 3] * 2.0;
  _gvrender_polyline($job, $arrayidx, 2);
  $sub20 = +HEAPF64[$y7 >> 3] - +HEAPF64[$y1 >> 3] * 2.0;
  HEAPF64[$y7 >> 3] = $sub20;
  HEAPF64[$y9 >> 3] = $sub20;
  _gvrender_polyline($job, $arrayidx, 2);
  STACKTOP = __stackBase__;
  return;
}
function _quant($val, $q) {
  $val = +$val;
  $q = +$q;
  var $conv = 0;
  $conv = ~~($val / $q);
  return +(+((+($conv | 0) * $q + 1.0e-5 < $val & 1) + $conv | 0) * $q);
}
function _parse_reclbl($n, $LR, $flag, $text) {
  $n = $n | 0;
  $LR = $LR | 0;
  $flag = $flag | 0;
  $text = $text | 0;
  var $call = 0, $0 = 0, $label = 0, $1 = 0, $2 = 0, $sp_0 = 0, $maxf_0 = 0, $cnt_0 = 0, $3 = 0, $incdec_ptr = 0, $4 = 0, $sp_1 = 0, $5 = 0, $inc = 0, $dec = 0, $cmp33 = 0, $inc36 = 0, $inc36_maxf_0 = 0, $maxf_1 = 0, $cnt_1 = 0, $cmp40 = 0, $sp_2 = 0, $maxf_2 = 0, $cnt_2 = 0, $incdec_ptr44 = 0, $maxf_3 = 0, $mul = 0, $call45 = 0, $6 = 0, $fld = 0, $7 = 0, $conv46 = 0, $8 = 0, $lnot = 0, $lnot_ext = 0, $html59 = 0, $add_ptr = 0, $html = 0, $html244 = 0, $html201 = 0, $tobool105 = 0, $add_ptr132 = 0, $9 = 0, $html148 = 0, $fontsize = 0, $fontname = 0, $fontcolor = 0, $fp_0_ph_ph = 0, $tsp_0_ph_ph = 0, $psp_0_ph_ph = 0, $hstsp_0_ph_ph = 0, $hspsp_0_ph_ph = 0, $mode_0_ph_ph = 0, $wflag_0_ph_ph = 0, $ishardspace_0_ph_ph = 0, $fi_0_ph_ph = 0, $fp_0_ph = 0, $tsp_0_ph = 0, $psp_0_ph = 0, $hstsp_0_ph = 0, $hspsp_0_ph = 0, $mode_0_ph = 0, $ishardspace_0_ph = 0, $fi_0_ph = 0, $tsp_0_ph101 = 0, $psp_0_ph102 = 0, $hstsp_0_ph103 = 0, $hspsp_0_ph104 = 0, $tmpport_0_ph = 0, $mode_0_ph105 = 0, $ishardspace_0_ph107 = 0, $fi_0_ph108 = 0, $psp_0_ph110_ph = 0, $hspsp_0_ph112_ph = 0, $tmpport_0_ph113_ph = 0, $mode_0_ph114_ph = 0, $fi_0_ph117_ph = 0, $psp_0_ph110 = 0, $tmpport_0_ph113 = 0, $mode_0_ph114 = 0, $fi_0_ph117 = 0, $mode_0 = 0, $fi_0 = 0, $10 = 0, $11 = 0, $conv49 = 0, $and = 0, $tobool50 = 0, $12 = 0, $tobool54 = 0, $or = 0, $incdec_ptr57 = 0, $13 = 0, $tobool60 = 0, $and63 = 0, $tobool64 = 0, $cmp68 = 0, $add_ptr71 = 0, $cmp72 = 0, $14 = 0, $cmp77 = 0, $add_ptr71_psp_0 = 0, $psp_1 = 0, $call82 = 0, $and83 = 0, $15 = 0, $incdec_ptr84 = 0, $incdec_ptr86 = 0, $cmp87 = 0, $16 = 0, $tobool90 = 0, $call95 = 0, $inc96 = 0, $17 = 0, $arrayidx = 0, $tobool98 = 0, $18 = 0, $19 = 0, $tobool103 = 0, $or_cond = 0, $and107 = 0, $tobool108 = 0, $and112 = 0, $tobool113 = 0, $call115 = 0, $20 = 0, $inc116 = 0, $21 = 0, $arrayidx118 = 0, $fp_1 = 0, $fi_1 = 0, $tobool120 = 0, $id = 0, $and123 = 0, $tobool124 = 0, $or126 = 0, $incdec_ptr127 = 0, $tsp_1 = 0, $mode_1 = 0, $and129 = 0, $tobool130 = 0, $cmp133 = 0, $add_ptr136 = 0, $cmp137 = 0, $22 = 0, $cmp142 = 0, $add_ptr136_tsp_1 = 0, $tsp_2 = 0, $call147 = 0, $23 = 0, $tobool150 = 0, $cond = 0, $24 = 0.0, $25 = 0, $26 = 0, $call151 = 0, $lp = 0, $LR152 = 0, $tsp_3 = 0, $hstsp_1 = 0, $27 = 0, $28 = 0, $incdec_ptr160 = 0, $n_flds = 0, $29 = 0, $incdec_ptr162 = 0, $add_ptr166 = 0, $30 = 0, $31 = 0, $incdec_ptr194 = 0, $32 = 0, $tobool202 = 0, $incdec_ptr206 = 0, $or207 = 0, $33 = 0, $incdec_ptr208 = 0, $tsp_4 = 0, $mode_2 = 0, $ishardspace_1 = 0, $and212 = 0, $tobool213 = 0, $34 = 0, $35 = 0, $cmp216 = 0, $and221 = 0, $tobool222 = 0, $36 = 0, $37 = 0, $cmp225 = 0, $or228 = 0, $mode_2_or228 = 0, $mode_3 = 0, $and230 = 0, $tobool231 = 0, $38 = 0, $39 = 0, $cmp234 = 0, $tobool237 = 0, $or_cond96 = 0, $add_ptr239 = 0, $40 = 0, $cmp241 = 0, $41 = 0, $tobool245 = 0, $42 = 0, $43 = 0, $incdec_ptr247 = 0, $tsp_5 = 0, $add_ptr251 = 0, $and254 = 0, $tobool255 = 0, $44 = 0, $45 = 0, $cmp258 = 0, $tobool261 = 0, $or_cond97 = 0, $cmp263 = 0, $add_ptr266 = 0, $46 = 0, $cmp268 = 0, $47 = 0, $48 = 0, $incdec_ptr271 = 0, $psp_2 = 0, $add_ptr275 = 0, $tsp_6 = 0, $psp_3 = 0, $hstsp_2 = 0, $hspsp_1 = 0, $49 = 0, $incdec_ptr279 = 0, $50 = 0, $tobool28398 = 0, $51 = 0, $tsp_799 = 0, $incdec_ptr285 = 0, $52 = 0, $incdec_ptr286 = 0, $53 = 0, $54 = 0, $tobool283 = 0, $n_flds288 = 0, $55 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(72) | 0;
    $0 = $call;
    $label = $n + 120 | 0;
    $1 = HEAP32[$label >> 2] | 0;
    $2 = HEAP32[1158] | 0;
    $cnt_0 = 0;
    $maxf_0 = 1;
    $sp_0 = $2;
    label = 3;
    break;
   case 3:
    $3 = HEAP8[$sp_0] | 0;
    if (($3 << 24 >> 24 | 0) == 92) {
      label = 4;
      break;
    } else if (($3 << 24 >> 24 | 0) == 0) {
      $maxf_3 = $maxf_0;
      label = 11;
      break;
    } else {
      $sp_1 = $sp_0;
      label = 5;
      break;
    }
   case 4:
    $incdec_ptr = $sp_0 + 1 | 0;
    $4 = HEAP8[$incdec_ptr] | 0;
    if (($4 << 24 >> 24 | 0) == 92 | ($4 << 24 >> 24 | 0) == 123 | ($4 << 24 >> 24 | 0) == 125 | ($4 << 24 >> 24 | 0) == 124) {
      $cnt_2 = $cnt_0;
      $maxf_2 = $maxf_0;
      $sp_2 = $incdec_ptr;
      label = 10;
      break;
    } else {
      $sp_1 = $incdec_ptr;
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP8[$sp_1] | 0;
    if (($5 << 24 >> 24 | 0) == 123) {
      label = 6;
      break;
    } else if (($5 << 24 >> 24 | 0) == 125) {
      label = 7;
      break;
    } else if (($5 << 24 >> 24 | 0) == 124) {
      label = 8;
      break;
    } else {
      $cnt_1 = $cnt_0;
      $maxf_1 = $maxf_0;
      label = 9;
      break;
    }
   case 6:
    $inc = $cnt_0 + 1 | 0;
    $cnt_1 = $inc;
    $maxf_1 = $maxf_0;
    label = 9;
    break;
   case 7:
    $dec = $cnt_0 - 1 | 0;
    $cnt_1 = $dec;
    $maxf_1 = $maxf_0;
    label = 9;
    break;
   case 8:
    $cmp33 = ($cnt_0 | 0) == 0;
    $inc36 = $cmp33 & 1;
    $inc36_maxf_0 = $inc36 + $maxf_0 | 0;
    $cnt_1 = $cnt_0;
    $maxf_1 = $inc36_maxf_0;
    label = 9;
    break;
   case 9:
    $cmp40 = ($cnt_1 | 0) < 0;
    if ($cmp40) {
      $maxf_3 = $maxf_1;
      label = 11;
      break;
    } else {
      $cnt_2 = $cnt_1;
      $maxf_2 = $maxf_1;
      $sp_2 = $sp_1;
      label = 10;
      break;
    }
   case 10:
    $incdec_ptr44 = $sp_2 + 1 | 0;
    $cnt_0 = $cnt_2;
    $maxf_0 = $maxf_2;
    $sp_0 = $incdec_ptr44;
    label = 3;
    break;
   case 11:
    $mul = $maxf_3 << 2;
    $call45 = _zmalloc($mul) | 0;
    $6 = $call45;
    $fld = $call + 56 | 0;
    $7 = $fld;
    HEAP32[$7 >> 2] = $6;
    $conv46 = $LR & 255;
    $8 = $call + 64 | 0;
    HEAP8[$8] = $conv46;
    $lnot = ($LR | 0) == 0;
    $lnot_ext = $lnot & 1;
    $html59 = $1 + 82 | 0;
    $add_ptr = $text + 1 | 0;
    $html = $1 + 82 | 0;
    $html244 = $1 + 82 | 0;
    $html201 = $1 + 82 | 0;
    $tobool105 = ($flag | 0) == 0;
    $add_ptr132 = $text + 1 | 0;
    $9 = $n | 0;
    $html148 = $1 + 82 | 0;
    $fontsize = $1 + 16 | 0;
    $fontname = $1 + 4 | 0;
    $fontcolor = $1 + 8 | 0;
    $fi_0_ph_ph = 0;
    $ishardspace_0_ph_ph = 0;
    $wflag_0_ph_ph = 0;
    $mode_0_ph_ph = 0;
    $hspsp_0_ph_ph = 0;
    $hstsp_0_ph_ph = $text;
    $psp_0_ph_ph = 0;
    $tsp_0_ph_ph = $text;
    $fp_0_ph_ph = 0;
    label = 12;
    break;
   case 12:
    $fi_0_ph = $fi_0_ph_ph;
    $ishardspace_0_ph = $ishardspace_0_ph_ph;
    $mode_0_ph = $mode_0_ph_ph;
    $hspsp_0_ph = $hspsp_0_ph_ph;
    $hstsp_0_ph = $hstsp_0_ph_ph;
    $psp_0_ph = $psp_0_ph_ph;
    $tsp_0_ph = $tsp_0_ph_ph;
    $fp_0_ph = $fp_0_ph_ph;
    label = 13;
    break;
   case 13:
    $fi_0_ph108 = $fi_0_ph;
    $ishardspace_0_ph107 = $ishardspace_0_ph;
    $mode_0_ph105 = $mode_0_ph;
    $tmpport_0_ph = 0;
    $hspsp_0_ph104 = $hspsp_0_ph;
    $hstsp_0_ph103 = $hstsp_0_ph;
    $psp_0_ph102 = $psp_0_ph;
    $tsp_0_ph101 = $tsp_0_ph;
    label = 14;
    break;
   case 14:
    $fi_0_ph117_ph = $fi_0_ph108;
    $mode_0_ph114_ph = $mode_0_ph105;
    $tmpport_0_ph113_ph = $tmpport_0_ph;
    $hspsp_0_ph112_ph = $hspsp_0_ph104;
    $psp_0_ph110_ph = $psp_0_ph102;
    label = 15;
    break;
   case 15:
    $fi_0_ph117 = $fi_0_ph117_ph;
    $mode_0_ph114 = $mode_0_ph114_ph;
    $tmpport_0_ph113 = $tmpport_0_ph113_ph;
    $psp_0_ph110 = $psp_0_ph110_ph;
    label = 16;
    break;
   case 16:
    $fi_0 = $fi_0_ph117;
    $mode_0 = $mode_0_ph114;
    label = 17;
    break;
   case 17:
    if ($wflag_0_ph_ph) {
      label = 78;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $10 = HEAP32[1158] | 0;
    $11 = HEAP8[$10] | 0;
    $conv49 = $11 << 24 >> 24;
    if (($conv49 | 0) == 60) {
      label = 19;
      break;
    } else if (($conv49 | 0) == 62) {
      label = 23;
      break;
    } else if (($conv49 | 0) == 123) {
      label = 30;
      break;
    } else if (($conv49 | 0) == 125 | ($conv49 | 0) == 124 | ($conv49 | 0) == 0) {
      label = 35;
      break;
    } else if (($conv49 | 0) == 92) {
      label = 52;
      break;
    } else {
      $ishardspace_1 = $ishardspace_0_ph107;
      $mode_2 = $mode_0;
      $tsp_4 = $tsp_0_ph101;
      label = 57;
      break;
    }
   case 19:
    $and = $mode_0 & 6;
    $tobool50 = ($and | 0) == 0;
    if ($tobool50) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    _parse_error($0, $tmpport_0_ph113);
    $retval_0 = 0;
    label = 79;
    break;
   case 21:
    $12 = HEAP8[$html] | 0;
    $tobool54 = $12 << 24 >> 24 == 0;
    if ($tobool54) {
      label = 22;
      break;
    } else {
      $ishardspace_1 = $ishardspace_0_ph107;
      $mode_2 = $mode_0;
      $tsp_4 = $tsp_0_ph101;
      label = 57;
      break;
    }
   case 22:
    $or = $mode_0 | 18;
    $incdec_ptr57 = $10 + 1 | 0;
    HEAP32[1158] = $incdec_ptr57;
    $fi_0_ph117_ph = $fi_0;
    $mode_0_ph114_ph = $or;
    $tmpport_0_ph113_ph = $tmpport_0_ph113;
    $hspsp_0_ph112_ph = $text;
    $psp_0_ph110_ph = $text;
    label = 15;
    break;
   case 23:
    $13 = HEAP8[$html59] | 0;
    $tobool60 = $13 << 24 >> 24 == 0;
    if ($tobool60) {
      label = 24;
      break;
    } else {
      $ishardspace_1 = $ishardspace_0_ph107;
      $mode_2 = $mode_0;
      $tsp_4 = $tsp_0_ph101;
      label = 57;
      break;
    }
   case 24:
    $and63 = $mode_0 & 16;
    $tobool64 = ($and63 | 0) == 0;
    if ($tobool64) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    _parse_error($0, $tmpport_0_ph113);
    $retval_0 = 0;
    label = 79;
    break;
   case 26:
    $cmp68 = $psp_0_ph110 >>> 0 > $add_ptr >>> 0;
    if ($cmp68) {
      label = 27;
      break;
    } else {
      $psp_1 = $psp_0_ph110;
      label = 29;
      break;
    }
   case 27:
    $add_ptr71 = $psp_0_ph110 - 1 | 0;
    $cmp72 = ($add_ptr71 | 0) == ($hspsp_0_ph112_ph | 0);
    if ($cmp72) {
      $psp_1 = $psp_0_ph110;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $14 = HEAP8[$add_ptr71] | 0;
    $cmp77 = $14 << 24 >> 24 == 32;
    $add_ptr71_psp_0 = $cmp77 ? $add_ptr71 : $psp_0_ph110;
    $psp_1 = $add_ptr71_psp_0;
    label = 29;
    break;
   case 29:
    HEAP8[$psp_1] = 0;
    $call82 = _strdup($text | 0) | 0;
    $and83 = $mode_0 & -17;
    $15 = HEAP32[1158] | 0;
    $incdec_ptr84 = $15 + 1 | 0;
    HEAP32[1158] = $incdec_ptr84;
    $fi_0_ph117 = $fi_0;
    $mode_0_ph114 = $and83;
    $tmpport_0_ph113 = $call82;
    $psp_0_ph110 = $psp_1;
    label = 16;
    break;
   case 30:
    $incdec_ptr86 = $10 + 1 | 0;
    HEAP32[1158] = $incdec_ptr86;
    $cmp87 = ($mode_0 | 0) == 0;
    if ($cmp87) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    $16 = HEAP8[$incdec_ptr86] | 0;
    $tobool90 = $16 << 24 >> 24 == 0;
    if ($tobool90) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 32:
    _parse_error($0, $tmpport_0_ph113);
    $retval_0 = 0;
    label = 79;
    break;
   case 33:
    $call95 = _parse_reclbl($n, $lnot_ext, 0, $text) | 0;
    $inc96 = $fi_0 + 1 | 0;
    $17 = HEAP32[$7 >> 2] | 0;
    $arrayidx = $17 + ($fi_0 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $call95;
    $tobool98 = ($call95 | 0) == 0;
    if ($tobool98) {
      label = 34;
      break;
    } else {
      $fi_0 = $inc96;
      $mode_0 = 4;
      label = 17;
      break;
    }
   case 34:
    _parse_error($0, $tmpport_0_ph113);
    $retval_0 = 0;
    label = 79;
    break;
   case 35:
    $18 = HEAP32[1158] | 0;
    $19 = HEAP8[$18] | 0;
    $tobool103 = $19 << 24 >> 24 == 0;
    $or_cond = $tobool103 & $tobool105;
    if ($or_cond) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $and107 = $mode_0 & 16;
    $tobool108 = ($and107 | 0) == 0;
    if ($tobool108) {
      label = 38;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    _parse_error($0, $tmpport_0_ph113);
    $retval_0 = 0;
    label = 79;
    break;
   case 38:
    $and112 = $mode_0 & 4;
    $tobool113 = ($and112 | 0) == 0;
    if ($tobool113) {
      label = 39;
      break;
    } else {
      $fi_1 = $fi_0;
      $fp_1 = $fp_0_ph;
      label = 40;
      break;
    }
   case 39:
    $call115 = _zmalloc(72) | 0;
    $20 = $call115;
    $inc116 = $fi_0 + 1 | 0;
    $21 = HEAP32[$7 >> 2] | 0;
    $arrayidx118 = $21 + ($fi_0 << 2) | 0;
    HEAP32[$arrayidx118 >> 2] = $20;
    $fi_1 = $inc116;
    $fp_1 = $20;
    label = 40;
    break;
   case 40:
    $tobool120 = ($tmpport_0_ph113 | 0) == 0;
    if ($tobool120) {
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $id = $fp_1 + 60 | 0;
    HEAP32[$id >> 2] = $tmpport_0_ph113;
    label = 42;
    break;
   case 42:
    $and123 = $mode_0 & 5;
    $tobool124 = ($and123 | 0) == 0;
    if ($tobool124) {
      label = 43;
      break;
    } else {
      $mode_1 = $mode_0;
      $tsp_1 = $tsp_0_ph101;
      label = 44;
      break;
    }
   case 43:
    $or126 = $mode_0 | 1;
    $incdec_ptr127 = $tsp_0_ph101 + 1 | 0;
    HEAP8[$tsp_0_ph101] = 32;
    $mode_1 = $or126;
    $tsp_1 = $incdec_ptr127;
    label = 44;
    break;
   case 44:
    $and129 = $mode_1 & 1;
    $tobool130 = ($and129 | 0) == 0;
    if ($tobool130) {
      $hstsp_1 = $hstsp_0_ph103;
      $tsp_3 = $tsp_1;
      label = 49;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $cmp133 = $tsp_1 >>> 0 > $add_ptr132 >>> 0;
    if ($cmp133) {
      label = 46;
      break;
    } else {
      $tsp_2 = $tsp_1;
      label = 48;
      break;
    }
   case 46:
    $add_ptr136 = $tsp_1 - 1 | 0;
    $cmp137 = ($add_ptr136 | 0) == ($hstsp_0_ph103 | 0);
    if ($cmp137) {
      $tsp_2 = $tsp_1;
      label = 48;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $22 = HEAP8[$add_ptr136] | 0;
    $cmp142 = $22 << 24 >> 24 == 32;
    $add_ptr136_tsp_1 = $cmp142 ? $add_ptr136 : $tsp_1;
    $tsp_2 = $add_ptr136_tsp_1;
    label = 48;
    break;
   case 48:
    HEAP8[$tsp_2] = 0;
    $call147 = _strdup($text | 0) | 0;
    $23 = HEAP8[$html148] | 0;
    $tobool150 = $23 << 24 >> 24 != 0;
    $cond = $tobool150 ? 2 : 0;
    $24 = +HEAPF64[$fontsize >> 3];
    $25 = HEAP32[$fontname >> 2] | 0;
    $26 = HEAP32[$fontcolor >> 2] | 0;
    $call151 = _make_label($9, $call147, $cond, $24, $25, $26) | 0;
    $lp = $fp_1 + 52 | 0;
    HEAP32[$lp >> 2] = $call151;
    $LR152 = $fp_1 + 64 | 0;
    HEAP8[$LR152] = 1;
    $hstsp_1 = $text;
    $tsp_3 = $text;
    label = 49;
    break;
   case 49:
    $27 = HEAP32[1158] | 0;
    $28 = HEAP8[$27] | 0;
    if (($28 << 24 >> 24 | 0) == 0) {
      $fi_0_ph_ph = $fi_1;
      $ishardspace_0_ph_ph = $ishardspace_0_ph107;
      $wflag_0_ph_ph = 1;
      $mode_0_ph_ph = $mode_1;
      $hspsp_0_ph_ph = $hspsp_0_ph112_ph;
      $hstsp_0_ph_ph = $hstsp_1;
      $psp_0_ph_ph = $psp_0_ph110;
      $tsp_0_ph_ph = $tsp_3;
      $fp_0_ph_ph = $fp_1;
      label = 12;
      break;
    } else if (($28 << 24 >> 24 | 0) == 125) {
      label = 50;
      break;
    } else {
      label = 51;
      break;
    }
   case 50:
    $incdec_ptr160 = $27 + 1 | 0;
    HEAP32[1158] = $incdec_ptr160;
    $n_flds = $call + 48 | 0;
    $29 = $n_flds;
    HEAP32[$29 >> 2] = $fi_1;
    $retval_0 = $0;
    label = 79;
    break;
   case 51:
    $incdec_ptr162 = $27 + 1 | 0;
    HEAP32[1158] = $incdec_ptr162;
    $fi_0_ph = $fi_1;
    $ishardspace_0_ph = $ishardspace_0_ph107;
    $mode_0_ph = 0;
    $hspsp_0_ph = $hspsp_0_ph112_ph;
    $hstsp_0_ph = $hstsp_1;
    $psp_0_ph = $psp_0_ph110;
    $tsp_0_ph = $tsp_3;
    $fp_0_ph = $fp_1;
    label = 13;
    break;
   case 52:
    $add_ptr166 = $10 + 1 | 0;
    $30 = HEAP8[$add_ptr166] | 0;
    if (($30 << 24 >> 24 | 0) == 123 | ($30 << 24 >> 24 | 0) == 125 | ($30 << 24 >> 24 | 0) == 124 | ($30 << 24 >> 24 | 0) == 60 | ($30 << 24 >> 24 | 0) == 62) {
      label = 53;
      break;
    } else if (($30 << 24 >> 24 | 0) == 32) {
      label = 54;
      break;
    } else if (($30 << 24 >> 24 | 0) == 0) {
      $ishardspace_1 = $ishardspace_0_ph107;
      $mode_2 = $mode_0;
      $tsp_4 = $tsp_0_ph101;
      label = 57;
      break;
    } else {
      label = 56;
      break;
    }
   case 53:
    $31 = HEAP32[1158] | 0;
    $incdec_ptr194 = $31 + 1 | 0;
    HEAP32[1158] = $incdec_ptr194;
    $ishardspace_1 = $ishardspace_0_ph107;
    $mode_2 = $mode_0;
    $tsp_4 = $tsp_0_ph101;
    label = 57;
    break;
   case 54:
    $32 = HEAP8[$html201] | 0;
    $tobool202 = $32 << 24 >> 24 == 0;
    if ($tobool202) {
      label = 55;
      break;
    } else {
      label = 56;
      break;
    }
   case 55:
    HEAP32[1158] = $add_ptr166;
    $ishardspace_1 = 1;
    $mode_2 = $mode_0;
    $tsp_4 = $tsp_0_ph101;
    label = 57;
    break;
   case 56:
    $incdec_ptr206 = $tsp_0_ph101 + 1 | 0;
    HEAP8[$tsp_0_ph101] = 92;
    $or207 = $mode_0 | 9;
    $33 = HEAP32[1158] | 0;
    $incdec_ptr208 = $33 + 1 | 0;
    HEAP32[1158] = $incdec_ptr208;
    $ishardspace_1 = $ishardspace_0_ph107;
    $mode_2 = $or207;
    $tsp_4 = $incdec_ptr206;
    label = 57;
    break;
   case 57:
    $and212 = $mode_2 & 4;
    $tobool213 = ($and212 | 0) == 0;
    if ($tobool213) {
      label = 60;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $34 = HEAP32[1158] | 0;
    $35 = HEAP8[$34] | 0;
    $cmp216 = $35 << 24 >> 24 == 32;
    if ($cmp216) {
      label = 60;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    _parse_error($0, $tmpport_0_ph113);
    $retval_0 = 0;
    label = 79;
    break;
   case 60:
    $and221 = $mode_2 & 24;
    $tobool222 = ($and221 | 0) == 0;
    if ($tobool222) {
      label = 61;
      break;
    } else {
      $mode_3 = $mode_2;
      label = 62;
      break;
    }
   case 61:
    $36 = HEAP32[1158] | 0;
    $37 = HEAP8[$36] | 0;
    $cmp225 = $37 << 24 >> 24 == 32;
    $or228 = $mode_2 | 9;
    $mode_2_or228 = $cmp225 ? $mode_2 : $or228;
    $mode_3 = $mode_2_or228;
    label = 62;
    break;
   case 62:
    $and230 = $mode_3 & 8;
    $tobool231 = ($and230 | 0) == 0;
    if ($tobool231) {
      label = 69;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $38 = HEAP32[1158] | 0;
    $39 = HEAP8[$38] | 0;
    $cmp234 = $39 << 24 >> 24 == 32;
    $tobool237 = ($ishardspace_1 | 0) == 0;
    $or_cond96 = $cmp234 & $tobool237;
    if ($or_cond96) {
      label = 64;
      break;
    } else {
      label = 66;
      break;
    }
   case 64:
    $add_ptr239 = $tsp_4 - 1 | 0;
    $40 = HEAP8[$add_ptr239] | 0;
    $cmp241 = $40 << 24 >> 24 == 32;
    if ($cmp241) {
      label = 65;
      break;
    } else {
      label = 66;
      break;
    }
   case 65:
    $41 = HEAP8[$html244] | 0;
    $tobool245 = $41 << 24 >> 24 == 0;
    if ($tobool245) {
      $tsp_5 = $tsp_4;
      label = 67;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    $42 = HEAP32[1158] | 0;
    $43 = HEAP8[$42] | 0;
    $incdec_ptr247 = $tsp_4 + 1 | 0;
    HEAP8[$tsp_4] = $43;
    $tsp_5 = $incdec_ptr247;
    label = 67;
    break;
   case 67:
    if ($tobool237) {
      $hspsp_1 = $hspsp_0_ph112_ph;
      $hstsp_2 = $hstsp_0_ph103;
      $psp_3 = $psp_0_ph110;
      $tsp_6 = $tsp_5;
      label = 76;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $add_ptr251 = $tsp_5 - 1 | 0;
    $hspsp_1 = $hspsp_0_ph112_ph;
    $hstsp_2 = $add_ptr251;
    $psp_3 = $psp_0_ph110;
    $tsp_6 = $tsp_5;
    label = 76;
    break;
   case 69:
    $and254 = $mode_3 & 16;
    $tobool255 = ($and254 | 0) == 0;
    if ($tobool255) {
      $hspsp_1 = $hspsp_0_ph112_ph;
      $hstsp_2 = $hstsp_0_ph103;
      $psp_3 = $psp_0_ph110;
      $tsp_6 = $tsp_4;
      label = 76;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $44 = HEAP32[1158] | 0;
    $45 = HEAP8[$44] | 0;
    $cmp258 = $45 << 24 >> 24 == 32;
    $tobool261 = ($ishardspace_1 | 0) == 0;
    $or_cond97 = $cmp258 & $tobool261;
    if ($or_cond97) {
      label = 71;
      break;
    } else {
      label = 73;
      break;
    }
   case 71:
    $cmp263 = ($psp_0_ph110 | 0) == ($text | 0);
    if ($cmp263) {
      $psp_2 = $psp_0_ph110;
      label = 74;
      break;
    } else {
      label = 72;
      break;
    }
   case 72:
    $add_ptr266 = $psp_0_ph110 - 1 | 0;
    $46 = HEAP8[$add_ptr266] | 0;
    $cmp268 = $46 << 24 >> 24 == 32;
    if ($cmp268) {
      $psp_2 = $psp_0_ph110;
      label = 74;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $47 = HEAP32[1158] | 0;
    $48 = HEAP8[$47] | 0;
    $incdec_ptr271 = $psp_0_ph110 + 1 | 0;
    HEAP8[$psp_0_ph110] = $48;
    $psp_2 = $incdec_ptr271;
    label = 74;
    break;
   case 74:
    if ($tobool261) {
      $hspsp_1 = $hspsp_0_ph112_ph;
      $hstsp_2 = $hstsp_0_ph103;
      $psp_3 = $psp_2;
      $tsp_6 = $tsp_4;
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $add_ptr275 = $psp_2 - 1 | 0;
    $hspsp_1 = $add_ptr275;
    $hstsp_2 = $hstsp_0_ph103;
    $psp_3 = $psp_2;
    $tsp_6 = $tsp_4;
    label = 76;
    break;
   case 76:
    $49 = HEAP32[1158] | 0;
    $incdec_ptr279 = $49 + 1 | 0;
    HEAP32[1158] = $incdec_ptr279;
    $50 = HEAP8[$incdec_ptr279] | 0;
    $tobool28398 = $50 << 24 >> 24 < 0;
    if ($tobool28398) {
      $tsp_799 = $tsp_6;
      $51 = $incdec_ptr279;
      label = 77;
      break;
    } else {
      $fi_0_ph108 = $fi_0;
      $ishardspace_0_ph107 = $ishardspace_1;
      $mode_0_ph105 = $mode_3;
      $tmpport_0_ph = $tmpport_0_ph113;
      $hspsp_0_ph104 = $hspsp_1;
      $hstsp_0_ph103 = $hstsp_2;
      $psp_0_ph102 = $psp_3;
      $tsp_0_ph101 = $tsp_6;
      label = 14;
      break;
    }
   case 77:
    $incdec_ptr285 = $51 + 1 | 0;
    HEAP32[1158] = $incdec_ptr285;
    $52 = HEAP8[$51] | 0;
    $incdec_ptr286 = $tsp_799 + 1 | 0;
    HEAP8[$tsp_799] = $52;
    $53 = HEAP32[1158] | 0;
    $54 = HEAP8[$53] | 0;
    $tobool283 = $54 << 24 >> 24 < 0;
    if ($tobool283) {
      $tsp_799 = $incdec_ptr286;
      $51 = $53;
      label = 77;
      break;
    } else {
      $fi_0_ph108 = $fi_0;
      $ishardspace_0_ph107 = $ishardspace_1;
      $mode_0_ph105 = $mode_3;
      $tmpport_0_ph = $tmpport_0_ph113;
      $hspsp_0_ph104 = $hspsp_1;
      $hstsp_0_ph103 = $hstsp_2;
      $psp_0_ph102 = $psp_3;
      $tsp_0_ph101 = $incdec_ptr286;
      label = 14;
      break;
    }
   case 78:
    $n_flds288 = $call + 48 | 0;
    $55 = $n_flds288;
    HEAP32[$55 >> 2] = $fi_0;
    $retval_0 = $0;
    label = 79;
    break;
   case 79:
    return $retval_0 | 0;
  }
  return 0;
}
function _size_reclbl($agg_result, $n, $f) {
  $agg_result = $agg_result | 0;
  $n = $n | 0;
  $f = $f | 0;
  var $marginx = 0, $marginy = 0, $tmp = 0, $lp = 0, $0 = 0, $tobool = 0, $n_flds = 0, $1 = 0, $cmp7137 = 0, $fld = 0, $d0_sroa_0_0__idx = 0, $d0_sroa_1_8__idx17 = 0, $LR = 0, $dimen_sroa_0_0__idx4 = 0, $dimen_sroa_0_0_copyload5 = 0.0, $dimen_sroa_1_8__idx11 = 0, $dimen_sroa_1_8_copyload12 = 0.0, $cmp = 0, $cmp3 = 0, $or_cond = 0, $2 = 0, $call = 0, $tobool5 = 0, $call7 = 0, $cmp8 = 0, $3 = 0.0, $mul = 0.0, $cmp10 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $mul14 = 0, $conv15 = 0.0, $add17 = 0.0, $cmp18 = 0, $4 = 0.0, $mul21 = 0.0, $cmp22 = 0, $add26 = 0.0, $sub30 = 0.0, $add26_sink = 0.0, $conv27 = 0, $mul34 = 0, $conv35 = 0.0, $add37 = 0.0, $add43 = 0.0, $sub47 = 0.0, $add43_sink = 0.0, $conv44 = 0, $mul51 = 0, $conv52 = 0.0, $add54 = 0.0, $add57 = 0.0, $add59 = 0.0, $add63 = 0.0, $add65 = 0.0, $i_040 = 0, $d_sroa_1_039 = 0.0, $d_sroa_0_038 = 0.0, $5 = 0, $arrayidx = 0, $6 = 0, $d0_sroa_0_0_copyload = 0.0, $d0_sroa_1_8_copyload = 0.0, $7 = 0, $tobool73 = 0, $add77 = 0.0, $cmp80 = 0, $d_sroa_1_0_d0_sroa_1_8_copyload = 0.0, $add92 = 0.0, $cmp95 = 0, $d_sroa_0_0_d0_sroa_0_0_copyload = 0.0, $d_sroa_0_1 = 0.0, $d_sroa_1_1 = 0.0, $inc = 0, $8 = 0, $cmp71 = 0, $d_sroa_0_2 = 0.0, $d_sroa_1_2 = 0.0, $d_sroa_0_0__idx18 = 0, $d_sroa_1_8__idx23 = 0, $d_sroa_0_0__idx = 0, $d_sroa_1_8__idx22 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $marginx = __stackBase__ | 0;
    $marginy = __stackBase__ + 8 | 0;
    $tmp = __stackBase__ + 16 | 0;
    $lp = $f + 52 | 0;
    $0 = HEAP32[$lp >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $n_flds = $f + 48 | 0;
    $1 = HEAP32[$n_flds >> 2] | 0;
    $cmp7137 = ($1 | 0) > 0;
    if ($cmp7137) {
      label = 4;
      break;
    } else {
      $d_sroa_1_2 = 0.0;
      $d_sroa_0_2 = 0.0;
      label = 26;
      break;
    }
   case 4:
    $fld = $f + 56 | 0;
    $d0_sroa_0_0__idx = $tmp | 0;
    $d0_sroa_1_8__idx17 = $tmp + 8 | 0;
    $LR = $f + 64 | 0;
    $d_sroa_0_038 = 0.0;
    $d_sroa_1_039 = 0.0;
    $i_040 = 0;
    label = 22;
    break;
   case 5:
    $dimen_sroa_0_0__idx4 = $0 + 24 | 0;
    $dimen_sroa_0_0_copyload5 = +HEAPF64[$dimen_sroa_0_0__idx4 >> 3];
    $dimen_sroa_1_8__idx11 = $0 + 32 | 0;
    $dimen_sroa_1_8_copyload12 = +HEAPF64[$dimen_sroa_1_8__idx11 >> 3];
    $cmp = $dimen_sroa_0_0_copyload5 > 0.0;
    $cmp3 = $dimen_sroa_1_8_copyload12 > 0.0;
    $or_cond = $cmp | $cmp3;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      $d_sroa_1_2 = $dimen_sroa_1_8_copyload12;
      $d_sroa_0_2 = $dimen_sroa_0_0_copyload5;
      label = 26;
      break;
    }
   case 6:
    $2 = $n | 0;
    $call = _agget($2, 99584) | 0;
    $tobool5 = ($call | 0) == 0;
    if ($tobool5) {
      label = 21;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call7 = _sscanf($call | 0, 99208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $marginx, HEAP32[tempInt + 8 >> 2] = $marginy, tempInt) | 0) | 0;
    $cmp8 = ($call7 | 0) > 0;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      label = 20;
      break;
    }
   case 8:
    $3 = +HEAPF64[$marginx >> 3];
    $mul = $3 * 72.0;
    $cmp10 = $mul < 0.0;
    if ($cmp10) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add = $mul + .5;
    $add_sink = $add;
    label = 11;
    break;
   case 10:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 11;
    break;
   case 11:
    $conv = ~~$add_sink;
    $mul14 = $conv << 1;
    $conv15 = +($mul14 | 0);
    $add17 = $dimen_sroa_0_0_copyload5 + $conv15;
    $cmp18 = ($call7 | 0) > 1;
    $4 = +HEAPF64[$marginy >> 3];
    $mul21 = $4 * 72.0;
    $cmp22 = $mul21 >= 0.0;
    if ($cmp18) {
      label = 12;
      break;
    } else {
      label = 16;
      break;
    }
   case 12:
    if ($cmp22) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add26 = $mul21 + .5;
    $add26_sink = $add26;
    label = 15;
    break;
   case 14:
    $sub30 = $mul21 + -.5;
    $add26_sink = $sub30;
    label = 15;
    break;
   case 15:
    $conv27 = ~~$add26_sink;
    $mul34 = $conv27 << 1;
    $conv35 = +($mul34 | 0);
    $add37 = $dimen_sroa_1_8_copyload12 + $conv35;
    $d_sroa_1_2 = $add37;
    $d_sroa_0_2 = $add17;
    label = 26;
    break;
   case 16:
    if ($cmp22) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add43 = $mul21 + .5;
    $add43_sink = $add43;
    label = 19;
    break;
   case 18:
    $sub47 = $mul21 + -.5;
    $add43_sink = $sub47;
    label = 19;
    break;
   case 19:
    $conv44 = ~~$add43_sink;
    $mul51 = $conv44 << 1;
    $conv52 = +($mul51 | 0);
    $add54 = $dimen_sroa_1_8_copyload12 + $conv52;
    $d_sroa_1_2 = $add54;
    $d_sroa_0_2 = $add17;
    label = 26;
    break;
   case 20:
    $add57 = $dimen_sroa_0_0_copyload5 + 16.0;
    $add59 = $dimen_sroa_1_8_copyload12 + 8.0;
    $d_sroa_1_2 = $add59;
    $d_sroa_0_2 = $add57;
    label = 26;
    break;
   case 21:
    $add63 = $dimen_sroa_0_0_copyload5 + 16.0;
    $add65 = $dimen_sroa_1_8_copyload12 + 8.0;
    $d_sroa_1_2 = $add65;
    $d_sroa_0_2 = $add63;
    label = 26;
    break;
   case 22:
    $5 = HEAP32[$fld >> 2] | 0;
    $arrayidx = $5 + ($i_040 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    _size_reclbl($tmp, $n, $6);
    $d0_sroa_0_0_copyload = +HEAPF64[$d0_sroa_0_0__idx >> 3];
    $d0_sroa_1_8_copyload = +HEAPF64[$d0_sroa_1_8__idx17 >> 3];
    $7 = HEAP8[$LR] | 0;
    $tobool73 = $7 << 24 >> 24 == 0;
    if ($tobool73) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $add77 = $d_sroa_0_038 + $d0_sroa_0_0_copyload;
    $cmp80 = $d_sroa_1_039 > $d0_sroa_1_8_copyload;
    $d_sroa_1_0_d0_sroa_1_8_copyload = $cmp80 ? $d_sroa_1_039 : $d0_sroa_1_8_copyload;
    $d_sroa_1_1 = $d_sroa_1_0_d0_sroa_1_8_copyload;
    $d_sroa_0_1 = $add77;
    label = 25;
    break;
   case 24:
    $add92 = $d_sroa_1_039 + $d0_sroa_1_8_copyload;
    $cmp95 = $d_sroa_0_038 > $d0_sroa_0_0_copyload;
    $d_sroa_0_0_d0_sroa_0_0_copyload = $cmp95 ? $d_sroa_0_038 : $d0_sroa_0_0_copyload;
    $d_sroa_1_1 = $add92;
    $d_sroa_0_1 = $d_sroa_0_0_d0_sroa_0_0_copyload;
    label = 25;
    break;
   case 25:
    $inc = $i_040 + 1 | 0;
    $8 = HEAP32[$n_flds >> 2] | 0;
    $cmp71 = ($inc | 0) < ($8 | 0);
    if ($cmp71) {
      $d_sroa_0_038 = $d_sroa_0_1;
      $d_sroa_1_039 = $d_sroa_1_1;
      $i_040 = $inc;
      label = 22;
      break;
    } else {
      $d_sroa_1_2 = $d_sroa_1_1;
      $d_sroa_0_2 = $d_sroa_0_1;
      label = 26;
      break;
    }
   case 26:
    $d_sroa_0_0__idx18 = $f | 0;
    HEAPF64[$d_sroa_0_0__idx18 >> 3] = $d_sroa_0_2;
    $d_sroa_1_8__idx23 = $f + 8 | 0;
    HEAPF64[$d_sroa_1_8__idx23 >> 3] = $d_sroa_1_2;
    $d_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$d_sroa_0_0__idx >> 3] = $d_sroa_0_2;
    $d_sroa_1_8__idx22 = $agg_result + 8 | 0;
    HEAPF64[$d_sroa_1_8__idx22 >> 3] = $d_sroa_1_2;
    STACKTOP = __stackBase__;
    return;
  }
}
function _resize_reclbl($f, $sz, $nojustify_p) {
  $f = $f | 0;
  $sz = $sz | 0;
  $nojustify_p = $nojustify_p | 0;
  var $newsz = 0, $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $sub = 0.0, $y = 0, $2 = 0.0, $y4 = 0, $3 = 0.0, $sub5 = 0.0, $4 = 0, $5 = 0, $lp = 0, $6 = 0, $tobool = 0, $tobool8 = 0, $or_cond = 0, $x11 = 0, $7 = 0.0, $add = 0.0, $8 = 0, $y15 = 0, $9 = 0.0, $add16 = 0.0, $n_flds = 0, $10 = 0, $tobool17 = 0, $LR = 0, $11 = 0, $tobool19 = 0, $conv25 = 0.0, $sub_sink = 0.0, $div = 0.0, $12 = 0, $cmp24 = 0, $fld = 0, $13 = 0.0, $14 = 0.0, $i_025 = 0, $15 = 0, $arrayidx = 0, $16 = 0, $add30 = 0, $conv31 = 0.0, $mul = 0.0, $conv32 = 0, $conv33 = 0.0, $mul34 = 0.0, $conv35 = 0, $sub36 = 0, $17 = 0, $tobool38 = 0, $x41 = 0, $18 = 0.0, $conv42 = 0.0, $add43 = 0.0, $y48 = 0, $19 = 0.0, $conv49 = 0.0, $add50 = 0.0, $20 = 0, $cmp = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  tempParam = $sz;
  $sz = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$sz >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$sz + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$sz + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$sz + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $newsz = __stackBase__ | 0;
    $x = $sz | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $f | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $sub = $0 - $1;
    $y = $sz + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y4 = $f + 8 | 0;
    $3 = +HEAPF64[$y4 >> 3];
    $sub5 = $2 - $3;
    $4 = $f;
    $5 = $sz;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $lp = $f + 52 | 0;
    $6 = HEAP32[$lp >> 2] | 0;
    $tobool = ($6 | 0) != 0;
    $tobool8 = ($nojustify_p | 0) == 0;
    $or_cond = $tobool & $tobool8;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $x11 = $6 + 40 | 0;
    $7 = +HEAPF64[$x11 >> 3];
    $add = $sub + $7;
    HEAPF64[$x11 >> 3] = $add;
    $8 = HEAP32[$lp >> 2] | 0;
    $y15 = $8 + 48 | 0;
    $9 = +HEAPF64[$y15 >> 3];
    $add16 = $sub5 + $9;
    HEAPF64[$y15 >> 3] = $add16;
    label = 4;
    break;
   case 4:
    $n_flds = $f + 48 | 0;
    $10 = HEAP32[$n_flds >> 2] | 0;
    $tobool17 = ($10 | 0) == 0;
    if ($tobool17) {
      label = 11;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $LR = $f + 64 | 0;
    $11 = HEAP8[$LR] | 0;
    $tobool19 = $11 << 24 >> 24 == 0;
    $conv25 = +($10 | 0);
    $sub_sink = $tobool19 ? $sub5 : $sub;
    $div = $sub_sink / $conv25;
    $12 = HEAP32[$n_flds >> 2] | 0;
    $cmp24 = ($12 | 0) > 0;
    if ($cmp24) {
      label = 6;
      break;
    } else {
      label = 11;
      break;
    }
   case 6:
    $fld = $f + 56 | 0;
    $13 = +HEAPF64[$x >> 3];
    $14 = +HEAPF64[$y >> 3];
    $i_025 = 0;
    label = 7;
    break;
   case 7:
    $15 = HEAP32[$fld >> 2] | 0;
    $arrayidx = $15 + ($i_025 << 2) | 0;
    $16 = HEAP32[$arrayidx >> 2] | 0;
    $add30 = $i_025 + 1 | 0;
    $conv31 = +($add30 | 0);
    $mul = $div * $conv31;
    $conv32 = ~~$mul;
    $conv33 = +($i_025 | 0);
    $mul34 = $div * $conv33;
    $conv35 = ~~$mul34;
    $sub36 = $conv32 - $conv35 | 0;
    $17 = HEAP8[$LR] | 0;
    $tobool38 = $17 << 24 >> 24 == 0;
    if ($tobool38) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $x41 = $16 | 0;
    $18 = +HEAPF64[$x41 >> 3];
    $conv42 = +($sub36 | 0);
    $add43 = $conv42 + $18;
    _pointfof795($newsz, $add43, $14);
    label = 10;
    break;
   case 9:
    $y48 = $16 + 8 | 0;
    $19 = +HEAPF64[$y48 >> 3];
    $conv49 = +($sub36 | 0);
    $add50 = $conv49 + $19;
    _pointfof795($newsz, $13, $add50);
    label = 10;
    break;
   case 10:
    _resize_reclbl($16, $newsz, $nojustify_p);
    $20 = HEAP32[$n_flds >> 2] | 0;
    $cmp = ($add30 | 0) < ($20 | 0);
    if ($cmp) {
      $i_025 = $add30;
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pos_reclbl($f, $ul, $sides) {
  $f = $f | 0;
  $ul = $ul | 0;
  $sides = $sides | 0;
  var $tmp = 0, $tmp8 = 0, $conv = 0, $sides1 = 0, $b = 0, $x = 0, $0 = 0.0, $y = 0, $1 = 0.0, $y2 = 0, $2 = 0.0, $sub = 0.0, $3 = 0, $4 = 0, $UR = 0, $5 = 0.0, $x6 = 0, $6 = 0.0, $add = 0.0, $7 = 0.0, $8 = 0, $9 = 0, $n_flds = 0, $10 = 0, $sub9 = 0, $cmp23 = 0, $tobool = 0, $fld = 0, $LR45 = 0, $LR = 0, $i_024 = 0, $11 = 0, $tobool11 = 0, $cmp13 = 0, $cmp16 = 0, $_ = 0, $_20 = 0, $_21 = 0, $_22 = 0, $mask_0 = 0, $12 = 0, $arrayidx = 0, $13 = 0, $and = 0, $14 = 0, $tobool46 = 0, $15 = 0.0, $16 = 0, $arrayidx50 = 0, $17 = 0, $x52 = 0, $18 = 0.0, $add53 = 0.0, $19 = 0.0, $20 = 0, $arrayidx58 = 0, $21 = 0, $y60 = 0, $22 = 0.0, $sub61 = 0.0, $inc = 0, $cmp = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $ul;
  $ul = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$ul >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$ul + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$ul + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$ul + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp8 = __stackBase__ + 16 | 0;
    $conv = $sides & 255;
    $sides1 = $f + 65 | 0;
    HEAP8[$sides1] = $conv;
    $b = $f + 16 | 0;
    $x = $ul | 0;
    $0 = +HEAPF64[$x >> 3];
    $y = $ul + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $y2 = $f + 8 | 0;
    $2 = +HEAPF64[$y2 >> 3];
    $sub = $1 - $2;
    _pointfof795($tmp, $0, $sub);
    $3 = $b;
    $4 = $tmp;
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $UR = $f + 32 | 0;
    $5 = +HEAPF64[$x >> 3];
    $x6 = $f | 0;
    $6 = +HEAPF64[$x6 >> 3];
    $add = $5 + $6;
    $7 = +HEAPF64[$y >> 3];
    _pointfof795($tmp8, $add, $7);
    $8 = $UR;
    $9 = $tmp8;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $n_flds = $f + 48 | 0;
    $10 = HEAP32[$n_flds >> 2] | 0;
    $sub9 = $10 - 1 | 0;
    $cmp23 = ($sub9 | 0) < 0;
    if ($cmp23) {
      label = 16;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool = ($sides | 0) == 0;
    $fld = $f + 56 | 0;
    $LR45 = $f + 64 | 0;
    $LR = $f + 64 | 0;
    $i_024 = 0;
    label = 4;
    break;
   case 4:
    if ($tobool) {
      $mask_0 = 0;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $11 = HEAP8[$LR] | 0;
    $tobool11 = $11 << 24 >> 24 == 0;
    $cmp13 = ($i_024 | 0) == 0;
    $cmp16 = ($i_024 | 0) == ($sub9 | 0);
    if ($tobool11) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    if ($cmp13) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $_ = $cmp16 ? 15 : 13;
    $mask_0 = $_;
    label = 12;
    break;
   case 8:
    $_20 = $cmp16 ? 7 : 5;
    $mask_0 = $_20;
    label = 12;
    break;
   case 9:
    if ($cmp13) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $_21 = $cmp16 ? 15 : 14;
    $mask_0 = $_21;
    label = 12;
    break;
   case 11:
    $_22 = $cmp16 ? 11 : 10;
    $mask_0 = $_22;
    label = 12;
    break;
   case 12:
    $12 = HEAP32[$fld >> 2] | 0;
    $arrayidx = $12 + ($i_024 << 2) | 0;
    $13 = HEAP32[$arrayidx >> 2] | 0;
    $and = $mask_0 & $sides;
    _pos_reclbl($13, $ul, $and);
    $14 = HEAP8[$LR45] | 0;
    $tobool46 = $14 << 24 >> 24 == 0;
    if ($tobool46) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $15 = +HEAPF64[$x >> 3];
    $16 = HEAP32[$fld >> 2] | 0;
    $arrayidx50 = $16 + ($i_024 << 2) | 0;
    $17 = HEAP32[$arrayidx50 >> 2] | 0;
    $x52 = $17 | 0;
    $18 = +HEAPF64[$x52 >> 3];
    $add53 = $15 + $18;
    HEAPF64[$x >> 3] = $add53;
    label = 15;
    break;
   case 14:
    $19 = +HEAPF64[$y >> 3];
    $20 = HEAP32[$fld >> 2] | 0;
    $arrayidx58 = $20 + ($i_024 << 2) | 0;
    $21 = HEAP32[$arrayidx58 >> 2] | 0;
    $y60 = $21 + 8 | 0;
    $22 = +HEAPF64[$y60 >> 3];
    $sub61 = $19 - $22;
    HEAPF64[$y >> 3] = $sub61;
    label = 15;
    break;
   case 15:
    $inc = $i_024 + 1 | 0;
    $cmp = ($inc | 0) > ($sub9 | 0);
    if ($cmp) {
      label = 16;
      break;
    } else {
      $i_024 = $inc;
      label = 4;
      break;
    }
   case 16:
    STACKTOP = __stackBase__;
    return;
  }
}
function _parse_error($rv, $port) {
  $rv = $rv | 0;
  $port = $port | 0;
  var $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _free_field($rv);
    $tobool = ($port | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _free($port);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _userSize($n) {
  $n = $n | 0;
  var $0 = 0, $1 = 0, $call = 0.0, $2 = 0, $call1 = 0.0, $cmp = 0, $cond = 0.0, $mul = 0.0, $cmp2 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $conv21 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $1 = HEAP32[41552] | 0;
    $call = +_late_double($0, $1, 0.0, .01);
    $2 = HEAP32[41592] | 0;
    $call1 = +_late_double($0, $2, 0.0, .02);
    $cmp = $call > $call1;
    $cond = $cmp ? $call : $call1;
    $mul = $cond * 72.0;
    $cmp2 = $mul < 0.0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $mul + .5;
    $add_sink = $add;
    label = 5;
    break;
   case 4:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 5;
    break;
   case 5:
    $conv = ~~$add_sink;
    $conv21 = +($conv | 0);
    return +$conv21;
  }
  return 0.0;
}
function _bezier_clip($inside_context, $inside, $sp, $left_inside) {
  $inside_context = $inside_context | 0;
  $inside = $inside | 0;
  $sp = $sp | 0;
  $left_inside = $left_inside | 0;
  var $seg = 0, $best = 0, $pt = 0, $low = 0, $high = 0, $tobool = 0, $arraydecay1 = 0, $0 = 0, $1 = 0, $arrayidx2 = 0, $2 = 0, $3 = 0, $right_0 = 0, $left_0 = 0, $idir_0 = 0, $odir_0 = 0, $opt_sroa_0_0__idx = 0, $opt_sroa_1_8__idx16 = 0, $found_0 = 0, $opt_sroa_0_0_copyload = 0.0, $opt_sroa_1_8_copyload = 0.0, $high_0_load21 = 0.0, $low_0_load22 = 0.0, $add = 0.0, $div = 0.0, $call = 0, $tobool3 = 0, $4 = 0, $5 = 0, $arrayidx6_1 = 0, $arrayidx7_1 = 0, $6 = 0, $7 = 0, $arrayidx6_2 = 0, $arrayidx7_2 = 0, $8 = 0, $9 = 0, $arrayidx6_3 = 0, $arrayidx7_3 = 0, $10 = 0, $11 = 0, $found_1 = 0, $12 = 0.0, $sub = 0.0, $cmp10 = 0, $sub17 = 0.0, $cond = 0.0, $cmp18 = 0, $13 = 0.0, $sub20 = 0.0, $cmp21 = 0, $sub30 = 0.0, $cond32 = 0.0, $cmp33 = 0, $tobool34 = 0, $14 = 0, $15 = 0, $arrayidx39_1 = 0, $arrayidx40_1 = 0, $16 = 0, $17 = 0, $arrayidx39_2 = 0, $arrayidx40_2 = 0, $18 = 0, $19 = 0, $arrayidx39_3 = 0, $arrayidx40_3 = 0, $20 = 0, $21 = 0, $22 = 0, $arrayidx48_1 = 0, $arrayidx49_1 = 0, $23 = 0, $24 = 0, $arrayidx48_2 = 0, $arrayidx49_2 = 0, $25 = 0, $26 = 0, $arrayidx48_3 = 0, $arrayidx49_3 = 0, $27 = 0, $28 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 160 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $seg = __stackBase__ | 0;
    $best = __stackBase__ + 64 | 0;
    $pt = __stackBase__ + 128 | 0;
    $low = __stackBase__ + 144 | 0;
    $high = __stackBase__ + 152 | 0;
    $tobool = $left_inside << 24 >> 24 == 0;
    $arraydecay1 = $seg | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = $pt;
    $1 = $sp;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $odir_0 = $high;
    $idir_0 = $low;
    $left_0 = 0;
    $right_0 = $arraydecay1;
    label = 5;
    break;
   case 4:
    $arrayidx2 = $sp + 48 | 0;
    $2 = $pt;
    $3 = $arrayidx2;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $odir_0 = $low;
    $idir_0 = $high;
    $left_0 = $arraydecay1;
    $right_0 = 0;
    label = 5;
    break;
   case 5:
    HEAPF64[$low >> 3] = 0.0;
    HEAPF64[$high >> 3] = 1.0;
    $opt_sroa_0_0__idx = $pt | 0;
    $opt_sroa_1_8__idx16 = $pt + 8 | 0;
    $found_0 = 0;
    label = 6;
    break;
   case 6:
    $opt_sroa_0_0_copyload = +HEAPF64[$opt_sroa_0_0__idx >> 3];
    $opt_sroa_1_8_copyload = +HEAPF64[$opt_sroa_1_8__idx16 >> 3];
    $high_0_load21 = +HEAPF64[$high >> 3];
    $low_0_load22 = +HEAPF64[$low >> 3];
    $add = $high_0_load21 + $low_0_load22;
    $div = $add * .5;
    _Bezier($pt, $sp, 3, $div, $left_0, $right_0);
    $call = FUNCTION_TABLE_iii[$inside & 1023]($inside_context, $pt) | 0;
    $tobool3 = $call << 24 >> 24 == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    HEAPF64[$idir_0 >> 3] = $div;
    $found_1 = $found_0;
    label = 9;
    break;
   case 8:
    $4 = $best;
    $5 = $seg;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $arrayidx6_1 = $best + 16 | 0;
    $arrayidx7_1 = $seg + 16 | 0;
    $6 = $arrayidx6_1;
    $7 = $arrayidx7_1;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $arrayidx6_2 = $best + 32 | 0;
    $arrayidx7_2 = $seg + 32 | 0;
    $8 = $arrayidx6_2;
    $9 = $arrayidx7_2;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $arrayidx6_3 = $best + 48 | 0;
    $arrayidx7_3 = $seg + 48 | 0;
    $10 = $arrayidx6_3;
    $11 = $arrayidx7_3;
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    HEAPF64[$odir_0 >> 3] = $div;
    $found_1 = 1;
    label = 9;
    break;
   case 9:
    $12 = +HEAPF64[$opt_sroa_0_0__idx >> 3];
    $sub = $opt_sroa_0_0_copyload - $12;
    $cmp10 = $sub < 0.0;
    if ($cmp10) {
      label = 10;
      break;
    } else {
      $cond = $sub;
      label = 11;
      break;
    }
   case 10:
    $sub17 = -0.0 - $sub;
    $cond = $sub17;
    label = 11;
    break;
   case 11:
    $cmp18 = $cond > .5;
    if ($cmp18) {
      $found_0 = $found_1;
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $13 = +HEAPF64[$opt_sroa_1_8__idx16 >> 3];
    $sub20 = $opt_sroa_1_8_copyload - $13;
    $cmp21 = $sub20 < 0.0;
    if ($cmp21) {
      label = 13;
      break;
    } else {
      $cond32 = $sub20;
      label = 14;
      break;
    }
   case 13:
    $sub30 = -0.0 - $sub20;
    $cond32 = $sub30;
    label = 14;
    break;
   case 14:
    $cmp33 = $cond32 > .5;
    if ($cmp33) {
      $found_0 = $found_1;
      label = 6;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $tobool34 = $found_1 << 24 >> 24 == 0;
    $14 = $sp;
    if ($tobool34) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $15 = $best;
    HEAP32[$14 >> 2] = HEAP32[$15 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$15 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$15 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$15 + 12 >> 2] | 0;
    $arrayidx39_1 = $sp + 16 | 0;
    $arrayidx40_1 = $best + 16 | 0;
    $16 = $arrayidx39_1;
    $17 = $arrayidx40_1;
    HEAP32[$16 >> 2] = HEAP32[$17 >> 2] | 0;
    HEAP32[$16 + 4 >> 2] = HEAP32[$17 + 4 >> 2] | 0;
    HEAP32[$16 + 8 >> 2] = HEAP32[$17 + 8 >> 2] | 0;
    HEAP32[$16 + 12 >> 2] = HEAP32[$17 + 12 >> 2] | 0;
    $arrayidx39_2 = $sp + 32 | 0;
    $arrayidx40_2 = $best + 32 | 0;
    $18 = $arrayidx39_2;
    $19 = $arrayidx40_2;
    HEAP32[$18 >> 2] = HEAP32[$19 >> 2] | 0;
    HEAP32[$18 + 4 >> 2] = HEAP32[$19 + 4 >> 2] | 0;
    HEAP32[$18 + 8 >> 2] = HEAP32[$19 + 8 >> 2] | 0;
    HEAP32[$18 + 12 >> 2] = HEAP32[$19 + 12 >> 2] | 0;
    $arrayidx39_3 = $sp + 48 | 0;
    $arrayidx40_3 = $best + 48 | 0;
    $20 = $arrayidx39_3;
    $21 = $arrayidx40_3;
    HEAP32[$20 >> 2] = HEAP32[$21 >> 2] | 0;
    HEAP32[$20 + 4 >> 2] = HEAP32[$21 + 4 >> 2] | 0;
    HEAP32[$20 + 8 >> 2] = HEAP32[$21 + 8 >> 2] | 0;
    HEAP32[$20 + 12 >> 2] = HEAP32[$21 + 12 >> 2] | 0;
    label = 18;
    break;
   case 17:
    $22 = $seg;
    HEAP32[$14 >> 2] = HEAP32[$22 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$22 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$22 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$22 + 12 >> 2] | 0;
    $arrayidx48_1 = $sp + 16 | 0;
    $arrayidx49_1 = $seg + 16 | 0;
    $23 = $arrayidx48_1;
    $24 = $arrayidx49_1;
    HEAP32[$23 >> 2] = HEAP32[$24 >> 2] | 0;
    HEAP32[$23 + 4 >> 2] = HEAP32[$24 + 4 >> 2] | 0;
    HEAP32[$23 + 8 >> 2] = HEAP32[$24 + 8 >> 2] | 0;
    HEAP32[$23 + 12 >> 2] = HEAP32[$24 + 12 >> 2] | 0;
    $arrayidx48_2 = $sp + 32 | 0;
    $arrayidx49_2 = $seg + 32 | 0;
    $25 = $arrayidx48_2;
    $26 = $arrayidx49_2;
    HEAP32[$25 >> 2] = HEAP32[$26 >> 2] | 0;
    HEAP32[$25 + 4 >> 2] = HEAP32[$26 + 4 >> 2] | 0;
    HEAP32[$25 + 8 >> 2] = HEAP32[$26 + 8 >> 2] | 0;
    HEAP32[$25 + 12 >> 2] = HEAP32[$26 + 12 >> 2] | 0;
    $arrayidx48_3 = $sp + 48 | 0;
    $arrayidx49_3 = $seg + 48 | 0;
    $27 = $arrayidx48_3;
    $28 = $arrayidx49_3;
    HEAP32[$27 >> 2] = HEAP32[$28 >> 2] | 0;
    HEAP32[$27 + 4 >> 2] = HEAP32[$28 + 4 >> 2] | 0;
    HEAP32[$27 + 8 >> 2] = HEAP32[$28 + 8 >> 2] | 0;
    HEAP32[$27 + 12 >> 2] = HEAP32[$28 + 12 >> 2] | 0;
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return;
  }
}
function _shape_clip($n, $curve) {
  $n = $n | 0;
  $curve = $curve | 0;
  var $c = 0, $inside_context = 0, $shape = 0, $0 = 0, $cmp = 0, $fns = 0, $1 = 0, $insidefn = 0, $2 = 0, $cmp3 = 0, $3 = 0, $n_c = 0, $bp = 0, $rw = 0, $4 = 0.0, $conv = 0, $x = 0, $5 = 0.0, $x8 = 0, $6 = 0.0, $sub = 0.0, $x9 = 0, $y = 0, $7 = 0.0, $y13 = 0, $8 = 0.0, $sub14 = 0.0, $y15 = 0, $9 = 0, $fns18 = 0, $10 = 0, $insidefn19 = 0, $11 = 0, $call = 0, $conv20 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 24 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $c = __stackBase__ | 0;
    $inside_context = __stackBase__ + 16 | 0;
    $shape = $n + 24 | 0;
    $0 = HEAP32[$shape >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $fns = $0 + 4 | 0;
    $1 = HEAP32[$fns >> 2] | 0;
    $insidefn = $1 + 12 | 0;
    $2 = HEAP32[$insidefn >> 2] | 0;
    $cmp3 = ($2 | 0) == 0;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = $inside_context | 0;
    $n_c = $n;
    HEAP32[$3 >> 2] = $n_c;
    $bp = $inside_context + 4 | 0;
    HEAP32[$bp >> 2] = 0;
    $rw = $n + 112 | 0;
    $4 = +HEAPF64[$rw >> 3];
    $conv = ~~$4;
    $x = $curve | 0;
    $5 = +HEAPF64[$x >> 3];
    $x8 = $n + 32 | 0;
    $6 = +HEAPF64[$x8 >> 3];
    $sub = $5 - $6;
    $x9 = $c | 0;
    HEAPF64[$x9 >> 3] = $sub;
    $y = $curve + 8 | 0;
    $7 = +HEAPF64[$y >> 3];
    $y13 = $n + 40 | 0;
    $8 = +HEAPF64[$y13 >> 3];
    $sub14 = $7 - $8;
    $y15 = $c + 8 | 0;
    HEAPF64[$y15 >> 3] = $sub14;
    $9 = HEAP32[$shape >> 2] | 0;
    $fns18 = $9 + 4 | 0;
    $10 = HEAP32[$fns18 >> 2] | 0;
    $insidefn19 = $10 + 12 | 0;
    $11 = HEAP32[$insidefn19 >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$11 & 1023]($inside_context, $c) | 0;
    $conv20 = +($conv | 0);
    HEAPF64[$rw >> 3] = $conv20;
    _shape_clip0($inside_context, $n, $curve, $call);
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _shape_clip0($inside_context, $n, $curve, $left_inside) {
  $inside_context = $inside_context | 0;
  $n = $n | 0;
  $curve = $curve | 0;
  $left_inside = $left_inside | 0;
  var $c = 0, $rw = 0, $0 = 0.0, $1 = 0.0, $2 = 0.0, $x22 = 0, $y29 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  $c = __stackBase__ | 0;
  $rw = $n + 112 | 0;
  $0 = +HEAPF64[$n + 32 >> 3];
  $1 = +HEAPF64[$n + 40 >> 3];
  $2 = +HEAPF64[$rw >> 3];
  HEAPF64[$c >> 3] = +HEAPF64[$curve >> 3] - $0;
  HEAPF64[$c + 8 >> 3] = +HEAPF64[$curve + 8 >> 3] - $1;
  HEAPF64[$c + 16 >> 3] = +HEAPF64[$curve + 16 >> 3] - $0;
  HEAPF64[$c + 24 >> 3] = +HEAPF64[$curve + 24 >> 3] - $1;
  HEAPF64[$c + 32 >> 3] = +HEAPF64[$curve + 32 >> 3] - $0;
  HEAPF64[$c + 40 >> 3] = +HEAPF64[$curve + 40 >> 3] - $1;
  HEAPF64[$c + 48 >> 3] = +HEAPF64[$curve + 48 >> 3] - $0;
  HEAPF64[$c + 56 >> 3] = +HEAPF64[$curve + 56 >> 3] - $1;
  _bezier_clip($inside_context, HEAP32[(HEAP32[(HEAP32[$n + 24 >> 2] | 0) + 4 >> 2] | 0) + 12 >> 2] | 0, $c | 0, $left_inside);
  $x22 = $n + 32 | 0;
  $y29 = $n + 40 | 0;
  HEAPF64[$curve >> 3] = +HEAPF64[$c >> 3] + +HEAPF64[$x22 >> 3];
  HEAPF64[$curve + 8 >> 3] = +HEAPF64[$c + 8 >> 3] + +HEAPF64[$y29 >> 3];
  HEAPF64[$curve + 16 >> 3] = +HEAPF64[$c + 16 >> 3] + +HEAPF64[$x22 >> 3];
  HEAPF64[$curve + 24 >> 3] = +HEAPF64[$c + 24 >> 3] + +HEAPF64[$y29 >> 3];
  HEAPF64[$curve + 32 >> 3] = +HEAPF64[$c + 32 >> 3] + +HEAPF64[$x22 >> 3];
  HEAPF64[$curve + 40 >> 3] = +HEAPF64[$c + 40 >> 3] + +HEAPF64[$y29 >> 3];
  HEAPF64[$curve + 48 >> 3] = +HEAPF64[$c + 48 >> 3] + +HEAPF64[$x22 >> 3];
  HEAPF64[$curve + 56 >> 3] = +HEAPF64[$c + 56 >> 3] + +HEAPF64[$y29 >> 3];
  HEAPF64[$rw >> 3] = +(~~$2 | 0);
  STACKTOP = __stackBase__;
  return;
}
function _new_spline($e, $sz) {
  $e = $e | 0;
  $sz = $sz | 0;
  var $edge_type14 = 0, $0 = 0, $cmp15 = 0, $e_addr_016 = 0, $to_orig = 0, $1 = 0, $edge_type = 0, $2 = 0, $cmp = 0, $e_addr_0_lcssa = 0, $spl = 0, $3 = 0, $cmp4 = 0, $call = 0, $4 = 0, $5 = 0, $list = 0, $6 = 0, $tobool = 0, $7 = 0, $size = 0, $8 = 0, $9 = 0, $mul = 0, $call15 = 0, $size18 = 0, $10 = 0, $11 = 0, $mul20 = 0, $call21 = 0, $call15_sink = 0, $12 = 0, $13 = 0, $list24 = 0, $14 = 0, $size27 = 0, $15 = 0, $inc = 0, $16 = 0, $list30 = 0, $17 = 0, $arrayidx = 0, $mul31 = 0, $call32 = 0, $18 = 0, $list33 = 0, $size34 = 0, $eflag = 0, $sflag = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $edge_type14 = $e + 128 | 0;
    $0 = HEAP8[$edge_type14] | 0;
    $cmp15 = $0 << 24 >> 24 == 0;
    if ($cmp15) {
      $e_addr_0_lcssa = $e;
      label = 4;
      break;
    } else {
      $e_addr_016 = $e;
      label = 3;
      break;
    }
   case 3:
    $to_orig = $e_addr_016 + 132 | 0;
    $1 = HEAP32[$to_orig >> 2] | 0;
    $edge_type = $1 + 128 | 0;
    $2 = HEAP8[$edge_type] | 0;
    $cmp = $2 << 24 >> 24 == 0;
    if ($cmp) {
      $e_addr_0_lcssa = $1;
      label = 4;
      break;
    } else {
      $e_addr_016 = $1;
      label = 3;
      break;
    }
   case 4:
    $spl = $e_addr_0_lcssa + 24 | 0;
    $3 = HEAP32[$spl >> 2] | 0;
    $cmp4 = ($3 | 0) == 0;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call = _zmalloc(40) | 0;
    $4 = $call;
    HEAP32[$spl >> 2] = $4;
    label = 6;
    break;
   case 6:
    $5 = HEAP32[$spl >> 2] | 0;
    $list = $5 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = $6;
    $size = $5 + 4 | 0;
    $8 = HEAP32[$size >> 2] | 0;
    $9 = $8 * 48 & -1;
    $mul = $9 + 48 | 0;
    $call15 = _grealloc($7, $mul) | 0;
    $call15_sink = $call15;
    label = 9;
    break;
   case 8:
    $size18 = $5 + 4 | 0;
    $10 = HEAP32[$size18 >> 2] | 0;
    $11 = $10 * 48 & -1;
    $mul20 = $11 + 48 | 0;
    $call21 = _gmalloc($mul20) | 0;
    $call15_sink = $call21;
    label = 9;
    break;
   case 9:
    $12 = $call15_sink;
    $13 = HEAP32[$spl >> 2] | 0;
    $list24 = $13 | 0;
    HEAP32[$list24 >> 2] = $12;
    $14 = HEAP32[$spl >> 2] | 0;
    $size27 = $14 + 4 | 0;
    $15 = HEAP32[$size27 >> 2] | 0;
    $inc = $15 + 1 | 0;
    HEAP32[$size27 >> 2] = $inc;
    $16 = HEAP32[$spl >> 2] | 0;
    $list30 = $16 | 0;
    $17 = HEAP32[$list30 >> 2] | 0;
    $arrayidx = $17 + ($15 * 48 & -1) | 0;
    $mul31 = $sz << 4;
    $call32 = _zmalloc($mul31) | 0;
    $18 = $call32;
    $list33 = $arrayidx | 0;
    HEAP32[$list33 >> 2] = $18;
    $size34 = $17 + ($15 * 48 & -1) + 4 | 0;
    HEAP32[$size34 >> 2] = $sz;
    $eflag = $17 + ($15 * 48 & -1) + 12 | 0;
    HEAP32[$eflag >> 2] = 0;
    $sflag = $17 + ($15 * 48 & -1) + 8 | 0;
    HEAP32[$sflag >> 2] = 0;
    return $arrayidx | 0;
  }
  return 0;
}
function _clip_and_install($fe, $hn, $ps, $pn, $info) {
  $fe = $fe | 0;
  $hn = $hn | 0;
  $ps = $ps | 0;
  $pn = $pn | 0;
  $info = $info | 0;
  var $p2 = 0, $start = 0, $end = 0, $inside_context = 0, $cp = 0, $tail = 0, $0 = 0, $graph = 0, $1 = 0, $call = 0, $edge_type96 = 0, $2 = 0, $cmp97 = 0, $orig_098 = 0, $to_orig = 0, $3 = 0, $edge_type = 0, $4 = 0, $cmp = 0, $orig_0_lcssa = 0, $ignoreSwap = 0, $5 = 0, $tobool = 0, $rank = 0, $6 = 0, $rank5 = 0, $7 = 0, $cmp6 = 0, $order = 0, $8 = 0, $order11 = 0, $9 = 0, $cmp12 = 0, $hn_ = 0, $_hn = 0, $tn_0 = 0, $hn_addr_0 = 0, $tail14 = 0, $10 = 0, $cmp15 = 0, $clip = 0, $clip21 = 0, $bp = 0, $bp27 = 0, $clip30 = 0, $clip34 = 0, $bp38 = 0, $bp41 = 0, $clipTail_0_in_in = 0, $clipHead_0_in_in = 0, $tbox_0_in = 0, $hbox_0_in = 0, $clipHead_0_in = 0, $clipTail_0_in = 0, $hbox_0 = 0, $tbox_0 = 0, $tobool43 = 0, $shape = 0, $11 = 0, $tobool46 = 0, $fns = 0, $12 = 0, $insidefn = 0, $13 = 0, $tobool50 = 0, $14 = 0, $tn_0_c = 0, $bp53 = 0, $tbox_0_c = 0, $sub = 0, $cmp5594 = 0, $x59 = 0, $x61 = 0, $y66 = 0, $y68 = 0, $storemerge8695 = 0, $add = 0, $x = 0, $15 = 0.0, $16 = 0.0, $sub60 = 0.0, $17 = 0, $add62 = 0, $y = 0, $18 = 0.0, $19 = 0.0, $sub67 = 0.0, $20 = 0, $fns71 = 0, $21 = 0, $insidefn72 = 0, $22 = 0, $call73 = 0, $cmp75 = 0, $23 = 0, $add80 = 0, $cmp55 = 0, $24 = 0, $arrayidx82 = 0, $tobool85 = 0, $shape88 = 0, $25 = 0, $tobool89 = 0, $fns93 = 0, $26 = 0, $insidefn94 = 0, $27 = 0, $tobool95 = 0, $28 = 0, $hn_addr_0_c = 0, $bp100 = 0, $hbox_0_c = 0, $sub101 = 0, $cmp10392 = 0, $x110 = 0, $x112 = 0, $y117 = 0, $y119 = 0, $storemerge93 = 0, $x107 = 0, $29 = 0.0, $30 = 0.0, $sub111 = 0.0, $31 = 0, $y114 = 0, $32 = 0.0, $33 = 0.0, $sub118 = 0.0, $34 = 0, $fns122 = 0, $35 = 0, $insidefn123 = 0, $36 = 0, $call124 = 0, $cmp126 = 0, $37 = 0, $sub131 = 0, $cmp103 = 0, $38 = 0, $arrayidx133 = 0, $sub135 = 0, $39 = 0, $sub138 = 0, $cmp13991 = 0, $40 = 0, $x143 = 0, $41 = 0.0, $add144 = 0, $x146 = 0, $42 = 0.0, $sub147 = 0.0, $mul = 0.0, $y155 = 0, $43 = 0.0, $y158 = 0, $44 = 0.0, $sub159 = 0.0, $mul166 = 0.0, $add167 = 0.0, $cmp168 = 0, $cmp139 = 0, $_pr = 0, $cmp17690 = 0, $45 = 0, $x180 = 0, $46 = 0.0, $add181 = 0, $x183 = 0, $47 = 0.0, $sub184 = 0.0, $mul191 = 0.0, $y193 = 0, $48 = 0.0, $y196 = 0, $49 = 0.0, $sub197 = 0.0, $mul204 = 0.0, $add205 = 0.0, $cmp206 = 0, $sub211 = 0, $cmp176 = 0, $50 = 0, $51 = 0, $add21487 = 0, $cmp21588 = 0, $52 = 0, $list = 0, $53 = 0, $54 = 0, $add224 = 0, $arrayidx222 = 0, $arrayidx233 = 0, $55 = 0, $56 = 0, $arrayidx240 = 0, $57 = 0, $arrayidx243 = 0, $58 = 0, $bb = 0, $59 = 0, $add214 = 0, $i_089 = 0, $sub219 = 0, $60 = 0, $arrayidx220 = 0, $arrayidx221 = 0, $61 = 0, $62 = 0, $inc = 0, $cmp225 = 0, $sub229 = 0, $63 = 0, $arrayidx231 = 0, $arrayidx232 = 0, $64 = 0, $65 = 0, $inc235 = 0, $sub236 = 0, $66 = 0, $arrayidx238 = 0, $arrayidx239 = 0, $67 = 0, $68 = 0, $inc242 = 0, $arrayidx244 = 0, $69 = 0, $cmp215 = 0, $70 = 0, $71 = 0, $sub247 = 0, $add248 = 0, $size = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 104 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p2 = __stackBase__ | 0;
    $start = __stackBase__ + 16 | 0;
    $end = __stackBase__ + 24 | 0;
    $inside_context = __stackBase__ + 32 | 0;
    $cp = __stackBase__ + 40 | 0;
    $tail = $fe + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $call = _new_spline($fe, $pn) | 0;
    $edge_type96 = $fe + 128 | 0;
    $2 = HEAP8[$edge_type96] | 0;
    $cmp97 = $2 << 24 >> 24 == 0;
    if ($cmp97) {
      $orig_0_lcssa = $fe;
      label = 4;
      break;
    } else {
      $orig_098 = $fe;
      label = 3;
      break;
    }
   case 3:
    $to_orig = $orig_098 + 132 | 0;
    $3 = HEAP32[$to_orig >> 2] | 0;
    $edge_type = $3 + 128 | 0;
    $4 = HEAP8[$edge_type] | 0;
    $cmp = $4 << 24 >> 24 == 0;
    if ($cmp) {
      $orig_0_lcssa = $3;
      label = 4;
      break;
    } else {
      $orig_098 = $3;
      label = 3;
      break;
    }
   case 4:
    $ignoreSwap = $info + 8 | 0;
    $5 = HEAP8[$ignoreSwap] | 0;
    $tobool = $5 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $hn_addr_0 = $hn;
      $tn_0 = $0;
      label = 7;
      break;
    }
   case 5:
    $rank = $0 + 236 | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $rank5 = $hn + 236 | 0;
    $7 = HEAP32[$rank5 >> 2] | 0;
    $cmp6 = ($6 | 0) == ($7 | 0);
    if ($cmp6) {
      label = 6;
      break;
    } else {
      $hn_addr_0 = $hn;
      $tn_0 = $0;
      label = 7;
      break;
    }
   case 6:
    $order = $0 + 240 | 0;
    $8 = HEAP32[$order >> 2] | 0;
    $order11 = $hn + 240 | 0;
    $9 = HEAP32[$order11 >> 2] | 0;
    $cmp12 = ($8 | 0) > ($9 | 0);
    $hn_ = $cmp12 ? $hn : $0;
    $_hn = $cmp12 ? $0 : $hn;
    $hn_addr_0 = $_hn;
    $tn_0 = $hn_;
    label = 7;
    break;
   case 7:
    $tail14 = $orig_0_lcssa + 16 | 0;
    $10 = HEAP32[$tail14 >> 2] | 0;
    $cmp15 = ($tn_0 | 0) == ($10 | 0);
    if ($cmp15) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $clip = $orig_0_lcssa + 62 | 0;
    $clip21 = $orig_0_lcssa + 102 | 0;
    $bp = $orig_0_lcssa + 56 | 0;
    $bp27 = $orig_0_lcssa + 96 | 0;
    $hbox_0_in = $bp27;
    $tbox_0_in = $bp;
    $clipHead_0_in_in = $clip21;
    $clipTail_0_in_in = $clip;
    label = 10;
    break;
   case 9:
    $clip30 = $orig_0_lcssa + 102 | 0;
    $clip34 = $orig_0_lcssa + 62 | 0;
    $bp38 = $orig_0_lcssa + 56 | 0;
    $bp41 = $orig_0_lcssa + 96 | 0;
    $hbox_0_in = $bp38;
    $tbox_0_in = $bp41;
    $clipHead_0_in_in = $clip34;
    $clipTail_0_in_in = $clip30;
    label = 10;
    break;
   case 10:
    $clipHead_0_in = HEAP8[$clipHead_0_in_in] | 0;
    $clipTail_0_in = HEAP8[$clipTail_0_in_in] | 0;
    $hbox_0 = HEAP32[$hbox_0_in >> 2] | 0;
    $tbox_0 = HEAP32[$tbox_0_in >> 2] | 0;
    $tobool43 = $clipTail_0_in << 24 >> 24 == 0;
    if ($tobool43) {
      label = 18;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $shape = $tn_0 + 24 | 0;
    $11 = HEAP32[$shape >> 2] | 0;
    $tobool46 = ($11 | 0) == 0;
    if ($tobool46) {
      label = 18;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $fns = $11 + 4 | 0;
    $12 = HEAP32[$fns >> 2] | 0;
    $insidefn = $12 + 12 | 0;
    $13 = HEAP32[$insidefn >> 2] | 0;
    $tobool50 = ($13 | 0) == 0;
    if ($tobool50) {
      label = 18;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $14 = $inside_context | 0;
    $tn_0_c = $tn_0;
    HEAP32[$14 >> 2] = $tn_0_c;
    $bp53 = $inside_context + 4 | 0;
    $tbox_0_c = $tbox_0 | 0;
    HEAP32[$bp53 >> 2] = $tbox_0_c;
    HEAP32[$start >> 2] = 0;
    $sub = $pn - 4 | 0;
    $cmp5594 = ($sub | 0) > 0;
    if ($cmp5594) {
      label = 14;
      break;
    } else {
      label = 17;
      break;
    }
   case 14:
    $x59 = $tn_0 + 32 | 0;
    $x61 = $p2 | 0;
    $y66 = $tn_0 + 40 | 0;
    $y68 = $p2 + 8 | 0;
    $storemerge8695 = 0;
    label = 15;
    break;
   case 15:
    $add = $storemerge8695 + 3 | 0;
    $x = $ps + ($add << 4) | 0;
    $15 = +HEAPF64[$x >> 3];
    $16 = +HEAPF64[$x59 >> 3];
    $sub60 = $15 - $16;
    HEAPF64[$x61 >> 3] = $sub60;
    $17 = HEAP32[$start >> 2] | 0;
    $add62 = $17 + 3 | 0;
    $y = $ps + ($add62 << 4) + 8 | 0;
    $18 = +HEAPF64[$y >> 3];
    $19 = +HEAPF64[$y66 >> 3];
    $sub67 = $18 - $19;
    HEAPF64[$y68 >> 3] = $sub67;
    $20 = HEAP32[$shape >> 2] | 0;
    $fns71 = $20 + 4 | 0;
    $21 = HEAP32[$fns71 >> 2] | 0;
    $insidefn72 = $21 + 12 | 0;
    $22 = HEAP32[$insidefn72 >> 2] | 0;
    $call73 = FUNCTION_TABLE_iii[$22 & 1023]($inside_context, $p2) | 0;
    $cmp75 = $call73 << 24 >> 24 == 0;
    if ($cmp75) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $23 = HEAP32[$start >> 2] | 0;
    $add80 = $23 + 3 | 0;
    HEAP32[$start >> 2] = $add80;
    $cmp55 = ($add80 | 0) < ($sub | 0);
    if ($cmp55) {
      $storemerge8695 = $add80;
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $24 = HEAP32[$start >> 2] | 0;
    $arrayidx82 = $ps + ($24 << 4) | 0;
    _shape_clip0($inside_context, $tn_0, $arrayidx82, 1);
    label = 19;
    break;
   case 18:
    HEAP32[$start >> 2] = 0;
    label = 19;
    break;
   case 19:
    $tobool85 = $clipHead_0_in << 24 >> 24 == 0;
    if ($tobool85) {
      label = 27;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $shape88 = $hn_addr_0 + 24 | 0;
    $25 = HEAP32[$shape88 >> 2] | 0;
    $tobool89 = ($25 | 0) == 0;
    if ($tobool89) {
      label = 27;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $fns93 = $25 + 4 | 0;
    $26 = HEAP32[$fns93 >> 2] | 0;
    $insidefn94 = $26 + 12 | 0;
    $27 = HEAP32[$insidefn94 >> 2] | 0;
    $tobool95 = ($27 | 0) == 0;
    if ($tobool95) {
      label = 27;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $28 = $inside_context | 0;
    $hn_addr_0_c = $hn_addr_0;
    HEAP32[$28 >> 2] = $hn_addr_0_c;
    $bp100 = $inside_context + 4 | 0;
    $hbox_0_c = $hbox_0 | 0;
    HEAP32[$bp100 >> 2] = $hbox_0_c;
    $sub101 = $pn - 4 | 0;
    HEAP32[$end >> 2] = $sub101;
    $cmp10392 = ($sub101 | 0) > 0;
    if ($cmp10392) {
      label = 23;
      break;
    } else {
      label = 26;
      break;
    }
   case 23:
    $x110 = $hn_addr_0 + 32 | 0;
    $x112 = $p2 | 0;
    $y117 = $hn_addr_0 + 40 | 0;
    $y119 = $p2 + 8 | 0;
    $storemerge93 = $sub101;
    label = 24;
    break;
   case 24:
    $x107 = $ps + ($storemerge93 << 4) | 0;
    $29 = +HEAPF64[$x107 >> 3];
    $30 = +HEAPF64[$x110 >> 3];
    $sub111 = $29 - $30;
    HEAPF64[$x112 >> 3] = $sub111;
    $31 = HEAP32[$end >> 2] | 0;
    $y114 = $ps + ($31 << 4) + 8 | 0;
    $32 = +HEAPF64[$y114 >> 3];
    $33 = +HEAPF64[$y117 >> 3];
    $sub118 = $32 - $33;
    HEAPF64[$y119 >> 3] = $sub118;
    $34 = HEAP32[$shape88 >> 2] | 0;
    $fns122 = $34 + 4 | 0;
    $35 = HEAP32[$fns122 >> 2] | 0;
    $insidefn123 = $35 + 12 | 0;
    $36 = HEAP32[$insidefn123 >> 2] | 0;
    $call124 = FUNCTION_TABLE_iii[$36 & 1023]($inside_context, $p2) | 0;
    $cmp126 = $call124 << 24 >> 24 == 0;
    if ($cmp126) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $37 = HEAP32[$end >> 2] | 0;
    $sub131 = $37 - 3 | 0;
    HEAP32[$end >> 2] = $sub131;
    $cmp103 = ($sub131 | 0) > 0;
    if ($cmp103) {
      $storemerge93 = $sub131;
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $38 = HEAP32[$end >> 2] | 0;
    $arrayidx133 = $ps + ($38 << 4) | 0;
    _shape_clip0($inside_context, $hn_addr_0, $arrayidx133, 0);
    label = 28;
    break;
   case 27:
    $sub135 = $pn - 4 | 0;
    HEAP32[$end >> 2] = $sub135;
    label = 28;
    break;
   case 28:
    $39 = HEAP32[$start >> 2] | 0;
    $sub138 = $pn - 4 | 0;
    $cmp13991 = ($39 | 0) < ($sub138 | 0);
    if ($cmp13991) {
      $40 = $39;
      label = 29;
      break;
    } else {
      label = 31;
      break;
    }
   case 29:
    $x143 = $ps + ($40 << 4) | 0;
    $41 = +HEAPF64[$x143 >> 3];
    $add144 = $40 + 3 | 0;
    $x146 = $ps + ($add144 << 4) | 0;
    $42 = +HEAPF64[$x146 >> 3];
    $sub147 = $41 - $42;
    $mul = $sub147 * $sub147;
    $y155 = $ps + ($40 << 4) + 8 | 0;
    $43 = +HEAPF64[$y155 >> 3];
    $y158 = $ps + ($add144 << 4) + 8 | 0;
    $44 = +HEAPF64[$y158 >> 3];
    $sub159 = $43 - $44;
    $mul166 = $sub159 * $sub159;
    $add167 = $mul + $mul166;
    $cmp168 = $add167 < 1.0e-6;
    if ($cmp168) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    HEAP32[$start >> 2] = $add144;
    $cmp139 = ($add144 | 0) < ($sub138 | 0);
    if ($cmp139) {
      $40 = $add144;
      label = 29;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $_pr = HEAP32[$end >> 2] | 0;
    $cmp17690 = ($_pr | 0) > 0;
    if ($cmp17690) {
      $45 = $_pr;
      label = 32;
      break;
    } else {
      label = 34;
      break;
    }
   case 32:
    $x180 = $ps + ($45 << 4) | 0;
    $46 = +HEAPF64[$x180 >> 3];
    $add181 = $45 + 3 | 0;
    $x183 = $ps + ($add181 << 4) | 0;
    $47 = +HEAPF64[$x183 >> 3];
    $sub184 = $46 - $47;
    $mul191 = $sub184 * $sub184;
    $y193 = $ps + ($45 << 4) + 8 | 0;
    $48 = +HEAPF64[$y193 >> 3];
    $y196 = $ps + ($add181 << 4) + 8 | 0;
    $49 = +HEAPF64[$y196 >> 3];
    $sub197 = $48 - $49;
    $mul204 = $sub197 * $sub197;
    $add205 = $mul191 + $mul204;
    $cmp206 = $add205 < 1.0e-6;
    if ($cmp206) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $sub211 = $45 - 3 | 0;
    HEAP32[$end >> 2] = $sub211;
    $cmp176 = ($sub211 | 0) > 0;
    if ($cmp176) {
      $45 = $sub211;
      label = 32;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    _arrow_clip($fe, $hn_addr_0, $ps, $start, $end, $call, $info);
    $50 = HEAP32[$start >> 2] | 0;
    $51 = HEAP32[$end >> 2] | 0;
    $add21487 = $51 + 4 | 0;
    $cmp21588 = ($50 | 0) < ($add21487 | 0);
    if ($cmp21588) {
      label = 35;
      break;
    } else {
      label = 38;
      break;
    }
   case 35:
    $52 = HEAP32[$start >> 2] | 0;
    $list = $call | 0;
    $53 = $cp;
    $54 = HEAP32[$end >> 2] | 0;
    $add224 = $54 + 4 | 0;
    $arrayidx222 = $cp | 0;
    $arrayidx233 = $cp + 16 | 0;
    $55 = $arrayidx233;
    $56 = HEAP32[$start >> 2] | 0;
    $arrayidx240 = $cp + 32 | 0;
    $57 = $arrayidx240;
    $arrayidx243 = $cp + 48 | 0;
    $58 = $arrayidx243;
    $bb = $1 + 56 | 0;
    $59 = HEAP32[$end >> 2] | 0;
    $add214 = $59 + 4 | 0;
    $i_089 = $50;
    label = 36;
    break;
   case 36:
    $sub219 = $i_089 - $52 | 0;
    $60 = HEAP32[$list >> 2] | 0;
    $arrayidx220 = $60 + ($sub219 << 4) | 0;
    $arrayidx221 = $ps + ($i_089 << 4) | 0;
    $61 = $arrayidx220;
    $62 = $arrayidx221;
    HEAP32[$61 >> 2] = HEAP32[$62 >> 2] | 0;
    HEAP32[$61 + 4 >> 2] = HEAP32[$62 + 4 >> 2] | 0;
    HEAP32[$61 + 8 >> 2] = HEAP32[$62 + 8 >> 2] | 0;
    HEAP32[$61 + 12 >> 2] = HEAP32[$62 + 12 >> 2] | 0;
    HEAP32[$53 >> 2] = HEAP32[$62 >> 2] | 0;
    HEAP32[$53 + 4 >> 2] = HEAP32[$62 + 4 >> 2] | 0;
    HEAP32[$53 + 8 >> 2] = HEAP32[$62 + 8 >> 2] | 0;
    HEAP32[$53 + 12 >> 2] = HEAP32[$62 + 12 >> 2] | 0;
    $inc = $i_089 + 1 | 0;
    $cmp225 = ($inc | 0) < ($add224 | 0);
    if ($cmp225) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $sub229 = $inc - $52 | 0;
    $63 = HEAP32[$list >> 2] | 0;
    $arrayidx231 = $63 + ($sub229 << 4) | 0;
    $arrayidx232 = $ps + ($inc << 4) | 0;
    $64 = $arrayidx231;
    $65 = $arrayidx232;
    HEAP32[$64 >> 2] = HEAP32[$65 >> 2] | 0;
    HEAP32[$64 + 4 >> 2] = HEAP32[$65 + 4 >> 2] | 0;
    HEAP32[$64 + 8 >> 2] = HEAP32[$65 + 8 >> 2] | 0;
    HEAP32[$64 + 12 >> 2] = HEAP32[$65 + 12 >> 2] | 0;
    HEAP32[$55 >> 2] = HEAP32[$65 >> 2] | 0;
    HEAP32[$55 + 4 >> 2] = HEAP32[$65 + 4 >> 2] | 0;
    HEAP32[$55 + 8 >> 2] = HEAP32[$65 + 8 >> 2] | 0;
    HEAP32[$55 + 12 >> 2] = HEAP32[$65 + 12 >> 2] | 0;
    $inc235 = $i_089 + 2 | 0;
    $sub236 = $inc235 - $56 | 0;
    $66 = HEAP32[$list >> 2] | 0;
    $arrayidx238 = $66 + ($sub236 << 4) | 0;
    $arrayidx239 = $ps + ($inc235 << 4) | 0;
    $67 = $arrayidx238;
    $68 = $arrayidx239;
    HEAP32[$67 >> 2] = HEAP32[$68 >> 2] | 0;
    HEAP32[$67 + 4 >> 2] = HEAP32[$68 + 4 >> 2] | 0;
    HEAP32[$67 + 8 >> 2] = HEAP32[$68 + 8 >> 2] | 0;
    HEAP32[$67 + 12 >> 2] = HEAP32[$68 + 12 >> 2] | 0;
    HEAP32[$57 >> 2] = HEAP32[$68 >> 2] | 0;
    HEAP32[$57 + 4 >> 2] = HEAP32[$68 + 4 >> 2] | 0;
    HEAP32[$57 + 8 >> 2] = HEAP32[$68 + 8 >> 2] | 0;
    HEAP32[$57 + 12 >> 2] = HEAP32[$68 + 12 >> 2] | 0;
    $inc242 = $i_089 + 3 | 0;
    $arrayidx244 = $ps + ($inc242 << 4) | 0;
    $69 = $arrayidx244;
    HEAP32[$58 >> 2] = HEAP32[$69 >> 2] | 0;
    HEAP32[$58 + 4 >> 2] = HEAP32[$69 + 4 >> 2] | 0;
    HEAP32[$58 + 8 >> 2] = HEAP32[$69 + 8 >> 2] | 0;
    HEAP32[$58 + 12 >> 2] = HEAP32[$69 + 12 >> 2] | 0;
    _update_bb_bz($bb, $arrayidx222);
    $cmp215 = ($inc242 | 0) < ($add214 | 0);
    if ($cmp215) {
      $i_089 = $inc242;
      label = 36;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $70 = HEAP32[$end >> 2] | 0;
    $71 = HEAP32[$start >> 2] | 0;
    $sub247 = $70 + 4 | 0;
    $add248 = $sub247 - $71 | 0;
    $size = $call + 4 | 0;
    HEAP32[$size >> 2] = $add248;
    STACKTOP = __stackBase__;
    return;
  }
}
function _arrow_clip($fe, $hn, $ps, $startp, $endp, $spl, $info) {
  $fe = $fe | 0;
  $hn = $hn | 0;
  $ps = $ps | 0;
  $startp = $startp | 0;
  $endp = $endp | 0;
  $spl = $spl | 0;
  $info = $info | 0;
  var $sflag = 0, $eflag = 0, $e_0 = 0, $to_orig = 0, $0 = 0, $tobool = 0, $ignoreSwap = 0, $1 = 0, $tobool3 = 0, $swapEnds = 0, $2 = 0, $call = 0, $conv = 0, $j_0 = 0, $splineMerge = 0, $3 = 0, $call4 = 0, $tobool5 = 0, $4 = 0, $tail = 0, $5 = 0, $call9 = 0, $tobool10 = 0, $tobool13 = 0, $6 = 0, $7 = 0, $isOrtho = 0, $8 = 0, $tobool16 = 0, $9 = 0, $tobool18 = 0, $10 = 0, $tobool19 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $tobool23 = 0, $16 = 0, $17 = 0, $call25 = 0, $18 = 0, $tobool27 = 0, $19 = 0, $20 = 0, $call29 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sflag = __stackBase__ | 0;
    $eflag = __stackBase__ + 8 | 0;
    $e_0 = $fe;
    label = 3;
    break;
   case 3:
    $to_orig = $e_0 + 132 | 0;
    $0 = HEAP32[$to_orig >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $e_0 = $0;
      label = 3;
      break;
    }
   case 4:
    $ignoreSwap = $info + 8 | 0;
    $1 = HEAP8[$ignoreSwap] | 0;
    $tobool3 = $1 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      $j_0 = 0;
      label = 6;
      break;
    }
   case 5:
    $swapEnds = $info | 0;
    $2 = HEAP32[$swapEnds >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$2 & 1023]($e_0) | 0;
    $conv = $call & 255;
    $j_0 = $conv;
    label = 6;
    break;
   case 6:
    _arrow_flags($e_0, $sflag, $eflag);
    $splineMerge = $info + 4 | 0;
    $3 = HEAP32[$splineMerge >> 2] | 0;
    $call4 = FUNCTION_TABLE_ii[$3 & 1023]($hn) | 0;
    $tobool5 = $call4 << 24 >> 24 == 0;
    if ($tobool5) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    HEAP32[$eflag >> 2] = 0;
    label = 8;
    break;
   case 8:
    $4 = HEAP32[$splineMerge >> 2] | 0;
    $tail = $fe + 16 | 0;
    $5 = HEAP32[$tail >> 2] | 0;
    $call9 = FUNCTION_TABLE_ii[$4 & 1023]($5) | 0;
    $tobool10 = $call9 << 24 >> 24 == 0;
    if ($tobool10) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAP32[$sflag >> 2] = 0;
    label = 10;
    break;
   case 10:
    $tobool13 = ($j_0 | 0) == 0;
    if ($tobool13) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $6 = HEAP32[$sflag >> 2] | 0;
    $7 = HEAP32[$eflag >> 2] | 0;
    HEAP32[$sflag >> 2] = $7;
    HEAP32[$eflag >> 2] = $6;
    label = 12;
    break;
   case 12:
    $isOrtho = $info + 9 | 0;
    $8 = HEAP8[$isOrtho] | 0;
    $tobool16 = $8 << 24 >> 24 == 0;
    if ($tobool16) {
      label = 16;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $9 = HEAP32[$eflag >> 2] | 0;
    $tobool18 = ($9 | 0) == 0;
    if ($tobool18) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $10 = HEAP32[$sflag >> 2] | 0;
    $tobool19 = ($10 | 0) == 0;
    if ($tobool19) {
      label = 20;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $11 = HEAP32[$startp >> 2] | 0;
    $12 = HEAP32[$endp >> 2] | 0;
    $13 = HEAP32[$sflag >> 2] | 0;
    $14 = HEAP32[$eflag >> 2] | 0;
    _arrowOrthoClip($e_0, $ps, $11, $12, $spl, $13, $14);
    label = 20;
    break;
   case 16:
    $15 = HEAP32[$sflag >> 2] | 0;
    $tobool23 = ($15 | 0) == 0;
    if ($tobool23) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $16 = HEAP32[$startp >> 2] | 0;
    $17 = HEAP32[$endp >> 2] | 0;
    $call25 = _arrowStartClip($e_0, $ps, $16, $17, $spl, $15) | 0;
    HEAP32[$startp >> 2] = $call25;
    label = 18;
    break;
   case 18:
    $18 = HEAP32[$eflag >> 2] | 0;
    $tobool27 = ($18 | 0) == 0;
    if ($tobool27) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $19 = HEAP32[$startp >> 2] | 0;
    $20 = HEAP32[$endp >> 2] | 0;
    $call29 = _arrowEndClip($e_0, $ps, $19, $20, $spl, $18) | 0;
    HEAP32[$endp >> 2] = $call29;
    label = 20;
    break;
   case 20:
    STACKTOP = __stackBase__;
    return;
  }
}
function _add_box($P, $b) {
  $P = $P | 0;
  $b = $b | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $y = 0, $2 = 0.0, $y4 = 0, $3 = 0.0, $cmp5 = 0, $nbox = 0, $4 = 0, $inc = 0, $boxes = 0, $5 = 0, $arrayidx = 0, $6 = 0, $7 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $b | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $b + 16 | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 < $1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $y = $b + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y4 = $b + 24 | 0;
    $3 = +HEAPF64[$y4 >> 3];
    $cmp5 = $2 < $3;
    if ($cmp5) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $nbox = $P + 80 | 0;
    $4 = HEAP32[$nbox >> 2] | 0;
    $inc = $4 + 1 | 0;
    HEAP32[$nbox >> 2] = $inc;
    $boxes = $P + 84 | 0;
    $5 = HEAP32[$boxes >> 2] | 0;
    $arrayidx = $5 + ($4 << 5) | 0;
    $6 = $arrayidx;
    $7 = $b;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    HEAP32[$6 + 16 >> 2] = HEAP32[$7 + 16 >> 2] | 0;
    HEAP32[$6 + 20 >> 2] = HEAP32[$7 + 20 >> 2] | 0;
    HEAP32[$6 + 24 >> 2] = HEAP32[$7 + 24 >> 2] | 0;
    HEAP32[$6 + 28 >> 2] = HEAP32[$7 + 28 >> 2] | 0;
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _add_pointf804($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $add4 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $add4 = +HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p >> 3] + +HEAPF64[$q >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $add4;
  STACKTOP = __stackBase__;
  return;
}
function _conc_slope($n) {
  $n = $n | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool22 = 0, $2 = 0, $phitmp = 0.0, $s_in_0_lcssa = 0.0, $cnt_in_0_lcssa = 0.0, $list4 = 0, $3 = 0, $4 = 0, $tobool617 = 0, $5 = 0, $6 = 0, $s_in_024 = 0.0, $cnt_in_023 = 0, $tail = 0, $7 = 0, $x = 0, $8 = 0.0, $add = 0.0, $inc = 0, $arrayidx = 0, $9 = 0, $tobool = 0, $10 = 0, $s_out_019 = 0.0, $cnt_out_018 = 0, $head = 0, $11 = 0, $x10 = 0, $12 = 0.0, $add11 = 0.0, $inc13 = 0, $arrayidx5 = 0, $13 = 0, $tobool6 = 0, $phitmp28 = 0.0, $_lcssa = 0, $s_out_0_lcssa = 0.0, $cnt_out_0_lcssa = 0.0, $x17 = 0, $14 = 0.0, $div = 0.0, $sub = 0.0, $y = 0, $15 = 0.0, $16 = 0, $17 = 0, $tail25 = 0, $18 = 0, $y28 = 0, $19 = 0.0, $sub29 = 0.0, $call = 0.0, $div34 = 0.0, $sub38 = 0.0, $20 = 0, $head44 = 0, $21 = 0, $y47 = 0, $22 = 0.0, $sub51 = 0.0, $call55 = 0.0, $add56 = 0.0, $div57 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $n + 176 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool22 = ($1 | 0) == 0;
    if ($tobool22) {
      $cnt_in_0_lcssa = 0.0;
      $s_in_0_lcssa = 0.0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$list >> 2] | 0;
    $cnt_in_023 = 0;
    $s_in_024 = 0.0;
    $6 = $1;
    label = 7;
    break;
   case 4:
    $phitmp = +($inc | 0);
    $cnt_in_0_lcssa = $phitmp;
    $s_in_0_lcssa = $add;
    label = 5;
    break;
   case 5:
    $list4 = $n + 184 | 0;
    $3 = HEAP32[$list4 >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool617 = ($4 | 0) == 0;
    if ($tobool617) {
      $cnt_out_0_lcssa = 0.0;
      $s_out_0_lcssa = 0.0;
      $_lcssa = $3;
      label = 10;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $5 = HEAP32[$list4 >> 2] | 0;
    $cnt_out_018 = 0;
    $s_out_019 = 0.0;
    $10 = $4;
    label = 8;
    break;
   case 7:
    $tail = $6 + 16 | 0;
    $7 = HEAP32[$tail >> 2] | 0;
    $x = $7 + 32 | 0;
    $8 = +HEAPF64[$x >> 3];
    $add = $s_in_024 + $8;
    $inc = $cnt_in_023 + 1 | 0;
    $arrayidx = $2 + ($inc << 2) | 0;
    $9 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $cnt_in_023 = $inc;
      $s_in_024 = $add;
      $6 = $9;
      label = 7;
      break;
    }
   case 8:
    $head = $10 + 12 | 0;
    $11 = HEAP32[$head >> 2] | 0;
    $x10 = $11 + 32 | 0;
    $12 = +HEAPF64[$x10 >> 3];
    $add11 = $s_out_019 + $12;
    $inc13 = $cnt_out_018 + 1 | 0;
    $arrayidx5 = $5 + ($inc13 << 2) | 0;
    $13 = HEAP32[$arrayidx5 >> 2] | 0;
    $tobool6 = ($13 | 0) == 0;
    if ($tobool6) {
      label = 9;
      break;
    } else {
      $cnt_out_018 = $inc13;
      $s_out_019 = $add11;
      $10 = $13;
      label = 8;
      break;
    }
   case 9:
    $phitmp28 = +($inc13 | 0);
    $cnt_out_0_lcssa = $phitmp28;
    $s_out_0_lcssa = $add11;
    $_lcssa = $5;
    label = 10;
    break;
   case 10:
    $x17 = $n + 32 | 0;
    $14 = +HEAPF64[$x17 >> 3];
    $div = $s_in_0_lcssa / $cnt_in_0_lcssa;
    $sub = $14 - $div;
    $y = $n + 40 | 0;
    $15 = +HEAPF64[$y >> 3];
    $16 = HEAP32[$list >> 2] | 0;
    $17 = HEAP32[$16 >> 2] | 0;
    $tail25 = $17 + 16 | 0;
    $18 = HEAP32[$tail25 >> 2] | 0;
    $y28 = $18 + 40 | 0;
    $19 = +HEAPF64[$y28 >> 3];
    $sub29 = $15 - $19;
    $call = +Math_atan2(+$sub29, +$sub);
    $div34 = $s_out_0_lcssa / $cnt_out_0_lcssa;
    $sub38 = $div34 - $14;
    $20 = HEAP32[$_lcssa >> 2] | 0;
    $head44 = $20 + 12 | 0;
    $21 = HEAP32[$head44 >> 2] | 0;
    $y47 = $21 + 40 | 0;
    $22 = +HEAPF64[$y47 >> 3];
    $sub51 = $22 - $15;
    $call55 = +Math_atan2(+$sub51, +$sub38);
    $add56 = $call + $call55;
    $div57 = $add56 * .5;
    return +$div57;
  }
  return 0.0;
}
function _beginpath($P, $e, $et, $endp, $merge) {
  $P = $P | 0;
  $e = $e | 0;
  $et = $et | 0;
  $endp = $endp | 0;
  $merge = $merge | 0;
  var $tmp = 0, $tmp17 = 0, $tail = 0, $0 = 0, $tail_port = 0, $dyna = 0, $1 = 0, $tobool = 0, $head = 0, $2 = 0, $3 = 0, $4 = 0, $shape = 0, $5 = 0, $tobool7 = 0, $fns = 0, $6 = 0, $pboxfn11 = 0, $7 = 0, $pboxfn_0 = 0, $coord = 0, $p16 = 0, $8 = 0, $9 = 0, $tobool18 = 0, $10 = 0, $call = 0.0, $theta = 0, $constrained = 0, $constrained26 = 0, $11 = 0, $tobool27 = 0, $theta31 = 0, $12 = 0.0, $theta33 = 0, $constrained35 = 0, $constrained38 = 0, $nbox = 0, $13 = 0, $data = 0, $np = 0, $14 = 0, $cmp = 0, $node_type = 0, $15 = 0, $cmp44 = 0, $side49 = 0, $16 = 0, $conv50 = 0, $tobool51 = 0, $b_sroa_0_0__idx62 = 0, $b_sroa_0_0_copyload63 = 0.0, $b_sroa_1_8__idx74 = 0, $b_sroa_1_8_copyload75 = 0.0, $b_sroa_2_16__idx85 = 0, $b_sroa_2_16_copyload86 = 0.0, $b_sroa_3_24__idx98 = 0, $b_sroa_3_24_copyload99 = 0.0, $and = 0, $tobool56 = 0, $sidemask = 0, $x = 0, $17 = 0.0, $x62 = 0, $18 = 0.0, $cmp63 = 0, $sub = 0.0, $y = 0, $19 = 0.0, $y78 = 0, $20 = 0.0, $ht = 0, $21 = 0.0, $cmp80 = 0, $add = 0.0, $sub87 = 0.0, $add_sink = 0.0, $conv84 = 0, $add89 = 0, $div = 0, $conv90 = 0.0, $add91 = 0.0, $graph = 0, $22 = 0, $ranksep = 0, $23 = 0, $div93 = 0, $conv94 = 0.0, $add95 = 0.0, $24 = 0.0, $lw = 0, $25 = 0.0, $sub102 = 0.0, $26 = 0.0, $27 = 0.0, $cmp115 = 0, $add120 = 0.0, $sub125 = 0.0, $add120_sink = 0.0, $conv121 = 0, $add129 = 0, $div130 = 0, $conv131 = 0.0, $sub132 = 0.0, $b0_sroa_0_0__idx101 = 0, $b0_sroa_1_8__idx104 = 0, $b0_sroa_2_16__idx108 = 0, $b0_sroa_3_24__idx111 = 0, $b_sroa_0_0__idx60 = 0, $b_sroa_1_8__idx72 = 0, $b_sroa_2_16__idx83 = 0, $b_sroa_3_24__idx96 = 0, $y147 = 0, $28 = 0.0, $add152 = 0.0, $y157 = 0, $29 = 0.0, $ht159 = 0, $30 = 0.0, $cmp160 = 0, $add165 = 0.0, $sub170 = 0.0, $add165_sink = 0.0, $conv166 = 0, $add174 = 0, $div175 = 0, $conv176 = 0.0, $add177 = 0.0, $graph178 = 0, $31 = 0, $ranksep180 = 0, $32 = 0, $div181 = 0, $conv182 = 0.0, $add183 = 0.0, $33 = 0.0, $rw = 0, $34 = 0.0, $add190 = 0.0, $add191 = 0.0, $35 = 0.0, $36 = 0.0, $cmp203 = 0, $add208 = 0.0, $sub213 = 0.0, $add208_sink = 0.0, $conv209 = 0, $add217 = 0, $div218 = 0, $conv219 = 0.0, $sub220 = 0.0, $b0_sroa_0_0__idx = 0, $b0_sroa_1_8__idx103 = 0, $b0_sroa_2_16__idx107 = 0, $b0_sroa_3_24__idx110 = 0, $b_sroa_0_0__idx58 = 0, $b_sroa_1_8__idx70 = 0, $b_sroa_2_16__idx81 = 0, $b_sroa_3_24__idx94 = 0, $y233 = 0, $37 = 0.0, $add234 = 0.0, $boxn = 0, $and236 = 0, $tobool237 = 0, $sidemask239 = 0, $y244 = 0, $38 = 0.0, $cmp245 = 0, $b_sroa_3_24_copyload99_ = 0.0, $b_sroa_0_0__idx56 = 0, $b_sroa_1_8__idx68 = 0, $b_sroa_2_16__idx79 = 0, $b_sroa_3_24__idx92 = 0, $boxn260 = 0, $39 = 0.0, $sub264 = 0.0, $and266 = 0, $tobool267 = 0, $sidemask269 = 0, $x272 = 0, $40 = 0.0, $y277 = 0, $41 = 0.0, $ht279 = 0, $42 = 0.0, $cmp280 = 0, $add285 = 0.0, $sub290 = 0.0, $add285_sink = 0.0, $conv286 = 0, $add294 = 0, $div295 = 0, $conv296 = 0.0, $sub297 = 0.0, $y302 = 0, $43 = 0.0, $b_sroa_0_0__idx54 = 0, $b_sroa_1_8__idx66 = 0, $b_sroa_2_16__idx77 = 0, $b_sroa_3_24__idx90 = 0, $boxn307 = 0, $44 = 0.0, $sub311 = 0.0, $x316 = 0, $45 = 0.0, $y321 = 0, $46 = 0.0, $ht323 = 0, $47 = 0.0, $cmp324 = 0, $add329 = 0.0, $sub334 = 0.0, $add329_sink = 0.0, $conv330 = 0, $add338 = 0, $div339 = 0, $conv340 = 0.0, $sub341 = 0.0, $y346 = 0, $48 = 0.0, $b_sroa_0_0__idx = 0, $b_sroa_1_8__idx65 = 0, $b_sroa_2_16__idx76 = 0, $b_sroa_3_24__idx89 = 0, $boxn351 = 0, $49 = 0.0, $add355 = 0.0, $edge_type267 = 0, $50 = 0, $cmp361268 = 0, $orig_0269 = 0, $to_orig = 0, $51 = 0, $edge_type = 0, $52 = 0, $cmp361 = 0, $orig_0_lcssa = 0, $tail364 = 0, $53 = 0, $cmp365 = 0, $clip = 0, $clip372 = 0, $cmp375 = 0, $side380 = 0, $54 = 0, $conv381 = 0, $tobool382 = 0, $b387_sroa_0_0__idx12 = 0, $b387_sroa_0_0_copyload13 = 0.0, $b387_sroa_1_8__idx23 = 0, $b387_sroa_1_8_copyload24 = 0.0, $b387_sroa_2_16__idx35 = 0, $b387_sroa_2_16_copyload36 = 0.0, $b387_sroa_3_24__idx47 = 0, $b387_sroa_3_24_copyload48 = 0.0, $and391 = 0, $tobool392 = 0, $y398 = 0, $55 = 0.0, $cmp399 = 0, $b387_sroa_1_8_copyload24_ = 0.0, $b387_sroa_0_0__idx10 = 0, $b387_sroa_1_8__idx21 = 0, $b387_sroa_2_16__idx33 = 0, $b387_sroa_3_24__idx45 = 0, $boxn414 = 0, $and416 = 0, $tobool417 = 0, $sidemask419 = 0, $56 = 0, $cmp420 = 0, $y425 = 0, $57 = 0.0, $ht427 = 0, $58 = 0.0, $cmp428 = 0, $add433 = 0.0, $sub438 = 0.0, $add433_sink = 0.0, $conv434 = 0, $add442 = 0, $div443 = 0, $conv444 = 0.0, $sub445 = 0.0, $add450 = 0.0, $x455 = 0, $59 = 0.0, $graph460 = 0, $60 = 0, $ranksep462 = 0, $61 = 0, $div463 = 0, $conv464 = 0.0, $sub465 = 0.0, $x470 = 0, $62 = 0.0, $rw472 = 0, $63 = 0.0, $add473 = 0.0, $add474 = 0.0, $64 = 0.0, $65 = 0.0, $cmp486 = 0, $add491 = 0.0, $sub496 = 0.0, $add491_sink = 0.0, $conv492 = 0, $add500 = 0, $div501 = 0, $conv502 = 0.0, $add503 = 0.0, $b0385_sroa_0_0__idx = 0, $b0385_sroa_1_8__idx50 = 0, $b0385_sroa_2_16__idx51 = 0, $b0385_sroa_3_24__idx52 = 0, $b387_sroa_0_0__idx8 = 0, $b387_sroa_1_8__idx19 = 0, $b387_sroa_2_16__idx31 = 0, $b387_sroa_3_24__idx43 = 0, $boxn513 = 0, $y519 = 0, $66 = 0.0, $cmp520 = 0, $b387_sroa_3_24_copyload48_ = 0.0, $b387_sroa_0_0__idx6 = 0, $b387_sroa_1_8__idx17 = 0, $b387_sroa_2_16__idx29 = 0, $b387_sroa_3_24__idx41 = 0, $boxn535 = 0, $and538 = 0, $tobool539 = 0, $x543 = 0, $67 = 0.0, $add544 = 0.0, $sidemask547 = 0, $68 = 0, $cmp548 = 0, $y553 = 0, $69 = 0.0, $ht555 = 0, $70 = 0.0, $cmp556 = 0, $add561 = 0.0, $sub566 = 0.0, $add561_sink = 0.0, $conv562 = 0, $add570 = 0, $div571 = 0, $conv572 = 0.0, $add573 = 0.0, $y578 = 0, $71 = 0.0, $sub579 = 0.0, $add593 = 0.0, $sub598 = 0.0, $add593_sink = 0.0, $conv594 = 0, $add602 = 0, $div603 = 0, $conv604 = 0.0, $sub605 = 0.0, $y610 = 0, $72 = 0.0, $add611 = 0.0, $b387_sroa_3_0 = 0.0, $b387_sroa_1_0 = 0.0, $b387_sroa_0_0__idx4 = 0, $b387_sroa_1_8__idx15 = 0, $b387_sroa_2_16__idx27 = 0, $b387_sroa_3_24__idx39 = 0, $boxn617 = 0, $sidemask624 = 0, $73 = 0, $cmp625 = 0, $y630 = 0, $74 = 0.0, $ht632 = 0, $75 = 0.0, $cmp633 = 0, $add638 = 0.0, $sub643 = 0.0, $add638_sink = 0.0, $conv639 = 0, $add647 = 0, $div648 = 0, $conv649 = 0.0, $add650 = 0.0, $y655 = 0, $76 = 0.0, $add669 = 0.0, $sub674 = 0.0, $add669_sink = 0.0, $conv670 = 0, $add678 = 0, $div679 = 0, $conv680 = 0.0, $sub681 = 0.0, $y686 = 0, $77 = 0.0, $add687 = 0.0, $b387_sroa_3_1 = 0.0, $b387_sroa_1_1 = 0.0, $b387_sroa_0_0__idx = 0, $b387_sroa_1_8__idx14 = 0, $b387_sroa_2_16__idx26 = 0, $b387_sroa_3_24__idx38 = 0, $boxn693 = 0, $edge_type699264 = 0, $78 = 0, $cmp701265 = 0, $orig390_0266 = 0, $to_orig706 = 0, $79 = 0, $edge_type699 = 0, $80 = 0, $cmp701 = 0, $orig390_0_lcssa = 0, $tail708 = 0, $81 = 0, $cmp709 = 0, $clip714 = 0, $clip718 = 0, $sidemask720 = 0, $sidemask726 = 0, $82 = 0, $side_0 = 0, $tobool728 = 0, $arrayidx733 = 0, $boxn734 = 0, $call735 = 0, $tobool736 = 0, $sidemask738 = 0, $arrayidx741 = 0, $83 = 0, $84 = 0, $boxn743 = 0, $sidemask745 = 0, $85 = 0, $cmp746 = 0, $y751 = 0, $86 = 0.0, $y755 = 0, $y763 = 0, $y768 = 0, $87 = 0.0, $y772 = 0, $sidemask773 = 0, $88 = 0.0, $sub777 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 56 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp17 = __stackBase__ + 40 | 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $tail_port = $e + 32 | 0;
    $dyna = $e + 63 | 0;
    $1 = HEAP8[$dyna] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $e + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    _resolvePort($tmp, $0, $2, $tail_port);
    $3 = $tail_port;
    $4 = $tmp;
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    HEAP32[$3 + 16 >> 2] = HEAP32[$4 + 16 >> 2] | 0;
    HEAP32[$3 + 20 >> 2] = HEAP32[$4 + 20 >> 2] | 0;
    HEAP32[$3 + 24 >> 2] = HEAP32[$4 + 24 >> 2] | 0;
    HEAP32[$3 + 28 >> 2] = HEAP32[$4 + 28 >> 2] | 0;
    HEAP32[$3 + 32 >> 2] = HEAP32[$4 + 32 >> 2] | 0;
    HEAP32[$3 + 36 >> 2] = HEAP32[$4 + 36 >> 2] | 0;
    label = 4;
    break;
   case 4:
    $shape = $0 + 24 | 0;
    $5 = HEAP32[$shape >> 2] | 0;
    $tobool7 = ($5 | 0) == 0;
    if ($tobool7) {
      $pboxfn_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $fns = $5 + 4 | 0;
    $6 = HEAP32[$fns >> 2] | 0;
    $pboxfn11 = $6 + 16 | 0;
    $7 = HEAP32[$pboxfn11 >> 2] | 0;
    $pboxfn_0 = $7;
    label = 6;
    break;
   case 6:
    $coord = $0 + 32 | 0;
    $p16 = $tail_port | 0;
    _add_pointf804($tmp17, $coord, $p16);
    $8 = $P;
    $9 = $tmp17;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $tobool18 = $merge << 24 >> 24 == 0;
    if ($tobool18) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $10 = HEAP32[$tail >> 2] | 0;
    $call = +_conc_slope($10);
    $theta = $P + 16 | 0;
    HEAPF64[$theta >> 3] = $call;
    $constrained = $P + 29 | 0;
    HEAP8[$constrained] = 1;
    label = 11;
    break;
   case 8:
    $constrained26 = $e + 61 | 0;
    $11 = HEAP8[$constrained26] | 0;
    $tobool27 = $11 << 24 >> 24 == 0;
    if ($tobool27) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $theta31 = $e + 48 | 0;
    $12 = +HEAPF64[$theta31 >> 3];
    $theta33 = $P + 16 | 0;
    HEAPF64[$theta33 >> 3] = $12;
    $constrained35 = $P + 29 | 0;
    HEAP8[$constrained35] = 1;
    label = 11;
    break;
   case 10:
    $constrained38 = $P + 29 | 0;
    HEAP8[$constrained38] = 0;
    label = 11;
    break;
   case 11:
    $nbox = $P + 80 | 0;
    HEAP32[$nbox >> 2] = 0;
    $13 = $e | 0;
    $data = $P + 88 | 0;
    HEAP32[$data >> 2] = $13;
    $np = $endp + 32 | 0;
    $14 = $np;
    HEAP32[$14 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $cmp = ($et | 0) == 1;
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 47;
      break;
    }
   case 12:
    $node_type = $0 + 162 | 0;
    $15 = HEAP8[$node_type] | 0;
    $cmp44 = $15 << 24 >> 24 == 0;
    if ($cmp44) {
      label = 13;
      break;
    } else {
      $side_0 = 1;
      label = 90;
      break;
    }
   case 13:
    $side49 = $e + 65 | 0;
    $16 = HEAP8[$side49] | 0;
    $conv50 = $16 & 255;
    $tobool51 = $16 << 24 >> 24 == 0;
    if ($tobool51) {
      label = 47;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $b_sroa_0_0__idx62 = $endp | 0;
    $b_sroa_0_0_copyload63 = +HEAPF64[$b_sroa_0_0__idx62 >> 3];
    $b_sroa_1_8__idx74 = $endp + 8 | 0;
    $b_sroa_1_8_copyload75 = +HEAPF64[$b_sroa_1_8__idx74 >> 3];
    $b_sroa_2_16__idx85 = $endp + 16 | 0;
    $b_sroa_2_16_copyload86 = +HEAPF64[$b_sroa_2_16__idx85 >> 3];
    $b_sroa_3_24__idx98 = $endp + 24 | 0;
    $b_sroa_3_24_copyload99 = +HEAPF64[$b_sroa_3_24__idx98 >> 3];
    $and = $conv50 & 4;
    $tobool56 = ($and | 0) == 0;
    if ($tobool56) {
      label = 31;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $sidemask = $endp + 48 | 0;
    HEAP32[$sidemask >> 2] = 4;
    $x = $P | 0;
    $17 = +HEAPF64[$x >> 3];
    $x62 = $coord | 0;
    $18 = +HEAPF64[$x62 >> 3];
    $cmp63 = $17 < $18;
    if ($cmp63) {
      label = 16;
      break;
    } else {
      label = 23;
      break;
    }
   case 16:
    $sub = $b_sroa_0_0_copyload63 + -1.0;
    $y = $P + 8 | 0;
    $19 = +HEAPF64[$y >> 3];
    $y78 = $0 + 40 | 0;
    $20 = +HEAPF64[$y78 >> 3];
    $ht = $0 + 96 | 0;
    $21 = +HEAPF64[$ht >> 3];
    $cmp80 = $21 < 0.0;
    if ($cmp80) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $add = $21 + .5;
    $add_sink = $add;
    label = 19;
    break;
   case 18:
    $sub87 = $21 + -.5;
    $add_sink = $sub87;
    label = 19;
    break;
   case 19:
    $conv84 = ~~$add_sink;
    $add89 = $conv84 + 1 | 0;
    $div = ($add89 | 0) / 2 & -1;
    $conv90 = +($div | 0);
    $add91 = $20 + $conv90;
    $graph = $0 + 20 | 0;
    $22 = HEAP32[$graph >> 2] | 0;
    $ranksep = $22 + 264 | 0;
    $23 = HEAP32[$ranksep >> 2] | 0;
    $div93 = ($23 | 0) / 2 & -1;
    $conv94 = +($div93 | 0);
    $add95 = $add91 + $conv94;
    $24 = +HEAPF64[$x62 >> 3];
    $lw = $0 + 104 | 0;
    $25 = +HEAPF64[$lw >> 3];
    $sub102 = $24 - $25;
    $26 = +HEAPF64[$y78 >> 3];
    $27 = +HEAPF64[$ht >> 3];
    $cmp115 = $27 < 0.0;
    if ($cmp115) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $add120 = $27 + .5;
    $add120_sink = $add120;
    label = 22;
    break;
   case 21:
    $sub125 = $27 + -.5;
    $add120_sink = $sub125;
    label = 22;
    break;
   case 22:
    $conv121 = ~~$add120_sink;
    $add129 = $conv121 + 1 | 0;
    $div130 = ($add129 | 0) / 2 & -1;
    $conv131 = +($div130 | 0);
    $sub132 = $26 - $conv131;
    $b0_sroa_0_0__idx101 = $endp + 56 | 0;
    HEAPF64[$b0_sroa_0_0__idx101 >> 3] = $sub;
    $b0_sroa_1_8__idx104 = $endp + 64 | 0;
    HEAPF64[$b0_sroa_1_8__idx104 >> 3] = $19;
    $b0_sroa_2_16__idx108 = $endp + 72 | 0;
    HEAPF64[$b0_sroa_2_16__idx108 >> 3] = $b_sroa_2_16_copyload86;
    $b0_sroa_3_24__idx111 = $endp + 80 | 0;
    HEAPF64[$b0_sroa_3_24__idx111 >> 3] = $add95;
    $b_sroa_0_0__idx60 = $endp + 88 | 0;
    HEAPF64[$b_sroa_0_0__idx60 >> 3] = $sub;
    $b_sroa_1_8__idx72 = $endp + 96 | 0;
    HEAPF64[$b_sroa_1_8__idx72 >> 3] = $sub132;
    $b_sroa_2_16__idx83 = $endp + 104 | 0;
    HEAPF64[$b_sroa_2_16__idx83 >> 3] = $sub102;
    $b_sroa_3_24__idx96 = $endp + 112 | 0;
    HEAPF64[$b_sroa_3_24__idx96 >> 3] = $19;
    label = 30;
    break;
   case 23:
    $y147 = $P + 8 | 0;
    $28 = +HEAPF64[$y147 >> 3];
    $add152 = $b_sroa_2_16_copyload86 + 1.0;
    $y157 = $0 + 40 | 0;
    $29 = +HEAPF64[$y157 >> 3];
    $ht159 = $0 + 96 | 0;
    $30 = +HEAPF64[$ht159 >> 3];
    $cmp160 = $30 < 0.0;
    if ($cmp160) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $add165 = $30 + .5;
    $add165_sink = $add165;
    label = 26;
    break;
   case 25:
    $sub170 = $30 + -.5;
    $add165_sink = $sub170;
    label = 26;
    break;
   case 26:
    $conv166 = ~~$add165_sink;
    $add174 = $conv166 + 1 | 0;
    $div175 = ($add174 | 0) / 2 & -1;
    $conv176 = +($div175 | 0);
    $add177 = $29 + $conv176;
    $graph178 = $0 + 20 | 0;
    $31 = HEAP32[$graph178 >> 2] | 0;
    $ranksep180 = $31 + 264 | 0;
    $32 = HEAP32[$ranksep180 >> 2] | 0;
    $div181 = ($32 | 0) / 2 & -1;
    $conv182 = +($div181 | 0);
    $add183 = $add177 + $conv182;
    $33 = +HEAPF64[$x62 >> 3];
    $rw = $0 + 112 | 0;
    $34 = +HEAPF64[$rw >> 3];
    $add190 = $33 + $34;
    $add191 = $add190 + 0.0;
    $35 = +HEAPF64[$y157 >> 3];
    $36 = +HEAPF64[$ht159 >> 3];
    $cmp203 = $36 < 0.0;
    if ($cmp203) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $add208 = $36 + .5;
    $add208_sink = $add208;
    label = 29;
    break;
   case 28:
    $sub213 = $36 + -.5;
    $add208_sink = $sub213;
    label = 29;
    break;
   case 29:
    $conv209 = ~~$add208_sink;
    $add217 = $conv209 + 1 | 0;
    $div218 = ($add217 | 0) / 2 & -1;
    $conv219 = +($div218 | 0);
    $sub220 = $35 - $conv219;
    $b0_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b0_sroa_0_0__idx >> 3] = $b_sroa_0_0_copyload63;
    $b0_sroa_1_8__idx103 = $endp + 64 | 0;
    HEAPF64[$b0_sroa_1_8__idx103 >> 3] = $28;
    $b0_sroa_2_16__idx107 = $endp + 72 | 0;
    HEAPF64[$b0_sroa_2_16__idx107 >> 3] = $add152;
    $b0_sroa_3_24__idx110 = $endp + 80 | 0;
    HEAPF64[$b0_sroa_3_24__idx110 >> 3] = $add183;
    $b_sroa_0_0__idx58 = $endp + 88 | 0;
    HEAPF64[$b_sroa_0_0__idx58 >> 3] = $add191;
    $b_sroa_1_8__idx70 = $endp + 96 | 0;
    HEAPF64[$b_sroa_1_8__idx70 >> 3] = $sub220;
    $b_sroa_2_16__idx81 = $endp + 104 | 0;
    HEAPF64[$b_sroa_2_16__idx81 >> 3] = $add152;
    $b_sroa_3_24__idx94 = $endp + 112 | 0;
    HEAPF64[$b_sroa_3_24__idx94 >> 3] = $28;
    label = 30;
    break;
   case 30:
    $y233 = $P + 8 | 0;
    $37 = +HEAPF64[$y233 >> 3];
    $add234 = $37 + 1.0;
    HEAPF64[$y233 >> 3] = $add234;
    $boxn = $endp + 52 | 0;
    HEAP32[$boxn >> 2] = 2;
    label = 42;
    break;
   case 31:
    $and236 = $conv50 & 1;
    $tobool237 = ($and236 | 0) == 0;
    if ($tobool237) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $sidemask239 = $endp + 48 | 0;
    HEAP32[$sidemask239 >> 2] = 1;
    $y244 = $P + 8 | 0;
    $38 = +HEAPF64[$y244 >> 3];
    $cmp245 = $b_sroa_3_24_copyload99 > $38;
    $b_sroa_3_24_copyload99_ = $cmp245 ? $b_sroa_3_24_copyload99 : $38;
    $b_sroa_0_0__idx56 = $endp + 56 | 0;
    HEAPF64[$b_sroa_0_0__idx56 >> 3] = $b_sroa_0_0_copyload63;
    $b_sroa_1_8__idx68 = $endp + 64 | 0;
    HEAPF64[$b_sroa_1_8__idx68 >> 3] = $b_sroa_1_8_copyload75;
    $b_sroa_2_16__idx79 = $endp + 72 | 0;
    HEAPF64[$b_sroa_2_16__idx79 >> 3] = $b_sroa_2_16_copyload86;
    $b_sroa_3_24__idx92 = $endp + 80 | 0;
    HEAPF64[$b_sroa_3_24__idx92 >> 3] = $b_sroa_3_24_copyload99_;
    $boxn260 = $endp + 52 | 0;
    HEAP32[$boxn260 >> 2] = 1;
    $39 = +HEAPF64[$y244 >> 3];
    $sub264 = $39 + -1.0;
    HEAPF64[$y244 >> 3] = $sub264;
    label = 42;
    break;
   case 33:
    $and266 = $conv50 & 8;
    $tobool267 = ($and266 | 0) == 0;
    $sidemask269 = $endp + 48 | 0;
    if ($tobool267) {
      label = 38;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    HEAP32[$sidemask269 >> 2] = 8;
    $x272 = $P | 0;
    $40 = +HEAPF64[$x272 >> 3];
    $y277 = $0 + 40 | 0;
    $41 = +HEAPF64[$y277 >> 3];
    $ht279 = $0 + 96 | 0;
    $42 = +HEAPF64[$ht279 >> 3];
    $cmp280 = $42 < 0.0;
    if ($cmp280) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $add285 = $42 + .5;
    $add285_sink = $add285;
    label = 37;
    break;
   case 36:
    $sub290 = $42 + -.5;
    $add285_sink = $sub290;
    label = 37;
    break;
   case 37:
    $conv286 = ~~$add285_sink;
    $add294 = $conv286 + 1 | 0;
    $div295 = ($add294 | 0) / 2 & -1;
    $conv296 = +($div295 | 0);
    $sub297 = $41 - $conv296;
    $y302 = $P + 8 | 0;
    $43 = +HEAPF64[$y302 >> 3];
    $b_sroa_0_0__idx54 = $endp + 56 | 0;
    HEAPF64[$b_sroa_0_0__idx54 >> 3] = $b_sroa_0_0_copyload63;
    $b_sroa_1_8__idx66 = $endp + 64 | 0;
    HEAPF64[$b_sroa_1_8__idx66 >> 3] = $sub297;
    $b_sroa_2_16__idx77 = $endp + 72 | 0;
    HEAPF64[$b_sroa_2_16__idx77 >> 3] = $40;
    $b_sroa_3_24__idx90 = $endp + 80 | 0;
    HEAPF64[$b_sroa_3_24__idx90 >> 3] = $43;
    $boxn307 = $endp + 52 | 0;
    HEAP32[$boxn307 >> 2] = 1;
    $44 = +HEAPF64[$x272 >> 3];
    $sub311 = $44 + -1.0;
    HEAPF64[$x272 >> 3] = $sub311;
    label = 42;
    break;
   case 38:
    HEAP32[$sidemask269 >> 2] = 2;
    $x316 = $P | 0;
    $45 = +HEAPF64[$x316 >> 3];
    $y321 = $0 + 40 | 0;
    $46 = +HEAPF64[$y321 >> 3];
    $ht323 = $0 + 96 | 0;
    $47 = +HEAPF64[$ht323 >> 3];
    $cmp324 = $47 < 0.0;
    if ($cmp324) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $add329 = $47 + .5;
    $add329_sink = $add329;
    label = 41;
    break;
   case 40:
    $sub334 = $47 + -.5;
    $add329_sink = $sub334;
    label = 41;
    break;
   case 41:
    $conv330 = ~~$add329_sink;
    $add338 = $conv330 + 1 | 0;
    $div339 = ($add338 | 0) / 2 & -1;
    $conv340 = +($div339 | 0);
    $sub341 = $46 - $conv340;
    $y346 = $P + 8 | 0;
    $48 = +HEAPF64[$y346 >> 3];
    $b_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b_sroa_0_0__idx >> 3] = $45;
    $b_sroa_1_8__idx65 = $endp + 64 | 0;
    HEAPF64[$b_sroa_1_8__idx65 >> 3] = $sub341;
    $b_sroa_2_16__idx76 = $endp + 72 | 0;
    HEAPF64[$b_sroa_2_16__idx76 >> 3] = $b_sroa_2_16_copyload86;
    $b_sroa_3_24__idx89 = $endp + 80 | 0;
    HEAPF64[$b_sroa_3_24__idx89 >> 3] = $48;
    $boxn351 = $endp + 52 | 0;
    HEAP32[$boxn351 >> 2] = 1;
    $49 = +HEAPF64[$x316 >> 3];
    $add355 = $49 + 1.0;
    HEAPF64[$x316 >> 3] = $add355;
    label = 42;
    break;
   case 42:
    $edge_type267 = $e + 128 | 0;
    $50 = HEAP8[$edge_type267] | 0;
    $cmp361268 = $50 << 24 >> 24 == 0;
    if ($cmp361268) {
      $orig_0_lcssa = $e;
      label = 44;
      break;
    } else {
      $orig_0269 = $e;
      label = 43;
      break;
    }
   case 43:
    $to_orig = $orig_0269 + 132 | 0;
    $51 = HEAP32[$to_orig >> 2] | 0;
    $edge_type = $51 + 128 | 0;
    $52 = HEAP8[$edge_type] | 0;
    $cmp361 = $52 << 24 >> 24 == 0;
    if ($cmp361) {
      $orig_0_lcssa = $51;
      label = 44;
      break;
    } else {
      $orig_0269 = $51;
      label = 43;
      break;
    }
   case 44:
    $tail364 = $orig_0_lcssa + 16 | 0;
    $53 = HEAP32[$tail364 >> 2] | 0;
    $cmp365 = ($0 | 0) == ($53 | 0);
    if ($cmp365) {
      label = 45;
      break;
    } else {
      label = 46;
      break;
    }
   case 45:
    $clip = $orig_0_lcssa + 62 | 0;
    HEAP8[$clip] = 0;
    label = 99;
    break;
   case 46:
    $clip372 = $orig_0_lcssa + 102 | 0;
    HEAP8[$clip372] = 0;
    label = 99;
    break;
   case 47:
    $cmp375 = ($et | 0) == 2;
    if ($cmp375) {
      label = 48;
      break;
    } else {
      label = 88;
      break;
    }
   case 48:
    $side380 = $e + 65 | 0;
    $54 = HEAP8[$side380] | 0;
    $conv381 = $54 & 255;
    $tobool382 = $54 << 24 >> 24 == 0;
    if ($tobool382) {
      label = 88;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $b387_sroa_0_0__idx12 = $endp | 0;
    $b387_sroa_0_0_copyload13 = +HEAPF64[$b387_sroa_0_0__idx12 >> 3];
    $b387_sroa_1_8__idx23 = $endp + 8 | 0;
    $b387_sroa_1_8_copyload24 = +HEAPF64[$b387_sroa_1_8__idx23 >> 3];
    $b387_sroa_2_16__idx35 = $endp + 16 | 0;
    $b387_sroa_2_16_copyload36 = +HEAPF64[$b387_sroa_2_16__idx35 >> 3];
    $b387_sroa_3_24__idx47 = $endp + 24 | 0;
    $b387_sroa_3_24_copyload48 = +HEAPF64[$b387_sroa_3_24__idx47 >> 3];
    $and391 = $conv381 & 4;
    $tobool392 = ($and391 | 0) == 0;
    if ($tobool392) {
      label = 51;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $y398 = $P + 8 | 0;
    $55 = +HEAPF64[$y398 >> 3];
    $cmp399 = $b387_sroa_1_8_copyload24 < $55;
    $b387_sroa_1_8_copyload24_ = $cmp399 ? $b387_sroa_1_8_copyload24 : $55;
    $b387_sroa_0_0__idx10 = $endp + 56 | 0;
    HEAPF64[$b387_sroa_0_0__idx10 >> 3] = $b387_sroa_0_0_copyload13;
    $b387_sroa_1_8__idx21 = $endp + 64 | 0;
    HEAPF64[$b387_sroa_1_8__idx21 >> 3] = $b387_sroa_1_8_copyload24_;
    $b387_sroa_2_16__idx33 = $endp + 72 | 0;
    HEAPF64[$b387_sroa_2_16__idx33 >> 3] = $b387_sroa_2_16_copyload36;
    $b387_sroa_3_24__idx45 = $endp + 80 | 0;
    HEAPF64[$b387_sroa_3_24__idx45 >> 3] = $b387_sroa_3_24_copyload48;
    $boxn414 = $endp + 52 | 0;
    HEAP32[$boxn414 >> 2] = 1;
    label = 82;
    break;
   case 51:
    $and416 = $conv381 & 1;
    $tobool417 = ($and416 | 0) == 0;
    if ($tobool417) {
      label = 61;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $sidemask419 = $endp + 48 | 0;
    $56 = HEAP32[$sidemask419 >> 2] | 0;
    $cmp420 = ($56 | 0) == 4;
    if ($cmp420) {
      label = 53;
      break;
    } else {
      label = 60;
      break;
    }
   case 53:
    $y425 = $0 + 40 | 0;
    $57 = +HEAPF64[$y425 >> 3];
    $ht427 = $0 + 96 | 0;
    $58 = +HEAPF64[$ht427 >> 3];
    $cmp428 = $58 < 0.0;
    if ($cmp428) {
      label = 55;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    $add433 = $58 + .5;
    $add433_sink = $add433;
    label = 56;
    break;
   case 55:
    $sub438 = $58 + -.5;
    $add433_sink = $sub438;
    label = 56;
    break;
   case 56:
    $conv434 = ~~$add433_sink;
    $add442 = $conv434 + 1 | 0;
    $div443 = ($add442 | 0) / 2 & -1;
    $conv444 = +($div443 | 0);
    $sub445 = $57 - $conv444;
    $add450 = $b387_sroa_2_16_copyload36 + 1.0;
    $x455 = $P | 0;
    $59 = +HEAPF64[$x455 >> 3];
    $graph460 = $0 + 20 | 0;
    $60 = HEAP32[$graph460 >> 2] | 0;
    $ranksep462 = $60 + 264 | 0;
    $61 = HEAP32[$ranksep462 >> 2] | 0;
    $div463 = ($61 | 0) / 2 & -1;
    $conv464 = +($div463 | 0);
    $sub465 = $sub445 - $conv464;
    $x470 = $coord | 0;
    $62 = +HEAPF64[$x470 >> 3];
    $rw472 = $0 + 112 | 0;
    $63 = +HEAPF64[$rw472 >> 3];
    $add473 = $62 + $63;
    $add474 = $add473 + 0.0;
    $64 = +HEAPF64[$y425 >> 3];
    $65 = +HEAPF64[$ht427 >> 3];
    $cmp486 = $65 < 0.0;
    if ($cmp486) {
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $add491 = $65 + .5;
    $add491_sink = $add491;
    label = 59;
    break;
   case 58:
    $sub496 = $65 + -.5;
    $add491_sink = $sub496;
    label = 59;
    break;
   case 59:
    $conv492 = ~~$add491_sink;
    $add500 = $conv492 + 1 | 0;
    $div501 = ($add500 | 0) / 2 & -1;
    $conv502 = +($div501 | 0);
    $add503 = $64 + $conv502;
    $b0385_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b0385_sroa_0_0__idx >> 3] = $59;
    $b0385_sroa_1_8__idx50 = $endp + 64 | 0;
    HEAPF64[$b0385_sroa_1_8__idx50 >> 3] = $sub465;
    $b0385_sroa_2_16__idx51 = $endp + 72 | 0;
    HEAPF64[$b0385_sroa_2_16__idx51 >> 3] = $add450;
    $b0385_sroa_3_24__idx52 = $endp + 80 | 0;
    HEAPF64[$b0385_sroa_3_24__idx52 >> 3] = $sub445;
    $b387_sroa_0_0__idx8 = $endp + 88 | 0;
    HEAPF64[$b387_sroa_0_0__idx8 >> 3] = $add474;
    $b387_sroa_1_8__idx19 = $endp + 96 | 0;
    HEAPF64[$b387_sroa_1_8__idx19 >> 3] = $sub445;
    $b387_sroa_2_16__idx31 = $endp + 104 | 0;
    HEAPF64[$b387_sroa_2_16__idx31 >> 3] = $add450;
    $b387_sroa_3_24__idx43 = $endp + 112 | 0;
    HEAPF64[$b387_sroa_3_24__idx43 >> 3] = $add503;
    $boxn513 = $endp + 52 | 0;
    HEAP32[$boxn513 >> 2] = 2;
    label = 82;
    break;
   case 60:
    $y519 = $P + 8 | 0;
    $66 = +HEAPF64[$y519 >> 3];
    $cmp520 = $b387_sroa_3_24_copyload48 > $66;
    $b387_sroa_3_24_copyload48_ = $cmp520 ? $b387_sroa_3_24_copyload48 : $66;
    $b387_sroa_0_0__idx6 = $endp + 56 | 0;
    HEAPF64[$b387_sroa_0_0__idx6 >> 3] = $b387_sroa_0_0_copyload13;
    $b387_sroa_1_8__idx17 = $endp + 64 | 0;
    HEAPF64[$b387_sroa_1_8__idx17 >> 3] = $b387_sroa_1_8_copyload24;
    $b387_sroa_2_16__idx29 = $endp + 72 | 0;
    HEAPF64[$b387_sroa_2_16__idx29 >> 3] = $b387_sroa_2_16_copyload36;
    $b387_sroa_3_24__idx41 = $endp + 80 | 0;
    HEAPF64[$b387_sroa_3_24__idx41 >> 3] = $b387_sroa_3_24_copyload48_;
    $boxn535 = $endp + 52 | 0;
    HEAP32[$boxn535 >> 2] = 1;
    label = 82;
    break;
   case 61:
    $and538 = $conv381 & 8;
    $tobool539 = ($and538 | 0) == 0;
    $x543 = $P | 0;
    $67 = +HEAPF64[$x543 >> 3];
    if ($tobool539) {
      label = 72;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    $add544 = $67 + 1.0;
    $sidemask547 = $endp + 48 | 0;
    $68 = HEAP32[$sidemask547 >> 2] | 0;
    $cmp548 = ($68 | 0) == 4;
    $y553 = $0 + 40 | 0;
    $69 = +HEAPF64[$y553 >> 3];
    $ht555 = $0 + 96 | 0;
    $70 = +HEAPF64[$ht555 >> 3];
    $cmp556 = $70 >= 0.0;
    if ($cmp548) {
      label = 63;
      break;
    } else {
      label = 67;
      break;
    }
   case 63:
    if ($cmp556) {
      label = 64;
      break;
    } else {
      label = 65;
      break;
    }
   case 64:
    $add561 = $70 + .5;
    $add561_sink = $add561;
    label = 66;
    break;
   case 65:
    $sub566 = $70 + -.5;
    $add561_sink = $sub566;
    label = 66;
    break;
   case 66:
    $conv562 = ~~$add561_sink;
    $add570 = $conv562 + 1 | 0;
    $div571 = ($add570 | 0) / 2 & -1;
    $conv572 = +($div571 | 0);
    $add573 = $69 + $conv572;
    $y578 = $P + 8 | 0;
    $71 = +HEAPF64[$y578 >> 3];
    $sub579 = $71 + -1.0;
    $b387_sroa_1_0 = $sub579;
    $b387_sroa_3_0 = $add573;
    label = 71;
    break;
   case 67:
    if ($cmp556) {
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 68:
    $add593 = $70 + .5;
    $add593_sink = $add593;
    label = 70;
    break;
   case 69:
    $sub598 = $70 + -.5;
    $add593_sink = $sub598;
    label = 70;
    break;
   case 70:
    $conv594 = ~~$add593_sink;
    $add602 = $conv594 + 1 | 0;
    $div603 = ($add602 | 0) / 2 & -1;
    $conv604 = +($div603 | 0);
    $sub605 = $69 - $conv604;
    $y610 = $P + 8 | 0;
    $72 = +HEAPF64[$y610 >> 3];
    $add611 = $72 + 1.0;
    $b387_sroa_1_0 = $sub605;
    $b387_sroa_3_0 = $add611;
    label = 71;
    break;
   case 71:
    $b387_sroa_0_0__idx4 = $endp + 56 | 0;
    HEAPF64[$b387_sroa_0_0__idx4 >> 3] = $b387_sroa_0_0_copyload13;
    $b387_sroa_1_8__idx15 = $endp + 64 | 0;
    HEAPF64[$b387_sroa_1_8__idx15 >> 3] = $b387_sroa_1_0;
    $b387_sroa_2_16__idx27 = $endp + 72 | 0;
    HEAPF64[$b387_sroa_2_16__idx27 >> 3] = $add544;
    $b387_sroa_3_24__idx39 = $endp + 80 | 0;
    HEAPF64[$b387_sroa_3_24__idx39 >> 3] = $b387_sroa_3_0;
    $boxn617 = $endp + 52 | 0;
    HEAP32[$boxn617 >> 2] = 1;
    label = 82;
    break;
   case 72:
    $sidemask624 = $endp + 48 | 0;
    $73 = HEAP32[$sidemask624 >> 2] | 0;
    $cmp625 = ($73 | 0) == 4;
    $y630 = $0 + 40 | 0;
    $74 = +HEAPF64[$y630 >> 3];
    $ht632 = $0 + 96 | 0;
    $75 = +HEAPF64[$ht632 >> 3];
    $cmp633 = $75 >= 0.0;
    if ($cmp625) {
      label = 73;
      break;
    } else {
      label = 77;
      break;
    }
   case 73:
    if ($cmp633) {
      label = 74;
      break;
    } else {
      label = 75;
      break;
    }
   case 74:
    $add638 = $75 + .5;
    $add638_sink = $add638;
    label = 76;
    break;
   case 75:
    $sub643 = $75 + -.5;
    $add638_sink = $sub643;
    label = 76;
    break;
   case 76:
    $conv639 = ~~$add638_sink;
    $add647 = $conv639 + 1 | 0;
    $div648 = ($add647 | 0) / 2 & -1;
    $conv649 = +($div648 | 0);
    $add650 = $74 + $conv649;
    $y655 = $P + 8 | 0;
    $76 = +HEAPF64[$y655 >> 3];
    $b387_sroa_1_1 = $76;
    $b387_sroa_3_1 = $add650;
    label = 81;
    break;
   case 77:
    if ($cmp633) {
      label = 78;
      break;
    } else {
      label = 79;
      break;
    }
   case 78:
    $add669 = $75 + .5;
    $add669_sink = $add669;
    label = 80;
    break;
   case 79:
    $sub674 = $75 + -.5;
    $add669_sink = $sub674;
    label = 80;
    break;
   case 80:
    $conv670 = ~~$add669_sink;
    $add678 = $conv670 + 1 | 0;
    $div679 = ($add678 | 0) / 2 & -1;
    $conv680 = +($div679 | 0);
    $sub681 = $74 - $conv680;
    $y686 = $P + 8 | 0;
    $77 = +HEAPF64[$y686 >> 3];
    $add687 = $77 + 1.0;
    $b387_sroa_1_1 = $sub681;
    $b387_sroa_3_1 = $add687;
    label = 81;
    break;
   case 81:
    $b387_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b387_sroa_0_0__idx >> 3] = $67;
    $b387_sroa_1_8__idx14 = $endp + 64 | 0;
    HEAPF64[$b387_sroa_1_8__idx14 >> 3] = $b387_sroa_1_1;
    $b387_sroa_2_16__idx26 = $endp + 72 | 0;
    HEAPF64[$b387_sroa_2_16__idx26 >> 3] = $b387_sroa_2_16_copyload36;
    $b387_sroa_3_24__idx38 = $endp + 80 | 0;
    HEAPF64[$b387_sroa_3_24__idx38 >> 3] = $b387_sroa_3_1;
    $boxn693 = $endp + 52 | 0;
    HEAP32[$boxn693 >> 2] = 1;
    label = 82;
    break;
   case 82:
    $edge_type699264 = $e + 128 | 0;
    $78 = HEAP8[$edge_type699264] | 0;
    $cmp701265 = $78 << 24 >> 24 == 0;
    if ($cmp701265) {
      $orig390_0_lcssa = $e;
      label = 84;
      break;
    } else {
      $orig390_0266 = $e;
      label = 83;
      break;
    }
   case 83:
    $to_orig706 = $orig390_0266 + 132 | 0;
    $79 = HEAP32[$to_orig706 >> 2] | 0;
    $edge_type699 = $79 + 128 | 0;
    $80 = HEAP8[$edge_type699] | 0;
    $cmp701 = $80 << 24 >> 24 == 0;
    if ($cmp701) {
      $orig390_0_lcssa = $79;
      label = 84;
      break;
    } else {
      $orig390_0266 = $79;
      label = 83;
      break;
    }
   case 84:
    $tail708 = $orig390_0_lcssa + 16 | 0;
    $81 = HEAP32[$tail708 >> 2] | 0;
    $cmp709 = ($0 | 0) == ($81 | 0);
    if ($cmp709) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    $clip714 = $orig390_0_lcssa + 62 | 0;
    HEAP8[$clip714] = 0;
    label = 87;
    break;
   case 86:
    $clip718 = $orig390_0_lcssa + 102 | 0;
    HEAP8[$clip718] = 0;
    label = 87;
    break;
   case 87:
    $sidemask720 = $endp + 48 | 0;
    HEAP32[$sidemask720 >> 2] = $conv381;
    label = 99;
    break;
   case 88:
    if ($cmp) {
      $side_0 = 1;
      label = 90;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $sidemask726 = $endp + 48 | 0;
    $82 = HEAP32[$sidemask726 >> 2] | 0;
    $side_0 = $82;
    label = 90;
    break;
   case 90:
    $tobool728 = ($pboxfn_0 | 0) == 0;
    if ($tobool728) {
      label = 93;
      break;
    } else {
      label = 91;
      break;
    }
   case 91:
    $arrayidx733 = $endp + 56 | 0;
    $boxn734 = $endp + 52 | 0;
    $call735 = FUNCTION_TABLE_iiiiii[$pboxfn_0 & 1023]($0, $tail_port, $side_0, $arrayidx733, $boxn734) | 0;
    $tobool736 = ($call735 | 0) == 0;
    if ($tobool736) {
      label = 93;
      break;
    } else {
      label = 92;
      break;
    }
   case 92:
    $sidemask738 = $endp + 48 | 0;
    HEAP32[$sidemask738 >> 2] = $call735;
    label = 99;
    break;
   case 93:
    $arrayidx741 = $endp + 56 | 0;
    $83 = $arrayidx741;
    $84 = $endp;
    HEAP32[$83 >> 2] = HEAP32[$84 >> 2] | 0;
    HEAP32[$83 + 4 >> 2] = HEAP32[$84 + 4 >> 2] | 0;
    HEAP32[$83 + 8 >> 2] = HEAP32[$84 + 8 >> 2] | 0;
    HEAP32[$83 + 12 >> 2] = HEAP32[$84 + 12 >> 2] | 0;
    HEAP32[$83 + 16 >> 2] = HEAP32[$84 + 16 >> 2] | 0;
    HEAP32[$83 + 20 >> 2] = HEAP32[$84 + 20 >> 2] | 0;
    HEAP32[$83 + 24 >> 2] = HEAP32[$84 + 24 >> 2] | 0;
    HEAP32[$83 + 28 >> 2] = HEAP32[$84 + 28 >> 2] | 0;
    $boxn743 = $endp + 52 | 0;
    HEAP32[$boxn743 >> 2] = 1;
    if (($et | 0) == 8) {
      label = 94;
      break;
    } else if (($et | 0) == 2) {
      label = 95;
      break;
    } else if (($et | 0) == 1) {
      label = 98;
      break;
    } else {
      label = 99;
      break;
    }
   case 94:
    ___assert_func(96712, 565, 164624, 137288);
   case 95:
    $sidemask745 = $endp + 48 | 0;
    $85 = HEAP32[$sidemask745 >> 2] | 0;
    $cmp746 = ($85 | 0) == 4;
    $y751 = $P + 8 | 0;
    $86 = +HEAPF64[$y751 >> 3];
    if ($cmp746) {
      label = 96;
      break;
    } else {
      label = 97;
      break;
    }
   case 96:
    $y755 = $endp + 64 | 0;
    HEAPF64[$y755 >> 3] = $86;
    label = 99;
    break;
   case 97:
    $y763 = $endp + 80 | 0;
    HEAPF64[$y763 >> 3] = $86;
    label = 99;
    break;
   case 98:
    $y768 = $P + 8 | 0;
    $87 = +HEAPF64[$y768 >> 3];
    $y772 = $endp + 80 | 0;
    HEAPF64[$y772 >> 3] = $87;
    $sidemask773 = $endp + 48 | 0;
    HEAP32[$sidemask773 >> 2] = 1;
    $88 = +HEAPF64[$y768 >> 3];
    $sub777 = $88 + -1.0;
    HEAPF64[$y768 >> 3] = $sub777;
    label = 99;
    break;
   case 99:
    STACKTOP = __stackBase__;
    return;
  }
}
function _selfRightSpace($e) {
  $e = $e | 0;
  var $label = 0, $0 = 0, $defined = 0, $1 = 0, $tobool = 0, $defined3 = 0, $2 = 0, $tobool4 = 0, $side = 0, $3 = 0, $conv = 0, $and = 0, $tobool7 = 0, $side11 = 0, $4 = 0, $and13 = 0, $tobool14 = 0, $cmp = 0, $and30 = 0, $tobool31 = 0, $tobool32 = 0, $head = 0, $5 = 0, $graph = 0, $6 = 0, $rankdir = 0, $7 = 0, $and36 = 0, $tobool37 = 0, $y = 0, $x = 0, $cond_in = 0, $cond = 0.0, $add = 0.0, $conv40 = 0, $sw_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $label = $e + 112 | 0;
    $0 = HEAP32[$label >> 2] | 0;
    $defined = $e + 60 | 0;
    $1 = HEAP8[$defined] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $defined3 = $e + 100 | 0;
    $2 = HEAP8[$defined3] | 0;
    $tobool4 = $2 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $side = $e + 65 | 0;
    $3 = HEAP8[$side] | 0;
    $conv = $3 & 255;
    $and = $conv & 8;
    $tobool7 = ($and | 0) == 0;
    if ($tobool7) {
      label = 5;
      break;
    } else {
      $sw_0 = 0;
      label = 10;
      break;
    }
   case 5:
    $side11 = $e + 105 | 0;
    $4 = HEAP8[$side11] | 0;
    $and13 = $4 & 8;
    $tobool14 = $and13 << 24 >> 24 == 0;
    if ($tobool14) {
      label = 6;
      break;
    } else {
      $sw_0 = 0;
      label = 10;
      break;
    }
   case 6:
    $cmp = $3 << 24 >> 24 == $4 << 24 >> 24;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $and30 = $conv & 5;
    $tobool31 = ($and30 | 0) == 0;
    if ($tobool31) {
      label = 8;
      break;
    } else {
      $sw_0 = 0;
      label = 10;
      break;
    }
   case 8:
    $tobool32 = ($0 | 0) == 0;
    if ($tobool32) {
      $sw_0 = 18;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $head = $e + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $graph = $5 + 20 | 0;
    $6 = HEAP32[$graph >> 2] | 0;
    $rankdir = $6 + 156 | 0;
    $7 = HEAP32[$rankdir >> 2] | 0;
    $and36 = $7 & 1;
    $tobool37 = ($and36 | 0) == 0;
    $y = $0 + 32 | 0;
    $x = $0 + 24 | 0;
    $cond_in = $tobool37 ? $x : $y;
    $cond = +HEAPF64[$cond_in >> 3];
    $add = $cond + 18.0;
    $conv40 = ~~$add;
    $sw_0 = $conv40;
    label = 10;
    break;
   case 10:
    return $sw_0 | 0;
  }
  return 0;
}
function _endpath($P, $e, $et, $endp, $merge) {
  $P = $P | 0;
  $e = $e | 0;
  $et = $et | 0;
  $endp = $endp | 0;
  $merge = $merge | 0;
  var $tmp = 0, $tmp17 = 0, $head = 0, $0 = 0, $head_port = 0, $dyna = 0, $1 = 0, $tobool = 0, $tail = 0, $2 = 0, $3 = 0, $4 = 0, $shape = 0, $5 = 0, $tobool7 = 0, $fns = 0, $6 = 0, $pboxfn11 = 0, $7 = 0, $pboxfn_0 = 0, $end = 0, $coord = 0, $p16 = 0, $8 = 0, $9 = 0, $tobool18 = 0, $10 = 0, $call = 0.0, $add = 0.0, $theta = 0, $cmp = 0, $constrained = 0, $constrained28 = 0, $11 = 0, $tobool29 = 0, $theta33 = 0, $12 = 0.0, $theta35 = 0, $constrained37 = 0, $constrained40 = 0, $np = 0, $13 = 0, $cmp45 = 0, $node_type = 0, $14 = 0, $cmp47 = 0, $side52 = 0, $15 = 0, $conv53 = 0, $tobool54 = 0, $b_sroa_0_0__idx62 = 0, $b_sroa_0_0_copyload63 = 0.0, $b_sroa_1_8__idx74 = 0, $b_sroa_1_8_copyload75 = 0.0, $b_sroa_2_16__idx86 = 0, $b_sroa_2_16_copyload87 = 0.0, $and = 0, $tobool59 = 0, $b_sroa_3_24__idx99 = 0, $b_sroa_3_24_copyload100 = 0.0, $sidemask = 0, $y63 = 0, $16 = 0.0, $cmp64 = 0, $b_sroa_1_8_copyload75_ = 0.0, $b_sroa_0_0__idx60 = 0, $b_sroa_1_8__idx72 = 0, $b_sroa_2_16__idx84 = 0, $b_sroa_3_24__idx97 = 0, $boxn = 0, $17 = 0.0, $add79 = 0.0, $and81 = 0, $tobool82 = 0, $sidemask84 = 0, $x = 0, $18 = 0.0, $x89 = 0, $19 = 0.0, $cmp90 = 0, $sub = 0.0, $y99 = 0, $20 = 0.0, $y107 = 0, $21 = 0.0, $ht = 0, $22 = 0.0, $cmp109 = 0, $add114 = 0.0, $sub119 = 0.0, $add114_sink = 0.0, $conv115 = 0, $add123 = 0, $div = 0, $conv124 = 0.0, $sub125 = 0.0, $graph = 0, $23 = 0, $ranksep = 0, $24 = 0, $div127 = 0, $conv128 = 0.0, $sub129 = 0.0, $25 = 0.0, $lw = 0, $26 = 0.0, $sub136 = 0.0, $27 = 0.0, $28 = 0.0, $cmp149 = 0, $add154 = 0.0, $sub159 = 0.0, $add154_sink = 0.0, $conv155 = 0, $add163 = 0, $div164 = 0, $conv165 = 0.0, $add166 = 0.0, $b0_sroa_0_0__idx101 = 0, $b0_sroa_1_8__idx104 = 0, $b0_sroa_2_16__idx107 = 0, $b0_sroa_3_24__idx110 = 0, $b_sroa_0_0__idx58 = 0, $b_sroa_1_8__idx70 = 0, $b_sroa_2_16__idx82 = 0, $b_sroa_3_24__idx95 = 0, $y183 = 0, $29 = 0.0, $add188 = 0.0, $y193 = 0, $30 = 0.0, $ht195 = 0, $31 = 0.0, $cmp196 = 0, $add201 = 0.0, $sub206 = 0.0, $add201_sink = 0.0, $conv202 = 0, $add210 = 0, $div211 = 0, $conv212 = 0.0, $sub213 = 0.0, $graph214 = 0, $32 = 0, $ranksep216 = 0, $33 = 0, $div217 = 0, $conv218 = 0.0, $sub219 = 0.0, $34 = 0.0, $rw = 0, $35 = 0.0, $add226 = 0.0, $add227 = 0.0, $36 = 0.0, $37 = 0.0, $cmp239 = 0, $add244 = 0.0, $sub249 = 0.0, $add244_sink = 0.0, $conv245 = 0, $add253 = 0, $div254 = 0, $conv255 = 0.0, $add256 = 0.0, $b0_sroa_0_0__idx = 0, $b0_sroa_1_8__idx103 = 0, $b0_sroa_2_16__idx106 = 0, $b0_sroa_3_24__idx109 = 0, $b_sroa_0_0__idx56 = 0, $b_sroa_1_8__idx68 = 0, $b_sroa_2_16__idx80 = 0, $b_sroa_3_24__idx93 = 0, $boxn267 = 0, $y270 = 0, $38 = 0.0, $sub271 = 0.0, $and273 = 0, $tobool274 = 0, $sidemask276 = 0, $x279 = 0, $39 = 0.0, $y284 = 0, $40 = 0.0, $ht286 = 0, $41 = 0.0, $cmp287 = 0, $add292 = 0.0, $sub297 = 0.0, $add292_sink = 0.0, $conv293 = 0, $add301 = 0, $div302 = 0, $conv303 = 0.0, $add304 = 0.0, $y309 = 0, $42 = 0.0, $b_sroa_0_0__idx54 = 0, $b_sroa_1_8__idx66 = 0, $b_sroa_2_16__idx78 = 0, $b_sroa_3_24__idx91 = 0, $boxn314 = 0, $43 = 0.0, $sub318 = 0.0, $x323 = 0, $44 = 0.0, $y328 = 0, $45 = 0.0, $ht330 = 0, $46 = 0.0, $cmp331 = 0, $add336 = 0.0, $sub341 = 0.0, $add336_sink = 0.0, $conv337 = 0, $add345 = 0, $div346 = 0, $conv347 = 0.0, $add348 = 0.0, $y353 = 0, $47 = 0.0, $b_sroa_0_0__idx = 0, $b_sroa_1_8__idx65 = 0, $b_sroa_2_16__idx77 = 0, $b_sroa_3_24__idx90 = 0, $boxn358 = 0, $48 = 0.0, $add362 = 0.0, $edge_type267 = 0, $49 = 0, $cmp368268 = 0, $orig_0269 = 0, $to_orig = 0, $50 = 0, $edge_type = 0, $51 = 0, $cmp368 = 0, $orig_0_lcssa = 0, $head371 = 0, $52 = 0, $cmp372 = 0, $clip = 0, $clip379 = 0, $sidemask381 = 0, $cmp383 = 0, $side388 = 0, $53 = 0, $conv389 = 0, $tobool390 = 0, $b395_sroa_0_0__idx12 = 0, $b395_sroa_0_0_copyload13 = 0.0, $b395_sroa_1_8__idx24 = 0, $b395_sroa_1_8_copyload25 = 0.0, $b395_sroa_2_16__idx36 = 0, $b395_sroa_2_16_copyload37 = 0.0, $b395_sroa_3_24__idx47 = 0, $b395_sroa_3_24_copyload48 = 0.0, $and399 = 0, $tobool400 = 0, $y406 = 0, $54 = 0.0, $cmp407 = 0, $b395_sroa_1_8_copyload25_ = 0.0, $b395_sroa_0_0__idx10 = 0, $b395_sroa_1_8__idx22 = 0, $b395_sroa_2_16__idx34 = 0, $b395_sroa_3_24__idx45 = 0, $boxn422 = 0, $and424 = 0, $tobool425 = 0, $sidemask427 = 0, $55 = 0, $cmp428 = 0, $sub433 = 0.0, $y438 = 0, $56 = 0.0, $ht440 = 0, $57 = 0.0, $cmp441 = 0, $add446 = 0.0, $sub451 = 0.0, $add446_sink = 0.0, $conv447 = 0, $add455 = 0, $div456 = 0, $conv457 = 0.0, $sub458 = 0.0, $x463 = 0, $58 = 0.0, $graph468 = 0, $59 = 0, $ranksep470 = 0, $60 = 0, $div471 = 0, $conv472 = 0.0, $sub473 = 0.0, $x478 = 0, $61 = 0.0, $lw480 = 0, $62 = 0.0, $sub481 = 0.0, $sub482 = 0.0, $63 = 0.0, $64 = 0.0, $cmp494 = 0, $add499 = 0.0, $sub504 = 0.0, $add499_sink = 0.0, $conv500 = 0, $add508 = 0, $div509 = 0, $conv510 = 0.0, $add511 = 0.0, $b0393_sroa_0_0__idx = 0, $b0393_sroa_1_8__idx50 = 0, $b0393_sroa_2_16__idx51 = 0, $b0393_sroa_3_24__idx52 = 0, $b395_sroa_0_0__idx8 = 0, $b395_sroa_1_8__idx20 = 0, $b395_sroa_2_16__idx32 = 0, $b395_sroa_3_24__idx43 = 0, $boxn521 = 0, $y526 = 0, $65 = 0.0, $cmp527 = 0, $b395_sroa_3_24_copyload48_ = 0.0, $b395_sroa_0_0__idx6 = 0, $b395_sroa_1_8__idx18 = 0, $b395_sroa_2_16__idx30 = 0, $b395_sroa_3_24__idx41 = 0, $boxn542 = 0, $and545 = 0, $tobool546 = 0, $x550 = 0, $66 = 0.0, $add551 = 0.0, $sidemask554 = 0, $67 = 0, $cmp555 = 0, $y560 = 0, $68 = 0.0, $ht562 = 0, $69 = 0.0, $cmp563 = 0, $add568 = 0.0, $sub573 = 0.0, $add568_sink = 0.0, $conv569 = 0, $add577 = 0, $div578 = 0, $conv579 = 0.0, $add580 = 0.0, $y585 = 0, $70 = 0.0, $sub586 = 0.0, $add600 = 0.0, $sub605 = 0.0, $add600_sink = 0.0, $conv601 = 0, $add609 = 0, $div610 = 0, $conv611 = 0.0, $sub612 = 0.0, $y617 = 0, $71 = 0.0, $add618 = 0.0, $b395_sroa_3_0 = 0.0, $b395_sroa_1_0 = 0.0, $b395_sroa_0_0__idx4 = 0, $b395_sroa_1_8__idx16 = 0, $b395_sroa_2_16__idx28 = 0, $b395_sroa_3_24__idx39 = 0, $boxn624 = 0, $sub629 = 0.0, $sidemask632 = 0, $72 = 0, $cmp633 = 0, $y638 = 0, $73 = 0.0, $ht640 = 0, $74 = 0.0, $cmp641 = 0, $add646 = 0.0, $sub651 = 0.0, $add646_sink = 0.0, $conv647 = 0, $add655 = 0, $div656 = 0, $conv657 = 0.0, $add658 = 0.0, $y663 = 0, $75 = 0.0, $sub664 = 0.0, $add678 = 0.0, $sub683 = 0.0, $add678_sink = 0.0, $conv679 = 0, $add687 = 0, $div688 = 0, $conv689 = 0.0, $sub690 = 0.0, $y695 = 0, $76 = 0.0, $b395_sroa_3_1 = 0.0, $b395_sroa_1_1 = 0.0, $b395_sroa_0_0__idx = 0, $b395_sroa_1_8__idx15 = 0, $b395_sroa_2_16__idx27 = 0, $b395_sroa_3_24__idx38 = 0, $boxn701 = 0, $edge_type707264 = 0, $77 = 0, $cmp709265 = 0, $orig398_0266 = 0, $to_orig714 = 0, $78 = 0, $edge_type707 = 0, $79 = 0, $cmp709 = 0, $orig398_0_lcssa = 0, $head716 = 0, $80 = 0, $cmp717 = 0, $clip722 = 0, $clip726 = 0, $sidemask728 = 0, $sidemask734 = 0, $81 = 0, $side_0 = 0, $tobool736 = 0, $arrayidx741 = 0, $boxn742 = 0, $call743 = 0, $tobool744 = 0, $sidemask746 = 0, $arrayidx749 = 0, $82 = 0, $83 = 0, $boxn751 = 0, $sidemask753 = 0, $84 = 0, $cmp754 = 0, $y759 = 0, $85 = 0.0, $y763 = 0, $y771 = 0, $y776 = 0, $86 = 0.0, $y780 = 0, $sidemask781 = 0, $87 = 0.0, $add785 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 56 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp17 = __stackBase__ + 40 | 0;
    $head = $e + 12 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $head_port = $e + 72 | 0;
    $dyna = $e + 103 | 0;
    $1 = HEAP8[$dyna] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $2 = HEAP32[$tail >> 2] | 0;
    _resolvePort($tmp, $0, $2, $head_port);
    $3 = $head_port;
    $4 = $tmp;
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    HEAP32[$3 + 16 >> 2] = HEAP32[$4 + 16 >> 2] | 0;
    HEAP32[$3 + 20 >> 2] = HEAP32[$4 + 20 >> 2] | 0;
    HEAP32[$3 + 24 >> 2] = HEAP32[$4 + 24 >> 2] | 0;
    HEAP32[$3 + 28 >> 2] = HEAP32[$4 + 28 >> 2] | 0;
    HEAP32[$3 + 32 >> 2] = HEAP32[$4 + 32 >> 2] | 0;
    HEAP32[$3 + 36 >> 2] = HEAP32[$4 + 36 >> 2] | 0;
    label = 4;
    break;
   case 4:
    $shape = $0 + 24 | 0;
    $5 = HEAP32[$shape >> 2] | 0;
    $tobool7 = ($5 | 0) == 0;
    if ($tobool7) {
      $pboxfn_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $fns = $5 + 4 | 0;
    $6 = HEAP32[$fns >> 2] | 0;
    $pboxfn11 = $6 + 16 | 0;
    $7 = HEAP32[$pboxfn11 >> 2] | 0;
    $pboxfn_0 = $7;
    label = 6;
    break;
   case 6:
    $end = $P + 40 | 0;
    $coord = $0 + 32 | 0;
    $p16 = $head_port | 0;
    _add_pointf804($tmp17, $coord, $p16);
    $8 = $end;
    $9 = $tmp17;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $tobool18 = $merge << 24 >> 24 == 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $10 = HEAP32[$head >> 2] | 0;
    $call = +_conc_slope($10);
    $add = $call + 3.141592653589793;
    $theta = $P + 56 | 0;
    HEAPF64[$theta >> 3] = $add;
    $cmp = $add < 6.283185307179586;
    if ($cmp) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    ___assert_func(96712, 602, 164328, 120048);
   case 9:
    $constrained = $P + 69 | 0;
    HEAP8[$constrained] = 1;
    label = 13;
    break;
   case 10:
    $constrained28 = $e + 101 | 0;
    $11 = HEAP8[$constrained28] | 0;
    $tobool29 = $11 << 24 >> 24 == 0;
    if ($tobool29) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $theta33 = $e + 88 | 0;
    $12 = +HEAPF64[$theta33 >> 3];
    $theta35 = $P + 56 | 0;
    HEAPF64[$theta35 >> 3] = $12;
    $constrained37 = $P + 69 | 0;
    HEAP8[$constrained37] = 1;
    label = 13;
    break;
   case 12:
    $constrained40 = $P + 69 | 0;
    HEAP8[$constrained40] = 0;
    label = 13;
    break;
   case 13:
    $np = $endp + 32 | 0;
    $13 = $np;
    HEAP32[$13 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $cmp45 = ($et | 0) == 1;
    if ($cmp45) {
      label = 14;
      break;
    } else {
      label = 50;
      break;
    }
   case 14:
    $node_type = $0 + 162 | 0;
    $14 = HEAP8[$node_type] | 0;
    $cmp47 = $14 << 24 >> 24 == 0;
    if ($cmp47) {
      label = 15;
      break;
    } else {
      $side_0 = 4;
      label = 93;
      break;
    }
   case 15:
    $side52 = $e + 105 | 0;
    $15 = HEAP8[$side52] | 0;
    $conv53 = $15 & 255;
    $tobool54 = $15 << 24 >> 24 == 0;
    if ($tobool54) {
      label = 50;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $b_sroa_0_0__idx62 = $endp | 0;
    $b_sroa_0_0_copyload63 = +HEAPF64[$b_sroa_0_0__idx62 >> 3];
    $b_sroa_1_8__idx74 = $endp + 8 | 0;
    $b_sroa_1_8_copyload75 = +HEAPF64[$b_sroa_1_8__idx74 >> 3];
    $b_sroa_2_16__idx86 = $endp + 16 | 0;
    $b_sroa_2_16_copyload87 = +HEAPF64[$b_sroa_2_16__idx86 >> 3];
    $and = $conv53 & 4;
    $tobool59 = ($and | 0) == 0;
    if ($tobool59) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $b_sroa_3_24__idx99 = $endp + 24 | 0;
    $b_sroa_3_24_copyload100 = +HEAPF64[$b_sroa_3_24__idx99 >> 3];
    $sidemask = $endp + 48 | 0;
    HEAP32[$sidemask >> 2] = 4;
    $y63 = $P + 48 | 0;
    $16 = +HEAPF64[$y63 >> 3];
    $cmp64 = $b_sroa_1_8_copyload75 < $16;
    $b_sroa_1_8_copyload75_ = $cmp64 ? $b_sroa_1_8_copyload75 : $16;
    $b_sroa_0_0__idx60 = $endp + 56 | 0;
    HEAPF64[$b_sroa_0_0__idx60 >> 3] = $b_sroa_0_0_copyload63;
    $b_sroa_1_8__idx72 = $endp + 64 | 0;
    HEAPF64[$b_sroa_1_8__idx72 >> 3] = $b_sroa_1_8_copyload75_;
    $b_sroa_2_16__idx84 = $endp + 72 | 0;
    HEAPF64[$b_sroa_2_16__idx84 >> 3] = $b_sroa_2_16_copyload87;
    $b_sroa_3_24__idx97 = $endp + 80 | 0;
    HEAPF64[$b_sroa_3_24__idx97 >> 3] = $b_sroa_3_24_copyload100;
    $boxn = $endp + 52 | 0;
    HEAP32[$boxn >> 2] = 1;
    $17 = +HEAPF64[$y63 >> 3];
    $add79 = $17 + 1.0;
    HEAPF64[$y63 >> 3] = $add79;
    label = 44;
    break;
   case 18:
    $and81 = $conv53 & 1;
    $tobool82 = ($and81 | 0) == 0;
    if ($tobool82) {
      label = 35;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $sidemask84 = $endp + 48 | 0;
    HEAP32[$sidemask84 >> 2] = 1;
    $x = $end | 0;
    $18 = +HEAPF64[$x >> 3];
    $x89 = $coord | 0;
    $19 = +HEAPF64[$x89 >> 3];
    $cmp90 = $18 < $19;
    if ($cmp90) {
      label = 20;
      break;
    } else {
      label = 27;
      break;
    }
   case 20:
    $sub = $b_sroa_0_0_copyload63 + -1.0;
    $y99 = $P + 48 | 0;
    $20 = +HEAPF64[$y99 >> 3];
    $y107 = $0 + 40 | 0;
    $21 = +HEAPF64[$y107 >> 3];
    $ht = $0 + 96 | 0;
    $22 = +HEAPF64[$ht >> 3];
    $cmp109 = $22 < 0.0;
    if ($cmp109) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $add114 = $22 + .5;
    $add114_sink = $add114;
    label = 23;
    break;
   case 22:
    $sub119 = $22 + -.5;
    $add114_sink = $sub119;
    label = 23;
    break;
   case 23:
    $conv115 = ~~$add114_sink;
    $add123 = $conv115 + 1 | 0;
    $div = ($add123 | 0) / 2 & -1;
    $conv124 = +($div | 0);
    $sub125 = $21 - $conv124;
    $graph = $0 + 20 | 0;
    $23 = HEAP32[$graph >> 2] | 0;
    $ranksep = $23 + 264 | 0;
    $24 = HEAP32[$ranksep >> 2] | 0;
    $div127 = ($24 | 0) / 2 & -1;
    $conv128 = +($div127 | 0);
    $sub129 = $sub125 - $conv128;
    $25 = +HEAPF64[$x89 >> 3];
    $lw = $0 + 104 | 0;
    $26 = +HEAPF64[$lw >> 3];
    $sub136 = $25 - $26;
    $27 = +HEAPF64[$y107 >> 3];
    $28 = +HEAPF64[$ht >> 3];
    $cmp149 = $28 < 0.0;
    if ($cmp149) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $add154 = $28 + .5;
    $add154_sink = $add154;
    label = 26;
    break;
   case 25:
    $sub159 = $28 + -.5;
    $add154_sink = $sub159;
    label = 26;
    break;
   case 26:
    $conv155 = ~~$add154_sink;
    $add163 = $conv155 + 1 | 0;
    $div164 = ($add163 | 0) / 2 & -1;
    $conv165 = +($div164 | 0);
    $add166 = $27 + $conv165;
    $b0_sroa_0_0__idx101 = $endp + 56 | 0;
    HEAPF64[$b0_sroa_0_0__idx101 >> 3] = $sub;
    $b0_sroa_1_8__idx104 = $endp + 64 | 0;
    HEAPF64[$b0_sroa_1_8__idx104 >> 3] = $sub129;
    $b0_sroa_2_16__idx107 = $endp + 72 | 0;
    HEAPF64[$b0_sroa_2_16__idx107 >> 3] = $b_sroa_2_16_copyload87;
    $b0_sroa_3_24__idx110 = $endp + 80 | 0;
    HEAPF64[$b0_sroa_3_24__idx110 >> 3] = $20;
    $b_sroa_0_0__idx58 = $endp + 88 | 0;
    HEAPF64[$b_sroa_0_0__idx58 >> 3] = $sub;
    $b_sroa_1_8__idx70 = $endp + 96 | 0;
    HEAPF64[$b_sroa_1_8__idx70 >> 3] = $20;
    $b_sroa_2_16__idx82 = $endp + 104 | 0;
    HEAPF64[$b_sroa_2_16__idx82 >> 3] = $sub136;
    $b_sroa_3_24__idx95 = $endp + 112 | 0;
    HEAPF64[$b_sroa_3_24__idx95 >> 3] = $add166;
    label = 34;
    break;
   case 27:
    $y183 = $P + 48 | 0;
    $29 = +HEAPF64[$y183 >> 3];
    $add188 = $b_sroa_2_16_copyload87 + 1.0;
    $y193 = $0 + 40 | 0;
    $30 = +HEAPF64[$y193 >> 3];
    $ht195 = $0 + 96 | 0;
    $31 = +HEAPF64[$ht195 >> 3];
    $cmp196 = $31 < 0.0;
    if ($cmp196) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add201 = $31 + .5;
    $add201_sink = $add201;
    label = 30;
    break;
   case 29:
    $sub206 = $31 + -.5;
    $add201_sink = $sub206;
    label = 30;
    break;
   case 30:
    $conv202 = ~~$add201_sink;
    $add210 = $conv202 + 1 | 0;
    $div211 = ($add210 | 0) / 2 & -1;
    $conv212 = +($div211 | 0);
    $sub213 = $30 - $conv212;
    $graph214 = $0 + 20 | 0;
    $32 = HEAP32[$graph214 >> 2] | 0;
    $ranksep216 = $32 + 264 | 0;
    $33 = HEAP32[$ranksep216 >> 2] | 0;
    $div217 = ($33 | 0) / 2 & -1;
    $conv218 = +($div217 | 0);
    $sub219 = $sub213 - $conv218;
    $34 = +HEAPF64[$x89 >> 3];
    $rw = $0 + 112 | 0;
    $35 = +HEAPF64[$rw >> 3];
    $add226 = $34 + $35;
    $add227 = $add226 + 0.0;
    $36 = +HEAPF64[$y193 >> 3];
    $37 = +HEAPF64[$ht195 >> 3];
    $cmp239 = $37 < 0.0;
    if ($cmp239) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $add244 = $37 + .5;
    $add244_sink = $add244;
    label = 33;
    break;
   case 32:
    $sub249 = $37 + -.5;
    $add244_sink = $sub249;
    label = 33;
    break;
   case 33:
    $conv245 = ~~$add244_sink;
    $add253 = $conv245 + 1 | 0;
    $div254 = ($add253 | 0) / 2 & -1;
    $conv255 = +($div254 | 0);
    $add256 = $36 + $conv255;
    $b0_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b0_sroa_0_0__idx >> 3] = $b_sroa_0_0_copyload63;
    $b0_sroa_1_8__idx103 = $endp + 64 | 0;
    HEAPF64[$b0_sroa_1_8__idx103 >> 3] = $sub219;
    $b0_sroa_2_16__idx106 = $endp + 72 | 0;
    HEAPF64[$b0_sroa_2_16__idx106 >> 3] = $add188;
    $b0_sroa_3_24__idx109 = $endp + 80 | 0;
    HEAPF64[$b0_sroa_3_24__idx109 >> 3] = $29;
    $b_sroa_0_0__idx56 = $endp + 88 | 0;
    HEAPF64[$b_sroa_0_0__idx56 >> 3] = $add227;
    $b_sroa_1_8__idx68 = $endp + 96 | 0;
    HEAPF64[$b_sroa_1_8__idx68 >> 3] = $29;
    $b_sroa_2_16__idx80 = $endp + 104 | 0;
    HEAPF64[$b_sroa_2_16__idx80 >> 3] = $add188;
    $b_sroa_3_24__idx93 = $endp + 112 | 0;
    HEAPF64[$b_sroa_3_24__idx93 >> 3] = $add256;
    label = 34;
    break;
   case 34:
    $boxn267 = $endp + 52 | 0;
    HEAP32[$boxn267 >> 2] = 2;
    $y270 = $P + 48 | 0;
    $38 = +HEAPF64[$y270 >> 3];
    $sub271 = $38 + -1.0;
    HEAPF64[$y270 >> 3] = $sub271;
    label = 44;
    break;
   case 35:
    $and273 = $conv53 & 8;
    $tobool274 = ($and273 | 0) == 0;
    $sidemask276 = $endp + 48 | 0;
    if ($tobool274) {
      label = 40;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    HEAP32[$sidemask276 >> 2] = 8;
    $x279 = $end | 0;
    $39 = +HEAPF64[$x279 >> 3];
    $y284 = $0 + 40 | 0;
    $40 = +HEAPF64[$y284 >> 3];
    $ht286 = $0 + 96 | 0;
    $41 = +HEAPF64[$ht286 >> 3];
    $cmp287 = $41 < 0.0;
    if ($cmp287) {
      label = 38;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $add292 = $41 + .5;
    $add292_sink = $add292;
    label = 39;
    break;
   case 38:
    $sub297 = $41 + -.5;
    $add292_sink = $sub297;
    label = 39;
    break;
   case 39:
    $conv293 = ~~$add292_sink;
    $add301 = $conv293 + 1 | 0;
    $div302 = ($add301 | 0) / 2 & -1;
    $conv303 = +($div302 | 0);
    $add304 = $40 + $conv303;
    $y309 = $P + 48 | 0;
    $42 = +HEAPF64[$y309 >> 3];
    $b_sroa_0_0__idx54 = $endp + 56 | 0;
    HEAPF64[$b_sroa_0_0__idx54 >> 3] = $b_sroa_0_0_copyload63;
    $b_sroa_1_8__idx66 = $endp + 64 | 0;
    HEAPF64[$b_sroa_1_8__idx66 >> 3] = $42;
    $b_sroa_2_16__idx78 = $endp + 72 | 0;
    HEAPF64[$b_sroa_2_16__idx78 >> 3] = $39;
    $b_sroa_3_24__idx91 = $endp + 80 | 0;
    HEAPF64[$b_sroa_3_24__idx91 >> 3] = $add304;
    $boxn314 = $endp + 52 | 0;
    HEAP32[$boxn314 >> 2] = 1;
    $43 = +HEAPF64[$x279 >> 3];
    $sub318 = $43 + -1.0;
    HEAPF64[$x279 >> 3] = $sub318;
    label = 44;
    break;
   case 40:
    HEAP32[$sidemask276 >> 2] = 2;
    $x323 = $end | 0;
    $44 = +HEAPF64[$x323 >> 3];
    $y328 = $0 + 40 | 0;
    $45 = +HEAPF64[$y328 >> 3];
    $ht330 = $0 + 96 | 0;
    $46 = +HEAPF64[$ht330 >> 3];
    $cmp331 = $46 < 0.0;
    if ($cmp331) {
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $add336 = $46 + .5;
    $add336_sink = $add336;
    label = 43;
    break;
   case 42:
    $sub341 = $46 + -.5;
    $add336_sink = $sub341;
    label = 43;
    break;
   case 43:
    $conv337 = ~~$add336_sink;
    $add345 = $conv337 + 1 | 0;
    $div346 = ($add345 | 0) / 2 & -1;
    $conv347 = +($div346 | 0);
    $add348 = $45 + $conv347;
    $y353 = $P + 48 | 0;
    $47 = +HEAPF64[$y353 >> 3];
    $b_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b_sroa_0_0__idx >> 3] = $44;
    $b_sroa_1_8__idx65 = $endp + 64 | 0;
    HEAPF64[$b_sroa_1_8__idx65 >> 3] = $47;
    $b_sroa_2_16__idx77 = $endp + 72 | 0;
    HEAPF64[$b_sroa_2_16__idx77 >> 3] = $b_sroa_2_16_copyload87;
    $b_sroa_3_24__idx90 = $endp + 80 | 0;
    HEAPF64[$b_sroa_3_24__idx90 >> 3] = $add348;
    $boxn358 = $endp + 52 | 0;
    HEAP32[$boxn358 >> 2] = 1;
    $48 = +HEAPF64[$x323 >> 3];
    $add362 = $48 + 1.0;
    HEAPF64[$x323 >> 3] = $add362;
    label = 44;
    break;
   case 44:
    $edge_type267 = $e + 128 | 0;
    $49 = HEAP8[$edge_type267] | 0;
    $cmp368268 = $49 << 24 >> 24 == 0;
    if ($cmp368268) {
      $orig_0_lcssa = $e;
      label = 46;
      break;
    } else {
      $orig_0269 = $e;
      label = 45;
      break;
    }
   case 45:
    $to_orig = $orig_0269 + 132 | 0;
    $50 = HEAP32[$to_orig >> 2] | 0;
    $edge_type = $50 + 128 | 0;
    $51 = HEAP8[$edge_type] | 0;
    $cmp368 = $51 << 24 >> 24 == 0;
    if ($cmp368) {
      $orig_0_lcssa = $50;
      label = 46;
      break;
    } else {
      $orig_0269 = $50;
      label = 45;
      break;
    }
   case 46:
    $head371 = $orig_0_lcssa + 12 | 0;
    $52 = HEAP32[$head371 >> 2] | 0;
    $cmp372 = ($0 | 0) == ($52 | 0);
    if ($cmp372) {
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    $clip = $orig_0_lcssa + 102 | 0;
    HEAP8[$clip] = 0;
    label = 49;
    break;
   case 48:
    $clip379 = $orig_0_lcssa + 62 | 0;
    HEAP8[$clip379] = 0;
    label = 49;
    break;
   case 49:
    $sidemask381 = $endp + 48 | 0;
    HEAP32[$sidemask381 >> 2] = $conv53;
    label = 102;
    break;
   case 50:
    $cmp383 = ($et | 0) == 2;
    if ($cmp383) {
      label = 51;
      break;
    } else {
      label = 91;
      break;
    }
   case 51:
    $side388 = $e + 105 | 0;
    $53 = HEAP8[$side388] | 0;
    $conv389 = $53 & 255;
    $tobool390 = $53 << 24 >> 24 == 0;
    if ($tobool390) {
      label = 91;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $b395_sroa_0_0__idx12 = $endp | 0;
    $b395_sroa_0_0_copyload13 = +HEAPF64[$b395_sroa_0_0__idx12 >> 3];
    $b395_sroa_1_8__idx24 = $endp + 8 | 0;
    $b395_sroa_1_8_copyload25 = +HEAPF64[$b395_sroa_1_8__idx24 >> 3];
    $b395_sroa_2_16__idx36 = $endp + 16 | 0;
    $b395_sroa_2_16_copyload37 = +HEAPF64[$b395_sroa_2_16__idx36 >> 3];
    $b395_sroa_3_24__idx47 = $endp + 24 | 0;
    $b395_sroa_3_24_copyload48 = +HEAPF64[$b395_sroa_3_24__idx47 >> 3];
    $and399 = $conv389 & 4;
    $tobool400 = ($and399 | 0) == 0;
    if ($tobool400) {
      label = 54;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $y406 = $P + 48 | 0;
    $54 = +HEAPF64[$y406 >> 3];
    $cmp407 = $b395_sroa_1_8_copyload25 < $54;
    $b395_sroa_1_8_copyload25_ = $cmp407 ? $b395_sroa_1_8_copyload25 : $54;
    $b395_sroa_0_0__idx10 = $endp + 56 | 0;
    HEAPF64[$b395_sroa_0_0__idx10 >> 3] = $b395_sroa_0_0_copyload13;
    $b395_sroa_1_8__idx22 = $endp + 64 | 0;
    HEAPF64[$b395_sroa_1_8__idx22 >> 3] = $b395_sroa_1_8_copyload25_;
    $b395_sroa_2_16__idx34 = $endp + 72 | 0;
    HEAPF64[$b395_sroa_2_16__idx34 >> 3] = $b395_sroa_2_16_copyload37;
    $b395_sroa_3_24__idx45 = $endp + 80 | 0;
    HEAPF64[$b395_sroa_3_24__idx45 >> 3] = $b395_sroa_3_24_copyload48;
    $boxn422 = $endp + 52 | 0;
    HEAP32[$boxn422 >> 2] = 1;
    label = 85;
    break;
   case 54:
    $and424 = $conv389 & 1;
    $tobool425 = ($and424 | 0) == 0;
    if ($tobool425) {
      label = 64;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $sidemask427 = $endp + 48 | 0;
    $55 = HEAP32[$sidemask427 >> 2] | 0;
    $cmp428 = ($55 | 0) == 4;
    if ($cmp428) {
      label = 56;
      break;
    } else {
      label = 63;
      break;
    }
   case 56:
    $sub433 = $b395_sroa_0_0_copyload13 + -1.0;
    $y438 = $0 + 40 | 0;
    $56 = +HEAPF64[$y438 >> 3];
    $ht440 = $0 + 96 | 0;
    $57 = +HEAPF64[$ht440 >> 3];
    $cmp441 = $57 < 0.0;
    if ($cmp441) {
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $add446 = $57 + .5;
    $add446_sink = $add446;
    label = 59;
    break;
   case 58:
    $sub451 = $57 + -.5;
    $add446_sink = $sub451;
    label = 59;
    break;
   case 59:
    $conv447 = ~~$add446_sink;
    $add455 = $conv447 + 1 | 0;
    $div456 = ($add455 | 0) / 2 & -1;
    $conv457 = +($div456 | 0);
    $sub458 = $56 - $conv457;
    $x463 = $end | 0;
    $58 = +HEAPF64[$x463 >> 3];
    $graph468 = $0 + 20 | 0;
    $59 = HEAP32[$graph468 >> 2] | 0;
    $ranksep470 = $59 + 264 | 0;
    $60 = HEAP32[$ranksep470 >> 2] | 0;
    $div471 = ($60 | 0) / 2 & -1;
    $conv472 = +($div471 | 0);
    $sub473 = $sub458 - $conv472;
    $x478 = $coord | 0;
    $61 = +HEAPF64[$x478 >> 3];
    $lw480 = $0 + 104 | 0;
    $62 = +HEAPF64[$lw480 >> 3];
    $sub481 = $61 - $62;
    $sub482 = $sub481 + -2.0;
    $63 = +HEAPF64[$y438 >> 3];
    $64 = +HEAPF64[$ht440 >> 3];
    $cmp494 = $64 < 0.0;
    if ($cmp494) {
      label = 61;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $add499 = $64 + .5;
    $add499_sink = $add499;
    label = 62;
    break;
   case 61:
    $sub504 = $64 + -.5;
    $add499_sink = $sub504;
    label = 62;
    break;
   case 62:
    $conv500 = ~~$add499_sink;
    $add508 = $conv500 + 1 | 0;
    $div509 = ($add508 | 0) / 2 & -1;
    $conv510 = +($div509 | 0);
    $add511 = $63 + $conv510;
    $b0393_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b0393_sroa_0_0__idx >> 3] = $sub433;
    $b0393_sroa_1_8__idx50 = $endp + 64 | 0;
    HEAPF64[$b0393_sroa_1_8__idx50 >> 3] = $sub473;
    $b0393_sroa_2_16__idx51 = $endp + 72 | 0;
    HEAPF64[$b0393_sroa_2_16__idx51 >> 3] = $58;
    $b0393_sroa_3_24__idx52 = $endp + 80 | 0;
    HEAPF64[$b0393_sroa_3_24__idx52 >> 3] = $sub458;
    $b395_sroa_0_0__idx8 = $endp + 88 | 0;
    HEAPF64[$b395_sroa_0_0__idx8 >> 3] = $sub433;
    $b395_sroa_1_8__idx20 = $endp + 96 | 0;
    HEAPF64[$b395_sroa_1_8__idx20 >> 3] = $sub458;
    $b395_sroa_2_16__idx32 = $endp + 104 | 0;
    HEAPF64[$b395_sroa_2_16__idx32 >> 3] = $sub482;
    $b395_sroa_3_24__idx43 = $endp + 112 | 0;
    HEAPF64[$b395_sroa_3_24__idx43 >> 3] = $add511;
    $boxn521 = $endp + 52 | 0;
    HEAP32[$boxn521 >> 2] = 2;
    label = 85;
    break;
   case 63:
    $y526 = $P + 8 | 0;
    $65 = +HEAPF64[$y526 >> 3];
    $cmp527 = $b395_sroa_3_24_copyload48 > $65;
    $b395_sroa_3_24_copyload48_ = $cmp527 ? $b395_sroa_3_24_copyload48 : $65;
    $b395_sroa_0_0__idx6 = $endp + 56 | 0;
    HEAPF64[$b395_sroa_0_0__idx6 >> 3] = $b395_sroa_0_0_copyload13;
    $b395_sroa_1_8__idx18 = $endp + 64 | 0;
    HEAPF64[$b395_sroa_1_8__idx18 >> 3] = $b395_sroa_1_8_copyload25;
    $b395_sroa_2_16__idx30 = $endp + 72 | 0;
    HEAPF64[$b395_sroa_2_16__idx30 >> 3] = $b395_sroa_2_16_copyload37;
    $b395_sroa_3_24__idx41 = $endp + 80 | 0;
    HEAPF64[$b395_sroa_3_24__idx41 >> 3] = $b395_sroa_3_24_copyload48_;
    $boxn542 = $endp + 52 | 0;
    HEAP32[$boxn542 >> 2] = 1;
    label = 85;
    break;
   case 64:
    $and545 = $conv389 & 8;
    $tobool546 = ($and545 | 0) == 0;
    $x550 = $end | 0;
    $66 = +HEAPF64[$x550 >> 3];
    if ($tobool546) {
      label = 75;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $add551 = $66 + 1.0;
    $sidemask554 = $endp + 48 | 0;
    $67 = HEAP32[$sidemask554 >> 2] | 0;
    $cmp555 = ($67 | 0) == 4;
    $y560 = $0 + 40 | 0;
    $68 = +HEAPF64[$y560 >> 3];
    $ht562 = $0 + 96 | 0;
    $69 = +HEAPF64[$ht562 >> 3];
    $cmp563 = $69 >= 0.0;
    if ($cmp555) {
      label = 66;
      break;
    } else {
      label = 70;
      break;
    }
   case 66:
    if ($cmp563) {
      label = 67;
      break;
    } else {
      label = 68;
      break;
    }
   case 67:
    $add568 = $69 + .5;
    $add568_sink = $add568;
    label = 69;
    break;
   case 68:
    $sub573 = $69 + -.5;
    $add568_sink = $sub573;
    label = 69;
    break;
   case 69:
    $conv569 = ~~$add568_sink;
    $add577 = $conv569 + 1 | 0;
    $div578 = ($add577 | 0) / 2 & -1;
    $conv579 = +($div578 | 0);
    $add580 = $68 + $conv579;
    $y585 = $P + 48 | 0;
    $70 = +HEAPF64[$y585 >> 3];
    $sub586 = $70 + -1.0;
    $b395_sroa_1_0 = $sub586;
    $b395_sroa_3_0 = $add580;
    label = 74;
    break;
   case 70:
    if ($cmp563) {
      label = 71;
      break;
    } else {
      label = 72;
      break;
    }
   case 71:
    $add600 = $69 + .5;
    $add600_sink = $add600;
    label = 73;
    break;
   case 72:
    $sub605 = $69 + -.5;
    $add600_sink = $sub605;
    label = 73;
    break;
   case 73:
    $conv601 = ~~$add600_sink;
    $add609 = $conv601 + 1 | 0;
    $div610 = ($add609 | 0) / 2 & -1;
    $conv611 = +($div610 | 0);
    $sub612 = $68 - $conv611;
    $y617 = $P + 48 | 0;
    $71 = +HEAPF64[$y617 >> 3];
    $add618 = $71 + 1.0;
    $b395_sroa_1_0 = $sub612;
    $b395_sroa_3_0 = $add618;
    label = 74;
    break;
   case 74:
    $b395_sroa_0_0__idx4 = $endp + 56 | 0;
    HEAPF64[$b395_sroa_0_0__idx4 >> 3] = $b395_sroa_0_0_copyload13;
    $b395_sroa_1_8__idx16 = $endp + 64 | 0;
    HEAPF64[$b395_sroa_1_8__idx16 >> 3] = $b395_sroa_1_0;
    $b395_sroa_2_16__idx28 = $endp + 72 | 0;
    HEAPF64[$b395_sroa_2_16__idx28 >> 3] = $add551;
    $b395_sroa_3_24__idx39 = $endp + 80 | 0;
    HEAPF64[$b395_sroa_3_24__idx39 >> 3] = $b395_sroa_3_0;
    $boxn624 = $endp + 52 | 0;
    HEAP32[$boxn624 >> 2] = 1;
    label = 85;
    break;
   case 75:
    $sub629 = $66 + -1.0;
    $sidemask632 = $endp + 48 | 0;
    $72 = HEAP32[$sidemask632 >> 2] | 0;
    $cmp633 = ($72 | 0) == 4;
    $y638 = $0 + 40 | 0;
    $73 = +HEAPF64[$y638 >> 3];
    $ht640 = $0 + 96 | 0;
    $74 = +HEAPF64[$ht640 >> 3];
    $cmp641 = $74 >= 0.0;
    if ($cmp633) {
      label = 76;
      break;
    } else {
      label = 80;
      break;
    }
   case 76:
    if ($cmp641) {
      label = 77;
      break;
    } else {
      label = 78;
      break;
    }
   case 77:
    $add646 = $74 + .5;
    $add646_sink = $add646;
    label = 79;
    break;
   case 78:
    $sub651 = $74 + -.5;
    $add646_sink = $sub651;
    label = 79;
    break;
   case 79:
    $conv647 = ~~$add646_sink;
    $add655 = $conv647 + 1 | 0;
    $div656 = ($add655 | 0) / 2 & -1;
    $conv657 = +($div656 | 0);
    $add658 = $73 + $conv657;
    $y663 = $P + 48 | 0;
    $75 = +HEAPF64[$y663 >> 3];
    $sub664 = $75 + -1.0;
    $b395_sroa_1_1 = $sub664;
    $b395_sroa_3_1 = $add658;
    label = 84;
    break;
   case 80:
    if ($cmp641) {
      label = 81;
      break;
    } else {
      label = 82;
      break;
    }
   case 81:
    $add678 = $74 + .5;
    $add678_sink = $add678;
    label = 83;
    break;
   case 82:
    $sub683 = $74 + -.5;
    $add678_sink = $sub683;
    label = 83;
    break;
   case 83:
    $conv679 = ~~$add678_sink;
    $add687 = $conv679 + 1 | 0;
    $div688 = ($add687 | 0) / 2 & -1;
    $conv689 = +($div688 | 0);
    $sub690 = $73 - $conv689;
    $y695 = $P + 48 | 0;
    $76 = +HEAPF64[$y695 >> 3];
    $b395_sroa_1_1 = $sub690;
    $b395_sroa_3_1 = $76;
    label = 84;
    break;
   case 84:
    $b395_sroa_0_0__idx = $endp + 56 | 0;
    HEAPF64[$b395_sroa_0_0__idx >> 3] = $sub629;
    $b395_sroa_1_8__idx15 = $endp + 64 | 0;
    HEAPF64[$b395_sroa_1_8__idx15 >> 3] = $b395_sroa_1_1;
    $b395_sroa_2_16__idx27 = $endp + 72 | 0;
    HEAPF64[$b395_sroa_2_16__idx27 >> 3] = $b395_sroa_2_16_copyload37;
    $b395_sroa_3_24__idx38 = $endp + 80 | 0;
    HEAPF64[$b395_sroa_3_24__idx38 >> 3] = $b395_sroa_3_1;
    $boxn701 = $endp + 52 | 0;
    HEAP32[$boxn701 >> 2] = 1;
    label = 85;
    break;
   case 85:
    $edge_type707264 = $e + 128 | 0;
    $77 = HEAP8[$edge_type707264] | 0;
    $cmp709265 = $77 << 24 >> 24 == 0;
    if ($cmp709265) {
      $orig398_0_lcssa = $e;
      label = 87;
      break;
    } else {
      $orig398_0266 = $e;
      label = 86;
      break;
    }
   case 86:
    $to_orig714 = $orig398_0266 + 132 | 0;
    $78 = HEAP32[$to_orig714 >> 2] | 0;
    $edge_type707 = $78 + 128 | 0;
    $79 = HEAP8[$edge_type707] | 0;
    $cmp709 = $79 << 24 >> 24 == 0;
    if ($cmp709) {
      $orig398_0_lcssa = $78;
      label = 87;
      break;
    } else {
      $orig398_0266 = $78;
      label = 86;
      break;
    }
   case 87:
    $head716 = $orig398_0_lcssa + 12 | 0;
    $80 = HEAP32[$head716 >> 2] | 0;
    $cmp717 = ($0 | 0) == ($80 | 0);
    if ($cmp717) {
      label = 88;
      break;
    } else {
      label = 89;
      break;
    }
   case 88:
    $clip722 = $orig398_0_lcssa + 102 | 0;
    HEAP8[$clip722] = 0;
    label = 90;
    break;
   case 89:
    $clip726 = $orig398_0_lcssa + 62 | 0;
    HEAP8[$clip726] = 0;
    label = 90;
    break;
   case 90:
    $sidemask728 = $endp + 48 | 0;
    HEAP32[$sidemask728 >> 2] = $conv389;
    label = 102;
    break;
   case 91:
    if ($cmp45) {
      $side_0 = 4;
      label = 93;
      break;
    } else {
      label = 92;
      break;
    }
   case 92:
    $sidemask734 = $endp + 48 | 0;
    $81 = HEAP32[$sidemask734 >> 2] | 0;
    $side_0 = $81;
    label = 93;
    break;
   case 93:
    $tobool736 = ($pboxfn_0 | 0) == 0;
    if ($tobool736) {
      label = 96;
      break;
    } else {
      label = 94;
      break;
    }
   case 94:
    $arrayidx741 = $endp + 56 | 0;
    $boxn742 = $endp + 52 | 0;
    $call743 = FUNCTION_TABLE_iiiiii[$pboxfn_0 & 1023]($0, $head_port, $side_0, $arrayidx741, $boxn742) | 0;
    $tobool744 = ($call743 | 0) == 0;
    if ($tobool744) {
      label = 96;
      break;
    } else {
      label = 95;
      break;
    }
   case 95:
    $sidemask746 = $endp + 48 | 0;
    HEAP32[$sidemask746 >> 2] = $call743;
    label = 102;
    break;
   case 96:
    $arrayidx749 = $endp + 56 | 0;
    $82 = $arrayidx749;
    $83 = $endp;
    HEAP32[$82 >> 2] = HEAP32[$83 >> 2] | 0;
    HEAP32[$82 + 4 >> 2] = HEAP32[$83 + 4 >> 2] | 0;
    HEAP32[$82 + 8 >> 2] = HEAP32[$83 + 8 >> 2] | 0;
    HEAP32[$82 + 12 >> 2] = HEAP32[$83 + 12 >> 2] | 0;
    HEAP32[$82 + 16 >> 2] = HEAP32[$83 + 16 >> 2] | 0;
    HEAP32[$82 + 20 >> 2] = HEAP32[$83 + 20 >> 2] | 0;
    HEAP32[$82 + 24 >> 2] = HEAP32[$83 + 24 >> 2] | 0;
    HEAP32[$82 + 28 >> 2] = HEAP32[$83 + 28 >> 2] | 0;
    $boxn751 = $endp + 52 | 0;
    HEAP32[$boxn751 >> 2] = 1;
    if (($et | 0) == 8) {
      label = 97;
      break;
    } else if (($et | 0) == 2) {
      label = 98;
      break;
    } else if (($et | 0) == 1) {
      label = 101;
      break;
    } else {
      label = 102;
      break;
    }
   case 97:
    ___assert_func(96712, 757, 164328, 137288);
   case 98:
    $sidemask753 = $endp + 48 | 0;
    $84 = HEAP32[$sidemask753 >> 2] | 0;
    $cmp754 = ($84 | 0) == 4;
    $y759 = $P + 48 | 0;
    $85 = +HEAPF64[$y759 >> 3];
    if ($cmp754) {
      label = 99;
      break;
    } else {
      label = 100;
      break;
    }
   case 99:
    $y763 = $endp + 64 | 0;
    HEAPF64[$y763 >> 3] = $85;
    label = 102;
    break;
   case 100:
    $y771 = $endp + 80 | 0;
    HEAPF64[$y771 >> 3] = $85;
    label = 102;
    break;
   case 101:
    $y776 = $P + 48 | 0;
    $86 = +HEAPF64[$y776 >> 3];
    $y780 = $endp + 64 | 0;
    HEAPF64[$y780 >> 3] = $86;
    $sidemask781 = $endp + 48 | 0;
    HEAP32[$sidemask781 >> 2] = 4;
    $87 = +HEAPF64[$y776 >> 3];
    $add785 = $87 + 1.0;
    HEAPF64[$y776 >> 3] = $add785;
    label = 102;
    break;
   case 102:
    STACKTOP = __stackBase__;
    return;
  }
}
function _selfRight($edges, $ind, $cnt, $stepx, $sizey, $sinfo) {
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $stepx = +$stepx;
  $sizey = +$sizey;
  $sinfo = $sinfo | 0;
  var $points = 0, $tmp = 0, $tmp74 = 0, $tmp83 = 0, $tmp90 = 0, $tmp98 = 0, $arrayidx = 0, $0 = 0, $tail = 0, $1 = 0, $div = 0.0, $conv = 0.0, $div1 = 0.0, $cmp = 0, $cond = 0.0, $np_sroa_0_0__idx = 0, $np_sroa_0_0_copyload = 0.0, $np_sroa_1_8__idx32 = 0, $np_sroa_1_8_copyload = 0.0, $tp_sroa_0_0__idx48 = 0, $tp_sroa_0_0_copyload49 = 0.0, $tp_sroa_1_8__idx55 = 0, $tp_sroa_1_8_copyload56 = 0.0, $add = 0.0, $add6 = 0.0, $hp_sroa_0_0__idx36 = 0, $hp_sroa_0_0_copyload37 = 0.0, $hp_sroa_1_8__idx43 = 0, $hp_sroa_1_8_copyload44 = 0.0, $add11 = 0.0, $add14 = 0.0, $rw = 0, $2 = 0.0, $add21 = 0.0, $sub = 0.0, $mul = 0.0, $sub37 = 0.0, $mul38 = 0.0, $cmp5093 = 0, $cmp39 = 0, $cmp23 = 0, $cmp17 = 0, $_mul38 = 0.0, $cond33 = 0.0, $_ = 0.0, $mul57 = 0.0, $arrayidx60 = 0, $tp_sroa_0_0__idx = 0, $tp_sroa_1_8__idx52 = 0, $arrayidx62 = 0, $3 = 0, $4 = 0, $arrayidx69 = 0, $5 = 0, $6 = 0, $arrayidx76 = 0, $add81 = 0.0, $div82 = 0.0, $7 = 0, $8 = 0, $arrayidx85 = 0, $9 = 0, $10 = 0, $arrayidx92 = 0, $11 = 0, $12 = 0, $hp_sroa_0_0__idx = 0, $hp_sroa_1_8__idx38 = 0, $ind_addr_099 = 0, $i_098 = 0, $dy_097 = 0.0, $dx_096 = 0.0, $tx_095 = 0.0, $hx_094 = 0.0, $inc = 0, $arrayidx52 = 0, $13 = 0, $add53 = 0.0, $add54 = 0.0, $add55 = 0.0, $add58 = 0.0, $div64 = 0.0, $add65 = 0.0, $add67 = 0.0, $add71 = 0.0, $sub89 = 0.0, $div94 = 0.0, $add95 = 0.0, $label = 0, $14 = 0, $tobool = 0, $tail103 = 0, $15 = 0, $graph = 0, $16 = 0, $rankdir = 0, $17 = 0, $and105 = 0, $tobool106 = 0, $dimen = 0, $y110 = 0, $x114 = 0, $x119 = 0, $y123 = 0, $width_0_in = 0, $height_0_in = 0, $height_0 = 0.0, $width_0 = 0.0, $18 = 0.0, $add128 = 0.0, $div129 = 0.0, $add130 = 0.0, $19 = 0, $x133 = 0, $20 = 0.0, $21 = 0, $y140 = 0, $22 = 0, $set = 0, $cmp143 = 0, $sub146 = 0.0, $add147 = 0.0, $dx_1 = 0.0, $add149 = 0.0, $cmp150 = 0, $sub153 = 0.0, $add154 = 0.0, $dx_2 = 0.0, $dy_1 = 0.0, $head = 0, $23 = 0, $inc157 = 0, $cmp50 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16080 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $points = __stackBase__ | 0;
    $tmp = __stackBase__ + 16e3 | 0;
    $tmp74 = __stackBase__ + 16016 | 0;
    $tmp83 = __stackBase__ + 16032 | 0;
    $tmp90 = __stackBase__ + 16048 | 0;
    $tmp98 = __stackBase__ + 16064 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tail = $0 + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $div = $sizey * .5;
    $conv = +($cnt | 0);
    $div1 = $div / $conv;
    $cmp = $div1 > 2.0;
    $cond = $cmp ? $div1 : 2.0;
    $np_sroa_0_0__idx = $1 + 32 | 0;
    $np_sroa_0_0_copyload = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $np_sroa_1_8__idx32 = $1 + 40 | 0;
    $np_sroa_1_8_copyload = +HEAPF64[$np_sroa_1_8__idx32 >> 3];
    $tp_sroa_0_0__idx48 = $0 + 32 | 0;
    $tp_sroa_0_0_copyload49 = +HEAPF64[$tp_sroa_0_0__idx48 >> 3];
    $tp_sroa_1_8__idx55 = $0 + 40 | 0;
    $tp_sroa_1_8_copyload56 = +HEAPF64[$tp_sroa_1_8__idx55 >> 3];
    $add = $np_sroa_0_0_copyload + $tp_sroa_0_0_copyload49;
    $add6 = $np_sroa_1_8_copyload + $tp_sroa_1_8_copyload56;
    $hp_sroa_0_0__idx36 = $0 + 72 | 0;
    $hp_sroa_0_0_copyload37 = +HEAPF64[$hp_sroa_0_0__idx36 >> 3];
    $hp_sroa_1_8__idx43 = $0 + 80 | 0;
    $hp_sroa_1_8_copyload44 = +HEAPF64[$hp_sroa_1_8__idx43 >> 3];
    $add11 = $np_sroa_0_0_copyload + $hp_sroa_0_0_copyload37;
    $add14 = $np_sroa_1_8_copyload + $hp_sroa_1_8_copyload44;
    $rw = $1 + 112 | 0;
    $2 = +HEAPF64[$rw >> 3];
    $add21 = $np_sroa_0_0_copyload + $2;
    $sub = $add21 - $add;
    $mul = $sub * 3.0;
    $sub37 = $add21 - $add11;
    $mul38 = $sub37 * 3.0;
    $cmp5093 = ($cnt | 0) > 0;
    if ($cmp5093) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $cmp39 = $2 < $mul38;
    $cmp23 = $2 < $mul;
    $cmp17 = $add6 < $add14;
    $_mul38 = $cmp39 ? $2 : $mul38;
    $cond33 = $cmp23 ? $2 : $mul;
    $_ = $cmp17 ? -1.0 : 1.0;
    $mul57 = $cond * $_;
    $arrayidx60 = $points | 0;
    $tp_sroa_0_0__idx = $points | 0;
    $tp_sroa_1_8__idx52 = $points + 8 | 0;
    $arrayidx62 = $points + 16 | 0;
    $3 = $arrayidx62;
    $4 = $tmp;
    $arrayidx69 = $points + 32 | 0;
    $5 = $arrayidx69;
    $6 = $tmp74;
    $arrayidx76 = $points + 48 | 0;
    $add81 = $add6 + $add14;
    $div82 = $add81 * .5;
    $7 = $arrayidx76;
    $8 = $tmp83;
    $arrayidx85 = $points + 64 | 0;
    $9 = $arrayidx85;
    $10 = $tmp90;
    $arrayidx92 = $points + 80 | 0;
    $11 = $arrayidx92;
    $12 = $tmp98;
    $hp_sroa_0_0__idx = $points + 96 | 0;
    $hp_sroa_1_8__idx38 = $points + 104 | 0;
    $hx_094 = $_mul38;
    $tx_095 = $cond33;
    $dx_096 = $2;
    $dy_097 = 0.0;
    $i_098 = 0;
    $ind_addr_099 = $ind;
    label = 4;
    break;
   case 4:
    $inc = $ind_addr_099 + 1 | 0;
    $arrayidx52 = $edges + ($ind_addr_099 << 2) | 0;
    $13 = HEAP32[$arrayidx52 >> 2] | 0;
    $add53 = $dx_096 + $stepx;
    $add54 = $tx_095 + $stepx;
    $add55 = $hx_094 + $stepx;
    $add58 = $mul57 + $dy_097;
    HEAPF64[$tp_sroa_0_0__idx >> 3] = $add;
    HEAPF64[$tp_sroa_1_8__idx52 >> 3] = $add6;
    $div64 = $add54 / 3.0;
    $add65 = $add + $div64;
    $add67 = $add6 + $add58;
    _pointfof805($tmp, $add65, $add67);
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $add71 = $np_sroa_0_0_copyload + $add53;
    _pointfof805($tmp74, $add71, $add67);
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    _pointfof805($tmp83, $add71, $div82);
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $sub89 = $add14 - $add58;
    _pointfof805($tmp90, $add71, $sub89);
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $div94 = $add55 / 3.0;
    $add95 = $add11 + $div94;
    _pointfof805($tmp98, $add95, $sub89);
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    HEAPF64[$hp_sroa_0_0__idx >> 3] = $add11;
    HEAPF64[$hp_sroa_1_8__idx38 >> 3] = $add14;
    $label = $13 + 112 | 0;
    $14 = HEAP32[$label >> 2] | 0;
    $tobool = ($14 | 0) == 0;
    if ($tobool) {
      $dy_1 = $add58;
      $dx_2 = $add53;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $tail103 = $13 + 16 | 0;
    $15 = HEAP32[$tail103 >> 2] | 0;
    $graph = $15 + 20 | 0;
    $16 = HEAP32[$graph >> 2] | 0;
    $rankdir = $16 + 156 | 0;
    $17 = HEAP32[$rankdir >> 2] | 0;
    $and105 = $17 & 1;
    $tobool106 = ($and105 | 0) == 0;
    $dimen = $14 + 24 | 0;
    if ($tobool106) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $y110 = $14 + 32 | 0;
    $x114 = $dimen | 0;
    $height_0_in = $x114;
    $width_0_in = $y110;
    label = 8;
    break;
   case 7:
    $x119 = $dimen | 0;
    $y123 = $14 + 32 | 0;
    $height_0_in = $y123;
    $width_0_in = $x119;
    label = 8;
    break;
   case 8:
    $height_0 = +HEAPF64[$height_0_in >> 3];
    $width_0 = +HEAPF64[$width_0_in >> 3];
    $18 = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $add128 = $add53 + $18;
    $div129 = $width_0 * .5;
    $add130 = $div129 + $add128;
    $19 = HEAP32[$label >> 2] | 0;
    $x133 = $19 + 56 | 0;
    HEAPF64[$x133 >> 3] = $add130;
    $20 = +HEAPF64[$np_sroa_1_8__idx32 >> 3];
    $21 = HEAP32[$label >> 2] | 0;
    $y140 = $21 + 64 | 0;
    HEAPF64[$y140 >> 3] = $20;
    $22 = HEAP32[$label >> 2] | 0;
    $set = $22 + 81 | 0;
    HEAP8[$set] = 1;
    $cmp143 = $width_0 > $stepx;
    if ($cmp143) {
      label = 9;
      break;
    } else {
      $dx_1 = $add53;
      label = 10;
      break;
    }
   case 9:
    $sub146 = $width_0 - $stepx;
    $add147 = $add53 + $sub146;
    $dx_1 = $add147;
    label = 10;
    break;
   case 10:
    $add149 = $cond + $add58;
    $cmp150 = $add149 < $height_0;
    if ($cmp150) {
      label = 11;
      break;
    } else {
      $dy_1 = $add58;
      $dx_2 = $dx_1;
      label = 12;
      break;
    }
   case 11:
    $sub153 = $height_0 - $cond;
    $add154 = $add58 + $sub153;
    $dy_1 = $add154;
    $dx_2 = $dx_1;
    label = 12;
    break;
   case 12:
    $head = $13 + 12 | 0;
    $23 = HEAP32[$head >> 2] | 0;
    _clip_and_install($13, $23, $arrayidx60, 7, $sinfo);
    $inc157 = $i_098 + 1 | 0;
    $cmp50 = ($inc157 | 0) < ($cnt | 0);
    if ($cmp50) {
      $hx_094 = $add55;
      $tx_095 = $add54;
      $dx_096 = $dx_2;
      $dy_097 = $dy_1;
      $i_098 = $inc157;
      $ind_addr_099 = $inc;
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _selfTop($edges, $ind, $cnt, $sizex, $stepy, $sinfo) {
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $sizex = +$sizex;
  $stepy = +$stepy;
  $sinfo = $sinfo | 0;
  var $points = 0, $tmp = 0, $tmp75 = 0, $tmp84 = 0, $tmp91 = 0, $tmp99 = 0, $arrayidx = 0, $0 = 0, $tail = 0, $1 = 0, $div = 0.0, $conv = 0.0, $div1 = 0.0, $cmp = 0, $cond = 0.0, $np_sroa_0_0__idx = 0, $np_sroa_0_0_copyload = 0.0, $np_sroa_1_8__idx32 = 0, $np_sroa_1_8_copyload = 0.0, $tp_sroa_0_0__idx49 = 0, $tp_sroa_0_0_copyload50 = 0.0, $tp_sroa_1_8__idx55 = 0, $tp_sroa_1_8_copyload56 = 0.0, $add = 0.0, $add6 = 0.0, $hp_sroa_0_0__idx37 = 0, $hp_sroa_0_0_copyload38 = 0.0, $hp_sroa_1_8__idx43 = 0, $hp_sroa_1_8_copyload44 = 0.0, $add11 = 0.0, $add14 = 0.0, $ht = 0, $2 = 0.0, $div20 = 0.0, $add22 = 0.0, $sub = 0.0, $mul = 0.0, $sub38 = 0.0, $mul39 = 0.0, $cmp5193 = 0, $cmp40 = 0, $cmp24 = 0, $cmp17 = 0, $div20_mul39 = 0.0, $cond34 = 0.0, $_ = 0.0, $mul58 = 0.0, $arrayidx61 = 0, $tp_sroa_0_0__idx = 0, $tp_sroa_1_8__idx51 = 0, $arrayidx63 = 0, $3 = 0, $4 = 0, $arrayidx70 = 0, $5 = 0, $6 = 0, $arrayidx77 = 0, $add80 = 0.0, $div81 = 0.0, $7 = 0, $8 = 0, $arrayidx86 = 0, $9 = 0, $10 = 0, $arrayidx93 = 0, $11 = 0, $12 = 0, $hp_sroa_0_0__idx = 0, $hp_sroa_1_8__idx39 = 0, $ind_addr_099 = 0, $i_098 = 0, $dy_097 = 0.0, $dx_096 = 0.0, $ty_095 = 0.0, $hy_094 = 0.0, $inc = 0, $arrayidx53 = 0, $13 = 0, $add54 = 0.0, $add55 = 0.0, $add56 = 0.0, $add59 = 0.0, $add65 = 0.0, $div67 = 0.0, $add68 = 0.0, $add74 = 0.0, $sub88 = 0.0, $div97 = 0.0, $add98 = 0.0, $label = 0, $14 = 0, $tobool = 0, $tail104 = 0, $15 = 0, $graph = 0, $16 = 0, $rankdir = 0, $17 = 0, $and106 = 0, $tobool107 = 0, $dimen = 0, $y111 = 0, $x115 = 0, $x120 = 0, $y124 = 0, $width_0_in = 0, $height_0_in = 0, $height_0 = 0.0, $width_0 = 0.0, $18 = 0.0, $add129 = 0.0, $div130 = 0.0, $add131 = 0.0, $19 = 0, $y134 = 0, $20 = 0.0, $21 = 0, $x141 = 0, $22 = 0, $set = 0, $cmp144 = 0, $sub147 = 0.0, $add148 = 0.0, $dy_1 = 0.0, $add150 = 0.0, $cmp151 = 0, $sub154 = 0.0, $add155 = 0.0, $dx_1 = 0.0, $dy_2 = 0.0, $head = 0, $23 = 0, $inc158 = 0, $cmp51 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16080 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $points = __stackBase__ | 0;
    $tmp = __stackBase__ + 16e3 | 0;
    $tmp75 = __stackBase__ + 16016 | 0;
    $tmp84 = __stackBase__ + 16032 | 0;
    $tmp91 = __stackBase__ + 16048 | 0;
    $tmp99 = __stackBase__ + 16064 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tail = $0 + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $div = $sizex * .5;
    $conv = +($cnt | 0);
    $div1 = $div / $conv;
    $cmp = $div1 > 2.0;
    $cond = $cmp ? $div1 : 2.0;
    $np_sroa_0_0__idx = $1 + 32 | 0;
    $np_sroa_0_0_copyload = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $np_sroa_1_8__idx32 = $1 + 40 | 0;
    $np_sroa_1_8_copyload = +HEAPF64[$np_sroa_1_8__idx32 >> 3];
    $tp_sroa_0_0__idx49 = $0 + 32 | 0;
    $tp_sroa_0_0_copyload50 = +HEAPF64[$tp_sroa_0_0__idx49 >> 3];
    $tp_sroa_1_8__idx55 = $0 + 40 | 0;
    $tp_sroa_1_8_copyload56 = +HEAPF64[$tp_sroa_1_8__idx55 >> 3];
    $add = $np_sroa_0_0_copyload + $tp_sroa_0_0_copyload50;
    $add6 = $np_sroa_1_8_copyload + $tp_sroa_1_8_copyload56;
    $hp_sroa_0_0__idx37 = $0 + 72 | 0;
    $hp_sroa_0_0_copyload38 = +HEAPF64[$hp_sroa_0_0__idx37 >> 3];
    $hp_sroa_1_8__idx43 = $0 + 80 | 0;
    $hp_sroa_1_8_copyload44 = +HEAPF64[$hp_sroa_1_8__idx43 >> 3];
    $add11 = $np_sroa_0_0_copyload + $hp_sroa_0_0_copyload38;
    $add14 = $np_sroa_1_8_copyload + $hp_sroa_1_8_copyload44;
    $ht = $1 + 96 | 0;
    $2 = +HEAPF64[$ht >> 3];
    $div20 = $2 * .5;
    $add22 = $np_sroa_1_8_copyload + $div20;
    $sub = $add22 - $add6;
    $mul = $sub * 3.0;
    $sub38 = $add22 - $add14;
    $mul39 = $sub38 * 3.0;
    $cmp5193 = ($cnt | 0) > 0;
    if ($cmp5193) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $cmp40 = $div20 < $mul39;
    $cmp24 = $div20 < $mul;
    $cmp17 = $add < $add11;
    $div20_mul39 = $cmp40 ? $div20 : $mul39;
    $cond34 = $cmp24 ? $div20 : $mul;
    $_ = $cmp17 ? -1.0 : 1.0;
    $mul58 = $cond * $_;
    $arrayidx61 = $points | 0;
    $tp_sroa_0_0__idx = $points | 0;
    $tp_sroa_1_8__idx51 = $points + 8 | 0;
    $arrayidx63 = $points + 16 | 0;
    $3 = $arrayidx63;
    $4 = $tmp;
    $arrayidx70 = $points + 32 | 0;
    $5 = $arrayidx70;
    $6 = $tmp75;
    $arrayidx77 = $points + 48 | 0;
    $add80 = $add + $add11;
    $div81 = $add80 * .5;
    $7 = $arrayidx77;
    $8 = $tmp84;
    $arrayidx86 = $points + 64 | 0;
    $9 = $arrayidx86;
    $10 = $tmp91;
    $arrayidx93 = $points + 80 | 0;
    $11 = $arrayidx93;
    $12 = $tmp99;
    $hp_sroa_0_0__idx = $points + 96 | 0;
    $hp_sroa_1_8__idx39 = $points + 104 | 0;
    $hy_094 = $div20_mul39;
    $ty_095 = $cond34;
    $dx_096 = 0.0;
    $dy_097 = $div20;
    $i_098 = 0;
    $ind_addr_099 = $ind;
    label = 4;
    break;
   case 4:
    $inc = $ind_addr_099 + 1 | 0;
    $arrayidx53 = $edges + ($ind_addr_099 << 2) | 0;
    $13 = HEAP32[$arrayidx53 >> 2] | 0;
    $add54 = $dy_097 + $stepy;
    $add55 = $ty_095 + $stepy;
    $add56 = $hy_094 + $stepy;
    $add59 = $mul58 + $dx_096;
    HEAPF64[$tp_sroa_0_0__idx >> 3] = $add;
    HEAPF64[$tp_sroa_1_8__idx51 >> 3] = $add6;
    $add65 = $add + $add59;
    $div67 = $add55 / 3.0;
    $add68 = $add6 + $div67;
    _pointfof805($tmp, $add65, $add68);
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $add74 = $np_sroa_1_8_copyload + $add54;
    _pointfof805($tmp75, $add65, $add74);
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    _pointfof805($tmp84, $div81, $add74);
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $sub88 = $add11 - $add59;
    _pointfof805($tmp91, $sub88, $add74);
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $div97 = $add56 / 3.0;
    $add98 = $add14 + $div97;
    _pointfof805($tmp99, $sub88, $add98);
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    HEAPF64[$hp_sroa_0_0__idx >> 3] = $add11;
    HEAPF64[$hp_sroa_1_8__idx39 >> 3] = $add14;
    $label = $13 + 112 | 0;
    $14 = HEAP32[$label >> 2] | 0;
    $tobool = ($14 | 0) == 0;
    if ($tobool) {
      $dy_2 = $add54;
      $dx_1 = $add59;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $tail104 = $13 + 16 | 0;
    $15 = HEAP32[$tail104 >> 2] | 0;
    $graph = $15 + 20 | 0;
    $16 = HEAP32[$graph >> 2] | 0;
    $rankdir = $16 + 156 | 0;
    $17 = HEAP32[$rankdir >> 2] | 0;
    $and106 = $17 & 1;
    $tobool107 = ($and106 | 0) == 0;
    $dimen = $14 + 24 | 0;
    if ($tobool107) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $y111 = $14 + 32 | 0;
    $x115 = $dimen | 0;
    $height_0_in = $x115;
    $width_0_in = $y111;
    label = 8;
    break;
   case 7:
    $x120 = $dimen | 0;
    $y124 = $14 + 32 | 0;
    $height_0_in = $y124;
    $width_0_in = $x120;
    label = 8;
    break;
   case 8:
    $height_0 = +HEAPF64[$height_0_in >> 3];
    $width_0 = +HEAPF64[$width_0_in >> 3];
    $18 = +HEAPF64[$np_sroa_1_8__idx32 >> 3];
    $add129 = $add54 + $18;
    $div130 = $height_0 * .5;
    $add131 = $div130 + $add129;
    $19 = HEAP32[$label >> 2] | 0;
    $y134 = $19 + 64 | 0;
    HEAPF64[$y134 >> 3] = $add131;
    $20 = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $21 = HEAP32[$label >> 2] | 0;
    $x141 = $21 + 56 | 0;
    HEAPF64[$x141 >> 3] = $20;
    $22 = HEAP32[$label >> 2] | 0;
    $set = $22 + 81 | 0;
    HEAP8[$set] = 1;
    $cmp144 = $height_0 > $stepy;
    if ($cmp144) {
      label = 9;
      break;
    } else {
      $dy_1 = $add54;
      label = 10;
      break;
    }
   case 9:
    $sub147 = $height_0 - $stepy;
    $add148 = $add54 + $sub147;
    $dy_1 = $add148;
    label = 10;
    break;
   case 10:
    $add150 = $cond + $add59;
    $cmp151 = $add150 < $width_0;
    if ($cmp151) {
      label = 11;
      break;
    } else {
      $dy_2 = $dy_1;
      $dx_1 = $add59;
      label = 12;
      break;
    }
   case 11:
    $sub154 = $width_0 - $cond;
    $add155 = $add59 + $sub154;
    $dy_2 = $dy_1;
    $dx_1 = $add155;
    label = 12;
    break;
   case 12:
    $head = $13 + 12 | 0;
    $23 = HEAP32[$head >> 2] | 0;
    _clip_and_install($13, $23, $arrayidx61, 7, $sinfo);
    $inc158 = $i_098 + 1 | 0;
    $cmp51 = ($inc158 | 0) < ($cnt | 0);
    if ($cmp51) {
      $hy_094 = $add56;
      $ty_095 = $add55;
      $dx_096 = $dx_1;
      $dy_097 = $dy_2;
      $i_098 = $inc158;
      $ind_addr_099 = $inc;
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _selfLeft($edges, $ind, $cnt, $stepx, $sizey, $sinfo) {
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $stepx = +$stepx;
  $sizey = +$sizey;
  $sinfo = $sinfo | 0;
  var $points = 0, $tmp = 0, $tmp74 = 0, $tmp83 = 0, $tmp90 = 0, $tmp98 = 0, $arrayidx = 0, $0 = 0, $tail = 0, $1 = 0, $div = 0.0, $conv = 0.0, $div1 = 0.0, $cmp = 0, $cond = 0.0, $np_sroa_0_0__idx = 0, $np_sroa_0_0_copyload = 0.0, $np_sroa_1_8__idx32 = 0, $np_sroa_1_8_copyload = 0.0, $tp_sroa_0_0__idx48 = 0, $tp_sroa_0_0_copyload49 = 0.0, $tp_sroa_1_8__idx55 = 0, $tp_sroa_1_8_copyload56 = 0.0, $add = 0.0, $add6 = 0.0, $hp_sroa_0_0__idx36 = 0, $hp_sroa_0_0_copyload37 = 0.0, $hp_sroa_1_8__idx43 = 0, $hp_sroa_1_8_copyload44 = 0.0, $add11 = 0.0, $add14 = 0.0, $lw = 0, $2 = 0.0, $add21 = 0.0, $sub = 0.0, $mul = 0.0, $add35 = 0.0, $sub37 = 0.0, $mul38 = 0.0, $cmp5093 = 0, $cmp39 = 0, $cmp23 = 0, $cmp17 = 0, $_mul38 = 0.0, $cond33 = 0.0, $_ = 0.0, $mul57 = 0.0, $arrayidx60 = 0, $tp_sroa_0_0__idx = 0, $tp_sroa_1_8__idx52 = 0, $arrayidx62 = 0, $3 = 0, $4 = 0, $arrayidx69 = 0, $5 = 0, $6 = 0, $arrayidx76 = 0, $add81 = 0.0, $div82 = 0.0, $7 = 0, $8 = 0, $arrayidx85 = 0, $9 = 0, $10 = 0, $arrayidx92 = 0, $11 = 0, $12 = 0, $hp_sroa_0_0__idx = 0, $hp_sroa_1_8__idx38 = 0, $ind_addr_099 = 0, $i_098 = 0, $dy_097 = 0.0, $dx_096 = 0.0, $tx_095 = 0.0, $hx_094 = 0.0, $inc = 0, $arrayidx52 = 0, $13 = 0, $add53 = 0.0, $add54 = 0.0, $add55 = 0.0, $add58 = 0.0, $div64 = 0.0, $sub65 = 0.0, $add67 = 0.0, $sub71 = 0.0, $sub89 = 0.0, $div94 = 0.0, $sub95 = 0.0, $label = 0, $14 = 0, $tobool = 0, $tail103 = 0, $15 = 0, $graph = 0, $16 = 0, $rankdir = 0, $17 = 0, $and105 = 0, $tobool106 = 0, $dimen = 0, $y110 = 0, $x114 = 0, $x119 = 0, $y123 = 0, $width_0_in = 0, $height_0_in = 0, $height_0 = 0.0, $width_0 = 0.0, $18 = 0.0, $sub128 = 0.0, $div129 = 0.0, $sub130 = 0.0, $19 = 0, $x133 = 0, $20 = 0.0, $21 = 0, $y140 = 0, $22 = 0, $set = 0, $cmp143 = 0, $sub146 = 0.0, $add147 = 0.0, $dx_1 = 0.0, $add149 = 0.0, $cmp150 = 0, $sub153 = 0.0, $add154 = 0.0, $dx_2 = 0.0, $dy_1 = 0.0, $head = 0, $23 = 0, $inc157 = 0, $cmp50 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16080 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $points = __stackBase__ | 0;
    $tmp = __stackBase__ + 16e3 | 0;
    $tmp74 = __stackBase__ + 16016 | 0;
    $tmp83 = __stackBase__ + 16032 | 0;
    $tmp90 = __stackBase__ + 16048 | 0;
    $tmp98 = __stackBase__ + 16064 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tail = $0 + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $div = $sizey * .5;
    $conv = +($cnt | 0);
    $div1 = $div / $conv;
    $cmp = $div1 > 2.0;
    $cond = $cmp ? $div1 : 2.0;
    $np_sroa_0_0__idx = $1 + 32 | 0;
    $np_sroa_0_0_copyload = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $np_sroa_1_8__idx32 = $1 + 40 | 0;
    $np_sroa_1_8_copyload = +HEAPF64[$np_sroa_1_8__idx32 >> 3];
    $tp_sroa_0_0__idx48 = $0 + 32 | 0;
    $tp_sroa_0_0_copyload49 = +HEAPF64[$tp_sroa_0_0__idx48 >> 3];
    $tp_sroa_1_8__idx55 = $0 + 40 | 0;
    $tp_sroa_1_8_copyload56 = +HEAPF64[$tp_sroa_1_8__idx55 >> 3];
    $add = $np_sroa_0_0_copyload + $tp_sroa_0_0_copyload49;
    $add6 = $np_sroa_1_8_copyload + $tp_sroa_1_8_copyload56;
    $hp_sroa_0_0__idx36 = $0 + 72 | 0;
    $hp_sroa_0_0_copyload37 = +HEAPF64[$hp_sroa_0_0__idx36 >> 3];
    $hp_sroa_1_8__idx43 = $0 + 80 | 0;
    $hp_sroa_1_8_copyload44 = +HEAPF64[$hp_sroa_1_8__idx43 >> 3];
    $add11 = $np_sroa_0_0_copyload + $hp_sroa_0_0_copyload37;
    $add14 = $np_sroa_1_8_copyload + $hp_sroa_1_8_copyload44;
    $lw = $1 + 104 | 0;
    $2 = +HEAPF64[$lw >> 3];
    $add21 = $add + $2;
    $sub = $add21 - $np_sroa_0_0_copyload;
    $mul = $sub * 3.0;
    $add35 = $add11 + $2;
    $sub37 = $add35 - $np_sroa_0_0_copyload;
    $mul38 = $sub37 * 3.0;
    $cmp5093 = ($cnt | 0) > 0;
    if ($cmp5093) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $cmp39 = $2 < $mul38;
    $cmp23 = $2 < $mul;
    $cmp17 = $add6 < $add14;
    $_mul38 = $cmp39 ? $2 : $mul38;
    $cond33 = $cmp23 ? $2 : $mul;
    $_ = $cmp17 ? -1.0 : 1.0;
    $mul57 = $cond * $_;
    $arrayidx60 = $points | 0;
    $tp_sroa_0_0__idx = $points | 0;
    $tp_sroa_1_8__idx52 = $points + 8 | 0;
    $arrayidx62 = $points + 16 | 0;
    $3 = $arrayidx62;
    $4 = $tmp;
    $arrayidx69 = $points + 32 | 0;
    $5 = $arrayidx69;
    $6 = $tmp74;
    $arrayidx76 = $points + 48 | 0;
    $add81 = $add6 + $add14;
    $div82 = $add81 * .5;
    $7 = $arrayidx76;
    $8 = $tmp83;
    $arrayidx85 = $points + 64 | 0;
    $9 = $arrayidx85;
    $10 = $tmp90;
    $arrayidx92 = $points + 80 | 0;
    $11 = $arrayidx92;
    $12 = $tmp98;
    $hp_sroa_0_0__idx = $points + 96 | 0;
    $hp_sroa_1_8__idx38 = $points + 104 | 0;
    $hx_094 = $_mul38;
    $tx_095 = $cond33;
    $dx_096 = $2;
    $dy_097 = 0.0;
    $i_098 = 0;
    $ind_addr_099 = $ind;
    label = 4;
    break;
   case 4:
    $inc = $ind_addr_099 + 1 | 0;
    $arrayidx52 = $edges + ($ind_addr_099 << 2) | 0;
    $13 = HEAP32[$arrayidx52 >> 2] | 0;
    $add53 = $dx_096 + $stepx;
    $add54 = $tx_095 + $stepx;
    $add55 = $hx_094 + $stepx;
    $add58 = $mul57 + $dy_097;
    HEAPF64[$tp_sroa_0_0__idx >> 3] = $add;
    HEAPF64[$tp_sroa_1_8__idx52 >> 3] = $add6;
    $div64 = $add54 / 3.0;
    $sub65 = $add - $div64;
    $add67 = $add6 + $add58;
    _pointfof805($tmp, $sub65, $add67);
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $sub71 = $np_sroa_0_0_copyload - $add53;
    _pointfof805($tmp74, $sub71, $add67);
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    _pointfof805($tmp83, $sub71, $div82);
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $sub89 = $add14 - $add58;
    _pointfof805($tmp90, $sub71, $sub89);
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $div94 = $add55 / 3.0;
    $sub95 = $add11 - $div94;
    _pointfof805($tmp98, $sub95, $sub89);
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    HEAPF64[$hp_sroa_0_0__idx >> 3] = $add11;
    HEAPF64[$hp_sroa_1_8__idx38 >> 3] = $add14;
    $label = $13 + 112 | 0;
    $14 = HEAP32[$label >> 2] | 0;
    $tobool = ($14 | 0) == 0;
    if ($tobool) {
      $dy_1 = $add58;
      $dx_2 = $add53;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $tail103 = $13 + 16 | 0;
    $15 = HEAP32[$tail103 >> 2] | 0;
    $graph = $15 + 20 | 0;
    $16 = HEAP32[$graph >> 2] | 0;
    $rankdir = $16 + 156 | 0;
    $17 = HEAP32[$rankdir >> 2] | 0;
    $and105 = $17 & 1;
    $tobool106 = ($and105 | 0) == 0;
    $dimen = $14 + 24 | 0;
    if ($tobool106) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $y110 = $14 + 32 | 0;
    $x114 = $dimen | 0;
    $height_0_in = $x114;
    $width_0_in = $y110;
    label = 8;
    break;
   case 7:
    $x119 = $dimen | 0;
    $y123 = $14 + 32 | 0;
    $height_0_in = $y123;
    $width_0_in = $x119;
    label = 8;
    break;
   case 8:
    $height_0 = +HEAPF64[$height_0_in >> 3];
    $width_0 = +HEAPF64[$width_0_in >> 3];
    $18 = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $sub128 = $18 - $add53;
    $div129 = $width_0 * .5;
    $sub130 = $sub128 - $div129;
    $19 = HEAP32[$label >> 2] | 0;
    $x133 = $19 + 56 | 0;
    HEAPF64[$x133 >> 3] = $sub130;
    $20 = +HEAPF64[$np_sroa_1_8__idx32 >> 3];
    $21 = HEAP32[$label >> 2] | 0;
    $y140 = $21 + 64 | 0;
    HEAPF64[$y140 >> 3] = $20;
    $22 = HEAP32[$label >> 2] | 0;
    $set = $22 + 81 | 0;
    HEAP8[$set] = 1;
    $cmp143 = $width_0 > $stepx;
    if ($cmp143) {
      label = 9;
      break;
    } else {
      $dx_1 = $add53;
      label = 10;
      break;
    }
   case 9:
    $sub146 = $width_0 - $stepx;
    $add147 = $add53 + $sub146;
    $dx_1 = $add147;
    label = 10;
    break;
   case 10:
    $add149 = $cond + $add58;
    $cmp150 = $add149 < $height_0;
    if ($cmp150) {
      label = 11;
      break;
    } else {
      $dy_1 = $add58;
      $dx_2 = $dx_1;
      label = 12;
      break;
    }
   case 11:
    $sub153 = $height_0 - $cond;
    $add154 = $add58 + $sub153;
    $dy_1 = $add154;
    $dx_2 = $dx_1;
    label = 12;
    break;
   case 12:
    $head = $13 + 12 | 0;
    $23 = HEAP32[$head >> 2] | 0;
    _clip_and_install($13, $23, $arrayidx60, 7, $sinfo);
    $inc157 = $i_098 + 1 | 0;
    $cmp50 = ($inc157 | 0) < ($cnt | 0);
    if ($cmp50) {
      $hx_094 = $add55;
      $tx_095 = $add54;
      $dx_096 = $dx_2;
      $dy_097 = $dy_1;
      $i_098 = $inc157;
      $ind_addr_099 = $inc;
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _selfBottom($edges, $ind, $cnt, $sizex, $stepy, $sinfo) {
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $sizex = +$sizex;
  $stepy = +$stepy;
  $sinfo = $sinfo | 0;
  var $points = 0, $tmp = 0, $tmp75 = 0, $tmp84 = 0, $tmp91 = 0, $tmp99 = 0, $arrayidx = 0, $0 = 0, $tail = 0, $1 = 0, $div = 0.0, $conv = 0.0, $div1 = 0.0, $cmp = 0, $cond = 0.0, $np_sroa_0_0__idx = 0, $np_sroa_0_0_copyload = 0.0, $np_sroa_1_8__idx61 = 0, $np_sroa_1_8_copyload = 0.0, $tp_sroa_0_0__idx78 = 0, $tp_sroa_0_0_copyload79 = 0.0, $tp_sroa_1_8__idx84 = 0, $tp_sroa_1_8_copyload85 = 0.0, $add = 0.0, $add6 = 0.0, $hp_sroa_0_0__idx66 = 0, $hp_sroa_0_0_copyload67 = 0.0, $hp_sroa_1_8__idx72 = 0, $hp_sroa_1_8_copyload73 = 0.0, $add11 = 0.0, $add14 = 0.0, $ht = 0, $2 = 0.0, $div20 = 0.0, $add22 = 0.0, $sub = 0.0, $mul = 0.0, $add36 = 0.0, $sub38 = 0.0, $mul39 = 0.0, $cmp5193 = 0, $cmp40 = 0, $cmp24 = 0, $cmp17 = 0, $div20_mul39 = 0.0, $cond34 = 0.0, $_ = 0.0, $mul58 = 0.0, $arrayidx61 = 0, $tp_sroa_0_0__idx = 0, $tp_sroa_1_8__idx80 = 0, $arrayidx63 = 0, $3 = 0, $4 = 0, $arrayidx70 = 0, $5 = 0, $6 = 0, $arrayidx77 = 0, $add80 = 0.0, $div81 = 0.0, $7 = 0, $8 = 0, $arrayidx86 = 0, $9 = 0, $10 = 0, $arrayidx93 = 0, $11 = 0, $12 = 0, $hp_sroa_0_0__idx = 0, $hp_sroa_1_8__idx68 = 0, $dy_099 = 0.0, $dx_098 = 0.0, $ty_097 = 0.0, $hy_096 = 0.0, $i_095 = 0, $ind_addr_094 = 0, $inc = 0, $arrayidx53 = 0, $13 = 0, $add54 = 0.0, $add55 = 0.0, $add56 = 0.0, $add59 = 0.0, $add65 = 0.0, $div67 = 0.0, $sub68 = 0.0, $sub74 = 0.0, $sub88 = 0.0, $div97 = 0.0, $sub98 = 0.0, $label = 0, $14 = 0, $tobool = 0, $tail104 = 0, $15 = 0, $graph = 0, $16 = 0, $rankdir = 0, $17 = 0, $and106 = 0, $tobool107 = 0, $dimen = 0, $y111 = 0, $x115 = 0, $x120 = 0, $y124 = 0, $width_0_in = 0, $height_0_in = 0, $height_0 = 0.0, $width_0 = 0.0, $18 = 0.0, $sub129 = 0.0, $div130 = 0.0, $sub131 = 0.0, $19 = 0, $y134 = 0, $20 = 0.0, $21 = 0, $x141 = 0, $22 = 0, $set = 0, $cmp144 = 0, $sub147 = 0.0, $add148 = 0.0, $dy_1 = 0.0, $add150 = 0.0, $cmp151 = 0, $sub154 = 0.0, $add155 = 0.0, $dx_1 = 0.0, $dy_2 = 0.0, $head = 0, $23 = 0, $inc158 = 0, $cmp51 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16080 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $points = __stackBase__ | 0;
    $tmp = __stackBase__ + 16e3 | 0;
    $tmp75 = __stackBase__ + 16016 | 0;
    $tmp84 = __stackBase__ + 16032 | 0;
    $tmp91 = __stackBase__ + 16048 | 0;
    $tmp99 = __stackBase__ + 16064 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tail = $0 + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $div = $sizex * .5;
    $conv = +($cnt | 0);
    $div1 = $div / $conv;
    $cmp = $div1 > 2.0;
    $cond = $cmp ? $div1 : 2.0;
    $np_sroa_0_0__idx = $1 + 32 | 0;
    $np_sroa_0_0_copyload = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $np_sroa_1_8__idx61 = $1 + 40 | 0;
    $np_sroa_1_8_copyload = +HEAPF64[$np_sroa_1_8__idx61 >> 3];
    $tp_sroa_0_0__idx78 = $0 + 32 | 0;
    $tp_sroa_0_0_copyload79 = +HEAPF64[$tp_sroa_0_0__idx78 >> 3];
    $tp_sroa_1_8__idx84 = $0 + 40 | 0;
    $tp_sroa_1_8_copyload85 = +HEAPF64[$tp_sroa_1_8__idx84 >> 3];
    $add = $np_sroa_0_0_copyload + $tp_sroa_0_0_copyload79;
    $add6 = $np_sroa_1_8_copyload + $tp_sroa_1_8_copyload85;
    $hp_sroa_0_0__idx66 = $0 + 72 | 0;
    $hp_sroa_0_0_copyload67 = +HEAPF64[$hp_sroa_0_0__idx66 >> 3];
    $hp_sroa_1_8__idx72 = $0 + 80 | 0;
    $hp_sroa_1_8_copyload73 = +HEAPF64[$hp_sroa_1_8__idx72 >> 3];
    $add11 = $np_sroa_0_0_copyload + $hp_sroa_0_0_copyload67;
    $add14 = $np_sroa_1_8_copyload + $hp_sroa_1_8_copyload73;
    $ht = $1 + 96 | 0;
    $2 = +HEAPF64[$ht >> 3];
    $div20 = $2 * .5;
    $add22 = $add6 + $div20;
    $sub = $add22 - $np_sroa_1_8_copyload;
    $mul = $sub * 3.0;
    $add36 = $add14 + $div20;
    $sub38 = $add36 - $np_sroa_1_8_copyload;
    $mul39 = $sub38 * 3.0;
    $cmp5193 = ($cnt | 0) > 0;
    if ($cmp5193) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $cmp40 = $div20 < $mul39;
    $cmp24 = $div20 < $mul;
    $cmp17 = $add < $add11;
    $div20_mul39 = $cmp40 ? $div20 : $mul39;
    $cond34 = $cmp24 ? $div20 : $mul;
    $_ = $cmp17 ? -1.0 : 1.0;
    $mul58 = $cond * $_;
    $arrayidx61 = $points | 0;
    $tp_sroa_0_0__idx = $points | 0;
    $tp_sroa_1_8__idx80 = $points + 8 | 0;
    $arrayidx63 = $points + 16 | 0;
    $3 = $arrayidx63;
    $4 = $tmp;
    $arrayidx70 = $points + 32 | 0;
    $5 = $arrayidx70;
    $6 = $tmp75;
    $arrayidx77 = $points + 48 | 0;
    $add80 = $add + $add11;
    $div81 = $add80 * .5;
    $7 = $arrayidx77;
    $8 = $tmp84;
    $arrayidx86 = $points + 64 | 0;
    $9 = $arrayidx86;
    $10 = $tmp91;
    $arrayidx93 = $points + 80 | 0;
    $11 = $arrayidx93;
    $12 = $tmp99;
    $hp_sroa_0_0__idx = $points + 96 | 0;
    $hp_sroa_1_8__idx68 = $points + 104 | 0;
    $ind_addr_094 = $ind;
    $i_095 = 0;
    $hy_096 = $div20_mul39;
    $ty_097 = $cond34;
    $dx_098 = 0.0;
    $dy_099 = $div20;
    label = 4;
    break;
   case 4:
    $inc = $ind_addr_094 + 1 | 0;
    $arrayidx53 = $edges + ($ind_addr_094 << 2) | 0;
    $13 = HEAP32[$arrayidx53 >> 2] | 0;
    $add54 = $dy_099 + $stepy;
    $add55 = $ty_097 + $stepy;
    $add56 = $hy_096 + $stepy;
    $add59 = $mul58 + $dx_098;
    HEAPF64[$tp_sroa_0_0__idx >> 3] = $add;
    HEAPF64[$tp_sroa_1_8__idx80 >> 3] = $add6;
    $add65 = $add + $add59;
    $div67 = $add55 / 3.0;
    $sub68 = $add6 - $div67;
    _pointfof805($tmp, $add65, $sub68);
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $sub74 = $np_sroa_1_8_copyload - $add54;
    _pointfof805($tmp75, $add65, $sub74);
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    _pointfof805($tmp84, $div81, $sub74);
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $sub88 = $add11 - $add59;
    _pointfof805($tmp91, $sub88, $sub74);
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $div97 = $add56 / 3.0;
    $sub98 = $add14 - $div97;
    _pointfof805($tmp99, $sub88, $sub98);
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    HEAPF64[$hp_sroa_0_0__idx >> 3] = $add11;
    HEAPF64[$hp_sroa_1_8__idx68 >> 3] = $add14;
    $label = $13 + 112 | 0;
    $14 = HEAP32[$label >> 2] | 0;
    $tobool = ($14 | 0) == 0;
    if ($tobool) {
      $dy_2 = $add54;
      $dx_1 = $add59;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $tail104 = $13 + 16 | 0;
    $15 = HEAP32[$tail104 >> 2] | 0;
    $graph = $15 + 20 | 0;
    $16 = HEAP32[$graph >> 2] | 0;
    $rankdir = $16 + 156 | 0;
    $17 = HEAP32[$rankdir >> 2] | 0;
    $and106 = $17 & 1;
    $tobool107 = ($and106 | 0) == 0;
    $dimen = $14 + 24 | 0;
    if ($tobool107) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $y111 = $14 + 32 | 0;
    $x115 = $dimen | 0;
    $height_0_in = $x115;
    $width_0_in = $y111;
    label = 8;
    break;
   case 7:
    $x120 = $dimen | 0;
    $y124 = $14 + 32 | 0;
    $height_0_in = $y124;
    $width_0_in = $x120;
    label = 8;
    break;
   case 8:
    $height_0 = +HEAPF64[$height_0_in >> 3];
    $width_0 = +HEAPF64[$width_0_in >> 3];
    $18 = +HEAPF64[$np_sroa_1_8__idx61 >> 3];
    $sub129 = $18 - $add54;
    $div130 = $height_0 * .5;
    $sub131 = $sub129 - $div130;
    $19 = HEAP32[$label >> 2] | 0;
    $y134 = $19 + 64 | 0;
    HEAPF64[$y134 >> 3] = $sub131;
    $20 = +HEAPF64[$np_sroa_0_0__idx >> 3];
    $21 = HEAP32[$label >> 2] | 0;
    $x141 = $21 + 56 | 0;
    HEAPF64[$x141 >> 3] = $20;
    $22 = HEAP32[$label >> 2] | 0;
    $set = $22 + 81 | 0;
    HEAP8[$set] = 1;
    $cmp144 = $height_0 > $stepy;
    if ($cmp144) {
      label = 9;
      break;
    } else {
      $dy_1 = $add54;
      label = 10;
      break;
    }
   case 9:
    $sub147 = $height_0 - $stepy;
    $add148 = $add54 + $sub147;
    $dy_1 = $add148;
    label = 10;
    break;
   case 10:
    $add150 = $cond + $add59;
    $cmp151 = $add150 < $width_0;
    if ($cmp151) {
      label = 11;
      break;
    } else {
      $dy_2 = $dy_1;
      $dx_1 = $add59;
      label = 12;
      break;
    }
   case 11:
    $sub154 = $width_0 - $cond;
    $add155 = $add59 + $sub154;
    $dy_2 = $dy_1;
    $dx_1 = $add155;
    label = 12;
    break;
   case 12:
    $head = $13 + 12 | 0;
    $23 = HEAP32[$head >> 2] | 0;
    _clip_and_install($13, $23, $arrayidx61, 7, $sinfo);
    $inc158 = $i_095 + 1 | 0;
    $cmp51 = ($inc158 | 0) < ($cnt | 0);
    if ($cmp51) {
      $ind_addr_094 = $inc;
      $i_095 = $inc158;
      $hy_096 = $add56;
      $ty_097 = $add55;
      $dx_098 = $dx_1;
      $dy_099 = $dy_2;
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _makeSelfEdge($P, $edges, $ind, $cnt, $sizex, $sizey, $sinfo) {
  $P = $P | 0;
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $sizex = +$sizex;
  $sizey = +$sizey;
  $sinfo = $sinfo | 0;
  var $arrayidx = 0, $0 = 0, $defined = 0, $1 = 0, $tobool = 0, $defined2 = 0, $2 = 0, $tobool3 = 0, $side = 0, $3 = 0, $conv = 0, $and = 0, $tobool6 = 0, $side10 = 0, $4 = 0, $and12 = 0, $tobool13 = 0, $cmp = 0, $and29 = 0, $tobool30 = 0, $5 = 0, $conv34 = 0, $and35 = 0, $tobool36 = 0, $side40 = 0, $6 = 0, $and42 = 0, $tobool43 = 0, $7 = 0, $and49 = 0, $tobool50 = 0, $side54 = 0, $8 = 0, $and56 = 0, $tobool57 = 0, $and65 = 0, $tobool66 = 0, $and73 = 0, $tobool74 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $defined = $0 + 60 | 0;
    $1 = HEAP8[$defined] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $defined2 = $0 + 100 | 0;
    $2 = HEAP8[$defined2] | 0;
    $tobool3 = $2 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $side = $0 + 65 | 0;
    $3 = HEAP8[$side] | 0;
    $conv = $3 & 255;
    $and = $conv & 8;
    $tobool6 = ($and | 0) == 0;
    if ($tobool6) {
      label = 5;
      break;
    } else {
      label = 9;
      break;
    }
   case 5:
    $side10 = $0 + 105 | 0;
    $4 = HEAP8[$side10] | 0;
    $and12 = $4 & 8;
    $tobool13 = $and12 << 24 >> 24 == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $cmp = $3 << 24 >> 24 == $4 << 24 >> 24;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $and29 = $conv & 5;
    $tobool30 = ($and29 | 0) == 0;
    if ($tobool30) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    _selfRight($edges, $ind, $cnt, $sizex, $sizey, $sinfo);
    label = 20;
    break;
   case 9:
    $5 = HEAP8[$side] | 0;
    $conv34 = $5 & 255;
    $and35 = $conv34 & 8;
    $tobool36 = ($and35 | 0) == 0;
    if ($tobool36) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $side40 = $0 + 105 | 0;
    $6 = HEAP8[$side40] | 0;
    $and42 = $6 & 8;
    $tobool43 = $and42 << 24 >> 24 == 0;
    if ($tobool43) {
      label = 15;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $7 = HEAP8[$side] | 0;
    $and49 = $7 & 2;
    $tobool50 = $and49 << 24 >> 24 == 0;
    if ($tobool50) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $side54 = $0 + 105 | 0;
    $8 = HEAP8[$side54] | 0;
    $and56 = $8 & 2;
    $tobool57 = $and56 << 24 >> 24 == 0;
    if ($tobool57) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _selfTop($edges, $ind, $cnt, $sizex, $sizey, $sinfo);
    label = 20;
    break;
   case 14:
    _selfLeft($edges, $ind, $cnt, $sizex, $sizey, $sinfo);
    label = 20;
    break;
   case 15:
    $and65 = $conv34 & 4;
    $tobool66 = ($and65 | 0) == 0;
    if ($tobool66) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _selfTop($edges, $ind, $cnt, $sizex, $sizey, $sinfo);
    label = 20;
    break;
   case 17:
    $and73 = $conv34 & 1;
    $tobool74 = ($and73 | 0) == 0;
    if ($tobool74) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    _selfBottom($edges, $ind, $cnt, $sizex, $sizey, $sinfo);
    label = 20;
    break;
   case 19:
    ___assert_func(96712, 1114, 164128, 137288);
   case 20:
    return;
  }
}
function _pointfof805($agg_result, $x, $y) {
  $agg_result = $agg_result | 0;
  $x = +$x;
  $y = +$y;
  HEAPF64[$agg_result >> 3] = $x;
  HEAPF64[$agg_result + 8 >> 3] = $y;
  return;
}
function _place_portlabel($e, $head_p) {
  $e = $e | 0;
  $head_p = $head_p | 0;
  var $c = 0, $tmp = 0, $tmp46 = 0, $edge_type = 0, $0 = 0, $cmp = 0, $tobool = 0, $head_label = 0, $tail_label = 0, $cond_in = 0, $cond = 0, $call = 0, $list = 0, $1 = 0, $sflag = 0, $2 = 0, $tobool7 = 0, $pe_sroa_0_0__idx26 = 0, $pe_sroa_0_0_copyload27 = 0.0, $pe_sroa_1_8__idx34 = 0, $pe_sroa_1_8_copyload35 = 0.0, $list9 = 0, $3 = 0, $pf_sroa_0_0__idx12 = 0, $pf_sroa_0_0_copyload13 = 0.0, $pf_sroa_1_8__idx19 = 0, $pf_sroa_1_8_copyload20 = 0.0, $list11 = 0, $4 = 0, $pe_sroa_1_8__idx32 = 0, $pe_sroa_0_0__idx24 = 0, $pe_sroa_1_8_copyload33 = 0.0, $pe_sroa_0_0_copyload25 = 0.0, $5 = 0, $6 = 0, $arrayidx15_1 = 0, $7 = 0, $arrayidx17_1 = 0, $8 = 0, $9 = 0, $arrayidx15_2 = 0, $10 = 0, $arrayidx17_2 = 0, $11 = 0, $12 = 0, $arrayidx15_3 = 0, $13 = 0, $arrayidx17_3 = 0, $14 = 0, $15 = 0, $arraydecay = 0, $pf_sroa_0_0__idx10 = 0, $pf_sroa_0_0_copyload11 = 0.0, $pf_sroa_1_8__idx17 = 0, $pf_sroa_1_8_copyload18 = 0.0, $size = 0, $16 = 0, $sub = 0, $list20 = 0, $17 = 0, $arrayidx21 = 0, $eflag = 0, $18 = 0, $tobool22 = 0, $pe_sroa_0_0__idx22 = 0, $pe_sroa_0_0_copyload23 = 0.0, $pe_sroa_1_8__idx30 = 0, $pe_sroa_1_8_copyload31 = 0.0, $size24 = 0, $19 = 0, $sub25 = 0, $list26 = 0, $20 = 0, $pf_sroa_0_0__idx8 = 0, $pf_sroa_0_0_copyload9 = 0.0, $pf_sroa_1_8__idx15 = 0, $pf_sroa_1_8_copyload16 = 0.0, $size29 = 0, $21 = 0, $sub30 = 0, $list31 = 0, $22 = 0, $pe_sroa_1_8__idx29 = 0, $pe_sroa_0_0__idx = 0, $pe_sroa_1_8_copyload = 0.0, $pe_sroa_0_0_copyload = 0.0, $23 = 0, $add = 0, $24 = 0, $arrayidx41 = 0, $25 = 0, $26 = 0, $arrayidx37_1 = 0, $27 = 0, $add_1 = 0, $28 = 0, $arrayidx41_1 = 0, $29 = 0, $30 = 0, $arrayidx37_2 = 0, $31 = 0, $add_2 = 0, $32 = 0, $arrayidx41_2 = 0, $33 = 0, $34 = 0, $arrayidx37_3 = 0, $35 = 0, $add_3 = 0, $36 = 0, $arrayidx41_3 = 0, $37 = 0, $38 = 0, $arraydecay45 = 0, $pf_sroa_0_0__idx = 0, $pf_sroa_0_0_copyload = 0.0, $pf_sroa_1_8__idx14 = 0, $pf_sroa_1_8_copyload = 0.0, $pe_sroa_1_0 = 0.0, $pe_sroa_0_0 = 0.0, $pf_sroa_1_0 = 0.0, $pf_sroa_0_0 = 0.0, $sub50 = 0.0, $sub52 = 0.0, $call53 = 0.0, $39 = 0, $40 = 0, $call54 = 0.0, $div = 0.0, $mul = 0.0, $add55 = 0.0, $41 = 0, $call56 = 0.0, $mul57 = 0.0, $call59 = 0.0, $mul60 = 0.0, $add61 = 0.0, $x62 = 0, $call64 = 0.0, $mul65 = 0.0, $add66 = 0.0, $y68 = 0, $set = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $c = __stackBase__ | 0;
    $tmp = __stackBase__ + 64 | 0;
    $tmp46 = __stackBase__ + 80 | 0;
    $edge_type = $e + 128 | 0;
    $0 = HEAP8[$edge_type] | 0;
    $cmp = $0 << 24 >> 24 == 6;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool = $head_p << 24 >> 24 == 0;
    $head_label = $e + 116 | 0;
    $tail_label = $e + 120 | 0;
    $cond_in = $tobool ? $tail_label : $head_label;
    $cond = HEAP32[$cond_in >> 2] | 0;
    $call = _getsplinepoints($e) | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $list = $call | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $sflag = $1 + 8 | 0;
    $2 = HEAP32[$sflag >> 2] | 0;
    $tobool7 = ($2 | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $pe_sroa_0_0__idx26 = $1 + 16 | 0;
    $pe_sroa_0_0_copyload27 = +HEAPF64[$pe_sroa_0_0__idx26 >> 3];
    $pe_sroa_1_8__idx34 = $1 + 24 | 0;
    $pe_sroa_1_8_copyload35 = +HEAPF64[$pe_sroa_1_8__idx34 >> 3];
    $list9 = $1 | 0;
    $3 = HEAP32[$list9 >> 2] | 0;
    $pf_sroa_0_0__idx12 = $3 | 0;
    $pf_sroa_0_0_copyload13 = +HEAPF64[$pf_sroa_0_0__idx12 >> 3];
    $pf_sroa_1_8__idx19 = $3 + 8 | 0;
    $pf_sroa_1_8_copyload20 = +HEAPF64[$pf_sroa_1_8__idx19 >> 3];
    $pf_sroa_0_0 = $pf_sroa_0_0_copyload13;
    $pf_sroa_1_0 = $pf_sroa_1_8_copyload20;
    $pe_sroa_0_0 = $pe_sroa_0_0_copyload27;
    $pe_sroa_1_0 = $pe_sroa_1_8_copyload35;
    label = 10;
    break;
   case 6:
    $list11 = $1 | 0;
    $4 = HEAP32[$list11 >> 2] | 0;
    $pe_sroa_1_8__idx32 = $4 + 8 | 0;
    $pe_sroa_0_0__idx24 = $4 | 0;
    $pe_sroa_1_8_copyload33 = +HEAPF64[$pe_sroa_1_8__idx32 >> 3];
    $pe_sroa_0_0_copyload25 = +HEAPF64[$pe_sroa_0_0__idx24 >> 3];
    $5 = $c;
    $6 = $4;
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    $arrayidx15_1 = $c + 16 | 0;
    $7 = HEAP32[$list11 >> 2] | 0;
    $arrayidx17_1 = $7 + 16 | 0;
    $8 = $arrayidx15_1;
    $9 = $arrayidx17_1;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $arrayidx15_2 = $c + 32 | 0;
    $10 = HEAP32[$list11 >> 2] | 0;
    $arrayidx17_2 = $10 + 32 | 0;
    $11 = $arrayidx15_2;
    $12 = $arrayidx17_2;
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    $arrayidx15_3 = $c + 48 | 0;
    $13 = HEAP32[$list11 >> 2] | 0;
    $arrayidx17_3 = $13 + 48 | 0;
    $14 = $arrayidx15_3;
    $15 = $arrayidx17_3;
    HEAP32[$14 >> 2] = HEAP32[$15 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$15 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$15 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$15 + 12 >> 2] | 0;
    $arraydecay = $c | 0;
    _Bezier($tmp, $arraydecay, 3, .1, 0, 0);
    $pf_sroa_0_0__idx10 = $tmp | 0;
    $pf_sroa_0_0_copyload11 = +HEAPF64[$pf_sroa_0_0__idx10 >> 3];
    $pf_sroa_1_8__idx17 = $tmp + 8 | 0;
    $pf_sroa_1_8_copyload18 = +HEAPF64[$pf_sroa_1_8__idx17 >> 3];
    $pf_sroa_0_0 = $pf_sroa_0_0_copyload11;
    $pf_sroa_1_0 = $pf_sroa_1_8_copyload18;
    $pe_sroa_0_0 = $pe_sroa_0_0_copyload25;
    $pe_sroa_1_0 = $pe_sroa_1_8_copyload33;
    label = 10;
    break;
   case 7:
    $size = $call + 4 | 0;
    $16 = HEAP32[$size >> 2] | 0;
    $sub = $16 - 1 | 0;
    $list20 = $call | 0;
    $17 = HEAP32[$list20 >> 2] | 0;
    $arrayidx21 = $17 + ($sub * 48 & -1) | 0;
    $eflag = $17 + ($sub * 48 & -1) + 12 | 0;
    $18 = HEAP32[$eflag >> 2] | 0;
    $tobool22 = ($18 | 0) == 0;
    if ($tobool22) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $pe_sroa_0_0__idx22 = $17 + ($sub * 48 & -1) + 32 | 0;
    $pe_sroa_0_0_copyload23 = +HEAPF64[$pe_sroa_0_0__idx22 >> 3];
    $pe_sroa_1_8__idx30 = $17 + ($sub * 48 & -1) + 40 | 0;
    $pe_sroa_1_8_copyload31 = +HEAPF64[$pe_sroa_1_8__idx30 >> 3];
    $size24 = $17 + ($sub * 48 & -1) + 4 | 0;
    $19 = HEAP32[$size24 >> 2] | 0;
    $sub25 = $19 - 1 | 0;
    $list26 = $arrayidx21 | 0;
    $20 = HEAP32[$list26 >> 2] | 0;
    $pf_sroa_0_0__idx8 = $20 + ($sub25 << 4) | 0;
    $pf_sroa_0_0_copyload9 = +HEAPF64[$pf_sroa_0_0__idx8 >> 3];
    $pf_sroa_1_8__idx15 = $20 + ($sub25 << 4) + 8 | 0;
    $pf_sroa_1_8_copyload16 = +HEAPF64[$pf_sroa_1_8__idx15 >> 3];
    $pf_sroa_0_0 = $pf_sroa_0_0_copyload9;
    $pf_sroa_1_0 = $pf_sroa_1_8_copyload16;
    $pe_sroa_0_0 = $pe_sroa_0_0_copyload23;
    $pe_sroa_1_0 = $pe_sroa_1_8_copyload31;
    label = 10;
    break;
   case 9:
    $size29 = $17 + ($sub * 48 & -1) + 4 | 0;
    $21 = HEAP32[$size29 >> 2] | 0;
    $sub30 = $21 - 1 | 0;
    $list31 = $arrayidx21 | 0;
    $22 = HEAP32[$list31 >> 2] | 0;
    $pe_sroa_1_8__idx29 = $22 + ($sub30 << 4) + 8 | 0;
    $pe_sroa_0_0__idx = $22 + ($sub30 << 4) | 0;
    $pe_sroa_1_8_copyload = +HEAPF64[$pe_sroa_1_8__idx29 >> 3];
    $pe_sroa_0_0_copyload = +HEAPF64[$pe_sroa_0_0__idx >> 3];
    $23 = HEAP32[$size29 >> 2] | 0;
    $add = $23 - 4 | 0;
    $24 = HEAP32[$list31 >> 2] | 0;
    $arrayidx41 = $24 + ($add << 4) | 0;
    $25 = $c;
    $26 = $arrayidx41;
    HEAP32[$25 >> 2] = HEAP32[$26 >> 2] | 0;
    HEAP32[$25 + 4 >> 2] = HEAP32[$26 + 4 >> 2] | 0;
    HEAP32[$25 + 8 >> 2] = HEAP32[$26 + 8 >> 2] | 0;
    HEAP32[$25 + 12 >> 2] = HEAP32[$26 + 12 >> 2] | 0;
    $arrayidx37_1 = $c + 16 | 0;
    $27 = HEAP32[$size29 >> 2] | 0;
    $add_1 = $27 - 3 | 0;
    $28 = HEAP32[$list31 >> 2] | 0;
    $arrayidx41_1 = $28 + ($add_1 << 4) | 0;
    $29 = $arrayidx37_1;
    $30 = $arrayidx41_1;
    HEAP32[$29 >> 2] = HEAP32[$30 >> 2] | 0;
    HEAP32[$29 + 4 >> 2] = HEAP32[$30 + 4 >> 2] | 0;
    HEAP32[$29 + 8 >> 2] = HEAP32[$30 + 8 >> 2] | 0;
    HEAP32[$29 + 12 >> 2] = HEAP32[$30 + 12 >> 2] | 0;
    $arrayidx37_2 = $c + 32 | 0;
    $31 = HEAP32[$size29 >> 2] | 0;
    $add_2 = $31 - 2 | 0;
    $32 = HEAP32[$list31 >> 2] | 0;
    $arrayidx41_2 = $32 + ($add_2 << 4) | 0;
    $33 = $arrayidx37_2;
    $34 = $arrayidx41_2;
    HEAP32[$33 >> 2] = HEAP32[$34 >> 2] | 0;
    HEAP32[$33 + 4 >> 2] = HEAP32[$34 + 4 >> 2] | 0;
    HEAP32[$33 + 8 >> 2] = HEAP32[$34 + 8 >> 2] | 0;
    HEAP32[$33 + 12 >> 2] = HEAP32[$34 + 12 >> 2] | 0;
    $arrayidx37_3 = $c + 48 | 0;
    $35 = HEAP32[$size29 >> 2] | 0;
    $add_3 = $35 - 1 | 0;
    $36 = HEAP32[$list31 >> 2] | 0;
    $arrayidx41_3 = $36 + ($add_3 << 4) | 0;
    $37 = $arrayidx37_3;
    $38 = $arrayidx41_3;
    HEAP32[$37 >> 2] = HEAP32[$38 >> 2] | 0;
    HEAP32[$37 + 4 >> 2] = HEAP32[$38 + 4 >> 2] | 0;
    HEAP32[$37 + 8 >> 2] = HEAP32[$38 + 8 >> 2] | 0;
    HEAP32[$37 + 12 >> 2] = HEAP32[$38 + 12 >> 2] | 0;
    $arraydecay45 = $c | 0;
    _Bezier($tmp46, $arraydecay45, 3, .9, 0, 0);
    $pf_sroa_0_0__idx = $tmp46 | 0;
    $pf_sroa_0_0_copyload = +HEAPF64[$pf_sroa_0_0__idx >> 3];
    $pf_sroa_1_8__idx14 = $tmp46 + 8 | 0;
    $pf_sroa_1_8_copyload = +HEAPF64[$pf_sroa_1_8__idx14 >> 3];
    $pf_sroa_0_0 = $pf_sroa_0_0_copyload;
    $pf_sroa_1_0 = $pf_sroa_1_8_copyload;
    $pe_sroa_0_0 = $pe_sroa_0_0_copyload;
    $pe_sroa_1_0 = $pe_sroa_1_8_copyload;
    label = 10;
    break;
   case 10:
    $sub50 = $pf_sroa_1_0 - $pe_sroa_1_0;
    $sub52 = $pf_sroa_0_0 - $pe_sroa_0_0;
    $call53 = +Math_atan2(+$sub50, +$sub52);
    $39 = $e | 0;
    $40 = HEAP32[41930] | 0;
    $call54 = +_late_double($39, $40, -25.0, -180.0);
    $div = $call54 / 180.0;
    $mul = $div * 3.141592653589793;
    $add55 = $call53 + $mul;
    $41 = HEAP32[41928] | 0;
    $call56 = +_late_double($39, $41, 1.0, 0.0);
    $mul57 = $call56 * 10.0;
    $call59 = +Math_cos(+$add55);
    $mul60 = $mul57 * $call59;
    $add61 = $pe_sroa_0_0 + $mul60;
    $x62 = $cond + 56 | 0;
    HEAPF64[$x62 >> 3] = $add61;
    $call64 = +Math_sin(+$add55);
    $mul65 = $mul57 * $call64;
    $add66 = $pe_sroa_1_0 + $mul65;
    $y68 = $cond + 64 | 0;
    HEAPF64[$y68 >> 3] = $add66;
    $set = $cond + 81 | 0;
    HEAP8[$set] = 1;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return;
  }
}
function _canontoken($str) {
  $str = $str | 0;
  var $call = 0, $0 = 0, $cmp = 0, $add1 = 0, $1 = 0, $call2 = 0, $tobool = 0, $2 = 0, $3 = 0, $tobool57 = 0, $4 = 0, $str_pn = 0, $q_08 = 0, $incdec_ptr9 = 0, $conv = 0, $call6 = 0, $tobool7 = 0, $call10 = 0, $conv11 = 0, $c_0 = 0, $incdec_ptr13 = 0, $5 = 0, $tobool5 = 0, $q_0_lcssa = 0, $6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _strlen($str | 0) | 0;
    $0 = HEAP32[13352] | 0;
    $cmp = ($call | 0) < ($0 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add1 = $call + 11 | 0;
    HEAP32[13352] = $add1;
    $1 = HEAP32[13350] | 0;
    $call2 = _grealloc($1, $add1) | 0;
    HEAP32[13350] = $call2;
    $tobool = ($call2 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP32[13350] | 0;
    $3 = HEAP8[$str] | 0;
    $tobool57 = $3 << 24 >> 24 == 0;
    if ($tobool57) {
      $q_0_lcssa = $2;
      label = 8;
      break;
    } else {
      $q_08 = $2;
      $str_pn = $str;
      $4 = $3;
      label = 5;
      break;
    }
   case 5:
    $incdec_ptr9 = $str_pn + 1 | 0;
    $conv = $4 & 255;
    $call6 = _isupper($conv | 0) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      $c_0 = $4;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call10 = _tolower($conv | 0) | 0;
    $conv11 = $call10 & 255;
    $c_0 = $conv11;
    label = 7;
    break;
   case 7:
    $incdec_ptr13 = $q_08 + 1 | 0;
    HEAP8[$q_08] = $c_0;
    $5 = HEAP8[$incdec_ptr9] | 0;
    $tobool5 = $5 << 24 >> 24 == 0;
    if ($tobool5) {
      $q_0_lcssa = $incdec_ptr13;
      label = 8;
      break;
    } else {
      $q_08 = $incdec_ptr13;
      $str_pn = $incdec_ptr9;
      $4 = $5;
      label = 5;
      break;
    }
   case 8:
    HEAP8[$q_0_lcssa] = 0;
    $6 = HEAP32[13350] | 0;
    $retval_0 = $6;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _colorxlate($str, $color, $target_type) {
  $str = $str | 0;
  $color = $color | 0;
  $target_type = $target_type | 0;
  var $fake = 0, $H = 0, $S = 0, $V = 0, $R = 0, $G = 0, $B = 0, $C = 0, $M = 0, $Y = 0, $K = 0, $r = 0, $g = 0, $b = 0, $a = 0, $type = 0, $str_addr_0 = 0, $0 = 0, $cmp = 0, $incdec_ptr = 0, $1 = 0, $cmp3 = 0, $call = 0, $cmp5 = 0, $2 = 0, $conv7 = 0.0, $div = 0.0, $3 = 0, $conv8 = 0.0, $div9 = 0.0, $4 = 0, $conv10 = 0.0, $div11 = 0.0, $5 = 0, $conv12 = 0.0, $div13 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $arrayidx = 0, $9 = 0.0, $arrayidx16 = 0, $10 = 0.0, $arrayidx19 = 0, $arrayidx22 = 0, $11 = 0, $conv24 = 0, $rgba = 0, $arrayidx26 = 0, $12 = 0, $conv27 = 0, $arrayidx30 = 0, $13 = 0, $conv31 = 0, $arrayidx34 = 0, $14 = 0, $conv35 = 0, $arrayidx38 = 0, $15 = 0, $conv40 = 0.0, $div41 = 0.0, $16 = 0, $conv42 = 0.0, $div43 = 0.0, $17 = 0, $conv44 = 0.0, $div45 = 0.0, $18 = 0.0, $19 = 0.0, $conv46 = 0, $mul = 0, $conv47 = 0, $cmyk = 0, $arrayidx49 = 0, $20 = 0.0, $conv50 = 0, $mul51 = 0, $conv52 = 0, $arrayidx55 = 0, $21 = 0.0, $conv56 = 0, $mul57 = 0, $conv58 = 0, $arrayidx61 = 0, $22 = 0.0, $conv62 = 0, $mul63 = 0, $conv64 = 0, $arrayidx67 = 0, $23 = 0, $mul69 = 0, $div70 = 0, $rrggbbaa = 0, $arrayidx72 = 0, $24 = 0, $mul73 = 0, $div74 = 0, $arrayidx77 = 0, $25 = 0, $mul78 = 0, $div79 = 0, $arrayidx82 = 0, $26 = 0, $27 = 0, $mul83 = 0, $div84 = 0, $arrayidx87 = 0, $28 = 0, $conv89 = 0.0, $div90 = 0.0, $arrayidx92 = 0, $29 = 0, $conv93 = 0.0, $div94 = 0.0, $arrayidx97 = 0, $30 = 0, $conv98 = 0.0, $div99 = 0.0, $arrayidx102 = 0, $31 = 0, $conv103 = 0.0, $div104 = 0.0, $arrayidx107 = 0, $_pr = 0, $32 = 0, $cmp111 = 0, $conv110 = 0, $isdigittmp = 0, $isdigit = 0, $call116 = 0, $33 = 0, $cmp117 = 0, $add120 = 0, $34 = 0, $call121 = 0, $tobool122 = 0, $35 = 0, $p_0 = 0, $q_0 = 0, $incdec_ptr126 = 0, $36 = 0, $c_0 = 0, $incdec_ptr133 = 0, $37 = 0, $call134 = 0, $cmp135 = 0, $38 = 0.0, $cmp138 = 0, $cond = 0.0, $cmp140 = 0, $cond151 = 0.0, $39 = 0.0, $cmp152 = 0, $cond157 = 0.0, $cmp158 = 0, $cond169 = 0.0, $40 = 0.0, $cmp170 = 0, $cond175 = 0.0, $cmp176 = 0, $cond187 = 0.0, $41 = 0.0, $arrayidx191 = 0, $42 = 0.0, $arrayidx194 = 0, $43 = 0.0, $arrayidx197 = 0, $arrayidx200 = 0, $44 = 0.0, $45 = 0.0, $46 = 0.0, $mul202 = 0.0, $conv203 = 0, $conv204 = 0, $rgba206 = 0, $arrayidx207 = 0, $47 = 0.0, $mul208 = 0.0, $conv209 = 0, $conv210 = 0, $arrayidx213 = 0, $48 = 0.0, $mul214 = 0.0, $conv215 = 0, $conv216 = 0, $arrayidx219 = 0, $arrayidx222 = 0, $49 = 0.0, $50 = 0.0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0.0, $conv224 = 0, $mul225 = 0, $conv226 = 0, $cmyk228 = 0, $arrayidx229 = 0, $55 = 0.0, $conv230 = 0, $mul231 = 0, $conv232 = 0, $arrayidx235 = 0, $56 = 0.0, $conv236 = 0, $mul237 = 0, $conv238 = 0, $arrayidx241 = 0, $57 = 0.0, $conv242 = 0, $mul243 = 0, $conv244 = 0, $arrayidx247 = 0, $58 = 0.0, $59 = 0.0, $60 = 0.0, $mul249 = 0.0, $conv250 = 0, $rrggbbaa252 = 0, $arrayidx253 = 0, $61 = 0.0, $mul254 = 0.0, $conv255 = 0, $arrayidx258 = 0, $62 = 0.0, $mul259 = 0.0, $conv260 = 0, $arrayidx263 = 0, $63 = 0, $arrayidx266 = 0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $arrayidx270 = 0, $67 = 0.0, $arrayidx273 = 0, $68 = 0.0, $arrayidx276 = 0, $arrayidx279 = 0, $call285 = 0, $name = 0, $tobool287 = 0, $69 = 0, $cmp290 = 0, $name293 = 0, $70 = 0, $71 = 0, $72 = 0, $cmp299 = 0, $call304 = 0, $tobool305 = 0, $73 = 0, $call307 = 0, $74 = 0, $_pr99 = 0, $75 = 0, $cmp309 = 0, $h = 0, $76 = 0, $conv313 = 0.0, $div314 = 0.0, $arrayidx317 = 0, $77 = 0, $s = 0, $78 = 0, $conv318 = 0.0, $div319 = 0.0, $arrayidx322 = 0, $79 = 0, $v = 0, $80 = 0, $conv323 = 0.0, $div324 = 0.0, $arrayidx327 = 0, $81 = 0, $a328 = 0, $82 = 0, $conv329 = 0.0, $div330 = 0.0, $arrayidx333 = 0, $r335 = 0, $83 = 0, $rgba337 = 0, $arrayidx338 = 0, $84 = 0, $g339 = 0, $85 = 0, $arrayidx342 = 0, $86 = 0, $b343 = 0, $87 = 0, $arrayidx346 = 0, $88 = 0, $a347 = 0, $89 = 0, $arrayidx350 = 0, $r352 = 0, $90 = 0, $conv353 = 0, $conv354 = 0.0, $div355 = 0.0, $91 = 0, $g356 = 0, $92 = 0, $conv357 = 0, $conv358 = 0.0, $div359 = 0.0, $93 = 0, $b360 = 0, $94 = 0, $conv361 = 0, $conv362 = 0.0, $div363 = 0.0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $conv364 = 0, $mul365 = 0, $conv366 = 0, $cmyk368 = 0, $arrayidx369 = 0, $98 = 0.0, $conv370 = 0, $mul371 = 0, $conv372 = 0, $arrayidx375 = 0, $99 = 0.0, $conv376 = 0, $mul377 = 0, $conv378 = 0, $arrayidx381 = 0, $100 = 0.0, $conv382 = 0, $mul383 = 0, $conv384 = 0, $arrayidx387 = 0, $r389 = 0, $101 = 0, $conv390 = 0, $mul391 = 0, $div392 = 0, $rrggbbaa394 = 0, $arrayidx395 = 0, $102 = 0, $g396 = 0, $103 = 0, $conv397 = 0, $mul398 = 0, $div399 = 0, $arrayidx402 = 0, $104 = 0, $b403 = 0, $105 = 0, $conv404 = 0, $mul405 = 0, $div406 = 0, $arrayidx409 = 0, $106 = 0, $107 = 0, $a410 = 0, $108 = 0, $conv411 = 0, $mul412 = 0, $div413 = 0, $arrayidx416 = 0, $r418 = 0, $109 = 0, $conv419 = 0, $conv420 = 0.0, $div421 = 0.0, $arrayidx424 = 0, $110 = 0, $g425 = 0, $111 = 0, $conv426 = 0, $conv427 = 0.0, $div428 = 0.0, $arrayidx431 = 0, $112 = 0, $b432 = 0, $113 = 0, $conv433 = 0, $conv434 = 0.0, $div435 = 0.0, $arrayidx438 = 0, $114 = 0, $a439 = 0, $115 = 0, $conv440 = 0, $conv441 = 0.0, $div442 = 0.0, $arrayidx445 = 0, $arrayidx462 = 0, $116 = 0, $rgba465 = 0, $arrayidx466 = 0, $arrayidx469 = 0, $arrayidx472 = 0, $arrayidx475 = 0, $117 = 0, $rrggbbaa491 = 0, $arrayidx492 = 0, $118 = 0, $arrayidx495 = 0, $arrayidx498 = 0, $arrayidx501 = 0, $arrayidx514 = 0, $119 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fake = __stackBase__ | 0;
    $H = __stackBase__ + 16 | 0;
    $S = __stackBase__ + 24 | 0;
    $V = __stackBase__ + 32 | 0;
    $R = __stackBase__ + 40 | 0;
    $G = __stackBase__ + 48 | 0;
    $B = __stackBase__ + 56 | 0;
    $C = __stackBase__ + 64 | 0;
    $M = __stackBase__ + 72 | 0;
    $Y = __stackBase__ + 80 | 0;
    $K = __stackBase__ + 88 | 0;
    $r = __stackBase__ + 96 | 0;
    $g = __stackBase__ + 104 | 0;
    $b = __stackBase__ + 112 | 0;
    $a = __stackBase__ + 120 | 0;
    $type = $color + 32 | 0;
    HEAP32[$type >> 2] = $target_type;
    $str_addr_0 = $str;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$str_addr_0] | 0;
    $cmp = $0 << 24 >> 24 == 32;
    $incdec_ptr = $str_addr_0 + 1 | 0;
    if ($cmp) {
      $str_addr_0 = $incdec_ptr;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[$a >> 2] = 255;
    $1 = HEAP8[$str_addr_0] | 0;
    $cmp3 = $1 << 24 >> 24 == 35;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $32 = $1;
      label = 13;
      break;
    }
   case 5:
    $call = _sscanf($str_addr_0 | 0, 96400, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $r, HEAP32[tempInt + 8 >> 2] = $g, HEAP32[tempInt + 16 >> 2] = $b, HEAP32[tempInt + 24 >> 2] = $a, tempInt) | 0) | 0;
    $cmp5 = ($call | 0) > 2;
    if ($cmp5) {
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 6:
    if (($target_type | 0) == 0) {
      label = 7;
      break;
    } else if (($target_type | 0) == 1) {
      label = 8;
      break;
    } else if (($target_type | 0) == 3) {
      label = 9;
      break;
    } else if (($target_type | 0) == 2) {
      label = 10;
      break;
    } else if (($target_type | 0) == 4) {
      label = 11;
      break;
    } else {
      $retval_0 = 0;
      label = 47;
      break;
    }
   case 7:
    $2 = HEAP32[$r >> 2] | 0;
    $conv7 = +($2 >>> 0 >>> 0);
    $div = $conv7 / 255.0;
    HEAPF64[$R >> 3] = $div;
    $3 = HEAP32[$g >> 2] | 0;
    $conv8 = +($3 >>> 0 >>> 0);
    $div9 = $conv8 / 255.0;
    HEAPF64[$G >> 3] = $div9;
    $4 = HEAP32[$b >> 2] | 0;
    $conv10 = +($4 >>> 0 >>> 0);
    $div11 = $conv10 / 255.0;
    HEAPF64[$B >> 3] = $div11;
    $5 = HEAP32[$a >> 2] | 0;
    $conv12 = +($5 >>> 0 >>> 0);
    $div13 = $conv12 / 255.0;
    $6 = +HEAPF64[$R >> 3];
    $7 = +HEAPF64[$G >> 3];
    _rgb2hsv($6, $7, $div11, $H, $S, $V);
    $8 = +HEAPF64[$H >> 3];
    $arrayidx = $color | 0;
    HEAPF64[$arrayidx >> 3] = $8;
    $9 = +HEAPF64[$S >> 3];
    $arrayidx16 = $color + 8 | 0;
    HEAPF64[$arrayidx16 >> 3] = $9;
    $10 = +HEAPF64[$V >> 3];
    $arrayidx19 = $color + 16 | 0;
    HEAPF64[$arrayidx19 >> 3] = $10;
    $arrayidx22 = $color + 24 | 0;
    HEAPF64[$arrayidx22 >> 3] = $div13;
    $retval_0 = 0;
    label = 47;
    break;
   case 8:
    $11 = HEAP32[$r >> 2] | 0;
    $conv24 = $11 & 255;
    $rgba = $color;
    $arrayidx26 = $color;
    HEAP8[$arrayidx26] = $conv24;
    $12 = HEAP32[$g >> 2] | 0;
    $conv27 = $12 & 255;
    $arrayidx30 = $rgba + 1 | 0;
    HEAP8[$arrayidx30] = $conv27;
    $13 = HEAP32[$b >> 2] | 0;
    $conv31 = $13 & 255;
    $arrayidx34 = $rgba + 2 | 0;
    HEAP8[$arrayidx34] = $conv31;
    $14 = HEAP32[$a >> 2] | 0;
    $conv35 = $14 & 255;
    $arrayidx38 = $rgba + 3 | 0;
    HEAP8[$arrayidx38] = $conv35;
    $retval_0 = 0;
    label = 47;
    break;
   case 9:
    $15 = HEAP32[$r >> 2] | 0;
    $conv40 = +($15 >>> 0 >>> 0);
    $div41 = $conv40 / 255.0;
    HEAPF64[$R >> 3] = $div41;
    $16 = HEAP32[$g >> 2] | 0;
    $conv42 = +($16 >>> 0 >>> 0);
    $div43 = $conv42 / 255.0;
    HEAPF64[$G >> 3] = $div43;
    $17 = HEAP32[$b >> 2] | 0;
    $conv44 = +($17 >>> 0 >>> 0);
    $div45 = $conv44 / 255.0;
    HEAPF64[$B >> 3] = $div45;
    $18 = +HEAPF64[$R >> 3];
    _rgb2cmyk($18, $div43, $div45, $C, $M, $Y, $K);
    $19 = +HEAPF64[$C >> 3];
    $conv46 = ~~$19;
    $mul = $conv46 * 255 & -1;
    $conv47 = $mul & 255;
    $cmyk = $color;
    $arrayidx49 = $color;
    HEAP8[$arrayidx49] = $conv47;
    $20 = +HEAPF64[$M >> 3];
    $conv50 = ~~$20;
    $mul51 = $conv50 * 255 & -1;
    $conv52 = $mul51 & 255;
    $arrayidx55 = $cmyk + 1 | 0;
    HEAP8[$arrayidx55] = $conv52;
    $21 = +HEAPF64[$Y >> 3];
    $conv56 = ~~$21;
    $mul57 = $conv56 * 255 & -1;
    $conv58 = $mul57 & 255;
    $arrayidx61 = $cmyk + 2 | 0;
    HEAP8[$arrayidx61] = $conv58;
    $22 = +HEAPF64[$K >> 3];
    $conv62 = ~~$22;
    $mul63 = $conv62 * 255 & -1;
    $conv64 = $mul63 & 255;
    $arrayidx67 = $cmyk + 3 | 0;
    HEAP8[$arrayidx67] = $conv64;
    $retval_0 = 0;
    label = 47;
    break;
   case 10:
    $23 = HEAP32[$r >> 2] | 0;
    $mul69 = $23 * 65535 & -1;
    $div70 = ($mul69 >>> 0) / 255 >>> 0;
    $rrggbbaa = $color;
    $arrayidx72 = $color;
    HEAP32[$arrayidx72 >> 2] = $div70;
    $24 = HEAP32[$g >> 2] | 0;
    $mul73 = $24 * 65535 & -1;
    $div74 = ($mul73 >>> 0) / 255 >>> 0;
    $arrayidx77 = $rrggbbaa + 4 | 0;
    HEAP32[$arrayidx77 >> 2] = $div74;
    $25 = HEAP32[$b >> 2] | 0;
    $mul78 = $25 * 65535 & -1;
    $div79 = ($mul78 >>> 0) / 255 >>> 0;
    $arrayidx82 = $color + 8 | 0;
    $26 = $arrayidx82;
    HEAP32[$26 >> 2] = $div79;
    $27 = HEAP32[$a >> 2] | 0;
    $mul83 = $27 * 65535 & -1;
    $div84 = ($mul83 >>> 0) / 255 >>> 0;
    $arrayidx87 = $rrggbbaa + 12 | 0;
    HEAP32[$arrayidx87 >> 2] = $div84;
    $retval_0 = 0;
    label = 47;
    break;
   case 11:
    $28 = HEAP32[$r >> 2] | 0;
    $conv89 = +($28 >>> 0 >>> 0);
    $div90 = $conv89 / 255.0;
    $arrayidx92 = $color | 0;
    HEAPF64[$arrayidx92 >> 3] = $div90;
    $29 = HEAP32[$g >> 2] | 0;
    $conv93 = +($29 >>> 0 >>> 0);
    $div94 = $conv93 / 255.0;
    $arrayidx97 = $color + 8 | 0;
    HEAPF64[$arrayidx97 >> 3] = $div94;
    $30 = HEAP32[$b >> 2] | 0;
    $conv98 = +($30 >>> 0 >>> 0);
    $div99 = $conv98 / 255.0;
    $arrayidx102 = $color + 16 | 0;
    HEAPF64[$arrayidx102 >> 3] = $div99;
    $31 = HEAP32[$a >> 2] | 0;
    $conv103 = +($31 >>> 0 >>> 0);
    $div104 = $conv103 / 255.0;
    $arrayidx107 = $color + 24 | 0;
    HEAPF64[$arrayidx107 >> 3] = $div104;
    $retval_0 = 0;
    label = 47;
    break;
   case 12:
    $_pr = HEAP8[$str_addr_0] | 0;
    $32 = $_pr;
    label = 13;
    break;
   case 13:
    $cmp111 = $32 << 24 >> 24 == 46;
    if ($cmp111) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $conv110 = $32 & 255;
    $isdigittmp = $conv110 - 48 | 0;
    $isdigit = $isdigittmp >>> 0 < 10;
    if ($isdigit) {
      label = 15;
      break;
    } else {
      label = 28;
      break;
    }
   case 15:
    $call116 = _strlen($str_addr_0 | 0) | 0;
    $33 = HEAP32[5820] | 0;
    $cmp117 = ($call116 | 0) < ($33 | 0);
    if ($cmp117) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $add120 = $call116 + 11 | 0;
    HEAP32[5820] = $add120;
    $34 = HEAP32[5818] | 0;
    $call121 = _grealloc($34, $add120) | 0;
    HEAP32[5818] = $call121;
    $tobool122 = ($call121 | 0) == 0;
    if ($tobool122) {
      $retval_0 = -1;
      label = 47;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $35 = HEAP32[5818] | 0;
    $q_0 = $35;
    $p_0 = $str_addr_0;
    label = 18;
    break;
   case 18:
    $incdec_ptr126 = $p_0 + 1 | 0;
    $36 = HEAP8[$p_0] | 0;
    if (($36 << 24 >> 24 | 0) == 44) {
      label = 19;
      break;
    } else if (($36 << 24 >> 24 | 0) == 0) {
      label = 21;
      break;
    } else {
      $c_0 = $36;
      label = 20;
      break;
    }
   case 19:
    $c_0 = 32;
    label = 20;
    break;
   case 20:
    $incdec_ptr133 = $q_0 + 1 | 0;
    HEAP8[$q_0] = $c_0;
    $q_0 = $incdec_ptr133;
    $p_0 = $incdec_ptr126;
    label = 18;
    break;
   case 21:
    HEAP8[$q_0] = 0;
    $37 = HEAP32[5818] | 0;
    $call134 = _sscanf($37 | 0, 137064, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $H, HEAP32[tempInt + 8 >> 2] = $S, HEAP32[tempInt + 16 >> 2] = $V, tempInt) | 0) | 0;
    $cmp135 = ($call134 | 0) == 3;
    if ($cmp135) {
      label = 22;
      break;
    } else {
      label = 28;
      break;
    }
   case 22:
    $38 = +HEAPF64[$H >> 3];
    $cmp138 = $38 < 1.0;
    $cond = $cmp138 ? $38 : 1.0;
    $cmp140 = $cond > 0.0;
    $cond151 = $cmp140 ? $cond : 0.0;
    HEAPF64[$H >> 3] = $cond151;
    $39 = +HEAPF64[$S >> 3];
    $cmp152 = $39 < 1.0;
    $cond157 = $cmp152 ? $39 : 1.0;
    $cmp158 = $cond157 > 0.0;
    $cond169 = $cmp158 ? $cond157 : 0.0;
    HEAPF64[$S >> 3] = $cond169;
    $40 = +HEAPF64[$V >> 3];
    $cmp170 = $40 < 1.0;
    $cond175 = $cmp170 ? $40 : 1.0;
    $cmp176 = $cond175 > 0.0;
    $cond187 = $cmp176 ? $cond175 : 0.0;
    HEAPF64[$V >> 3] = $cond187;
    if (($target_type | 0) == 0) {
      label = 23;
      break;
    } else if (($target_type | 0) == 1) {
      label = 24;
      break;
    } else if (($target_type | 0) == 3) {
      label = 25;
      break;
    } else if (($target_type | 0) == 2) {
      label = 26;
      break;
    } else if (($target_type | 0) == 4) {
      label = 27;
      break;
    } else {
      $retval_0 = 0;
      label = 47;
      break;
    }
   case 23:
    $41 = +HEAPF64[$H >> 3];
    $arrayidx191 = $color | 0;
    HEAPF64[$arrayidx191 >> 3] = $41;
    $42 = +HEAPF64[$S >> 3];
    $arrayidx194 = $color + 8 | 0;
    HEAPF64[$arrayidx194 >> 3] = $42;
    $43 = +HEAPF64[$V >> 3];
    $arrayidx197 = $color + 16 | 0;
    HEAPF64[$arrayidx197 >> 3] = $43;
    $arrayidx200 = $color + 24 | 0;
    HEAPF64[$arrayidx200 >> 3] = 1.0;
    $retval_0 = 0;
    label = 47;
    break;
   case 24:
    $44 = +HEAPF64[$H >> 3];
    $45 = +HEAPF64[$S >> 3];
    _hsv2rgb($44, $45, $cond187, $R, $G, $B);
    $46 = +HEAPF64[$R >> 3];
    $mul202 = $46 * 255.0;
    $conv203 = ~~$mul202;
    $conv204 = $conv203 & 255;
    $rgba206 = $color;
    $arrayidx207 = $color;
    HEAP8[$arrayidx207] = $conv204;
    $47 = +HEAPF64[$G >> 3];
    $mul208 = $47 * 255.0;
    $conv209 = ~~$mul208;
    $conv210 = $conv209 & 255;
    $arrayidx213 = $rgba206 + 1 | 0;
    HEAP8[$arrayidx213] = $conv210;
    $48 = +HEAPF64[$B >> 3];
    $mul214 = $48 * 255.0;
    $conv215 = ~~$mul214;
    $conv216 = $conv215 & 255;
    $arrayidx219 = $rgba206 + 2 | 0;
    HEAP8[$arrayidx219] = $conv216;
    $arrayidx222 = $rgba206 + 3 | 0;
    HEAP8[$arrayidx222] = -1;
    $retval_0 = 0;
    label = 47;
    break;
   case 25:
    $49 = +HEAPF64[$H >> 3];
    $50 = +HEAPF64[$S >> 3];
    _hsv2rgb($49, $50, $cond187, $R, $G, $B);
    $51 = +HEAPF64[$R >> 3];
    $52 = +HEAPF64[$G >> 3];
    $53 = +HEAPF64[$B >> 3];
    _rgb2cmyk($51, $52, $53, $C, $M, $Y, $K);
    $54 = +HEAPF64[$C >> 3];
    $conv224 = ~~$54;
    $mul225 = $conv224 * 255 & -1;
    $conv226 = $mul225 & 255;
    $cmyk228 = $color;
    $arrayidx229 = $color;
    HEAP8[$arrayidx229] = $conv226;
    $55 = +HEAPF64[$M >> 3];
    $conv230 = ~~$55;
    $mul231 = $conv230 * 255 & -1;
    $conv232 = $mul231 & 255;
    $arrayidx235 = $cmyk228 + 1 | 0;
    HEAP8[$arrayidx235] = $conv232;
    $56 = +HEAPF64[$Y >> 3];
    $conv236 = ~~$56;
    $mul237 = $conv236 * 255 & -1;
    $conv238 = $mul237 & 255;
    $arrayidx241 = $cmyk228 + 2 | 0;
    HEAP8[$arrayidx241] = $conv238;
    $57 = +HEAPF64[$K >> 3];
    $conv242 = ~~$57;
    $mul243 = $conv242 * 255 & -1;
    $conv244 = $mul243 & 255;
    $arrayidx247 = $cmyk228 + 3 | 0;
    HEAP8[$arrayidx247] = $conv244;
    $retval_0 = 0;
    label = 47;
    break;
   case 26:
    $58 = +HEAPF64[$H >> 3];
    $59 = +HEAPF64[$S >> 3];
    _hsv2rgb($58, $59, $cond187, $R, $G, $B);
    $60 = +HEAPF64[$R >> 3];
    $mul249 = $60 * 65535.0;
    $conv250 = ~~$mul249;
    $rrggbbaa252 = $color;
    $arrayidx253 = $color;
    HEAP32[$arrayidx253 >> 2] = $conv250;
    $61 = +HEAPF64[$G >> 3];
    $mul254 = $61 * 65535.0;
    $conv255 = ~~$mul254;
    $arrayidx258 = $rrggbbaa252 + 4 | 0;
    HEAP32[$arrayidx258 >> 2] = $conv255;
    $62 = +HEAPF64[$B >> 3];
    $mul259 = $62 * 65535.0;
    $conv260 = ~~$mul259;
    $arrayidx263 = $color + 8 | 0;
    $63 = $arrayidx263;
    HEAP32[$63 >> 2] = $conv260;
    $arrayidx266 = $rrggbbaa252 + 12 | 0;
    HEAP32[$arrayidx266 >> 2] = 65535;
    $retval_0 = 0;
    label = 47;
    break;
   case 27:
    $64 = +HEAPF64[$H >> 3];
    $65 = +HEAPF64[$S >> 3];
    _hsv2rgb($64, $65, $cond187, $R, $G, $B);
    $66 = +HEAPF64[$R >> 3];
    $arrayidx270 = $color | 0;
    HEAPF64[$arrayidx270 >> 3] = $66;
    $67 = +HEAPF64[$G >> 3];
    $arrayidx273 = $color + 8 | 0;
    HEAPF64[$arrayidx273 >> 3] = $67;
    $68 = +HEAPF64[$B >> 3];
    $arrayidx276 = $color + 16 | 0;
    HEAPF64[$arrayidx276 >> 3] = $68;
    $arrayidx279 = $color + 24 | 0;
    HEAPF64[$arrayidx279 >> 3] = 1.0;
    $retval_0 = 0;
    label = 47;
    break;
   case 28:
    $call285 = _resolveColor($str_addr_0) | 0;
    $name = $fake | 0;
    HEAP32[$name >> 2] = $call285;
    $tobool287 = ($call285 | 0) == 0;
    if ($tobool287) {
      $retval_0 = -1;
      label = 47;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $69 = HEAP32[5816] | 0;
    $cmp290 = ($69 | 0) == 0;
    if ($cmp290) {
      label = 32;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $name293 = $69 | 0;
    $70 = HEAP32[$name293 >> 2] | 0;
    $71 = HEAP8[$70] | 0;
    $72 = HEAP8[$call285] | 0;
    $cmp299 = $71 << 24 >> 24 == $72 << 24 >> 24;
    if ($cmp299) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    $call304 = _strcmp($70 | 0, $call285 | 0) | 0;
    $tobool305 = ($call304 | 0) == 0;
    if ($tobool305) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $73 = $fake;
    $call307 = _bsearch($73 | 0, 23296, 2491, 12, 564) | 0;
    $74 = $call307;
    HEAP32[5816] = $74;
    $75 = $74;
    label = 34;
    break;
   case 33:
    $_pr99 = HEAP32[5816] | 0;
    $75 = $_pr99;
    label = 34;
    break;
   case 34:
    $cmp309 = ($75 | 0) == 0;
    if ($cmp309) {
      label = 41;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    if (($target_type | 0) == 0) {
      label = 36;
      break;
    } else if (($target_type | 0) == 1) {
      label = 37;
      break;
    } else if (($target_type | 0) == 3) {
      label = 38;
      break;
    } else if (($target_type | 0) == 2) {
      label = 39;
      break;
    } else if (($target_type | 0) == 4) {
      label = 40;
      break;
    } else {
      $retval_0 = 0;
      label = 47;
      break;
    }
   case 36:
    $h = $75 + 4 | 0;
    $76 = HEAP8[$h] | 0;
    $conv313 = +(($76 & 255) >>> 0);
    $div314 = $conv313 / 255.0;
    $arrayidx317 = $color | 0;
    HEAPF64[$arrayidx317 >> 3] = $div314;
    $77 = HEAP32[5816] | 0;
    $s = $77 + 5 | 0;
    $78 = HEAP8[$s] | 0;
    $conv318 = +(($78 & 255) >>> 0);
    $div319 = $conv318 / 255.0;
    $arrayidx322 = $color + 8 | 0;
    HEAPF64[$arrayidx322 >> 3] = $div319;
    $79 = HEAP32[5816] | 0;
    $v = $79 + 6 | 0;
    $80 = HEAP8[$v] | 0;
    $conv323 = +(($80 & 255) >>> 0);
    $div324 = $conv323 / 255.0;
    $arrayidx327 = $color + 16 | 0;
    HEAPF64[$arrayidx327 >> 3] = $div324;
    $81 = HEAP32[5816] | 0;
    $a328 = $81 + 10 | 0;
    $82 = HEAP8[$a328] | 0;
    $conv329 = +(($82 & 255) >>> 0);
    $div330 = $conv329 / 255.0;
    $arrayidx333 = $color + 24 | 0;
    HEAPF64[$arrayidx333 >> 3] = $div330;
    $retval_0 = 0;
    label = 47;
    break;
   case 37:
    $r335 = $75 + 7 | 0;
    $83 = HEAP8[$r335] | 0;
    $rgba337 = $color;
    $arrayidx338 = $color;
    HEAP8[$arrayidx338] = $83;
    $84 = HEAP32[5816] | 0;
    $g339 = $84 + 8 | 0;
    $85 = HEAP8[$g339] | 0;
    $arrayidx342 = $rgba337 + 1 | 0;
    HEAP8[$arrayidx342] = $85;
    $86 = HEAP32[5816] | 0;
    $b343 = $86 + 9 | 0;
    $87 = HEAP8[$b343] | 0;
    $arrayidx346 = $rgba337 + 2 | 0;
    HEAP8[$arrayidx346] = $87;
    $88 = HEAP32[5816] | 0;
    $a347 = $88 + 10 | 0;
    $89 = HEAP8[$a347] | 0;
    $arrayidx350 = $rgba337 + 3 | 0;
    HEAP8[$arrayidx350] = $89;
    $retval_0 = 0;
    label = 47;
    break;
   case 38:
    $r352 = $75 + 7 | 0;
    $90 = HEAP8[$r352] | 0;
    $conv353 = $90 & 255;
    $conv354 = +($conv353 | 0);
    $div355 = $conv354 / 255.0;
    HEAPF64[$R >> 3] = $div355;
    $91 = HEAP32[5816] | 0;
    $g356 = $91 + 8 | 0;
    $92 = HEAP8[$g356] | 0;
    $conv357 = $92 & 255;
    $conv358 = +($conv357 | 0);
    $div359 = $conv358 / 255.0;
    HEAPF64[$G >> 3] = $div359;
    $93 = HEAP32[5816] | 0;
    $b360 = $93 + 9 | 0;
    $94 = HEAP8[$b360] | 0;
    $conv361 = $94 & 255;
    $conv362 = +($conv361 | 0);
    $div363 = $conv362 / 255.0;
    HEAPF64[$B >> 3] = $div363;
    $95 = +HEAPF64[$R >> 3];
    $96 = +HEAPF64[$G >> 3];
    _rgb2cmyk($95, $96, $div363, $C, $M, $Y, $K);
    $97 = +HEAPF64[$C >> 3];
    $conv364 = ~~$97;
    $mul365 = $conv364 * 255 & -1;
    $conv366 = $mul365 & 255;
    $cmyk368 = $color;
    $arrayidx369 = $color;
    HEAP8[$arrayidx369] = $conv366;
    $98 = +HEAPF64[$M >> 3];
    $conv370 = ~~$98;
    $mul371 = $conv370 * 255 & -1;
    $conv372 = $mul371 & 255;
    $arrayidx375 = $cmyk368 + 1 | 0;
    HEAP8[$arrayidx375] = $conv372;
    $99 = +HEAPF64[$Y >> 3];
    $conv376 = ~~$99;
    $mul377 = $conv376 * 255 & -1;
    $conv378 = $mul377 & 255;
    $arrayidx381 = $cmyk368 + 2 | 0;
    HEAP8[$arrayidx381] = $conv378;
    $100 = +HEAPF64[$K >> 3];
    $conv382 = ~~$100;
    $mul383 = $conv382 * 255 & -1;
    $conv384 = $mul383 & 255;
    $arrayidx387 = $cmyk368 + 3 | 0;
    HEAP8[$arrayidx387] = $conv384;
    $retval_0 = 0;
    label = 47;
    break;
   case 39:
    $r389 = $75 + 7 | 0;
    $101 = HEAP8[$r389] | 0;
    $conv390 = $101 & 255;
    $mul391 = $conv390 * 65535 & -1;
    $div392 = ($mul391 >>> 0) / 255 >>> 0;
    $rrggbbaa394 = $color;
    $arrayidx395 = $color;
    HEAP32[$arrayidx395 >> 2] = $div392;
    $102 = HEAP32[5816] | 0;
    $g396 = $102 + 8 | 0;
    $103 = HEAP8[$g396] | 0;
    $conv397 = $103 & 255;
    $mul398 = $conv397 * 65535 & -1;
    $div399 = ($mul398 >>> 0) / 255 >>> 0;
    $arrayidx402 = $rrggbbaa394 + 4 | 0;
    HEAP32[$arrayidx402 >> 2] = $div399;
    $104 = HEAP32[5816] | 0;
    $b403 = $104 + 9 | 0;
    $105 = HEAP8[$b403] | 0;
    $conv404 = $105 & 255;
    $mul405 = $conv404 * 65535 & -1;
    $div406 = ($mul405 >>> 0) / 255 >>> 0;
    $arrayidx409 = $color + 8 | 0;
    $106 = $arrayidx409;
    HEAP32[$106 >> 2] = $div406;
    $107 = HEAP32[5816] | 0;
    $a410 = $107 + 10 | 0;
    $108 = HEAP8[$a410] | 0;
    $conv411 = $108 & 255;
    $mul412 = $conv411 * 65535 & -1;
    $div413 = ($mul412 >>> 0) / 255 >>> 0;
    $arrayidx416 = $rrggbbaa394 + 12 | 0;
    HEAP32[$arrayidx416 >> 2] = $div413;
    $retval_0 = 0;
    label = 47;
    break;
   case 40:
    $r418 = $75 + 7 | 0;
    $109 = HEAP8[$r418] | 0;
    $conv419 = $109 & 255;
    $conv420 = +($conv419 | 0);
    $div421 = $conv420 / 255.0;
    $arrayidx424 = $color | 0;
    HEAPF64[$arrayidx424 >> 3] = $div421;
    $110 = HEAP32[5816] | 0;
    $g425 = $110 + 8 | 0;
    $111 = HEAP8[$g425] | 0;
    $conv426 = $111 & 255;
    $conv427 = +($conv426 | 0);
    $div428 = $conv427 / 255.0;
    $arrayidx431 = $color + 8 | 0;
    HEAPF64[$arrayidx431 >> 3] = $div428;
    $112 = HEAP32[5816] | 0;
    $b432 = $112 + 9 | 0;
    $113 = HEAP8[$b432] | 0;
    $conv433 = $113 & 255;
    $conv434 = +($conv433 | 0);
    $div435 = $conv434 / 255.0;
    $arrayidx438 = $color + 16 | 0;
    HEAPF64[$arrayidx438 >> 3] = $div435;
    $114 = HEAP32[5816] | 0;
    $a439 = $114 + 10 | 0;
    $115 = HEAP8[$a439] | 0;
    $conv440 = $115 & 255;
    $conv441 = +($conv440 | 0);
    $div442 = $conv441 / 255.0;
    $arrayidx445 = $color + 24 | 0;
    HEAPF64[$arrayidx445 >> 3] = $div442;
    $retval_0 = 0;
    label = 47;
    break;
   case 41:
    if (($target_type | 0) == 0) {
      label = 42;
      break;
    } else if (($target_type | 0) == 1) {
      label = 43;
      break;
    } else if (($target_type | 0) == 3) {
      label = 44;
      break;
    } else if (($target_type | 0) == 2) {
      label = 45;
      break;
    } else if (($target_type | 0) == 4) {
      label = 46;
      break;
    } else {
      $retval_0 = 1;
      label = 47;
      break;
    }
   case 42:
    $arrayidx462 = $color + 24 | 0;
    $116 = $color;
    _memset($116 | 0, 0, 24);
    HEAPF64[$arrayidx462 >> 3] = 1.0;
    $retval_0 = 1;
    label = 47;
    break;
   case 43:
    $rgba465 = $color;
    $arrayidx466 = $rgba465 + 2 | 0;
    HEAP8[$arrayidx466] = 0;
    $arrayidx469 = $rgba465 + 1 | 0;
    HEAP8[$arrayidx469] = 0;
    $arrayidx472 = $color;
    HEAP8[$arrayidx472] = 0;
    $arrayidx475 = $rgba465 + 3 | 0;
    HEAP8[$arrayidx475] = -1;
    $retval_0 = 1;
    label = 47;
    break;
   case 44:
    $117 = $color;
    tempBigInt = 0;
    HEAP8[$117] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$117 + 1 | 0] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$117 + 2 | 0] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$117 + 3 | 0] = tempBigInt & 255;
    $retval_0 = 1;
    label = 47;
    break;
   case 45:
    $rrggbbaa491 = $color;
    $arrayidx492 = $color + 8 | 0;
    $118 = $arrayidx492;
    HEAP32[$118 >> 2] = 0;
    $arrayidx495 = $rrggbbaa491 + 4 | 0;
    HEAP32[$arrayidx495 >> 2] = 0;
    $arrayidx498 = $color;
    HEAP32[$arrayidx498 >> 2] = 0;
    $arrayidx501 = $rrggbbaa491 + 12 | 0;
    HEAP32[$arrayidx501 >> 2] = 65535;
    $retval_0 = 1;
    label = 47;
    break;
   case 46:
    $arrayidx514 = $color + 24 | 0;
    $119 = $color;
    _memset($119 | 0, 0, 24);
    HEAPF64[$arrayidx514 >> 3] = 1.0;
    $retval_0 = 1;
    label = 47;
    break;
   case 47:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _getsplinepoints($e) {
  $e = $e | 0;
  var $spl5 = 0, $0 = 0, $cond6 = 0, $le_07 = 0, $edge_type = 0, $1 = 0, $cmp = 0, $to_orig = 0, $2 = 0, $spl = 0, $3 = 0, $cond = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $spl5 = $e + 24 | 0;
    $0 = HEAP32[$spl5 >> 2] | 0;
    $cond6 = ($0 | 0) == 0;
    if ($cond6) {
      $le_07 = $e;
      label = 3;
      break;
    } else {
      $4 = $0;
      label = 6;
      break;
    }
   case 3:
    $edge_type = $le_07 + 128 | 0;
    $1 = HEAP8[$edge_type] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $to_orig = $le_07 + 132 | 0;
    $2 = HEAP32[$to_orig >> 2] | 0;
    $spl = $2 + 24 | 0;
    $3 = HEAP32[$spl >> 2] | 0;
    $cond = ($3 | 0) == 0;
    if ($cond) {
      $le_07 = $2;
      label = 3;
      break;
    } else {
      $4 = $3;
      label = 6;
      break;
    }
   case 5:
    _abort();
    return 0;
    return 0;
   case 6:
    return $4 | 0;
  }
  return 0;
}
function _setColorScheme($s) {
  $s = $s | 0;
  HEAP32[5822] = $s;
  return;
}
function _rgb2hsv($r, $g, $b, $h, $s, $v) {
  $r = +$r;
  $g = +$g;
  $b = +$b;
  $h = $h | 0;
  $s = $s | 0;
  $v = $v | 0;
  var $cmp = 0, $cond = 0.0, $cmp1 = 0, $r_cond = 0.0, $cmp11 = 0, $cond15 = 0.0, $cmp16 = 0, $cond25 = 0.0, $cmp26 = 0, $sub = 0.0, $div = 0.0, $cmp27 = 0, $sub29 = 0.0, $sub30 = 0.0, $div31 = 0.0, $sub32 = 0.0, $div34 = 0.0, $sub35 = 0.0, $div37 = 0.0, $cmp38 = 0, $sub40 = 0.0, $cmp41 = 0, $add = 0.0, $sub43 = 0.0, $cmp45 = 0, $add47 = 0.0, $sub48 = 0.0, $ht_0 = 0.0, $mul = 0.0, $cmp52 = 0, $add54 = 0.0, $st_047 = 0.0, $ht_1 = 0.0, $div57 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = $g < $b;
    $cond = $cmp ? $g : $b;
    $cmp1 = $cond > $r;
    $r_cond = $cmp1 ? $r : $cond;
    $cmp11 = $g > $b;
    $cond15 = $cmp11 ? $g : $b;
    $cmp16 = $cond15 < $r;
    $cond25 = $cmp16 ? $r : $cond15;
    $cmp26 = $cond25 > 0.0;
    if ($cmp26) {
      label = 3;
      break;
    } else {
      $ht_1 = 0.0;
      $st_047 = 0.0;
      label = 12;
      break;
    }
   case 3:
    $sub = $cond25 - $r_cond;
    $div = $sub / $cond25;
    $cmp27 = $div > 0.0;
    if ($cmp27) {
      label = 4;
      break;
    } else {
      $ht_1 = 0.0;
      $st_047 = $div;
      label = 12;
      break;
    }
   case 4:
    $sub29 = $cond25 - $r;
    $sub30 = $cond25 - $r_cond;
    $div31 = $sub29 / $sub30;
    $sub32 = $cond25 - $g;
    $div34 = $sub32 / $sub30;
    $sub35 = $cond25 - $b;
    $div37 = $sub35 / $sub30;
    $cmp38 = $cond25 == $r;
    if ($cmp38) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $sub40 = $div37 - $div34;
    $ht_0 = $sub40;
    label = 10;
    break;
   case 6:
    $cmp41 = $cond25 == $g;
    if ($cmp41) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $add = $div31 + 2.0;
    $sub43 = $add - $div37;
    $ht_0 = $sub43;
    label = 10;
    break;
   case 8:
    $cmp45 = $cond25 == $b;
    if ($cmp45) {
      label = 9;
      break;
    } else {
      $ht_0 = 0.0;
      label = 10;
      break;
    }
   case 9:
    $add47 = $div34 + 4.0;
    $sub48 = $add47 - $div31;
    $ht_0 = $sub48;
    label = 10;
    break;
   case 10:
    $mul = $ht_0 * 60.0;
    $cmp52 = $mul < 0.0;
    if ($cmp52) {
      label = 11;
      break;
    } else {
      $ht_1 = $mul;
      $st_047 = $div;
      label = 12;
      break;
    }
   case 11:
    $add54 = $mul + 360.0;
    $ht_1 = $add54;
    $st_047 = $div;
    label = 12;
    break;
   case 12:
    $div57 = $ht_1 / 360.0;
    HEAPF64[$h >> 3] = $div57;
    HEAPF64[$v >> 3] = $cond25;
    HEAPF64[$s >> 3] = $st_047;
    return;
  }
}
function _rgb2cmyk($r, $g, $b, $c, $m, $y, $k) {
  $r = +$r;
  $g = +$g;
  $b = +$b;
  $c = $c | 0;
  $m = $m | 0;
  $y = $y | 0;
  $k = $k | 0;
  var $0 = 0.0, $1 = 0.0, $_ = 0.0, $2 = 0.0, $cond7 = 0.0;
  HEAPF64[$c >> 3] = 1.0 - $r;
  HEAPF64[$m >> 3] = 1.0 - $g;
  HEAPF64[$y >> 3] = 1.0 - $b;
  $0 = +HEAPF64[$c >> 3];
  $1 = +HEAPF64[$m >> 3];
  $_ = $0 < $1 ? $0 : $1;
  HEAPF64[$k >> 3] = $_;
  $2 = +HEAPF64[$y >> 3];
  $cond7 = $2 < $_ ? $2 : $_;
  HEAPF64[$k >> 3] = $cond7;
  HEAPF64[$c >> 3] = +HEAPF64[$c >> 3] - $cond7;
  HEAPF64[$m >> 3] = +HEAPF64[$m >> 3] - +HEAPF64[$k >> 3];
  HEAPF64[$y >> 3] = +HEAPF64[$y >> 3] - +HEAPF64[$k >> 3];
  return;
}
function _hsv2rgb($h, $s, $v, $r, $g, $b) {
  $h = +$h;
  $s = +$s;
  $v = +$v;
  $r = $r | 0;
  $g = $g | 0;
  $b = $b | 0;
  var $cmp = 0, $cmp1 = 0, $h_op = 0.0, $mul = 0.0, $conv = 0, $conv3 = 0.0, $sub = 0.0, $sub4 = 0.0, $mul5 = 0.0, $mul6 = 0.0, $sub7 = 0.0, $mul8 = 0.0, $sub9 = 0.0, $mul10 = 0.0, $sub11 = 0.0, $mul12 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = $s > 0.0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAPF64[$r >> 3] = $v;
    HEAPF64[$g >> 3] = $v;
    HEAPF64[$b >> 3] = $v;
    label = 11;
    break;
   case 4:
    $cmp1 = $h < 1.0;
    $h_op = $h * 6.0;
    $mul = $cmp1 ? $h_op : 0.0;
    $conv = ~~$mul;
    $conv3 = +($conv | 0);
    $sub = $mul - $conv3;
    $sub4 = 1.0 - $s;
    $mul5 = $sub4 * $v;
    $mul6 = $sub * $s;
    $sub7 = 1.0 - $mul6;
    $mul8 = $sub7 * $v;
    $sub9 = 1.0 - $sub;
    $mul10 = $sub9 * $s;
    $sub11 = 1.0 - $mul10;
    $mul12 = $sub11 * $v;
    if (($conv | 0) == 0) {
      label = 5;
      break;
    } else if (($conv | 0) == 1) {
      label = 6;
      break;
    } else if (($conv | 0) == 2) {
      label = 7;
      break;
    } else if (($conv | 0) == 3) {
      label = 8;
      break;
    } else if (($conv | 0) == 4) {
      label = 9;
      break;
    } else if (($conv | 0) == 5) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 5:
    HEAPF64[$r >> 3] = $v;
    HEAPF64[$g >> 3] = $mul12;
    HEAPF64[$b >> 3] = $mul5;
    label = 11;
    break;
   case 6:
    HEAPF64[$r >> 3] = $mul8;
    HEAPF64[$g >> 3] = $v;
    HEAPF64[$b >> 3] = $mul5;
    label = 11;
    break;
   case 7:
    HEAPF64[$r >> 3] = $mul5;
    HEAPF64[$g >> 3] = $v;
    HEAPF64[$b >> 3] = $mul12;
    label = 11;
    break;
   case 8:
    HEAPF64[$r >> 3] = $mul5;
    HEAPF64[$g >> 3] = $mul8;
    HEAPF64[$b >> 3] = $v;
    label = 11;
    break;
   case 9:
    HEAPF64[$r >> 3] = $mul12;
    HEAPF64[$g >> 3] = $mul5;
    HEAPF64[$b >> 3] = $v;
    label = 11;
    break;
   case 10:
    HEAPF64[$r >> 3] = $v;
    HEAPF64[$g >> 3] = $mul5;
    HEAPF64[$b >> 3] = $mul8;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _charsetOf($s) {
  $s = $s | 0;
  var $s_addr_0_ph = 0, $r_0_ph = 0, $s_addr_0 = 0, $0 = 0, $tobool = 0, $incdec_ptr = 0, $cmp = 0, $and = 0, $cmp3 = 0, $incdec_ptr6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $r_0_ph = 0;
    $s_addr_0_ph = $s;
    label = 3;
    break;
   case 3:
    $s_addr_0 = $s_addr_0_ph;
    label = 4;
    break;
   case 4:
    $0 = HEAP8[$s_addr_0] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = $r_0_ph;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $incdec_ptr = $s_addr_0 + 1 | 0;
    $cmp = ($0 & 255) < 127;
    if ($cmp) {
      $s_addr_0 = $incdec_ptr;
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $and = $0 & -4;
    $cmp3 = $and << 24 >> 24 == -64;
    $incdec_ptr6 = $s_addr_0 + 2 | 0;
    if ($cmp3) {
      $r_0_ph = 1;
      $s_addr_0_ph = $incdec_ptr6;
      label = 3;
      break;
    } else {
      $retval_0 = 2;
      label = 7;
      break;
    }
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _resolveColor($str) {
  $str = $str | 0;
  var $0 = 0, $cmp = 0, $add_ptr = 0, $call = 0, $tobool = 0, $cmp3 = 0, $or_cond = 0, $call7 = 0, $tobool8 = 0, $cmp12 = 0, $or_cond18 = 0, $call16 = 0, $tobool17 = 0, $cmp21 = 0, $call25 = 0, $tobool26 = 0, $1 = 0, $cmp29 = 0, $2 = 0, $tobool32 = 0, $3 = 0, $tobool34 = 0, $call36 = 0, $tobool37 = 0, $4 = 0, $add_ptr39 = 0, $call40 = 0, $add_ptr41 = 0, $call44 = 0, $tobool45 = 0, $add_ptr48 = 0, $add_ptr48_str = 0, $5 = 0, $tobool54 = 0, $6 = 0, $tobool57 = 0, $call59 = 0, $tobool60 = 0, $7 = 0, $call62 = 0, $s_0 = 0, $call66 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$str] | 0;
    $cmp = $0 << 24 >> 24 == 98;
    if ($cmp) {
      $retval_0 = $str;
      label = 20;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add_ptr = $str + 1 | 0;
    $call = _strncmp($add_ptr | 0, 122072, 4) | 0;
    $tobool = ($call | 0) == 0;
    $cmp3 = $0 << 24 >> 24 == 119;
    $or_cond = $tobool | $cmp3;
    if ($or_cond) {
      $retval_0 = $str;
      label = 20;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call7 = _strncmp($add_ptr | 0, 122064, 4) | 0;
    $tobool8 = ($call7 | 0) == 0;
    $cmp12 = $0 << 24 >> 24 == 108;
    $or_cond18 = $tobool8 | $cmp12;
    if ($or_cond18) {
      $retval_0 = $str;
      label = 20;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call16 = _strncmp($add_ptr | 0, 122048, 8) | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      $retval_0 = $str;
      label = 20;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp21 = $0 << 24 >> 24 == 47;
    if ($cmp21) {
      label = 7;
      break;
    } else {
      label = 15;
      break;
    }
   case 7:
    $call25 = _strchr($add_ptr | 0, 47) | 0;
    $tobool26 = ($call25 | 0) == 0;
    if ($tobool26) {
      $s_0 = $add_ptr;
      label = 19;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $1 = HEAP8[$add_ptr] | 0;
    $cmp29 = $1 << 24 >> 24 == 47;
    if ($cmp29) {
      label = 9;
      break;
    } else {
      label = 14;
      break;
    }
   case 9:
    $2 = HEAP32[5822] | 0;
    $tobool32 = ($2 | 0) == 0;
    if ($tobool32) {
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $3 = HEAP8[$2] | 0;
    $tobool34 = $3 << 24 >> 24 == 0;
    if ($tobool34) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call36 = _strncasecmp(122040, $2, 3) | 0;
    $tobool37 = ($call36 | 0) == 0;
    if ($tobool37) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $4 = HEAP32[5822] | 0;
    $add_ptr39 = $str + 2 | 0;
    $call40 = _fullColor($4, $add_ptr39) | 0;
    $s_0 = $call40;
    label = 19;
    break;
   case 13:
    $add_ptr41 = $str + 2 | 0;
    $s_0 = $add_ptr41;
    label = 19;
    break;
   case 14:
    $call44 = _strncasecmp(122040, $add_ptr, 4) | 0;
    $tobool45 = ($call44 | 0) == 0;
    $add_ptr48 = $call25 + 1 | 0;
    $add_ptr48_str = $tobool45 ? $add_ptr48 : $str;
    $s_0 = $add_ptr48_str;
    label = 19;
    break;
   case 15:
    $5 = HEAP32[5822] | 0;
    $tobool54 = ($5 | 0) == 0;
    if ($tobool54) {
      $s_0 = $str;
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $6 = HEAP8[$5] | 0;
    $tobool57 = $6 << 24 >> 24 == 0;
    if ($tobool57) {
      $s_0 = $str;
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $call59 = _strncasecmp(122040, $5, 3) | 0;
    $tobool60 = ($call59 | 0) == 0;
    if ($tobool60) {
      $s_0 = $str;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $7 = HEAP32[5822] | 0;
    $call62 = _fullColor($7, $str) | 0;
    $s_0 = $call62;
    label = 19;
    break;
   case 19:
    $call66 = _canontoken($s_0) | 0;
    $retval_0 = $call66;
    label = 20;
    break;
   case 20:
    return $retval_0 | 0;
  }
  return 0;
}
function _colorcmpf($p0, $p1) {
  $p0 = $p0 | 0;
  $p1 = $p1 | 0;
  return _strcasecmp(HEAP32[$p0 >> 2] | 0, HEAP32[$p1 >> 2] | 0) | 0;
}
function _fullColor($prefix, $str) {
  $prefix = $prefix | 0;
  $str = $str | 0;
  var $call = 0, $call1 = 0, $add = 0, $add2 = 0, $0 = 0, $cmp = 0, $add3 = 0, $1 = 0, $call4 = 0, $2 = 0, $call5 = 0, $3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _strlen($prefix | 0) | 0;
    $call1 = _strlen($str | 0) | 0;
    $add = $call1 + $call | 0;
    $add2 = $add + 3 | 0;
    $0 = HEAP32[4082] | 0;
    $cmp = ($add2 | 0) < ($0 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add3 = $add + 13 | 0;
    HEAP32[4082] = $add3;
    $1 = HEAP32[4080] | 0;
    $call4 = _grealloc($1, $add3) | 0;
    HEAP32[4080] = $call4;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[4080] | 0;
    $call5 = _sprintf($2 | 0, 122032, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $prefix, HEAP32[tempInt + 8 >> 2] = $str, tempInt) | 0) | 0;
    $3 = HEAP32[4080] | 0;
    STACKTOP = __stackBase__;
    return $3 | 0;
  }
  return 0;
}
function _epsf_init($n) {
  $n = $n | 0;
  var $0 = 0, $call = 0, $call1 = 0, $tobool = 0, $call2 = 0, $tobool3 = 0, $w = 0, $1 = 0, $h = 0, $2 = 0, $conv = 0.0, $div = 0.0, $width = 0, $conv5 = 0.0, $div6 = 0.0, $height = 0, $call8 = 0, $shape_info = 0, $macro_id = 0, $3 = 0, $macro_id10 = 0, $x = 0, $4 = 0, $div11_neg = 0, $sub12 = 0, $offset = 0, $x13 = 0, $y = 0, $5 = 0, $div15_neg = 0, $sub16 = 0, $y18 = 0, $6 = 0, $name = 0, $7 = 0, $call19 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $call = _agget($0, 122016) | 0;
    $call1 = _safefile($call) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call2 = _user_init($call1) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $w = $call2 + 40 | 0;
    $1 = HEAP32[$w >> 2] | 0;
    $h = $call2 + 44 | 0;
    $2 = HEAP32[$h >> 2] | 0;
    $conv = +($1 | 0);
    $div = $conv / 72.0;
    $width = $n + 48 | 0;
    HEAPF64[$width >> 3] = $div;
    $conv5 = +($2 | 0);
    $div6 = $conv5 / 72.0;
    $height = $n + 56 | 0;
    HEAPF64[$height >> 3] = $div6;
    $call8 = _zmalloc(12) | 0;
    $shape_info = $n + 28 | 0;
    HEAP32[$shape_info >> 2] = $call8;
    $macro_id = $call2 + 12 | 0;
    $3 = HEAP32[$macro_id >> 2] | 0;
    $macro_id10 = $call8;
    HEAP32[$macro_id10 >> 2] = $3;
    $x = $call2 + 32 | 0;
    $4 = HEAP32[$x >> 2] | 0;
    $div11_neg = ($1 | 0) / -2 & -1;
    $sub12 = $div11_neg - $4 | 0;
    $offset = $call8 + 4 | 0;
    $x13 = $offset;
    HEAP32[$x13 >> 2] = $sub12;
    $y = $call2 + 36 | 0;
    $5 = HEAP32[$y >> 2] | 0;
    $div15_neg = ($2 | 0) / -2 & -1;
    $sub16 = $div15_neg - $5 | 0;
    $y18 = $call8 + 8 | 0;
    $6 = $y18;
    HEAP32[$6 >> 2] = $sub16;
    label = 6;
    break;
   case 5:
    $name = $n + 12 | 0;
    $7 = HEAP32[$name >> 2] | 0;
    $call19 = _agerr(0, 154488, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $7, tempInt) | 0) | 0;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return;
  }
}
function _user_init($str) {
  $str = $str | 0;
  var $line = 0, $statbuf = 0, $lx = 0, $ly = 0, $ux = 0, $uy = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $searchf = 0, $4 = 0, $call1 = 0, $tobool2 = 0, $5 = 0, $call5 = 0, $tobool6 = 0, $arraydecay = 0, $call1024 = 0, $tobool1125 = 0, $call8 = 0, $must_inline_027 = 0, $saw_bb_026 = 0, $call13 = 0, $cmp = 0, $_saw_bb_0 = 0, $6 = 0, $cmp16 = 0, $call19 = 0, $tobool20 = 0, $must_inline_0_ = 0, $must_inline_1 = 0, $tobool23 = 0, $saw_bb_0_be = 0, $must_inline_0_be = 0, $call10 = 0, $tobool11 = 0, $extract_t32 = 0, $tobool25 = 0, $extract_t33 = 0, $must_inline_1_sink_off0 = 0, $saw_bb_2 = 0, $tobool28 = 0, $call30 = 0, $7 = 0, $8 = 0, $x = 0, $9 = 0, $10 = 0, $y = 0, $11 = 0, $12 = 0, $13 = 0, $sub = 0, $w = 0, $14 = 0, $15 = 0, $16 = 0, $sub31 = 0, $name = 0, $17 = 0, $18 = 0, $inc = 0, $macro_id = 0, $19 = 0, $call33 = 0, $call34 = 0, $st_size = 0, $20 = 0, $add = 0, $call35 = 0, $data = 0, $21 = 0, $call36 = 0, $22 = 0, $call38 = 0, $23 = 0, $arrayidx40 = 0, $24 = 0, $searchf41 = 0, $25 = 0, $call42 = 0, $26 = 0, $call45 = 0, $us_0 = 0, $call47 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $line = __stackBase__ | 0;
    $statbuf = __stackBase__ + 1024 | 0;
    $lx = __stackBase__ + 1096 | 0;
    $ly = __stackBase__ + 1104 | 0;
    $ux = __stackBase__ + 1112 | 0;
    $uy = __stackBase__ + 1120 | 0;
    $0 = HEAP32[41970] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $1 = HEAP32[41978] | 0;
    $2 = $1;
    $call = _dtopen(167040, $2) | 0;
    HEAP32[41970] = $call;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[41970] | 0;
    $searchf = $3 | 0;
    $4 = HEAP32[$searchf >> 2] | 0;
    $call1 = FUNCTION_TABLE_iiii[$4 & 1023]($3, $str, 512) | 0;
    $tobool2 = ($call1 | 0) == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = $call1;
    $retval_0 = $5;
    label = 18;
    break;
   case 6:
    $call5 = _fopen($str | 0, 112224) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $arraydecay = $line | 0;
    $call1024 = _fgets($arraydecay | 0, 1024, $call5 | 0) | 0;
    $tobool1125 = ($call1024 | 0) == 0;
    if ($tobool1125) {
      label = 16;
      break;
    } else {
      $saw_bb_026 = 0;
      $must_inline_027 = 0;
      label = 9;
      break;
    }
   case 8:
    $call8 = _agerr(0, 145840, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $str, tempInt) | 0) | 0;
    $retval_0 = 0;
    label = 18;
    break;
   case 9:
    $call13 = _sscanf($arraydecay | 0, 142792, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $lx, HEAP32[tempInt + 8 >> 2] = $ly, HEAP32[tempInt + 16 >> 2] = $ux, HEAP32[tempInt + 24 >> 2] = $uy, tempInt) | 0) | 0;
    $cmp = ($call13 | 0) == 4;
    $_saw_bb_0 = $cmp ? 1 : $saw_bb_026;
    $6 = HEAP8[$arraydecay] | 0;
    $cmp16 = $6 << 24 >> 24 == 37;
    if ($cmp16) {
      $must_inline_1 = $must_inline_027;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call19 = _strstr($arraydecay | 0, 139264) | 0;
    $tobool20 = ($call19 | 0) == 0;
    $must_inline_0_ = $tobool20 ? $must_inline_027 : 1;
    $must_inline_1 = $must_inline_0_;
    label = 11;
    break;
   case 11:
    $tobool23 = ($_saw_bb_0 | 0) == 0;
    if ($tobool23) {
      $must_inline_0_be = $must_inline_1;
      $saw_bb_0_be = 0;
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $call10 = _fgets($arraydecay | 0, 1024, $call5 | 0) | 0;
    $tobool11 = ($call10 | 0) == 0;
    $extract_t32 = $must_inline_0_be & 255;
    if ($tobool11) {
      $saw_bb_2 = $saw_bb_0_be;
      $must_inline_1_sink_off0 = $extract_t32;
      label = 14;
      break;
    } else {
      $saw_bb_026 = $saw_bb_0_be;
      $must_inline_027 = $must_inline_0_be;
      label = 9;
      break;
    }
   case 13:
    $tobool25 = ($must_inline_1 | 0) == 0;
    $extract_t33 = $must_inline_1 & 255;
    if ($tobool25) {
      $must_inline_0_be = 0;
      $saw_bb_0_be = $_saw_bb_0;
      label = 12;
      break;
    } else {
      $saw_bb_2 = $_saw_bb_0;
      $must_inline_1_sink_off0 = $extract_t33;
      label = 14;
      break;
    }
   case 14:
    $tobool28 = ($saw_bb_2 | 0) == 0;
    if ($tobool28) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call30 = _gmalloc(64) | 0;
    $7 = $call30;
    $8 = HEAP32[$lx >> 2] | 0;
    $x = $call30 + 32 | 0;
    $9 = $x;
    HEAP32[$9 >> 2] = $8;
    $10 = HEAP32[$ly >> 2] | 0;
    $y = $call30 + 36 | 0;
    $11 = $y;
    HEAP32[$11 >> 2] = $10;
    $12 = HEAP32[$ux >> 2] | 0;
    $13 = HEAP32[$lx >> 2] | 0;
    $sub = $12 - $13 | 0;
    $w = $call30 + 40 | 0;
    $14 = $w;
    HEAP32[$14 >> 2] = $sub;
    $15 = HEAP32[$uy >> 2] | 0;
    $16 = HEAP32[$ly >> 2] | 0;
    $sub31 = $15 - $16 | 0;
    HEAP32[$11 >> 2] = $sub31;
    $name = $call30 + 8 | 0;
    $17 = $name;
    HEAP32[$17 >> 2] = $str;
    $18 = HEAP32[41624] | 0;
    $inc = $18 + 1 | 0;
    HEAP32[41624] = $inc;
    $macro_id = $call30 + 12 | 0;
    $19 = $macro_id;
    HEAP32[$19 >> 2] = $18;
    $call33 = _fileno($call5 | 0) | 0;
    $call34 = _fstat($call33 | 0, $statbuf | 0) | 0;
    $st_size = $statbuf + 28 | 0;
    $20 = HEAP32[$st_size >> 2] | 0;
    $add = $20 + 1 | 0;
    $call35 = _gmalloc($add) | 0;
    $data = $call30 + 52 | 0;
    $21 = $data;
    HEAP32[$21 >> 2] = $call35;
    $call36 = _fseek($call5 | 0, 0, 0) | 0;
    $22 = HEAP32[$st_size >> 2] | 0;
    $call38 = _fread($call35 | 0, $22 | 0, 1, $call5 | 0) | 0;
    $23 = HEAP32[$st_size >> 2] | 0;
    $arrayidx40 = $call35 + $23 | 0;
    HEAP8[$arrayidx40] = 0;
    $24 = HEAP32[41970] | 0;
    $searchf41 = $24 | 0;
    $25 = HEAP32[$searchf41 >> 2] | 0;
    $call42 = FUNCTION_TABLE_iiii[$25 & 1023]($24, $call30, 1) | 0;
    $26 = $call30 + 16 | 0;
    HEAP8[$26] = $must_inline_1_sink_off0;
    $us_0 = $7;
    label = 17;
    break;
   case 16:
    $call45 = _agerr(0, 136488, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $str, tempInt) | 0) | 0;
    $us_0 = 0;
    label = 17;
    break;
   case 17:
    $call47 = _fclose($call5 | 0) | 0;
    $retval_0 = $us_0;
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _epsf_free($n) {
  $n = $n | 0;
  var $shape_info = 0, $0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $shape_info = $n + 28 | 0;
    $0 = HEAP32[$shape_info >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _free($0);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _cat_libfile($job, $arglib, $stdlib) {
  $job = $job | 0;
  $arglib = $arglib | 0;
  $stdlib = $stdlib | 0;
  var $tobool = 0, $use_stdlib_031 = 0, $i_030 = 0, $arrayidx = 0, $0 = 0, $tobool2 = 0, $1 = 0, $cmp = 0, $_use_stdlib_0 = 0, $inc = 0, $tobool1 = 0, $2 = 0, $tobool1026 = 0, $3 = 0, $4 = 0, $s_027 = 0, $call = 0, $call12 = 0, $incdec_ptr = 0, $5 = 0, $tobool10 = 0, $6 = 0, $cmp2024 = 0, $7 = 0, $8 = 0, $i_125 = 0, $9 = 0, $cmp24 = 0, $call28 = 0, $tobool29 = 0, $call31 = 0, $call32 = 0, $tobool33 = 0, $call3521 = 0, $tobool3622 = 0, $call3523 = 0, $call37 = 0, $call35 = 0, $tobool36 = 0, $call38 = 0, $call39 = 0, $call41 = 0, $inc45 = 0, $arrayidx19 = 0, $10 = 0, $cmp20 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($arglib | 0) != 0;
    if ($tobool) {
      $i_030 = 0;
      $use_stdlib_031 = 1;
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $arrayidx = $arglib + ($i_030 << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP8[$0] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $_use_stdlib_0 = $cmp ? 0 : $use_stdlib_031;
    $inc = $i_030 + 1 | 0;
    $tobool1 = $_use_stdlib_0 << 24 >> 24 == 0;
    if ($tobool1) {
      label = 8;
      break;
    } else {
      $i_030 = $inc;
      $use_stdlib_031 = $_use_stdlib_0;
      label = 3;
      break;
    }
   case 5:
    $2 = HEAP32[$stdlib >> 2] | 0;
    $tobool1026 = ($2 | 0) == 0;
    if ($tobool1026) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = $job;
    $s_027 = $stdlib;
    $4 = $2;
    label = 7;
    break;
   case 7:
    $call = _gvputs($3, $4) | 0;
    $call12 = _gvputs($3, 127256) | 0;
    $incdec_ptr = $s_027 + 4 | 0;
    $5 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool10 = ($5 | 0) == 0;
    if ($tobool10) {
      label = 8;
      break;
    } else {
      $s_027 = $incdec_ptr;
      $4 = $5;
      label = 7;
      break;
    }
   case 8:
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 20;
      break;
    }
   case 9:
    $6 = HEAP32[$arglib >> 2] | 0;
    $cmp2024 = ($6 | 0) == 0;
    if ($cmp2024) {
      label = 20;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $7 = $job;
    $i_125 = 0;
    $8 = $6;
    label = 11;
    break;
   case 11:
    $9 = HEAP8[$8] | 0;
    $cmp24 = $9 << 24 >> 24 == 0;
    if ($cmp24) {
      label = 19;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call28 = _safefile($8) | 0;
    $tobool29 = ($call28 | 0) == 0;
    if ($tobool29) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $call31 = _agerr(0, 117456, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $8, tempInt) | 0) | 0;
    label = 19;
    break;
   case 14:
    $call32 = _fopen($call28 | 0, 112224) | 0;
    $tobool33 = ($call32 | 0) == 0;
    if ($tobool33) {
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call3521 = _Fgets($call32) | 0;
    $tobool3622 = ($call3521 | 0) == 0;
    if ($tobool3622) {
      label = 17;
      break;
    } else {
      $call3523 = $call3521;
      label = 16;
      break;
    }
   case 16:
    $call37 = _gvputs($7, $call3523) | 0;
    $call35 = _Fgets($call32) | 0;
    $tobool36 = ($call35 | 0) == 0;
    if ($tobool36) {
      label = 17;
      break;
    } else {
      $call3523 = $call35;
      label = 16;
      break;
    }
   case 17:
    $call38 = _gvputs($7, 127256) | 0;
    $call39 = _fclose($call32 | 0) | 0;
    label = 19;
    break;
   case 18:
    $call41 = _agerr(0, 107872, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call28, tempInt) | 0) | 0;
    label = 19;
    break;
   case 19:
    $inc45 = $i_125 + 1 | 0;
    $arrayidx19 = $arglib + ($inc45 << 2) | 0;
    $10 = HEAP32[$arrayidx19 >> 2] | 0;
    $cmp20 = ($10 | 0) == 0;
    if ($cmp20) {
      label = 20;
      break;
    } else {
      $i_125 = $inc45;
      $8 = $10;
      label = 11;
      break;
    }
   case 20:
    STACKTOP = __stackBase__;
    return;
  }
}
function _epsf_emit_body($job, $us) {
  $job = $job | 0;
  $us = $us | 0;
  var $data = 0, $0 = 0, $1 = 0, $2 = 0, $p_0 = 0, $3 = 0, $arrayidx2 = 0, $4 = 0, $cmp4 = 0, $arrayidx7 = 0, $call = 0, $tobool8 = 0, $call10 = 0, $tobool11 = 0, $call14 = 0, $tobool15 = 0, $call18 = 0, $tobool19 = 0, $p_1 = 0, $5 = 0, $incdec_ptr = 0, $add_ptr = 0, $6 = 0, $cmp36 = 0, $add_ptr39 = 0, $7 = 0, $tobool40 = 0, $incdec_ptr42 = 0, $p_1_incdec_ptr42 = 0, $p_2 = 0, $8 = 0, $conv46 = 0, $call59 = 0, $incdec_ptr60 = 0, $add_ptr66 = 0, $9 = 0, $cmp68 = 0, $add_ptr71 = 0, $10 = 0, $tobool73 = 0, $incdec_ptr75 = 0, $p_2_incdec_ptr75 = 0, $p_3 = 0, $call78 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $data = $us + 52 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    $1 = $job;
    $2 = $job;
    $p_0 = $0;
    label = 3;
    break;
   case 3:
    $3 = HEAP8[$p_0] | 0;
    if (($3 << 24 >> 24 | 0) == 37) {
      label = 4;
      break;
    } else if (($3 << 24 >> 24 | 0) == 0) {
      label = 20;
      break;
    } else {
      $p_2 = $p_0;
      label = 14;
      break;
    }
   case 4:
    $arrayidx2 = $p_0 + 1 | 0;
    $4 = HEAP8[$arrayidx2] | 0;
    $cmp4 = $4 << 24 >> 24 == 37;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      $p_2 = $p_0;
      label = 14;
      break;
    }
   case 5:
    $arrayidx7 = $p_0 + 2 | 0;
    $call = _strncasecmp($arrayidx7, 103984, 3) | 0;
    $tobool8 = ($call | 0) == 0;
    if ($tobool8) {
      $p_1 = $p_0;
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call10 = _strncasecmp($arrayidx7, 99792, 5) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      $p_1 = $p_0;
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call14 = _strncasecmp($arrayidx7, 95696, 3) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      $p_1 = $p_0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call18 = _strncasecmp($arrayidx7, 92288, 7) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      $p_1 = $p_0;
      label = 9;
      break;
    } else {
      $p_2 = $p_0;
      label = 14;
      break;
    }
   case 9:
    $5 = HEAP8[$p_1] | 0;
    if (($5 << 24 >> 24 | 0) == 13) {
      label = 11;
      break;
    } else if (($5 << 24 >> 24 | 0) == 0 | ($5 << 24 >> 24 | 0) == 10) {
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $incdec_ptr = $p_1 + 1 | 0;
    $p_1 = $incdec_ptr;
    label = 9;
    break;
   case 11:
    $add_ptr = $p_1 + 1 | 0;
    $6 = HEAP8[$add_ptr] | 0;
    $cmp36 = $6 << 24 >> 24 == 10;
    if ($cmp36) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $add_ptr39 = $p_1 + 2 | 0;
    $p_0 = $add_ptr39;
    label = 3;
    break;
   case 13:
    $7 = HEAP8[$p_1] | 0;
    $tobool40 = $7 << 24 >> 24 == 0;
    $incdec_ptr42 = $p_1 + 1 | 0;
    $p_1_incdec_ptr42 = $tobool40 ? $p_1 : $incdec_ptr42;
    $p_0 = $p_1_incdec_ptr42;
    label = 3;
    break;
   case 14:
    $8 = HEAP8[$p_2] | 0;
    if (($8 << 24 >> 24 | 0) == 13) {
      label = 16;
      break;
    } else if (($8 << 24 >> 24 | 0) == 0 | ($8 << 24 >> 24 | 0) == 10) {
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $conv46 = $8 << 24 >> 24;
    $call59 = _gvputc($1, $conv46) | 0;
    $incdec_ptr60 = $p_2 + 1 | 0;
    $p_2 = $incdec_ptr60;
    label = 14;
    break;
   case 16:
    $add_ptr66 = $p_2 + 1 | 0;
    $9 = HEAP8[$add_ptr66] | 0;
    $cmp68 = $9 << 24 >> 24 == 10;
    if ($cmp68) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add_ptr71 = $p_2 + 2 | 0;
    $p_3 = $add_ptr71;
    label = 19;
    break;
   case 18:
    $10 = HEAP8[$p_2] | 0;
    $tobool73 = $10 << 24 >> 24 == 0;
    $incdec_ptr75 = $p_2 + 1 | 0;
    $p_2_incdec_ptr75 = $tobool73 ? $p_2 : $incdec_ptr75;
    $p_3 = $p_2_incdec_ptr75;
    label = 19;
    break;
   case 19:
    $call78 = _gvputc($2, 10) | 0;
    $p_0 = $p_3;
    label = 3;
    break;
   case 20:
    return;
  }
}
function _epsf_define($job) {
  $job = $job | 0;
  var $0 = 0, $tobool = 0, $searchf = 0, $1 = 0, $call = 0, $tobool110 = 0, $2 = 0, $us_012_in = 0, $3 = 0, $4 = 0, $tobool2 = 0, $us_012 = 0, $macro_id = 0, $5 = 0, $6 = 0, $call5 = 0, $call6 = 0, $call7 = 0, $7 = 0, $searchf8 = 0, $8 = 0, $call9 = 0, $tobool1 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41970] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, 0, 128) | 0;
    $tobool110 = ($call | 0) == 0;
    if ($tobool110) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = $job;
    $us_012_in = $call;
    label = 5;
    break;
   case 5:
    $3 = $us_012_in + 16 | 0;
    $4 = HEAP8[$3] | 0;
    $tobool2 = $4 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $us_012 = $us_012_in;
    $macro_id = $us_012_in + 12 | 0;
    $5 = $macro_id;
    $6 = HEAP32[$5 >> 2] | 0;
    _gvprintf($2, 162408, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $6, tempInt) | 0);
    $call5 = _gvputs($2, 158856) | 0;
    _epsf_emit_body($job, $us_012);
    $call6 = _gvputs($2, 155336) | 0;
    $call7 = _gvputs($2, 151944) | 0;
    label = 7;
    break;
   case 7:
    $7 = HEAP32[41970] | 0;
    $searchf8 = $7 | 0;
    $8 = HEAP32[$searchf8 >> 2] | 0;
    $call9 = FUNCTION_TABLE_iiii[$8 & 1023]($7, $us_012_in, 8) | 0;
    $tobool1 = ($call9 | 0) == 0;
    if ($tobool1) {
      label = 8;
      break;
    } else {
      $us_012_in = $call9;
      label = 5;
      break;
    }
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _ps_string($ins, $latin) {
  $ins = $ins | 0;
  $latin = $latin | 0;
  var $tobool = 0, $call = 0, $call1 = 0, $call3 = 0, $_b = 0, $call7 = 0, $base_0 = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $cmp11 = 0, $call12 = 0, $3 = 0, $incdec_ptr = 0, $s_0 = 0, $4 = 0, $5 = 0, $6 = 0, $cmp24 = 0, $call27 = 0, $7 = 0, $incdec_ptr31 = 0, $8 = 0, $9 = 0, $cmp33 = 0, $call36 = 0, $incdec_ptr40 = 0, $10 = 0, $11 = 0, $incdec_ptr41 = 0, $12 = 0, $13 = 0, $cmp43 = 0, $call46 = 0, $14 = 0, $incdec_ptr50 = 0, $cmp51 = 0, $15 = 0, $16 = 0, $cmp55 = 0, $call58 = 0, $17 = 0, $18 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($latin | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _utf8ToLatin1($ins) | 0;
    $base_0 = $call;
    label = 8;
    break;
   case 4:
    $call1 = _charsetOf($ins) | 0;
    if (($call1 | 0) == 1) {
      label = 5;
      break;
    } else if (($call1 | 0) == 2) {
      label = 6;
      break;
    } else {
      $base_0 = $ins;
      label = 8;
      break;
    }
   case 5:
    $call3 = _utf8ToLatin1($ins) | 0;
    $base_0 = $call3;
    label = 8;
    break;
   case 6:
    $_b = HEAP8[5560] | 0;
    if ($_b) {
      $base_0 = $ins;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call7 = _agerr(0, 148592, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    HEAP8[5560] = 1;
    $base_0 = $ins;
    label = 8;
    break;
   case 8:
    $0 = HEAP32[1386] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    _agxbinit(5544, 0, 0);
    label = 10;
    break;
   case 10:
    $1 = HEAP32[1387] | 0;
    $2 = HEAP32[1388] | 0;
    $cmp11 = $1 >>> 0 < $2 >>> 0;
    if ($cmp11) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call12 = _agxbmore(5544, 1) | 0;
    label = 12;
    break;
   case 12:
    $3 = HEAP32[1387] | 0;
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[1387] = $incdec_ptr;
    HEAP8[$3] = 40;
    $s_0 = $base_0;
    label = 13;
    break;
   case 13:
    $4 = HEAP8[$s_0] | 0;
    if (($4 << 24 >> 24 | 0) == 40 | ($4 << 24 >> 24 | 0) == 41 | ($4 << 24 >> 24 | 0) == 92) {
      label = 14;
      break;
    } else if (($4 << 24 >> 24 | 0) == 0) {
      label = 20;
      break;
    } else {
      label = 17;
      break;
    }
   case 14:
    $5 = HEAP32[1387] | 0;
    $6 = HEAP32[1388] | 0;
    $cmp24 = $5 >>> 0 < $6 >>> 0;
    if ($cmp24) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call27 = _agxbmore(5544, 1) | 0;
    label = 16;
    break;
   case 16:
    $7 = HEAP32[1387] | 0;
    $incdec_ptr31 = $7 + 1 | 0;
    HEAP32[1387] = $incdec_ptr31;
    HEAP8[$7] = 92;
    label = 17;
    break;
   case 17:
    $8 = HEAP32[1387] | 0;
    $9 = HEAP32[1388] | 0;
    $cmp33 = $8 >>> 0 < $9 >>> 0;
    if ($cmp33) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call36 = _agxbmore(5544, 1) | 0;
    label = 19;
    break;
   case 19:
    $incdec_ptr40 = $s_0 + 1 | 0;
    $10 = HEAP8[$s_0] | 0;
    $11 = HEAP32[1387] | 0;
    $incdec_ptr41 = $11 + 1 | 0;
    HEAP32[1387] = $incdec_ptr41;
    HEAP8[$11] = $10;
    $s_0 = $incdec_ptr40;
    label = 13;
    break;
   case 20:
    $12 = HEAP32[1387] | 0;
    $13 = HEAP32[1388] | 0;
    $cmp43 = $12 >>> 0 < $13 >>> 0;
    if ($cmp43) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $call46 = _agxbmore(5544, 1) | 0;
    label = 22;
    break;
   case 22:
    $14 = HEAP32[1387] | 0;
    $incdec_ptr50 = $14 + 1 | 0;
    HEAP32[1387] = $incdec_ptr50;
    HEAP8[$14] = 41;
    $cmp51 = ($base_0 | 0) == ($ins | 0);
    if ($cmp51) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    _free($base_0);
    label = 24;
    break;
   case 24:
    $15 = HEAP32[1387] | 0;
    $16 = HEAP32[1388] | 0;
    $cmp55 = $15 >>> 0 < $16 >>> 0;
    if ($cmp55) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $call58 = _agxbmore(5544, 1) | 0;
    label = 26;
    break;
   case 26:
    $17 = HEAP32[1387] | 0;
    HEAP8[$17] = 0;
    $18 = HEAP32[1386] | 0;
    HEAP32[1387] = $18;
    STACKTOP = __stackBase__;
    return $18 | 0;
  }
  return 0;
}
function _ps_image_free($dict, $p, $disc) {
  $dict = $dict | 0;
  $p = $p | 0;
  $disc = $disc | 0;
  _free(HEAP32[$p + 52 >> 2] | 0);
  return;
}
function _graph_init($g, $use_rankdir) {
  $g = $g | 0;
  $use_rankdir = $use_rankdir | 0;
  var $xf = 0, $call = 0, $0 = 0, $drawing = 0, $1 = 0, $call1 = 0, $tobool = 0, $call2 = 0, $tobool3 = 0, $p_0 = 0, $2 = 0, $call4 = 0, $add5 = 0, $call6 = 0, $3 = 0, $call8 = 0, $4 = 0, $call9 = 0, $call10 = 0, $conv = 0, $charset = 0, $root = 0, $5 = 0, $6 = 0, $call12 = 0, $call13 = 0.0, $7 = 0, $quantum = 0, $call16 = 0, $tobool17 = 0, $8 = 0, $cmp = 0, $call22 = 0, $tobool23 = 0, $_pr = 0, $9 = 0, $cmp27 = 0, $call30 = 0, $tobool31 = 0, $10 = 0, $cmp36 = 0, $call39 = 0, $tobool40 = 0, $_ = 0, $rankdir_0 = 0, $tobool46 = 0, $shl = 0, $or = 0, $rankdir49 = 0, $rankdir53 = 0, $11 = 0, $12 = 0, $call56 = 0, $call57 = 0.0, $mul = 0.0, $cmp58 = 0, $add61 = 0.0, $sub = 0.0, $add61_sink = 0.0, $conv62 = 0, $nodesep = 0, $13 = 0, $14 = 0, $call67 = 0, $call68 = 0, $tobool69 = 0, $call71 = 0, $cmp72 = 0, $15 = 0.0, $cmp76 = 0, $call81 = 0, $tobool82 = 0, $exact_ranksep = 0, $16 = 0.0, $mul88 = 0.0, $cmp89 = 0, $add93 = 0.0, $sub97 = 0.0, $add93_sink = 0.0, $conv94 = 0, $ranksep = 0, $17 = 0, $18 = 0, $call103 = 0, $call104 = 0, $conv105 = 0, $showboxes = 0, $19 = 0, $20 = 0, $call108 = 0, $call109 = 0, $call110 = 0, $fontnames = 0, $21 = 0, $size = 0, $call114 = 0, $22 = 0, $filled = 0, $23 = 0, $page = 0, $call119 = 0, $call120 = 0, $call121 = 0, $24 = 0, $centered = 0, $call124 = 0, $tobool125 = 0, $call127 = 0, $cmp128 = 0, $conv130 = 0, $25 = 0, $landscape = 0, $call134 = 0, $tobool135 = 0, $26 = 0, $cmp138 = 0, $cmp142 = 0, $phitmp = 0, $27 = 0, $28 = 0, $landscape147 = 0, $call149 = 0, $tobool150 = 0, $call152 = 0, $29 = 0, $landscape155 = 0, $call159 = 0, $call160 = 0, $call161 = 0, $call162 = 0, $30 = 0, $dpi = 0, $call165 = 0, $tobool166 = 0, $31 = 0, $tobool170 = 0, $call172 = 0, $tobool173 = 0, $32 = 0, $tobool177 = 0, $p_1 = 0, $call179 = 0.0, $33 = 0, $dpi182 = 0, $34 = 0, $35 = 0, $call185 = 0, $proto = 0, $36 = 0, $n = 0, $37 = 0, $38 = 0, $call186 = 0, $39 = 0, $n188 = 0, $40 = 0, $41 = 0, $call189 = 0, $42 = 0, $n191 = 0, $43 = 0, $44 = 0, $call192 = 0, $45 = 0, $n194 = 0, $46 = 0, $47 = 0, $call195 = 0, $48 = 0, $n197 = 0, $49 = 0, $50 = 0, $call198 = 0, $51 = 0, $n200 = 0, $52 = 0, $53 = 0, $call201 = 0, $54 = 0, $n203 = 0, $55 = 0, $56 = 0, $call204 = 0, $57 = 0, $n206 = 0, $58 = 0, $59 = 0, $call207 = 0, $60 = 0, $n209 = 0, $61 = 0, $62 = 0, $call210 = 0, $63 = 0, $n212 = 0, $64 = 0, $65 = 0, $call213 = 0, $66 = 0, $n215 = 0, $67 = 0, $68 = 0, $call216 = 0, $69 = 0, $n218 = 0, $70 = 0, $71 = 0, $call219 = 0, $72 = 0, $n221 = 0, $73 = 0, $74 = 0, $call222 = 0, $75 = 0, $n224 = 0, $76 = 0, $77 = 0, $call225 = 0, $78 = 0, $n227 = 0, $79 = 0, $80 = 0, $call228 = 0, $81 = 0, $n230 = 0, $82 = 0, $83 = 0, $call231 = 0, $84 = 0, $n233 = 0, $85 = 0, $86 = 0, $call234 = 0, $87 = 0, $n236 = 0, $88 = 0, $89 = 0, $call237 = 0, $90 = 0, $n239 = 0, $91 = 0, $92 = 0, $call240 = 0, $93 = 0, $n242 = 0, $94 = 0, $95 = 0, $call243 = 0, $96 = 0, $n245 = 0, $97 = 0, $98 = 0, $call246 = 0, $99 = 0, $n248 = 0, $100 = 0, $101 = 0, $call249 = 0, $102 = 0, $n251 = 0, $103 = 0, $104 = 0, $call252 = 0, $105 = 0, $n254 = 0, $106 = 0, $107 = 0, $call255 = 0, $108 = 0, $n257 = 0, $109 = 0, $110 = 0, $call258 = 0, $111 = 0, $n260 = 0, $112 = 0, $113 = 0, $call261 = 0, $114 = 0, $n263 = 0, $115 = 0, $116 = 0, $call264 = 0, $117 = 0, $e = 0, $118 = 0, $119 = 0, $call266 = 0, $120 = 0, $e268 = 0, $121 = 0, $122 = 0, $call269 = 0, $123 = 0, $e271 = 0, $124 = 0, $125 = 0, $call272 = 0, $126 = 0, $e274 = 0, $127 = 0, $128 = 0, $call275 = 0, $129 = 0, $e277 = 0, $130 = 0, $131 = 0, $call278 = 0, $132 = 0, $e280 = 0, $133 = 0, $134 = 0, $call281 = 0, $135 = 0, $e283 = 0, $136 = 0, $137 = 0, $call284 = 0, $138 = 0, $e286 = 0, $139 = 0, $140 = 0, $call287 = 0, $141 = 0, $e289 = 0, $142 = 0, $143 = 0, $call290 = 0, $144 = 0, $e292 = 0, $145 = 0, $146 = 0, $call293 = 0, $147 = 0, $e295 = 0, $148 = 0, $149 = 0, $call296 = 0, $150 = 0, $e298 = 0, $151 = 0, $152 = 0, $call299 = 0, $153 = 0, $e301 = 0, $154 = 0, $155 = 0, $call302 = 0, $156 = 0, $e304 = 0, $157 = 0, $158 = 0, $call305 = 0, $159 = 0, $e307 = 0, $160 = 0, $161 = 0, $call308 = 0, $162 = 0, $e310 = 0, $163 = 0, $164 = 0, $call311 = 0, $165 = 0, $e313 = 0, $166 = 0, $167 = 0, $call314 = 0, $168 = 0, $e316 = 0, $169 = 0, $170 = 0, $call317 = 0, $171 = 0, $e319 = 0, $172 = 0, $173 = 0, $call320 = 0, $174 = 0, $e322 = 0, $175 = 0, $176 = 0, $call323 = 0, $177 = 0, $e325 = 0, $178 = 0, $179 = 0, $call326 = 0, $180 = 0, $e328 = 0, $181 = 0, $182 = 0, $call329 = 0, $183 = 0, $e331 = 0, $184 = 0, $185 = 0, $call332 = 0, $186 = 0, $e334 = 0, $187 = 0, $188 = 0, $call335 = 0, $189 = 0, $e337 = 0, $190 = 0, $191 = 0, $call338 = 0, $192 = 0, $e340 = 0, $193 = 0, $194 = 0, $call341 = 0, $195 = 0, $e343 = 0, $196 = 0, $197 = 0, $call344 = 0, $198 = 0, $e346 = 0, $199 = 0, $200 = 0, $call347 = 0, $201 = 0, $e349 = 0, $202 = 0, $203 = 0, $call350 = 0, $call351 = 0, $204 = 0, $xdots = 0, $call354 = 0, $tobool355 = 0, $205 = 0, $tobool358 = 0, $call360 = 0, $206 = 0, $id = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $xf = __stackBase__ | 0;
    $call = _zmalloc(96) | 0;
    $0 = $call;
    $drawing = $g + 48 | 0;
    HEAP32[$drawing >> 2] = $0;
    $1 = $g | 0;
    $call1 = _agget($1, 115496) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $p_0 = $call1;
      label = 4;
      break;
    }
   case 3:
    $call2 = _getenv(114976) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      $p_0 = $call2;
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP32[4064] | 0;
    $call4 = _strlen($p_0 | 0) | 0;
    $add5 = $call4 + 12 | 0;
    $call6 = _grealloc($2, $add5) | 0;
    HEAP32[4064] = $call6;
    _memcpy($call6 | 0, 114464, 12);
    $3 = HEAP32[4064] | 0;
    $call8 = _strcat($3 | 0, $p_0 | 0) | 0;
    $4 = HEAP32[4064] | 0;
    $call9 = _putenv($4 | 0) | 0;
    label = 5;
    break;
   case 5:
    $call10 = _findCharset($g) | 0;
    $conv = $call10 & 255;
    $charset = $g + 155 | 0;
    HEAP8[$charset] = $conv;
    $root = $g + 32 | 0;
    $5 = HEAP32[$root >> 2] | 0;
    $6 = $5 | 0;
    $call12 = _agfindattr($6, 113904) | 0;
    $call13 = +_late_double($1, $call12, 0.0, 0.0);
    $7 = HEAP32[$drawing >> 2] | 0;
    $quantum = $7 | 0;
    HEAPF64[$quantum >> 3] = $call13;
    $call16 = _agget($1, 113448) | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      $rankdir_0 = 0;
      label = 13;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $8 = HEAP8[$call16] | 0;
    $cmp = $8 << 24 >> 24 == 76;
    if ($cmp) {
      label = 7;
      break;
    } else {
      $9 = $8;
      label = 9;
      break;
    }
   case 7:
    $call22 = _strcmp($call16 | 0, 112920) | 0;
    $tobool23 = ($call22 | 0) == 0;
    if ($tobool23) {
      $rankdir_0 = 1;
      label = 13;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $_pr = HEAP8[$call16] | 0;
    $9 = $_pr;
    label = 9;
    break;
   case 9:
    $cmp27 = $9 << 24 >> 24 == 66;
    if ($cmp27) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $call30 = _strcmp($call16 | 0, 112416) | 0;
    $tobool31 = ($call30 | 0) == 0;
    if ($tobool31) {
      $rankdir_0 = 2;
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $10 = HEAP8[$call16] | 0;
    $cmp36 = $10 << 24 >> 24 == 82;
    if ($cmp36) {
      label = 12;
      break;
    } else {
      $rankdir_0 = 0;
      label = 13;
      break;
    }
   case 12:
    $call39 = _strcmp($call16 | 0, 111880) | 0;
    $tobool40 = ($call39 | 0) == 0;
    $_ = $tobool40 ? 3 : 0;
    $rankdir_0 = $_;
    label = 13;
    break;
   case 13:
    $tobool46 = $use_rankdir << 24 >> 24 == 0;
    $shl = $rankdir_0 << 2;
    if ($tobool46) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $or = $shl | $rankdir_0;
    $rankdir49 = $g + 156 | 0;
    HEAP32[$rankdir49 >> 2] = $or;
    label = 16;
    break;
   case 15:
    $rankdir53 = $g + 156 | 0;
    HEAP32[$rankdir53 >> 2] = $shl;
    label = 16;
    break;
   case 16:
    $11 = HEAP32[$root >> 2] | 0;
    $12 = $11 | 0;
    $call56 = _agfindattr($12, 111408) | 0;
    $call57 = +_late_double($1, $call56, .25, .02);
    HEAPF64[$xf >> 3] = $call57;
    $mul = $call57 * 72.0;
    $cmp58 = $mul < 0.0;
    if ($cmp58) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $add61 = $mul + .5;
    $add61_sink = $add61;
    label = 19;
    break;
   case 18:
    $sub = $mul + -.5;
    $add61_sink = $sub;
    label = 19;
    break;
   case 19:
    $conv62 = ~~$add61_sink;
    $nodesep = $g + 260 | 0;
    HEAP32[$nodesep >> 2] = $conv62;
    $13 = HEAP32[$root >> 2] | 0;
    $14 = $13 | 0;
    $call67 = _agfindattr($14, 110976) | 0;
    $call68 = _late_string($1, $call67, 0) | 0;
    $tobool69 = ($call68 | 0) == 0;
    if ($tobool69) {
      label = 26;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call71 = _sscanf($call68 | 0, 121264, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $xf, tempInt) | 0) | 0;
    $cmp72 = ($call71 | 0) == 0;
    if ($cmp72) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    HEAPF64[$xf >> 3] = .5;
    label = 24;
    break;
   case 22:
    $15 = +HEAPF64[$xf >> 3];
    $cmp76 = $15 < .02;
    if ($cmp76) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    HEAPF64[$xf >> 3] = .02;
    label = 24;
    break;
   case 24:
    $call81 = _strstr($call68 | 0, 110600) | 0;
    $tobool82 = ($call81 | 0) == 0;
    if ($tobool82) {
      label = 27;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $exact_ranksep = $g + 288 | 0;
    HEAP8[$exact_ranksep] = 1;
    label = 27;
    break;
   case 26:
    HEAPF64[$xf >> 3] = .5;
    label = 27;
    break;
   case 27:
    $16 = +HEAPF64[$xf >> 3];
    $mul88 = $16 * 72.0;
    $cmp89 = $mul88 < 0.0;
    if ($cmp89) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add93 = $mul88 + .5;
    $add93_sink = $add93;
    label = 30;
    break;
   case 29:
    $sub97 = $mul88 + -.5;
    $add93_sink = $sub97;
    label = 30;
    break;
   case 30:
    $conv94 = ~~$add93_sink;
    $ranksep = $g + 264 | 0;
    HEAP32[$ranksep >> 2] = $conv94;
    $17 = HEAP32[$root >> 2] | 0;
    $18 = $17 | 0;
    $call103 = _agfindattr($18, 110168) | 0;
    $call104 = _late_int($1, $call103, 0, 0) | 0;
    $conv105 = $call104 & 255;
    $showboxes = $g + 253 | 0;
    HEAP8[$showboxes] = $conv105;
    $19 = HEAP32[$root >> 2] | 0;
    $20 = $19 | 0;
    $call108 = _agfindattr($20, 109760) | 0;
    $call109 = _late_string($1, $call108, 0) | 0;
    $call110 = _maptoken($call109, 16224, 16240) | 0;
    $fontnames = $g + 256 | 0;
    HEAP32[$fontnames >> 2] = $call110;
    _setRatio($g);
    $21 = HEAP32[$drawing >> 2] | 0;
    $size = $21 + 64 | 0;
    $call114 = _getdoubles2ptf($g, 109432, $size) | 0;
    $22 = HEAP32[$drawing >> 2] | 0;
    $filled = $22 + 80 | 0;
    HEAP8[$filled] = $call114;
    $23 = HEAP32[$drawing >> 2] | 0;
    $page = $23 + 48 | 0;
    $call119 = _getdoubles2ptf($g, 109072, $page) | 0;
    $call120 = _agget($1, 108448) | 0;
    $call121 = _mapbool($call120) | 0;
    $24 = HEAP32[$drawing >> 2] | 0;
    $centered = $24 + 82 | 0;
    HEAP8[$centered] = $call121;
    $call124 = _agget($1, 108024) | 0;
    $tobool125 = ($call124 | 0) == 0;
    if ($tobool125) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $call127 = _atoi($call124 | 0) | 0;
    $cmp128 = ($call127 | 0) == 90;
    $conv130 = $cmp128 & 1;
    $25 = HEAP32[$drawing >> 2] | 0;
    $landscape = $25 + 81 | 0;
    HEAP8[$landscape] = $conv130;
    label = 38;
    break;
   case 32:
    $call134 = _agget($1, 107520) | 0;
    $tobool135 = ($call134 | 0) == 0;
    if ($tobool135) {
      label = 36;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $26 = HEAP8[$call134] | 0;
    $cmp138 = $26 << 24 >> 24 == 108;
    if ($cmp138) {
      $27 = 1;
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $cmp142 = $26 << 24 >> 24 == 76;
    $phitmp = $cmp142 & 1;
    $27 = $phitmp;
    label = 35;
    break;
   case 35:
    $28 = HEAP32[$drawing >> 2] | 0;
    $landscape147 = $28 + 81 | 0;
    HEAP8[$landscape147] = $27;
    label = 38;
    break;
   case 36:
    $call149 = _agget($1, 107128) | 0;
    $tobool150 = ($call149 | 0) == 0;
    if ($tobool150) {
      label = 38;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $call152 = _mapbool($call149) | 0;
    $29 = HEAP32[$drawing >> 2] | 0;
    $landscape155 = $29 + 81 | 0;
    HEAP8[$landscape155] = $call152;
    label = 38;
    break;
   case 38:
    $call159 = _agget($1, 106784) | 0;
    $call160 = _maptoken($call159, 16192, 16208) | 0;
    HEAP32[42032] = $call160;
    $call161 = _agget($1, 106384) | 0;
    $call162 = _mapbool($call161) | 0;
    HEAP8[167952] = $call162;
    HEAP32[41356] = 0;
    $30 = HEAP32[$drawing >> 2] | 0;
    $dpi = $30 + 24 | 0;
    HEAPF64[$dpi >> 3] = 0.0;
    $call165 = _agget($1, 106016) | 0;
    $tobool166 = ($call165 | 0) == 0;
    if ($tobool166) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $31 = HEAP8[$call165] | 0;
    $tobool170 = $31 << 24 >> 24 == 0;
    if ($tobool170) {
      label = 40;
      break;
    } else {
      $p_1 = $call165;
      label = 42;
      break;
    }
   case 40:
    $call172 = _agget($1, 105656) | 0;
    $tobool173 = ($call172 | 0) == 0;
    if ($tobool173) {
      label = 43;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $32 = HEAP8[$call172] | 0;
    $tobool177 = $32 << 24 >> 24 == 0;
    if ($tobool177) {
      label = 43;
      break;
    } else {
      $p_1 = $call172;
      label = 42;
      break;
    }
   case 42:
    $call179 = +_atof($p_1);
    $33 = HEAP32[$drawing >> 2] | 0;
    $dpi182 = $33 + 24 | 0;
    HEAPF64[$dpi182 >> 3] = $call179;
    label = 43;
    break;
   case 43:
    _do_graph_label($g);
    HEAPF64[20871] = 1.0e+37;
    $34 = HEAP32[$root >> 2] | 0;
    $35 = $34 | 0;
    $call185 = _agfindattr($35, 105304) | 0;
    HEAP32[41866] = $call185;
    $proto = $g + 40 | 0;
    $36 = HEAP32[$proto >> 2] | 0;
    $n = $36 | 0;
    $37 = HEAP32[$n >> 2] | 0;
    $38 = $37 | 0;
    $call186 = _agfindattr($38, 104960) | 0;
    HEAP32[41592] = $call186;
    $39 = HEAP32[$proto >> 2] | 0;
    $n188 = $39 | 0;
    $40 = HEAP32[$n188 >> 2] | 0;
    $41 = $40 | 0;
    $call189 = _agfindattr($41, 104480) | 0;
    HEAP32[41552] = $call189;
    $42 = HEAP32[$proto >> 2] | 0;
    $n191 = $42 | 0;
    $43 = HEAP32[$n191 >> 2] | 0;
    $44 = $43 | 0;
    $call192 = _agfindattr($44, 104088) | 0;
    HEAP32[41568] = $call192;
    $45 = HEAP32[$proto >> 2] | 0;
    $n194 = $45 | 0;
    $46 = HEAP32[$n194 >> 2] | 0;
    $47 = $46 | 0;
    $call195 = _agfindattr($47, 103592) | 0;
    HEAP32[41616] = $call195;
    $48 = HEAP32[$proto >> 2] | 0;
    $n197 = $48 | 0;
    $49 = HEAP32[$n197 >> 2] | 0;
    $50 = $49 | 0;
    $call198 = _agfindattr($50, 103240) | 0;
    HEAP32[41604] = $call198;
    $51 = HEAP32[$proto >> 2] | 0;
    $n200 = $51 | 0;
    $52 = HEAP32[$n200 >> 2] | 0;
    $53 = $52 | 0;
    $call201 = _agfindattr($53, 102872) | 0;
    HEAP32[41560] = $call201;
    $54 = HEAP32[$proto >> 2] | 0;
    $n203 = $54 | 0;
    $55 = HEAP32[$n203 >> 2] | 0;
    $56 = $55 | 0;
    $call204 = _agfindattr($56, 102528) | 0;
    HEAP32[41596] = $call204;
    $57 = HEAP32[$proto >> 2] | 0;
    $n206 = $57 | 0;
    $58 = HEAP32[$n206 >> 2] | 0;
    $59 = $58 | 0;
    $call207 = _agfindattr($59, 102080) | 0;
    HEAP32[41598] = $call207;
    $60 = HEAP32[$proto >> 2] | 0;
    $n209 = $60 | 0;
    $61 = HEAP32[$n209 >> 2] | 0;
    $62 = $61 | 0;
    $call210 = _agfindattr($62, 101664) | 0;
    HEAP32[41600] = $call210;
    $63 = HEAP32[$proto >> 2] | 0;
    $n212 = $63 | 0;
    $64 = HEAP32[$n212 >> 2] | 0;
    $65 = $64 | 0;
    $call213 = _agfindattr($65, 123360) | 0;
    HEAP32[41588] = $call213;
    $66 = HEAP32[$proto >> 2] | 0;
    $n215 = $66 | 0;
    $67 = HEAP32[$n215 >> 2] | 0;
    $68 = $67 | 0;
    $call216 = _agfindattr($68, 101104) | 0;
    HEAP32[41550] = $call216;
    $69 = HEAP32[$proto >> 2] | 0;
    $n218 = $69 | 0;
    $70 = HEAP32[$n218 >> 2] | 0;
    $71 = $70 | 0;
    $call219 = _agfindattr($71, 110168) | 0;
    HEAP32[41566] = $call219;
    $72 = HEAP32[$proto >> 2] | 0;
    $n221 = $72 | 0;
    $73 = HEAP32[$n221 >> 2] | 0;
    $74 = $73 | 0;
    $call222 = _agfindattr($74, 100744) | 0;
    HEAP32[41576] = $call222;
    $75 = HEAP32[$proto >> 2] | 0;
    $n224 = $75 | 0;
    $76 = HEAP32[$n224 >> 2] | 0;
    $77 = $76 | 0;
    $call225 = _agfindattr($77, 105304) | 0;
    HEAP32[41580] = $call225;
    $78 = HEAP32[$proto >> 2] | 0;
    $n227 = $78 | 0;
    $79 = HEAP32[$n227 >> 2] | 0;
    $80 = $79 | 0;
    $call228 = _agfindattr($80, 100232) | 0;
    HEAP32[41564] = $call228;
    $81 = HEAP32[$proto >> 2] | 0;
    $n230 = $81 | 0;
    $82 = HEAP32[$n230 >> 2] | 0;
    $83 = $82 | 0;
    $call231 = _agfindattr($83, 99888) | 0;
    HEAP32[41574] = $call231;
    $84 = HEAP32[$proto >> 2] | 0;
    $n233 = $84 | 0;
    $85 = HEAP32[$n233 >> 2] | 0;
    $86 = $85 | 0;
    $call234 = _agfindattr($86, 99424) | 0;
    HEAP32[41562] = $call234;
    $87 = HEAP32[$proto >> 2] | 0;
    $n236 = $87 | 0;
    $88 = HEAP32[$n236 >> 2] | 0;
    $89 = $88 | 0;
    $call237 = _agfindattr($89, 107520) | 0;
    HEAP32[41578] = $call237;
    $90 = HEAP32[$proto >> 2] | 0;
    $n239 = $90 | 0;
    $91 = HEAP32[$n239 >> 2] | 0;
    $92 = $91 | 0;
    $call240 = _agfindattr($92, 99072) | 0;
    HEAP32[41608] = $call240;
    $93 = HEAP32[$proto >> 2] | 0;
    $n242 = $93 | 0;
    $94 = HEAP32[$n242 >> 2] | 0;
    $95 = $94 | 0;
    $call243 = _agfindattr($95, 98616) | 0;
    HEAP32[41602] = $call243;
    $96 = HEAP32[$proto >> 2] | 0;
    $n245 = $96 | 0;
    $97 = HEAP32[$n245 >> 2] | 0;
    $98 = $97 | 0;
    $call246 = _agfindattr($98, 98208) | 0;
    HEAP32[41590] = $call246;
    $99 = HEAP32[$proto >> 2] | 0;
    $n248 = $99 | 0;
    $100 = HEAP32[$n248 >> 2] | 0;
    $101 = $100 | 0;
    $call249 = _agfindattr($101, 97824) | 0;
    HEAP32[41582] = $call249;
    $102 = HEAP32[$proto >> 2] | 0;
    $n251 = $102 | 0;
    $103 = HEAP32[$n251 >> 2] | 0;
    $104 = $103 | 0;
    $call252 = _agfindattr($104, 97344) | 0;
    HEAP32[41586] = $call252;
    $105 = HEAP32[$proto >> 2] | 0;
    $n254 = $105 | 0;
    $106 = HEAP32[$n254 >> 2] | 0;
    $107 = $106 | 0;
    $call255 = _agfindattr($107, 97016) | 0;
    HEAP32[41594] = $call255;
    $108 = HEAP32[$proto >> 2] | 0;
    $n257 = $108 | 0;
    $109 = HEAP32[$n257 >> 2] | 0;
    $110 = $109 | 0;
    $call258 = _agfindattr($110, 96544) | 0;
    HEAP32[41614] = $call258;
    $111 = HEAP32[$proto >> 2] | 0;
    $n260 = $111 | 0;
    $112 = HEAP32[$n260 >> 2] | 0;
    $113 = $112 | 0;
    $call261 = _agfindattr($113, 96096) | 0;
    HEAP32[41558] = $call261;
    $114 = HEAP32[$proto >> 2] | 0;
    $n263 = $114 | 0;
    $115 = HEAP32[$n263 >> 2] | 0;
    $116 = $115 | 0;
    $call264 = _agfindattr($116, 95784) | 0;
    HEAP32[41548] = $call264;
    $117 = HEAP32[$proto >> 2] | 0;
    $e = $117 + 4 | 0;
    $118 = HEAP32[$e >> 2] | 0;
    $119 = $118 | 0;
    $call266 = _agfindattr($119, 95384) | 0;
    HEAP32[41894] = $call266;
    $120 = HEAP32[$proto >> 2] | 0;
    $e268 = $120 + 4 | 0;
    $121 = HEAP32[$e268 >> 2] | 0;
    $122 = $121 | 0;
    $call269 = _agfindattr($122, 103592) | 0;
    HEAP32[41958] = $call269;
    $123 = HEAP32[$proto >> 2] | 0;
    $e271 = $123 + 4 | 0;
    $124 = HEAP32[$e271 >> 2] | 0;
    $125 = $124 | 0;
    $call272 = _agfindattr($125, 102528) | 0;
    HEAP32[41940] = $call272;
    $126 = HEAP32[$proto >> 2] | 0;
    $e274 = $126 + 4 | 0;
    $127 = HEAP32[$e274 >> 2] | 0;
    $128 = $127 | 0;
    $call275 = _agfindattr($128, 102080) | 0;
    HEAP32[41942] = $call275;
    $129 = HEAP32[$proto >> 2] | 0;
    $e277 = $129 + 4 | 0;
    $130 = HEAP32[$e277 >> 2] | 0;
    $131 = $130 | 0;
    $call278 = _agfindattr($131, 101664) | 0;
    HEAP32[41944] = $call278;
    $132 = HEAP32[$proto >> 2] | 0;
    $e280 = $132 + 4 | 0;
    $133 = HEAP32[$e280 >> 2] | 0;
    $134 = $133 | 0;
    $call281 = _agfindattr($134, 123360) | 0;
    HEAP32[41934] = $call281;
    $135 = HEAP32[$proto >> 2] | 0;
    $e283 = $135 + 4 | 0;
    $136 = HEAP32[$e283 >> 2] | 0;
    $137 = $136 | 0;
    $call284 = _agfindattr($137, 101104) | 0;
    HEAP32[41892] = $call284;
    $138 = HEAP32[$proto >> 2] | 0;
    $e286 = $138 + 4 | 0;
    $139 = HEAP32[$e286 >> 2] | 0;
    $140 = $139 | 0;
    $call287 = _agfindattr($140, 95048) | 0;
    HEAP32[41932] = $call287;
    $141 = HEAP32[$proto >> 2] | 0;
    $e289 = $141 + 4 | 0;
    $142 = HEAP32[$e289 >> 2] | 0;
    $143 = $142 | 0;
    $call290 = _agfindattr($143, 94768) | 0;
    HEAP32[41946] = $call290;
    $144 = HEAP32[$proto >> 2] | 0;
    $e292 = $144 + 4 | 0;
    $145 = HEAP32[$e292 >> 2] | 0;
    $146 = $145 | 0;
    $call293 = _agfindattr($146, 94464) | 0;
    HEAP32[41964] = $call293;
    $147 = HEAP32[$proto >> 2] | 0;
    $e295 = $147 + 4 | 0;
    $148 = HEAP32[$e295 >> 2] | 0;
    $149 = $148 | 0;
    $call296 = _agfindattr($149, 94088) | 0;
    HEAP32[41960] = $call296;
    $150 = HEAP32[$proto >> 2] | 0;
    $e298 = $150 + 4 | 0;
    $151 = HEAP32[$e298 >> 2] | 0;
    $152 = $151 | 0;
    $call299 = _agfindattr($152, 93784) | 0;
    HEAP32[41936] = $call299;
    $153 = HEAP32[$proto >> 2] | 0;
    $e301 = $153 + 4 | 0;
    $154 = HEAP32[$e301 >> 2] | 0;
    $155 = $154 | 0;
    $call302 = _agfindattr($155, 93416) | 0;
    HEAP32[41900] = $call302;
    $156 = HEAP32[$proto >> 2] | 0;
    $e304 = $156 + 4 | 0;
    $157 = HEAP32[$e304 >> 2] | 0;
    $158 = $157 | 0;
    $call305 = _agfindattr($158, 93096) | 0;
    HEAP32[41922] = $call305;
    $159 = HEAP32[$proto >> 2] | 0;
    $e307 = $159 + 4 | 0;
    $160 = HEAP32[$e307 >> 2] | 0;
    $161 = $160 | 0;
    $call308 = _agfindattr($161, 92696) | 0;
    HEAP32[41924] = $call308;
    $162 = HEAP32[$proto >> 2] | 0;
    $e310 = $162 + 4 | 0;
    $163 = HEAP32[$e310 >> 2] | 0;
    $164 = $163 | 0;
    $call311 = _agfindattr($164, 92376) | 0;
    HEAP32[41926] = $call311;
    $165 = HEAP32[$proto >> 2] | 0;
    $e313 = $165 + 4 | 0;
    $166 = HEAP32[$e313 >> 2] | 0;
    $167 = $166 | 0;
    $call314 = _agfindattr($167, 91872) | 0;
    HEAP32[41928] = $call314;
    $168 = HEAP32[$proto >> 2] | 0;
    $e316 = $168 + 4 | 0;
    $169 = HEAP32[$e316 >> 2] | 0;
    $170 = $169 | 0;
    $call317 = _agfindattr($170, 91536) | 0;
    HEAP32[41930] = $call317;
    $171 = HEAP32[$proto >> 2] | 0;
    $e319 = $171 + 4 | 0;
    $172 = HEAP32[$e319 >> 2] | 0;
    $173 = $172 | 0;
    $call320 = _agfindattr($173, 91264) | 0;
    HEAP32[41918] = $call320;
    $174 = HEAP32[$proto >> 2] | 0;
    $e322 = $174 + 4 | 0;
    $175 = HEAP32[$e322 >> 2] | 0;
    $176 = $175 | 0;
    $call323 = _agfindattr($176, 110168) | 0;
    HEAP32[41906] = $call323;
    $177 = HEAP32[$proto >> 2] | 0;
    $e325 = $177 + 4 | 0;
    $178 = HEAP32[$e325 >> 2] | 0;
    $179 = $178 | 0;
    $call326 = _agfindattr($179, 102872) | 0;
    HEAP32[41904] = $call326;
    $180 = HEAP32[$proto >> 2] | 0;
    $e328 = $180 + 4 | 0;
    $181 = HEAP32[$e328 >> 2] | 0;
    $182 = $181 | 0;
    $call329 = _agfindattr($182, 90896) | 0;
    HEAP32[41952] = $call329;
    $183 = HEAP32[$proto >> 2] | 0;
    $e331 = $183 + 4 | 0;
    $184 = HEAP32[$e331 >> 2] | 0;
    $185 = $184 | 0;
    $call332 = _agfindattr($185, 90584) | 0;
    HEAP32[41962] = $call332;
    $186 = HEAP32[$proto >> 2] | 0;
    $e334 = $186 + 4 | 0;
    $187 = HEAP32[$e334 >> 2] | 0;
    $188 = $187 | 0;
    $call335 = _agfindattr($188, 90288) | 0;
    HEAP32[41954] = $call335;
    $189 = HEAP32[$proto >> 2] | 0;
    $e337 = $189 + 4 | 0;
    $190 = HEAP32[$e337 >> 2] | 0;
    $191 = $190 | 0;
    $call338 = _agfindattr($191, 97344) | 0;
    HEAP32[41920] = $call338;
    $192 = HEAP32[$proto >> 2] | 0;
    $e340 = $192 + 4 | 0;
    $193 = HEAP32[$e340 >> 2] | 0;
    $194 = $193 | 0;
    $call341 = _agfindattr($194, 96544) | 0;
    HEAP32[41956] = $call341;
    $195 = HEAP32[$proto >> 2] | 0;
    $e343 = $195 + 4 | 0;
    $196 = HEAP32[$e343 >> 2] | 0;
    $197 = $196 | 0;
    $call344 = _agfindattr($197, 89960) | 0;
    HEAP32[41902] = $call344;
    $198 = HEAP32[$proto >> 2] | 0;
    $e346 = $198 + 4 | 0;
    $199 = HEAP32[$e346 >> 2] | 0;
    $200 = $199 | 0;
    $call347 = _agfindattr($200, 163160) | 0;
    HEAP32[41938] = $call347;
    $201 = HEAP32[$proto >> 2] | 0;
    $e349 = $201 + 4 | 0;
    $202 = HEAP32[$e349 >> 2] | 0;
    $203 = $202 | 0;
    $call350 = _agfindattr($203, 100744) | 0;
    HEAP32[41916] = $call350;
    $call351 = _init_xdot($g) | 0;
    $204 = HEAP32[$drawing >> 2] | 0;
    $xdots = $204 + 88 | 0;
    HEAP32[$xdots >> 2] = $call351;
    $call354 = _agget($1, 162816) | 0;
    $tobool355 = ($call354 | 0) == 0;
    if ($tobool355) {
      label = 46;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $205 = HEAP8[$call354] | 0;
    $tobool358 = $205 << 24 >> 24 == 0;
    if ($tobool358) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $call360 = _strdup_and_subst_obj($call354, $1) | 0;
    $206 = HEAP32[$drawing >> 2] | 0;
    $id = $206 + 92 | 0;
    HEAP32[$id >> 2] = $call360;
    label = 46;
    break;
   case 46:
    STACKTOP = __stackBase__;
    return;
  }
}
function _findCharset($g) {
  $g = $g | 0;
  var $0 = 0, $root = 0, $1 = 0, $2 = 0, $call = 0, $call1 = 0, $call2 = 0, $tobool = 0, $call3 = 0, $tobool4 = 0, $call6 = 0, $tobool7 = 0, $call9 = 0, $tobool10 = 0, $call12 = 0, $tobool13 = 0, $call15 = 0, $tobool16 = 0, $call18 = 0, $tobool19 = 0, $call20 = 0, $tobool21 = 0, $call23 = 0, $tobool24 = 0, $call27 = 0, $tobool28 = 0, $call30 = 0, $tobool31 = 0, $call34 = 0, $enc_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $root = $g + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $2 = $1 | 0;
    $call = _agfindattr($2, 157048) | 0;
    $call1 = _late_nnstring($0, $call, 156776) | 0;
    $call2 = _strcasecmp($call1, 156480) | 0;
    $tobool = ($call2 | 0) == 0;
    if ($tobool) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call3 = _strcasecmp($call1, 156144) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call6 = _strcasecmp($call1, 155752) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call9 = _strcasecmp($call1, 162056) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call12 = _strcasecmp($call1, 155456) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call15 = _strcasecmp($call1, 155088) | 0;
    $tobool16 = ($call15 | 0) == 0;
    if ($tobool16) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call18 = _strcasecmp($call1, 154792) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      $enc_0 = 1;
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call20 = _strcasecmp($call1, 154416) | 0;
    $tobool21 = ($call20 | 0) == 0;
    if ($tobool21) {
      $enc_0 = 2;
      label = 14;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call23 = _strcasecmp($call1, 154184) | 0;
    $tobool24 = ($call23 | 0) == 0;
    if ($tobool24) {
      $enc_0 = 2;
      label = 14;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call27 = _strcasecmp($call1, 156776) | 0;
    $tobool28 = ($call27 | 0) == 0;
    if ($tobool28) {
      $enc_0 = 0;
      label = 14;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call30 = _strcasecmp($call1, 153816) | 0;
    $tobool31 = ($call30 | 0) == 0;
    if ($tobool31) {
      $enc_0 = 0;
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $call34 = _agerr(0, 153456, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call1, tempInt) | 0) | 0;
    $enc_0 = 0;
    label = 14;
    break;
   case 14:
    STACKTOP = __stackBase__;
    return $enc_0 | 0;
  }
  return 0;
}
function _setRatio($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $conv = 0, $cmp = 0, $call7 = 0, $tobool8 = 0, $drawing = 0, $2 = 0, $ratio_kind = 0, $cmp13 = 0, $call16 = 0, $tobool17 = 0, $drawing20 = 0, $3 = 0, $ratio_kind21 = 0, $cmp26 = 0, $call29 = 0, $tobool30 = 0, $drawing33 = 0, $4 = 0, $ratio_kind34 = 0, $cmp39 = 0, $call42 = 0, $tobool43 = 0, $drawing46 = 0, $5 = 0, $ratio_kind47 = 0, $call49 = 0.0, $cmp50 = 0, $drawing54 = 0, $6 = 0, $ratio_kind55 = 0, $7 = 0, $ratio58 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 158960) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    if ($tobool1) {
      label = 19;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $1 << 24 >> 24;
    if (($conv | 0) == 97) {
      label = 5;
      break;
    } else if (($conv | 0) == 99) {
      label = 8;
      break;
    } else if (($conv | 0) == 101) {
      label = 11;
      break;
    } else if (($conv | 0) == 102) {
      label = 14;
      break;
    } else {
      label = 17;
      break;
    }
   case 5:
    $cmp = $1 << 24 >> 24 == 97;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 19;
      break;
    }
   case 6:
    $call7 = _strcmp($call | 0, 158568) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 19;
      break;
    }
   case 7:
    $drawing = $g + 48 | 0;
    $2 = HEAP32[$drawing >> 2] | 0;
    $ratio_kind = $2 + 84 | 0;
    HEAP32[$ratio_kind >> 2] = 4;
    label = 19;
    break;
   case 8:
    $cmp13 = $1 << 24 >> 24 == 99;
    if ($cmp13) {
      label = 9;
      break;
    } else {
      label = 19;
      break;
    }
   case 9:
    $call16 = _strcmp($call | 0, 158192) | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      label = 10;
      break;
    } else {
      label = 19;
      break;
    }
   case 10:
    $drawing20 = $g + 48 | 0;
    $3 = HEAP32[$drawing20 >> 2] | 0;
    $ratio_kind21 = $3 + 84 | 0;
    HEAP32[$ratio_kind21 >> 2] = 3;
    label = 19;
    break;
   case 11:
    $cmp26 = $1 << 24 >> 24 == 101;
    if ($cmp26) {
      label = 12;
      break;
    } else {
      label = 19;
      break;
    }
   case 12:
    $call29 = _strcmp($call | 0, 157792) | 0;
    $tobool30 = ($call29 | 0) == 0;
    if ($tobool30) {
      label = 13;
      break;
    } else {
      label = 19;
      break;
    }
   case 13:
    $drawing33 = $g + 48 | 0;
    $4 = HEAP32[$drawing33 >> 2] | 0;
    $ratio_kind34 = $4 + 84 | 0;
    HEAP32[$ratio_kind34 >> 2] = 5;
    label = 19;
    break;
   case 14:
    $cmp39 = $1 << 24 >> 24 == 102;
    if ($cmp39) {
      label = 15;
      break;
    } else {
      label = 19;
      break;
    }
   case 15:
    $call42 = _strcmp($call | 0, 157464) | 0;
    $tobool43 = ($call42 | 0) == 0;
    if ($tobool43) {
      label = 16;
      break;
    } else {
      label = 19;
      break;
    }
   case 16:
    $drawing46 = $g + 48 | 0;
    $5 = HEAP32[$drawing46 >> 2] | 0;
    $ratio_kind47 = $5 + 84 | 0;
    HEAP32[$ratio_kind47 >> 2] = 2;
    label = 19;
    break;
   case 17:
    $call49 = +_atof($call);
    $cmp50 = $call49 > 0.0;
    if ($cmp50) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $drawing54 = $g + 48 | 0;
    $6 = HEAP32[$drawing54 >> 2] | 0;
    $ratio_kind55 = $6 + 84 | 0;
    HEAP32[$ratio_kind55 >> 2] = 1;
    $7 = HEAP32[$drawing54 >> 2] | 0;
    $ratio58 = $7 + 16 | 0;
    HEAPF64[$ratio58 >> 3] = $call49;
    label = 19;
    break;
   case 19:
    return;
  }
}
function _getdoubles2ptf($g, $name, $result) {
  $g = $g | 0;
  $name = $name | 0;
  $result = $result | 0;
  var $xf = 0, $yf = 0, $c = 0, $0 = 0, $call = 0, $tobool = 0, $call1 = 0, $cmp = 0, $1 = 0.0, $cmp2 = 0, $2 = 0.0, $cmp4 = 0, $mul = 0.0, $cmp6 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $conv10 = 0.0, $x = 0, $3 = 0.0, $mul11 = 0.0, $cmp12 = 0, $add16 = 0.0, $sub20 = 0.0, $add16_sink = 0.0, $conv17 = 0, $conv24 = 0.0, $y = 0, $4 = 0, $cmp26 = 0, $_ = 0, $call29 = 0, $cmp30 = 0, $5 = 0.0, $cmp33 = 0, $mul36 = 0.0, $cmp37 = 0, $add41 = 0.0, $sub45 = 0.0, $add41_sink = 0.0, $conv42 = 0, $conv49 = 0.0, $x50 = 0, $y51 = 0, $6 = 0, $cmp53 = 0, $_6 = 0, $rv_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 24 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $xf = __stackBase__ | 0;
    $yf = __stackBase__ + 8 | 0;
    $c = __stackBase__ + 16 | 0;
    HEAP8[$c] = 0;
    $0 = $g | 0;
    $call = _agget($0, $name) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $rv_0 = 0;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _sscanf($call | 0, 159784, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $xf, HEAP32[tempInt + 8 >> 2] = $yf, HEAP32[tempInt + 16 >> 2] = $c, tempInt) | 0) | 0;
    $cmp = ($call1 | 0) > 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 4:
    $1 = +HEAPF64[$xf >> 3];
    $cmp2 = $1 > 0.0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 13;
      break;
    }
   case 5:
    $2 = +HEAPF64[$yf >> 3];
    $cmp4 = $2 > 0.0;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 13;
      break;
    }
   case 6:
    $mul = $1 * 72.0;
    $cmp6 = $mul < 0.0;
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add = $mul + .5;
    $add_sink = $add;
    label = 9;
    break;
   case 8:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 9;
    break;
   case 9:
    $conv = ~~$add_sink;
    $conv10 = +($conv | 0);
    $x = $result | 0;
    HEAPF64[$x >> 3] = $conv10;
    $3 = +HEAPF64[$yf >> 3];
    $mul11 = $3 * 72.0;
    $cmp12 = $mul11 < 0.0;
    if ($cmp12) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $add16 = $mul11 + .5;
    $add16_sink = $add16;
    label = 12;
    break;
   case 11:
    $sub20 = $mul11 + -.5;
    $add16_sink = $sub20;
    label = 12;
    break;
   case 12:
    $conv17 = ~~$add16_sink;
    $conv24 = +($conv17 | 0);
    $y = $result + 8 | 0;
    HEAPF64[$y >> 3] = $conv24;
    $4 = HEAP8[$c] | 0;
    $cmp26 = $4 << 24 >> 24 == 33;
    $_ = $cmp26 & 1;
    $rv_0 = $_;
    label = 19;
    break;
   case 13:
    HEAP8[$c] = 0;
    $call29 = _sscanf($call | 0, 159400, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $xf, HEAP32[tempInt + 8 >> 2] = $c, tempInt) | 0) | 0;
    $cmp30 = ($call29 | 0) > 0;
    if ($cmp30) {
      label = 14;
      break;
    } else {
      $rv_0 = 0;
      label = 19;
      break;
    }
   case 14:
    $5 = +HEAPF64[$xf >> 3];
    $cmp33 = $5 > 0.0;
    if ($cmp33) {
      label = 15;
      break;
    } else {
      $rv_0 = 0;
      label = 19;
      break;
    }
   case 15:
    $mul36 = $5 * 72.0;
    $cmp37 = $mul36 < 0.0;
    if ($cmp37) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $add41 = $mul36 + .5;
    $add41_sink = $add41;
    label = 18;
    break;
   case 17:
    $sub45 = $mul36 + -.5;
    $add41_sink = $sub45;
    label = 18;
    break;
   case 18:
    $conv42 = ~~$add41_sink;
    $conv49 = +($conv42 | 0);
    $x50 = $result | 0;
    HEAPF64[$x50 >> 3] = $conv49;
    $y51 = $result + 8 | 0;
    HEAPF64[$y51 >> 3] = $conv49;
    $6 = HEAP8[$c] | 0;
    $cmp53 = $6 << 24 >> 24 == 33;
    $_6 = $cmp53 & 1;
    STACKTOP = __stackBase__;
    return $_6 | 0;
   case 19:
    STACKTOP = __stackBase__;
    return $rv_0 | 0;
  }
  return 0;
}
function _setYInvert($g) {
  $g = $g | 0;
  var $0 = 0, $tobool = 0, $y = 0, $1 = 0.0, $y3 = 0, $2 = 0.0, $add = 0.0, $div = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41182] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $y = $g + 80 | 0;
    $1 = +HEAPF64[$y >> 3];
    $y3 = $g + 64 | 0;
    $2 = +HEAPF64[$y3 >> 3];
    $add = $1 + $2;
    HEAPF64[20590] = $add;
    $div = $add / 72.0;
    HEAPF64[20592] = $div;
    label = 4;
    break;
   case 4:
    return;
  }
}
function _do_graph_label($sg) {
  $sg = $sg | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $cmp = 0, $root = 0, $2 = 0, $has_labels = 0, $3 = 0, $or = 0, $call4 = 0, $tobool5 = 0, $cond = 0, $4 = 0, $5 = 0, $call7 = 0, $call8 = 0.0, $6 = 0, $7 = 0, $call10 = 0, $call11 = 0, $8 = 0, $9 = 0, $call13 = 0, $call14 = 0, $call15 = 0, $label = 0, $call17 = 0, $10 = 0, $cmp19 = 0, $tobool22 = 0, $11 = 0, $cmp25 = 0, $12 = 0, $cmp33 = 0, $pos_flag_0 = 0, $call39 = 0, $tobool40 = 0, $13 = 0, $or48 = 0, $or57 = 0, $pos_flag_1 = 0, $label_pos = 0, $14 = 0, $cmp64 = 0, $15 = 0, $dimen_sroa_0_0__idx2 = 0, $dimen_sroa_0_0_copyload3 = 0.0, $dimen_sroa_1_8__idx6 = 0, $dimen_sroa_1_8_copyload7 = 0.0, $add = 0.0, $add71 = 0.0, $rankdir = 0, $16 = 0, $and74 = 0, $tobool75 = 0, $and91 = 0, $tobool92 = 0, $_ = 0, $dimen_sroa_0_0__idx = 0, $dimen_sroa_1_8__idx4 = 0, $_43 = 0, $x100 = 0, $y105 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $sg | 0;
    $call = _agget($0, 123360) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$call] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    if ($cmp) {
      label = 19;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $root = $sg + 32 | 0;
    $2 = HEAP32[$root >> 2] | 0;
    $has_labels = $2 + 153 | 0;
    $3 = HEAP8[$has_labels] | 0;
    $or = $3 | 8;
    HEAP8[$has_labels] = $or;
    $call4 = _aghtmlstr($call) | 0;
    $tobool5 = ($call4 | 0) != 0;
    $cond = $tobool5 ? 2 : 0;
    $4 = HEAP32[$root >> 2] | 0;
    $5 = $4 | 0;
    $call7 = _agfindattr($5, 102528) | 0;
    $call8 = +_late_double($0, $call7, 14.0, 1.0);
    $6 = HEAP32[$root >> 2] | 0;
    $7 = $6 | 0;
    $call10 = _agfindattr($7, 102080) | 0;
    $call11 = _late_nnstring($0, $call10, 161152) | 0;
    $8 = HEAP32[$root >> 2] | 0;
    $9 = $8 | 0;
    $call13 = _agfindattr($9, 101664) | 0;
    $call14 = _late_nnstring($0, $call13, 160776) | 0;
    $call15 = _make_label($0, $call, $cond, $call8, $call11, $call14) | 0;
    $label = $sg + 52 | 0;
    HEAP32[$label >> 2] = $call15;
    $call17 = _agget($0, 160472) | 0;
    $10 = HEAP32[$root >> 2] | 0;
    $cmp19 = ($10 | 0) == ($sg | 0);
    $tobool22 = ($call17 | 0) != 0;
    if ($cmp19) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    if ($tobool22) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $11 = HEAP8[$call17] | 0;
    $cmp25 = $11 << 24 >> 24 == 98;
    if ($cmp25) {
      $pos_flag_0 = 0;
      label = 11;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $pos_flag_0 = 1;
    label = 11;
    break;
   case 8:
    if ($tobool22) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $12 = HEAP8[$call17] | 0;
    $cmp33 = $12 << 24 >> 24 == 116;
    if ($cmp33) {
      $pos_flag_0 = 1;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $pos_flag_0 = 0;
    label = 11;
    break;
   case 11:
    $call39 = _agget($0, 160136) | 0;
    $tobool40 = ($call39 | 0) == 0;
    if ($tobool40) {
      $pos_flag_1 = $pos_flag_0;
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $13 = HEAP8[$call39] | 0;
    if (($13 << 24 >> 24 | 0) == 108) {
      label = 13;
      break;
    } else if (($13 << 24 >> 24 | 0) == 114) {
      label = 14;
      break;
    } else {
      $pos_flag_1 = $pos_flag_0;
      label = 15;
      break;
    }
   case 13:
    $or48 = $pos_flag_0 | 2;
    $pos_flag_1 = $or48;
    label = 15;
    break;
   case 14:
    $or57 = $pos_flag_0 | 4;
    $pos_flag_1 = $or57;
    label = 15;
    break;
   case 15:
    $label_pos = $sg + 287 | 0;
    HEAP8[$label_pos] = $pos_flag_1;
    $14 = HEAP32[$root >> 2] | 0;
    $cmp64 = ($14 | 0) == ($sg | 0);
    if ($cmp64) {
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $15 = HEAP32[$label >> 2] | 0;
    $dimen_sroa_0_0__idx2 = $15 + 24 | 0;
    $dimen_sroa_0_0_copyload3 = +HEAPF64[$dimen_sroa_0_0__idx2 >> 3];
    $dimen_sroa_1_8__idx6 = $15 + 32 | 0;
    $dimen_sroa_1_8_copyload7 = +HEAPF64[$dimen_sroa_1_8__idx6 >> 3];
    $add = $dimen_sroa_0_0_copyload3 + 16.0;
    $add71 = $dimen_sroa_1_8_copyload7 + 8.0;
    $rankdir = $14 + 156 | 0;
    $16 = HEAP32[$rankdir >> 2] | 0;
    $and74 = $16 & 1;
    $tobool75 = ($and74 | 0) == 0;
    $and91 = $pos_flag_1 & 1;
    $tobool92 = $and91 << 24 >> 24 != 0;
    if ($tobool75) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $_ = $tobool92 ? 2 : 0;
    $dimen_sroa_0_0__idx = $sg + 88 + ($_ << 4) | 0;
    HEAPF64[$dimen_sroa_0_0__idx >> 3] = $add;
    $dimen_sroa_1_8__idx4 = $sg + 88 + ($_ << 4) + 8 | 0;
    HEAPF64[$dimen_sroa_1_8__idx4 >> 3] = $add71;
    label = 19;
    break;
   case 18:
    $_43 = $tobool92 ? 1 : 3;
    $x100 = $sg + 88 + ($_43 << 4) | 0;
    HEAPF64[$x100 >> 3] = $add71;
    $y105 = $sg + 88 + ($_43 << 4) + 8 | 0;
    HEAPF64[$y105 >> 3] = $add;
    label = 19;
    break;
   case 19:
    return;
  }
}
function _graph_cleanup($g) {
  $g = $g | 0;
  var $u = 0, $drawing = 0, $0 = 0, $xdots = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $id = 0, $4 = 0, $tobool6 = 0, $5 = 0, $6 = 0, $label = 0, $7 = 0, $8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = $g + 48 | 0;
    $drawing = $u | 0;
    $0 = HEAP32[$drawing >> 2] | 0;
    $xdots = $0 + 88 | 0;
    $1 = HEAP32[$xdots >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $1;
    _freeXDot($2 | 0);
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$drawing >> 2] | 0;
    $id = $3 + 92 | 0;
    $4 = HEAP32[$id >> 2] | 0;
    $tobool6 = ($4 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _free($4);
    label = 6;
    break;
   case 6:
    $5 = HEAP32[$drawing >> 2] | 0;
    $6 = $5;
    _free($6);
    HEAP32[$drawing >> 2] = 0;
    $label = $g + 52 | 0;
    $7 = HEAP32[$label >> 2] | 0;
    _free_label($7);
    $8 = $u;
    _memset($8 | 0, 0, 248);
    return;
  }
}
function _charsetToStr($c) {
  $c = $c | 0;
  var $call = 0, $s_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($c | 0) == 1) {
      label = 3;
      break;
    } else if (($c | 0) == 2) {
      label = 4;
      break;
    } else if (($c | 0) == 0) {
      $s_0 = 162544;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $s_0 = 162056;
    label = 6;
    break;
   case 4:
    $s_0 = 161712;
    label = 6;
    break;
   case 5:
    $call = _agerr(1, 161416, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $c, tempInt) | 0) | 0;
    $s_0 = 162544;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $s_0 | 0;
  }
  return 0;
}
function _start_timer() {
  _times(165400);
  return;
}
function _elapsed_sec() {
  var $S = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  $S = __stackBase__ | 0;
  _times($S | 0);
  STACKTOP = __stackBase__;
  return +(+(((((HEAP32[$S + 4 >> 2] | 0) + (HEAP32[$S >> 2] | 0) | 0) - (HEAP32[41350] | 0) | 0) - (HEAP32[41351] | 0) | 0) >>> 0 >>> 0) / 60.0);
}
function _write_plain($job, $g, $f, $extend) {
  $job = $job | 0;
  $g = $g | 0;
  $f = $f | 0;
  $extend = $extend | 0;
  var $pt_sroa_0_0__idx = 0, $pt_sroa_0_0_copyload = 0.0, $pt_sroa_1_8__idx2 = 0, $pt_sroa_1_8_copyload = 0.0, $zoom = 0, $0 = 0.0, $div = 0.0, $div1 = 0.0, $call = 0, $1 = 0, $call2 = 0, $tobool99 = 0, $n_0_in100 = 0, $n_0 = 0, $clustnode = 0, $2 = 0, $tobool4 = 0, $3 = 0, $4 = 0, $call5 = 0, $coord = 0, $5 = 0, $label = 0, $6 = 0, $7 = 0, $8 = 0, $tobool8 = 0, $9 = 0, $10 = 0, $index = 0, $11 = 0, $call10 = 0, $call11 = 0, $text = 0, $12 = 0, $call14 = 0, $lbl_0 = 0, $width = 0, $13 = 0, $14 = 0.0, $height = 0, $15 = 0, $16 = 0.0, $17 = 0, $18 = 0, $call18 = 0, $shape = 0, $19 = 0, $20 = 0, $name20 = 0, $21 = 0, $22 = 0, $call21 = 0, $23 = 0, $call22 = 0, $24 = 0, $cmp = 0, $25 = 0, $call25 = 0, $fillcolor_0 = 0, $call27 = 0, $call28 = 0, $tobool = 0, $call29 = 0, $tobool3197 = 0, $tobool38 = 0, $n_1_in98 = 0, $call33 = 0, $tobool3594 = 0, $e_0_in95 = 0, $26 = 0, $27 = 0, $tobool39 = 0, $arrayidx42 = 0, $28 = 0, $arrayidx44 = 0, $29 = 0, $tport_0 = 0, $hport_0 = 0, $u47 = 0, $spl = 0, $30 = 0, $tobool48 = 0, $31 = 0, $size85 = 0, $32 = 0, $cmp5386 = 0, $33 = 0, $size = 0, $34 = 0, $35 = 0, $i_088 = 0, $splinePoints_087 = 0, $list = 0, $36 = 0, $bz_sroa_1_4__idx7 = 0, $bz_sroa_1_4_copyload8 = 0, $add = 0, $inc = 0, $cmp53 = 0, $splinePoints_0_lcssa = 0, $tail = 0, $37 = 0, $38 = 0, $head = 0, $39 = 0, $40 = 0, $41 = 0, $size6591 = 0, $42 = 0, $cmp6692 = 0, $43 = 0, $i_193 = 0, $list71 = 0, $44 = 0, $bz_sroa_0_0__idx = 0, $bz_sroa_0_0_copyload = 0, $bz_sroa_1_4__idx5 = 0, $bz_sroa_1_4_copyload = 0, $cmp7589 = 0, $j_090 = 0, $arrayidx79 = 0, $inc81 = 0, $cmp75 = 0, $inc84 = 0, $45 = 0, $size65 = 0, $46 = 0, $cmp66 = 0, $label88 = 0, $47 = 0, $48 = 0, $tobool89 = 0, $text95 = 0, $49 = 0, $call96 = 0, $50 = 0, $pos = 0, $51 = 0, $52 = 0, $call100 = 0, $53 = 0, $call101 = 0, $call102 = 0, $call104 = 0, $tobool35 = 0, $call107 = 0, $tobool31 = 0, $call109 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _setYInvert($g);
    $pt_sroa_0_0__idx = $g + 72 | 0;
    $pt_sroa_0_0_copyload = +HEAPF64[$pt_sroa_0_0__idx >> 3];
    $pt_sroa_1_8__idx2 = $g + 80 | 0;
    $pt_sroa_1_8_copyload = +HEAPF64[$pt_sroa_1_8__idx2 >> 3];
    $zoom = $job + 352 | 0;
    $0 = +HEAPF64[$zoom >> 3];
    _printdouble($f, 120912, $0);
    $div = $pt_sroa_0_0_copyload / 72.0;
    _printdouble($f, 153984, $div);
    $div1 = $pt_sroa_1_8_copyload / 72.0;
    _printdouble($f, 153984, $div1);
    $call = _agputc(10, $f) | 0;
    $1 = $g;
    $call2 = _agfstnode($1) | 0;
    $tobool99 = ($call2 | 0) == 0;
    if ($tobool99) {
      label = 11;
      break;
    } else {
      $n_0_in100 = $call2;
      label = 3;
      break;
    }
   case 3:
    $n_0 = $n_0_in100;
    $clustnode = $n_0 + 134 | 0;
    $2 = HEAP8[$clustnode] | 0;
    $tobool4 = $2 << 24 >> 24 == 0;
    if ($tobool4) {
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $3 = $n_0_in100 + 12 | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $call5 = _agcanonical($4) | 0;
    _printstring($f, 126768, $call5);
    $coord = $n_0_in100 + 32 | 0;
    $5 = $coord;
    _printpoint($f, $5);
    $label = $n_0_in100 + 120 | 0;
    $6 = HEAP32[$label >> 2] | 0;
    $7 = $6 + 82 | 0;
    $8 = HEAP8[$7] | 0;
    $tobool8 = $8 << 24 >> 24 == 0;
    if ($tobool8) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $9 = $n_0_in100 | 0;
    $10 = HEAP32[41588] | 0;
    $index = $10 + 8 | 0;
    $11 = HEAP32[$index >> 2] | 0;
    $call10 = _agxget($9, $11) | 0;
    $call11 = _agcanonical($call10) | 0;
    $lbl_0 = $call11;
    label = 7;
    break;
   case 6:
    $text = $6;
    $12 = HEAP32[$text >> 2] | 0;
    $call14 = _canon($12) | 0;
    $lbl_0 = $call14;
    label = 7;
    break;
   case 7:
    $width = $n_0_in100 + 48 | 0;
    $13 = $width;
    $14 = +HEAPF64[$13 >> 3];
    _printdouble($f, 153984, $14);
    $height = $n_0_in100 + 56 | 0;
    $15 = $height;
    $16 = +HEAPF64[$15 >> 3];
    _printdouble($f, 153984, $16);
    _printstring($f, 153984, $lbl_0);
    $17 = $n_0_in100 | 0;
    $18 = HEAP32[41560] | 0;
    $call18 = _late_nnstring($17, $18, 117360) | 0;
    _printstring($f, 153984, $call18);
    $shape = $n_0_in100 + 24 | 0;
    $19 = $shape;
    $20 = HEAP32[$19 >> 2] | 0;
    $name20 = $20 | 0;
    $21 = HEAP32[$name20 >> 2] | 0;
    _printstring($f, 153984, $21);
    $22 = HEAP32[41616] | 0;
    $call21 = _late_nnstring($17, $22, 112152) | 0;
    _printstring($f, 153984, $call21);
    $23 = HEAP32[41604] | 0;
    $call22 = _late_nnstring($17, $23, 107768) | 0;
    $24 = HEAP8[$call22] | 0;
    $cmp = $24 << 24 >> 24 == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      $fillcolor_0 = $call22;
      label = 9;
      break;
    }
   case 8:
    $25 = HEAP32[41616] | 0;
    $call25 = _late_nnstring($17, $25, 103840) | 0;
    $fillcolor_0 = $call25;
    label = 9;
    break;
   case 9:
    _printstring($f, 153984, $fillcolor_0);
    $call27 = _agputc(10, $f) | 0;
    label = 10;
    break;
   case 10:
    $call28 = _agnxtnode($1, $n_0_in100) | 0;
    $tobool = ($call28 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      $n_0_in100 = $call28;
      label = 3;
      break;
    }
   case 11:
    $call29 = _agfstnode($1) | 0;
    $tobool3197 = ($call29 | 0) == 0;
    if ($tobool3197) {
      label = 29;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $tobool38 = $extend << 24 >> 24 == 0;
    $n_1_in98 = $call29;
    label = 13;
    break;
   case 13:
    $call33 = _agfstout($1, $n_1_in98) | 0;
    $tobool3594 = ($call33 | 0) == 0;
    if ($tobool3594) {
      label = 28;
      break;
    } else {
      $e_0_in95 = $call33;
      label = 14;
      break;
    }
   case 14:
    if ($tobool38) {
      $hport_0 = 107768;
      $tport_0 = 107768;
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $26 = $e_0_in95 + 4 | 0;
    $27 = HEAP32[$26 >> 2] | 0;
    $tobool39 = ($27 | 0) == 0;
    if ($tobool39) {
      $hport_0 = 107768;
      $tport_0 = 107768;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $arrayidx42 = $27 + 4 | 0;
    $28 = HEAP32[$arrayidx42 >> 2] | 0;
    $arrayidx44 = $27 + 8 | 0;
    $29 = HEAP32[$arrayidx44 >> 2] | 0;
    $hport_0 = $29;
    $tport_0 = $28;
    label = 17;
    break;
   case 17:
    $u47 = $e_0_in95 + 24 | 0;
    $spl = $u47;
    $30 = HEAP32[$spl >> 2] | 0;
    $tobool48 = ($30 | 0) == 0;
    if ($tobool48) {
      label = 25;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $31 = HEAP32[$spl >> 2] | 0;
    $size85 = $31 + 4 | 0;
    $32 = HEAP32[$size85 >> 2] | 0;
    $cmp5386 = ($32 | 0) > 0;
    if ($cmp5386) {
      label = 19;
      break;
    } else {
      $splinePoints_0_lcssa = 0;
      label = 21;
      break;
    }
   case 19:
    $33 = HEAP32[$spl >> 2] | 0;
    $size = $33 + 4 | 0;
    $34 = HEAP32[$size >> 2] | 0;
    $splinePoints_087 = 0;
    $i_088 = 0;
    $35 = $31;
    label = 20;
    break;
   case 20:
    $list = $35 | 0;
    $36 = HEAP32[$list >> 2] | 0;
    $bz_sroa_1_4__idx7 = $36 + ($i_088 * 48 & -1) + 4 | 0;
    $bz_sroa_1_4_copyload8 = HEAP32[$bz_sroa_1_4__idx7 >> 2] | 0;
    $add = $bz_sroa_1_4_copyload8 + $splinePoints_087 | 0;
    $inc = $i_088 + 1 | 0;
    $cmp53 = ($inc | 0) < ($34 | 0);
    if ($cmp53) {
      $splinePoints_087 = $add;
      $i_088 = $inc;
      $35 = $33;
      label = 20;
      break;
    } else {
      $splinePoints_0_lcssa = $add;
      label = 21;
      break;
    }
   case 21:
    _printstring($f, 0, 99664);
    $tail = $e_0_in95 + 16 | 0;
    $37 = HEAP32[$tail >> 2] | 0;
    $38 = $37;
    _writenodeandport($f, $38, $tport_0);
    $head = $e_0_in95 + 12 | 0;
    $39 = HEAP32[$head >> 2] | 0;
    $40 = $39;
    _writenodeandport($f, $40, $hport_0);
    _printint($f, $splinePoints_0_lcssa);
    $41 = HEAP32[$spl >> 2] | 0;
    $size6591 = $41 + 4 | 0;
    $42 = HEAP32[$size6591 >> 2] | 0;
    $cmp6692 = ($42 | 0) > 0;
    if ($cmp6692) {
      $i_193 = 0;
      $43 = $41;
      label = 22;
      break;
    } else {
      label = 25;
      break;
    }
   case 22:
    $list71 = $43 | 0;
    $44 = HEAP32[$list71 >> 2] | 0;
    $bz_sroa_0_0__idx = $44 + ($i_193 * 48 & -1) | 0;
    $bz_sroa_0_0_copyload = HEAP32[$bz_sroa_0_0__idx >> 2] | 0;
    $bz_sroa_1_4__idx5 = $44 + ($i_193 * 48 & -1) + 4 | 0;
    $bz_sroa_1_4_copyload = HEAP32[$bz_sroa_1_4__idx5 >> 2] | 0;
    $cmp7589 = ($bz_sroa_1_4_copyload | 0) > 0;
    if ($cmp7589) {
      $j_090 = 0;
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $arrayidx79 = $bz_sroa_0_0_copyload + ($j_090 << 4) | 0;
    _printpoint($f, $arrayidx79);
    $inc81 = $j_090 + 1 | 0;
    $cmp75 = ($inc81 | 0) < ($bz_sroa_1_4_copyload | 0);
    if ($cmp75) {
      $j_090 = $inc81;
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $inc84 = $i_193 + 1 | 0;
    $45 = HEAP32[$spl >> 2] | 0;
    $size65 = $45 + 4 | 0;
    $46 = HEAP32[$size65 >> 2] | 0;
    $cmp66 = ($inc84 | 0) < ($46 | 0);
    if ($cmp66) {
      $i_193 = $inc84;
      $43 = $45;
      label = 22;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $label88 = $e_0_in95 + 112 | 0;
    $47 = $label88;
    $48 = HEAP32[$47 >> 2] | 0;
    $tobool89 = ($48 | 0) == 0;
    if ($tobool89) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $text95 = $48 | 0;
    $49 = HEAP32[$text95 >> 2] | 0;
    $call96 = _canon($49) | 0;
    _printstring($f, 153984, $call96);
    $50 = HEAP32[$47 >> 2] | 0;
    $pos = $50 + 56 | 0;
    _printpoint($f, $pos);
    label = 27;
    break;
   case 27:
    $51 = $e_0_in95 | 0;
    $52 = HEAP32[41904] | 0;
    $call100 = _late_nnstring($51, $52, 117360) | 0;
    _printstring($f, 153984, $call100);
    $53 = HEAP32[41958] | 0;
    $call101 = _late_nnstring($51, $53, 112152) | 0;
    _printstring($f, 153984, $call101);
    $call102 = _agputc(10, $f) | 0;
    $call104 = _agnxtout($1, $e_0_in95) | 0;
    $tobool35 = ($call104 | 0) == 0;
    if ($tobool35) {
      label = 28;
      break;
    } else {
      $e_0_in95 = $call104;
      label = 14;
      break;
    }
   case 28:
    $call107 = _agnxtnode($1, $n_1_in98) | 0;
    $tobool31 = ($call107 | 0) == 0;
    if ($tobool31) {
      label = 29;
      break;
    } else {
      $n_1_in98 = $call107;
      label = 13;
      break;
    }
   case 29:
    $call109 = _agputs(95656, $f) | 0;
    return;
  }
}
function _printdouble($f, $prefix, $v) {
  $f = $f | 0;
  $prefix = $prefix | 0;
  $v = +$v;
  var $buf = 0, $tobool = 0, $call = 0, $arraydecay = 0, $call1 = 0, $call3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $tobool = ($prefix | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _agputs($prefix, $f) | 0;
    label = 4;
    break;
   case 4:
    $arraydecay = $buf | 0;
    $call1 = _sprintf($arraydecay | 0, 123320, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $v, tempInt) | 0) | 0;
    $call3 = _agputs($arraydecay, $f) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _printstring($f, $prefix, $s) {
  $f = $f | 0;
  $prefix = $prefix | 0;
  $s = $s | 0;
  var $tobool = 0, $call = 0, $call1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($prefix | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _agputs($prefix, $f) | 0;
    label = 4;
    break;
   case 4:
    $call1 = _agputs($s, $f) | 0;
    return;
  }
}
function _printpoint($f, $p) {
  $f = $f | 0;
  $p = $p | 0;
  var $x = 0, $0 = 0.0, $div = 0.0, $1 = 0, $tobool = 0, $2 = 0.0, $y = 0, $3 = 0.0, $sub = 0.0, $y1 = 0, $4 = 0.0, $cond = 0.0, $div2 = 0.0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $p | 0;
    $0 = +HEAPF64[$x >> 3];
    $div = $0 / 72.0;
    _printdouble($f, 153984, $div);
    $1 = HEAP32[41182] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = +HEAPF64[20590];
    $y = $p + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $sub = $2 - $3;
    $cond = $sub;
    label = 5;
    break;
   case 4:
    $y1 = $p + 8 | 0;
    $4 = +HEAPF64[$y1 >> 3];
    $cond = $4;
    label = 5;
    break;
   case 5:
    $div2 = $cond / 72.0;
    _printdouble($f, 153984, $div2);
    STACKTOP = __stackBase__;
    return;
  }
}
function _canon($s) {
  $s = $s | 0;
  var $call = 0, $call1 = 0;
  $call = _agstrdup($s) | 0;
  $call1 = _agcanonical($call) | 0;
  _agstrfree($call);
  return $call1 | 0;
}
function _writenodeandport($f, $node, $port) {
  $f = $f | 0;
  $node = $node | 0;
  $port = $port | 0;
  var $clustnode = 0, $0 = 0, $tobool = 0, $name3 = 0, $1 = 0, $call = 0, $add_ptr = 0, $call2 = 0, $call4 = 0, $name_0 = 0, $tobool5 = 0, $2 = 0, $tobool6 = 0, $call8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $clustnode = $node + 134 | 0;
    $0 = HEAP8[$clustnode] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    $name3 = $node + 12 | 0;
    $1 = HEAP32[$name3 >> 2] | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _strchr($1 | 0, 58) | 0;
    $add_ptr = $call + 1 | 0;
    $call2 = _canon($add_ptr) | 0;
    $name_0 = $call2;
    label = 5;
    break;
   case 4:
    $call4 = _agcanonical($1) | 0;
    $name_0 = $call4;
    label = 5;
    break;
   case 5:
    _printstring($f, 153984, $name_0);
    $tobool5 = ($port | 0) == 0;
    if ($tobool5) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$port] | 0;
    $tobool6 = $2 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call8 = _agcanonical($port) | 0;
    _printstring($f, 116440, $call8);
    label = 8;
    break;
   case 8:
    return;
  }
}
function _printint($f, $i) {
  $f = $f | 0;
  $i = $i | 0;
  var $arraydecay = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  _agputs(153984, $f);
  $arraydecay = __stackBase__ | 0;
  _sprintf($arraydecay | 0, 117016, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $i, tempInt) | 0);
  _agputs($arraydecay, $f);
  STACKTOP = __stackBase__;
  return;
}
function _attach_attrs_and_arrows($g, $sp, $ep) {
  $g = $g | 0;
  $sp = $sp | 0;
  $ep = $ep | 0;
  var $buf = 0, $xbuffer = 0, $xb = 0, $odim = 0, $0 = 0, $cmp = 0, $arraydecay = 0, $proto = 0, $1 = 0, $n2 = 0, $2 = 0, $3 = 0, $call = 0, $4 = 0, $n4 = 0, $5 = 0, $6 = 0, $call5 = 0, $7 = 0, $n7 = 0, $8 = 0, $9 = 0, $call8 = 0, $10 = 0, $n10 = 0, $11 = 0, $12 = 0, $call11 = 0, $13 = 0, $e13 = 0, $14 = 0, $15 = 0, $call14 = 0, $has_labels = 0, $16 = 0, $and = 0, $tobool = 0, $17 = 0, $n18 = 0, $18 = 0, $19 = 0, $call19 = 0, $20 = 0, $and23 = 0, $tobool24 = 0, $21 = 0, $e27 = 0, $22 = 0, $23 = 0, $call28 = 0, $24 = 0, $and33 = 0, $tobool34 = 0, $25 = 0, $e37 = 0, $26 = 0, $27 = 0, $call38 = 0, $28 = 0, $and43 = 0, $tobool44 = 0, $29 = 0, $e47 = 0, $30 = 0, $31 = 0, $call48 = 0, $32 = 0, $and53 = 0, $tobool54 = 0, $33 = 0, $e57 = 0, $34 = 0, $35 = 0, $call58 = 0, $label = 0, $36 = 0, $tobool61 = 0, $37 = 0, $call63 = 0, $call64 = 0, $call65 = 0, $38 = 0, $text = 0, $39 = 0, $40 = 0, $tobool68 = 0, $ptf_sroa_0_0__idx35 = 0, $ptf_sroa_0_0_copyload36 = 0.0, $ptf_sroa_1_8__idx64 = 0, $ptf_sroa_1_8_copyload65 = 0.0, $arraydecay72 = 0, $41 = 0, $tobool73 = 0, $42 = 0.0, $sub = 0.0, $cond = 0.0, $call75 = 0, $call77 = 0, $43 = 0, $ptf_sroa_0_0__idx32 = 0, $ptf_sroa_0_0_copyload33 = 0.0, $ptf_sroa_1_8__idx60 = 0, $ptf_sroa_1_8_copyload61 = 0.0, $div = 0.0, $call82 = 0, $call84 = 0, $div87 = 0.0, $call88 = 0, $call90 = 0, $44 = 0, $call93 = 0, $45 = 0, $call94 = 0, $tobool95215 = 0, $arraydecay98 = 0, $ptr = 0, $eptr = 0, $buf142 = 0, $ptr206 = 0, $eptr207 = 0, $buf217 = 0, $ptr503 = 0, $eptr504 = 0, $buf514 = 0, $ptr373 = 0, $eptr374 = 0, $ptr466 = 0, $eptr467 = 0, $ptr330 = 0, $eptr331 = 0, $buf341 = 0, $ptr251 = 0, $eptr252 = 0, $n_0220_in = 0, $e_arrows_0219 = 0, $s_arrows_0218 = 0, $n_0220 = 0, $u99 = 0, $coord = 0, $x100 = 0, $46 = 0.0, $47 = 0, $tobool101 = 0, $48 = 0.0, $y105 = 0, $49 = 0, $50 = 0.0, $sub106 = 0.0, $y110 = 0, $51 = 0, $52 = 0.0, $cond112 = 0.0, $pos114 = 0, $53 = 0, $54 = 0, $arrayidx115 = 0, $55 = 0.0, $mul = 0.0, $call116 = 0, $call118 = 0, $56 = 0, $cmp123193 = 0, $k_0194 = 0, $57 = 0, $arrayidx129 = 0, $58 = 0.0, $mul130 = 0.0, $call131 = 0, $call133 = 0, $inc = 0, $59 = 0, $conv122 = 0, $cmp123 = 0, $60 = 0, $61 = 0, $62 = 0, $cmp134 = 0, $call137 = 0, $63 = 0, $64 = 0, $call144 = 0, $65 = 0.0, $y153 = 0, $66 = 0, $67 = 0.0, $sub154 = 0.0, $y158 = 0, $68 = 0, $69 = 0.0, $cond160 = 0.0, $call161 = 0, $70 = 0, $call163 = 0, $ht = 0, $71 = 0, $72 = 0.0, $div167 = 0.0, $call168 = 0, $73 = 0, $74 = 0, $index = 0, $75 = 0, $call170 = 0, $lw = 0, $76 = 0, $77 = 0.0, $rw = 0, $78 = 0, $79 = 0.0, $add = 0.0, $div174 = 0.0, $call175 = 0, $80 = 0, $index176 = 0, $81 = 0, $call178 = 0, $xlabel = 0, $82 = 0, $tobool180 = 0, $ptf_sroa_0_0__idx29 = 0, $83 = 0, $ptf_sroa_0_0_copyload30 = 0.0, $ptf_sroa_1_8__idx57 = 0, $84 = 0, $ptf_sroa_1_8_copyload58 = 0.0, $85 = 0, $tobool187 = 0, $86 = 0.0, $sub190 = 0.0, $cond194 = 0.0, $call195 = 0, $call197 = 0, $shape = 0, $87 = 0, $name = 0, $88 = 0, $call200 = 0, $cmp201 = 0, $shape_info = 0, $89 = 0, $90 = 0, $91 = 0, $call205 = 0, $92 = 0, $93 = 0, $cmp208 = 0, $call211 = 0, $94 = 0, $95 = 0, $call219 = 0, $96 = 0, $tobool222 = 0, $call223 = 0, $tobool225 = 0, $shape_info228 = 0, $97 = 0, $98 = 0, $sides229 = 0, $99 = 0, $100 = 0, $cmp230 = 0, $call233 = 0, $tobool234 = 0, $call236 = 0, $sides_0 = 0, $cmp239 = 0, $_sides_0 = 0, $cmp245195 = 0, $sides_1224 = 0, $vertices = 0, $101 = 0, $width = 0, $102 = 0, $conv291 = 0.0, $height311 = 0, $103 = 0, $height = 0, $104 = 0, $i221_0196 = 0, $cmp248 = 0, $105 = 0, $106 = 0, $cmp253 = 0, $call256 = 0, $107 = 0, $incdec_ptr261 = 0, $108 = 0, $cmp264 = 0, $109 = 0, $x269 = 0, $110 = 0.0, $div270 = 0.0, $111 = 0, $tobool271 = 0, $112 = 0.0, $y275 = 0, $113 = 0.0, $div276 = 0.0, $sub277 = 0.0, $y281 = 0, $114 = 0.0, $div282 = 0.0, $cond284 = 0.0, $call285 = 0, $115 = 0.0, $div289 = 0.0, $conv290 = 0.0, $div292 = 0.0, $mul293 = 0.0, $mul294 = 0.0, $call295 = 0.0, $mul296 = 0.0, $116 = 0, $tobool297 = 0, $117 = 0.0, $118 = 0.0, $div300 = 0.0, $call306 = 0.0, $mul307 = 0.0, $sub308 = 0.0, $119 = 0.0, $div312 = 0.0, $call318 = 0.0, $mul319 = 0.0, $cond321 = 0.0, $call322 = 0, $call325 = 0, $inc327 = 0, $cmp245 = 0, $120 = 0, $index329 = 0, $121 = 0, $122 = 0, $123 = 0, $cmp332 = 0, $call335 = 0, $124 = 0, $125 = 0, $call343 = 0, $126 = 0, $cmp346 = 0, $call349 = 0, $tobool351208 = 0, $e_arrows_1211 = 0, $s_arrows_1210 = 0, $e_0_in209 = 0, $edge_type = 0, $127 = 0, $128 = 0, $cmp355 = 0, $u353 = 0, $spl = 0, $129 = 0, $cmp360 = 0, $130 = 0, $size201 = 0, $131 = 0, $cmp367202 = 0, $e_arrows_2206 = 0, $s_arrows_2205 = 0, $i_0203 = 0, $cmp370 = 0, $132 = 0, $133 = 0, $cmp375 = 0, $call378 = 0, $134 = 0, $incdec_ptr383 = 0, $135 = 0, $list = 0, $136 = 0, $sflag = 0, $137 = 0, $tobool388 = 0, $x396 = 0, $138 = 0.0, $139 = 0, $tobool397 = 0, $140 = 0.0, $y404 = 0, $141 = 0.0, $sub405 = 0.0, $y412 = 0, $142 = 0.0, $cond414 = 0.0, $call415 = 0, $call417 = 0, $s_arrows_3 = 0, $143 = 0, $list421 = 0, $144 = 0, $eflag = 0, $145 = 0, $tobool423 = 0, $x431 = 0, $146 = 0.0, $147 = 0, $tobool432 = 0, $148 = 0.0, $y439 = 0, $149 = 0.0, $sub440 = 0.0, $y447 = 0, $150 = 0.0, $cond449 = 0.0, $call450 = 0, $call452 = 0, $e_arrows_3 = 0, $151 = 0, $list457197 = 0, $152 = 0, $size459198 = 0, $153 = 0, $cmp460199 = 0, $j_0200 = 0, $cmp463 = 0, $154 = 0, $155 = 0, $cmp468 = 0, $call471 = 0, $156 = 0, $incdec_ptr476 = 0, $157 = 0, $list480 = 0, $158 = 0, $list482 = 0, $159 = 0, $ptf_sroa_0_0__idx26 = 0, $ptf_sroa_0_0_copyload27 = 0.0, $ptf_sroa_1_8__idx53 = 0, $ptf_sroa_1_8_copyload54 = 0.0, $160 = 0, $tobool486 = 0, $161 = 0.0, $sub489 = 0.0, $cond493 = 0.0, $call494 = 0, $call496 = 0, $inc498 = 0, $162 = 0, $list457 = 0, $163 = 0, $size459 = 0, $164 = 0, $cmp460 = 0, $inc501 = 0, $165 = 0, $size = 0, $166 = 0, $cmp367 = 0, $e_arrows_2_lcssa = 0, $s_arrows_2_lcssa = 0, $167 = 0, $168 = 0, $169 = 0, $cmp505 = 0, $call508 = 0, $170 = 0, $171 = 0, $call516 = 0, $label518 = 0, $172 = 0, $173 = 0, $tobool519 = 0, $ptf_sroa_0_0__idx23 = 0, $ptf_sroa_0_0_copyload24 = 0.0, $ptf_sroa_1_8__idx49 = 0, $ptf_sroa_1_8_copyload50 = 0.0, $174 = 0, $tobool526 = 0, $175 = 0.0, $sub529 = 0.0, $cond533 = 0.0, $call534 = 0, $call536 = 0, $xlabel539 = 0, $176 = 0, $tobool540 = 0, $ptf_sroa_0_0__idx20 = 0, $177 = 0, $ptf_sroa_0_0_copyload21 = 0.0, $ptf_sroa_1_8__idx45 = 0, $178 = 0, $ptf_sroa_1_8_copyload46 = 0.0, $179 = 0, $tobool547 = 0, $180 = 0.0, $sub550 = 0.0, $cond554 = 0.0, $call555 = 0, $call557 = 0, $head_label = 0, $181 = 0, $tobool560 = 0, $ptf_sroa_0_0__idx17 = 0, $182 = 0, $ptf_sroa_0_0_copyload18 = 0.0, $ptf_sroa_1_8__idx41 = 0, $183 = 0, $ptf_sroa_1_8_copyload42 = 0.0, $184 = 0, $tobool567 = 0, $185 = 0.0, $sub570 = 0.0, $cond574 = 0.0, $call575 = 0, $call577 = 0, $tail_label = 0, $186 = 0, $tobool580 = 0, $ptf_sroa_0_0__idx = 0, $187 = 0, $ptf_sroa_0_0_copyload = 0.0, $ptf_sroa_1_8__idx38 = 0, $188 = 0, $ptf_sroa_1_8_copyload = 0.0, $189 = 0, $tobool587 = 0, $190 = 0.0, $sub590 = 0.0, $cond594 = 0.0, $call595 = 0, $call597 = 0, $s_arrows_4 = 0, $e_arrows_4 = 0, $call600 = 0, $tobool351 = 0, $s_arrows_5 = 0, $e_arrows_5 = 0, $call604 = 0, $tobool95 = 0, $e_arrows_0_lcssa = 0, $s_arrows_0_lcssa = 0, $flags = 0, $191 = 0, $and608 = 0, $tobool609 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 2064 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $xbuffer = __stackBase__ + 1024 | 0;
    $xb = __stackBase__ + 2048 | 0;
    $odim = $g + 210 | 0;
    $0 = HEAP16[$odim >> 1] | 0;
    $cmp = ($0 & 65535) > 2;
    _gv_fixLocale(1);
    _setYInvert($g);
    $arraydecay = $xbuffer | 0;
    _agxbinit($xb, 1024, $arraydecay);
    $proto = $g + 40 | 0;
    $1 = HEAP32[$proto >> 2] | 0;
    $n2 = $1 | 0;
    $2 = HEAP32[$n2 >> 2] | 0;
    $3 = $2 | 0;
    $call = _safe_dcl($g, $3, 92192, 107768, 380) | 0;
    $4 = HEAP32[$proto >> 2] | 0;
    $n4 = $4 | 0;
    $5 = HEAP32[$n4 >> 2] | 0;
    $6 = $5 | 0;
    $call5 = _safe_dcl($g, $6, 162328, 107768, 380) | 0;
    $7 = HEAP32[$proto >> 2] | 0;
    $n7 = $7 | 0;
    $8 = HEAP32[$n7 >> 2] | 0;
    $9 = $8 | 0;
    $call8 = _safe_dcl($g, $9, 158784, 107768, 380) | 0;
    HEAP32[41552] = $call8;
    $10 = HEAP32[$proto >> 2] | 0;
    $n10 = $10 | 0;
    $11 = HEAP32[$n10 >> 2] | 0;
    $12 = $11 | 0;
    $call11 = _safe_dcl($g, $12, 155304, 107768, 380) | 0;
    HEAP32[41592] = $call11;
    $13 = HEAP32[$proto >> 2] | 0;
    $e13 = $13 + 4 | 0;
    $14 = HEAP32[$e13 >> 2] | 0;
    $15 = $14 | 0;
    $call14 = _safe_dcl($g, $15, 92192, 107768, 654) | 0;
    $has_labels = $g + 153 | 0;
    $16 = HEAP8[$has_labels] | 0;
    $and = $16 & 16;
    $tobool = $and << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $17 = HEAP32[$proto >> 2] | 0;
    $n18 = $17 | 0;
    $18 = HEAP32[$n18 >> 2] | 0;
    $19 = $18 | 0;
    $call19 = _safe_dcl($g, $19, 151840, 107768, 380) | 0;
    label = 4;
    break;
   case 4:
    $20 = HEAP8[$has_labels] | 0;
    $and23 = $20 & 1;
    $tobool24 = $and23 << 24 >> 24 == 0;
    if ($tobool24) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $21 = HEAP32[$proto >> 2] | 0;
    $e27 = $21 + 4 | 0;
    $22 = HEAP32[$e27 >> 2] | 0;
    $23 = $22 | 0;
    $call28 = _safe_dcl($g, $23, 148568, 107768, 654) | 0;
    label = 6;
    break;
   case 6:
    $24 = HEAP8[$has_labels] | 0;
    $and33 = $24 & 32;
    $tobool34 = $and33 << 24 >> 24 == 0;
    if ($tobool34) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $25 = HEAP32[$proto >> 2] | 0;
    $e37 = $25 + 4 | 0;
    $26 = HEAP32[$e37 >> 2] | 0;
    $27 = $26 | 0;
    $call38 = _safe_dcl($g, $27, 151840, 107768, 654) | 0;
    label = 8;
    break;
   case 8:
    $28 = HEAP8[$has_labels] | 0;
    $and43 = $28 & 2;
    $tobool44 = $and43 << 24 >> 24 == 0;
    if ($tobool44) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $29 = HEAP32[$proto >> 2] | 0;
    $e47 = $29 + 4 | 0;
    $30 = HEAP32[$e47 >> 2] | 0;
    $31 = $30 | 0;
    $call48 = _safe_dcl($g, $31, 145808, 107768, 654) | 0;
    label = 10;
    break;
   case 10:
    $32 = HEAP8[$has_labels] | 0;
    $and53 = $32 & 4;
    $tobool54 = $and53 << 24 >> 24 == 0;
    if ($tobool54) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $33 = HEAP32[$proto >> 2] | 0;
    $e57 = $33 + 4 | 0;
    $34 = HEAP32[$e57 >> 2] | 0;
    $35 = $34 | 0;
    $call58 = _safe_dcl($g, $35, 142760, 107768, 654) | 0;
    label = 12;
    break;
   case 12:
    $label = $g + 52 | 0;
    $36 = HEAP32[$label >> 2] | 0;
    $tobool61 = ($36 | 0) == 0;
    if ($tobool61) {
      label = 17;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $37 = $g | 0;
    $call63 = _safe_dcl($g, $37, 148568, 107768, 360) | 0;
    $call64 = _safe_dcl($g, $37, 139232, 107768, 360) | 0;
    $call65 = _safe_dcl($g, $37, 136456, 107768, 360) | 0;
    $38 = HEAP32[$label >> 2] | 0;
    $text = $38 | 0;
    $39 = HEAP32[$text >> 2] | 0;
    $40 = HEAP8[$39] | 0;
    $tobool68 = $40 << 24 >> 24 == 0;
    if ($tobool68) {
      label = 17;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $ptf_sroa_0_0__idx35 = $38 + 56 | 0;
    $ptf_sroa_0_0_copyload36 = +HEAPF64[$ptf_sroa_0_0__idx35 >> 3];
    $ptf_sroa_1_8__idx64 = $38 + 64 | 0;
    $ptf_sroa_1_8_copyload65 = +HEAPF64[$ptf_sroa_1_8__idx64 >> 3];
    $arraydecay72 = $buf | 0;
    $41 = HEAP32[41182] | 0;
    $tobool73 = ($41 | 0) == 0;
    if ($tobool73) {
      $cond = $ptf_sroa_1_8_copyload65;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $42 = +HEAPF64[20590];
    $sub = $42 - $ptf_sroa_1_8_copyload65;
    $cond = $sub;
    label = 16;
    break;
   case 16:
    $call75 = _sprintf($arraydecay72 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload36, HEAPF64[tempInt + 8 >> 3] = $cond, tempInt) | 0) | 0;
    $call77 = _agset($37, 148568, $arraydecay72) | 0;
    $43 = HEAP32[$label >> 2] | 0;
    $ptf_sroa_0_0__idx32 = $43 + 24 | 0;
    $ptf_sroa_0_0_copyload33 = +HEAPF64[$ptf_sroa_0_0__idx32 >> 3];
    $ptf_sroa_1_8__idx60 = $43 + 32 | 0;
    $ptf_sroa_1_8_copyload61 = +HEAPF64[$ptf_sroa_1_8__idx60 >> 3];
    $div = $ptf_sroa_0_0_copyload33 / 72.0;
    $call82 = _sprintf($arraydecay72 | 0, 131848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div, tempInt) | 0) | 0;
    $call84 = _agset($37, 139232, $arraydecay72) | 0;
    $div87 = $ptf_sroa_1_8_copyload61 / 72.0;
    $call88 = _sprintf($arraydecay72 | 0, 131848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div87, tempInt) | 0) | 0;
    $call90 = _agset($37, 136456, $arraydecay72) | 0;
    label = 17;
    break;
   case 17:
    $44 = $g | 0;
    $call93 = _safe_dcl($g, $44, 129992, 107768, 360) | 0;
    $45 = $g;
    $call94 = _agfstnode($45) | 0;
    $tobool95215 = ($call94 | 0) == 0;
    if ($tobool95215) {
      $s_arrows_0_lcssa = 0;
      $e_arrows_0_lcssa = 0;
      label = 112;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $arraydecay98 = $buf | 0;
    $ptr = $xb + 4 | 0;
    $eptr = $xb + 8 | 0;
    $buf142 = $xb | 0;
    $ptr206 = $xb + 4 | 0;
    $eptr207 = $xb + 8 | 0;
    $buf217 = $xb | 0;
    $ptr503 = $xb + 4 | 0;
    $eptr504 = $xb + 8 | 0;
    $buf514 = $xb | 0;
    $ptr373 = $xb + 4 | 0;
    $eptr374 = $xb + 8 | 0;
    $ptr466 = $xb + 4 | 0;
    $eptr467 = $xb + 8 | 0;
    $ptr330 = $xb + 4 | 0;
    $eptr331 = $xb + 8 | 0;
    $buf341 = $xb | 0;
    $ptr251 = $xb + 4 | 0;
    $eptr252 = $xb + 8 | 0;
    $s_arrows_0218 = 0;
    $e_arrows_0219 = 0;
    $n_0220_in = $call94;
    label = 19;
    break;
   case 19:
    $n_0220 = $n_0220_in;
    $u99 = $n_0220_in + 24 | 0;
    $coord = $n_0220_in + 32 | 0;
    $x100 = $coord;
    $46 = +HEAPF64[$x100 >> 3];
    $47 = HEAP32[41182] | 0;
    $tobool101 = ($47 | 0) != 0;
    if ($cmp) {
      label = 20;
      break;
    } else {
      label = 28;
      break;
    }
   case 20:
    if ($tobool101) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $48 = +HEAPF64[20590];
    $y105 = $coord + 8 | 0;
    $49 = $y105;
    $50 = +HEAPF64[$49 >> 3];
    $sub106 = $48 - $50;
    $cond112 = $sub106;
    label = 23;
    break;
   case 22:
    $y110 = $coord + 8 | 0;
    $51 = $y110;
    $52 = +HEAPF64[$51 >> 3];
    $cond112 = $52;
    label = 23;
    break;
   case 23:
    $pos114 = $u99 + 124 | 0;
    $53 = $pos114;
    $54 = HEAP32[$53 >> 2] | 0;
    $arrayidx115 = $54 + 16 | 0;
    $55 = +HEAPF64[$arrayidx115 >> 3];
    $mul = $55 * 72.0;
    $call116 = _sprintf($arraydecay98 | 0, 127904, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAPF64[tempInt >> 3] = $46, HEAPF64[tempInt + 8 >> 3] = $cond112, HEAPF64[tempInt + 16 >> 3] = $mul, tempInt) | 0) | 0;
    $call118 = _agxbput($xb, $arraydecay98) | 0;
    $56 = HEAP16[$odim >> 1] | 0;
    $cmp123193 = ($56 & 65535) > 3;
    if ($cmp123193) {
      $k_0194 = 3;
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $57 = HEAP32[$53 >> 2] | 0;
    $arrayidx129 = $57 + ($k_0194 << 3) | 0;
    $58 = +HEAPF64[$arrayidx129 >> 3];
    $mul130 = $58 * 72.0;
    $call131 = _sprintf($arraydecay98 | 0, 125368, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $mul130, tempInt) | 0) | 0;
    $call133 = _agxbput($xb, $arraydecay98) | 0;
    $inc = $k_0194 + 1 | 0;
    $59 = HEAP16[$odim >> 1] | 0;
    $conv122 = $59 & 65535;
    $cmp123 = ($inc | 0) < ($conv122 | 0);
    if ($cmp123) {
      $k_0194 = $inc;
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $60 = $n_0220_in | 0;
    $61 = HEAP32[$ptr >> 2] | 0;
    $62 = HEAP32[$eptr >> 2] | 0;
    $cmp134 = $61 >>> 0 < $62 >>> 0;
    if ($cmp134) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $call137 = _agxbmore($xb, 1) | 0;
    label = 27;
    break;
   case 27:
    $63 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$63] = 0;
    $64 = HEAP32[$buf142 >> 2] | 0;
    HEAP32[$ptr >> 2] = $64;
    $call144 = _agset($60, 92192, $64) | 0;
    label = 32;
    break;
   case 28:
    if ($tobool101) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $65 = +HEAPF64[20590];
    $y153 = $coord + 8 | 0;
    $66 = $y153;
    $67 = +HEAPF64[$66 >> 3];
    $sub154 = $65 - $67;
    $cond160 = $sub154;
    label = 31;
    break;
   case 30:
    $y158 = $n_0220_in + 40 | 0;
    $68 = $y158;
    $69 = +HEAPF64[$68 >> 3];
    $cond160 = $69;
    label = 31;
    break;
   case 31:
    $call161 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $46, HEAPF64[tempInt + 8 >> 3] = $cond160, tempInt) | 0) | 0;
    $70 = $n_0220_in | 0;
    $call163 = _agset($70, 92192, $arraydecay98) | 0;
    label = 32;
    break;
   case 32:
    $ht = $n_0220_in + 96 | 0;
    $71 = $ht;
    $72 = +HEAPF64[$71 >> 3];
    $div167 = $72 / 72.0;
    $call168 = _sprintf($arraydecay98 | 0, 123320, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div167, tempInt) | 0) | 0;
    $73 = $n_0220_in | 0;
    $74 = HEAP32[41592] | 0;
    $index = $74 + 8 | 0;
    $75 = HEAP32[$index >> 2] | 0;
    $call170 = _agxset($73, $75, $arraydecay98) | 0;
    $lw = $n_0220_in + 104 | 0;
    $76 = $lw;
    $77 = +HEAPF64[$76 >> 3];
    $rw = $n_0220_in + 112 | 0;
    $78 = $rw;
    $79 = +HEAPF64[$78 >> 3];
    $add = $77 + $79;
    $div174 = $add / 72.0;
    $call175 = _sprintf($arraydecay98 | 0, 123320, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div174, tempInt) | 0) | 0;
    $80 = HEAP32[41552] | 0;
    $index176 = $80 + 8 | 0;
    $81 = HEAP32[$index176 >> 2] | 0;
    $call178 = _agxset($73, $81, $arraydecay98) | 0;
    $xlabel = $n_0220_in + 124 | 0;
    $82 = HEAP32[$xlabel >> 2] | 0;
    $tobool180 = ($82 | 0) == 0;
    if ($tobool180) {
      label = 36;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $ptf_sroa_0_0__idx29 = $82 + 56 | 0;
    $83 = $ptf_sroa_0_0__idx29;
    $ptf_sroa_0_0_copyload30 = +HEAPF64[$83 >> 3];
    $ptf_sroa_1_8__idx57 = $82 + 64 | 0;
    $84 = $ptf_sroa_1_8__idx57;
    $ptf_sroa_1_8_copyload58 = +HEAPF64[$84 >> 3];
    $85 = HEAP32[41182] | 0;
    $tobool187 = ($85 | 0) == 0;
    if ($tobool187) {
      $cond194 = $ptf_sroa_1_8_copyload58;
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $86 = +HEAPF64[20590];
    $sub190 = $86 - $ptf_sroa_1_8_copyload58;
    $cond194 = $sub190;
    label = 35;
    break;
   case 35:
    $call195 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload30, HEAPF64[tempInt + 8 >> 3] = $cond194, tempInt) | 0) | 0;
    $call197 = _agset($73, 151840, $arraydecay98) | 0;
    label = 36;
    break;
   case 36:
    $shape = $u99;
    $87 = HEAP32[$shape >> 2] | 0;
    $name = $87 | 0;
    $88 = HEAP32[$name >> 2] | 0;
    $call200 = _strcmp($88 | 0, 121808) | 0;
    $cmp201 = ($call200 | 0) == 0;
    if ($cmp201) {
      label = 37;
      break;
    } else {
      label = 40;
      break;
    }
   case 37:
    $shape_info = $u99 + 4 | 0;
    $89 = $shape_info;
    $90 = HEAP32[$89 >> 2] | 0;
    $91 = $90;
    _set_record_rects($n_0220, $91, $xb);
    $call205 = _agxbpop($xb) | 0;
    $92 = HEAP32[$ptr206 >> 2] | 0;
    $93 = HEAP32[$eptr207 >> 2] | 0;
    $cmp208 = $92 >>> 0 < $93 >>> 0;
    if ($cmp208) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $call211 = _agxbmore($xb, 1) | 0;
    label = 39;
    break;
   case 39:
    $94 = HEAP32[$ptr206 >> 2] | 0;
    HEAP8[$94] = 0;
    $95 = HEAP32[$buf217 >> 2] | 0;
    HEAP32[$ptr206 >> 2] = $95;
    $call219 = _agset($73, 162328, $95) | 0;
    label = 64;
    break;
   case 40:
    $96 = HEAP32[41558] | 0;
    $tobool222 = ($96 | 0) == 0;
    if ($tobool222) {
      label = 64;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $call223 = _isPolygon($n_0220) | 0;
    $tobool225 = $call223 << 24 >> 24 == 0;
    if ($tobool225) {
      label = 64;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $shape_info228 = $u99 + 4 | 0;
    $97 = $shape_info228;
    $98 = HEAP32[$97 >> 2] | 0;
    $sides229 = $98 + 8 | 0;
    $99 = $sides229;
    $100 = HEAP32[$99 >> 2] | 0;
    $cmp230 = ($100 | 0) < 3;
    if ($cmp230) {
      label = 43;
      break;
    } else {
      $sides_1224 = $100;
      label = 46;
      break;
    }
   case 43:
    $call233 = _agget($73, 121240) | 0;
    $tobool234 = ($call233 | 0) == 0;
    if ($tobool234) {
      $sides_0 = 8;
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $call236 = _atoi($call233 | 0) | 0;
    $sides_0 = $call236;
    label = 45;
    break;
   case 45:
    $cmp239 = ($sides_0 | 0) < 3;
    $_sides_0 = $cmp239 ? 8 : $sides_0;
    $cmp245195 = ($_sides_0 | 0) > 0;
    if ($cmp245195) {
      $sides_1224 = $_sides_0;
      label = 46;
      break;
    } else {
      label = 61;
      break;
    }
   case 46:
    $vertices = $98 + 44 | 0;
    $101 = $vertices;
    $width = $u99 + 24 | 0;
    $102 = $width;
    $conv291 = +($sides_1224 | 0);
    $height311 = $u99 + 32 | 0;
    $103 = $height311;
    $height = $u99 + 32 | 0;
    $104 = $height;
    $i221_0196 = 0;
    label = 47;
    break;
   case 47:
    $cmp248 = ($i221_0196 | 0) > 0;
    if ($cmp248) {
      label = 48;
      break;
    } else {
      label = 51;
      break;
    }
   case 48:
    $105 = HEAP32[$ptr251 >> 2] | 0;
    $106 = HEAP32[$eptr252 >> 2] | 0;
    $cmp253 = $105 >>> 0 < $106 >>> 0;
    if ($cmp253) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $call256 = _agxbmore($xb, 1) | 0;
    label = 50;
    break;
   case 50:
    $107 = HEAP32[$ptr251 >> 2] | 0;
    $incdec_ptr261 = $107 + 1 | 0;
    HEAP32[$ptr251 >> 2] = $incdec_ptr261;
    HEAP8[$107] = 32;
    label = 51;
    break;
   case 51:
    $108 = HEAP32[$99 >> 2] | 0;
    $cmp264 = ($108 | 0) > 2;
    if ($cmp264) {
      label = 52;
      break;
    } else {
      label = 56;
      break;
    }
   case 52:
    $109 = HEAP32[$101 >> 2] | 0;
    $x269 = $109 + ($i221_0196 << 4) | 0;
    $110 = +HEAPF64[$x269 >> 3];
    $div270 = $110 / 72.0;
    $111 = HEAP32[41182] | 0;
    $tobool271 = ($111 | 0) == 0;
    if ($tobool271) {
      label = 54;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $112 = +HEAPF64[20592];
    $y275 = $109 + ($i221_0196 << 4) + 8 | 0;
    $113 = +HEAPF64[$y275 >> 3];
    $div276 = $113 / 72.0;
    $sub277 = $112 - $div276;
    $cond284 = $sub277;
    label = 55;
    break;
   case 54:
    $y281 = $109 + ($i221_0196 << 4) + 8 | 0;
    $114 = +HEAPF64[$y281 >> 3];
    $div282 = $114 / 72.0;
    $cond284 = $div282;
    label = 55;
    break;
   case 55:
    $call285 = _sprintf($arraydecay98 | 0, 120536, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $div270, HEAPF64[tempInt + 8 >> 3] = $cond284, tempInt) | 0) | 0;
    label = 60;
    break;
   case 56:
    $115 = +HEAPF64[$102 >> 3];
    $div289 = $115 * .5;
    $conv290 = +($i221_0196 | 0);
    $div292 = $conv290 / $conv291;
    $mul293 = $div292 * 3.141592653589793;
    $mul294 = $mul293 * 2.0;
    $call295 = +Math_cos(+$mul294);
    $mul296 = $div289 * $call295;
    $116 = HEAP32[41182] | 0;
    $tobool297 = ($116 | 0) == 0;
    if ($tobool297) {
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $117 = +HEAPF64[20592];
    $118 = +HEAPF64[$104 >> 3];
    $div300 = $118 * .5;
    $call306 = +Math_sin(+$mul294);
    $mul307 = $div300 * $call306;
    $sub308 = $117 - $mul307;
    $cond321 = $sub308;
    label = 59;
    break;
   case 58:
    $119 = +HEAPF64[$103 >> 3];
    $div312 = $119 * .5;
    $call318 = +Math_sin(+$mul294);
    $mul319 = $div312 * $call318;
    $cond321 = $mul319;
    label = 59;
    break;
   case 59:
    $call322 = _sprintf($arraydecay98 | 0, 120536, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $mul296, HEAPF64[tempInt + 8 >> 3] = $cond321, tempInt) | 0) | 0;
    label = 60;
    break;
   case 60:
    $call325 = _agxbput($xb, $arraydecay98) | 0;
    $inc327 = $i221_0196 + 1 | 0;
    $cmp245 = ($inc327 | 0) < ($sides_1224 | 0);
    if ($cmp245) {
      $i221_0196 = $inc327;
      label = 47;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    $120 = HEAP32[41558] | 0;
    $index329 = $120 + 8 | 0;
    $121 = HEAP32[$index329 >> 2] | 0;
    $122 = HEAP32[$ptr330 >> 2] | 0;
    $123 = HEAP32[$eptr331 >> 2] | 0;
    $cmp332 = $122 >>> 0 < $123 >>> 0;
    if ($cmp332) {
      label = 63;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    $call335 = _agxbmore($xb, 1) | 0;
    label = 63;
    break;
   case 63:
    $124 = HEAP32[$ptr330 >> 2] | 0;
    HEAP8[$124] = 0;
    $125 = HEAP32[$buf341 >> 2] | 0;
    HEAP32[$ptr330 >> 2] = $125;
    $call343 = _agxset($73, $121, $125) | 0;
    label = 64;
    break;
   case 64:
    $126 = HEAP32[41356] | 0;
    $cmp346 = ($126 | 0) > 0;
    if ($cmp346) {
      label = 65;
      break;
    } else {
      $e_arrows_5 = $e_arrows_0219;
      $s_arrows_5 = $s_arrows_0218;
      label = 111;
      break;
    }
   case 65:
    $call349 = _agfstout($45, $n_0220_in) | 0;
    $tobool351208 = ($call349 | 0) == 0;
    if ($tobool351208) {
      $e_arrows_5 = $e_arrows_0219;
      $s_arrows_5 = $s_arrows_0218;
      label = 111;
      break;
    } else {
      $e_0_in209 = $call349;
      $s_arrows_1210 = $s_arrows_0218;
      $e_arrows_1211 = $e_arrows_0219;
      label = 66;
      break;
    }
   case 66:
    $edge_type = $e_0_in209 + 128 | 0;
    $127 = $edge_type;
    $128 = HEAP8[$127] | 0;
    $cmp355 = $128 << 24 >> 24 == 6;
    if ($cmp355) {
      $e_arrows_4 = $e_arrows_1211;
      $s_arrows_4 = $s_arrows_1210;
      label = 110;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $u353 = $e_0_in209 + 24 | 0;
    $spl = $u353;
    $129 = HEAP32[$spl >> 2] | 0;
    $cmp360 = ($129 | 0) == 0;
    if ($cmp360) {
      $e_arrows_4 = $e_arrows_1211;
      $s_arrows_4 = $s_arrows_1210;
      label = 110;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $130 = HEAP32[$spl >> 2] | 0;
    $size201 = $130 + 4 | 0;
    $131 = HEAP32[$size201 >> 2] | 0;
    $cmp367202 = ($131 | 0) > 0;
    if ($cmp367202) {
      $i_0203 = 0;
      $s_arrows_2205 = $s_arrows_1210;
      $e_arrows_2206 = $e_arrows_1211;
      label = 69;
      break;
    } else {
      $s_arrows_2_lcssa = $s_arrows_1210;
      $e_arrows_2_lcssa = $e_arrows_1211;
      label = 92;
      break;
    }
   case 69:
    $cmp370 = ($i_0203 | 0) > 0;
    if ($cmp370) {
      label = 70;
      break;
    } else {
      label = 73;
      break;
    }
   case 70:
    $132 = HEAP32[$ptr373 >> 2] | 0;
    $133 = HEAP32[$eptr374 >> 2] | 0;
    $cmp375 = $132 >>> 0 < $133 >>> 0;
    if ($cmp375) {
      label = 72;
      break;
    } else {
      label = 71;
      break;
    }
   case 71:
    $call378 = _agxbmore($xb, 1) | 0;
    label = 72;
    break;
   case 72:
    $134 = HEAP32[$ptr373 >> 2] | 0;
    $incdec_ptr383 = $134 + 1 | 0;
    HEAP32[$ptr373 >> 2] = $incdec_ptr383;
    HEAP8[$134] = 59;
    label = 73;
    break;
   case 73:
    $135 = HEAP32[$spl >> 2] | 0;
    $list = $135 | 0;
    $136 = HEAP32[$list >> 2] | 0;
    $sflag = $136 + ($i_0203 * 48 & -1) + 8 | 0;
    $137 = HEAP32[$sflag >> 2] | 0;
    $tobool388 = ($137 | 0) == 0;
    if ($tobool388) {
      $s_arrows_3 = $s_arrows_2205;
      label = 78;
      break;
    } else {
      label = 74;
      break;
    }
   case 74:
    $x396 = $136 + ($i_0203 * 48 & -1) + 16 | 0;
    $138 = +HEAPF64[$x396 >> 3];
    $139 = HEAP32[41182] | 0;
    $tobool397 = ($139 | 0) == 0;
    if ($tobool397) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $140 = +HEAPF64[20590];
    $y404 = $136 + ($i_0203 * 48 & -1) + 24 | 0;
    $141 = +HEAPF64[$y404 >> 3];
    $sub405 = $140 - $141;
    $cond414 = $sub405;
    label = 77;
    break;
   case 76:
    $y412 = $136 + ($i_0203 * 48 & -1) + 24 | 0;
    $142 = +HEAPF64[$y412 >> 3];
    $cond414 = $142;
    label = 77;
    break;
   case 77:
    $call415 = _sprintf($arraydecay98 | 0, 119848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $138, HEAPF64[tempInt + 8 >> 3] = $cond414, tempInt) | 0) | 0;
    $call417 = _agxbput($xb, $arraydecay98) | 0;
    $s_arrows_3 = 1;
    label = 78;
    break;
   case 78:
    $143 = HEAP32[$spl >> 2] | 0;
    $list421 = $143 | 0;
    $144 = HEAP32[$list421 >> 2] | 0;
    $eflag = $144 + ($i_0203 * 48 & -1) + 12 | 0;
    $145 = HEAP32[$eflag >> 2] | 0;
    $tobool423 = ($145 | 0) == 0;
    if ($tobool423) {
      $e_arrows_3 = $e_arrows_2206;
      label = 83;
      break;
    } else {
      label = 79;
      break;
    }
   case 79:
    $x431 = $144 + ($i_0203 * 48 & -1) + 32 | 0;
    $146 = +HEAPF64[$x431 >> 3];
    $147 = HEAP32[41182] | 0;
    $tobool432 = ($147 | 0) == 0;
    if ($tobool432) {
      label = 81;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    $148 = +HEAPF64[20590];
    $y439 = $144 + ($i_0203 * 48 & -1) + 40 | 0;
    $149 = +HEAPF64[$y439 >> 3];
    $sub440 = $148 - $149;
    $cond449 = $sub440;
    label = 82;
    break;
   case 81:
    $y447 = $144 + ($i_0203 * 48 & -1) + 40 | 0;
    $150 = +HEAPF64[$y447 >> 3];
    $cond449 = $150;
    label = 82;
    break;
   case 82:
    $call450 = _sprintf($arraydecay98 | 0, 119320, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $146, HEAPF64[tempInt + 8 >> 3] = $cond449, tempInt) | 0) | 0;
    $call452 = _agxbput($xb, $arraydecay98) | 0;
    $e_arrows_3 = 1;
    label = 83;
    break;
   case 83:
    $151 = HEAP32[$spl >> 2] | 0;
    $list457197 = $151 | 0;
    $152 = HEAP32[$list457197 >> 2] | 0;
    $size459198 = $152 + ($i_0203 * 48 & -1) + 4 | 0;
    $153 = HEAP32[$size459198 >> 2] | 0;
    $cmp460199 = ($153 | 0) > 0;
    if ($cmp460199) {
      $j_0200 = 0;
      label = 84;
      break;
    } else {
      label = 91;
      break;
    }
   case 84:
    $cmp463 = ($j_0200 | 0) > 0;
    if ($cmp463) {
      label = 85;
      break;
    } else {
      label = 88;
      break;
    }
   case 85:
    $154 = HEAP32[$ptr466 >> 2] | 0;
    $155 = HEAP32[$eptr467 >> 2] | 0;
    $cmp468 = $154 >>> 0 < $155 >>> 0;
    if ($cmp468) {
      label = 87;
      break;
    } else {
      label = 86;
      break;
    }
   case 86:
    $call471 = _agxbmore($xb, 1) | 0;
    label = 87;
    break;
   case 87:
    $156 = HEAP32[$ptr466 >> 2] | 0;
    $incdec_ptr476 = $156 + 1 | 0;
    HEAP32[$ptr466 >> 2] = $incdec_ptr476;
    HEAP8[$156] = 32;
    label = 88;
    break;
   case 88:
    $157 = HEAP32[$spl >> 2] | 0;
    $list480 = $157 | 0;
    $158 = HEAP32[$list480 >> 2] | 0;
    $list482 = $158 + ($i_0203 * 48 & -1) | 0;
    $159 = HEAP32[$list482 >> 2] | 0;
    $ptf_sroa_0_0__idx26 = $159 + ($j_0200 << 4) | 0;
    $ptf_sroa_0_0_copyload27 = +HEAPF64[$ptf_sroa_0_0__idx26 >> 3];
    $ptf_sroa_1_8__idx53 = $159 + ($j_0200 << 4) + 8 | 0;
    $ptf_sroa_1_8_copyload54 = +HEAPF64[$ptf_sroa_1_8__idx53 >> 3];
    $160 = HEAP32[41182] | 0;
    $tobool486 = ($160 | 0) == 0;
    if ($tobool486) {
      $cond493 = $ptf_sroa_1_8_copyload54;
      label = 90;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $161 = +HEAPF64[20590];
    $sub489 = $161 - $ptf_sroa_1_8_copyload54;
    $cond493 = $sub489;
    label = 90;
    break;
   case 90:
    $call494 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload27, HEAPF64[tempInt + 8 >> 3] = $cond493, tempInt) | 0) | 0;
    $call496 = _agxbput($xb, $arraydecay98) | 0;
    $inc498 = $j_0200 + 1 | 0;
    $162 = HEAP32[$spl >> 2] | 0;
    $list457 = $162 | 0;
    $163 = HEAP32[$list457 >> 2] | 0;
    $size459 = $163 + ($i_0203 * 48 & -1) + 4 | 0;
    $164 = HEAP32[$size459 >> 2] | 0;
    $cmp460 = ($inc498 | 0) < ($164 | 0);
    if ($cmp460) {
      $j_0200 = $inc498;
      label = 84;
      break;
    } else {
      label = 91;
      break;
    }
   case 91:
    $inc501 = $i_0203 + 1 | 0;
    $165 = HEAP32[$spl >> 2] | 0;
    $size = $165 + 4 | 0;
    $166 = HEAP32[$size >> 2] | 0;
    $cmp367 = ($inc501 | 0) < ($166 | 0);
    if ($cmp367) {
      $i_0203 = $inc501;
      $s_arrows_2205 = $s_arrows_3;
      $e_arrows_2206 = $e_arrows_3;
      label = 69;
      break;
    } else {
      $s_arrows_2_lcssa = $s_arrows_3;
      $e_arrows_2_lcssa = $e_arrows_3;
      label = 92;
      break;
    }
   case 92:
    $167 = $e_0_in209 | 0;
    $168 = HEAP32[$ptr503 >> 2] | 0;
    $169 = HEAP32[$eptr504 >> 2] | 0;
    $cmp505 = $168 >>> 0 < $169 >>> 0;
    if ($cmp505) {
      label = 94;
      break;
    } else {
      label = 93;
      break;
    }
   case 93:
    $call508 = _agxbmore($xb, 1) | 0;
    label = 94;
    break;
   case 94:
    $170 = HEAP32[$ptr503 >> 2] | 0;
    HEAP8[$170] = 0;
    $171 = HEAP32[$buf514 >> 2] | 0;
    HEAP32[$ptr503 >> 2] = $171;
    $call516 = _agset($167, 92192, $171) | 0;
    $label518 = $e_0_in209 + 112 | 0;
    $172 = $label518;
    $173 = HEAP32[$172 >> 2] | 0;
    $tobool519 = ($173 | 0) == 0;
    if ($tobool519) {
      label = 98;
      break;
    } else {
      label = 95;
      break;
    }
   case 95:
    $ptf_sroa_0_0__idx23 = $173 + 56 | 0;
    $ptf_sroa_0_0_copyload24 = +HEAPF64[$ptf_sroa_0_0__idx23 >> 3];
    $ptf_sroa_1_8__idx49 = $173 + 64 | 0;
    $ptf_sroa_1_8_copyload50 = +HEAPF64[$ptf_sroa_1_8__idx49 >> 3];
    $174 = HEAP32[41182] | 0;
    $tobool526 = ($174 | 0) == 0;
    if ($tobool526) {
      $cond533 = $ptf_sroa_1_8_copyload50;
      label = 97;
      break;
    } else {
      label = 96;
      break;
    }
   case 96:
    $175 = +HEAPF64[20590];
    $sub529 = $175 - $ptf_sroa_1_8_copyload50;
    $cond533 = $sub529;
    label = 97;
    break;
   case 97:
    $call534 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload24, HEAPF64[tempInt + 8 >> 3] = $cond533, tempInt) | 0) | 0;
    $call536 = _agset($167, 148568, $arraydecay98) | 0;
    label = 98;
    break;
   case 98:
    $xlabel539 = $e_0_in209 + 124 | 0;
    $176 = HEAP32[$xlabel539 >> 2] | 0;
    $tobool540 = ($176 | 0) == 0;
    if ($tobool540) {
      label = 102;
      break;
    } else {
      label = 99;
      break;
    }
   case 99:
    $ptf_sroa_0_0__idx20 = $176 + 56 | 0;
    $177 = $ptf_sroa_0_0__idx20;
    $ptf_sroa_0_0_copyload21 = +HEAPF64[$177 >> 3];
    $ptf_sroa_1_8__idx45 = $176 + 64 | 0;
    $178 = $ptf_sroa_1_8__idx45;
    $ptf_sroa_1_8_copyload46 = +HEAPF64[$178 >> 3];
    $179 = HEAP32[41182] | 0;
    $tobool547 = ($179 | 0) == 0;
    if ($tobool547) {
      $cond554 = $ptf_sroa_1_8_copyload46;
      label = 101;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $180 = +HEAPF64[20590];
    $sub550 = $180 - $ptf_sroa_1_8_copyload46;
    $cond554 = $sub550;
    label = 101;
    break;
   case 101:
    $call555 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload21, HEAPF64[tempInt + 8 >> 3] = $cond554, tempInt) | 0) | 0;
    $call557 = _agset($167, 151840, $arraydecay98) | 0;
    label = 102;
    break;
   case 102:
    $head_label = $e_0_in209 + 116 | 0;
    $181 = HEAP32[$head_label >> 2] | 0;
    $tobool560 = ($181 | 0) == 0;
    if ($tobool560) {
      label = 106;
      break;
    } else {
      label = 103;
      break;
    }
   case 103:
    $ptf_sroa_0_0__idx17 = $181 + 56 | 0;
    $182 = $ptf_sroa_0_0__idx17;
    $ptf_sroa_0_0_copyload18 = +HEAPF64[$182 >> 3];
    $ptf_sroa_1_8__idx41 = $181 + 64 | 0;
    $183 = $ptf_sroa_1_8__idx41;
    $ptf_sroa_1_8_copyload42 = +HEAPF64[$183 >> 3];
    $184 = HEAP32[41182] | 0;
    $tobool567 = ($184 | 0) == 0;
    if ($tobool567) {
      $cond574 = $ptf_sroa_1_8_copyload42;
      label = 105;
      break;
    } else {
      label = 104;
      break;
    }
   case 104:
    $185 = +HEAPF64[20590];
    $sub570 = $185 - $ptf_sroa_1_8_copyload42;
    $cond574 = $sub570;
    label = 105;
    break;
   case 105:
    $call575 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload18, HEAPF64[tempInt + 8 >> 3] = $cond574, tempInt) | 0) | 0;
    $call577 = _agset($167, 145808, $arraydecay98) | 0;
    label = 106;
    break;
   case 106:
    $tail_label = $e_0_in209 + 120 | 0;
    $186 = HEAP32[$tail_label >> 2] | 0;
    $tobool580 = ($186 | 0) == 0;
    if ($tobool580) {
      $e_arrows_4 = $e_arrows_2_lcssa;
      $s_arrows_4 = $s_arrows_2_lcssa;
      label = 110;
      break;
    } else {
      label = 107;
      break;
    }
   case 107:
    $ptf_sroa_0_0__idx = $186 + 56 | 0;
    $187 = $ptf_sroa_0_0__idx;
    $ptf_sroa_0_0_copyload = +HEAPF64[$187 >> 3];
    $ptf_sroa_1_8__idx38 = $186 + 64 | 0;
    $188 = $ptf_sroa_1_8__idx38;
    $ptf_sroa_1_8_copyload = +HEAPF64[$188 >> 3];
    $189 = HEAP32[41182] | 0;
    $tobool587 = ($189 | 0) == 0;
    if ($tobool587) {
      $cond594 = $ptf_sroa_1_8_copyload;
      label = 109;
      break;
    } else {
      label = 108;
      break;
    }
   case 108:
    $190 = +HEAPF64[20590];
    $sub590 = $190 - $ptf_sroa_1_8_copyload;
    $cond594 = $sub590;
    label = 109;
    break;
   case 109:
    $call595 = _sprintf($arraydecay98 | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $ptf_sroa_0_0_copyload, HEAPF64[tempInt + 8 >> 3] = $cond594, tempInt) | 0) | 0;
    $call597 = _agset($167, 142760, $arraydecay98) | 0;
    $e_arrows_4 = $e_arrows_2_lcssa;
    $s_arrows_4 = $s_arrows_2_lcssa;
    label = 110;
    break;
   case 110:
    $call600 = _agnxtout($45, $e_0_in209) | 0;
    $tobool351 = ($call600 | 0) == 0;
    if ($tobool351) {
      $e_arrows_5 = $e_arrows_4;
      $s_arrows_5 = $s_arrows_4;
      label = 111;
      break;
    } else {
      $e_0_in209 = $call600;
      $s_arrows_1210 = $s_arrows_4;
      $e_arrows_1211 = $e_arrows_4;
      label = 66;
      break;
    }
   case 111:
    $call604 = _agnxtnode($45, $n_0220_in) | 0;
    $tobool95 = ($call604 | 0) == 0;
    if ($tobool95) {
      $s_arrows_0_lcssa = $s_arrows_5;
      $e_arrows_0_lcssa = $e_arrows_5;
      label = 112;
      break;
    } else {
      $s_arrows_0218 = $s_arrows_5;
      $e_arrows_0219 = $e_arrows_5;
      $n_0220_in = $call604;
      label = 19;
      break;
    }
   case 112:
    _rec_attach_bb($g, $call93);
    _agxbfree($xb);
    $flags = $g + 168 | 0;
    $191 = HEAP16[$flags >> 1] | 0;
    $and608 = $191 & 1;
    $tobool609 = $and608 << 16 >> 16 == 0;
    if ($tobool609) {
      label = 114;
      break;
    } else {
      label = 113;
      break;
    }
   case 113:
    _undoClusterEdges($g);
    label = 114;
    break;
   case 114:
    HEAP32[$sp >> 2] = $s_arrows_0_lcssa;
    HEAP32[$ep >> 2] = $e_arrows_0_lcssa;
    _gv_fixLocale(0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _set_record_rects($n, $f, $xb) {
  $n = $n | 0;
  $f = $f | 0;
  $xb = $xb | 0;
  var $buf = 0, $n_flds = 0, $0 = 0, $cmp = 0, $arraydecay = 0, $x = 0, $1 = 0.0, $x1 = 0, $2 = 0.0, $add = 0.0, $3 = 0, $tobool = 0, $4 = 0.0, $y = 0, $5 = 0.0, $y6 = 0, $6 = 0.0, $add7 = 0.0, $sub = 0.0, $y10 = 0, $7 = 0.0, $y13 = 0, $8 = 0.0, $add14 = 0.0, $cond = 0.0, $x16 = 0, $9 = 0.0, $10 = 0.0, $add20 = 0.0, $11 = 0, $tobool21 = 0, $12 = 0.0, $y25 = 0, $13 = 0.0, $y28 = 0, $14 = 0.0, $add29 = 0.0, $sub30 = 0.0, $y34 = 0, $15 = 0.0, $y37 = 0, $16 = 0.0, $add38 = 0.0, $cond40 = 0.0, $call = 0, $call42 = 0, $_pr = 0, $17 = 0, $cmp4418 = 0, $fld = 0, $i_019 = 0, $18 = 0, $arrayidx = 0, $19 = 0, $inc = 0, $20 = 0, $cmp44 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $n_flds = $f + 48 | 0;
    $0 = HEAP32[$n_flds >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $17 = $0;
      label = 10;
      break;
    }
   case 3:
    $arraydecay = $buf | 0;
    $x = $f + 16 | 0;
    $1 = +HEAPF64[$x >> 3];
    $x1 = $n + 32 | 0;
    $2 = +HEAPF64[$x1 >> 3];
    $add = $1 + $2;
    $3 = HEAP32[41182] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = +HEAPF64[20590];
    $y = $f + 24 | 0;
    $5 = +HEAPF64[$y >> 3];
    $y6 = $n + 40 | 0;
    $6 = +HEAPF64[$y6 >> 3];
    $add7 = $5 + $6;
    $sub = $4 - $add7;
    $cond = $sub;
    label = 6;
    break;
   case 5:
    $y10 = $f + 24 | 0;
    $7 = +HEAPF64[$y10 >> 3];
    $y13 = $n + 40 | 0;
    $8 = +HEAPF64[$y13 >> 3];
    $add14 = $7 + $8;
    $cond = $add14;
    label = 6;
    break;
   case 6:
    $x16 = $f + 32 | 0;
    $9 = +HEAPF64[$x16 >> 3];
    $10 = +HEAPF64[$x1 >> 3];
    $add20 = $9 + $10;
    $11 = HEAP32[41182] | 0;
    $tobool21 = ($11 | 0) == 0;
    if ($tobool21) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $12 = +HEAPF64[20590];
    $y25 = $f + 40 | 0;
    $13 = +HEAPF64[$y25 >> 3];
    $y28 = $n + 40 | 0;
    $14 = +HEAPF64[$y28 >> 3];
    $add29 = $13 + $14;
    $sub30 = $12 - $add29;
    $cond40 = $sub30;
    label = 9;
    break;
   case 8:
    $y34 = $f + 40 | 0;
    $15 = +HEAPF64[$y34 >> 3];
    $y37 = $n + 40 | 0;
    $16 = +HEAPF64[$y37 >> 3];
    $add38 = $15 + $16;
    $cond40 = $add38;
    label = 9;
    break;
   case 9:
    $call = _sprintf($arraydecay | 0, 117640, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $add, HEAPF64[tempInt + 8 >> 3] = $cond, HEAPF64[tempInt + 16 >> 3] = $add20, HEAPF64[tempInt + 24 >> 3] = $cond40, tempInt) | 0) | 0;
    $call42 = _agxbput($xb, $arraydecay) | 0;
    $_pr = HEAP32[$n_flds >> 2] | 0;
    $17 = $_pr;
    label = 10;
    break;
   case 10:
    $cmp4418 = ($17 | 0) > 0;
    if ($cmp4418) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $fld = $f + 56 | 0;
    $i_019 = 0;
    label = 12;
    break;
   case 12:
    $18 = HEAP32[$fld >> 2] | 0;
    $arrayidx = $18 + ($i_019 << 2) | 0;
    $19 = HEAP32[$arrayidx >> 2] | 0;
    _set_record_rects($n, $19, $xb);
    $inc = $i_019 + 1 | 0;
    $20 = HEAP32[$n_flds >> 2] | 0;
    $cmp44 = ($inc | 0) < ($20 | 0);
    if ($cmp44) {
      $i_019 = $inc;
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _rec_attach_bb($g, $bbsym) {
  $g = $g | 0;
  $bbsym = $bbsym | 0;
  var $buf = 0, $arraydecay = 0, $x = 0, $0 = 0.0, $1 = 0, $tobool = 0, $2 = 0.0, $y = 0, $3 = 0.0, $sub = 0.0, $y7 = 0, $4 = 0.0, $cond = 0.0, $x10 = 0, $5 = 0.0, $6 = 0, $tobool11 = 0, $7 = 0.0, $y16 = 0, $8 = 0.0, $sub17 = 0.0, $y22 = 0, $9 = 0.0, $cond24 = 0.0, $call = 0, $10 = 0, $index = 0, $11 = 0, $call26 = 0, $label = 0, $12 = 0, $tobool28 = 0, $text = 0, $13 = 0, $14 = 0, $tobool31 = 0, $pt_sroa_0_0__idx2 = 0, $pt_sroa_0_0_copyload3 = 0.0, $pt_sroa_1_8__idx7 = 0, $pt_sroa_1_8_copyload8 = 0.0, $15 = 0, $tobool36 = 0, $16 = 0.0, $sub39 = 0.0, $cond43 = 0.0, $call44 = 0, $call46 = 0, $17 = 0, $pt_sroa_0_0__idx = 0, $pt_sroa_0_0_copyload = 0.0, $pt_sroa_1_8__idx4 = 0, $pt_sroa_1_8_copyload = 0.0, $div = 0.0, $call51 = 0, $call53 = 0, $div56 = 0.0, $call57 = 0, $call59 = 0, $n_cluster = 0, $18 = 0, $cmp27 = 0, $clust = 0, $c_028 = 0, $19 = 0, $arrayidx63 = 0, $20 = 0, $inc = 0, $21 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $arraydecay = $buf | 0;
    $x = $g + 56 | 0;
    $0 = +HEAPF64[$x >> 3];
    $1 = HEAP32[41182] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = +HEAPF64[20590];
    $y = $g + 64 | 0;
    $3 = +HEAPF64[$y >> 3];
    $sub = $2 - $3;
    $cond = $sub;
    label = 5;
    break;
   case 4:
    $y7 = $g + 64 | 0;
    $4 = +HEAPF64[$y7 >> 3];
    $cond = $4;
    label = 5;
    break;
   case 5:
    $x10 = $g + 72 | 0;
    $5 = +HEAPF64[$x10 >> 3];
    $6 = HEAP32[41182] | 0;
    $tobool11 = ($6 | 0) == 0;
    if ($tobool11) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $7 = +HEAPF64[20590];
    $y16 = $g + 80 | 0;
    $8 = +HEAPF64[$y16 >> 3];
    $sub17 = $7 - $8;
    $cond24 = $sub17;
    label = 8;
    break;
   case 7:
    $y22 = $g + 80 | 0;
    $9 = +HEAPF64[$y22 >> 3];
    $cond24 = $9;
    label = 8;
    break;
   case 8:
    $call = _sprintf($arraydecay | 0, 118184, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $0, HEAPF64[tempInt + 8 >> 3] = $cond, HEAPF64[tempInt + 16 >> 3] = $5, HEAPF64[tempInt + 24 >> 3] = $cond24, tempInt) | 0) | 0;
    $10 = $g | 0;
    $index = $bbsym + 8 | 0;
    $11 = HEAP32[$index >> 2] | 0;
    $call26 = _agxset($10, $11, $arraydecay) | 0;
    $label = $g + 52 | 0;
    $12 = HEAP32[$label >> 2] | 0;
    $tobool28 = ($12 | 0) == 0;
    if ($tobool28) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $text = $12 | 0;
    $13 = HEAP32[$text >> 2] | 0;
    $14 = HEAP8[$13] | 0;
    $tobool31 = $14 << 24 >> 24 == 0;
    if ($tobool31) {
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $pt_sroa_0_0__idx2 = $12 + 56 | 0;
    $pt_sroa_0_0_copyload3 = +HEAPF64[$pt_sroa_0_0__idx2 >> 3];
    $pt_sroa_1_8__idx7 = $12 + 64 | 0;
    $pt_sroa_1_8_copyload8 = +HEAPF64[$pt_sroa_1_8__idx7 >> 3];
    $15 = HEAP32[41182] | 0;
    $tobool36 = ($15 | 0) == 0;
    if ($tobool36) {
      $cond43 = $pt_sroa_1_8_copyload8;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $16 = +HEAPF64[20590];
    $sub39 = $16 - $pt_sroa_1_8_copyload8;
    $cond43 = $sub39;
    label = 12;
    break;
   case 12:
    $call44 = _sprintf($arraydecay | 0, 134096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $pt_sroa_0_0_copyload3, HEAPF64[tempInt + 8 >> 3] = $cond43, tempInt) | 0) | 0;
    $call46 = _agset($10, 148568, $arraydecay) | 0;
    $17 = HEAP32[$label >> 2] | 0;
    $pt_sroa_0_0__idx = $17 + 24 | 0;
    $pt_sroa_0_0_copyload = +HEAPF64[$pt_sroa_0_0__idx >> 3];
    $pt_sroa_1_8__idx4 = $17 + 32 | 0;
    $pt_sroa_1_8_copyload = +HEAPF64[$pt_sroa_1_8__idx4 >> 3];
    $div = $pt_sroa_0_0_copyload / 72.0;
    $call51 = _sprintf($arraydecay | 0, 131848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div, tempInt) | 0) | 0;
    $call53 = _agset($10, 139232, $arraydecay) | 0;
    $div56 = $pt_sroa_1_8_copyload / 72.0;
    $call57 = _sprintf($arraydecay | 0, 131848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div56, tempInt) | 0) | 0;
    $call59 = _agset($10, 136456, $arraydecay) | 0;
    label = 13;
    break;
   case 13:
    $n_cluster = $g + 212 | 0;
    $18 = HEAP32[$n_cluster >> 2] | 0;
    $cmp27 = ($18 | 0) < 1;
    if ($cmp27) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $clust = $g + 216 | 0;
    $c_028 = 1;
    label = 15;
    break;
   case 15:
    $19 = HEAP32[$clust >> 2] | 0;
    $arrayidx63 = $19 + ($c_028 << 2) | 0;
    $20 = HEAP32[$arrayidx63 >> 2] | 0;
    _rec_attach_bb($20, $bbsym);
    $inc = $c_028 + 1 | 0;
    $21 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($21 | 0);
    if ($cmp) {
      label = 16;
      break;
    } else {
      $c_028 = $inc;
      label = 15;
      break;
    }
   case 16:
    STACKTOP = __stackBase__;
    return;
  }
}
function _attach_attrs($g) {
  $g = $g | 0;
  var __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  _attach_attrs_and_arrows($g, __stackBase__ + 8 | 0, __stackBase__ | 0);
  STACKTOP = __stackBase__;
  return;
}
function _output_point($xbuf, $p) {
  $xbuf = $xbuf | 0;
  $p = $p | 0;
  var $buf = 0, $arraydecay = 0, $x = 0, $0 = 0.0, $cmp = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $1 = 0, $tobool = 0, $2 = 0.0, $y = 0, $3 = 0.0, $sub5 = 0.0, $y7 = 0, $4 = 0.0, $cond9 = 0.0, $cmp10 = 0, $5 = 0, $tobool13 = 0, $6 = 0.0, $y15 = 0, $7 = 0.0, $sub16 = 0.0, $y18 = 0, $8 = 0.0, $cond20 = 0.0, $add21 = 0.0, $9 = 0.0, $y26 = 0, $10 = 0.0, $sub27 = 0.0, $y29 = 0, $11 = 0.0, $cond31 = 0.0, $sub32 = 0.0, $add21_sink = 0.0, $conv22 = 0, $call = 0, $call37 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $arraydecay = $buf | 0;
    $x = $p | 0;
    $0 = +HEAPF64[$x >> 3];
    $cmp = $0 < 0.0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $0 + .5;
    $add_sink = $add;
    label = 5;
    break;
   case 4:
    $sub = $0 + -.5;
    $add_sink = $sub;
    label = 5;
    break;
   case 5:
    $conv = ~~$add_sink;
    $1 = HEAP32[41182] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = +HEAPF64[20590];
    $y = $p + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $sub5 = $2 - $3;
    $cond9 = $sub5;
    label = 8;
    break;
   case 7:
    $y7 = $p + 8 | 0;
    $4 = +HEAPF64[$y7 >> 3];
    $cond9 = $4;
    label = 8;
    break;
   case 8:
    $cmp10 = $cond9 < 0.0;
    $5 = HEAP32[41182] | 0;
    $tobool13 = ($5 | 0) != 0;
    if ($cmp10) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    if ($tobool13) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $6 = +HEAPF64[20590];
    $y15 = $p + 8 | 0;
    $7 = +HEAPF64[$y15 >> 3];
    $sub16 = $6 - $7;
    $cond20 = $sub16;
    label = 12;
    break;
   case 11:
    $y18 = $p + 8 | 0;
    $8 = +HEAPF64[$y18 >> 3];
    $cond20 = $8;
    label = 12;
    break;
   case 12:
    $add21 = $cond20 + .5;
    $add21_sink = $add21;
    label = 17;
    break;
   case 13:
    if ($tobool13) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $9 = +HEAPF64[20590];
    $y26 = $p + 8 | 0;
    $10 = +HEAPF64[$y26 >> 3];
    $sub27 = $9 - $10;
    $cond31 = $sub27;
    label = 16;
    break;
   case 15:
    $y29 = $p + 8 | 0;
    $11 = +HEAPF64[$y29 >> 3];
    $cond31 = $11;
    label = 16;
    break;
   case 16:
    $sub32 = $cond31 + -.5;
    $add21_sink = $sub32;
    label = 17;
    break;
   case 17:
    $conv22 = ~~$add21_sink;
    $call = _sprintf($arraydecay | 0, 118768, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv, HEAP32[tempInt + 8 >> 2] = $conv22, tempInt) | 0) | 0;
    $call37 = _agxbput($xbuf, $arraydecay) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvContext() {
  var $call1 = 0;
  _aginitlib(296, 304, 192);
  _agnodeattr(0, 122008, 154456);
  $call1 = _gvNEWcontext(0, 1) | 0;
  _gvconfig($call1, 0);
  return $call1 | 0;
}
function _gvLayout($gvc, $g, $engine) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  $engine = $engine | 0;
  var $buf = 0, $call = 0, $cmp = 0, $call1 = 0, $call2 = 0, $call3 = 0, $drawing = 0, $0 = 0, $landscape = 0, $1 = 0, $tobool = 0, $arraydecay = 0, $bb = 0, $y = 0, $2 = 0.0, $cmp6 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $x = 0, $3 = 0.0, $cmp19 = 0, $add26 = 0.0, $sub33 = 0.0, $add26_sink = 0.0, $conv27 = 0, $y39 = 0, $4 = 0.0, $cmp40 = 0, $add47 = 0.0, $sub54 = 0.0, $add47_sink = 0.0, $conv48 = 0, $x61 = 0, $5 = 0.0, $cmp62 = 0, $add69 = 0.0, $sub76 = 0.0, $add69_sink = 0.0, $conv70 = 0, $call80 = 0, $x85 = 0, $6 = 0.0, $cmp86 = 0, $add93 = 0.0, $sub100 = 0.0, $add93_sink = 0.0, $conv94 = 0, $y107 = 0, $7 = 0.0, $cmp108 = 0, $add115 = 0.0, $sub122 = 0.0, $add115_sink = 0.0, $conv116 = 0, $x129 = 0, $8 = 0.0, $cmp130 = 0, $add137 = 0.0, $sub144 = 0.0, $add137_sink = 0.0, $conv138 = 0, $y151 = 0, $9 = 0.0, $cmp152 = 0, $add159 = 0.0, $sub166 = 0.0, $add159_sink = 0.0, $conv160 = 0, $call170 = 0, $10 = 0, $call173 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 256 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $call = _gvlayout_select($gvc, $engine) | 0;
    $cmp = ($call | 0) == 999;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call1 = _gvplugin_list($gvc, 1, $engine) | 0;
    $call2 = _agerr(1, 127200, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $engine, HEAP32[tempInt + 8 >> 2] = $call1, tempInt) | 0) | 0;
    $retval_0 = -1;
    label = 32;
    break;
   case 4:
    $call3 = _gvLayoutJobs($gvc, $g) | 0;
    $drawing = $g + 48 | 0;
    $0 = HEAP32[$drawing >> 2] | 0;
    $landscape = $0 + 81 | 0;
    $1 = HEAP8[$landscape] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    $arraydecay = $buf | 0;
    $bb = $g + 56 | 0;
    if ($tobool) {
      label = 18;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y = $g + 64 | 0;
    $2 = +HEAPF64[$y >> 3];
    $cmp6 = $2 < 0.0;
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $add = $2 + .5;
    $add_sink = $add;
    label = 8;
    break;
   case 7:
    $sub = $2 + -.5;
    $add_sink = $sub;
    label = 8;
    break;
   case 8:
    $conv = ~~$add_sink;
    $x = $bb | 0;
    $3 = +HEAPF64[$x >> 3];
    $cmp19 = $3 < 0.0;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add26 = $3 + .5;
    $add26_sink = $add26;
    label = 11;
    break;
   case 10:
    $sub33 = $3 + -.5;
    $add26_sink = $sub33;
    label = 11;
    break;
   case 11:
    $conv27 = ~~$add26_sink;
    $y39 = $g + 80 | 0;
    $4 = +HEAPF64[$y39 >> 3];
    $cmp40 = $4 < 0.0;
    if ($cmp40) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add47 = $4 + .5;
    $add47_sink = $add47;
    label = 14;
    break;
   case 13:
    $sub54 = $4 + -.5;
    $add47_sink = $sub54;
    label = 14;
    break;
   case 14:
    $conv48 = ~~$add47_sink;
    $x61 = $g + 72 | 0;
    $5 = +HEAPF64[$x61 >> 3];
    $cmp62 = $5 < 0.0;
    if ($cmp62) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add69 = $5 + .5;
    $add69_sink = $add69;
    label = 17;
    break;
   case 16:
    $sub76 = $5 + -.5;
    $add69_sink = $sub76;
    label = 17;
    break;
   case 17:
    $conv70 = ~~$add69_sink;
    $call80 = _sprintf($arraydecay | 0, 117440, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $conv, HEAP32[tempInt + 8 >> 2] = $conv27, HEAP32[tempInt + 16 >> 2] = $conv48, HEAP32[tempInt + 24 >> 2] = $conv70, tempInt) | 0) | 0;
    label = 31;
    break;
   case 18:
    $x85 = $bb | 0;
    $6 = +HEAPF64[$x85 >> 3];
    $cmp86 = $6 < 0.0;
    if ($cmp86) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $add93 = $6 + .5;
    $add93_sink = $add93;
    label = 21;
    break;
   case 20:
    $sub100 = $6 + -.5;
    $add93_sink = $sub100;
    label = 21;
    break;
   case 21:
    $conv94 = ~~$add93_sink;
    $y107 = $g + 64 | 0;
    $7 = +HEAPF64[$y107 >> 3];
    $cmp108 = $7 < 0.0;
    if ($cmp108) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $add115 = $7 + .5;
    $add115_sink = $add115;
    label = 24;
    break;
   case 23:
    $sub122 = $7 + -.5;
    $add115_sink = $sub122;
    label = 24;
    break;
   case 24:
    $conv116 = ~~$add115_sink;
    $x129 = $g + 72 | 0;
    $8 = +HEAPF64[$x129 >> 3];
    $cmp130 = $8 < 0.0;
    if ($cmp130) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $add137 = $8 + .5;
    $add137_sink = $add137;
    label = 27;
    break;
   case 26:
    $sub144 = $8 + -.5;
    $add137_sink = $sub144;
    label = 27;
    break;
   case 27:
    $conv138 = ~~$add137_sink;
    $y151 = $g + 80 | 0;
    $9 = +HEAPF64[$y151 >> 3];
    $cmp152 = $9 < 0.0;
    if ($cmp152) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add159 = $9 + .5;
    $add159_sink = $add159;
    label = 30;
    break;
   case 29:
    $sub166 = $9 + -.5;
    $add159_sink = $sub166;
    label = 30;
    break;
   case 30:
    $conv160 = ~~$add159_sink;
    $call170 = _sprintf($arraydecay | 0, 117440, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $conv94, HEAP32[tempInt + 8 >> 2] = $conv116, HEAP32[tempInt + 16 >> 2] = $conv138, HEAP32[tempInt + 24 >> 2] = $conv160, tempInt) | 0) | 0;
    label = 31;
    break;
   case 31:
    $10 = $g | 0;
    $call173 = _agsafeset($10, 112216, $arraydecay, 107864) | 0;
    $retval_0 = 0;
    label = 32;
    break;
   case 32:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gvRender($gvc, $g, $format, $out) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  $format = $format | 0;
  $out = $out | 0;
  var $root = 0, $0 = 0, $call = 0, $job1 = 0, $1 = 0, $output_langname = 0, $2 = 0, $call5 = 0, $output_lang = 0, $drawing = 0, $3 = 0, $tobool = 0, $flags = 0, $4 = 0, $and = 0, $tobool6 = 0, $5 = 0, $6 = 0, $output_file = 0, $cmp10 = 0, $flags13 = 0, $7 = 0, $or = 0, $call15 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $call = _gvjobs_output_langname($gvc, $format) | 0;
    $job1 = $gvc + 124 | 0;
    $1 = HEAP32[$job1 >> 2] | 0;
    $output_langname = $1 + 52 | 0;
    $2 = HEAP32[$output_langname >> 2] | 0;
    $call5 = _gvrender_select($1, $2) | 0;
    $output_lang = $1 + 56 | 0;
    HEAP32[$output_lang >> 2] = $call5;
    $drawing = $0 + 48 | 0;
    $3 = HEAP32[$drawing >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $flags = $1 + 152 | 0;
    $4 = HEAP32[$flags >> 2] | 0;
    $and = $4 & 67108864;
    $tobool6 = ($and | 0) == 0;
    if ($tobool6) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $5 = HEAP32[_stderr >> 2] | 0;
    $6 = _fwrite(99768, 20, 1, $5 | 0) | 0;
    $retval_0 = -1;
    label = 8;
    break;
   case 5:
    $output_file = $1 + 36 | 0;
    HEAP32[$output_file >> 2] = $out;
    $cmp10 = ($out | 0) == 0;
    if ($cmp10) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $flags13 = $1 + 152 | 0;
    $7 = HEAP32[$flags13 >> 2] | 0;
    $or = $7 | 134217728;
    HEAP32[$flags13 >> 2] = $or;
    label = 7;
    break;
   case 7:
    $call15 = _gvRenderJobs($gvc, $0) | 0;
    _gvrender_end_job($1);
    _gvjobs_delete($gvc);
    $retval_0 = $call15;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvRenderFilename($gvc, $g, $format, $filename) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  $format = $format | 0;
  $filename = $filename | 0;
  var $root = 0, $0 = 0, $call = 0, $job1 = 0, $1 = 0, $output_langname = 0, $2 = 0, $call5 = 0, $output_lang = 0, $drawing = 0, $3 = 0, $tobool = 0, $flags = 0, $4 = 0, $and = 0, $tobool6 = 0, $5 = 0, $6 = 0, $call10 = 0, $7 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $call = _gvjobs_output_langname($gvc, $format) | 0;
    $job1 = $gvc + 124 | 0;
    $1 = HEAP32[$job1 >> 2] | 0;
    $output_langname = $1 + 52 | 0;
    $2 = HEAP32[$output_langname >> 2] | 0;
    $call5 = _gvrender_select($1, $2) | 0;
    $output_lang = $1 + 56 | 0;
    HEAP32[$output_lang >> 2] = $call5;
    $drawing = $0 + 48 | 0;
    $3 = HEAP32[$drawing >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $flags = $1 + 152 | 0;
    $4 = HEAP32[$flags >> 2] | 0;
    $and = $4 & 67108864;
    $tobool6 = ($and | 0) == 0;
    if ($tobool6) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $5 = HEAP32[_stderr >> 2] | 0;
    $6 = _fwrite(99768, 20, 1, $5 | 0) | 0;
    $retval_0 = -1;
    label = 6;
    break;
   case 5:
    _gvjobs_output_filename($gvc, $filename);
    $call10 = _gvRenderJobs($gvc, $0) | 0;
    _gvrender_end_job($1);
    $7 = $1;
    _gvdevice_finalize($7);
    _gvjobs_delete($gvc);
    $retval_0 = $call10;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvAddLibrary($gvc, $lib) {
  $gvc = $gvc | 0;
  $lib = $lib | 0;
  _gvconfig_plugin_install_from_library($gvc, 0, $lib);
  return;
}
function _gvconfig_plugin_install_from_library($gvc, $path, $library) {
  $gvc = $gvc | 0;
  $path = $path | 0;
  $library = $library | 0;
  var $packagename = 0, $0 = 0, $call = 0, $apis1 = 0, $1 = 0, $types215 = 0, $2 = 0, $tobool16 = 0, $3 = 0, $apis_017 = 0, $type12 = 0, $4 = 0, $tobool413 = 0, $api = 0, $5 = 0, $i_014 = 0, $arrayidx = 0, $6 = 0, $quality = 0, $7 = 0, $call10 = 0, $inc = 0, $type = 0, $8 = 0, $tobool4 = 0, $incdec_ptr = 0, $types2 = 0, $9 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $packagename = $library | 0;
    $0 = HEAP32[$packagename >> 2] | 0;
    $call = _gvplugin_package_record($gvc, $path, $0) | 0;
    $apis1 = $library + 4 | 0;
    $1 = HEAP32[$apis1 >> 2] | 0;
    $types215 = $1 + 4 | 0;
    $2 = HEAP32[$types215 >> 2] | 0;
    $tobool16 = ($2 | 0) == 0;
    if ($tobool16) {
      label = 7;
      break;
    } else {
      $apis_017 = $1;
      $3 = $2;
      label = 3;
      break;
    }
   case 3:
    $type12 = $3 + 4 | 0;
    $4 = HEAP32[$type12 >> 2] | 0;
    $tobool413 = ($4 | 0) == 0;
    if ($tobool413) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $api = $apis_017 | 0;
    $i_014 = 0;
    $5 = $4;
    label = 5;
    break;
   case 5:
    $arrayidx = $3 + ($i_014 * 20 & -1) | 0;
    $6 = HEAP32[$api >> 2] | 0;
    $quality = $3 + ($i_014 * 20 & -1) + 8 | 0;
    $7 = HEAP32[$quality >> 2] | 0;
    $call10 = _gvplugin_install($gvc, $6, $5, $7, $call, $arrayidx) | 0;
    $inc = $i_014 + 1 | 0;
    $type = $3 + ($inc * 20 & -1) + 4 | 0;
    $8 = HEAP32[$type >> 2] | 0;
    $tobool4 = ($8 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      $i_014 = $inc;
      $5 = $8;
      label = 5;
      break;
    }
   case 6:
    $incdec_ptr = $apis_017 + 8 | 0;
    $types2 = $apis_017 + 12 | 0;
    $9 = HEAP32[$types2 >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $apis_017 = $incdec_ptr;
      $3 = $9;
      label = 3;
      break;
    }
   case 7:
    return;
  }
}
function _gvplugin_package_record($gvc, $path, $name) {
  $gvc = $gvc | 0;
  $path = $path | 0;
  $name = $name | 0;
  var $call = 0, $0 = 0, $tobool = 0, $call1 = 0, $cond = 0, $path2 = 0, $1 = 0, $call3 = 0, $name4 = 0, $2 = 0, $packages = 0, $3 = 0, $next = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _gmalloc(12) | 0;
    $0 = $call;
    $tobool = ($path | 0) == 0;
    if ($tobool) {
      $cond = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _strdup($path | 0) | 0;
    $cond = $call1;
    label = 4;
    break;
   case 4:
    $path2 = $call + 4 | 0;
    $1 = $path2;
    HEAP32[$1 >> 2] = $cond;
    $call3 = _strdup($name | 0) | 0;
    $name4 = $call + 8 | 0;
    $2 = $name4;
    HEAP32[$2 >> 2] = $call3;
    $packages = $gvc + 100 | 0;
    $3 = HEAP32[$packages >> 2] | 0;
    $next = $call;
    HEAP32[$next >> 2] = $3;
    HEAP32[$packages >> 2] = $0;
    return $0 | 0;
  }
  return 0;
}
function _gvconfig($gvc, $rescan) {
  $gvc = $gvc | 0;
  $rescan = $rescan | 0;
  _gvconfig_plugin_install_builtins($gvc);
  HEAP8[$gvc + 44 | 0] = 0;
  _gvtextlayout_select($gvc);
  return;
}
function _gvconfig_plugin_install_builtins($gvc) {
  $gvc = $gvc | 0;
  var $builtins = 0, $0 = 0, $cmp = 0, $name36 = 0, $1 = 0, $tobool7 = 0, $2 = 0, $s_08 = 0, $3 = 0, $cmp4 = 0, $call = 0, $tobool6 = 0, $address = 0, $4 = 0, $5 = 0, $incdec_ptr = 0, $name3 = 0, $6 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $builtins = $gvc + 32 | 0;
    $0 = HEAP32[$builtins >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $name36 = $0 | 0;
    $1 = HEAP32[$name36 >> 2] | 0;
    $tobool7 = ($1 | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      $s_08 = $0;
      $2 = $1;
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP8[$2] | 0;
    $cmp4 = $3 << 24 >> 24 == 103;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $call = _strstr($2 | 0, 92272) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $address = $s_08 + 4 | 0;
    $4 = HEAP32[$address >> 2] | 0;
    $5 = $4;
    _gvconfig_plugin_install_from_library($gvc, 0, $5);
    label = 7;
    break;
   case 7:
    $incdec_ptr = $s_08 + 8 | 0;
    $name3 = $incdec_ptr | 0;
    $6 = HEAP32[$name3 >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $s_08 = $incdec_ptr;
      $2 = $6;
      label = 4;
      break;
    }
   case 8:
    return;
  }
}
function _gvNEWcontext($builtins, $demand_loading) {
  $builtins = $builtins | 0;
  $demand_loading = $demand_loading | 0;
  var $call = 0, $0 = 0, $tobool = 0, $info = 0, $errorfn = 0, $1 = 0, $builtins3 = 0, $2 = 0, $demand_loading5 = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(360) | 0;
    $0 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $info = $call;
    HEAP32[$info >> 2] = 166576;
    $errorfn = $call + 16 | 0;
    $1 = $errorfn;
    HEAP32[$1 >> 2] = 502;
    $builtins3 = $call + 32 | 0;
    $2 = $builtins3;
    HEAP32[$2 >> 2] = $builtins;
    $demand_loading5 = $call + 36 | 0;
    $3 = $demand_loading5;
    HEAP32[$3 >> 2] = $demand_loading;
    label = 4;
    break;
   case 4:
    return $0 | 0;
  }
  return 0;
}
function _gvFreeContext($gvc) {
  $gvc = $gvc | 0;
  var $gvgs = 0, $0 = 0, $tobool14 = 0, $gvg_next_015 = 0, $next = 0, $1 = 0, $2 = 0, $tobool = 0, $packages = 0, $3 = 0, $tobool212 = 0, $package_next_013 = 0, $next4 = 0, $4 = 0, $path = 0, $5 = 0, $name = 0, $6 = 0, $7 = 0, $tobool2 = 0, $config_path = 0, $8 = 0, $tobool6 = 0, $input_filenames = 0, $9 = 0, $tobool8 = 0, $10 = 0, $11 = 0, $12 = 0, $call = 0, $add = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _emit_once_reset();
    $gvgs = $gvc + 52 | 0;
    $0 = HEAP32[$gvgs >> 2] | 0;
    $tobool14 = ($0 | 0) == 0;
    if ($tobool14) {
      label = 4;
      break;
    } else {
      $gvg_next_015 = $0;
      label = 3;
      break;
    }
   case 3:
    $next = $gvg_next_015 + 4 | 0;
    $1 = HEAP32[$next >> 2] | 0;
    $2 = $gvg_next_015;
    _free($2);
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $gvg_next_015 = $1;
      label = 3;
      break;
    }
   case 4:
    $packages = $gvc + 100 | 0;
    $3 = HEAP32[$packages >> 2] | 0;
    $tobool212 = ($3 | 0) == 0;
    if ($tobool212) {
      label = 6;
      break;
    } else {
      $package_next_013 = $3;
      label = 5;
      break;
    }
   case 5:
    $next4 = $package_next_013 | 0;
    $4 = HEAP32[$next4 >> 2] | 0;
    $path = $package_next_013 + 4 | 0;
    $5 = HEAP32[$path >> 2] | 0;
    _free($5);
    $name = $package_next_013 + 8 | 0;
    $6 = HEAP32[$name >> 2] | 0;
    _free($6);
    $7 = $package_next_013;
    _free($7);
    $tobool2 = ($4 | 0) == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      $package_next_013 = $4;
      label = 5;
      break;
    }
   case 6:
    _gvjobs_delete($gvc);
    $config_path = $gvc + 40 | 0;
    $8 = HEAP32[$config_path >> 2] | 0;
    $tobool6 = ($8 | 0) == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _free($8);
    label = 8;
    break;
   case 8:
    $input_filenames = $gvc + 48 | 0;
    $9 = HEAP32[$input_filenames >> 2] | 0;
    $tobool8 = ($9 | 0) == 0;
    if ($tobool8) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $10 = $9;
    _free($10);
    label = 10;
    break;
   case 10:
    $11 = $gvc;
    _free($11);
    $12 = HEAP32[4046] | 0;
    $call = _agerrors() | 0;
    $add = $call + $12 | 0;
    return $add | 0;
  }
  return 0;
}
function _gvdevice_initialize($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $gvc1 = 0, $1 = 0, $tobool = 0, $initialize = 0, $2 = 0, $tobool2 = 0, $output_data = 0, $3 = 0, $tobool4 = 0, $output_file = 0, $4 = 0, $tobool7 = 0, $auto_outfile_names = 0, $5 = 0, $tobool9 = 0, $output_filename = 0, $6 = 0, $tobool11 = 0, $call = 0, $cmp = 0, $common17 = 0, $7 = 0, $errorfn = 0, $8 = 0, $9 = 0, $call19 = 0, $10 = 0, $call20 = 0, $11 = 0, $flags = 0, $12 = 0, $and = 0, $tobool28 = 0, $common30 = 0, $13 = 0, $errorfn31 = 0, $14 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 76 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $gvc1 = $job | 0;
    $1 = HEAP32[$gvc1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $initialize = $0 | 0;
    $2 = HEAP32[$initialize >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$2 & 1023]($job);
    label = 13;
    break;
   case 5:
    $output_data = $job + 40 | 0;
    $3 = HEAP32[$output_data >> 2] | 0;
    $tobool4 = ($3 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 13;
      break;
    }
   case 6:
    $output_file = $job + 36 | 0;
    $4 = HEAP32[$output_file >> 2] | 0;
    $tobool7 = ($4 | 0) == 0;
    if ($tobool7) {
      label = 7;
      break;
    } else {
      label = 13;
      break;
    }
   case 7:
    $auto_outfile_names = $1 + 13 | 0;
    $5 = HEAP8[$auto_outfile_names] | 0;
    $tobool9 = $5 << 24 >> 24 == 0;
    if ($tobool9) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _auto_output_filename($job);
    label = 9;
    break;
   case 9:
    $output_filename = $job + 32 | 0;
    $6 = HEAP32[$output_filename >> 2] | 0;
    $tobool11 = ($6 | 0) == 0;
    if ($tobool11) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call = _fopen($6 | 0, 134128) | 0;
    HEAP32[$output_file >> 2] = $call;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $common17 = $job + 12 | 0;
    $7 = HEAP32[$common17 >> 2] | 0;
    $errorfn = $7 + 16 | 0;
    $8 = HEAP32[$errorfn >> 2] | 0;
    $9 = HEAP32[$output_filename >> 2] | 0;
    $call19 = ___errno_location() | 0;
    $10 = HEAP32[$call19 >> 2] | 0;
    $call20 = _strerror($10 | 0) | 0;
    FUNCTION_TABLE_vii[$8 & 1023](156152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $9, HEAP32[tempInt + 8 >> 2] = $call20, tempInt) | 0);
    $retval_0 = 1;
    label = 15;
    break;
   case 12:
    $11 = HEAP32[_stdout >> 2] | 0;
    HEAP32[$output_file >> 2] = $11;
    label = 13;
    break;
   case 13:
    $flags = $job + 152 | 0;
    $12 = HEAP32[$flags >> 2] | 0;
    $and = $12 & 1024;
    $tobool28 = ($and | 0) == 0;
    if ($tobool28) {
      $retval_0 = 0;
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $common30 = $job + 12 | 0;
    $13 = HEAP32[$common30 >> 2] | 0;
    $errorfn31 = $13 + 16 | 0;
    $14 = HEAP32[$errorfn31 >> 2] | 0;
    FUNCTION_TABLE_vii[$14 & 1023](128392, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    $retval_0 = 1;
    label = 15;
    break;
   case 15:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _auto_output_filename($job) {
  $job = $job | 0;
  var $gidx = 0, $graph_index = 0, $0 = 0, $tobool = 0, $arraydecay = 0, $add = 0, $call = 0, $input_filename = 0, $1 = 0, $tobool2 = 0, $_ = 0, $call5 = 0, $call7 = 0, $output_langname = 0, $2 = 0, $call10 = 0, $add8 = 0, $add9 = 0, $add11 = 0, $add12 = 0, $3 = 0, $cmp = 0, $add14 = 0, $4 = 0, $call15 = 0, $5 = 0, $call17 = 0, $6 = 0, $call19 = 0, $7 = 0, $strlen = 0, $endptr = 0, $8 = 0, $9 = 0, $call22 = 0, $call2313 = 0, $tobool2414 = 0, $10 = 0, $11 = 0, $call2315 = 0, $add_ptr = 0, $call25 = 0, $12 = 0, $strlen11 = 0, $endptr12 = 0, $13 = 0, $call23 = 0, $tobool24 = 0, $14 = 0, $_lcssa = 0, $call27 = 0, $15 = 0, $output_filename = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 104 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gidx = __stackBase__ | 0;
    $graph_index = $job + 24 | 0;
    $0 = HEAP32[$graph_index >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    $arraydecay = $gidx | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $0 + 1 | 0;
    $call = _sprintf($arraydecay | 0, 162400, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $add, tempInt) | 0) | 0;
    label = 5;
    break;
   case 4:
    HEAP8[$arraydecay] = 0;
    label = 5;
    break;
   case 5:
    $input_filename = $job + 20 | 0;
    $1 = HEAP32[$input_filename >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    $_ = $tobool2 ? 158840 : $1;
    $call5 = _strlen($_ | 0) | 0;
    $call7 = _strlen($arraydecay | 0) | 0;
    $output_langname = $job + 52 | 0;
    $2 = HEAP32[$output_langname >> 2] | 0;
    $call10 = _strlen($2 | 0) | 0;
    $add8 = $call5 + 1 | 0;
    $add9 = $add8 + $call7 | 0;
    $add11 = $add9 + $call10 | 0;
    $add12 = $add11 + 1 | 0;
    $3 = HEAP32[21448] | 0;
    $cmp = $3 >>> 0 < $add12 >>> 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $add14 = $add11 + 11 | 0;
    HEAP32[21448] = $add14;
    $4 = HEAP32[21450] | 0;
    $call15 = _realloc($4, $add14) | 0;
    HEAP32[21450] = $call15;
    label = 7;
    break;
   case 7:
    $5 = HEAP32[21450] | 0;
    $call17 = _strcpy($5 | 0, $_ | 0) | 0;
    $6 = HEAP32[21450] | 0;
    $call19 = _strcat($6 | 0, $arraydecay | 0) | 0;
    $7 = HEAP32[21450] | 0;
    $strlen = _strlen($7 | 0) | 0;
    $endptr = $7 + $strlen | 0;
    $8 = $endptr;
    tempBigInt = 46;
    HEAP8[$8] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$8 + 1 | 0] = tempBigInt & 255;
    $9 = HEAP32[$output_langname >> 2] | 0;
    $call22 = _strdup($9 | 0) | 0;
    $call2313 = _strrchr($call22 | 0, 58) | 0;
    $tobool2414 = ($call2313 | 0) == 0;
    $10 = HEAP32[21450] | 0;
    if ($tobool2414) {
      $_lcssa = $10;
      label = 9;
      break;
    } else {
      $call2315 = $call2313;
      $11 = $10;
      label = 8;
      break;
    }
   case 8:
    $add_ptr = $call2315 + 1 | 0;
    $call25 = _strcat($11 | 0, $add_ptr | 0) | 0;
    $12 = HEAP32[21450] | 0;
    $strlen11 = _strlen($12 | 0) | 0;
    $endptr12 = $12 + $strlen11 | 0;
    $13 = $endptr12;
    tempBigInt = 46;
    HEAP8[$13] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$13 + 1 | 0] = tempBigInt & 255;
    HEAP8[$call2315] = 0;
    $call23 = _strrchr($call22 | 0, 58) | 0;
    $tobool24 = ($call23 | 0) == 0;
    $14 = HEAP32[21450] | 0;
    if ($tobool24) {
      $_lcssa = $14;
      label = 9;
      break;
    } else {
      $call2315 = $call23;
      $11 = $14;
      label = 8;
      break;
    }
   case 9:
    $call27 = _strcat($_lcssa | 0, $call22 | 0) | 0;
    _free($call22);
    $15 = HEAP32[21450] | 0;
    $output_filename = $job + 32 | 0;
    HEAP32[$output_filename >> 2] = $15;
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvwrite($job, $s, $len) {
  $job = $job | 0;
  $s = $s | 0;
  $len = $len | 0;
  var $tobool = 0, $tobool1 = 0, $or_cond = 0, $flags = 0, $0 = 0, $and = 0, $tobool2 = 0, $common = 0, $1 = 0, $errorfn = 0, $2 = 0, $call = 0, $cmp = 0, $common5 = 0, $3 = 0, $errorfn6 = 0, $4 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($len | 0) == 0;
    $tobool1 = ($s | 0) == 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $flags = $job + 152 | 0;
    $0 = HEAP32[$flags >> 2] | 0;
    $and = $0 & 1024;
    $tobool2 = ($and | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $common = $job + 12 | 0;
    $1 = HEAP32[$common >> 2] | 0;
    $errorfn = $1 + 16 | 0;
    $2 = HEAP32[$errorfn >> 2] | 0;
    FUNCTION_TABLE_vii[$2 & 1023](128392, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _exit(1);
    return 0;
   case 5:
    $call = _gvwrite_no_z($job, $s, $len) | 0;
    $cmp = ($call | 0) == ($len | 0);
    if ($cmp) {
      $retval_0 = $len;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $common5 = $job + 12 | 0;
    $3 = HEAP32[$common5 >> 2] | 0;
    $errorfn6 = $3 + 16 | 0;
    $4 = HEAP32[$errorfn6 >> 2] | 0;
    FUNCTION_TABLE_vii[$4 & 1023](117688, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $len, tempInt) | 0);
    _exit(1);
    return 0;
   case 7:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gvwrite_no_z($job, $s, $len) {
  $job = $job | 0;
  $s = $s | 0;
  $len = $len | 0;
  var $gvc = 0, $0 = 0, $write_fn = 0, $1 = 0, $tobool = 0, $call = 0, $output_data = 0, $2 = 0, $tobool3 = 0, $output_data_allocated = 0, $3 = 0, $output_data_position = 0, $4 = 0, $add_neg = 0, $sub = 0, $cmp = 0, $add7 = 0, $add9 = 0, $and = 0, $5 = 0, $call13 = 0, $tobool16 = 0, $common = 0, $6 = 0, $errorfn = 0, $7 = 0, $8 = 0, $9 = 0, $add_ptr = 0, $10 = 0, $add23 = 0, $11 = 0, $arrayidx = 0, $output_file = 0, $12 = 0, $call26 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc = $job | 0;
    $0 = HEAP32[$gvc >> 2] | 0;
    $write_fn = $0 + 116 | 0;
    $1 = HEAP32[$write_fn >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($job, $s, $len) | 0;
    $retval_0 = $call;
    label = 10;
    break;
   case 4:
    $output_data = $job + 40 | 0;
    $2 = HEAP32[$output_data >> 2] | 0;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $output_data_allocated = $job + 44 | 0;
    $3 = HEAP32[$output_data_allocated >> 2] | 0;
    $output_data_position = $job + 48 | 0;
    $4 = HEAP32[$output_data_position >> 2] | 0;
    $add_neg = $3 - 1 | 0;
    $sub = $add_neg - $4 | 0;
    $cmp = $sub >>> 0 < $len >>> 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $add7 = $len + 4096 | 0;
    $add9 = $add7 + $4 | 0;
    $and = $add9 & -4096;
    HEAP32[$output_data_allocated >> 2] = $and;
    $5 = HEAP32[$output_data >> 2] | 0;
    $call13 = _realloc($5, $and) | 0;
    HEAP32[$output_data >> 2] = $call13;
    $tobool16 = ($call13 | 0) == 0;
    if ($tobool16) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $common = $job + 12 | 0;
    $6 = HEAP32[$common >> 2] | 0;
    $errorfn = $6 + 16 | 0;
    $7 = HEAP32[$errorfn >> 2] | 0;
    FUNCTION_TABLE_vii[$7 & 1023](92096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _exit(1);
    return 0;
   case 8:
    $8 = HEAP32[$output_data >> 2] | 0;
    $9 = HEAP32[$output_data_position >> 2] | 0;
    $add_ptr = $8 + $9 | 0;
    _memcpy($add_ptr | 0, $s | 0, $len);
    $10 = HEAP32[$output_data_position >> 2] | 0;
    $add23 = $10 + $len | 0;
    HEAP32[$output_data_position >> 2] = $add23;
    $11 = HEAP32[$output_data >> 2] | 0;
    $arrayidx = $11 + $add23 | 0;
    HEAP8[$arrayidx] = 0;
    $retval_0 = $len;
    label = 10;
    break;
   case 9:
    $output_file = $job + 36 | 0;
    $12 = HEAP32[$output_file >> 2] | 0;
    $call26 = _fwrite($s | 0, 1, $len | 0, $12 | 0) | 0;
    $retval_0 = $call26;
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _quit_cb($job) {
  $job = $job | 0;
  return 1;
}
function _gvevent_modify($job, $name, $value) {
  $job = $job | 0;
  $name = $name | 0;
  $value = $value | 0;
  return;
}
function _gvevent_delete($job) {
  $job = $job | 0;
  return;
}
function _gvprintnum($len, $number) {
  $len = $len | 0;
  $number = +$number;
  var $cmp = 0, $cmp1 = 0, $mul = 0.0, $cmp4 = 0, $sub6 = 0.0, $add = 0.0, $N_0_in = 0.0, $N_0 = 0, $cmp9 = 0, $tobool = 0, $sub17 = 0, $sub17_N_0 = 0, $i_026 = 0, $showzeros_025 = 0, $N_224 = 0, $result_023 = 0, $rem = 0, $div = 0, $tobool22 = 0, $tobool24 = 0, $or_cond21 = 0, $or = 0, $conv26 = 0, $incdec_ptr = 0, $result_1 = 0, $showzeros_1 = 0, $cmp28 = 0, $tobool31 = 0, $incdec_ptr33 = 0, $result_3 = 0, $showzeros_2 = 0, $dec = 0, $N_224_off = 0, $0 = 0, $cmp20 = 0, $or_cond = 0, $incdec_ptr38 = 0, $result_4 = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = $number < -1.0e15;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[$len >> 2] = 19;
    $retval_0 = 11248;
    label = 21;
    break;
   case 4:
    $cmp1 = $number > 1.0e15;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP32[$len >> 2] = 18;
    $retval_0 = 11249;
    label = 21;
    break;
   case 6:
    $mul = $number * 100.0;
    $cmp4 = $mul < 0.0;
    if ($cmp4) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $sub6 = $mul + -.5;
    $N_0_in = $sub6;
    label = 9;
    break;
   case 8:
    $add = $mul + .5;
    $N_0_in = $add;
    label = 9;
    break;
   case 9:
    $N_0 = ~~$N_0_in;
    $cmp9 = ($N_0 | 0) == 0;
    if ($cmp9) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$len >> 2] = 1;
    $retval_0 = 95632;
    label = 21;
    break;
   case 11:
    $tobool = ($N_0 | 0) < 0;
    $sub17 = -$N_0 | 0;
    $sub17_N_0 = $tobool ? $sub17 : $N_0;
    $result_023 = 14364;
    $N_224 = $sub17_N_0;
    $showzeros_025 = 0;
    $i_026 = 2;
    label = 12;
    break;
   case 12:
    $rem = ($N_224 | 0) % 10;
    $div = ($N_224 | 0) / 10 & -1;
    $tobool22 = ($rem | 0) == 0;
    $tobool24 = $showzeros_025 << 24 >> 24 == 0;
    $or_cond21 = $tobool22 & $tobool24;
    if ($or_cond21) {
      $showzeros_1 = $showzeros_025;
      $result_1 = $result_023;
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $or = $rem | 48;
    $conv26 = $or & 255;
    $incdec_ptr = $result_023 - 1 | 0;
    HEAP8[$incdec_ptr] = $conv26;
    $showzeros_1 = 1;
    $result_1 = $incdec_ptr;
    label = 14;
    break;
   case 14:
    $cmp28 = ($i_026 | 0) == 1;
    if ($cmp28) {
      label = 15;
      break;
    } else {
      $showzeros_2 = $showzeros_1;
      $result_3 = $result_1;
      label = 17;
      break;
    }
   case 15:
    $tobool31 = $showzeros_1 << 24 >> 24 == 0;
    if ($tobool31) {
      $showzeros_2 = 1;
      $result_3 = $result_1;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $incdec_ptr33 = $result_1 - 1 | 0;
    HEAP8[$incdec_ptr33] = 46;
    $showzeros_2 = 1;
    $result_3 = $incdec_ptr33;
    label = 17;
    break;
   case 17:
    $dec = $i_026 - 1 | 0;
    $N_224_off = $N_224 + 9 | 0;
    $0 = $N_224_off >>> 0 > 18;
    $cmp20 = ($dec | 0) > 0;
    $or_cond = $0 | $cmp20;
    if ($or_cond) {
      $result_023 = $result_3;
      $N_224 = $div;
      $showzeros_025 = $showzeros_2;
      $i_026 = $dec;
      label = 12;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    if ($tobool) {
      label = 19;
      break;
    } else {
      $result_4 = $result_3;
      label = 20;
      break;
    }
   case 19:
    $incdec_ptr38 = $result_3 - 1 | 0;
    HEAP8[$incdec_ptr38] = 45;
    $result_4 = $incdec_ptr38;
    label = 20;
    break;
   case 20:
    $sub_ptr_rhs_cast = $result_4;
    $sub_ptr_sub = 14364 - $sub_ptr_rhs_cast | 0;
    HEAP32[$len >> 2] = $sub_ptr_sub;
    $retval_0 = $result_4;
    label = 21;
    break;
   case 21:
    return $retval_0 | 0;
  }
  return 0;
}
function _left_cb($job) {
  $job = $job | 0;
  var $x = 0;
  HEAP8[$job + 536 | 0] = 0;
  $x = $job + 336 | 0;
  HEAPF64[$x >> 3] = 10.0 / +HEAPF64[$job + 352 >> 3] + +HEAPF64[$x >> 3];
  HEAP8[$job + 537 | 0] = 1;
  return 0;
}
function _right_cb($job) {
  $job = $job | 0;
  var $x = 0;
  HEAP8[$job + 536 | 0] = 0;
  $x = $job + 336 | 0;
  HEAPF64[$x >> 3] = +HEAPF64[$x >> 3] - 10.0 / +HEAPF64[$job + 352 >> 3];
  HEAP8[$job + 537 | 0] = 1;
  return 0;
}
function _up_cb($job) {
  $job = $job | 0;
  var $y = 0;
  HEAP8[$job + 536 | 0] = 0;
  $y = $job + 344 | 0;
  HEAPF64[$y >> 3] = +HEAPF64[$y >> 3] - 10.0 / +HEAPF64[$job + 352 >> 3];
  HEAP8[$job + 537 | 0] = 1;
  return 0;
}
function _down_cb($job) {
  $job = $job | 0;
  var $y = 0;
  HEAP8[$job + 536 | 0] = 0;
  $y = $job + 344 | 0;
  HEAPF64[$y >> 3] = 10.0 / +HEAPF64[$job + 352 >> 3] + +HEAPF64[$y >> 3];
  HEAP8[$job + 537 | 0] = 1;
  return 0;
}
function _zoom_in_cb($job) {
  $job = $job | 0;
  var $zoom = 0;
  HEAP8[$job + 536 | 0] = 0;
  $zoom = $job + 352 | 0;
  HEAPF64[$zoom >> 3] = +HEAPF64[$zoom >> 3] * 1.1;
  HEAP8[$job + 537 | 0] = 1;
  return 0;
}
function _zoom_out_cb($job) {
  $job = $job | 0;
  var $zoom = 0;
  HEAP8[$job + 536 | 0] = 0;
  $zoom = $job + 352 | 0;
  HEAPF64[$zoom >> 3] = +HEAPF64[$zoom >> 3] / 1.1;
  HEAP8[$job + 537 | 0] = 1;
  return 0;
}
function _gvevent_button_release($job, $button, $pointer) {
  $job = $job | 0;
  $button = $button | 0;
  $pointer = $pointer | 0;
  var tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pointer;
  $pointer = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pointer >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pointer + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pointer + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pointer + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  HEAP8[$job + 538 | 0] = 0;
  HEAP8[$job + 541 | 0] = 0;
  STACKTOP = __stackBase__;
  return;
}
function _gvferror($stream) {
  $stream = $stream | 0;
  var $gvc = 0, $0 = 0, $write_fn = 0, $1 = 0, $tobool = 0, $output_data = 0, $2 = 0, $tobool1 = 0, $output_file = 0, $3 = 0, $4 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc = $stream;
    $0 = HEAP32[$gvc >> 2] | 0;
    $write_fn = $0 + 116 | 0;
    $1 = HEAP32[$write_fn >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 3:
    $output_data = $stream + 40 | 0;
    $2 = HEAP32[$output_data >> 2] | 0;
    $tobool1 = ($2 | 0) == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 4:
    $output_file = $stream + 36 | 0;
    $3 = HEAP32[$output_file >> 2] | 0;
    $4 = $3;
    $call = _ferror($4 | 0) | 0;
    $retval_0 = $call;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvfwrite($ptr, $size, $nmemb, $stream) {
  $ptr = $ptr | 0;
  $size = $size | 0;
  $nmemb = $nmemb | 0;
  $stream = $stream | 0;
  return _gvwrite($stream, $ptr, $nmemb) | 0;
}
function _gvputs($job, $s) {
  $job = $job | 0;
  $s = $s | 0;
  var $call = 0;
  $call = _strlen($s | 0) | 0;
  return ((_gvwrite($job, $s, $call) | 0) == ($call | 0) ? 1 : -1) | 0;
}
function _gvputc($job, $c) {
  $job = $job | 0;
  $c = $c | 0;
  var $cc = 0, $c_ = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  $cc = __stackBase__ | 0;
  HEAP8[$cc] = $c & 255;
  $c_ = (_gvwrite($job, $cc, 1) | 0) == 1 ? $c : -1;
  STACKTOP = __stackBase__;
  return $c_ | 0;
}
function _gvflush($job) {
  $job = $job | 0;
  var $output_file = 0, $0 = 0, $tobool = 0, $external_context = 0, $1 = 0, $tobool1 = 0, $gvc = 0, $2 = 0, $write_fn = 0, $3 = 0, $tobool3 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $output_file = $job + 36 | 0;
    $0 = HEAP32[$output_file >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $external_context = $job + 144 | 0;
    $1 = HEAP8[$external_context] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 4:
    $gvc = $job | 0;
    $2 = HEAP32[$gvc >> 2] | 0;
    $write_fn = $2 + 116 | 0;
    $3 = HEAP32[$write_fn >> 2] | 0;
    $tobool3 = ($3 | 0) == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 5:
    $call = _fflush($0 | 0) | 0;
    $retval_0 = $call;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvdevice_format($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $format = 0, $1 = 0, $tobool1 = 0, $call = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 76 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $format = $0 + 4 | 0;
    $1 = HEAP32[$format >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    $call = _gvflush($job) | 0;
    return;
  }
}
function _gvdevice_close($job) {
  $job = $job | 0;
  var $output_filename = 0, $0 = 0, $tobool = 0, $output_file = 0, $1 = 0, $2 = 0, $cmp = 0, $external_context = 0, $3 = 0, $tobool2 = 0, $tobool4 = 0, $call = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $output_filename = $job + 32 | 0;
    $0 = HEAP32[$output_filename >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $output_file = $job + 36 | 0;
    $1 = HEAP32[$output_file >> 2] | 0;
    $2 = HEAP32[_stdout >> 2] | 0;
    $cmp = ($1 | 0) == ($2 | 0);
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $external_context = $job + 144 | 0;
    $3 = HEAP8[$external_context] | 0;
    $tobool2 = $3 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $tobool4 = ($1 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call = _fclose($1 | 0) | 0;
    HEAP32[$output_file >> 2] = 0;
    label = 7;
    break;
   case 7:
    HEAP32[$output_filename >> 2] = 0;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _gvprintf($job, $format, varrp) {
  $job = $job | 0;
  $format = $format | 0;
  varrp = varrp | 0;
  var $argp = 0, $arraydecay1 = 0, $arraydecay2 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1040 | 0;
  $argp = __stackBase__ + 1024 | 0;
  $arraydecay1 = $argp;
  HEAP32[$arraydecay1 >> 2] = varrp;
  HEAP32[$arraydecay1 + 4 >> 2] = 0;
  $arraydecay2 = __stackBase__ | 0;
  _gvwrite($job, $arraydecay2, _vsprintf($arraydecay2 | 0, $format | 0, $argp | 0) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _gvprintdouble($job, $num) {
  $job = $job | 0;
  $num = +$num;
  var $len = 0, $call = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  $len = __stackBase__ | 0;
  $call = _gvprintnum($len, $num) | 0;
  _gvwrite($job, $call, HEAP32[$len >> 2] | 0);
  STACKTOP = __stackBase__;
  return;
}
function _gvprintpointf($job, $p) {
  $job = $job | 0;
  $p = $p | 0;
  var $len = 0, $call = 0, $call3 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $len = __stackBase__ | 0;
  $call = _gvprintnum($len, +HEAPF64[$p >> 3]) | 0;
  _gvwrite($job, $call, HEAP32[$len >> 2] | 0);
  _gvwrite($job, 99672, 1);
  $call3 = _gvprintnum($len, +HEAPF64[$p + 8 >> 3]) | 0;
  _gvwrite($job, $call3, HEAP32[$len >> 2] | 0);
  STACKTOP = __stackBase__;
  return;
}
function _gvprintpointflist($job, $p, $n) {
  $job = $job | 0;
  $p = $p | 0;
  $n = $n | 0;
  var $cmp3 = 0, $inc4 = 0, $call = 0, $arrayidx = 0, $inc = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _gvprintpointf($job, $p);
    $cmp3 = ($n | 0) > 1;
    if ($cmp3) {
      $inc4 = 1;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _gvwrite($job, 99672, 1) | 0;
    $arrayidx = $p + ($inc4 << 4) | 0;
    _gvprintpointf($job, $arrayidx);
    $inc = $inc4 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $inc4 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    return;
  }
}
function _gvlayout_select($gvc, $layout) {
  $gvc = $gvc | 0;
  $layout = $layout | 0;
  var $call = 0, $tobool = 0, $typeptr1 = 0, $0 = 0, $type = 0, $1 = 0, $type3 = 0, $engine = 0, $2 = 0, $3 = 0, $engine5 = 0, $id = 0, $4 = 0, $id7 = 0, $features = 0, $5 = 0, $6 = 0, $features9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _gvplugin_load($gvc, 1, $layout) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 999;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $typeptr1 = $call + 16 | 0;
    $0 = HEAP32[$typeptr1 >> 2] | 0;
    $type = $0 + 4 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    $type3 = $gvc + 156 | 0;
    HEAP32[$type3 >> 2] = $1;
    $engine = $0 + 12 | 0;
    $2 = HEAP32[$engine >> 2] | 0;
    $3 = $2;
    $engine5 = $gvc + 144 | 0;
    HEAP32[$engine5 >> 2] = $3;
    $id = $0 | 0;
    $4 = HEAP32[$id >> 2] | 0;
    $id7 = $gvc + 148 | 0;
    HEAP32[$id7 >> 2] = $4;
    $features = $0 + 16 | 0;
    $5 = HEAP32[$features >> 2] | 0;
    $6 = $5;
    $features9 = $gvc + 152 | 0;
    HEAP32[$features9 >> 2] = $6;
    $retval_0 = 300;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvLayoutJobs($gvc, $g) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  var $gvc1 = 0, $root = 0, $0 = 0, $cmp = 0, $gvc4 = 0, $1 = 0, $call = 0, $tobool = 0, $call6 = 0, $cmp7 = 0, $call9 = 0, $call10 = 0, $engine = 0, $2 = 0, $tobool13 = 0, $features = 0, $3 = 0, $flags = 0, $4 = 0, $_tr = 0, $conv = 0, $drawing = 0, $5 = 0, $6 = 0, $drawing20 = 0, $layout22 = 0, $7 = 0, $tobool23 = 0, $cleanup = 0, $8 = 0, $tobool26 = 0, $cleanup30 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $g + 176 | 0;
    HEAP32[$gvc1 >> 2] = $gvc;
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $cmp = ($0 | 0) == ($g | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $gvc4 = $0 + 176 | 0;
    HEAP32[$gvc4 >> 2] = $gvc;
    label = 4;
    break;
   case 4:
    $1 = $g | 0;
    $call = _agget($1, 118216) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call6 = _gvlayout_select($gvc, $call) | 0;
    $cmp7 = ($call6 | 0) == 999;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call9 = _gvplugin_list($gvc, 1, $call) | 0;
    $call10 = _agerr(1, 152056, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $call, HEAP32[tempInt + 8 >> 2] = $call9, tempInt) | 0) | 0;
    $retval_0 = -1;
    label = 12;
    break;
   case 7:
    $engine = $gvc + 144 | 0;
    $2 = HEAP32[$engine >> 2] | 0;
    $tobool13 = ($2 | 0) == 0;
    if ($tobool13) {
      $retval_0 = -1;
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _gv_fixLocale(1);
    $features = $gvc + 152 | 0;
    $3 = HEAP32[$features >> 2] | 0;
    $flags = $3 | 0;
    $4 = HEAP32[$flags >> 2] | 0;
    $_tr = $4 & 255;
    $conv = $_tr & 1;
    _graph_init($g, $conv);
    $drawing = $g + 48 | 0;
    $5 = HEAP32[$drawing >> 2] | 0;
    $6 = HEAP32[$root >> 2] | 0;
    $drawing20 = $6 + 48 | 0;
    HEAP32[$drawing20 >> 2] = $5;
    $layout22 = $2 | 0;
    $7 = HEAP32[$layout22 >> 2] | 0;
    $tobool23 = ($7 | 0) == 0;
    if ($tobool23) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    FUNCTION_TABLE_vi[$7 & 1023]($g);
    $cleanup = $2 + 4 | 0;
    $8 = HEAP32[$cleanup >> 2] | 0;
    $tobool26 = ($8 | 0) == 0;
    if ($tobool26) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $cleanup30 = $g + 180 | 0;
    HEAP32[$cleanup30 >> 2] = $8;
    label = 11;
    break;
   case 11:
    _gv_fixLocale(0);
    $retval_0 = 0;
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gvFreeLayout($gvc, $g) {
  $gvc = $gvc | 0;
  $g = $g | 0;
  var $cleanup = 0, $0 = 0, $tobool = 0, $drawing = 0, $1 = 0, $tobool6 = 0, $root = 0, $2 = 0, $drawing11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cleanup = $g + 180 | 0;
    $0 = HEAP32[$cleanup >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    FUNCTION_TABLE_vi[$0 & 1023]($g);
    HEAP32[$cleanup >> 2] = 0;
    label = 4;
    break;
   case 4:
    $drawing = $g + 48 | 0;
    $1 = HEAP32[$drawing >> 2] | 0;
    $tobool6 = ($1 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _graph_cleanup($g);
    HEAP32[$drawing >> 2] = 0;
    $root = $g + 32 | 0;
    $2 = HEAP32[$root >> 2] | 0;
    $drawing11 = $2 + 48 | 0;
    HEAP32[$drawing11 >> 2] = 0;
    label = 6;
    break;
   case 6:
    return 0;
  }
  return 0;
}
function _toggle_fit_cb($job) {
  $job = $job | 0;
  var $fit_mode = 0, $0 = 0, $lnot = 0, $conv = 0, $width = 0, $1 = 0, $height = 0, $2 = 0, $conv5 = 0.0, $conv6 = 0.0, $div = 0.0, $conv8 = 0.0, $conv9 = 0.0, $div10 = 0.0, $cmp = 0, $div_div10 = 0.0, $zoom = 0, $x = 0, $needs_refresh = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fit_mode = $job + 536 | 0;
    $0 = HEAP8[$fit_mode] | 0;
    $lnot = $0 << 24 >> 24 == 0;
    $conv = $lnot & 1;
    HEAP8[$fit_mode] = $conv;
    if ($lnot) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $width = $job + 448 | 0;
    $1 = HEAP32[$width >> 2] | 0;
    $height = $job + 452 | 0;
    $2 = HEAP32[$height >> 2] | 0;
    $conv5 = +($1 >>> 0 >>> 0);
    $conv6 = +($1 | 0);
    $div = $conv5 / $conv6;
    $conv8 = +($2 >>> 0 >>> 0);
    $conv9 = +($2 | 0);
    $div10 = $conv8 / $conv9;
    $cmp = $div < $div10;
    $div_div10 = $cmp ? $div : $div10;
    $zoom = $job + 352 | 0;
    HEAPF64[$zoom >> 3] = $div_div10;
    $x = $job + 336 | 0;
    $needs_refresh = $job + 537 | 0;
    $3 = $x;
    _memset($3 | 0, 0, 16);
    HEAP8[$needs_refresh] = 1;
    label = 4;
    break;
   case 4:
    return 0;
  }
  return 0;
}
function _gvevent_refresh($job) {
  $job = $job | 0;
  var $gvc = 0, $0 = 0, $g1 = 0, $1 = 0, $selected_obj = 0, $2 = 0, $tobool = 0, $3 = 0, $gui_state = 0, $4 = 0, $or = 0, $has_been_rendered = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc = $job | 0;
    $0 = HEAP32[$gvc >> 2] | 0;
    $g1 = $0 + 128 | 0;
    $1 = HEAP32[$g1 >> 2] | 0;
    $selected_obj = $job + 580 | 0;
    $2 = HEAP32[$selected_obj >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $3 = $1 | 0;
    HEAP32[$selected_obj >> 2] = $3;
    $gui_state = $1 + 152 | 0;
    $4 = HEAP8[$gui_state] | 0;
    $or = $4 | 2;
    HEAP8[$gui_state] = $or;
    _gv_graph_state($job, $1);
    label = 4;
    break;
   case 4:
    _emit_graph($job, $1);
    $has_been_rendered = $job + 540 | 0;
    HEAP8[$has_been_rendered] = 1;
    return;
  }
}
function _gvevent_button_press($job, $button, $pointer) {
  $job = $job | 0;
  $button = $button | 0;
  $pointer = $pointer | 0;
  var $click = 0, $conv = 0, $button1 = 0, $needs_refresh = 0, $click3 = 0, $conv4 = 0, $button5 = 0, $needs_refresh6 = 0, $click8 = 0, $conv9 = 0, $button10 = 0, $needs_refresh11 = 0, $fit_mode = 0, $rotation = 0, $0 = 0, $tobool = 0, $y = 0, $1 = 0.0, $height = 0, $2 = 0, $conv13 = 0.0, $div = 0.0, $sub = 0.0, $mul = 0.0, $zoom = 0, $3 = 0.0, $y14 = 0, $4 = 0.0, $mul15 = 0.0, $div16 = 0.0, $x = 0, $5 = 0.0, $sub17 = 0.0, $x18 = 0, $6 = 0.0, $width = 0, $7 = 0, $conv19 = 0.0, $div20 = 0.0, $sub21 = 0.0, $mul22 = 0.0, $8 = 0.0, $x25 = 0, $9 = 0.0, $mul26 = 0.0, $div27 = 0.0, $y29 = 0, $10 = 0.0, $add = 0.0, $x30 = 0, $11 = 0.0, $width31 = 0, $12 = 0, $conv32 = 0.0, $div33 = 0.0, $sub34 = 0.0, $mul35 = 0.0, $zoom36 = 0, $13 = 0.0, $x38 = 0, $14 = 0.0, $mul39 = 0.0, $div40 = 0.0, $x42 = 0, $15 = 0.0, $add43 = 0.0, $y44 = 0, $16 = 0.0, $height45 = 0, $17 = 0, $conv46 = 0.0, $div47 = 0.0, $sub48 = 0.0, $mul49 = 0.0, $18 = 0.0, $y52 = 0, $19 = 0.0, $mul53 = 0.0, $div54 = 0.0, $y56 = 0, $20 = 0.0, $add57 = 0.0, $zoom58 = 0, $21 = 0.0, $mul59 = 0.0, $needs_refresh60 = 0, $fit_mode62 = 0, $zoom63 = 0, $22 = 0.0, $div64 = 0.0, $rotation65 = 0, $23 = 0, $tobool66 = 0, $y68 = 0, $24 = 0.0, $height69 = 0, $25 = 0, $conv70 = 0.0, $div71 = 0.0, $sub72 = 0.0, $mul73 = 0.0, $y76 = 0, $26 = 0.0, $mul77 = 0.0, $div78 = 0.0, $x80 = 0, $27 = 0.0, $add81 = 0.0, $x82 = 0, $28 = 0.0, $width83 = 0, $29 = 0, $conv84 = 0.0, $div85 = 0.0, $sub86 = 0.0, $mul87 = 0.0, $30 = 0.0, $x90 = 0, $31 = 0.0, $mul91 = 0.0, $div92 = 0.0, $y94 = 0, $32 = 0.0, $sub95 = 0.0, $x97 = 0, $33 = 0.0, $width98 = 0, $34 = 0, $conv99 = 0.0, $div100 = 0.0, $sub101 = 0.0, $mul102 = 0.0, $x105 = 0, $35 = 0.0, $mul106 = 0.0, $div107 = 0.0, $x109 = 0, $36 = 0.0, $sub110 = 0.0, $y111 = 0, $37 = 0.0, $height112 = 0, $38 = 0, $conv113 = 0.0, $div114 = 0.0, $sub115 = 0.0, $mul116 = 0.0, $39 = 0.0, $y119 = 0, $40 = 0.0, $mul120 = 0.0, $div121 = 0.0, $y123 = 0, $41 = 0.0, $sub124 = 0.0, $needs_refresh126 = 0, $oldpointer = 0, $42 = 0, $43 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pointer;
  $pointer = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pointer >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pointer + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pointer + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pointer + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($button | 0) == 1) {
      label = 3;
      break;
    } else if (($button | 0) == 2) {
      label = 4;
      break;
    } else if (($button | 0) == 3) {
      label = 5;
      break;
    } else if (($button | 0) == 4) {
      label = 6;
      break;
    } else if (($button | 0) == 5) {
      label = 10;
      break;
    } else {
      label = 14;
      break;
    }
   case 3:
    _gvevent_find_current_obj($job, $pointer);
    _gvevent_select_current_obj($job);
    $click = $job + 538 | 0;
    HEAP8[$click] = 1;
    $conv = $button & 255;
    $button1 = $job + 541 | 0;
    HEAP8[$button1] = $conv;
    $needs_refresh = $job + 537 | 0;
    HEAP8[$needs_refresh] = 1;
    label = 14;
    break;
   case 4:
    $click3 = $job + 538 | 0;
    HEAP8[$click3] = 1;
    $conv4 = $button & 255;
    $button5 = $job + 541 | 0;
    HEAP8[$button5] = $conv4;
    $needs_refresh6 = $job + 537 | 0;
    HEAP8[$needs_refresh6] = 1;
    label = 14;
    break;
   case 5:
    _gvevent_find_current_obj($job, $pointer);
    $click8 = $job + 538 | 0;
    HEAP8[$click8] = 1;
    $conv9 = $button & 255;
    $button10 = $job + 541 | 0;
    HEAP8[$button10] = $conv9;
    $needs_refresh11 = $job + 537 | 0;
    HEAP8[$needs_refresh11] = 1;
    label = 14;
    break;
   case 6:
    $fit_mode = $job + 536 | 0;
    HEAP8[$fit_mode] = 0;
    $rotation = $job + 360 | 0;
    $0 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $y = $pointer + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $height = $job + 452 | 0;
    $2 = HEAP32[$height >> 2] | 0;
    $conv13 = +($2 >>> 0 >>> 0);
    $div = $conv13 * .5;
    $sub = $1 - $div;
    $mul = $sub * .10000000000000009;
    $zoom = $job + 352 | 0;
    $3 = +HEAPF64[$zoom >> 3];
    $y14 = $job + 528 | 0;
    $4 = +HEAPF64[$y14 >> 3];
    $mul15 = $3 * $4;
    $div16 = $mul / $mul15;
    $x = $job + 336 | 0;
    $5 = +HEAPF64[$x >> 3];
    $sub17 = $5 - $div16;
    HEAPF64[$x >> 3] = $sub17;
    $x18 = $pointer | 0;
    $6 = +HEAPF64[$x18 >> 3];
    $width = $job + 448 | 0;
    $7 = HEAP32[$width >> 2] | 0;
    $conv19 = +($7 >>> 0 >>> 0);
    $div20 = $conv19 * .5;
    $sub21 = $6 - $div20;
    $mul22 = $sub21 * .10000000000000009;
    $8 = +HEAPF64[$zoom >> 3];
    $x25 = $job + 520 | 0;
    $9 = +HEAPF64[$x25 >> 3];
    $mul26 = $8 * $9;
    $div27 = $mul22 / $mul26;
    $y29 = $job + 344 | 0;
    $10 = +HEAPF64[$y29 >> 3];
    $add = $div27 + $10;
    HEAPF64[$y29 >> 3] = $add;
    label = 9;
    break;
   case 8:
    $x30 = $pointer | 0;
    $11 = +HEAPF64[$x30 >> 3];
    $width31 = $job + 448 | 0;
    $12 = HEAP32[$width31 >> 2] | 0;
    $conv32 = +($12 >>> 0 >>> 0);
    $div33 = $conv32 * .5;
    $sub34 = $11 - $div33;
    $mul35 = $sub34 * .10000000000000009;
    $zoom36 = $job + 352 | 0;
    $13 = +HEAPF64[$zoom36 >> 3];
    $x38 = $job + 520 | 0;
    $14 = +HEAPF64[$x38 >> 3];
    $mul39 = $13 * $14;
    $div40 = $mul35 / $mul39;
    $x42 = $job + 336 | 0;
    $15 = +HEAPF64[$x42 >> 3];
    $add43 = $div40 + $15;
    HEAPF64[$x42 >> 3] = $add43;
    $y44 = $pointer + 8 | 0;
    $16 = +HEAPF64[$y44 >> 3];
    $height45 = $job + 452 | 0;
    $17 = HEAP32[$height45 >> 2] | 0;
    $conv46 = +($17 >>> 0 >>> 0);
    $div47 = $conv46 * .5;
    $sub48 = $16 - $div47;
    $mul49 = $sub48 * .10000000000000009;
    $18 = +HEAPF64[$zoom36 >> 3];
    $y52 = $job + 528 | 0;
    $19 = +HEAPF64[$y52 >> 3];
    $mul53 = $18 * $19;
    $div54 = $mul49 / $mul53;
    $y56 = $job + 344 | 0;
    $20 = +HEAPF64[$y56 >> 3];
    $add57 = $div54 + $20;
    HEAPF64[$y56 >> 3] = $add57;
    label = 9;
    break;
   case 9:
    $zoom58 = $job + 352 | 0;
    $21 = +HEAPF64[$zoom58 >> 3];
    $mul59 = $21 * 1.1;
    HEAPF64[$zoom58 >> 3] = $mul59;
    $needs_refresh60 = $job + 537 | 0;
    HEAP8[$needs_refresh60] = 1;
    label = 14;
    break;
   case 10:
    $fit_mode62 = $job + 536 | 0;
    HEAP8[$fit_mode62] = 0;
    $zoom63 = $job + 352 | 0;
    $22 = +HEAPF64[$zoom63 >> 3];
    $div64 = $22 / 1.1;
    HEAPF64[$zoom63 >> 3] = $div64;
    $rotation65 = $job + 360 | 0;
    $23 = HEAP32[$rotation65 >> 2] | 0;
    $tobool66 = ($23 | 0) == 0;
    if ($tobool66) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $y68 = $pointer + 8 | 0;
    $24 = +HEAPF64[$y68 >> 3];
    $height69 = $job + 452 | 0;
    $25 = HEAP32[$height69 >> 2] | 0;
    $conv70 = +($25 >>> 0 >>> 0);
    $div71 = $conv70 * .5;
    $sub72 = $24 - $div71;
    $mul73 = $sub72 * .10000000000000009;
    $y76 = $job + 528 | 0;
    $26 = +HEAPF64[$y76 >> 3];
    $mul77 = $div64 * $26;
    $div78 = $mul73 / $mul77;
    $x80 = $job + 336 | 0;
    $27 = +HEAPF64[$x80 >> 3];
    $add81 = $div78 + $27;
    HEAPF64[$x80 >> 3] = $add81;
    $x82 = $pointer | 0;
    $28 = +HEAPF64[$x82 >> 3];
    $width83 = $job + 448 | 0;
    $29 = HEAP32[$width83 >> 2] | 0;
    $conv84 = +($29 >>> 0 >>> 0);
    $div85 = $conv84 * .5;
    $sub86 = $28 - $div85;
    $mul87 = $sub86 * .10000000000000009;
    $30 = +HEAPF64[$zoom63 >> 3];
    $x90 = $job + 520 | 0;
    $31 = +HEAPF64[$x90 >> 3];
    $mul91 = $30 * $31;
    $div92 = $mul87 / $mul91;
    $y94 = $job + 344 | 0;
    $32 = +HEAPF64[$y94 >> 3];
    $sub95 = $32 - $div92;
    HEAPF64[$y94 >> 3] = $sub95;
    label = 13;
    break;
   case 12:
    $x97 = $pointer | 0;
    $33 = +HEAPF64[$x97 >> 3];
    $width98 = $job + 448 | 0;
    $34 = HEAP32[$width98 >> 2] | 0;
    $conv99 = +($34 >>> 0 >>> 0);
    $div100 = $conv99 * .5;
    $sub101 = $33 - $div100;
    $mul102 = $sub101 * .10000000000000009;
    $x105 = $job + 520 | 0;
    $35 = +HEAPF64[$x105 >> 3];
    $mul106 = $div64 * $35;
    $div107 = $mul102 / $mul106;
    $x109 = $job + 336 | 0;
    $36 = +HEAPF64[$x109 >> 3];
    $sub110 = $36 - $div107;
    HEAPF64[$x109 >> 3] = $sub110;
    $y111 = $pointer + 8 | 0;
    $37 = +HEAPF64[$y111 >> 3];
    $height112 = $job + 452 | 0;
    $38 = HEAP32[$height112 >> 2] | 0;
    $conv113 = +($38 >>> 0 >>> 0);
    $div114 = $conv113 * .5;
    $sub115 = $37 - $div114;
    $mul116 = $sub115 * .10000000000000009;
    $39 = +HEAPF64[$zoom63 >> 3];
    $y119 = $job + 528 | 0;
    $40 = +HEAPF64[$y119 >> 3];
    $mul120 = $39 * $40;
    $div121 = $mul116 / $mul120;
    $y123 = $job + 344 | 0;
    $41 = +HEAPF64[$y123 >> 3];
    $sub124 = $41 - $div121;
    HEAPF64[$y123 >> 3] = $sub124;
    label = 13;
    break;
   case 13:
    $needs_refresh126 = $job + 537 | 0;
    HEAP8[$needs_refresh126] = 1;
    label = 14;
    break;
   case 14:
    $oldpointer = $job + 560 | 0;
    $42 = $oldpointer;
    $43 = $pointer;
    HEAP32[$42 >> 2] = HEAP32[$43 >> 2] | 0;
    HEAP32[$42 + 4 >> 2] = HEAP32[$43 + 4 >> 2] | 0;
    HEAP32[$42 + 8 >> 2] = HEAP32[$43 + 8 >> 2] | 0;
    HEAP32[$42 + 12 >> 2] = HEAP32[$43 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvevent_motion($job, $pointer) {
  $job = $job | 0;
  $pointer = $pointer | 0;
  var $x = 0, $0 = 0.0, $oldpointer = 0, $x1 = 0, $1 = 0.0, $sub = 0.0, $x2 = 0, $2 = 0.0, $div = 0.0, $y = 0, $3 = 0.0, $y4 = 0, $4 = 0.0, $sub5 = 0.0, $y7 = 0, $5 = 0.0, $div8 = 0.0, $conv = 0, $ispos = 0, $neg = 0, $call = 0, $cmp = 0, $conv11 = 0, $ispos21 = 0, $neg22 = 0, $call12 = 0, $cmp14 = 0, $button = 0, $6 = 0, $conv16 = 0, $rotation = 0, $7 = 0, $tobool = 0, $zoom27 = 0, $8 = 0.0, $div20 = 0.0, $x21 = 0, $9 = 0.0, $sub22 = 0.0, $10 = 0.0, $div24 = 0.0, $y26 = 0, $11 = 0.0, $add = 0.0, $div28 = 0.0, $x30 = 0, $12 = 0.0, $sub31 = 0.0, $13 = 0.0, $div33 = 0.0, $y35 = 0, $14 = 0.0, $sub36 = 0.0, $needs_refresh = 0, $15 = 0, $16 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pointer;
  $pointer = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pointer >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pointer + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pointer + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pointer + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $pointer | 0;
    $0 = +HEAPF64[$x >> 3];
    $oldpointer = $job + 560 | 0;
    $x1 = $oldpointer | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $sub = $0 - $1;
    $x2 = $job + 520 | 0;
    $2 = +HEAPF64[$x2 >> 3];
    $div = $sub / $2;
    $y = $pointer + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $y4 = $job + 568 | 0;
    $4 = +HEAPF64[$y4 >> 3];
    $sub5 = $3 - $4;
    $y7 = $job + 528 | 0;
    $5 = +HEAPF64[$y7 >> 3];
    $div8 = $sub5 / $5;
    $conv = ~~$div;
    $ispos = ($conv | 0) > -1;
    $neg = -$conv | 0;
    $call = $ispos ? $conv : $neg;
    $cmp = ($call | 0) < 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $conv11 = ~~$div8;
    $ispos21 = ($conv11 | 0) > -1;
    $neg22 = -$conv11 | 0;
    $call12 = $ispos21 ? $conv11 : $neg22;
    $cmp14 = ($call12 | 0) < 1;
    if ($cmp14) {
      label = 11;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $button = $job + 541 | 0;
    $6 = HEAP8[$button] | 0;
    $conv16 = $6 & 255;
    if (($conv16 | 0) == 0) {
      label = 5;
      break;
    } else if (($conv16 | 0) == 2) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    _gvevent_find_current_obj($job, $pointer);
    label = 10;
    break;
   case 6:
    $rotation = $job + 360 | 0;
    $7 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    $zoom27 = $job + 352 | 0;
    $8 = +HEAPF64[$zoom27 >> 3];
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $div20 = $div8 / $8;
    $x21 = $job + 336 | 0;
    $9 = +HEAPF64[$x21 >> 3];
    $sub22 = $9 - $div20;
    HEAPF64[$x21 >> 3] = $sub22;
    $10 = +HEAPF64[$zoom27 >> 3];
    $div24 = $div / $10;
    $y26 = $job + 344 | 0;
    $11 = +HEAPF64[$y26 >> 3];
    $add = $div24 + $11;
    HEAPF64[$y26 >> 3] = $add;
    label = 9;
    break;
   case 8:
    $div28 = $div / $8;
    $x30 = $job + 336 | 0;
    $12 = +HEAPF64[$x30 >> 3];
    $sub31 = $12 - $div28;
    HEAPF64[$x30 >> 3] = $sub31;
    $13 = +HEAPF64[$zoom27 >> 3];
    $div33 = $div8 / $13;
    $y35 = $job + 344 | 0;
    $14 = +HEAPF64[$y35 >> 3];
    $sub36 = $14 - $div33;
    HEAPF64[$y35 >> 3] = $sub36;
    label = 9;
    break;
   case 9:
    $needs_refresh = $job + 537 | 0;
    HEAP8[$needs_refresh] = 1;
    label = 10;
    break;
   case 10:
    $15 = $oldpointer;
    $16 = $pointer;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvdevice_finalize($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $flags = 0, $1 = 0, $and = 0, $tobool = 0, $common = 0, $2 = 0, $errorfn = 0, $3 = 0, $tobool1 = 0, $finalize = 0, $4 = 0, $tobool3 = 0, $call = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 76 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $flags = $job + 152 | 0;
    $1 = HEAP32[$flags >> 2] | 0;
    $and = $1 & 1024;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $common = $job + 12 | 0;
    $2 = HEAP32[$common >> 2] | 0;
    $errorfn = $2 + 16 | 0;
    $3 = HEAP32[$errorfn >> 2] | 0;
    FUNCTION_TABLE_vii[$3 & 1023](103960, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _exit(1);
   case 4:
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $finalize = $0 + 8 | 0;
    $4 = HEAP32[$finalize >> 2] | 0;
    $tobool3 = ($4 | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    FUNCTION_TABLE_vi[$4 & 1023]($job);
    label = 8;
    break;
   case 7:
    $call = _gvflush($job) | 0;
    _gvdevice_close($job);
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pointer2graph($agg_result, $job, $pointer) {
  $agg_result = $agg_result | 0;
  $job = $job | 0;
  $pointer = $pointer | 0;
  var $rotation = 0, $0 = 0, $tobool = 0, $y = 0, $1 = 0.0, $zoom = 0, $2 = 0.0, $y1 = 0, $3 = 0.0, $mul = 0.0, $div = 0.0, $x = 0, $4 = 0.0, $sub = 0.0, $x3 = 0, $5 = 0.0, $sub4 = 0.0, $x7 = 0, $6 = 0.0, $mul8 = 0.0, $div9 = 0.0, $y11 = 0, $7 = 0.0, $sub12 = 0.0, $x14 = 0, $8 = 0.0, $zoom15 = 0, $9 = 0.0, $x17 = 0, $10 = 0.0, $mul18 = 0.0, $div19 = 0.0, $x21 = 0, $11 = 0.0, $sub22 = 0.0, $y24 = 0, $12 = 0.0, $y27 = 0, $13 = 0.0, $mul28 = 0.0, $div29 = 0.0, $y31 = 0, $14 = 0.0, $sub32 = 0.0, $p_sroa_1_0 = 0.0, $p_sroa_0_0 = 0.0, $p_sroa_0_0__idx = 0, $p_sroa_1_8__idx1 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $pointer;
  $pointer = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pointer >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pointer + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pointer + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pointer + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rotation = $job + 360 | 0;
    $0 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $y = $pointer + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $zoom = $job + 352 | 0;
    $2 = +HEAPF64[$zoom >> 3];
    $y1 = $job + 528 | 0;
    $3 = +HEAPF64[$y1 >> 3];
    $mul = $2 * $3;
    $div = $1 / $mul;
    $x = $job + 504 | 0;
    $4 = +HEAPF64[$x >> 3];
    $sub = $div - $4;
    $x3 = $pointer | 0;
    $5 = +HEAPF64[$x3 >> 3];
    $sub4 = -0.0 - $5;
    $x7 = $job + 520 | 0;
    $6 = +HEAPF64[$x7 >> 3];
    $mul8 = $2 * $6;
    $div9 = $sub4 / $mul8;
    $y11 = $job + 512 | 0;
    $7 = +HEAPF64[$y11 >> 3];
    $sub12 = $div9 - $7;
    $p_sroa_0_0 = $sub;
    $p_sroa_1_0 = $sub12;
    label = 5;
    break;
   case 4:
    $x14 = $pointer | 0;
    $8 = +HEAPF64[$x14 >> 3];
    $zoom15 = $job + 352 | 0;
    $9 = +HEAPF64[$zoom15 >> 3];
    $x17 = $job + 520 | 0;
    $10 = +HEAPF64[$x17 >> 3];
    $mul18 = $9 * $10;
    $div19 = $8 / $mul18;
    $x21 = $job + 504 | 0;
    $11 = +HEAPF64[$x21 >> 3];
    $sub22 = $div19 - $11;
    $y24 = $pointer + 8 | 0;
    $12 = +HEAPF64[$y24 >> 3];
    $y27 = $job + 528 | 0;
    $13 = +HEAPF64[$y27 >> 3];
    $mul28 = $9 * $13;
    $div29 = $12 / $mul28;
    $y31 = $job + 512 | 0;
    $14 = +HEAPF64[$y31 >> 3];
    $sub32 = $div29 - $14;
    $p_sroa_0_0 = $sub22;
    $p_sroa_1_0 = $sub32;
    label = 5;
    break;
   case 5:
    $p_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$p_sroa_0_0__idx >> 3] = $p_sroa_0_0;
    $p_sroa_1_8__idx1 = $agg_result + 8 | 0;
    HEAPF64[$p_sroa_1_8__idx1 >> 3] = $p_sroa_1_0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvevent_leave_obj($job) {
  $job = $job | 0;
  var $current_obj = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $3 = 0, $bf_val_sext = 0, $4 = 0, $5 = 0, $and = 0, $6 = 0, $7 = 0, $and6 = 0, $8 = 0, $9 = 0, $and12 = 0, $active_tooltip = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $current_obj = $job + 576 | 0;
    $0 = HEAP32[$current_obj >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $0;
    $2 = HEAP32[$1 >> 2] | 0;
    $3 = $2 << 28;
    $bf_val_sext = $3 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 5;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $4 = $0 + 152 | 0;
    $5 = HEAP8[$4] | 0;
    $and = $5 & -2;
    HEAP8[$4] = $and;
    label = 7;
    break;
   case 5:
    $6 = $0 + 133 | 0;
    $7 = HEAP8[$6] | 0;
    $and6 = $7 & -2;
    HEAP8[$6] = $and6;
    label = 7;
    break;
   case 6:
    $8 = $0 + 131 | 0;
    $9 = HEAP8[$8] | 0;
    $and12 = $9 & -2;
    HEAP8[$8] = $and12;
    label = 7;
    break;
   case 7:
    $active_tooltip = $job + 584 | 0;
    HEAP32[$active_tooltip >> 2] = 0;
    return;
  }
}
function _gvevent_read($job, $filename, $layout) {
  $job = $job | 0;
  $filename = $filename | 0;
  $layout = $layout | 0;
  var $gvc1 = 0, $0 = 0, $tobool = 0, $call = 0, $1 = 0, $output_filename = 0, $call2 = 0, $tobool3 = 0, $call5 = 0, $2 = 0, $call6 = 0, $g_0 = 0, $tobool8 = 0, $g11 = 0, $3 = 0, $tobool12 = 0, $engine = 0, $4 = 0, $tobool15 = 0, $cleanup = 0, $5 = 0, $tobool16 = 0, $6 = 0, $7 = 0, $8 = 0, $gvc25 = 0, $call26 = 0, $selected_obj = 0, $current_obj = 0, $needs_refresh = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $tobool = ($filename | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agopen(147864, 1) | 0;
    $1 = $call;
    $output_filename = $job + 32 | 0;
    HEAP32[$output_filename >> 2] = 145832;
    $g_0 = $1;
    label = 6;
    break;
   case 4:
    $call2 = _fopen($filename | 0, 142784) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      label = 13;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call5 = _agread($call2) | 0;
    $2 = $call5;
    $call6 = _fclose($call2 | 0) | 0;
    $g_0 = $2;
    label = 6;
    break;
   case 6:
    $tobool8 = ($g_0 | 0) == 0;
    if ($tobool8) {
      label = 13;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $g11 = $0 + 128 | 0;
    $3 = HEAP32[$g11 >> 2] | 0;
    $tobool12 = ($3 | 0) == 0;
    if ($tobool12) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $engine = $0 + 144 | 0;
    $4 = HEAP32[$engine >> 2] | 0;
    $tobool15 = ($4 | 0) == 0;
    if ($tobool15) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cleanup = $4 + 4 | 0;
    $5 = HEAP32[$cleanup >> 2] | 0;
    $tobool16 = ($5 | 0) == 0;
    if ($tobool16) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    FUNCTION_TABLE_vi[$5 & 1023]($3);
    label = 11;
    break;
   case 11:
    $6 = HEAP32[$g11 >> 2] | 0;
    _graph_cleanup($6);
    $7 = HEAP32[$g11 >> 2] | 0;
    $8 = $7;
    _agclose($8);
    label = 12;
    break;
   case 12:
    HEAP32[$g11 >> 2] = $g_0;
    $gvc25 = $g_0 + 176 | 0;
    HEAP32[$gvc25 >> 2] = $0;
    $call26 = _gvLayout($0, $g_0, $layout) | 0;
    $selected_obj = $job + 580 | 0;
    HEAP32[$selected_obj >> 2] = 0;
    $current_obj = $job + 576 | 0;
    HEAP32[$current_obj >> 2] = 0;
    $needs_refresh = $job + 537 | 0;
    HEAP8[$needs_refresh] = 1;
    label = 13;
    break;
   case 13:
    return;
  }
}
function _gvevent_layout($job, $layout) {
  $job = $job | 0;
  $layout = $layout | 0;
  var $0 = 0;
  $0 = HEAP32[$job >> 2] | 0;
  _gvLayout($0, HEAP32[$0 + 128 >> 2] | 0, $layout);
  return;
}
function _gvevent_render($job, $format, $filename) {
  $job = $job | 0;
  $format = $format | 0;
  $filename = $filename | 0;
  var $0 = 0;
  $0 = HEAP32[$job >> 2] | 0;
  _gvRenderFilename($0, HEAP32[$0 + 128 >> 2] | 0, $format, $filename);
  return;
}
function _gvevent_find_current_obj($job, $pointer) {
  $job = $job | 0;
  $pointer = $pointer | 0;
  var $b = 0, $tmp = 0, $p_sroa_0_0__idx = 0, $p_sroa_0_0_copyload = 0.0, $p_sroa_1_8__idx3 = 0, $p_sroa_1_8_copyload = 0.0, $zoom = 0, $0 = 0.0, $div = 0.0, $add = 0.0, $x1 = 0, $add2 = 0.0, $y4 = 0, $sub = 0.0, $x6 = 0, $sub8 = 0.0, $y10 = 0, $gvc = 0, $1 = 0, $g = 0, $2 = 0, $call = 0, $current_obj = 0, $3 = 0, $cmp = 0, $needs_refresh = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 48 | 0;
  tempParam = $pointer;
  $pointer = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pointer >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pointer + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pointer + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pointer + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $b = __stackBase__ | 0;
    $tmp = __stackBase__ + 32 | 0;
    _pointer2graph($tmp, $job, $pointer);
    $p_sroa_0_0__idx = $tmp | 0;
    $p_sroa_0_0_copyload = +HEAPF64[$p_sroa_0_0__idx >> 3];
    $p_sroa_1_8__idx3 = $tmp + 8 | 0;
    $p_sroa_1_8_copyload = +HEAPF64[$p_sroa_1_8__idx3 >> 3];
    $zoom = $job + 352 | 0;
    $0 = +HEAPF64[$zoom >> 3];
    $div = 1.0 / $0;
    $add = $p_sroa_0_0_copyload + $div;
    $x1 = $b + 16 | 0;
    HEAPF64[$x1 >> 3] = $add;
    $add2 = $p_sroa_1_8_copyload + $div;
    $y4 = $b + 24 | 0;
    HEAPF64[$y4 >> 3] = $add2;
    $sub = $p_sroa_0_0_copyload - $div;
    $x6 = $b | 0;
    HEAPF64[$x6 >> 3] = $sub;
    $sub8 = $p_sroa_1_8_copyload - $div;
    $y10 = $b + 8 | 0;
    HEAPF64[$y10 >> 3] = $sub8;
    $gvc = $job | 0;
    $1 = HEAP32[$gvc >> 2] | 0;
    $g = $1 + 128 | 0;
    $2 = HEAP32[$g >> 2] | 0;
    $call = _gvevent_find_obj($2, $b) | 0;
    $current_obj = $job + 576 | 0;
    $3 = HEAP32[$current_obj >> 2] | 0;
    $cmp = ($call | 0) == ($3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _gvevent_leave_obj($job);
    HEAP32[$current_obj >> 2] = $call;
    _gvevent_enter_obj($job);
    $needs_refresh = $job + 537 | 0;
    HEAP8[$needs_refresh] = 1;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvevent_find_obj($g, $b) {
  $g = $g | 0;
  $b = $b | 0;
  var $0 = 0, $call = 0, $tobool24 = 0, $n_0_in25 = 0, $call1 = 0, $tobool321 = 0, $e_0_in22 = 0, $e_0 = 0, $call5 = 0, $tobool6 = 0, $1 = 0, $call7 = 0, $tobool3 = 0, $call9 = 0, $tobool = 0, $call11 = 0, $tobool1318 = 0, $n_1_in19 = 0, $n_1 = 0, $call15 = 0, $tobool16 = 0, $2 = 0, $call20 = 0, $tobool13 = 0, $call22 = 0, $tobool23 = 0, $3 = 0, $4 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool24 = ($call | 0) == 0;
    if ($tobool24) {
      label = 8;
      break;
    } else {
      $n_0_in25 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agfstout($0, $n_0_in25) | 0;
    $tobool321 = ($call1 | 0) == 0;
    if ($tobool321) {
      label = 7;
      break;
    } else {
      $e_0_in22 = $call1;
      label = 4;
      break;
    }
   case 4:
    $e_0 = $e_0_in22;
    $call5 = _overlap_edge($e_0, $b) | 0;
    $tobool6 = $call5 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $1 = $e_0_in22 | 0;
    $retval_0 = $1;
    label = 15;
    break;
   case 6:
    $call7 = _agnxtout($0, $e_0_in22) | 0;
    $tobool3 = ($call7 | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      $e_0_in22 = $call7;
      label = 4;
      break;
    }
   case 7:
    $call9 = _agnxtnode($0, $n_0_in25) | 0;
    $tobool = ($call9 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $n_0_in25 = $call9;
      label = 3;
      break;
    }
   case 8:
    $call11 = _aglstnode($0) | 0;
    $tobool1318 = ($call11 | 0) == 0;
    if ($tobool1318) {
      label = 12;
      break;
    } else {
      $n_1_in19 = $call11;
      label = 9;
      break;
    }
   case 9:
    $n_1 = $n_1_in19;
    $call15 = _overlap_node($n_1, $b) | 0;
    $tobool16 = $call15 << 24 >> 24 == 0;
    if ($tobool16) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $2 = $n_1_in19 | 0;
    $retval_0 = $2;
    label = 15;
    break;
   case 11:
    $call20 = _agprvnode($0, $n_1_in19) | 0;
    $tobool13 = ($call20 | 0) == 0;
    if ($tobool13) {
      label = 12;
      break;
    } else {
      $n_1_in19 = $call20;
      label = 9;
      break;
    }
   case 12:
    $call22 = _gvevent_find_cluster($g, $b) | 0;
    $tobool23 = ($call22 | 0) == 0;
    if ($tobool23) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $3 = $call22 | 0;
    $retval_0 = $3;
    label = 15;
    break;
   case 14:
    $4 = $g | 0;
    $retval_0 = $4;
    label = 15;
    break;
   case 15:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gvevent_enter_obj($job) {
  $job = $job | 0;
  var $active_tooltip = 0, $0 = 0, $tobool = 0, $current_obj = 0, $1 = 0, $tobool3 = 0, $2 = 0, $3 = 0, $4 = 0, $bf_val_sext = 0, $5 = 0, $6 = 0, $or = 0, $root = 0, $7 = 0, $8 = 0, $9 = 0, $call = 0, $tobool6 = 0, $index = 0, $10 = 0, $call8 = 0, $call9 = 0, $11 = 0, $12 = 0, $or16 = 0, $graph = 0, $13 = 0, $14 = 0, $proto = 0, $15 = 0, $n18 = 0, $16 = 0, $17 = 0, $call19 = 0, $tobool20 = 0, $index22 = 0, $18 = 0, $call23 = 0, $call24 = 0, $19 = 0, $20 = 0, $or31 = 0, $head = 0, $21 = 0, $22 = 0, $graph33 = 0, $23 = 0, $proto34 = 0, $24 = 0, $e35 = 0, $25 = 0, $26 = 0, $call36 = 0, $tobool37 = 0, $index39 = 0, $27 = 0, $call40 = 0, $call41 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $active_tooltip = $job + 584 | 0;
    $0 = HEAP32[$active_tooltip >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _free($0);
    HEAP32[$active_tooltip >> 2] = 0;
    label = 4;
    break;
   case 4:
    $current_obj = $job + 576 | 0;
    $1 = HEAP32[$current_obj >> 2] | 0;
    $tobool3 = ($1 | 0) == 0;
    if ($tobool3) {
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = $1;
    $3 = HEAP32[$2 >> 2] | 0;
    $4 = $3 << 28;
    $bf_val_sext = $4 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 6;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 8;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 10;
      break;
    } else {
      label = 12;
      break;
    }
   case 6:
    $5 = $1 + 152 | 0;
    $6 = HEAP8[$5] | 0;
    $or = $6 | 1;
    HEAP8[$5] = $or;
    $root = $1 + 32 | 0;
    $7 = $root;
    $8 = HEAP32[$7 >> 2] | 0;
    $9 = $8 | 0;
    $call = _agfindattr($9, 139256) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $index = $call + 8 | 0;
    $10 = HEAP32[$index >> 2] | 0;
    $call8 = _agxget($1, $10) | 0;
    $call9 = _strdup_and_subst_obj($call8, $1) | 0;
    HEAP32[$active_tooltip >> 2] = $call9;
    label = 12;
    break;
   case 8:
    $11 = $1 + 133 | 0;
    $12 = HEAP8[$11] | 0;
    $or16 = $12 | 1;
    HEAP8[$11] = $or16;
    $graph = $1 + 20 | 0;
    $13 = $graph;
    $14 = HEAP32[$13 >> 2] | 0;
    $proto = $14 + 40 | 0;
    $15 = HEAP32[$proto >> 2] | 0;
    $n18 = $15 | 0;
    $16 = HEAP32[$n18 >> 2] | 0;
    $17 = $16 | 0;
    $call19 = _agfindattr($17, 139256) | 0;
    $tobool20 = ($call19 | 0) == 0;
    if ($tobool20) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $index22 = $call19 + 8 | 0;
    $18 = HEAP32[$index22 >> 2] | 0;
    $call23 = _agxget($1, $18) | 0;
    $call24 = _strdup_and_subst_obj($call23, $1) | 0;
    HEAP32[$active_tooltip >> 2] = $call24;
    label = 12;
    break;
   case 10:
    $19 = $1 + 131 | 0;
    $20 = HEAP8[$19] | 0;
    $or31 = $20 | 1;
    HEAP8[$19] = $or31;
    $head = $1 + 12 | 0;
    $21 = $head;
    $22 = HEAP32[$21 >> 2] | 0;
    $graph33 = $22 + 20 | 0;
    $23 = HEAP32[$graph33 >> 2] | 0;
    $proto34 = $23 + 40 | 0;
    $24 = HEAP32[$proto34 >> 2] | 0;
    $e35 = $24 + 4 | 0;
    $25 = HEAP32[$e35 >> 2] | 0;
    $26 = $25 | 0;
    $call36 = _agfindattr($26, 139256) | 0;
    $tobool37 = ($call36 | 0) == 0;
    if ($tobool37) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $index39 = $call36 + 8 | 0;
    $27 = HEAP32[$index39 >> 2] | 0;
    $call40 = _agxget($1, $27) | 0;
    $call41 = _strdup_and_subst_obj($call40, $1) | 0;
    HEAP32[$active_tooltip >> 2] = $call41;
    label = 12;
    break;
   case 12:
    return;
  }
}
function _gvevent_find_cluster($g, $b) {
  $g = $g | 0;
  $b = $b | 0;
  var $n_cluster = 0, $0 = 0, $clust = 0, $i_0 = 0, $cmp = 0, $1 = 0, $arrayidx = 0, $2 = 0, $call = 0, $tobool = 0, $inc = 0, $x = 0, $3 = 0.0, $y = 0, $4 = 0.0, $y19 = 0, $5 = 0.0, $x23 = 0, $6 = 0.0, $cmp26 = 0, $x13 = 0, $7 = 0.0, $x30 = 0, $8 = 0.0, $cmp31 = 0, $y34 = 0, $9 = 0.0, $cmp37 = 0, $y42 = 0, $10 = 0.0, $cmp43 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $clust = $g + 216 | 0;
    $i_0 = 1;
    label = 3;
    break;
   case 3:
    $cmp = ($i_0 | 0) > ($0 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($i_0 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $call = _gvevent_find_cluster($2, $b) | 0;
    $tobool = ($call | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool) {
      $i_0 = $inc;
      label = 3;
      break;
    } else {
      $retval_0 = $call;
      label = 10;
      break;
    }
   case 5:
    $x = $g + 56 | 0;
    $3 = +HEAPF64[$x >> 3];
    $y = $g + 64 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y19 = $g + 80 | 0;
    $5 = +HEAPF64[$y19 >> 3];
    $x23 = $b + 16 | 0;
    $6 = +HEAPF64[$x23 >> 3];
    $cmp26 = $6 < $3;
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x13 = $g + 72 | 0;
    $7 = +HEAPF64[$x13 >> 3];
    $x30 = $b | 0;
    $8 = +HEAPF64[$x30 >> 3];
    $cmp31 = $7 < $8;
    if ($cmp31) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $y34 = $b + 24 | 0;
    $9 = +HEAPF64[$y34 >> 3];
    $cmp37 = $9 < $4;
    if ($cmp37) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $y42 = $b + 8 | 0;
    $10 = +HEAPF64[$y42 >> 3];
    $cmp43 = $5 < $10;
    if ($cmp43) {
      label = 9;
      break;
    } else {
      $retval_0 = $g;
      label = 10;
      break;
    }
   case 9:
    $retval_0 = 0;
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gvevent_select_current_obj($job) {
  $job = $job | 0;
  var $selected_obj = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $3 = 0, $bf_val_sext = 0, $4 = 0, $5 = 0, $or = 0, $and = 0, $6 = 0, $7 = 0, $or10 = 0, $and15 = 0, $8 = 0, $9 = 0, $or21 = 0, $and26 = 0, $selected_href = 0, $10 = 0, $tobool28 = 0, $current_obj = 0, $11 = 0, $tobool34 = 0, $12 = 0, $13 = 0, $14 = 0, $bf_val_sext37 = 0, $15 = 0, $16 = 0, $17 = 0, $or42 = 0, $18 = 0, $19 = 0, $20 = 0, $or48 = 0, $21 = 0, $22 = 0, $23 = 0, $or54 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $selected_obj = $job + 580 | 0;
    $0 = HEAP32[$selected_obj >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $0;
    $2 = HEAP32[$1 >> 2] | 0;
    $3 = $2 << 28;
    $bf_val_sext = $3 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 5;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $4 = $0 + 152 | 0;
    $5 = HEAP8[$4] | 0;
    $or = $5 & -7;
    $and = $or | 4;
    HEAP8[$4] = $and;
    label = 7;
    break;
   case 5:
    $6 = $0 + 133 | 0;
    $7 = HEAP8[$6] | 0;
    $or10 = $7 & -7;
    $and15 = $or10 | 4;
    HEAP8[$6] = $and15;
    label = 7;
    break;
   case 6:
    $8 = $0 + 131 | 0;
    $9 = HEAP8[$8] | 0;
    $or21 = $9 & -7;
    $and26 = $or21 | 4;
    HEAP8[$8] = $and26;
    label = 7;
    break;
   case 7:
    $selected_href = $job + 588 | 0;
    $10 = HEAP32[$selected_href >> 2] | 0;
    $tobool28 = ($10 | 0) == 0;
    if ($tobool28) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free($10);
    HEAP32[$selected_href >> 2] = 0;
    label = 9;
    break;
   case 9:
    $current_obj = $job + 576 | 0;
    $11 = HEAP32[$current_obj >> 2] | 0;
    HEAP32[$selected_obj >> 2] = $11;
    $tobool34 = ($11 | 0) == 0;
    if ($tobool34) {
      label = 14;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $12 = $11;
    $13 = HEAP32[$12 >> 2] | 0;
    $14 = $13 << 28;
    $bf_val_sext37 = $14 >> 28;
    if (($bf_val_sext37 | 0) == 3) {
      label = 11;
      break;
    } else if (($bf_val_sext37 | 0) == 1) {
      label = 12;
      break;
    } else if (($bf_val_sext37 | 0) == 2) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 11:
    $15 = $11;
    $16 = $11 + 152 | 0;
    $17 = HEAP8[$16] | 0;
    $or42 = $17 | 2;
    HEAP8[$16] = $or42;
    _gv_graph_state($job, $15);
    label = 14;
    break;
   case 12:
    $18 = $11;
    $19 = $11 + 133 | 0;
    $20 = HEAP8[$19] | 0;
    $or48 = $20 | 2;
    HEAP8[$19] = $or48;
    _gv_node_state($job, $18);
    label = 14;
    break;
   case 13:
    $21 = $11;
    $22 = $11 + 131 | 0;
    $23 = HEAP8[$22] | 0;
    $or54 = $23 | 2;
    HEAP8[$22] = $or54;
    _gv_edge_state($job, $21);
    label = 14;
    break;
   case 14:
    return;
  }
}
function _gv_graph_state($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $selected_obj_type_name = 0, $root = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $and = 0, $tobool = 0, $name = 0, $3 = 0, $argc = 0, $selected_obj_attributes = 0, $univ = 0, $4 = 0, $globattr36 = 0, $5 = 0, $dict37 = 0, $6 = 0, $call38 = 0, $cmp739 = 0, $7 = 0, $j_141 = 0, $i_040 = 0, $8 = 0, $globattr9 = 0, $9 = 0, $list10 = 0, $10 = 0, $arrayidx = 0, $11 = 0, $inc11 = 0, $name12 = 0, $12 = 0, $inc13 = 0, $index = 0, $13 = 0, $call14 = 0, $inc15 = 0, $inc16 = 0, $14 = 0, $globattr = 0, $15 = 0, $dict = 0, $16 = 0, $call = 0, $cmp7 = 0, $j_1_lcssa = 0, $argc17 = 0, $17 = 0, $18 = 0, $call19 = 0, $tobool20 = 0, $19 = 0, $20 = 0, $call23 = 0, $tobool25 = 0, $a_035 = 0, $21 = 0, $index27 = 0, $22 = 0, $call28 = 0, $call29 = 0, $selected_href = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $selected_obj_type_name = $job + 592 | 0;
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $cmp = ($0 | 0) == ($g | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $1 = $g;
    $2 = HEAP32[$1 >> 2] | 0;
    $and = $2 & 16;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _gv_argvlist_set_item($selected_obj_type_name, 0, 119336);
    label = 7;
    break;
   case 5:
    _gv_argvlist_set_item($selected_obj_type_name, 0, 119864);
    label = 7;
    break;
   case 6:
    _gv_argvlist_set_item($selected_obj_type_name, 0, 120552);
    label = 7;
    break;
   case 7:
    $name = $g + 12 | 0;
    $3 = HEAP32[$name >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 1, $3);
    $argc = $job + 596 | 0;
    HEAP32[$argc >> 2] = 2;
    $selected_obj_attributes = $job + 604 | 0;
    $univ = $g + 16 | 0;
    $4 = HEAP32[$univ >> 2] | 0;
    $globattr36 = $4 + 12 | 0;
    $5 = HEAP32[$globattr36 >> 2] | 0;
    $dict37 = $5 + 4 | 0;
    $6 = HEAP32[$dict37 >> 2] | 0;
    $call38 = _dtsize($6) | 0;
    $cmp739 = ($call38 | 0) > 0;
    if ($cmp739) {
      label = 8;
      break;
    } else {
      $j_1_lcssa = 0;
      label = 10;
      break;
    }
   case 8:
    $7 = $g | 0;
    $i_040 = 0;
    $j_141 = 0;
    label = 9;
    break;
   case 9:
    $8 = HEAP32[$univ >> 2] | 0;
    $globattr9 = $8 + 12 | 0;
    $9 = HEAP32[$globattr9 >> 2] | 0;
    $list10 = $9 + 8 | 0;
    $10 = HEAP32[$list10 >> 2] | 0;
    $arrayidx = $10 + ($i_040 << 2) | 0;
    $11 = HEAP32[$arrayidx >> 2] | 0;
    $inc11 = $j_141 + 1 | 0;
    $name12 = $11 | 0;
    $12 = HEAP32[$name12 >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $j_141, $12);
    $inc13 = $j_141 + 2 | 0;
    $index = $11 + 8 | 0;
    $13 = HEAP32[$index >> 2] | 0;
    $call14 = _agxget($7, $13) | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $inc11, $call14);
    $inc15 = $j_141 + 3 | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $inc13, 0);
    $inc16 = $i_040 + 1 | 0;
    $14 = HEAP32[$univ >> 2] | 0;
    $globattr = $14 + 12 | 0;
    $15 = HEAP32[$globattr >> 2] | 0;
    $dict = $15 + 4 | 0;
    $16 = HEAP32[$dict >> 2] | 0;
    $call = _dtsize($16) | 0;
    $cmp7 = ($inc16 | 0) < ($call | 0);
    if ($cmp7) {
      $i_040 = $inc16;
      $j_141 = $inc15;
      label = 9;
      break;
    } else {
      $j_1_lcssa = $inc15;
      label = 10;
      break;
    }
   case 10:
    $argc17 = $job + 608 | 0;
    HEAP32[$argc17 >> 2] = $j_1_lcssa;
    $17 = HEAP32[$root >> 2] | 0;
    $18 = $17 | 0;
    $call19 = _agfindattr($18, 130008) | 0;
    $tobool20 = ($call19 | 0) == 0;
    if ($tobool20) {
      label = 11;
      break;
    } else {
      $a_035 = $call19;
      label = 12;
      break;
    }
   case 11:
    $19 = HEAP32[$root >> 2] | 0;
    $20 = $19 | 0;
    $call23 = _agfindattr($20, 131864) | 0;
    $tobool25 = ($call23 | 0) == 0;
    if ($tobool25) {
      label = 13;
      break;
    } else {
      $a_035 = $call23;
      label = 12;
      break;
    }
   case 12:
    $21 = $g | 0;
    $index27 = $a_035 + 8 | 0;
    $22 = HEAP32[$index27 >> 2] | 0;
    $call28 = _agxget($21, $22) | 0;
    $call29 = _strdup_and_subst_obj($call28, $21) | 0;
    $selected_href = $job + 588 | 0;
    HEAP32[$selected_href >> 2] = $call29;
    label = 13;
    break;
   case 13:
    return;
  }
}
function _gv_node_state($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $selected_obj_type_name = 0, $name = 0, $0 = 0, $argc = 0, $selected_obj_attributes = 0, $graph = 0, $1 = 0, $root = 0, $2 = 0, $univ = 0, $3 = 0, $nodeattr29 = 0, $4 = 0, $dict30 = 0, $5 = 0, $call31 = 0, $cmp32 = 0, $6 = 0, $i_034 = 0, $j_033 = 0, $7 = 0, $nodeattr3 = 0, $8 = 0, $list4 = 0, $9 = 0, $arrayidx = 0, $10 = 0, $inc526 = 0, $name6 = 0, $11 = 0, $inc7 = 0, $index = 0, $12 = 0, $call8 = 0, $inc9 = 0, $13 = 0, $nodeattr = 0, $14 = 0, $dict = 0, $15 = 0, $call = 0, $cmp = 0, $j_0_lcssa = 0, $argc10 = 0, $16 = 0, $proto = 0, $17 = 0, $n12 = 0, $18 = 0, $19 = 0, $call13 = 0, $tobool = 0, $20 = 0, $proto15 = 0, $21 = 0, $n16 = 0, $22 = 0, $23 = 0, $call17 = 0, $tobool18 = 0, $a_028 = 0, $24 = 0, $index20 = 0, $25 = 0, $call21 = 0, $call22 = 0, $selected_href = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $selected_obj_type_name = $job + 592 | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 0, 121256);
    $name = $n + 12 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 1, $0);
    $argc = $job + 596 | 0;
    HEAP32[$argc >> 2] = 2;
    $selected_obj_attributes = $job + 604 | 0;
    $graph = $n + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $root = $1 + 32 | 0;
    $2 = HEAP32[$root >> 2] | 0;
    $univ = $2 + 16 | 0;
    $3 = HEAP32[$univ >> 2] | 0;
    $nodeattr29 = $3 + 4 | 0;
    $4 = HEAP32[$nodeattr29 >> 2] | 0;
    $dict30 = $4 + 4 | 0;
    $5 = HEAP32[$dict30 >> 2] | 0;
    $call31 = _dtsize($5) | 0;
    $cmp32 = ($call31 | 0) > 0;
    if ($cmp32) {
      label = 3;
      break;
    } else {
      $j_0_lcssa = 0;
      label = 5;
      break;
    }
   case 3:
    $6 = $n | 0;
    $j_033 = 0;
    $i_034 = 0;
    label = 4;
    break;
   case 4:
    $7 = HEAP32[$univ >> 2] | 0;
    $nodeattr3 = $7 + 4 | 0;
    $8 = HEAP32[$nodeattr3 >> 2] | 0;
    $list4 = $8 + 8 | 0;
    $9 = HEAP32[$list4 >> 2] | 0;
    $arrayidx = $9 + ($i_034 << 2) | 0;
    $10 = HEAP32[$arrayidx >> 2] | 0;
    $inc526 = $j_033 | 1;
    $name6 = $10 | 0;
    $11 = HEAP32[$name6 >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $j_033, $11);
    $inc7 = $j_033 + 2 | 0;
    $index = $10 + 8 | 0;
    $12 = HEAP32[$index >> 2] | 0;
    $call8 = _agxget($6, $12) | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $inc526, $call8);
    $inc9 = $i_034 + 1 | 0;
    $13 = HEAP32[$univ >> 2] | 0;
    $nodeattr = $13 + 4 | 0;
    $14 = HEAP32[$nodeattr >> 2] | 0;
    $dict = $14 + 4 | 0;
    $15 = HEAP32[$dict >> 2] | 0;
    $call = _dtsize($15) | 0;
    $cmp = ($inc9 | 0) < ($call | 0);
    if ($cmp) {
      $j_033 = $inc7;
      $i_034 = $inc9;
      label = 4;
      break;
    } else {
      $j_0_lcssa = $inc7;
      label = 5;
      break;
    }
   case 5:
    $argc10 = $job + 608 | 0;
    HEAP32[$argc10 >> 2] = $j_0_lcssa;
    $16 = HEAP32[$graph >> 2] | 0;
    $proto = $16 + 40 | 0;
    $17 = HEAP32[$proto >> 2] | 0;
    $n12 = $17 | 0;
    $18 = HEAP32[$n12 >> 2] | 0;
    $19 = $18 | 0;
    $call13 = _agfindattr($19, 130008) | 0;
    $tobool = ($call13 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $a_028 = $call13;
      label = 7;
      break;
    }
   case 6:
    $20 = HEAP32[$graph >> 2] | 0;
    $proto15 = $20 + 40 | 0;
    $21 = HEAP32[$proto15 >> 2] | 0;
    $n16 = $21 | 0;
    $22 = HEAP32[$n16 >> 2] | 0;
    $23 = $22 | 0;
    $call17 = _agfindattr($23, 131864) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      label = 8;
      break;
    } else {
      $a_028 = $call17;
      label = 7;
      break;
    }
   case 7:
    $24 = $n | 0;
    $index20 = $a_028 + 8 | 0;
    $25 = HEAP32[$index20 >> 2] | 0;
    $call21 = _agxget($24, $25) | 0;
    $call22 = _strdup_and_subst_obj($call21, $24) | 0;
    $selected_href = $job + 588 | 0;
    HEAP32[$selected_href >> 2] = $call22;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _gv_edge_state($job, $e) {
  $job = $job | 0;
  $e = $e | 0;
  var $selected_obj_type_name = 0, $tail = 0, $0 = 0, $name = 0, $1 = 0, $2 = 0, $graph = 0, $3 = 0, $4 = 0, $5 = 0, $and = 0, $tobool = 0, $cond = 0, $head = 0, $6 = 0, $name6 = 0, $7 = 0, $argc = 0, $selected_obj_attributes = 0, $8 = 0, $graph10 = 0, $9 = 0, $root = 0, $10 = 0, $univ = 0, $11 = 0, $edgeattr49 = 0, $12 = 0, $dict50 = 0, $13 = 0, $call51 = 0, $cmp52 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $i_054 = 0, $j_053 = 0, $18 = 0, $edgeattr12 = 0, $19 = 0, $list = 0, $20 = 0, $arrayidx = 0, $21 = 0, $name13 = 0, $22 = 0, $call14 = 0, $cmp15 = 0, $index = 0, $23 = 0, $call16 = 0, $call18 = 0, $cmp19 = 0, $index21 = 0, $24 = 0, $call22 = 0, $call25 = 0, $cmp26 = 0, $index28 = 0, $25 = 0, $call29 = 0, $inc32 = 0, $26 = 0, $inc34 = 0, $index35 = 0, $27 = 0, $call36 = 0, $j_1 = 0, $inc37 = 0, $28 = 0, $edgeattr = 0, $29 = 0, $dict = 0, $30 = 0, $call = 0, $cmp = 0, $j_0_lcssa = 0, $argc38 = 0, $31 = 0, $graph40 = 0, $32 = 0, $proto = 0, $33 = 0, $e41 = 0, $34 = 0, $35 = 0, $call42 = 0, $tobool43 = 0, $36 = 0, $graph46 = 0, $37 = 0, $proto47 = 0, $38 = 0, $e48 = 0, $39 = 0, $40 = 0, $call49 = 0, $tobool51 = 0, $a_048 = 0, $41 = 0, $index53 = 0, $42 = 0, $call54 = 0, $call55 = 0, $selected_href = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $selected_obj_type_name = $job + 592 | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 0, 121816);
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $name = $0 + 12 | 0;
    $1 = HEAP32[$name >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 1, $1);
    $2 = HEAP32[$tail >> 2] | 0;
    $graph = $2 + 20 | 0;
    $3 = HEAP32[$graph >> 2] | 0;
    $4 = $3;
    $5 = HEAP32[$4 >> 2] | 0;
    $and = $5 & 16;
    $tobool = ($and | 0) != 0;
    $cond = $tobool ? 136480 : 133352;
    _gv_argvlist_set_item($selected_obj_type_name, 3, $cond);
    $head = $e + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $name6 = $6 + 12 | 0;
    $7 = HEAP32[$name6 >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 4, $7);
    $argc = $job + 596 | 0;
    HEAP32[$argc >> 2] = 7;
    $selected_obj_attributes = $job + 604 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $graph10 = $8 + 20 | 0;
    $9 = HEAP32[$graph10 >> 2] | 0;
    $root = $9 + 32 | 0;
    $10 = HEAP32[$root >> 2] | 0;
    $univ = $10 + 16 | 0;
    $11 = HEAP32[$univ >> 2] | 0;
    $edgeattr49 = $11 + 8 | 0;
    $12 = HEAP32[$edgeattr49 >> 2] | 0;
    $dict50 = $12 + 4 | 0;
    $13 = HEAP32[$dict50 >> 2] | 0;
    $call51 = _dtsize($13) | 0;
    $cmp52 = ($call51 | 0) > 0;
    if ($cmp52) {
      label = 3;
      break;
    } else {
      $j_0_lcssa = 0;
      label = 12;
      break;
    }
   case 3:
    $14 = $e | 0;
    $15 = $e | 0;
    $16 = $e | 0;
    $17 = $e | 0;
    $j_053 = 0;
    $i_054 = 0;
    label = 4;
    break;
   case 4:
    $18 = HEAP32[$univ >> 2] | 0;
    $edgeattr12 = $18 + 8 | 0;
    $19 = HEAP32[$edgeattr12 >> 2] | 0;
    $list = $19 + 8 | 0;
    $20 = HEAP32[$list >> 2] | 0;
    $arrayidx = $20 + ($i_054 << 2) | 0;
    $21 = HEAP32[$arrayidx >> 2] | 0;
    $name13 = $21 | 0;
    $22 = HEAP32[$name13 >> 2] | 0;
    $call14 = _strcmp($22 | 0, 123344) | 0;
    $cmp15 = ($call14 | 0) == 0;
    if ($cmp15) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $index = $21 + 8 | 0;
    $23 = HEAP32[$index >> 2] | 0;
    $call16 = _agxget($14, $23) | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 2, $call16);
    label = 10;
    break;
   case 6:
    $call18 = _strcmp($22 | 0, 125392) | 0;
    $cmp19 = ($call18 | 0) == 0;
    if ($cmp19) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $index21 = $21 + 8 | 0;
    $24 = HEAP32[$index21 >> 2] | 0;
    $call22 = _agxget($16, $24) | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 5, $call22);
    label = 10;
    break;
   case 8:
    $call25 = _strcmp($22 | 0, 127936) | 0;
    $cmp26 = ($call25 | 0) == 0;
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $index28 = $21 + 8 | 0;
    $25 = HEAP32[$index28 >> 2] | 0;
    $call29 = _agxget($17, $25) | 0;
    _gv_argvlist_set_item($selected_obj_type_name, 6, $call29);
    $j_1 = $j_053;
    label = 11;
    break;
   case 10:
    $inc32 = $j_053 + 1 | 0;
    $26 = HEAP32[$name13 >> 2] | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $j_053, $26);
    $inc34 = $j_053 + 2 | 0;
    $index35 = $21 + 8 | 0;
    $27 = HEAP32[$index35 >> 2] | 0;
    $call36 = _agxget($15, $27) | 0;
    _gv_argvlist_set_item($selected_obj_attributes, $inc32, $call36);
    $j_1 = $inc34;
    label = 11;
    break;
   case 11:
    $inc37 = $i_054 + 1 | 0;
    $28 = HEAP32[$univ >> 2] | 0;
    $edgeattr = $28 + 8 | 0;
    $29 = HEAP32[$edgeattr >> 2] | 0;
    $dict = $29 + 4 | 0;
    $30 = HEAP32[$dict >> 2] | 0;
    $call = _dtsize($30) | 0;
    $cmp = ($inc37 | 0) < ($call | 0);
    if ($cmp) {
      $j_053 = $j_1;
      $i_054 = $inc37;
      label = 4;
      break;
    } else {
      $j_0_lcssa = $j_1;
      label = 12;
      break;
    }
   case 12:
    $argc38 = $job + 608 | 0;
    HEAP32[$argc38 >> 2] = $j_0_lcssa;
    $31 = HEAP32[$head >> 2] | 0;
    $graph40 = $31 + 20 | 0;
    $32 = HEAP32[$graph40 >> 2] | 0;
    $proto = $32 + 40 | 0;
    $33 = HEAP32[$proto >> 2] | 0;
    $e41 = $33 + 4 | 0;
    $34 = HEAP32[$e41 >> 2] | 0;
    $35 = $34 | 0;
    $call42 = _agfindattr($35, 130008) | 0;
    $tobool43 = ($call42 | 0) == 0;
    if ($tobool43) {
      label = 13;
      break;
    } else {
      $a_048 = $call42;
      label = 14;
      break;
    }
   case 13:
    $36 = HEAP32[$head >> 2] | 0;
    $graph46 = $36 + 20 | 0;
    $37 = HEAP32[$graph46 >> 2] | 0;
    $proto47 = $37 + 40 | 0;
    $38 = HEAP32[$proto47 >> 2] | 0;
    $e48 = $38 + 4 | 0;
    $39 = HEAP32[$e48 >> 2] | 0;
    $40 = $39 | 0;
    $call49 = _agfindattr($40, 131864) | 0;
    $tobool51 = ($call49 | 0) == 0;
    if ($tobool51) {
      label = 15;
      break;
    } else {
      $a_048 = $call49;
      label = 14;
      break;
    }
   case 14:
    $41 = $e | 0;
    $index53 = $a_048 + 8 | 0;
    $42 = HEAP32[$index53 >> 2] | 0;
    $call54 = _agxget($41, $42) | 0;
    $call55 = _strdup_and_subst_obj($call54, $41) | 0;
    $selected_href = $job + 588 | 0;
    HEAP32[$selected_href >> 2] = $call55;
    label = 15;
    break;
   case 15:
    return;
  }
}
function _gvjobs_first($gvc) {
  $gvc = $gvc | 0;
  var $0 = 0;
  $0 = HEAP32[$gvc + 120 >> 2] | 0;
  HEAP32[$gvc + 124 >> 2] = $0;
  return $0 | 0;
}
function _gvjobs_next($gvc) {
  $gvc = $gvc | 0;
  var $job1 = 0, $0 = 0, $next = 0, $1 = 0, $tobool = 0, $output_langname = 0, $2 = 0, $tobool2 = 0, $output_langname5 = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $job1 = $gvc + 124 | 0;
    $0 = HEAP32[$job1 >> 2] | 0;
    $next = $0 + 4 | 0;
    $1 = HEAP32[$next >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $output_langname = $1 + 52 | 0;
    $2 = HEAP32[$output_langname >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $output_langname5 = $0 + 52 | 0;
    $3 = HEAP32[$output_langname5 >> 2] | 0;
    HEAP32[$output_langname >> 2] = $3;
    label = 5;
    break;
   case 5:
    HEAP32[$job1 >> 2] = $1;
    return $1 | 0;
  }
  return 0;
}
function _gvrender_ptf($agg_result, $job, $p) {
  $agg_result = $agg_result | 0;
  $job = $job | 0;
  $p = $p | 0;
  var $translation_sroa_0_0__idx = 0, $translation_sroa_0_0_copyload = 0.0, $translation_sroa_1_8__idx5 = 0, $translation_sroa_1_8_copyload = 0.0, $zoom = 0, $0 = 0.0, $x = 0, $1 = 0.0, $mul = 0.0, $y = 0, $2 = 0.0, $mul5 = 0.0, $rotation = 0, $3 = 0, $tobool = 0, $y7 = 0, $4 = 0.0, $add = 0.0, $sub = 0.0, $x12 = 0, $5 = 0.0, $add14 = 0.0, $x18 = 0, $6 = 0.0, $add20 = 0.0, $y24 = 0, $7 = 0.0, $add26 = 0.0, $sub_pn = 0.0, $add14_pn = 0.0, $rv_sroa_1_0 = 0.0, $rv_sroa_0_0 = 0.0, $rv_sroa_0_0__idx = 0, $rv_sroa_1_8__idx6 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $translation_sroa_0_0__idx = $job + 504 | 0;
    $translation_sroa_0_0_copyload = +HEAPF64[$translation_sroa_0_0__idx >> 3];
    $translation_sroa_1_8__idx5 = $job + 512 | 0;
    $translation_sroa_1_8_copyload = +HEAPF64[$translation_sroa_1_8__idx5 >> 3];
    $zoom = $job + 352 | 0;
    $0 = +HEAPF64[$zoom >> 3];
    $x = $job + 520 | 0;
    $1 = +HEAPF64[$x >> 3];
    $mul = $0 * $1;
    $y = $job + 528 | 0;
    $2 = +HEAPF64[$y >> 3];
    $mul5 = $0 * $2;
    $rotation = $job + 360 | 0;
    $3 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $y7 = $p + 8 | 0;
    $4 = +HEAPF64[$y7 >> 3];
    $add = $translation_sroa_1_8_copyload + $4;
    $sub = -0.0 - $add;
    $x12 = $p | 0;
    $5 = +HEAPF64[$x12 >> 3];
    $add14 = $translation_sroa_0_0_copyload + $5;
    $add14_pn = $add14;
    $sub_pn = $sub;
    label = 5;
    break;
   case 4:
    $x18 = $p | 0;
    $6 = +HEAPF64[$x18 >> 3];
    $add20 = $translation_sroa_0_0_copyload + $6;
    $y24 = $p + 8 | 0;
    $7 = +HEAPF64[$y24 >> 3];
    $add26 = $translation_sroa_1_8_copyload + $7;
    $add14_pn = $add26;
    $sub_pn = $add20;
    label = 5;
    break;
   case 5:
    $rv_sroa_1_0 = $mul5 * $add14_pn;
    $rv_sroa_0_0 = $mul * $sub_pn;
    $rv_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$rv_sroa_0_0__idx >> 3] = $rv_sroa_0_0;
    $rv_sroa_1_8__idx6 = $agg_result + 8 | 0;
    HEAPF64[$rv_sroa_1_8__idx6 >> 3] = $rv_sroa_1_0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvrender_ptf_A($job, $af, $AF, $n) {
  $job = $job | 0;
  $af = $af | 0;
  $AF = $AF | 0;
  $n = $n | 0;
  var $translation_sroa_0_0__idx = 0, $translation_sroa_0_0_copyload = 0.0, $translation_sroa_1_8__idx5 = 0, $translation_sroa_1_8_copyload = 0.0, $zoom = 0, $0 = 0.0, $x = 0, $1 = 0.0, $mul = 0.0, $y = 0, $2 = 0.0, $mul5 = 0.0, $rotation = 0, $3 = 0, $tobool = 0, $cmp2230 = 0, $i_034 = 0, $y7 = 0, $4 = 0.0, $add = 0.0, $sub = 0.0, $mul10 = 0.0, $x12 = 0, $5 = 0.0, $add14 = 0.0, $mul16 = 0.0, $y18 = 0, $x20 = 0, $inc = 0, $cmp = 0, $i_131 = 0, $x25 = 0, $6 = 0.0, $add27 = 0.0, $mul29 = 0.0, $x31 = 0, $y33 = 0, $7 = 0.0, $add35 = 0.0, $mul37 = 0.0, $y39 = 0, $inc41 = 0, $cmp22 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $translation_sroa_0_0__idx = $job + 504 | 0;
    $translation_sroa_0_0_copyload = +HEAPF64[$translation_sroa_0_0__idx >> 3];
    $translation_sroa_1_8__idx5 = $job + 512 | 0;
    $translation_sroa_1_8_copyload = +HEAPF64[$translation_sroa_1_8__idx5 >> 3];
    $zoom = $job + 352 | 0;
    $0 = +HEAPF64[$zoom >> 3];
    $x = $job + 520 | 0;
    $1 = +HEAPF64[$x >> 3];
    $mul = $0 * $1;
    $y = $job + 528 | 0;
    $2 = +HEAPF64[$y >> 3];
    $mul5 = $0 * $2;
    $rotation = $job + 360 | 0;
    $3 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    $cmp2230 = ($n | 0) > 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    if ($cmp2230) {
      $i_034 = 0;
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    if ($cmp2230) {
      $i_131 = 0;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $y7 = $af + ($i_034 << 4) + 8 | 0;
    $4 = +HEAPF64[$y7 >> 3];
    $add = $translation_sroa_1_8_copyload + $4;
    $sub = -0.0 - $add;
    $mul10 = $mul * $sub;
    $x12 = $af + ($i_034 << 4) | 0;
    $5 = +HEAPF64[$x12 >> 3];
    $add14 = $translation_sroa_0_0_copyload + $5;
    $mul16 = $mul5 * $add14;
    $y18 = $AF + ($i_034 << 4) + 8 | 0;
    HEAPF64[$y18 >> 3] = $mul16;
    $x20 = $AF + ($i_034 << 4) | 0;
    HEAPF64[$x20 >> 3] = $mul10;
    $inc = $i_034 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_034 = $inc;
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $x25 = $af + ($i_131 << 4) | 0;
    $6 = +HEAPF64[$x25 >> 3];
    $add27 = $translation_sroa_0_0_copyload + $6;
    $mul29 = $mul * $add27;
    $x31 = $AF + ($i_131 << 4) | 0;
    HEAPF64[$x31 >> 3] = $mul29;
    $y33 = $af + ($i_131 << 4) + 8 | 0;
    $7 = +HEAPF64[$y33 >> 3];
    $add35 = $translation_sroa_1_8_copyload + $7;
    $mul37 = $mul5 * $add35;
    $y39 = $AF + ($i_131 << 4) + 8 | 0;
    HEAPF64[$y39 >> 3] = $mul37;
    $inc41 = $i_131 + 1 | 0;
    $cmp22 = ($inc41 | 0) < ($n | 0);
    if ($cmp22) {
      $i_131 = $inc41;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    return $AF | 0;
  }
  return 0;
}
function _gvjobs_output_filename($gvc, $name) {
  $gvc = $gvc | 0;
  $name = $name | 0;
  var $jobs = 0, $0 = 0, $tobool = 0, $call = 0, $1 = 0, $job = 0, $2 = 0, $tobool2 = 0, $next = 0, $3 = 0, $tobool6 = 0, $call8 = 0, $4 = 0, $5 = 0, $next9 = 0, $6 = 0, $next10 = 0, $7 = 0, $8 = 0, $output_filename = 0, $9 = 0, $gvc13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $jobs = $gvc + 120 | 0;
    $0 = HEAP32[$jobs >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _zmalloc(632) | 0;
    $1 = $call;
    HEAP32[$jobs >> 2] = $1;
    $job = $gvc + 124 | 0;
    HEAP32[$job >> 2] = $1;
    HEAP32[2250] = $1;
    label = 9;
    break;
   case 4:
    $2 = HEAP32[2250] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP32[2250] = $0;
    label = 9;
    break;
   case 6:
    $next = $2 + 4 | 0;
    $3 = HEAP32[$next >> 2] | 0;
    $tobool6 = ($3 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call8 = _zmalloc(632) | 0;
    $4 = $call8;
    $5 = HEAP32[2250] | 0;
    $next9 = $5 + 4 | 0;
    HEAP32[$next9 >> 2] = $4;
    label = 8;
    break;
   case 8:
    $6 = HEAP32[2250] | 0;
    $next10 = $6 + 4 | 0;
    $7 = HEAP32[$next10 >> 2] | 0;
    HEAP32[2250] = $7;
    label = 9;
    break;
   case 9:
    $8 = HEAP32[2250] | 0;
    $output_filename = $8 + 32 | 0;
    HEAP32[$output_filename >> 2] = $name;
    $9 = HEAP32[2250] | 0;
    $gvc13 = $9 | 0;
    HEAP32[$gvc13 >> 2] = $gvc;
    return;
  }
}
function _gvjobs_output_langname($gvc, $name) {
  $gvc = $gvc | 0;
  $name = $name | 0;
  var $jobs = 0, $0 = 0, $tobool = 0, $call = 0, $1 = 0, $job = 0, $2 = 0, $tobool2 = 0, $next = 0, $3 = 0, $tobool6 = 0, $call8 = 0, $4 = 0, $5 = 0, $next9 = 0, $6 = 0, $next10 = 0, $7 = 0, $8 = 0, $output_langname = 0, $9 = 0, $gvc13 = 0, $call14 = 0, $not_tobool15 = 0, $_ = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $jobs = $gvc + 120 | 0;
    $0 = HEAP32[$jobs >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _zmalloc(632) | 0;
    $1 = $call;
    HEAP32[$jobs >> 2] = $1;
    $job = $gvc + 124 | 0;
    HEAP32[$job >> 2] = $1;
    HEAP32[2248] = $1;
    label = 9;
    break;
   case 4:
    $2 = HEAP32[2248] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP32[2248] = $0;
    label = 9;
    break;
   case 6:
    $next = $2 + 4 | 0;
    $3 = HEAP32[$next >> 2] | 0;
    $tobool6 = ($3 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call8 = _zmalloc(632) | 0;
    $4 = $call8;
    $5 = HEAP32[2248] | 0;
    $next9 = $5 + 4 | 0;
    HEAP32[$next9 >> 2] = $4;
    label = 8;
    break;
   case 8:
    $6 = HEAP32[2248] | 0;
    $next10 = $6 + 4 | 0;
    $7 = HEAP32[$next10 >> 2] | 0;
    HEAP32[2248] = $7;
    label = 9;
    break;
   case 9:
    $8 = HEAP32[2248] | 0;
    $output_langname = $8 + 52 | 0;
    HEAP32[$output_langname >> 2] = $name;
    $9 = HEAP32[2248] | 0;
    $gvc13 = $9 | 0;
    HEAP32[$gvc13 >> 2] = $gvc;
    $call14 = _gvplugin_load($gvc, 3, $name) | 0;
    $not_tobool15 = ($call14 | 0) != 0;
    $_ = $not_tobool15 & 1;
    return $_ | 0;
  }
  return 0;
}
function _gv_argvlist_set_item($list, $index, $item) {
  $list = $list | 0;
  $index = $index | 0;
  $item = $item | 0;
  var $alloc = 0, $0 = 0, $cmp = 0, $add = 0, $argv = 0, $1 = 0, $2 = 0, $mul = 0, $call = 0, $3 = 0, $argv4 = 0, $4 = 0, $arrayidx = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $alloc = $list + 8 | 0;
    $0 = HEAP32[$alloc >> 2] | 0;
    $cmp = ($0 | 0) > ($index | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $index + 10 | 0;
    HEAP32[$alloc >> 2] = $add;
    $argv = $list | 0;
    $1 = HEAP32[$argv >> 2] | 0;
    $2 = $1;
    $mul = $add << 2;
    $call = _grealloc($2, $mul) | 0;
    $3 = $call;
    HEAP32[$argv >> 2] = $3;
    label = 4;
    break;
   case 4:
    $argv4 = $list | 0;
    $4 = HEAP32[$argv4 >> 2] | 0;
    $arrayidx = $4 + ($index << 2) | 0;
    HEAP32[$arrayidx >> 2] = $item;
    return;
  }
}
function _gv_argvlist_reset($list) {
  $list = $list | 0;
  var $argv = 0, $0 = 0, $tobool = 0, $1 = 0, $alloc = 0, $argc = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $argv = $list | 0;
    $0 = HEAP32[$argv >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $0;
    _free($1);
    label = 4;
    break;
   case 4:
    HEAP32[$argv >> 2] = 0;
    $alloc = $list + 8 | 0;
    HEAP32[$alloc >> 2] = 0;
    $argc = $list + 4 | 0;
    HEAP32[$argc >> 2] = 0;
    return;
  }
}
function _gvjobs_delete($gvc) {
  $gvc = $gvc | 0;
  var $jobs = 0, $0 = 0, $tobool12 = 0, $job_013 = 0, $next = 0, $1 = 0, $selected_obj_attributes = 0, $selected_obj_type_name = 0, $active_tooltip = 0, $2 = 0, $tobool1 = 0, $selected_href = 0, $3 = 0, $tobool3 = 0, $4 = 0, $tobool = 0, $active_jobs = 0, $job7 = 0, $viewNum = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $jobs = $gvc + 120 | 0;
    $0 = HEAP32[$jobs >> 2] | 0;
    $tobool12 = ($0 | 0) == 0;
    if ($tobool12) {
      label = 8;
      break;
    } else {
      $job_013 = $0;
      label = 3;
      break;
    }
   case 3:
    $next = $job_013 + 4 | 0;
    $1 = HEAP32[$next >> 2] | 0;
    $selected_obj_attributes = $job_013 + 604 | 0;
    _gv_argvlist_reset($selected_obj_attributes);
    $selected_obj_type_name = $job_013 + 592 | 0;
    _gv_argvlist_reset($selected_obj_type_name);
    $active_tooltip = $job_013 + 584 | 0;
    $2 = HEAP32[$active_tooltip >> 2] | 0;
    $tobool1 = ($2 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _free($2);
    label = 5;
    break;
   case 5:
    $selected_href = $job_013 + 588 | 0;
    $3 = HEAP32[$selected_href >> 2] | 0;
    $tobool3 = ($3 | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($3);
    label = 7;
    break;
   case 7:
    $4 = $job_013;
    _free($4);
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $job_013 = $1;
      label = 3;
      break;
    }
   case 8:
    HEAP32[2248] = 0;
    HEAP32[2250] = 0;
    $active_jobs = $gvc + 164 | 0;
    HEAP32[$active_jobs >> 2] = 0;
    $job7 = $gvc + 124 | 0;
    HEAP32[$job7 >> 2] = 0;
    HEAP32[$jobs >> 2] = 0;
    $viewNum = $gvc + 28 | 0;
    HEAP32[$viewNum >> 2] = 0;
    return;
  }
}
function _gvplugin_install($gvc, $api, $typestr, $quality, $package, $typeptr) {
  $gvc = $gvc | 0;
  $api = $api | 0;
  $typestr = $typestr | 0;
  $quality = $quality | 0;
  $package = $package | 0;
  $typeptr = $typeptr | 0;
  var $pins = 0, $pnxt = 0, $arraydecay = 0, $call = 0, $call2 = 0, $tobool = 0, $arrayidx = 0, $0 = 0, $tobool519 = 0, $arraydecay6 = 0, $pnext_0_lcssa = 0, $arraydecay23 = 0, $1 = 0, $pnext_020 = 0, $typestr7 = 0, $2 = 0, $call8 = 0, $call10 = 0, $tobool11 = 0, $call16 = 0, $cmp17 = 0, $3 = 0, $next = 0, $4 = 0, $tobool5 = 0, $pnext_1 = 0, $5 = 0, $tobool21 = 0, $typestr24 = 0, $6 = 0, $call25 = 0, $call27 = 0, $tobool28 = 0, $call33 = 0, $cmp34 = 0, $7 = 0, $quality37 = 0, $8 = 0, $cmp38 = 0, $next41 = 0, $call43 = 0, $9 = 0, $10 = 0, $next44 = 0, $typestr45 = 0, $11 = 0, $quality46 = 0, $12 = 0, $package47 = 0, $13 = 0, $typeptr48 = 0, $14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pins = __stackBase__ | 0;
    $pnxt = __stackBase__ + 64 | 0;
    $arraydecay = $pins | 0;
    $call = _strncpy($arraydecay | 0, $typestr | 0, 63) | 0;
    $call2 = _strchr($arraydecay | 0, 58) | 0;
    $tobool = ($call2 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP8[$call2] = 0;
    label = 4;
    break;
   case 4:
    $arrayidx = $gvc + 60 + ($api << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tobool519 = ($0 | 0) == 0;
    if ($tobool519) {
      $pnext_0_lcssa = $arrayidx;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $arraydecay6 = $pnxt | 0;
    $pnext_020 = $arrayidx;
    $1 = $0;
    label = 7;
    break;
   case 6:
    $arraydecay23 = $pnxt | 0;
    $pnext_1 = $pnext_0_lcssa;
    label = 11;
    break;
   case 7:
    $typestr7 = $1 + 4 | 0;
    $2 = HEAP32[$typestr7 >> 2] | 0;
    $call8 = _strncpy($arraydecay6 | 0, $2 | 0, 63) | 0;
    $call10 = _strchr($arraydecay6 | 0, 58) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    HEAP8[$call10] = 0;
    label = 9;
    break;
   case 9:
    $call16 = _strcmp($arraydecay | 0, $arraydecay6 | 0) | 0;
    $cmp17 = ($call16 | 0) < 1;
    if ($cmp17) {
      $pnext_0_lcssa = $pnext_020;
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $3 = HEAP32[$pnext_020 >> 2] | 0;
    $next = $3 | 0;
    $4 = HEAP32[$next >> 2] | 0;
    $tobool5 = ($4 | 0) == 0;
    if ($tobool5) {
      $pnext_0_lcssa = $next;
      label = 6;
      break;
    } else {
      $pnext_020 = $next;
      $1 = $4;
      label = 7;
      break;
    }
   case 11:
    $5 = HEAP32[$pnext_1 >> 2] | 0;
    $tobool21 = ($5 | 0) == 0;
    if ($tobool21) {
      label = 16;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $typestr24 = $5 + 4 | 0;
    $6 = HEAP32[$typestr24 >> 2] | 0;
    $call25 = _strncpy($arraydecay23 | 0, $6 | 0, 63) | 0;
    $call27 = _strchr($arraydecay23 | 0, 58) | 0;
    $tobool28 = ($call27 | 0) == 0;
    if ($tobool28) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    HEAP8[$call27] = 0;
    label = 14;
    break;
   case 14:
    $call33 = _strcmp($arraydecay | 0, $arraydecay23 | 0) | 0;
    $cmp34 = ($call33 | 0) == 0;
    if ($cmp34) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $7 = HEAP32[$pnext_1 >> 2] | 0;
    $quality37 = $7 + 8 | 0;
    $8 = HEAP32[$quality37 >> 2] | 0;
    $cmp38 = ($8 | 0) > ($quality | 0);
    $next41 = $7 | 0;
    if ($cmp38) {
      $pnext_1 = $next41;
      label = 11;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call43 = _gmalloc(20) | 0;
    $9 = $call43;
    $10 = HEAP32[$pnext_1 >> 2] | 0;
    $next44 = $call43;
    HEAP32[$next44 >> 2] = $10;
    HEAP32[$pnext_1 >> 2] = $9;
    $typestr45 = $call43 + 4 | 0;
    $11 = $typestr45;
    HEAP32[$11 >> 2] = $typestr;
    $quality46 = $call43 + 8 | 0;
    $12 = $quality46;
    HEAP32[$12 >> 2] = $quality;
    $package47 = $call43 + 12 | 0;
    $13 = $package47;
    HEAP32[$13 >> 2] = $package;
    $typeptr48 = $call43 + 16 | 0;
    $14 = $typeptr48;
    HEAP32[$14 >> 2] = $typeptr;
    STACKTOP = __stackBase__;
    return 1;
  }
  return 0;
}
function _gvplugin_library_load($gvc, $path) {
  $gvc = $gvc | 0;
  $path = $path | 0;
  var __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  _agerr(1, 104968, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
  STACKTOP = __stackBase__;
  return 0;
}
function _gvplugin_load($gvc, $api, $str) {
  $gvc = $gvc | 0;
  $api = $api | 0;
  $str = $str | 0;
  var $reqtyp = 0, $typ = 0, $api_off = 0, $0 = 0, $apidep_0 = 0, $arraydecay = 0, $call = 0, $call6 = 0, $tobool = 0, $incdec_ptr = 0, $call8 = 0, $tobool9 = 0, $incdec_ptr11 = 0, $reqdep_0 = 0, $reqpkg_0 = 0, $arrayidx = 0, $1 = 0, $tobool1658 = 0, $arraydecay17 = 0, $tobool32 = 0, $tobool38 = 0, $cmp45 = 0, $2 = 0, $pnext_059 = 0, $typestr = 0, $3 = 0, $call18 = 0, $call20 = 0, $tobool21 = 0, $incdec_ptr23 = 0, $dep_0 = 0, $call27 = 0, $tobool28 = 0, $tobool31_not = 0, $or_cond = 0, $call34 = 0, $tobool35 = 0, $4 = 0, $package = 0, $5 = 0, $name = 0, $6 = 0, $call40 = 0, $cmp41 = 0, $or_cond53 = 0, $call47 = 0, $tobool48 = 0, $7 = 0, $next = 0, $8 = 0, $tobool16 = 0, $_pr = 0, $tobool53 = 0, $typeptr = 0, $9 = 0, $cmp55 = 0, $call58 = 0, $10 = 0, $cmp96 = 0, $_ = 0, $tobool99 = 0, $verbose102 = 0, $11 = 0, $cmp103 = 0, $12 = 0, $arrayidx105 = 0, $13 = 0, $typestr106 = 0, $14 = 0, $package107 = 0, $15 = 0, $name108 = 0, $16 = 0, $call109 = 0, $rv_056 = 0, $arrayidx112 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $reqtyp = __stackBase__ | 0;
    $typ = __stackBase__ + 64 | 0;
    $api_off = $api - 3 | 0;
    $0 = $api_off >>> 0 < 2;
    $apidep_0 = $0 ? 0 : $api;
    $arraydecay = $reqtyp | 0;
    $call = _strncpy($arraydecay | 0, $str | 0, 63) | 0;
    $call6 = _strchr($arraydecay | 0, 58) | 0;
    $tobool = ($call6 | 0) == 0;
    if ($tobool) {
      $reqpkg_0 = 0;
      $reqdep_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $incdec_ptr = $call6 + 1 | 0;
    HEAP8[$call6] = 0;
    $call8 = _strchr($incdec_ptr | 0, 58) | 0;
    $tobool9 = ($call8 | 0) == 0;
    if ($tobool9) {
      $reqpkg_0 = 0;
      $reqdep_0 = $incdec_ptr;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr11 = $call8 + 1 | 0;
    HEAP8[$call8] = 0;
    $reqpkg_0 = $incdec_ptr11;
    $reqdep_0 = $incdec_ptr;
    label = 5;
    break;
   case 5:
    $arrayidx = $gvc + 60 + ($api << 2) | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $tobool1658 = ($1 | 0) == 0;
    if ($tobool1658) {
      $rv_056 = 0;
      label = 23;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $arraydecay17 = $typ | 0;
    $tobool32 = ($reqdep_0 | 0) == 0;
    $tobool38 = ($reqpkg_0 | 0) == 0;
    $cmp45 = ($apidep_0 | 0) == ($api | 0);
    $pnext_059 = $arrayidx;
    $2 = $1;
    label = 7;
    break;
   case 7:
    $typestr = $2 + 4 | 0;
    $3 = HEAP32[$typestr >> 2] | 0;
    $call18 = _strncpy($arraydecay17 | 0, $3 | 0, 63) | 0;
    $call20 = _strchr($arraydecay17 | 0, 58) | 0;
    $tobool21 = ($call20 | 0) == 0;
    if ($tobool21) {
      $dep_0 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $incdec_ptr23 = $call20 + 1 | 0;
    HEAP8[$call20] = 0;
    $dep_0 = $incdec_ptr23;
    label = 9;
    break;
   case 9:
    $call27 = _strcmp($arraydecay17 | 0, $arraydecay | 0) | 0;
    $tobool28 = ($call27 | 0) == 0;
    if ($tobool28) {
      label = 10;
      break;
    } else {
      label = 16;
      break;
    }
   case 10:
    $tobool31_not = ($dep_0 | 0) == 0;
    $or_cond = $tobool31_not | $tobool32;
    if ($or_cond) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call34 = _strcmp($dep_0 | 0, $reqdep_0 | 0) | 0;
    $tobool35 = ($call34 | 0) == 0;
    if ($tobool35) {
      label = 12;
      break;
    } else {
      label = 16;
      break;
    }
   case 12:
    if ($tobool38) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $4 = HEAP32[$pnext_059 >> 2] | 0;
    $package = $4 + 12 | 0;
    $5 = HEAP32[$package >> 2] | 0;
    $name = $5 + 8 | 0;
    $6 = HEAP32[$name >> 2] | 0;
    $call40 = _strcmp($reqpkg_0 | 0, $6 | 0) | 0;
    $cmp41 = ($call40 | 0) == 0;
    if ($cmp41) {
      label = 14;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $or_cond53 = $tobool31_not | $cmp45;
    if ($or_cond53) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $call47 = _gvplugin_load($gvc, $apidep_0, $dep_0) | 0;
    $tobool48 = ($call47 | 0) == 0;
    if ($tobool48) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $7 = HEAP32[$pnext_059 >> 2] | 0;
    $next = $7 | 0;
    $8 = HEAP32[$next >> 2] | 0;
    $tobool16 = ($8 | 0) == 0;
    if ($tobool16) {
      $rv_056 = 0;
      label = 23;
      break;
    } else {
      $pnext_059 = $next;
      $2 = $8;
      label = 7;
      break;
    }
   case 17:
    $_pr = HEAP32[$pnext_059 >> 2] | 0;
    $tobool53 = ($_pr | 0) == 0;
    if ($tobool53) {
      $rv_056 = 0;
      label = 23;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $typeptr = $_pr + 16 | 0;
    $9 = HEAP32[$typeptr >> 2] | 0;
    $cmp55 = ($9 | 0) == 0;
    if ($cmp55) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $call58 = _gvplugin_library_load(0, 0) | 0;
    label = 20;
    break;
   case 20:
    $10 = HEAP32[$typeptr >> 2] | 0;
    $cmp96 = ($10 | 0) == 0;
    $_ = $cmp96 ? 0 : $_pr;
    $tobool99 = ($_ | 0) == 0;
    if ($tobool99) {
      $rv_056 = 0;
      label = 23;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $verbose102 = $gvc + 8 | 0;
    $11 = HEAP32[$verbose102 >> 2] | 0;
    $cmp103 = ($11 | 0) > 0;
    if ($cmp103) {
      label = 22;
      break;
    } else {
      $rv_056 = $_;
      label = 23;
      break;
    }
   case 22:
    $12 = HEAP32[_stderr >> 2] | 0;
    $arrayidx105 = 88456 + ($api << 2) | 0;
    $13 = HEAP32[$arrayidx105 >> 2] | 0;
    $typestr106 = $_ + 4 | 0;
    $14 = HEAP32[$typestr106 >> 2] | 0;
    $package107 = $_ + 12 | 0;
    $15 = HEAP32[$package107 >> 2] | 0;
    $name108 = $15 + 8 | 0;
    $16 = HEAP32[$name108 >> 2] | 0;
    $call109 = _fprintf($12 | 0, 115448, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $13, HEAP32[tempInt + 8 >> 2] = $14, HEAP32[tempInt + 16 >> 2] = $16, tempInt) | 0) | 0;
    $rv_056 = $_;
    label = 23;
    break;
   case 23:
    $arrayidx112 = $gvc + 80 + ($api << 2) | 0;
    HEAP32[$arrayidx112 >> 2] = $rv_056;
    STACKTOP = __stackBase__;
    return $rv_056 | 0;
  }
  return 0;
}
function _gvplugin_list($gvc, $api, $str) {
  $gvc = $gvc | 0;
  $api = $api | 0;
  $str = $str | 0;
  var $_b = 0, $call = 0, $call3 = 0, $tobool4 = 0, $arrayidx29 = 0, $incdec_ptr = 0, $arrayidx = 0, $tobool7 = 0, $0 = 0, $tobool940 = 0, $1 = 0, $new_042 = 0, $pnext_041 = 0, $typestr = 0, $2 = 0, $call10 = 0, $call11 = 0, $tobool12 = 0, $3 = 0, $tobool17 = 0, $call18 = 0, $cmp19 = 0, $4 = 0, $5 = 0, $cmp21 = 0, $call22 = 0, $6 = 0, $incdec_ptr23 = 0, $7 = 0, $typestr24 = 0, $8 = 0, $call25 = 0, $9 = 0, $10 = 0, $cmp26 = 0, $call28 = 0, $11 = 0, $incdec_ptr32 = 0, $12 = 0, $package = 0, $13 = 0, $name = 0, $14 = 0, $call33 = 0, $new_1 = 0, $15 = 0, $next = 0, $16 = 0, $tobool9 = 0, $arrayidx31_ph = 0, $tobool36 = 0, $pnext_1_ph = 0, $new_3_ph = 0, $17 = 0, $tobool3935 = 0, $18 = 0, $new_338 = 0, $typestr_last_037 = 0, $pnext_136 = 0, $typestr41 = 0, $19 = 0, $call42 = 0, $call43 = 0, $tobool44 = 0, $tobool48 = 0, $call50 = 0, $cmp51 = 0, $20 = 0, $21 = 0, $cmp53 = 0, $call55 = 0, $22 = 0, $incdec_ptr59 = 0, $call60 = 0, $new_433 = 0, $23 = 0, $next66 = 0, $24 = 0, $tobool39 = 0, $tobool68 = 0, $new_3_lcssa48 = 0, $new_3_lcssa47 = 0, $tobool72 = 0, $25 = 0, $26 = 0, $cmp74 = 0, $call76 = 0, $27 = 0, $28 = 0, $bp_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $_b = HEAP8[14384] | 0;
    if ($_b) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _agxbinit(14368, 0, 0);
    HEAP8[14384] = 1;
    label = 4;
    break;
   case 4:
    $call = _strdup($str | 0) | 0;
    $call3 = _strchr($call | 0, 58) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $arrayidx29 = $gvc + 60 + ($api << 2) | 0;
    $arrayidx31_ph = $arrayidx29;
    label = 19;
    break;
   case 6:
    $incdec_ptr = $call3 + 1 | 0;
    HEAP8[$call3] = 0;
    $arrayidx = $gvc + 60 + ($api << 2) | 0;
    $tobool7 = ($incdec_ptr | 0) == 0;
    if ($tobool7) {
      $arrayidx31_ph = $arrayidx;
      label = 19;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tobool940 = ($0 | 0) == 0;
    if ($tobool940) {
      label = 8;
      break;
    } else {
      $pnext_041 = $arrayidx;
      $new_042 = 1;
      $1 = $0;
      label = 9;
      break;
    }
   case 8:
    _free($call);
    $new_3_ph = 1;
    $pnext_1_ph = $arrayidx;
    label = 21;
    break;
   case 9:
    $typestr = $1 + 4 | 0;
    $2 = HEAP32[$typestr >> 2] | 0;
    $call10 = _strdup($2 | 0) | 0;
    $call11 = _strchr($call10 | 0, 58) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP8[$call11] = 0;
    label = 11;
    break;
   case 11:
    $3 = HEAP8[$call] | 0;
    $tobool17 = $3 << 24 >> 24 == 0;
    if ($tobool17) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call18 = _strcasecmp($call, $call10) | 0;
    $cmp19 = ($call18 | 0) == 0;
    if ($cmp19) {
      label = 13;
      break;
    } else {
      $new_1 = $new_042;
      label = 18;
      break;
    }
   case 13:
    $4 = HEAP32[3593] | 0;
    $5 = HEAP32[3594] | 0;
    $cmp21 = $4 >>> 0 < $5 >>> 0;
    if ($cmp21) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call22 = _agxbmore(14368, 1) | 0;
    label = 15;
    break;
   case 15:
    $6 = HEAP32[3593] | 0;
    $incdec_ptr23 = $6 + 1 | 0;
    HEAP32[3593] = $incdec_ptr23;
    HEAP8[$6] = 32;
    $7 = HEAP32[$pnext_041 >> 2] | 0;
    $typestr24 = $7 + 4 | 0;
    $8 = HEAP32[$typestr24 >> 2] | 0;
    $call25 = _agxbput(14368, $8) | 0;
    $9 = HEAP32[3593] | 0;
    $10 = HEAP32[3594] | 0;
    $cmp26 = $9 >>> 0 < $10 >>> 0;
    if ($cmp26) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call28 = _agxbmore(14368, 1) | 0;
    label = 17;
    break;
   case 17:
    $11 = HEAP32[3593] | 0;
    $incdec_ptr32 = $11 + 1 | 0;
    HEAP32[3593] = $incdec_ptr32;
    HEAP8[$11] = 58;
    $12 = HEAP32[$pnext_041 >> 2] | 0;
    $package = $12 + 12 | 0;
    $13 = HEAP32[$package >> 2] | 0;
    $name = $13 + 8 | 0;
    $14 = HEAP32[$name >> 2] | 0;
    $call33 = _agxbput(14368, $14) | 0;
    $new_1 = 0;
    label = 18;
    break;
   case 18:
    _free($call10);
    $15 = HEAP32[$pnext_041 >> 2] | 0;
    $next = $15 | 0;
    $16 = HEAP32[$next >> 2] | 0;
    $tobool9 = ($16 | 0) == 0;
    if ($tobool9) {
      label = 20;
      break;
    } else {
      $pnext_041 = $next;
      $new_042 = $new_1;
      $1 = $16;
      label = 9;
      break;
    }
   case 19:
    _free($call);
    $new_3_ph = 1;
    $pnext_1_ph = $arrayidx31_ph;
    label = 21;
    break;
   case 20:
    _free($call);
    $tobool36 = $new_1 << 24 >> 24 == 0;
    if ($tobool36) {
      label = 34;
      break;
    } else {
      $new_3_ph = $new_1;
      $pnext_1_ph = $arrayidx;
      label = 21;
      break;
    }
   case 21:
    $17 = HEAP32[$pnext_1_ph >> 2] | 0;
    $tobool3935 = ($17 | 0) == 0;
    if ($tobool3935) {
      $new_3_lcssa48 = $new_3_ph;
      label = 32;
      break;
    } else {
      $pnext_136 = $pnext_1_ph;
      $typestr_last_037 = 0;
      $new_338 = $new_3_ph;
      $18 = $17;
      label = 22;
      break;
    }
   case 22:
    $typestr41 = $18 + 4 | 0;
    $19 = HEAP32[$typestr41 >> 2] | 0;
    $call42 = _strdup($19 | 0) | 0;
    $call43 = _strchr($call42 | 0, 58) | 0;
    $tobool44 = ($call43 | 0) == 0;
    if ($tobool44) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    HEAP8[$call43] = 0;
    label = 24;
    break;
   case 24:
    $tobool48 = ($typestr_last_037 | 0) != 0;
    if ($tobool48) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $call50 = _strcasecmp($typestr_last_037, $call42) | 0;
    $cmp51 = ($call50 | 0) == 0;
    if ($cmp51) {
      $new_433 = $new_338;
      label = 30;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $20 = HEAP32[3593] | 0;
    $21 = HEAP32[3594] | 0;
    $cmp53 = $20 >>> 0 < $21 >>> 0;
    if ($cmp53) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $call55 = _agxbmore(14368, 1) | 0;
    label = 28;
    break;
   case 28:
    $22 = HEAP32[3593] | 0;
    $incdec_ptr59 = $22 + 1 | 0;
    HEAP32[3593] = $incdec_ptr59;
    HEAP8[$22] = 32;
    $call60 = _agxbput(14368, $call42) | 0;
    if ($tobool48) {
      $new_433 = 0;
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    _free($typestr_last_037);
    $new_433 = 0;
    label = 30;
    break;
   case 30:
    $23 = HEAP32[$pnext_136 >> 2] | 0;
    $next66 = $23 | 0;
    $24 = HEAP32[$next66 >> 2] | 0;
    $tobool39 = ($24 | 0) == 0;
    if ($tobool39) {
      label = 31;
      break;
    } else {
      $pnext_136 = $next66;
      $typestr_last_037 = $call42;
      $new_338 = $new_433;
      $18 = $24;
      label = 22;
      break;
    }
   case 31:
    $tobool68 = ($call42 | 0) == 0;
    if ($tobool68) {
      $new_3_lcssa48 = $new_433;
      label = 32;
      break;
    } else {
      $new_3_lcssa47 = $new_433;
      label = 33;
      break;
    }
   case 32:
    _free(0);
    $new_3_lcssa47 = $new_3_lcssa48;
    label = 33;
    break;
   case 33:
    $tobool72 = $new_3_lcssa47 << 24 >> 24 == 0;
    if ($tobool72) {
      label = 34;
      break;
    } else {
      $bp_0 = 110504;
      label = 37;
      break;
    }
   case 34:
    $25 = HEAP32[3593] | 0;
    $26 = HEAP32[3594] | 0;
    $cmp74 = $25 >>> 0 < $26 >>> 0;
    if ($cmp74) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $call76 = _agxbmore(14368, 1) | 0;
    label = 36;
    break;
   case 36:
    $27 = HEAP32[3593] | 0;
    HEAP8[$27] = 0;
    $28 = HEAP32[3592] | 0;
    HEAP32[3593] = $28;
    $bp_0 = $28;
    label = 37;
    break;
   case 37:
    return $bp_0 | 0;
  }
  return 0;
}
function _gvrender_select($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $gvc1 = 0, $0 = 0, $call = 0, $arrayidx = 0, $1 = 0, $tobool = 0, $typeptr2 = 0, $2 = 0, $engine = 0, $3 = 0, $4 = 0, $engine3 = 0, $features = 0, $5 = 0, $6 = 0, $features5 = 0, $id = 0, $7 = 0, $id7 = 0, $typestr = 0, $8 = 0, $type = 0, $9 = 0, $flags = 0, $10 = 0, $flags11 = 0, $11 = 0, $or = 0, $arrayidx13 = 0, $12 = 0, $tobool14 = 0, $typeptr16 = 0, $13 = 0, $engine17 = 0, $14 = 0, $15 = 0, $engine18 = 0, $features19 = 0, $16 = 0, $17 = 0, $features21 = 0, $typestr22 = 0, $18 = 0, $type24 = 0, $19 = 0, $flags27 = 0, $20 = 0, $21 = 0, $or29 = 0, $22 = 0, $tobool32 = 0, $id34 = 0, $23 = 0, $id36 = 0, $24 = 0, $id41 = 0, $engine45 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $call = _gvplugin_load($0, 3, $str) | 0;
    $arrayidx = $0 + 92 | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      $retval_0 = 999;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $typeptr2 = $1 + 16 | 0;
    $2 = HEAP32[$typeptr2 >> 2] | 0;
    $engine = $2 + 12 | 0;
    $3 = HEAP32[$engine >> 2] | 0;
    $4 = $3;
    $engine3 = $job + 76 | 0;
    HEAP32[$engine3 >> 2] = $4;
    $features = $2 + 16 | 0;
    $5 = HEAP32[$features >> 2] | 0;
    $6 = $5;
    $features5 = $job + 84 | 0;
    HEAP32[$features5 >> 2] = $6;
    $id = $2 | 0;
    $7 = HEAP32[$id >> 2] | 0;
    $id7 = $job + 80 | 0;
    HEAP32[$id7 >> 2] = $7;
    $typestr = $1 + 4 | 0;
    $8 = HEAP32[$typestr >> 2] | 0;
    $type = $job + 88 | 0;
    HEAP32[$type >> 2] = $8;
    $9 = HEAP32[$features5 >> 2] | 0;
    $flags = $9 | 0;
    $10 = HEAP32[$flags >> 2] | 0;
    $flags11 = $job + 152 | 0;
    $11 = HEAP32[$flags11 >> 2] | 0;
    $or = $11 | $10;
    HEAP32[$flags11 >> 2] = $or;
    $arrayidx13 = $0 + 80 | 0;
    $12 = HEAP32[$arrayidx13 >> 2] | 0;
    $tobool14 = ($12 | 0) == 0;
    if ($tobool14) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $typeptr16 = $12 + 16 | 0;
    $13 = HEAP32[$typeptr16 >> 2] | 0;
    $engine17 = $13 + 12 | 0;
    $14 = HEAP32[$engine17 >> 2] | 0;
    $15 = $14;
    $engine18 = $job + 60 | 0;
    HEAP32[$engine18 >> 2] = $15;
    $features19 = $13 + 16 | 0;
    $16 = HEAP32[$features19 >> 2] | 0;
    $17 = $16;
    $features21 = $job + 68 | 0;
    HEAP32[$features21 >> 2] = $17;
    $typestr22 = $12 + 4 | 0;
    $18 = HEAP32[$typestr22 >> 2] | 0;
    $type24 = $job + 72 | 0;
    HEAP32[$type24 >> 2] = $18;
    $19 = HEAP32[$features21 >> 2] | 0;
    $flags27 = $19 | 0;
    $20 = HEAP32[$flags27 >> 2] | 0;
    $21 = HEAP32[$flags11 >> 2] | 0;
    $or29 = $21 | $20;
    HEAP32[$flags11 >> 2] = $or29;
    $22 = HEAP32[$engine3 >> 2] | 0;
    $tobool32 = ($22 | 0) == 0;
    if ($tobool32) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $id34 = $13 | 0;
    $23 = HEAP32[$id34 >> 2] | 0;
    $id36 = $job + 64 | 0;
    HEAP32[$id36 >> 2] = $23;
    $retval_0 = 300;
    label = 8;
    break;
   case 6:
    $24 = HEAP32[$id7 >> 2] | 0;
    $id41 = $job + 64 | 0;
    HEAP32[$id41 >> 2] = $24;
    $retval_0 = 300;
    label = 8;
    break;
   case 7:
    $engine45 = $job + 60 | 0;
    HEAP32[$engine45 >> 2] = 0;
    $retval_0 = 999;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvrender_begin_job($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $1 = 0, $call = 0, $tobool = 0, $tobool1 = 0, $begin_job = 0, $2 = 0, $tobool3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $1 = $job;
    $call = _gvdevice_initialize($1) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 6;
      break;
    }
   case 3:
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $begin_job = $0 | 0;
    $2 = HEAP32[$begin_job >> 2] | 0;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    FUNCTION_TABLE_vi[$2 & 1023]($job);
    $retval_0 = 0;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvrender_end_job($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_job = 0, $1 = 0, $tobool1 = 0, $gvc = 0, $2 = 0, $lib = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_job = $0 + 4 | 0;
    $1 = HEAP32[$end_job >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    $gvc = $job | 0;
    $2 = HEAP32[$gvc >> 2] | 0;
    $lib = $2 + 24 | 0;
    HEAP32[$lib >> 2] = 0;
    $3 = $job;
    _gvdevice_finalize($3);
    return;
  }
}
function _gvrender_begin_graph($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $gvc1 = 0, $0 = 0, $engine = 0, $1 = 0, $tobool = 0, $begin_graph = 0, $2 = 0, $tobool2 = 0, $3 = 0, $call = 0, $cmp = 0, $4 = 0, $tobool5 = 0, $features = 0, $5 = 0, $bgcolor = 0, $resolve_color = 0, $6 = 0, $tobool8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc1 = $job | 0;
    $0 = HEAP32[$gvc1 >> 2] | 0;
    $engine = $job + 60 | 0;
    $1 = HEAP32[$engine >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_graph = $1 + 8 | 0;
    $2 = HEAP32[$begin_graph >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$2 & 1023]($job);
    label = 5;
    break;
   case 5:
    $3 = $g | 0;
    $call = _agget($3, 90304) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = HEAP8[$call] | 0;
    $tobool5 = $4 << 24 >> 24 == 0;
    if ($tobool5) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $features = $job + 68 | 0;
    $5 = HEAP32[$features >> 2] | 0;
    $bgcolor = $0 + 312 | 0;
    _gvrender_resolve_color($5, $call, $bgcolor);
    $resolve_color = $1 + 92 | 0;
    $6 = HEAP32[$resolve_color >> 2] | 0;
    $tobool8 = ($6 | 0) == 0;
    if ($tobool8) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    FUNCTION_TABLE_vii[$6 & 1023]($job, $bgcolor);
    label = 9;
    break;
   case 9:
    return;
  }
}
function _gvrender_resolve_color($features, $name, $color) {
  $features = $features | 0;
  $name = $name | 0;
  $color = $color | 0;
  var $tok = 0, $string = 0, $type = 0, $call = 0, $knowncolors = 0, $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $sz_knowncolors = 0, $3 = 0, $call2 = 0, $cmp = 0, $color_type = 0, $4 = 0, $call3 = 0, $call8 = 0, $add = 0, $call9 = 0, $call10 = 0, $call11 = 0, $tobool12 = 0, $call14 = 0, $call15 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tok = __stackBase__ | 0;
    $string = $color;
    HEAP32[$string >> 2] = $name;
    $type = $color + 32 | 0;
    HEAP32[$type >> 2] = 5;
    $call = _canontoken($name) | 0;
    HEAP32[$tok >> 2] = $call;
    $knowncolors = $features + 16 | 0;
    $0 = HEAP32[$knowncolors >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $tok;
    $2 = $0;
    $sz_knowncolors = $features + 20 | 0;
    $3 = HEAP32[$sz_knowncolors >> 2] | 0;
    $call2 = _bsearch($1 | 0, $2 | 0, $3 | 0, 4, 254) | 0;
    $cmp = ($call2 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 9;
      break;
    }
   case 4:
    $color_type = $features + 24 | 0;
    $4 = HEAP32[$color_type >> 2] | 0;
    $call3 = _colorxlate($name, $color, $4) | 0;
    if (($call3 | 0) == 1) {
      label = 5;
      break;
    } else if (($call3 | 0) == 0) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $call8 = _strlen($name | 0) | 0;
    $add = $call8 + 16 | 0;
    $call9 = _gmalloc($add) | 0;
    $call10 = _sprintf($call9 | 0, 146272, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $name, tempInt) | 0) | 0;
    $call11 = _emit_once($call9) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call14 = _agerr(0, 143304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $name, tempInt) | 0) | 0;
    label = 7;
    break;
   case 7:
    _free($call9);
    label = 9;
    break;
   case 8:
    $call15 = _agerr(1, 139648, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvrender_end_graph($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_graph = 0, $1 = 0, $tobool1 = 0, $2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_graph = $0 + 12 | 0;
    $1 = HEAP32[$end_graph >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    $2 = $job;
    _gvdevice_format($2);
    return;
  }
}
function _gvrender_begin_page($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_page = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_page = $0 + 24 | 0;
    $1 = HEAP32[$begin_page >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_page($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_page = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_page = $0 + 28 | 0;
    $1 = HEAP32[$end_page >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_layer($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_layer = 0, $1 = 0, $tobool1 = 0, $layerNum = 0, $2 = 0, $gvc = 0, $3 = 0, $layerIDs = 0, $4 = 0, $arrayidx = 0, $5 = 0, $numLayers = 0, $6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_layer = $0 + 16 | 0;
    $1 = HEAP32[$begin_layer >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $layerNum = $job + 160 | 0;
    $2 = HEAP32[$layerNum >> 2] | 0;
    $gvc = $job | 0;
    $3 = HEAP32[$gvc >> 2] | 0;
    $layerIDs = $3 + 280 | 0;
    $4 = HEAP32[$layerIDs >> 2] | 0;
    $arrayidx = $4 + ($2 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $numLayers = $job + 156 | 0;
    $6 = HEAP32[$numLayers >> 2] | 0;
    FUNCTION_TABLE_viiii[$1 & 1023]($job, $5, $2, $6);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_layer($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_layer = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_layer = $0 + 20 | 0;
    $1 = HEAP32[$end_layer >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_cluster($job, $sg) {
  $job = $job | 0;
  $sg = $sg | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_cluster = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_cluster = $0 + 32 | 0;
    $1 = HEAP32[$begin_cluster >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_cluster($job, $g) {
  $job = $job | 0;
  $g = $g | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_cluster = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_cluster = $0 + 36 | 0;
    $1 = HEAP32[$end_cluster >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_nodes($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_nodes = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_nodes = $0 + 40 | 0;
    $1 = HEAP32[$begin_nodes >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_nodes($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_nodes = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_nodes = $0 + 44 | 0;
    $1 = HEAP32[$end_nodes >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_edges($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_edges = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_edges = $0 + 48 | 0;
    $1 = HEAP32[$begin_edges >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_edges($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_edges = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_edges = $0 + 52 | 0;
    $1 = HEAP32[$end_edges >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_node($job, $n) {
  $job = $job | 0;
  $n = $n | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_node = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_node = $0 + 56 | 0;
    $1 = HEAP32[$begin_node >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_node($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_node = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_node = $0 + 60 | 0;
    $1 = HEAP32[$end_node >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_edge($job, $e) {
  $job = $job | 0;
  $e = $e | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_edge = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_edge = $0 + 64 | 0;
    $1 = HEAP32[$begin_edge >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_edge($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_edge = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_edge = $0 + 68 | 0;
    $1 = HEAP32[$end_edge >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_anchor($job, $href, $tooltip, $target, $id) {
  $job = $job | 0;
  $href = $href | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_anchor = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_anchor = $0 + 72 | 0;
    $1 = HEAP32[$begin_anchor >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_viiiii[$1 & 1023]($job, $href, $tooltip, $target, $id);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_anchor($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_anchor = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_anchor = $0 + 76 | 0;
    $1 = HEAP32[$end_anchor >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_begin_label($job, $type) {
  $job = $job | 0;
  $type = $type | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $begin_label = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $begin_label = $0 + 80 | 0;
    $1 = HEAP32[$begin_label >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vii[$1 & 1023]($job, $type);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_end_label($job) {
  $job = $job | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $end_label = 0, $1 = 0, $tobool1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $end_label = $0 + 84 | 0;
    $1 = HEAP32[$end_label >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    FUNCTION_TABLE_vi[$1 & 1023]($job);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvrender_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $PF = 0, $tmp = 0, $engine = 0, $0 = 0, $str = 0, $1 = 0, $tobool = 0, $2 = 0, $tobool2 = 0, $obj = 0, $3 = 0, $tobool4 = 0, $pen = 0, $4 = 0, $cmp = 0, $flags = 0, $5 = 0, $and = 0, $tobool7 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $tobool9 = 0, $textpara = 0, $10 = 0, $tobool11 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $PF = __stackBase__ | 0;
    $tmp = __stackBase__ + 16 | 0;
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $str = $para | 0;
    $1 = HEAP32[$str >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP8[$1] | 0;
    $tobool2 = $2 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 12;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $obj = $job + 16 | 0;
    $3 = HEAP32[$obj >> 2] | 0;
    $tobool4 = ($3 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $pen = $3 + 96 | 0;
    $4 = HEAP32[$pen >> 2] | 0;
    $cmp = ($4 | 0) == 0;
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $flags = $job + 152 | 0;
    $5 = HEAP32[$flags >> 2] | 0;
    $and = $5 & 8192;
    $tobool7 = ($and | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $6 = $PF;
    $7 = $p;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    label = 9;
    break;
   case 8:
    _gvrender_ptf($tmp, $job, $p);
    $8 = $PF;
    $9 = $tmp;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    label = 9;
    break;
   case 9:
    $tobool9 = ($0 | 0) == 0;
    if ($tobool9) {
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $textpara = $0 + 88 | 0;
    $10 = HEAP32[$textpara >> 2] | 0;
    $tobool11 = ($10 | 0) == 0;
    if ($tobool11) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    FUNCTION_TABLE_viii[$10 & 1023]($job, $PF, $para);
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvrender_set_pencolor($job, $name) {
  $job = $job | 0;
  $name = $name | 0;
  var $engine = 0, $0 = 0, $obj = 0, $1 = 0, $pencolor = 0, $strchr = 0, $tobool = 0, $tobool1 = 0, $features = 0, $2 = 0, $resolve_color = 0, $3 = 0, $tobool4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $obj = $job + 16 | 0;
    $1 = HEAP32[$obj >> 2] | 0;
    $pencolor = $1 + 16 | 0;
    $strchr = _strchr($name | 0, 58) | 0;
    $tobool = ($strchr | 0) != 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP8[$strchr] = 0;
    label = 4;
    break;
   case 4:
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $features = $job + 68 | 0;
    $2 = HEAP32[$features >> 2] | 0;
    _gvrender_resolve_color($2, $name, $pencolor);
    $resolve_color = $0 + 92 | 0;
    $3 = HEAP32[$resolve_color >> 2] | 0;
    $tobool4 = ($3 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    FUNCTION_TABLE_vii[$3 & 1023]($job, $pencolor);
    label = 7;
    break;
   case 7:
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAP8[$strchr] = 58;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _gvrender_set_fillcolor($job, $name) {
  $job = $job | 0;
  $name = $name | 0;
  var $engine = 0, $0 = 0, $obj = 0, $1 = 0, $fillcolor = 0, $strchr = 0, $tobool = 0, $tobool1 = 0, $features = 0, $2 = 0, $resolve_color = 0, $3 = 0, $tobool4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $obj = $job + 16 | 0;
    $1 = HEAP32[$obj >> 2] | 0;
    $fillcolor = $1 + 56 | 0;
    $strchr = _strchr($name | 0, 58) | 0;
    $tobool = ($strchr | 0) != 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP8[$strchr] = 0;
    label = 4;
    break;
   case 4:
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $features = $job + 68 | 0;
    $2 = HEAP32[$features >> 2] | 0;
    _gvrender_resolve_color($2, $name, $fillcolor);
    $resolve_color = $0 + 92 | 0;
    $3 = HEAP32[$resolve_color >> 2] | 0;
    $tobool4 = ($3 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    FUNCTION_TABLE_vii[$3 & 1023]($job, $fillcolor);
    label = 7;
    break;
   case 7:
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAP8[$strchr] = 58;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _gvrender_set_style($job, $s) {
  $job = $job | 0;
  $s = $s | 0;
  var $engine = 0, $0 = 0, $obj1 = 0, $1 = 0, $rawstyle = 0, $tobool = 0, $tobool2 = 0, $or_cond = 0, $2 = 0, $tobool436 = 0, $pen = 0, $pen17 = 0, $pen27 = 0, $pen44 = 0, $penwidth = 0, $penwidth69 = 0, $fill = 0, $fill88 = 0, $3 = 0, $s_pn = 0, $incdec_ptr37 = 0, $4 = 0, $cmp = 0, $call = 0, $tobool7 = 0, $_pr = 0, $5 = 0, $cmp11 = 0, $call14 = 0, $tobool15 = 0, $6 = 0, $tobool4 = 0, $7 = 0, $cmp21 = 0, $call24 = 0, $tobool25 = 0, $_pr32 = 0, $8 = 0, $cmp31 = 0, $call34 = 0, $tobool35 = 0, $9 = 0, $cmp38 = 0, $call41 = 0, $tobool42 = 0, $_pr33 = 0, $10 = 0, $cmp48 = 0, $call51 = 0, $tobool52 = 0, $11 = 0, $cmp57 = 0, $call60 = 0, $tobool61 = 0, $p_0 = 0, $12 = 0, $tobool64 = 0, $incdec_ptr66 = 0, $call68 = 0.0, $_pr34 = 0, $13 = 0, $cmp73 = 0, $call76 = 0, $tobool77 = 0, $14 = 0, $cmp82 = 0, $call85 = 0, $tobool86 = 0, $call90 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $obj1 = $job + 16 | 0;
    $1 = HEAP32[$obj1 >> 2] | 0;
    $rawstyle = $1 + 112 | 0;
    HEAP32[$rawstyle >> 2] = $s;
    $tobool = ($0 | 0) == 0;
    $tobool2 = ($s | 0) == 0;
    $or_cond = $tobool | $tobool2;
    if ($or_cond) {
      label = 38;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$s >> 2] | 0;
    $tobool436 = ($2 | 0) == 0;
    if ($tobool436) {
      label = 38;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $pen = $1 + 96 | 0;
    $pen17 = $1 + 96 | 0;
    $pen27 = $1 + 96 | 0;
    $pen44 = $1 + 96 | 0;
    $penwidth = $1 + 104 | 0;
    $penwidth69 = $1 + 104 | 0;
    $fill = $1 + 100 | 0;
    $fill88 = $1 + 100 | 0;
    $s_pn = $s;
    $3 = $2;
    label = 5;
    break;
   case 5:
    $incdec_ptr37 = $s_pn + 4 | 0;
    $4 = HEAP8[$3] | 0;
    $cmp = $4 << 24 >> 24 == 115;
    if ($cmp) {
      label = 6;
      break;
    } else {
      $5 = $4;
      label = 9;
      break;
    }
   case 6:
    $call = _strcmp($3 | 0, 130512) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$pen >> 2] = 3;
    label = 12;
    break;
   case 8:
    $_pr = HEAP8[$3] | 0;
    $5 = $_pr;
    label = 9;
    break;
   case 9:
    $cmp11 = $5 << 24 >> 24 == 100;
    if ($cmp11) {
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    $call14 = _strcmp($3 | 0, 118464) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    HEAP32[$pen17 >> 2] = 1;
    label = 12;
    break;
   case 12:
    $6 = HEAP32[$incdec_ptr37 >> 2] | 0;
    $tobool4 = ($6 | 0) == 0;
    if ($tobool4) {
      label = 38;
      break;
    } else {
      $s_pn = $incdec_ptr37;
      $3 = $6;
      label = 5;
      break;
    }
   case 13:
    $7 = HEAP8[$3] | 0;
    $cmp21 = $7 << 24 >> 24 == 100;
    if ($cmp21) {
      label = 14;
      break;
    } else {
      $8 = $7;
      label = 17;
      break;
    }
   case 14:
    $call24 = _strcmp($3 | 0, 113072) | 0;
    $tobool25 = ($call24 | 0) == 0;
    if ($tobool25) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    HEAP32[$pen27 >> 2] = 2;
    label = 12;
    break;
   case 16:
    $_pr32 = HEAP8[$3] | 0;
    $8 = $_pr32;
    label = 17;
    break;
   case 17:
    $cmp31 = $8 << 24 >> 24 == 105;
    if ($cmp31) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $call34 = _strcmp($3 | 0, 108704) | 0;
    $tobool35 = ($call34 | 0) == 0;
    if ($tobool35) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $9 = HEAP8[$3] | 0;
    $cmp38 = $9 << 24 >> 24 == 105;
    if ($cmp38) {
      label = 20;
      break;
    } else {
      $10 = $9;
      label = 23;
      break;
    }
   case 20:
    $call41 = _strcmp($3 | 0, 104616) | 0;
    $tobool42 = ($call41 | 0) == 0;
    if ($tobool42) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    HEAP32[$pen44 >> 2] = 0;
    label = 12;
    break;
   case 22:
    $_pr33 = HEAP8[$3] | 0;
    $10 = $_pr33;
    label = 23;
    break;
   case 23:
    $cmp48 = $10 << 24 >> 24 == 98;
    if ($cmp48) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $call51 = _strcmp($3 | 0, 100424) | 0;
    $tobool52 = ($call51 | 0) == 0;
    if ($tobool52) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    HEAPF64[$penwidth >> 3] = 2.0;
    label = 12;
    break;
   case 26:
    $11 = HEAP8[$3] | 0;
    $cmp57 = $11 << 24 >> 24 == 115;
    if ($cmp57) {
      label = 27;
      break;
    } else {
      $13 = $11;
      label = 31;
      break;
    }
   case 27:
    $call60 = _strcmp($3 | 0, 96216) | 0;
    $tobool61 = ($call60 | 0) == 0;
    if ($tobool61) {
      $p_0 = $3;
      label = 28;
      break;
    } else {
      label = 30;
      break;
    }
   case 28:
    $12 = HEAP8[$p_0] | 0;
    $tobool64 = $12 << 24 >> 24 == 0;
    $incdec_ptr66 = $p_0 + 1 | 0;
    if ($tobool64) {
      label = 29;
      break;
    } else {
      $p_0 = $incdec_ptr66;
      label = 28;
      break;
    }
   case 29:
    $call68 = +_atof($incdec_ptr66);
    HEAPF64[$penwidth69 >> 3] = $call68;
    label = 12;
    break;
   case 30:
    $_pr34 = HEAP8[$3] | 0;
    $13 = $_pr34;
    label = 31;
    break;
   case 31:
    $cmp73 = $13 << 24 >> 24 == 102;
    if ($cmp73) {
      label = 32;
      break;
    } else {
      label = 34;
      break;
    }
   case 32:
    $call76 = _strcmp($3 | 0, 92800) | 0;
    $tobool77 = ($call76 | 0) == 0;
    if ($tobool77) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    HEAP32[$fill >> 2] = 1;
    label = 12;
    break;
   case 34:
    $14 = HEAP8[$3] | 0;
    $cmp82 = $14 << 24 >> 24 == 117;
    if ($cmp82) {
      label = 35;
      break;
    } else {
      label = 37;
      break;
    }
   case 35:
    $call85 = _strcmp($3 | 0, 162912) | 0;
    $tobool86 = ($call85 | 0) == 0;
    if ($tobool86) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    HEAP32[$fill88 >> 2] = 0;
    label = 12;
    break;
   case 37:
    $call90 = _agerr(0, 159472, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $3, tempInt) | 0) | 0;
    label = 12;
    break;
   case 38:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvrender_ellipse($job, $pf, $n, $filled) {
  $job = $job | 0;
  $pf = $pf | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $af = 0, $engine = 0, $0 = 0, $tobool = 0, $ellipse = 0, $1 = 0, $tobool1 = 0, $obj = 0, $2 = 0, $pen = 0, $3 = 0, $cmp = 0, $x = 0, $4 = 0.0, $arrayidx3 = 0, $x4 = 0, $5 = 0.0, $add = 0.0, $div = 0.0, $arrayidx5 = 0, $x6 = 0, $y = 0, $6 = 0.0, $y9 = 0, $7 = 0.0, $add10 = 0.0, $div11 = 0.0, $y13 = 0, $arrayidx14 = 0, $8 = 0, $9 = 0, $flags = 0, $10 = 0, $and = 0, $tobool16 = 0, $call = 0, $11 = 0, $conv = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $af = __stackBase__ | 0;
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $ellipse = $0 + 96 | 0;
    $1 = HEAP32[$ellipse >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $obj = $job + 16 | 0;
    $2 = HEAP32[$obj >> 2] | 0;
    $pen = $2 + 96 | 0;
    $3 = HEAP32[$pen >> 2] | 0;
    $cmp = ($3 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $x = $pf | 0;
    $4 = +HEAPF64[$x >> 3];
    $arrayidx3 = $pf + 16 | 0;
    $x4 = $arrayidx3 | 0;
    $5 = +HEAPF64[$x4 >> 3];
    $add = $4 + $5;
    $div = $add * .5;
    $arrayidx5 = $af | 0;
    $x6 = $af | 0;
    HEAPF64[$x6 >> 3] = $div;
    $y = $pf + 8 | 0;
    $6 = +HEAPF64[$y >> 3];
    $y9 = $pf + 24 | 0;
    $7 = +HEAPF64[$y9 >> 3];
    $add10 = $6 + $7;
    $div11 = $add10 * .5;
    $y13 = $af + 8 | 0;
    HEAPF64[$y13 >> 3] = $div11;
    $arrayidx14 = $af + 16 | 0;
    $8 = $arrayidx14;
    $9 = $arrayidx3;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $flags = $job + 152 | 0;
    $10 = HEAP32[$flags >> 2] | 0;
    $and = $10 & 8192;
    $tobool16 = ($and | 0) == 0;
    if ($tobool16) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call = _gvrender_ptf_A($job, $arrayidx5, $arrayidx5, 2) | 0;
    label = 7;
    break;
   case 7:
    $11 = HEAP32[$ellipse >> 2] | 0;
    $conv = $filled & 255;
    FUNCTION_TABLE_viii[$11 & 1023]($job, $arrayidx5, $conv);
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvrender_polygon($job, $af, $n, $filled) {
  $job = $job | 0;
  $af = $af | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $polygon = 0, $1 = 0, $tobool1 = 0, $obj = 0, $2 = 0, $pen = 0, $3 = 0, $cmp = 0, $flags = 0, $4 = 0, $and = 0, $tobool3 = 0, $conv = 0, $5 = 0, $cmp6 = 0, $add = 0, $6 = 0, $7 = 0, $mul = 0, $call = 0, $8 = 0, $9 = 0, $call9 = 0, $10 = 0, $11 = 0, $conv11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $polygon = $0 + 100 | 0;
    $1 = HEAP32[$polygon >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $obj = $job + 16 | 0;
    $2 = HEAP32[$obj >> 2] | 0;
    $pen = $2 + 96 | 0;
    $3 = HEAP32[$pen >> 2] | 0;
    $cmp = ($3 | 0) == 0;
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $flags = $job + 152 | 0;
    $4 = HEAP32[$flags >> 2] | 0;
    $and = $4 & 8192;
    $tobool3 = ($and | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $conv = $filled & 255;
    FUNCTION_TABLE_viiii[$1 & 1023]($job, $af, $n, $conv);
    label = 10;
    break;
   case 7:
    $5 = HEAP32[1052] | 0;
    $cmp6 = ($5 | 0) < ($n | 0);
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $add = $n + 10 | 0;
    HEAP32[1052] = $add;
    $6 = HEAP32[42146] | 0;
    $7 = $6;
    $mul = $add << 4;
    $call = _grealloc($7, $mul) | 0;
    $8 = $call;
    HEAP32[42146] = $8;
    label = 9;
    break;
   case 9:
    $9 = HEAP32[42146] | 0;
    $call9 = _gvrender_ptf_A($job, $af, $9, $n) | 0;
    $10 = HEAP32[$polygon >> 2] | 0;
    $11 = HEAP32[42146] | 0;
    $conv11 = $filled & 255;
    FUNCTION_TABLE_viiii[$10 & 1023]($job, $11, $n, $conv11);
    label = 10;
    break;
   case 10:
    return;
  }
}
function _gvrender_box($job, $B, $filled) {
  $job = $job | 0;
  $B = $B | 0;
  $filled = $filled | 0;
  var $A = 0, $0 = 0, $1 = 0, $arrayidx1 = 0, $2 = 0, $3 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  tempParam = $B;
  $B = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($B, tempParam, 32);
  $A = __stackBase__ | 0;
  $0 = $A;
  $1 = $B;
  HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
  HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
  HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
  HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
  $arrayidx1 = $A + 32 | 0;
  $2 = $arrayidx1;
  $3 = $B + 16 | 0;
  HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
  HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
  HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
  HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
  HEAPF64[$A + 16 >> 3] = +HEAPF64[$A >> 3];
  HEAPF64[$A + 24 >> 3] = +HEAPF64[$A + 40 >> 3];
  HEAPF64[$A + 48 >> 3] = +HEAPF64[$arrayidx1 >> 3];
  HEAPF64[$A + 56 >> 3] = +HEAPF64[$A + 8 >> 3];
  _gvrender_polygon($job, $A | 0, 4, $filled);
  STACKTOP = __stackBase__;
  return;
}
function _gvrender_set_penwidth($job, $penwidth) {
  $job = $job | 0;
  $penwidth = +$penwidth;
  var $engine = 0, $0 = 0, $tobool = 0, $obj = 0, $1 = 0, $penwidth1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj = $job + 16 | 0;
    $1 = HEAP32[$obj >> 2] | 0;
    $penwidth1 = $1 + 104 | 0;
    HEAPF64[$penwidth1 >> 3] = $penwidth;
    label = 4;
    break;
   case 4:
    return;
  }
}
function _gvusershape_size_dpi($agg_result, $us, $dpi) {
  $agg_result = $agg_result | 0;
  $us = $us | 0;
  $dpi = $dpi | 0;
  var $tobool = 0, $dpi1 = 0, $0 = 0, $cmp = 0, $conv = 0.0, $y4 = 0, $x5 = 0, $w = 0, $1 = 0, $mul = 0, $conv6 = 0.0, $x7 = 0, $2 = 0.0, $div = 0.0, $conv8 = 0, $h = 0, $3 = 0, $mul10 = 0, $conv11 = 0.0, $y12 = 0, $4 = 0.0, $div13 = 0.0, $conv14 = 0, $rv_sroa_1_0 = 0, $rv_sroa_0_0 = 0, $rv_sroa_0_0__idx = 0, $rv_sroa_1_4__idx1 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $dpi;
  $dpi = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$dpi >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$dpi + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$dpi + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$dpi + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($us | 0) == 0;
    if ($tobool) {
      $rv_sroa_0_0 = -1;
      $rv_sroa_1_0 = -1;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $dpi1 = $us + 48 | 0;
    $0 = HEAP32[$dpi1 >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = +($0 | 0);
    $y4 = $dpi + 8 | 0;
    HEAPF64[$y4 >> 3] = $conv;
    $x5 = $dpi | 0;
    HEAPF64[$x5 >> 3] = $conv;
    label = 5;
    break;
   case 5:
    $w = $us + 40 | 0;
    $1 = HEAP32[$w >> 2] | 0;
    $mul = $1 * 72 & -1;
    $conv6 = +($mul | 0);
    $x7 = $dpi | 0;
    $2 = +HEAPF64[$x7 >> 3];
    $div = $conv6 / $2;
    $conv8 = ~~$div;
    $h = $us + 44 | 0;
    $3 = HEAP32[$h >> 2] | 0;
    $mul10 = $3 * 72 & -1;
    $conv11 = +($mul10 | 0);
    $y12 = $dpi + 8 | 0;
    $4 = +HEAPF64[$y12 >> 3];
    $div13 = $conv11 / $4;
    $conv14 = ~~$div13;
    $rv_sroa_0_0 = $conv8;
    $rv_sroa_1_0 = $conv14;
    label = 6;
    break;
   case 6:
    $rv_sroa_0_0__idx = $agg_result | 0;
    HEAP32[$rv_sroa_0_0__idx >> 2] = $rv_sroa_0_0;
    $rv_sroa_1_4__idx1 = $agg_result + 4 | 0;
    HEAP32[$rv_sroa_1_4__idx1 >> 2] = $rv_sroa_1_0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvrender_beziercurve($job, $af, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $af = $af | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $beziercurve = 0, $1 = 0, $tobool1 = 0, $obj = 0, $2 = 0, $pen = 0, $3 = 0, $cmp = 0, $flags = 0, $4 = 0, $and = 0, $tobool3 = 0, $conv = 0, $5 = 0, $cmp6 = 0, $add = 0, $6 = 0, $7 = 0, $mul = 0, $call = 0, $8 = 0, $9 = 0, $call9 = 0, $10 = 0, $11 = 0, $conv11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $beziercurve = $0 + 104 | 0;
    $1 = HEAP32[$beziercurve >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $obj = $job + 16 | 0;
    $2 = HEAP32[$obj >> 2] | 0;
    $pen = $2 + 96 | 0;
    $3 = HEAP32[$pen >> 2] | 0;
    $cmp = ($3 | 0) == 0;
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $flags = $job + 152 | 0;
    $4 = HEAP32[$flags >> 2] | 0;
    $and = $4 & 8192;
    $tobool3 = ($and | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $conv = $filled & 255;
    FUNCTION_TABLE_viiiiii[$1 & 1023]($job, $af, $n, $arrow_at_start, $arrow_at_end, $conv);
    label = 10;
    break;
   case 7:
    $5 = HEAP32[1052] | 0;
    $cmp6 = ($5 | 0) < ($n | 0);
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $add = $n + 10 | 0;
    HEAP32[1052] = $add;
    $6 = HEAP32[42146] | 0;
    $7 = $6;
    $mul = $add << 4;
    $call = _grealloc($7, $mul) | 0;
    $8 = $call;
    HEAP32[42146] = $8;
    label = 9;
    break;
   case 9:
    $9 = HEAP32[42146] | 0;
    $call9 = _gvrender_ptf_A($job, $af, $9, $n) | 0;
    $10 = HEAP32[$beziercurve >> 2] | 0;
    $11 = HEAP32[42146] | 0;
    $conv11 = $filled & 255;
    FUNCTION_TABLE_viiiiii[$10 & 1023]($job, $11, $n, $arrow_at_start, $arrow_at_end, $conv11);
    label = 10;
    break;
   case 10:
    return;
  }
}
function _gvrender_polyline($job, $af, $n) {
  $job = $job | 0;
  $af = $af | 0;
  $n = $n | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $polyline = 0, $1 = 0, $tobool1 = 0, $obj = 0, $2 = 0, $pen = 0, $3 = 0, $cmp = 0, $flags = 0, $4 = 0, $and = 0, $tobool3 = 0, $5 = 0, $cmp6 = 0, $add = 0, $6 = 0, $7 = 0, $mul = 0, $call = 0, $8 = 0, $9 = 0, $call8 = 0, $10 = 0, $11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $polyline = $0 + 108 | 0;
    $1 = HEAP32[$polyline >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $obj = $job + 16 | 0;
    $2 = HEAP32[$obj >> 2] | 0;
    $pen = $2 + 96 | 0;
    $3 = HEAP32[$pen >> 2] | 0;
    $cmp = ($3 | 0) == 0;
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $flags = $job + 152 | 0;
    $4 = HEAP32[$flags >> 2] | 0;
    $and = $4 & 8192;
    $tobool3 = ($and | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    FUNCTION_TABLE_viii[$1 & 1023]($job, $af, $n);
    label = 10;
    break;
   case 7:
    $5 = HEAP32[1052] | 0;
    $cmp6 = ($5 | 0) < ($n | 0);
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $add = $n + 10 | 0;
    HEAP32[1052] = $add;
    $6 = HEAP32[42146] | 0;
    $7 = $6;
    $mul = $add << 4;
    $call = _grealloc($7, $mul) | 0;
    $8 = $call;
    HEAP32[42146] = $8;
    label = 9;
    break;
   case 9:
    $9 = HEAP32[42146] | 0;
    $call8 = _gvrender_ptf_A($job, $af, $9, $n) | 0;
    $10 = HEAP32[$polyline >> 2] | 0;
    $11 = HEAP32[42146] | 0;
    FUNCTION_TABLE_viii[$10 & 1023]($job, $11, $n);
    label = 10;
    break;
   case 10:
    return;
  }
}
function _gvrender_comment($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $tobool2 = 0, $or_cond = 0, $comment = 0, $2 = 0, $tobool4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($str | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$str] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    $tobool2 = ($0 | 0) == 0;
    $or_cond = $tobool1 | $tobool2;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $comment = $0 + 112 | 0;
    $2 = HEAP32[$comment >> 2] | 0;
    $tobool4 = ($2 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    FUNCTION_TABLE_vii[$2 & 1023]($job, $str);
    label = 6;
    break;
   case 6:
    return;
  }
}
function _gvrender_usershape($job, $name, $a, $n, $filled, $imagescale) {
  $job = $job | 0;
  $name = $name | 0;
  $a = $a | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  $imagescale = $imagescale | 0;
  var $b = 0, $tmp = 0, $tmp139 = 0, $tmp142 = 0, $engine = 0, $0 = 0, $call = 0, $tobool = 0, $call1 = 0, $tobool2 = 0, $tobool4 = 0, $or_cond = 0, $library_shape = 0, $1 = 0, $tobool5 = 0, $conv = 0, $dpi = 0, $isz_sroa_0_0__idx = 0, $isz_sroa_0_0_copyload = 0, $isz_sroa_1_4__idx3 = 0, $isz_sroa_1_4_copyload = 0, $cmp = 0, $cmp12 = 0, $or_cond65 = 0, $LL = 0, $UR = 0, $2 = 0, $3 = 0, $4 = 0, $cmp1667 = 0, $x19 = 0, $y31 = 0, $x47 = 0, $y63 = 0, $x19_promoted = 0.0, $y31_promoted = 0.0, $x47_promoted = 0.0, $y63_promoted = 0.0, $5 = 0.0, $_6669 = 0.0, $6 = 0.0, $7 = 0.0, $i_068 = 0, $x21 = 0, $8 = 0.0, $cmp22 = 0, $_ = 0.0, $y33 = 0, $9 = 0.0, $cmp34 = 0, $cond43 = 0.0, $10 = 0.0, $cmp50 = 0, $_66 = 0.0, $cmp66 = 0, $cond75 = 0.0, $inc = 0, $cmp16 = 0, $x79 = 0, $11 = 0.0, $x81 = 0, $12 = 0.0, $sub = 0.0, $y83 = 0, $13 = 0.0, $y85 = 0, $14 = 0.0, $sub86 = 0.0, $conv88 = 0.0, $conv90 = 0.0, $div = 0.0, $div91 = 0.0, $call92 = 0, $cmp93 = 0, $mul = 0.0, $mul96 = 0.0, $mul97 = 0.0, $mul98 = 0.0, $mul101 = 0.0, $mul103 = 0.0, $mul105 = 0.0, $mul106 = 0.0, $ih_0 = 0.0, $iw_0 = 0.0, $cmp108 = 0, $sub111 = 0.0, $div112 = 0.0, $15 = 0.0, $add = 0.0, $16 = 0.0, $sub119 = 0.0, $cmp121 = 0, $sub124 = 0.0, $div125 = 0.0, $17 = 0.0, $add128 = 0.0, $18 = 0.0, $sub133 = 0.0, $flags = 0, $19 = 0, $and = 0, $tobool135 = 0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0.0, $cmp148 = 0, $24 = 0.0, $25 = 0.0, $cmp165 = 0, $tobool179 = 0, $type = 0, $26 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 72 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $b = __stackBase__ | 0;
    $tmp = __stackBase__ + 32 | 0;
    $tmp139 = __stackBase__ + 40 | 0;
    $tmp142 = __stackBase__ + 56 | 0;
    $engine = $job + 60 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $call = _gvusershape_find($name) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $call1 = _find_user_shape($name) | 0;
    $tobool2 = ($call1 | 0) == 0;
    $tobool4 = ($0 | 0) == 0;
    $or_cond = $tobool2 | $tobool4;
    if ($or_cond) {
      label = 30;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $library_shape = $0 + 116 | 0;
    $1 = HEAP32[$library_shape >> 2] | 0;
    $tobool5 = ($1 | 0) == 0;
    if ($tobool5) {
      label = 30;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $conv = $filled & 255;
    FUNCTION_TABLE_viiiii[$1 & 1023]($job, $name, $a, $n, $conv);
    label = 30;
    break;
   case 6:
    $dpi = $job + 432 | 0;
    _gvusershape_size_dpi($tmp, $call, $dpi);
    $isz_sroa_0_0__idx = $tmp | 0;
    $isz_sroa_0_0_copyload = HEAP32[$isz_sroa_0_0__idx >> 2] | 0;
    $isz_sroa_1_4__idx3 = $tmp + 4 | 0;
    $isz_sroa_1_4_copyload = HEAP32[$isz_sroa_1_4__idx3 >> 2] | 0;
    $cmp = ($isz_sroa_0_0_copyload | 0) < 1;
    $cmp12 = ($isz_sroa_1_4_copyload | 0) < 1;
    $or_cond65 = $cmp & $cmp12;
    if ($or_cond65) {
      label = 30;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $LL = $b | 0;
    $UR = $b + 16 | 0;
    $2 = $UR;
    $3 = $a;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $4 = $b;
    HEAP32[$4 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $cmp1667 = ($n | 0) > 1;
    if ($cmp1667) {
      label = 8;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    $x19 = $b | 0;
    $y31 = $b + 8 | 0;
    $x47 = $UR | 0;
    $y63 = $b + 24 | 0;
    $x19_promoted = +HEAPF64[$x19 >> 3];
    $y31_promoted = +HEAPF64[$y31 >> 3];
    $x47_promoted = +HEAPF64[$x47 >> 3];
    $y63_promoted = +HEAPF64[$y63 >> 3];
    $i_068 = 1;
    $7 = $x19_promoted;
    $6 = $y31_promoted;
    $_6669 = $x47_promoted;
    $5 = $y63_promoted;
    label = 9;
    break;
   case 9:
    $x21 = $a + ($i_068 << 4) | 0;
    $8 = +HEAPF64[$x21 >> 3];
    $cmp22 = $7 < $8;
    $_ = $cmp22 ? $7 : $8;
    $y33 = $a + ($i_068 << 4) + 8 | 0;
    $9 = +HEAPF64[$y33 >> 3];
    $cmp34 = $6 < $9;
    $cond43 = $cmp34 ? $6 : $9;
    $10 = +HEAPF64[$x21 >> 3];
    $cmp50 = $_6669 > $10;
    $_66 = $cmp50 ? $_6669 : $10;
    $cmp66 = $5 > $9;
    $cond75 = $cmp66 ? $5 : $9;
    $inc = $i_068 + 1 | 0;
    $cmp16 = ($inc | 0) < ($n | 0);
    if ($cmp16) {
      $i_068 = $inc;
      $7 = $_;
      $6 = $cond43;
      $_6669 = $_66;
      $5 = $cond75;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAPF64[$x19 >> 3] = $_;
    HEAPF64[$y31 >> 3] = $cond43;
    HEAPF64[$x47 >> 3] = $_66;
    HEAPF64[$y63 >> 3] = $cond75;
    label = 11;
    break;
   case 11:
    $x79 = $UR | 0;
    $11 = +HEAPF64[$x79 >> 3];
    $x81 = $b | 0;
    $12 = +HEAPF64[$x81 >> 3];
    $sub = $11 - $12;
    $y83 = $b + 24 | 0;
    $13 = +HEAPF64[$y83 >> 3];
    $y85 = $b + 8 | 0;
    $14 = +HEAPF64[$y85 >> 3];
    $sub86 = $13 - $14;
    $conv88 = +($isz_sroa_1_4_copyload | 0);
    $conv90 = +($isz_sroa_0_0_copyload | 0);
    $div = $sub / $conv90;
    $div91 = $sub86 / $conv88;
    $call92 = _get_imagescale($imagescale) | 0;
    if (($call92 | 0) == 1) {
      label = 12;
      break;
    } else if (($call92 | 0) == 2) {
      label = 15;
      break;
    } else if (($call92 | 0) == 3) {
      label = 16;
      break;
    } else if (($call92 | 0) == 4) {
      label = 17;
      break;
    } else {
      $iw_0 = $conv90;
      $ih_0 = $conv88;
      label = 18;
      break;
    }
   case 12:
    $cmp93 = $div < $div91;
    if ($cmp93) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $mul = $conv90 * $div;
    $mul96 = $conv88 * $div;
    $iw_0 = $mul;
    $ih_0 = $mul96;
    label = 18;
    break;
   case 14:
    $mul97 = $conv90 * $div91;
    $mul98 = $conv88 * $div91;
    $iw_0 = $mul97;
    $ih_0 = $mul98;
    label = 18;
    break;
   case 15:
    $mul101 = $conv90 * $div;
    $iw_0 = $mul101;
    $ih_0 = $conv88;
    label = 18;
    break;
   case 16:
    $mul103 = $conv88 * $div91;
    $iw_0 = $conv90;
    $ih_0 = $mul103;
    label = 18;
    break;
   case 17:
    $mul105 = $conv90 * $div;
    $mul106 = $conv88 * $div91;
    $iw_0 = $mul105;
    $ih_0 = $mul106;
    label = 18;
    break;
   case 18:
    $cmp108 = $iw_0 < $sub;
    if ($cmp108) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $sub111 = $sub - $iw_0;
    $div112 = $sub111 * .5;
    $15 = +HEAPF64[$x81 >> 3];
    $add = $div112 + $15;
    HEAPF64[$x81 >> 3] = $add;
    $16 = +HEAPF64[$x79 >> 3];
    $sub119 = $16 - $div112;
    HEAPF64[$x79 >> 3] = $sub119;
    label = 20;
    break;
   case 20:
    $cmp121 = $ih_0 < $sub86;
    if ($cmp121) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $sub124 = $sub86 - $ih_0;
    $div125 = $sub124 * .5;
    $17 = +HEAPF64[$y85 >> 3];
    $add128 = $div125 + $17;
    HEAPF64[$y85 >> 3] = $add128;
    $18 = +HEAPF64[$y83 >> 3];
    $sub133 = $18 - $div125;
    HEAPF64[$y83 >> 3] = $sub133;
    label = 22;
    break;
   case 22:
    $flags = $job + 152 | 0;
    $19 = HEAP32[$flags >> 2] | 0;
    $and = $19 & 8192;
    $tobool135 = ($and | 0) == 0;
    if ($tobool135) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    _gvrender_ptf($tmp139, $job, $LL);
    $20 = $tmp139;
    HEAP32[$4 >> 2] = HEAP32[$20 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$20 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$20 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$20 + 12 >> 2] | 0;
    _gvrender_ptf($tmp142, $job, $UR);
    $21 = $tmp142;
    HEAP32[$2 >> 2] = HEAP32[$21 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$21 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$21 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$21 + 12 >> 2] | 0;
    label = 24;
    break;
   case 24:
    $22 = +HEAPF64[$x81 >> 3];
    $23 = +HEAPF64[$x79 >> 3];
    $cmp148 = $22 > $23;
    if ($cmp148) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    HEAPF64[$x81 >> 3] = $23;
    HEAPF64[$x79 >> 3] = $22;
    label = 26;
    break;
   case 26:
    $24 = +HEAPF64[$y85 >> 3];
    $25 = +HEAPF64[$y83 >> 3];
    $cmp165 = $24 > $25;
    if ($cmp165) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    HEAPF64[$y85 >> 3] = $25;
    HEAPF64[$y83 >> 3] = $24;
    label = 28;
    break;
   case 28:
    $tobool179 = ($0 | 0) == 0;
    if ($tobool179) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $type = $job + 72 | 0;
    $26 = HEAP32[$type >> 2] | 0;
    _gvloadimage($job, $call, $b, $filled, $26);
    label = 30;
    break;
   case 30:
    STACKTOP = __stackBase__;
    return;
  }
}
function _get_imagescale($s) {
  $s = $s | 0;
  var $0 = 0, $cmp = 0, $call = 0, $tobool = 0, $call4 = 0, $tobool5 = 0, $call8 = 0, $tobool9 = 0, $call12 = 0, $not_tobool13 = 0, $_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$s] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _strcasecmp($s, 155848) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 2;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call4 = _strcasecmp($s, 152504) | 0;
    $tobool5 = ($call4 | 0) == 0;
    if ($tobool5) {
      $retval_0 = 3;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call8 = _strcasecmp($s, 149064) | 0;
    $tobool9 = ($call8 | 0) == 0;
    if ($tobool9) {
      $retval_0 = 4;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call12 = _mapbool($s) | 0;
    $not_tobool13 = $call12 << 24 >> 24 != 0;
    $_ = $not_tobool13 & 1;
    $retval_0 = $_;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvrender_comparestr($s1, $s2) {
  $s1 = $s1 | 0;
  $s2 = $s2 | 0;
  return _strcmp(HEAP32[$s1 >> 2] | 0, HEAP32[$s2 >> 2] | 0) | 0;
}
function _gvusershape_find($name) {
  $name = $name | 0;
  var $probe = 0, $0 = 0, $tobool = 0, $name1 = 0, $1 = 0, $searchf = 0, $2 = 0, $3 = 0, $call = 0, $4 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $probe = __stackBase__ | 0;
    $0 = HEAP32[41770] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $name1 = $probe + 8 | 0;
    HEAP32[$name1 >> 2] = $name;
    $1 = HEAP32[41770] | 0;
    $searchf = $1 | 0;
    $2 = HEAP32[$searchf >> 2] | 0;
    $3 = $probe;
    $call = FUNCTION_TABLE_iiii[$2 & 1023]($1, $3, 4) | 0;
    $4 = $call;
    $retval_0 = $4;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gvusershape_file_release($us) {
  $us = $us | 0;
  var $nocache = 0, $0 = 0, $tobool = 0, $f = 0, $1 = 0, $tobool1 = 0, $call = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nocache = $us + 17 | 0;
    $0 = HEAP8[$nocache] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $f = $us + 20 | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _fclose($1 | 0) | 0;
    HEAP32[$f >> 2] = 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _gvusershape_size($agg_result, $g, $name) {
  $agg_result = $agg_result | 0;
  $g = $g | 0;
  $name = $name | 0;
  var $dpi = 0, $tobool = 0, $0 = 0, $cmp = 0, $rv_sroa_0_0__idx = 0, $rv_sroa_1_4__idx1 = 0, $drawing = 0, $1 = 0, $dpi2 = 0, $2 = 0.0, $y3 = 0, $cmp4 = 0, $x8 = 0, $x10 = 0, $call = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dpi = __stackBase__ | 0;
    $tobool = ($name | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$name] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $rv_sroa_0_0__idx = $agg_result | 0;
    HEAP32[$rv_sroa_0_0__idx >> 2] = -1;
    $rv_sroa_1_4__idx1 = $agg_result + 4 | 0;
    HEAP32[$rv_sroa_1_4__idx1 >> 2] = -1;
    label = 9;
    break;
   case 5:
    $drawing = $g + 48 | 0;
    $1 = HEAP32[$drawing >> 2] | 0;
    $dpi2 = $1 + 24 | 0;
    $2 = +HEAPF64[$dpi2 >> 3];
    $y3 = $dpi + 8 | 0;
    HEAPF64[$y3 >> 3] = $2;
    $cmp4 = $2 < 1.0;
    if ($cmp4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x8 = $dpi | 0;
    HEAPF64[$x8 >> 3] = $2;
    label = 8;
    break;
   case 7:
    HEAPF64[$y3 >> 3] = 96.0;
    $x10 = $dpi | 0;
    HEAPF64[$x10 >> 3] = 96.0;
    label = 8;
    break;
   case 8:
    $call = _gvusershape_open($name) | 0;
    _gvusershape_size_dpi($agg_result, $call, $dpi);
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvusershape_open($name) {
  $name = $name | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $call = 0, $call1 = 0, $tobool2 = 0, $call4 = 0, $3 = 0, $tobool5 = 0, $name8 = 0, $4 = 0, $call9 = 0, $tobool10 = 0, $call13 = 0, $5 = 0, $call15 = 0, $6 = 0, $data = 0, $7 = 0, $tobool16 = 0, $8 = 0, $call19 = 0, $9 = 0, $searchf = 0, $10 = 0, $call28 = 0, $us_0 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41770] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $1 = HEAP32[41974] | 0;
    $2 = $1;
    $call = _dtopen(167e3, $2) | 0;
    HEAP32[41770] = $call;
    label = 4;
    break;
   case 4:
    $call1 = _gvusershape_find($name) | 0;
    $tobool2 = ($call1 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      $us_0 = $call1;
      label = 18;
      break;
    }
   case 5:
    $call4 = _zmalloc(64) | 0;
    $3 = $call4;
    $tobool5 = ($call4 | 0) == 0;
    if ($tobool5) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $name8 = $call4 + 8 | 0;
    $4 = $name8;
    HEAP32[$4 >> 2] = $name;
    $call9 = _gvusershape_file_access($3) | 0;
    $tobool10 = $call9 << 24 >> 24 == 0;
    if ($tobool10) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call13 = _imagetype($3) | 0;
    if (($call13 | 0) == 0) {
      label = 8;
      break;
    } else if (($call13 | 0) == 2) {
      label = 11;
      break;
    } else if (($call13 | 0) == 3) {
      label = 12;
      break;
    } else if (($call13 | 0) == 1) {
      label = 13;
      break;
    } else if (($call13 | 0) == 4) {
      label = 14;
      break;
    } else if (($call13 | 0) == 6) {
      label = 15;
      break;
    } else if (($call13 | 0) == 8) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 8:
    $5 = HEAP32[$4 >> 2] | 0;
    $call15 = _find_user_shape($5) | 0;
    $6 = $call15;
    $data = $call4 + 52 | 0;
    $7 = $data;
    HEAP32[$7 >> 2] = $6;
    $tobool16 = ($call15 | 0) == 0;
    if ($tobool16) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $8 = HEAP32[$4 >> 2] | 0;
    $call19 = _agerr(0, 108384, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $8, tempInt) | 0) | 0;
    label = 10;
    break;
   case 10:
    _free($call4);
    $retval_0 = 0;
    label = 19;
    break;
   case 11:
    _gif_size($3);
    label = 17;
    break;
   case 12:
    _png_size($3);
    label = 17;
    break;
   case 13:
    _bmp_size($3);
    label = 17;
    break;
   case 14:
    _jpeg_size($3);
    label = 17;
    break;
   case 15:
    _ps_size($3);
    label = 17;
    break;
   case 16:
    _svg_size($3);
    label = 17;
    break;
   case 17:
    $9 = HEAP32[41770] | 0;
    $searchf = $9 | 0;
    $10 = HEAP32[$searchf >> 2] | 0;
    $call28 = FUNCTION_TABLE_iiii[$10 & 1023]($9, $call4, 1) | 0;
    $us_0 = $3;
    label = 18;
    break;
   case 18:
    _gvusershape_file_release($us_0);
    $retval_0 = $us_0;
    label = 19;
    break;
   case 19:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _imagetype($us) {
  $us = $us | 0;
  var $header = 0, $line = 0, $f = 0, $0 = 0, $tobool = 0, $arraydecay = 0, $call = 0, $cmp = 0, $stringtype9 = 0, $type11 = 0, $arraydecay16 = 0, $i_019 = 0, $template = 0, $1 = 0, $size = 0, $2 = 0, $call5 = 0, $tobool6 = 0, $stringtype = 0, $3 = 0, $type = 0, $4 = 0, $cmp13 = 0, $5 = 0, $call18 = 0, $cmp19 = 0, $call21 = 0, $tobool22 = 0, $inc = 0, $cmp2 = 0, $stringtype29 = 0, $type30 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 224 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $header = __stackBase__ | 0;
    $line = __stackBase__ + 24 | 0;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arraydecay = $header | 0;
    $call = _fread($arraydecay | 0, 1, 20, $0 | 0) | 0;
    $cmp = ($call | 0) == 20;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 11;
      break;
    }
   case 4:
    $stringtype9 = $us + 28 | 0;
    $type11 = $us + 24 | 0;
    $arraydecay16 = $line | 0;
    $i_019 = 0;
    label = 5;
    break;
   case 5:
    $template = 12208 + ($i_019 << 4) | 0;
    $1 = HEAP32[$template >> 2] | 0;
    $size = 12212 + ($i_019 << 4) | 0;
    $2 = HEAP32[$size >> 2] | 0;
    $call5 = _memcmp($arraydecay | 0, $1 | 0, $2 | 0) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 6:
    $stringtype = 12220 + ($i_019 << 4) | 0;
    $3 = HEAP32[$stringtype >> 2] | 0;
    HEAP32[$stringtype9 >> 2] = $3;
    $type = 12216 + ($i_019 << 4) | 0;
    $4 = HEAP32[$type >> 2] | 0;
    HEAP32[$type11 >> 2] = $4;
    $cmp13 = ($i_019 | 0) == 7;
    if ($cmp13) {
      label = 7;
      break;
    } else {
      $retval_0 = $4;
      label = 12;
      break;
    }
   case 7:
    $5 = HEAP32[$f >> 2] | 0;
    $call18 = _fgets($arraydecay16 | 0, 200, $5 | 0) | 0;
    $cmp19 = ($call18 | 0) == 0;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call21 = _memcmp($arraydecay16 | 0, 136856, 4) | 0;
    $tobool22 = ($call21 | 0) == 0;
    if ($tobool22) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 9:
    HEAP32[$stringtype9 >> 2] = 134424;
    HEAP32[$type11 >> 2] = 8;
    $retval_0 = 8;
    label = 12;
    break;
   case 10:
    $inc = $i_019 + 1 | 0;
    $cmp2 = $inc >>> 0 < 8;
    if ($cmp2) {
      $i_019 = $inc;
      label = 5;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $stringtype29 = $us + 28 | 0;
    HEAP32[$stringtype29 >> 2] = 132040;
    $type30 = $us + 24 | 0;
    HEAP32[$type30 >> 2] = 0;
    $retval_0 = 0;
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _gif_size($us) {
  $us = $us | 0;
  var $w = 0, $h = 0, $dpi = 0, $f = 0, $0 = 0, $call = 0, $1 = 0, $call2 = 0, $tobool = 0, $2 = 0, $call4 = 0, $tobool6 = 0, $3 = 0, $w7 = 0, $4 = 0, $h8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $w = __stackBase__ | 0;
    $h = __stackBase__ + 8 | 0;
    $dpi = $us + 48 | 0;
    HEAP32[$dpi >> 2] = 0;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $call = _fseek($0 | 0, 6, 0) | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $call2 = _get_int_lsb_first($1, $w) | 0;
    $tobool = $call2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$f >> 2] | 0;
    $call4 = _get_int_lsb_first($2, $h) | 0;
    $tobool6 = $call4 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP32[$w >> 2] | 0;
    $w7 = $us + 40 | 0;
    HEAP32[$w7 >> 2] = $3;
    $4 = HEAP32[$h >> 2] | 0;
    $h8 = $us + 44 | 0;
    HEAP32[$h8 >> 2] = $4;
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _png_size($us) {
  $us = $us | 0;
  var $w = 0, $h = 0, $dpi = 0, $f = 0, $0 = 0, $call = 0, $1 = 0, $call2 = 0, $tobool = 0, $2 = 0, $call4 = 0, $tobool6 = 0, $3 = 0, $w7 = 0, $4 = 0, $h8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $w = __stackBase__ | 0;
    $h = __stackBase__ + 8 | 0;
    $dpi = $us + 48 | 0;
    HEAP32[$dpi >> 2] = 0;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $call = _fseek($0 | 0, 16, 0) | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $call2 = _get_int_msb_first($1, 4, $w) | 0;
    $tobool = $call2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$f >> 2] | 0;
    $call4 = _get_int_msb_first($2, 4, $h) | 0;
    $tobool6 = $call4 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP32[$w >> 2] | 0;
    $w7 = $us + 40 | 0;
    HEAP32[$w7 >> 2] = $3;
    $4 = HEAP32[$h >> 2] | 0;
    $h8 = $us + 44 | 0;
    HEAP32[$h8 >> 2] = $4;
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _bmp_size($us) {
  $us = $us | 0;
  var $size_x_msw = 0, $size_x_lsw = 0, $size_y_msw = 0, $size_y_lsw = 0, $dpi = 0, $f = 0, $0 = 0, $call = 0, $1 = 0, $call2 = 0, $tobool = 0, $2 = 0, $call4 = 0, $tobool6 = 0, $3 = 0, $call9 = 0, $tobool11 = 0, $4 = 0, $call14 = 0, $tobool16 = 0, $5 = 0, $shl = 0, $6 = 0, $or = 0, $w = 0, $7 = 0, $shl17 = 0, $8 = 0, $or18 = 0, $h = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size_x_msw = __stackBase__ | 0;
    $size_x_lsw = __stackBase__ + 8 | 0;
    $size_y_msw = __stackBase__ + 16 | 0;
    $size_y_lsw = __stackBase__ + 24 | 0;
    $dpi = $us + 48 | 0;
    HEAP32[$dpi >> 2] = 0;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $call = _fseek($0 | 0, 16, 0) | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $call2 = _get_int_lsb_first($1, $size_x_msw) | 0;
    $tobool = $call2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$f >> 2] | 0;
    $call4 = _get_int_lsb_first($2, $size_x_lsw) | 0;
    $tobool6 = $call4 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP32[$f >> 2] | 0;
    $call9 = _get_int_lsb_first($3, $size_y_msw) | 0;
    $tobool11 = $call9 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = HEAP32[$f >> 2] | 0;
    $call14 = _get_int_lsb_first($4, $size_y_lsw) | 0;
    $tobool16 = $call14 << 24 >> 24 == 0;
    if ($tobool16) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $5 = HEAP32[$size_x_msw >> 2] | 0;
    $shl = $5 << 16;
    $6 = HEAP32[$size_x_lsw >> 2] | 0;
    $or = $shl | $6;
    $w = $us + 40 | 0;
    HEAP32[$w >> 2] = $or;
    $7 = HEAP32[$size_y_msw >> 2] | 0;
    $shl17 = $7 << 16;
    $8 = HEAP32[$size_y_lsw >> 2] | 0;
    $or18 = $shl17 | $8;
    $h = $us + 44 | 0;
    HEAP32[$h >> 2] = $or18;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvusershape_file_access($us) {
  $us = $us | 0;
  var $tobool = 0, $name = 0, $0 = 0, $tobool1 = 0, $f = 0, $1 = 0, $tobool5 = 0, $call = 0, $call8 = 0, $tobool9 = 0, $call11 = 0, $cmp = 0, $call15 = 0, $2 = 0, $call16 = 0, $call17 = 0, $3 = 0, $cmp18 = 0, $nocache = 0, $inc = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($us | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(155760, 363, 164216, 158976);
    return 0;
   case 4:
    $name = $us + 8 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(155760, 364, 164216, 130056);
    return 0;
   case 6:
    $f = $us + 20 | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $tobool5 = ($1 | 0) == 0;
    if ($tobool5) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call = _fseek($1 | 0, 0, 0) | 0;
    $retval_0 = 1;
    label = 14;
    break;
   case 8:
    $call8 = _safefile($0) | 0;
    $tobool9 = ($call8 | 0) == 0;
    if ($tobool9) {
      $retval_0 = 1;
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call11 = _fopen($call8 | 0, 118240) | 0;
    HEAP32[$f >> 2] = $call11;
    $cmp = ($call11 | 0) == 0;
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $call15 = ___errno_location() | 0;
    $2 = HEAP32[$call15 >> 2] | 0;
    $call16 = _strerror($2 | 0) | 0;
    $call17 = _agerr(0, 112944, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $call16, HEAP32[tempInt + 8 >> 2] = $call8, tempInt) | 0) | 0;
    $retval_0 = 0;
    label = 14;
    break;
   case 11:
    $3 = HEAP32[3508] | 0;
    $cmp18 = ($3 | 0) > 49;
    if ($cmp18) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $nocache = $us + 17 | 0;
    HEAP8[$nocache] = 1;
    $retval_0 = 1;
    label = 14;
    break;
   case 13:
    $inc = $3 + 1 | 0;
    HEAP32[3508] = $inc;
    $retval_0 = 1;
    label = 14;
    break;
   case 14:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _B1($t) {
  $t = +$t;
  var $sub = 0.0;
  $sub = 1.0 - $t;
  return +($sub * $t * 3.0 * $sub);
}
function _B2($t) {
  $t = +$t;
  return +((1.0 - $t) * $t * 3.0 * $t);
}
function _jpeg_size($us) {
  $us = $us | 0;
  var $marker = 0, $length = 0, $size_x = 0, $size_y = 0, $junk = 0, $dpi = 0, $f = 0, $0 = 0, $call15 = 0, $tobool16 = 0, $1 = 0, $cmp = 0, $call3 = 0, $tobool4 = 0, $cmp7 = 0, $2 = 0, $call10 = 0, $tobool11 = 0, $3 = 0, $call13 = 0, $tobool15 = 0, $4 = 0, $call18 = 0, $tobool20 = 0, $5 = 0, $h = 0, $6 = 0, $w = 0, $cmp24 = 0, $7 = 0, $call28 = 0, $tobool29 = 0, $8 = 0, $call33 = 0, $tobool35 = 0, $9 = 0, $call38 = 0, $tobool40 = 0, $10 = 0, $h42 = 0, $11 = 0, $w43 = 0, $call47 = 0, $tobool48 = 0, $12 = 0, $13 = 0, $sub = 0, $call52 = 0, $14 = 0, $call = 0, $tobool = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $marker = __stackBase__ | 0;
    $length = __stackBase__ + 8 | 0;
    $size_x = __stackBase__ + 16 | 0;
    $size_y = __stackBase__ + 24 | 0;
    $junk = __stackBase__ + 32 | 0;
    $dpi = $us + 48 | 0;
    HEAP32[$dpi >> 2] = 0;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $call15 = _get_int_msb_first($0, 1, $marker) | 0;
    $tobool16 = $call15 << 24 >> 24 == 0;
    if ($tobool16) {
      label = 18;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[$marker >> 2] | 0;
    $cmp = ($1 | 0) == 255;
    if ($cmp) {
      label = 17;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call3 = _strchr(12336, $1 | 0) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 17;
      break;
    }
   case 5:
    $cmp7 = ($1 | 0) == 192;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 6:
    $2 = HEAP32[$f >> 2] | 0;
    $call10 = _get_int_msb_first($2, 3, $junk) | 0;
    $tobool11 = $call10 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 18;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $3 = HEAP32[$f >> 2] | 0;
    $call13 = _get_int_msb_first($3, 2, $size_x) | 0;
    $tobool15 = $call13 << 24 >> 24 == 0;
    if ($tobool15) {
      label = 18;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $4 = HEAP32[$f >> 2] | 0;
    $call18 = _get_int_msb_first($4, 2, $size_y) | 0;
    $tobool20 = $call18 << 24 >> 24 == 0;
    if ($tobool20) {
      label = 18;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $5 = HEAP32[$size_x >> 2] | 0;
    $h = $us + 44 | 0;
    HEAP32[$h >> 2] = $5;
    $6 = HEAP32[$size_y >> 2] | 0;
    $w = $us + 40 | 0;
    HEAP32[$w >> 2] = $6;
    label = 18;
    break;
   case 10:
    $cmp24 = ($1 | 0) == 194;
    $7 = HEAP32[$f >> 2] | 0;
    if ($cmp24) {
      label = 11;
      break;
    } else {
      label = 15;
      break;
    }
   case 11:
    $call28 = _get_int_msb_first($7, 3, $junk) | 0;
    $tobool29 = $call28 << 24 >> 24 == 0;
    if ($tobool29) {
      label = 18;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $8 = HEAP32[$f >> 2] | 0;
    $call33 = _get_int_msb_first($8, 2, $size_x) | 0;
    $tobool35 = $call33 << 24 >> 24 == 0;
    if ($tobool35) {
      label = 18;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $9 = HEAP32[$f >> 2] | 0;
    $call38 = _get_int_msb_first($9, 2, $size_y) | 0;
    $tobool40 = $call38 << 24 >> 24 == 0;
    if ($tobool40) {
      label = 18;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $10 = HEAP32[$size_x >> 2] | 0;
    $h42 = $us + 44 | 0;
    HEAP32[$h42 >> 2] = $10;
    $11 = HEAP32[$size_y >> 2] | 0;
    $w43 = $us + 40 | 0;
    HEAP32[$w43 >> 2] = $11;
    label = 18;
    break;
   case 15:
    $call47 = _get_int_msb_first($7, 2, $length) | 0;
    $tobool48 = $call47 << 24 >> 24 == 0;
    if ($tobool48) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $12 = HEAP32[$f >> 2] | 0;
    $13 = HEAP32[$length >> 2] | 0;
    $sub = $13 - 2 | 0;
    $call52 = _fseek($12 | 0, $sub | 0, 1) | 0;
    label = 17;
    break;
   case 17:
    $14 = HEAP32[$f >> 2] | 0;
    $call = _get_int_msb_first($14, 1, $marker) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      label = 18;
      break;
    } else {
      label = 3;
      break;
    }
   case 18:
    STACKTOP = __stackBase__;
    return;
  }
}
function _ps_size($us) {
  $us = $us | 0;
  var $line = 0, $lx = 0, $ly = 0, $ux = 0, $uy = 0, $dpi = 0, $f = 0, $0 = 0, $call = 0, $arraydecay = 0, $1 = 0, $call27 = 0, $tobool8 = 0, $call4 = 0, $tobool5 = 0, $call6 = 0, $cmp = 0, $2 = 0, $call2 = 0, $tobool = 0, $3 = 0, $x = 0, $4 = 0, $y = 0, $5 = 0, $6 = 0, $sub = 0, $w = 0, $7 = 0, $8 = 0, $sub11 = 0, $h = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1056 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $line = __stackBase__ | 0;
    $lx = __stackBase__ + 1024 | 0;
    $ly = __stackBase__ + 1032 | 0;
    $ux = __stackBase__ + 1040 | 0;
    $uy = __stackBase__ + 1048 | 0;
    $dpi = $us + 48 | 0;
    HEAP32[$dpi >> 2] = 72;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $call = _fseek($0 | 0, 0, 0) | 0;
    $arraydecay = $line | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $call27 = _fgets($arraydecay | 0, 1024, $1 | 0) | 0;
    $tobool8 = ($call27 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call4 = _strstr($arraydecay | 0, 143176) | 0;
    $tobool5 = ($call4 | 0) == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call6 = _sscanf($call4 | 0, 139544, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $lx, HEAP32[tempInt + 8 >> 2] = $ly, HEAP32[tempInt + 16 >> 2] = $ux, HEAP32[tempInt + 24 >> 2] = $uy, tempInt) | 0) | 0;
    $cmp = ($call6 | 0) == 4;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP32[$f >> 2] | 0;
    $call2 = _fgets($arraydecay | 0, 1024, $2 | 0) | 0;
    $tobool = ($call2 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 6:
    $3 = HEAP32[$lx >> 2] | 0;
    $x = $us + 32 | 0;
    HEAP32[$x >> 2] = $3;
    $4 = HEAP32[$ly >> 2] | 0;
    $y = $us + 36 | 0;
    HEAP32[$y >> 2] = $4;
    $5 = HEAP32[$ux >> 2] | 0;
    $6 = HEAP32[$lx >> 2] | 0;
    $sub = $5 - $6 | 0;
    $w = $us + 40 | 0;
    HEAP32[$w >> 2] = $sub;
    $7 = HEAP32[$uy >> 2] | 0;
    $8 = HEAP32[$ly >> 2] | 0;
    $sub11 = $7 - $8 | 0;
    $h = $us + 44 | 0;
    HEAP32[$h >> 2] = $sub11;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_size($us) {
  $us = $us | 0;
  var $n = 0, $u = 0, $line = 0, $f = 0, $0 = 0, $arraydecay = 0, $call = 0, $sub = 0, $call1 = 0, $1 = 0, $call420 = 0, $cmp21 = 0, $arraydecay17 = 0, $w_0_ph = 0, $h_0_ph = 0, $wFlag_0_ph = 0, $hFlag_0_ph = 0, $2 = 0, $call4 = 0, $cmp = 0, $hFlag_025 = 0, $wFlag_024 = 0, $h_023 = 0, $w_022 = 0, $tobool = 0, $lnot = 0, $or_cond = 0, $call7 = 0, $cmp911 = 0, $hFlag_116 = 0, $wFlag_115 = 0, $token_014 = 0, $h_113 = 0, $w_112 = 0, $call11 = 0, $sub12 = 0, $arrayidx = 0, $3 = 0, $cmp13 = 0, $call18 = 0, $cmp19 = 0, $4 = 0.0, $call22 = 0, $tobool23 = 0, $w_2 = 0, $wFlag_2 = 0, $call27 = 0, $cmp28 = 0, $5 = 0.0, $call32 = 0, $tobool33 = 0, $h_2 = 0, $hFlag_2 = 0, $call37 = 0, $cmp9 = 0, $h_0_lcssa = 0, $w_0_lcssa = 0, $dpi = 0, $w39 = 0, $h40 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 224 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n = __stackBase__ | 0;
    $u = __stackBase__ + 8 | 0;
    $line = __stackBase__ + 24 | 0;
    $f = $us + 20 | 0;
    $0 = HEAP32[$f >> 2] | 0;
    $arraydecay = $line | 0;
    $call = _strlen($arraydecay | 0) | 0;
    $sub = -$call | 0;
    $call1 = _fseek($0 | 0, $sub | 0, 1) | 0;
    $1 = HEAP32[$f >> 2] | 0;
    $call420 = _fgets($arraydecay | 0, 200, $1 | 0) | 0;
    $cmp21 = ($call420 | 0) == 0;
    if ($cmp21) {
      $w_0_lcssa = 0;
      $h_0_lcssa = 0;
      label = 13;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arraydecay17 = $u | 0;
    $w_022 = 0;
    $h_023 = 0;
    $wFlag_024 = 0;
    $hFlag_025 = 0;
    label = 5;
    break;
   case 4:
    $2 = HEAP32[$f >> 2] | 0;
    $call4 = _fgets($arraydecay | 0, 200, $2 | 0) | 0;
    $cmp = ($call4 | 0) == 0;
    if ($cmp) {
      $w_0_lcssa = $w_0_ph;
      $h_0_lcssa = $h_0_ph;
      label = 13;
      break;
    } else {
      $w_022 = $w_0_ph;
      $h_023 = $h_0_ph;
      $wFlag_024 = $wFlag_0_ph;
      $hFlag_025 = $hFlag_0_ph;
      label = 5;
      break;
    }
   case 5:
    $tobool = $wFlag_024 << 24 >> 24 == 0;
    $lnot = $hFlag_025 << 24 >> 24 == 0;
    $or_cond = $tobool | $lnot;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      $w_0_lcssa = $w_022;
      $h_0_lcssa = $h_023;
      label = 13;
      break;
    }
   case 6:
    $call7 = _strtok($arraydecay | 0, 104472) | 0;
    $cmp911 = ($call7 | 0) == 0;
    if ($cmp911) {
      $hFlag_0_ph = $hFlag_025;
      $wFlag_0_ph = $wFlag_024;
      $h_0_ph = $h_023;
      $w_0_ph = $w_022;
      label = 4;
      break;
    } else {
      $w_112 = $w_022;
      $h_113 = $h_023;
      $token_014 = $call7;
      $wFlag_115 = $wFlag_024;
      $hFlag_116 = $hFlag_025;
      label = 7;
      break;
    }
   case 7:
    $call11 = _strlen($token_014 | 0) | 0;
    $sub12 = $call11 - 1 | 0;
    $arrayidx = $token_014 + $sub12 | 0;
    $3 = HEAP8[$arrayidx] | 0;
    $cmp13 = $3 << 24 >> 24 == 62;
    if ($cmp13) {
      $hFlag_0_ph = $hFlag_116;
      $wFlag_0_ph = $wFlag_115;
      $h_0_ph = $h_113;
      $w_0_ph = $w_112;
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call18 = _sscanf($token_014 | 0, 100216, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $n, HEAP32[tempInt + 8 >> 2] = $arraydecay17, tempInt) | 0) | 0;
    $cmp19 = ($call18 | 0) == 2;
    if ($cmp19) {
      label = 9;
      break;
    } else {
      $wFlag_2 = $wFlag_115;
      $w_2 = $w_112;
      label = 10;
      break;
    }
   case 9:
    $4 = +HEAPF64[$n >> 3];
    $call22 = _svg_units_convert($4, $arraydecay17) | 0;
    $tobool23 = $hFlag_116 << 24 >> 24 == 0;
    if ($tobool23) {
      $wFlag_2 = 1;
      $w_2 = $call22;
      label = 10;
      break;
    } else {
      $hFlag_0_ph = $hFlag_116;
      $wFlag_0_ph = 1;
      $h_0_ph = $h_113;
      $w_0_ph = $call22;
      label = 4;
      break;
    }
   case 10:
    $call27 = _sscanf($token_014 | 0, 96080, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $n, HEAP32[tempInt + 8 >> 2] = $arraydecay17, tempInt) | 0) | 0;
    $cmp28 = ($call27 | 0) == 2;
    if ($cmp28) {
      label = 11;
      break;
    } else {
      $hFlag_2 = $hFlag_116;
      $h_2 = $h_113;
      label = 12;
      break;
    }
   case 11:
    $5 = +HEAPF64[$n >> 3];
    $call32 = _svg_units_convert($5, $arraydecay17) | 0;
    $tobool33 = $wFlag_2 << 24 >> 24 == 0;
    if ($tobool33) {
      $hFlag_2 = 1;
      $h_2 = $call32;
      label = 12;
      break;
    } else {
      $hFlag_0_ph = 1;
      $wFlag_0_ph = $wFlag_2;
      $h_0_ph = $call32;
      $w_0_ph = $w_2;
      label = 4;
      break;
    }
   case 12:
    $call37 = _strtok(0, 104472) | 0;
    $cmp9 = ($call37 | 0) == 0;
    if ($cmp9) {
      $hFlag_0_ph = $hFlag_2;
      $wFlag_0_ph = $wFlag_2;
      $h_0_ph = $h_2;
      $w_0_ph = $w_2;
      label = 4;
      break;
    } else {
      $w_112 = $w_2;
      $h_113 = $h_2;
      $token_014 = $call37;
      $wFlag_115 = $wFlag_2;
      $hFlag_116 = $hFlag_2;
      label = 7;
      break;
    }
   case 13:
    $dpi = $us + 48 | 0;
    HEAP32[$dpi >> 2] = 72;
    $w39 = $us + 40 | 0;
    HEAP32[$w39 >> 2] = $w_0_lcssa;
    $h40 = $us + 44 | 0;
    HEAP32[$h40 >> 2] = $h_0_lcssa;
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_units_convert($n, $u) {
  $n = +$n;
  $u = $u | 0;
  var $call = 0, $cmp = 0, $mul = 0.0, $cmp1 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $call5 = 0, $cmp6 = 0, $mul9 = 0.0, $div = 0.0, $cmp10 = 0, $add15 = 0.0, $sub20 = 0.0, $add15_sink = 0.0, $conv16 = 0, $call25 = 0, $cmp26 = 0, $mul29 = 0.0, $div30 = 0.0, $cmp31 = 0, $add36 = 0.0, $sub41 = 0.0, $add36_sink = 0.0, $conv37 = 0, $call46 = 0, $cmp47 = 0, $call49 = 0, $cmp50 = 0, $cmp53 = 0, $add56 = 0.0, $sub59 = 0.0, $add56_sink = 0.0, $conv57 = 0, $call64 = 0, $cmp65 = 0, $mul68 = 0.0, $cmp69 = 0, $add73 = 0.0, $sub77 = 0.0, $add73_sink = 0.0, $conv74 = 0, $call82 = 0, $cmp83 = 0, $mul86 = 0.0, $cmp87 = 0, $add91 = 0.0, $sub95 = 0.0, $add91_sink = 0.0, $conv92 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _strcmp($u | 0, 92672) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $mul = $n * 72.0;
    $cmp1 = $mul < 0.0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $add = $mul + .5;
    $add_sink = $add;
    label = 6;
    break;
   case 5:
    $sub = $mul + -.5;
    $add_sink = $sub;
    label = 6;
    break;
   case 6:
    $conv = ~~$add_sink;
    $retval_0 = $conv;
    label = 33;
    break;
   case 7:
    $call5 = _strcmp($u | 0, 162792) | 0;
    $cmp6 = ($call5 | 0) == 0;
    if ($cmp6) {
      label = 8;
      break;
    } else {
      label = 12;
      break;
    }
   case 8:
    $mul9 = $n * 72.0;
    $div = $mul9 / 96.0;
    $cmp10 = $div < 0.0;
    if ($cmp10) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add15 = $div + .5;
    $add15_sink = $add15;
    label = 11;
    break;
   case 10:
    $sub20 = $div + -.5;
    $add15_sink = $sub20;
    label = 11;
    break;
   case 11:
    $conv16 = ~~$add15_sink;
    $retval_0 = $conv16;
    label = 33;
    break;
   case 12:
    $call25 = _strcmp($u | 0, 159320) | 0;
    $cmp26 = ($call25 | 0) == 0;
    if ($cmp26) {
      label = 13;
      break;
    } else {
      label = 17;
      break;
    }
   case 13:
    $mul29 = $n * 72.0;
    $div30 = $mul29 / 6.0;
    $cmp31 = $div30 < 0.0;
    if ($cmp31) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $add36 = $div30 + .5;
    $add36_sink = $add36;
    label = 16;
    break;
   case 15:
    $sub41 = $div30 + -.5;
    $add36_sink = $sub41;
    label = 16;
    break;
   case 16:
    $conv37 = ~~$add36_sink;
    $retval_0 = $conv37;
    label = 33;
    break;
   case 17:
    $call46 = _strcmp($u | 0, 155696) | 0;
    $cmp47 = ($call46 | 0) == 0;
    if ($cmp47) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call49 = _strcmp($u | 0, 152336) | 0;
    $cmp50 = ($call49 | 0) == 0;
    if ($cmp50) {
      label = 19;
      break;
    } else {
      label = 23;
      break;
    }
   case 19:
    $cmp53 = $n < 0.0;
    if ($cmp53) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $add56 = $n + .5;
    $add56_sink = $add56;
    label = 22;
    break;
   case 21:
    $sub59 = $n + -.5;
    $add56_sink = $sub59;
    label = 22;
    break;
   case 22:
    $conv57 = ~~$add56_sink;
    $retval_0 = $conv57;
    label = 33;
    break;
   case 23:
    $call64 = _strcmp($u | 0, 148968) | 0;
    $cmp65 = ($call64 | 0) == 0;
    if ($cmp65) {
      label = 24;
      break;
    } else {
      label = 28;
      break;
    }
   case 24:
    $mul68 = $n * 28.346456664;
    $cmp69 = $mul68 < 0.0;
    if ($cmp69) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $add73 = $mul68 + .5;
    $add73_sink = $add73;
    label = 27;
    break;
   case 26:
    $sub77 = $mul68 + -.5;
    $add73_sink = $sub77;
    label = 27;
    break;
   case 27:
    $conv74 = ~~$add73_sink;
    $retval_0 = $conv74;
    label = 33;
    break;
   case 28:
    $call82 = _strcmp($u | 0, 146168) | 0;
    $cmp83 = ($call82 | 0) == 0;
    if ($cmp83) {
      label = 29;
      break;
    } else {
      $retval_0 = 0;
      label = 33;
      break;
    }
   case 29:
    $mul86 = $n * 2.8346456663999997;
    $cmp87 = $mul86 < 0.0;
    if ($cmp87) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $add91 = $mul86 + .5;
    $add91_sink = $add91;
    label = 32;
    break;
   case 31:
    $sub95 = $mul86 + -.5;
    $add91_sink = $sub95;
    label = 32;
    break;
   case 32:
    $conv92 = ~~$add91_sink;
    $retval_0 = $conv92;
    label = 33;
    break;
   case 33:
    return $retval_0 | 0;
  }
  return 0;
}
function _get_int_msb_first($f, $sz, $val) {
  $f = $f | 0;
  $sz = $sz | 0;
  $val = $val | 0;
  var $cmp5 = 0, $i_06 = 0, $call = 0, $call1 = 0, $tobool = 0, $0 = 0, $shl = 0, $or = 0, $inc = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[$val >> 2] = 0;
    $cmp5 = ($sz | 0) == 0;
    if ($cmp5) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      $i_06 = 0;
      label = 3;
      break;
    }
   case 3:
    $call = _fgetc($f | 0) | 0;
    $call1 = _feof($f | 0) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 4:
    $0 = HEAP32[$val >> 2] | 0;
    $shl = $0 << 8;
    $or = $shl | $call;
    HEAP32[$val >> 2] = $or;
    $inc = $i_06 + 1 | 0;
    $cmp = $inc >>> 0 < $sz >>> 0;
    if ($cmp) {
      $i_06 = $inc;
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _get_int_lsb_first($f, $val) {
  $f = $f | 0;
  $val = $val | 0;
  var $call = 0, $call1 = 0, $tobool = 0, $0 = 0, $or = 0, $call_1 = 0, $call1_1 = 0, $tobool_1 = 0, $retval_0 = 0, $shl_1 = 0, $1 = 0, $or_1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[$val >> 2] = 0;
    $call = _fgetc($f | 0) | 0;
    $call1 = _feof($f | 0) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$val >> 2] | 0;
    $or = $0 | $call;
    HEAP32[$val >> 2] = $or;
    $call_1 = _fgetc($f | 0) | 0;
    $call1_1 = _feof($f | 0) | 0;
    $tobool_1 = ($call1_1 | 0) == 0;
    if ($tobool_1) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 4:
    return $retval_0 | 0;
   case 5:
    $shl_1 = $call_1 << 8;
    $1 = HEAP32[$val >> 2] | 0;
    $or_1 = $1 | $shl_1;
    HEAP32[$val >> 2] = $or_1;
    $retval_0 = 1;
    label = 4;
    break;
  }
  return 0;
}
function _usershape_close($dict, $p, $disc) {
  $dict = $dict | 0;
  $p = $p | 0;
  $disc = $disc | 0;
  var $0 = 0, $f = 0, $1 = 0, $2 = 0, $tobool = 0, $call = 0, $data = 0, $3 = 0, $4 = 0, $tobool2 = 0, $datafree = 0, $5 = 0, $6 = 0, $tobool3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $p;
    $f = $p + 20 | 0;
    $1 = $f;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _fclose($2 | 0) | 0;
    label = 4;
    break;
   case 4:
    $data = $p + 52 | 0;
    $3 = $data;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool2 = ($4 | 0) == 0;
    if ($tobool2) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $datafree = $p + 60 | 0;
    $5 = $datafree;
    $6 = HEAP32[$5 >> 2] | 0;
    $tobool3 = ($6 | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    FUNCTION_TABLE_vi[$6 & 1023]($0);
    label = 7;
    break;
   case 7:
    _free($p);
    return;
  }
}
function _gvloadimage($job, $us, $b, $filled, $target) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  $target = $target | 0;
  var $type = 0, $arraydecay = 0, $stringtype = 0, $0 = 0, $call = 0, $strlen = 0, $endptr = 0, $1 = 0, $call4 = 0, $call6 = 0, $cmp = 0, $call8 = 0, $engine = 0, $2 = 0, $tobool = 0, $loadimage9 = 0, $3 = 0, $tobool10 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = __stackBase__ | 0;
    $arraydecay = $type | 0;
    $stringtype = $us + 28 | 0;
    $0 = HEAP32[$stringtype >> 2] | 0;
    $call = _strcpy($arraydecay | 0, $0 | 0) | 0;
    $strlen = _strlen($arraydecay | 0) | 0;
    $endptr = $type + $strlen | 0;
    $1 = $endptr;
    tempBigInt = 58;
    HEAP8[$1] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$1 + 1 | 0] = tempBigInt & 255;
    $call4 = _strcat($arraydecay | 0, $target | 0) | 0;
    $call6 = _gvloadimage_select($job, $arraydecay) | 0;
    $cmp = ($call6 | 0) == 999;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call8 = _agerr(0, 157312, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $arraydecay, tempInt) | 0) | 0;
    label = 4;
    break;
   case 4:
    $engine = $job + 92 | 0;
    $2 = HEAP32[$engine >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $loadimage9 = $2 | 0;
    $3 = HEAP32[$loadimage9 >> 2] | 0;
    $tobool10 = ($3 | 0) == 0;
    if ($tobool10) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    FUNCTION_TABLE_viiii[$3 & 1023]($job, $us, $b, $filled);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _gvloadimage_select($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $gvc = 0, $0 = 0, $call = 0, $tobool = 0, $typeptr1 = 0, $1 = 0, $engine = 0, $2 = 0, $3 = 0, $engine2 = 0, $id = 0, $4 = 0, $id4 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $gvc = $job | 0;
    $0 = HEAP32[$gvc >> 2] | 0;
    $call = _gvplugin_load($0, 4, $str) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 999;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $typeptr1 = $call + 16 | 0;
    $1 = HEAP32[$typeptr1 >> 2] | 0;
    $engine = $1 + 12 | 0;
    $2 = HEAP32[$engine >> 2] | 0;
    $3 = $2;
    $engine2 = $job + 92 | 0;
    HEAP32[$engine2 >> 2] = $3;
    $id = $1 | 0;
    $4 = HEAP32[$id >> 2] | 0;
    $id4 = $job + 96 | 0;
    HEAP32[$id4 >> 2] = $4;
    $retval_0 = 300;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvtextlayout_select($gvc) {
  $gvc = $gvc | 0;
  var $call = 0, $tobool = 0, $typeptr1 = 0, $0 = 0, $engine = 0, $1 = 0, $2 = 0, $engine2 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _gvplugin_load($gvc, 2, 141752) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 999;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $typeptr1 = $call + 16 | 0;
    $0 = HEAP32[$typeptr1 >> 2] | 0;
    $engine = $0 + 12 | 0;
    $1 = HEAP32[$engine >> 2] | 0;
    $2 = $1;
    $engine2 = $gvc + 132 | 0;
    HEAP32[$engine2 >> 2] = $2;
    $retval_0 = 300;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _gvtextlayout($gvc, $para, $fontpath) {
  $gvc = $gvc | 0;
  $para = $para | 0;
  $fontpath = $fontpath | 0;
  var $engine = 0, $0 = 0, $tobool = 0, $textlayout1 = 0, $1 = 0, $tobool2 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $engine = $gvc + 132 | 0;
    $0 = HEAP32[$engine >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $textlayout1 = $0 | 0;
    $1 = HEAP32[$textlayout1 >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    if ($tobool2) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = FUNCTION_TABLE_iii[$1 & 1023]($para, $fontpath) | 0;
    $retval_0 = $call;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _Proutespline($edges, $edgen, $input, $evs, $output) {
  $edges = $edges | 0;
  $edgen = $edgen | 0;
  $input = $input | 0;
  $evs = $evs | 0;
  $output = $output | 0;
  var $tmp = 0, $tmp4 = 0, $ps = 0, $0 = 0, $pn = 0, $1 = 0, $2 = 0, $3 = 0, $arrayidx2 = 0, $4 = 0, $5 = 0, $6 = 0, $inc = 0, $7 = 0, $arrayidx5 = 0, $8 = 0, $9 = 0, $call = 0, $cmp = 0, $10 = 0, $pn9 = 0, $11 = 0, $ps10 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $input;
  $input = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$input >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$input + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $tmp4 = __stackBase__ + 16 | 0;
    $ps = $input | 0;
    $0 = HEAP32[$ps >> 2] | 0;
    $pn = $input + 4 | 0;
    $1 = HEAP32[$pn >> 2] | 0;
    _normv($tmp, $evs);
    $2 = $evs;
    $3 = $tmp;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $arrayidx2 = $evs + 16 | 0;
    _normv($tmp4, $arrayidx2);
    $4 = $arrayidx2;
    $5 = $tmp4;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    HEAP32[2292] = 0;
    _growops(4);
    $6 = HEAP32[2292] | 0;
    $inc = $6 + 1 | 0;
    HEAP32[2292] = $inc;
    $7 = HEAP32[2286] | 0;
    $arrayidx5 = $7 + ($6 << 4) | 0;
    $8 = $arrayidx5;
    $9 = $0;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $call = _reallyroutespline($edges, $edgen, $0, $1, $evs, $arrayidx2) | 0;
    $cmp = ($call | 0) == -1;
    if ($cmp) {
      $retval_0 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $10 = HEAP32[2292] | 0;
    $pn9 = $output + 4 | 0;
    HEAP32[$pn9 >> 2] = $10;
    $11 = HEAP32[2286] | 0;
    $ps10 = $output | 0;
    HEAP32[$ps10 >> 2] = $11;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _normv($agg_result, $v) {
  $agg_result = $agg_result | 0;
  $v = $v | 0;
  var $x = 0, $0 = 0.0, $mul = 0.0, $y = 0, $1 = 0.0, $mul3 = 0.0, $add = 0.0, $cmp = 0, $call = 0.0, $div = 0.0, $2 = 0.0, $div6 = 0.0, $3 = 0, $4 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $v;
  $v = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$v >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$v + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$v + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$v + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $v | 0;
    $0 = +HEAPF64[$x >> 3];
    $mul = $0 * $0;
    $y = $v + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $mul3 = $1 * $1;
    $add = $mul + $mul3;
    $cmp = $add > 1.0e-6;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = +Math_sqrt(+$add);
    $div = $0 / $call;
    HEAPF64[$x >> 3] = $div;
    $2 = +HEAPF64[$y >> 3];
    $div6 = $2 / $call;
    HEAPF64[$y >> 3] = $div6;
    label = 4;
    break;
   case 4:
    $3 = $agg_result;
    $4 = $v;
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _reallyroutespline($edges, $edgen, $inps, $inpn, $ev0, $ev1) {
  $edges = $edges | 0;
  $edgen = $edgen | 0;
  $inps = $inps | 0;
  $inpn = $inpn | 0;
  $ev0 = $ev0 | 0;
  $ev1 = $ev1 | 0;
  var $p1 = 0, $p2 = 0, $p = 0, $v1 = 0, $v2 = 0, $splitv = 0, $splitv1 = 0, $splitv2 = 0, $tmp = 0, $tmp46 = 0, $agg_tmp = 0, $tmp58 = 0, $agg_tmp59 = 0, $tmp60 = 0, $agg_tmp105 = 0, $agg_tmp110 = 0, $agg_tmp115 = 0, $0 = 0, $cmp = 0, $1 = 0, $tobool = 0, $mul = 0, $call = 0, $2 = 0, $tobool2 = 0, $3 = 0, $mul4 = 0, $call5 = 0, $4 = 0, $tobool6 = 0, $5 = 0, $t11 = 0, $cmp1269 = 0, $cmp2267 = 0, $sub24 = 0, $6 = 0, $t26 = 0, $i_070 = 0, $sub = 0, $7 = 0, $t14 = 0, $8 = 0.0, $arrayidx15 = 0, $arrayidx17 = 0, $call18 = 0.0, $add = 0.0, $t20 = 0, $inc = 0, $cmp12 = 0, $cmp3364 = 0, $9 = 0, $10 = 0, $11 = 0, $i_168 = 0, $12 = 0.0, $t28 = 0, $13 = 0.0, $div = 0.0, $inc30 = 0, $cmp22 = 0, $14 = 0, $i_265 = 0, $arrayidx36 = 0, $t38 = 0, $15 = 0.0, $call39 = 0.0, $16 = 0, $17 = 0, $arrayidx42 = 0, $t44 = 0, $18 = 0.0, $call45 = 0.0, $19 = 0, $inc48 = 0, $cmp33 = 0, $20 = 0, $_lcssa = 0, $call54 = 0, $tobool55 = 0, $cp1_sroa_0_0__idx = 0, $cp1_sroa_0_0_copyload = 0.0, $cp1_sroa_1_8__idx34 = 0, $cp1_sroa_1_8_copyload = 0.0, $cp2_sroa_0_0__idx = 0, $cp2_sroa_0_0_copyload = 0.0, $cp2_sroa_1_8__idx33 = 0, $cp2_sroa_1_8_copyload = 0.0, $sub62 = 0, $cmp6360 = 0, $x = 0, $21 = 0.0, $x78 = 0, $22 = 0.0, $x81 = 0, $y = 0, $23 = 0.0, $y93 = 0, $24 = 0.0, $y96 = 0, $i_363 = 0, $maxi_062 = 0, $maxd_061 = 0.0, $25 = 0, $t66 = 0, $26 = 0.0, $call67 = 0.0, $mul68 = 0.0, $call69 = 0.0, $mul71 = 0.0, $add72 = 0.0, $call73 = 0.0, $mul75 = 0.0, $add76 = 0.0, $call77 = 0.0, $mul79 = 0.0, $add80 = 0.0, $mul83 = 0.0, $mul86 = 0.0, $add87 = 0.0, $mul90 = 0.0, $add91 = 0.0, $mul94 = 0.0, $add95 = 0.0, $arrayidx97 = 0, $call98 = 0.0, $cmp99 = 0, $maxd_1 = 0.0, $maxi_1 = 0, $inc103 = 0, $cmp63 = 0, $maxi_0_lcssa = 0, $arrayidx106 = 0, $sub107 = 0, $arrayidx108 = 0, $add111 = 0, $arrayidx112 = 0, $call118 = 0, $sub120 = 0, $call121 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 272 | 0;
  tempParam = $ev0;
  $ev0 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$ev0 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$ev0 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$ev0 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$ev0 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $ev1;
  $ev1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$ev1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$ev1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$ev1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$ev1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p1 = __stackBase__ | 0;
    $p2 = __stackBase__ + 16 | 0;
    $p = __stackBase__ + 32 | 0;
    $v1 = __stackBase__ + 48 | 0;
    $v2 = __stackBase__ + 64 | 0;
    $splitv = __stackBase__ + 80 | 0;
    $splitv1 = __stackBase__ + 96 | 0;
    $splitv2 = __stackBase__ + 112 | 0;
    $tmp = __stackBase__ + 128 | 0;
    $tmp46 = __stackBase__ + 144 | 0;
    $agg_tmp = __stackBase__ + 160 | 0;
    $tmp58 = __stackBase__ + 176 | 0;
    $agg_tmp59 = __stackBase__ + 192 | 0;
    $tmp60 = __stackBase__ + 208 | 0;
    $agg_tmp105 = __stackBase__ + 224 | 0;
    $agg_tmp110 = __stackBase__ + 240 | 0;
    $agg_tmp115 = __stackBase__ + 256 | 0;
    $0 = HEAP32[1162] | 0;
    $cmp = ($0 | 0) < ($inpn | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $1 = HEAP32[1160] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $mul = $inpn * 40 & -1;
    $call = _malloc($mul) | 0;
    $2 = $call;
    HEAP32[1160] = $2;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      $retval_0 = -1;
      label = 20;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $3 = $1;
    $mul4 = $inpn * 40 & -1;
    $call5 = _realloc($3, $mul4) | 0;
    $4 = $call5;
    HEAP32[1160] = $4;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      $retval_0 = -1;
      label = 20;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    HEAP32[1162] = $inpn;
    label = 7;
    break;
   case 7:
    $5 = HEAP32[1160] | 0;
    $t11 = $5 | 0;
    HEAPF64[$t11 >> 3] = 0.0;
    $cmp1269 = ($inpn | 0) > 1;
    if ($cmp1269) {
      $i_070 = 1;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    $cmp2267 = ($inpn | 0) > 1;
    if ($cmp2267) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $sub24 = $inpn - 1 | 0;
    $6 = HEAP32[1160] | 0;
    $t26 = $6 + ($sub24 * 40 & -1) | 0;
    $i_168 = 1;
    label = 13;
    break;
   case 10:
    $sub = $i_070 - 1 | 0;
    $7 = HEAP32[1160] | 0;
    $t14 = $7 + ($sub * 40 & -1) | 0;
    $8 = +HEAPF64[$t14 >> 3];
    $arrayidx15 = $inps + ($i_070 << 4) | 0;
    $arrayidx17 = $inps + ($sub << 4) | 0;
    $call18 = +_dist($arrayidx15, $arrayidx17);
    $add = $8 + $call18;
    $t20 = $7 + ($i_070 * 40 & -1) | 0;
    HEAPF64[$t20 >> 3] = $add;
    $inc = $i_070 + 1 | 0;
    $cmp12 = ($inc | 0) < ($inpn | 0);
    if ($cmp12) {
      $i_070 = $inc;
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 11:
    $cmp3364 = ($inpn | 0) > 0;
    $9 = HEAP32[1160] | 0;
    if ($cmp3364) {
      label = 12;
      break;
    } else {
      $_lcssa = $9;
      label = 15;
      break;
    }
   case 12:
    $10 = $tmp;
    $11 = $tmp46;
    $i_265 = 0;
    $14 = $9;
    label = 14;
    break;
   case 13:
    $12 = +HEAPF64[$t26 >> 3];
    $t28 = $6 + ($i_168 * 40 & -1) | 0;
    $13 = +HEAPF64[$t28 >> 3];
    $div = $13 / $12;
    HEAPF64[$t28 >> 3] = $div;
    $inc30 = $i_168 + 1 | 0;
    $cmp22 = ($inc30 | 0) < ($inpn | 0);
    if ($cmp22) {
      $i_168 = $inc30;
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 14:
    $arrayidx36 = $14 + ($i_265 * 40 & -1) + 8 | 0;
    $t38 = $14 + ($i_265 * 40 & -1) | 0;
    $15 = +HEAPF64[$t38 >> 3];
    $call39 = +_B1($15);
    _scale2744($tmp, $ev0, $call39);
    $16 = $arrayidx36;
    HEAP32[$16 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$16 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$16 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$16 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $17 = HEAP32[1160] | 0;
    $arrayidx42 = $17 + ($i_265 * 40 & -1) + 24 | 0;
    $t44 = $17 + ($i_265 * 40 & -1) | 0;
    $18 = +HEAPF64[$t44 >> 3];
    $call45 = +_B2($18);
    _scale2744($tmp46, $ev1, $call45);
    $19 = $arrayidx42;
    HEAP32[$19 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$19 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$19 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$19 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    $inc48 = $i_265 + 1 | 0;
    $cmp33 = ($inc48 | 0) < ($inpn | 0);
    $20 = HEAP32[1160] | 0;
    if ($cmp33) {
      $i_265 = $inc48;
      $14 = $20;
      label = 14;
      break;
    } else {
      $_lcssa = $20;
      label = 15;
      break;
    }
   case 15:
    _mkspline($inps, $inpn, $_lcssa, $ev0, $ev1, $p1, $v1, $p2, $v2);
    $call54 = _splinefits($edges, $edgen, $p1, $v1, $p2, $v2, $inps, $inpn) | 0;
    $tobool55 = ($call54 | 0) == 0;
    if ($tobool55) {
      label = 16;
      break;
    } else {
      $retval_0 = 0;
      label = 20;
      break;
    }
   case 16:
    _scale2744($agg_tmp, $v1, .3333333333333333);
    _add($tmp58, $p1, $agg_tmp);
    $cp1_sroa_0_0__idx = $tmp58 | 0;
    $cp1_sroa_0_0_copyload = +HEAPF64[$cp1_sroa_0_0__idx >> 3];
    $cp1_sroa_1_8__idx34 = $tmp58 + 8 | 0;
    $cp1_sroa_1_8_copyload = +HEAPF64[$cp1_sroa_1_8__idx34 >> 3];
    _scale2744($agg_tmp59, $v2, .3333333333333333);
    _sub($tmp60, $p2, $agg_tmp59);
    $cp2_sroa_0_0__idx = $tmp60 | 0;
    $cp2_sroa_0_0_copyload = +HEAPF64[$cp2_sroa_0_0__idx >> 3];
    $cp2_sroa_1_8__idx33 = $tmp60 + 8 | 0;
    $cp2_sroa_1_8_copyload = +HEAPF64[$cp2_sroa_1_8__idx33 >> 3];
    $sub62 = $inpn - 1 | 0;
    $cmp6360 = ($sub62 | 0) > 1;
    if ($cmp6360) {
      label = 17;
      break;
    } else {
      $maxi_0_lcssa = -1;
      label = 19;
      break;
    }
   case 17:
    $x = $p1 | 0;
    $21 = +HEAPF64[$x >> 3];
    $x78 = $p2 | 0;
    $22 = +HEAPF64[$x78 >> 3];
    $x81 = $p | 0;
    $y = $p1 + 8 | 0;
    $23 = +HEAPF64[$y >> 3];
    $y93 = $p2 + 8 | 0;
    $24 = +HEAPF64[$y93 >> 3];
    $y96 = $p + 8 | 0;
    $maxd_061 = -1.0;
    $maxi_062 = -1;
    $i_363 = 1;
    label = 18;
    break;
   case 18:
    $25 = HEAP32[1160] | 0;
    $t66 = $25 + ($i_363 * 40 & -1) | 0;
    $26 = +HEAPF64[$t66 >> 3];
    $call67 = +_B0($26);
    $mul68 = $call67 * $21;
    $call69 = +_B1($26);
    $mul71 = $cp1_sroa_0_0_copyload * $call69;
    $add72 = $mul68 + $mul71;
    $call73 = +_B2($26);
    $mul75 = $cp2_sroa_0_0_copyload * $call73;
    $add76 = $add72 + $mul75;
    $call77 = +_B3($26);
    $mul79 = $call77 * $22;
    $add80 = $add76 + $mul79;
    HEAPF64[$x81 >> 3] = $add80;
    $mul83 = $call67 * $23;
    $mul86 = $cp1_sroa_1_8_copyload * $call69;
    $add87 = $mul86 + $mul83;
    $mul90 = $cp2_sroa_1_8_copyload * $call73;
    $add91 = $mul90 + $add87;
    $mul94 = $call77 * $24;
    $add95 = $mul94 + $add91;
    HEAPF64[$y96 >> 3] = $add95;
    $arrayidx97 = $inps + ($i_363 << 4) | 0;
    $call98 = +_dist($p, $arrayidx97);
    $cmp99 = $call98 > $maxd_061;
    $maxd_1 = $cmp99 ? $call98 : $maxd_061;
    $maxi_1 = $cmp99 ? $i_363 : $maxi_062;
    $inc103 = $i_363 + 1 | 0;
    $cmp63 = ($inc103 | 0) < ($sub62 | 0);
    if ($cmp63) {
      $maxd_061 = $maxd_1;
      $maxi_062 = $maxi_1;
      $i_363 = $inc103;
      label = 18;
      break;
    } else {
      $maxi_0_lcssa = $maxi_1;
      label = 19;
      break;
    }
   case 19:
    $arrayidx106 = $inps + ($maxi_0_lcssa << 4) | 0;
    $sub107 = $maxi_0_lcssa - 1 | 0;
    $arrayidx108 = $inps + ($sub107 << 4) | 0;
    _sub($agg_tmp105, $arrayidx106, $arrayidx108);
    _normv($splitv1, $agg_tmp105);
    $add111 = $maxi_0_lcssa + 1 | 0;
    $arrayidx112 = $inps + ($add111 << 4) | 0;
    _sub($agg_tmp110, $arrayidx112, $arrayidx106);
    _normv($splitv2, $agg_tmp110);
    _add($agg_tmp115, $splitv1, $splitv2);
    _normv($splitv, $agg_tmp115);
    $call118 = _reallyroutespline($edges, $edgen, $inps, $add111, $ev0, $splitv) | 0;
    $sub120 = $inpn - $maxi_0_lcssa | 0;
    $call121 = _reallyroutespline($edges, $edgen, $arrayidx106, $sub120, $splitv, $ev1) | 0;
    $retval_0 = 0;
    label = 20;
    break;
   case 20:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _dist($p1, $p2) {
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  var $sub = 0.0, $sub3 = 0.0, $call = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p2;
  $p2 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p2 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p2 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p2 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p2 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $sub = +HEAPF64[$p2 >> 3] - +HEAPF64[$p1 >> 3];
  $sub3 = +HEAPF64[$p2 + 8 >> 3] - +HEAPF64[$p1 + 8 >> 3];
  $call = +Math_sqrt(+($sub * $sub + $sub3 * $sub3));
  STACKTOP = __stackBase__;
  return +$call;
}
function _scale2744($agg_result, $p, $c) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $c = +$c;
  var $x = 0, $y = 0, $2 = 0, $3 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $x = $p | 0;
  HEAPF64[$x >> 3] = +HEAPF64[$x >> 3] * $c;
  $y = $p + 8 | 0;
  HEAPF64[$y >> 3] = +HEAPF64[$y >> 3] * $c;
  $2 = $agg_result;
  $3 = $p;
  HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
  HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
  HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
  HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _growops($newopn) {
  $newopn = $newopn | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $tobool = 0, $mul = 0, $call = 0, $2 = 0, $tobool2 = 0, $3 = 0, $call4 = 0, $4 = 0, $mul6 = 0, $call7 = 0, $5 = 0, $tobool8 = 0, $6 = 0, $call10 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2290] | 0;
    $cmp = ($0 | 0) < ($newopn | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $1 = HEAP32[2286] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $mul = $newopn << 4;
    $call = _malloc($mul) | 0;
    $2 = $call;
    HEAP32[2286] = $2;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $3 = HEAP32[_stderr >> 2] | 0;
    $call4 = _fprintf($3 | 0, 126624, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 151816, HEAP32[tempInt + 8 >> 2] = 519, HEAP32[tempInt + 16 >> 2] = 123280, tempInt) | 0) | 0;
    _abort();
   case 6:
    $4 = $1;
    $mul6 = $newopn << 4;
    $call7 = _realloc($4, $mul6) | 0;
    $5 = $call7;
    HEAP32[2286] = $5;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $6 = HEAP32[_stderr >> 2] | 0;
    $call10 = _fprintf($6 | 0, 126624, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 151816, HEAP32[tempInt + 8 >> 2] = 525, HEAP32[tempInt + 16 >> 2] = 117312, tempInt) | 0) | 0;
    _abort();
   case 8:
    HEAP32[2290] = $newopn;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _B0($t) {
  $t = +$t;
  var $sub = 0.0;
  $sub = 1.0 - $t;
  return +($sub * $sub * $sub);
}
function _B3($t) {
  $t = +$t;
  return +($t * $t * $t);
}
function _B01($t) {
  $t = +$t;
  var $sub = 0.0;
  $sub = 1.0 - $t;
  return +($sub * $sub * ($sub + $t * 3.0));
}
function _B23($t) {
  $t = +$t;
  return +($t * $t * ((1.0 - $t) * 3.0 + $t));
}
function _points2coeff($v0, $v1, $v2, $v3, $coeff) {
  $v0 = +$v0;
  $v1 = +$v1;
  $v2 = +$v2;
  $v3 = +$v3;
  $coeff = $coeff | 0;
  var $mul1 = 0.0;
  $mul1 = $v2 * 3.0;
  HEAPF64[$coeff + 24 >> 3] = $v1 * 3.0 + $v3 - ($mul1 + $v0);
  HEAPF64[$coeff + 16 >> 3] = $v0 * 3.0 + $mul1 - $v1 * 6.0;
  HEAPF64[$coeff + 8 >> 3] = ($v1 - $v0) * 3.0;
  HEAPF64[$coeff >> 3] = $v0;
  return;
}
function _addroot($root, $roots, $rootnp) {
  $root = +$root;
  $roots = $roots | 0;
  $rootnp = $rootnp | 0;
  var $cmp = 0, $cmp1 = 0, $or_cond = 0, $0 = 0, $arrayidx = 0, $1 = 0, $inc = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = $root >= 0.0;
    $cmp1 = $root <= 1.0;
    $or_cond = $cmp & $cmp1;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[$rootnp >> 2] | 0;
    $arrayidx = $roots + ($0 << 3) | 0;
    HEAPF64[$arrayidx >> 3] = $root;
    $1 = HEAP32[$rootnp >> 2] | 0;
    $inc = $1 + 1 | 0;
    HEAP32[$rootnp >> 2] = $inc;
    label = 4;
    break;
   case 4:
    return;
  }
}
function _dot($p1, $p2) {
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  var tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p2;
  $p2 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p2 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p2 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p2 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p2 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  STACKTOP = __stackBase__;
  return +(+HEAPF64[$p1 >> 3] * +HEAPF64[$p2 >> 3] + +HEAPF64[$p1 + 8 >> 3] * +HEAPF64[$p2 + 8 >> 3]);
}
function _mkspline($inps, $inpn, $tnas, $ev0, $ev1, $sp0, $sv0, $sp1, $sv1) {
  $inps = $inps | 0;
  $inpn = $inpn | 0;
  $tnas = $tnas | 0;
  $ev0 = $ev0 | 0;
  $ev1 = $ev1 | 0;
  $sp0 = $sp0 | 0;
  $sv0 = $sv0 | 0;
  $sp1 = $sp1 | 0;
  $sv1 = $sv1 | 0;
  var $tmp = 0, $agg_tmp = 0, $agg_tmp51 = 0, $agg_tmp55 = 0, $tmp123 = 0, $tmp126 = 0, $cmp2 = 0, $sub = 0, $arrayidx56 = 0, $i_08 = 0, $c_sroa_3_07 = 0.0, $c_sroa_1_06 = 0.0, $c_sroa_0_05 = 0.0, $x_sroa_0_04 = 0.0, $x_sroa_1_03 = 0.0, $arrayidx20 = 0, $call = 0.0, $add = 0.0, $arrayidx31 = 0, $call32 = 0.0, $add35 = 0.0, $call46 = 0.0, $add49 = 0.0, $arrayidx50 = 0, $t = 0, $0 = 0.0, $call54 = 0.0, $1 = 0.0, $call59 = 0.0, $call64 = 0.0, $add66 = 0.0, $call70 = 0.0, $add72 = 0.0, $inc = 0, $cmp = 0, $c_sroa_3_0_lcssa = 0.0, $c_sroa_1_0_lcssa = 0.0, $c_sroa_0_0_lcssa = 0.0, $x_sroa_0_0_lcssa = 0.0, $x_sroa_1_0_lcssa = 0.0, $mul = 0.0, $mul81 = 0.0, $sub82 = 0.0, $mul86 = 0.0, $mul90 = 0.0, $sub91 = 0.0, $mul95 = 0.0, $mul99 = 0.0, $sub100 = 0.0, $cmp101 = 0, $sub102 = 0.0, $cond = 0.0, $cmp103 = 0, $div = 0.0, $div104 = 0.0, $scale0_0 = 0.0, $scale3_0 = 0.0, $sub108 = 0.0, $cond110 = 0.0, $cmp111 = 0, $cmp112 = 0, $or_cond = 0, $cmp114 = 0, $or_cond1 = 0, $sub117 = 0, $arrayidx118 = 0, $call119 = 0.0, $div120 = 0.0, $scale0_1 = 0.0, $scale3_1 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $sub124 = 0, $arrayidx125 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  tempParam = $ev0;
  $ev0 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$ev0 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$ev0 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$ev0 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$ev0 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $ev1;
  $ev1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$ev1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$ev1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$ev1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$ev1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tmp = __stackBase__ | 0;
    $agg_tmp = __stackBase__ + 16 | 0;
    $agg_tmp51 = __stackBase__ + 32 | 0;
    $agg_tmp55 = __stackBase__ + 48 | 0;
    $tmp123 = __stackBase__ + 64 | 0;
    $tmp126 = __stackBase__ + 80 | 0;
    $cmp2 = ($inpn | 0) > 0;
    if ($cmp2) {
      label = 3;
      break;
    } else {
      $x_sroa_1_0_lcssa = 0.0;
      $x_sroa_0_0_lcssa = 0.0;
      $c_sroa_0_0_lcssa = 0.0;
      $c_sroa_1_0_lcssa = 0.0;
      $c_sroa_3_0_lcssa = 0.0;
      label = 5;
      break;
    }
   case 3:
    $sub = $inpn - 1 | 0;
    $arrayidx56 = $inps + ($sub << 4) | 0;
    $x_sroa_1_03 = 0.0;
    $x_sroa_0_04 = 0.0;
    $c_sroa_0_05 = 0.0;
    $c_sroa_1_06 = 0.0;
    $c_sroa_3_07 = 0.0;
    $i_08 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx20 = $tnas + ($i_08 * 40 & -1) + 8 | 0;
    $call = +_dot($arrayidx20, $arrayidx20);
    $add = $c_sroa_0_05 + $call;
    $arrayidx31 = $tnas + ($i_08 * 40 & -1) + 24 | 0;
    $call32 = +_dot($arrayidx20, $arrayidx31);
    $add35 = $c_sroa_1_06 + $call32;
    $call46 = +_dot($arrayidx31, $arrayidx31);
    $add49 = $c_sroa_3_07 + $call46;
    $arrayidx50 = $inps + ($i_08 << 4) | 0;
    $t = $tnas + ($i_08 * 40 & -1) | 0;
    $0 = +HEAPF64[$t >> 3];
    $call54 = +_B01($0);
    _scale2744($agg_tmp51, $inps, $call54);
    $1 = +HEAPF64[$t >> 3];
    $call59 = +_B23($1);
    _scale2744($agg_tmp55, $arrayidx56, $call59);
    _add($agg_tmp, $agg_tmp51, $agg_tmp55);
    _sub($tmp, $arrayidx50, $agg_tmp);
    $call64 = +_dot($arrayidx20, $tmp);
    $add66 = $x_sroa_0_04 + $call64;
    $call70 = +_dot($arrayidx31, $tmp);
    $add72 = $x_sroa_1_03 + $call70;
    $inc = $i_08 + 1 | 0;
    $cmp = ($inc | 0) < ($inpn | 0);
    if ($cmp) {
      $x_sroa_1_03 = $add72;
      $x_sroa_0_04 = $add66;
      $c_sroa_0_05 = $add;
      $c_sroa_1_06 = $add35;
      $c_sroa_3_07 = $add49;
      $i_08 = $inc;
      label = 4;
      break;
    } else {
      $x_sroa_1_0_lcssa = $add72;
      $x_sroa_0_0_lcssa = $add66;
      $c_sroa_0_0_lcssa = $add;
      $c_sroa_1_0_lcssa = $add35;
      $c_sroa_3_0_lcssa = $add49;
      label = 5;
      break;
    }
   case 5:
    $mul = $c_sroa_0_0_lcssa * $c_sroa_3_0_lcssa;
    $mul81 = $c_sroa_1_0_lcssa * $c_sroa_1_0_lcssa;
    $sub82 = $mul - $mul81;
    $mul86 = $x_sroa_1_0_lcssa * $c_sroa_0_0_lcssa;
    $mul90 = $x_sroa_0_0_lcssa * $c_sroa_1_0_lcssa;
    $sub91 = $mul86 - $mul90;
    $mul95 = $x_sroa_0_0_lcssa * $c_sroa_3_0_lcssa;
    $mul99 = $x_sroa_1_0_lcssa * $c_sroa_1_0_lcssa;
    $sub100 = $mul95 - $mul99;
    $cmp101 = $sub82 >= 0.0;
    if ($cmp101) {
      $cond = $sub82;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $sub102 = -0.0 - $sub82;
    $cond = $sub102;
    label = 7;
    break;
   case 7:
    $cmp103 = $cond < 1.0e-6;
    if ($cmp103) {
      $scale3_0 = 0.0;
      $scale0_0 = 0.0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $div = $sub100 / $sub82;
    $div104 = $sub91 / $sub82;
    $scale3_0 = $div104;
    $scale0_0 = $div;
    label = 9;
    break;
   case 9:
    if ($cmp101) {
      $cond110 = $sub82;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $sub108 = -0.0 - $sub82;
    $cond110 = $sub108;
    label = 11;
    break;
   case 11:
    $cmp111 = $cond110 >= 1.0e-6;
    $cmp112 = $scale0_0 > 0.0;
    $or_cond = $cmp111 & $cmp112;
    $cmp114 = $scale3_0 > 0.0;
    $or_cond1 = $or_cond & $cmp114;
    if ($or_cond1) {
      $scale3_1 = $scale3_0;
      $scale0_1 = $scale0_0;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $sub117 = $inpn - 1 | 0;
    $arrayidx118 = $inps + ($sub117 << 4) | 0;
    $call119 = +_dist($inps, $arrayidx118);
    $div120 = $call119 / 3.0;
    $scale3_1 = $div120;
    $scale0_1 = $div120;
    label = 13;
    break;
   case 13:
    $2 = $sp0;
    $3 = $inps;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    _scale2744($tmp123, $ev0, $scale0_1);
    $4 = $sv0;
    $5 = $tmp123;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $sub124 = $inpn - 1 | 0;
    $arrayidx125 = $inps + ($sub124 << 4) | 0;
    $6 = $sp1;
    $7 = $arrayidx125;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    _scale2744($tmp126, $ev1, $scale3_1);
    $8 = $sv1;
    $9 = $tmp126;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _splinefits($edges, $edgen, $pa, $va, $pb, $vb, $inps, $inpn) {
  $edges = $edges | 0;
  $edgen = $edgen | 0;
  $pa = $pa | 0;
  $va = $va | 0;
  $pb = $pb | 0;
  $vb = $vb | 0;
  $inps = $inps | 0;
  $inpn = $inpn | 0;
  var $sps = 0, $cmp = 0, $x = 0, $0 = 0.0, $arrayidx = 0, $x1 = 0, $y = 0, $1 = 0.0, $y3 = 0, $x5 = 0, $2 = 0.0, $x7 = 0, $y9 = 0, $3 = 0.0, $y14 = 0, $x15 = 0, $4 = 0.0, $x16 = 0, $5 = 0.0, $x20 = 0, $y21 = 0, $6 = 0.0, $y22 = 0, $7 = 0.0, $y27 = 0, $8 = 0.0, $x30 = 0, $y33 = 0, $a_0 = 0.0, $b_0 = 0.0, $first_0 = 0, $mul = 0.0, $div = 0.0, $add = 0.0, $mul10 = 0.0, $div11 = 0.0, $add12 = 0.0, $mul17 = 0.0, $div18 = 0.0, $sub = 0.0, $mul23 = 0.0, $div24 = 0.0, $sub25 = 0.0, $call = 0.0, $call34 = 0.0, $sub35 = 0.0, $cmp36 = 0, $call38 = 0, $tobool39 = 0, $9 = 0, $add41 = 0, $10 = 0, $opl_promoted20 = 0, $x45 = 0, $11 = 0.0, $x47 = 0, $y49 = 0, $12 = 0.0, $inc = 0, $y51 = 0, $x45_1 = 0, $13 = 0.0, $x47_1 = 0, $y49_1 = 0, $14 = 0.0, $inc_1 = 0, $y51_1 = 0, $x45_2 = 0, $15 = 0.0, $x47_2 = 0, $y49_2 = 0, $16 = 0.0, $y51_2 = 0, $17 = 0, $cmp54 = 0, $cmp56 = 0, $or_cond = 0, $18 = 0, $add60 = 0, $19 = 0, $opl_promoted = 0, $x65 = 0, $20 = 0.0, $x67 = 0, $y69 = 0, $21 = 0.0, $inc70 = 0, $y72 = 0, $x65_1 = 0, $22 = 0.0, $x67_1 = 0, $y69_1 = 0, $23 = 0.0, $inc70_1 = 0, $y72_1 = 0, $x65_2 = 0, $24 = 0.0, $x67_2 = 0, $y69_2 = 0, $25 = 0.0, $y72_2 = 0, $26 = 0, $cmp78 = 0, $div80 = 0.0, $div81 = 0.0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  tempParam = $pa;
  $pa = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pa >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pa + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pa + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pa + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $va;
  $va = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$va >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$va + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$va + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$va + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $pb;
  $pb = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pb >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pb + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pb + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pb + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $vb;
  $vb = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$vb >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$vb + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$vb + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$vb + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sps = __stackBase__ | 0;
    $cmp = ($inpn | 0) == 2;
    $x = $pa | 0;
    $0 = +HEAPF64[$x >> 3];
    $arrayidx = $sps | 0;
    $x1 = $sps | 0;
    $y = $pa + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $y3 = $sps + 8 | 0;
    $x5 = $va | 0;
    $2 = +HEAPF64[$x5 >> 3];
    $x7 = $sps + 16 | 0;
    $y9 = $va + 8 | 0;
    $3 = +HEAPF64[$y9 >> 3];
    $y14 = $sps + 24 | 0;
    $x15 = $pb | 0;
    $4 = +HEAPF64[$x15 >> 3];
    $x16 = $vb | 0;
    $5 = +HEAPF64[$x16 >> 3];
    $x20 = $sps + 32 | 0;
    $y21 = $pb + 8 | 0;
    $6 = +HEAPF64[$y21 >> 3];
    $y22 = $vb + 8 | 0;
    $7 = +HEAPF64[$y22 >> 3];
    $y27 = $sps + 40 | 0;
    $8 = +HEAPF64[$x15 >> 3];
    $x30 = $sps + 48 | 0;
    $y33 = $sps + 56 | 0;
    $first_0 = 1;
    $b_0 = 4.0;
    $a_0 = 4.0;
    label = 3;
    break;
   case 3:
    HEAPF64[$x1 >> 3] = $0;
    HEAPF64[$y3 >> 3] = $1;
    $mul = $a_0 * $2;
    $div = $mul / 3.0;
    $add = $0 + $div;
    HEAPF64[$x7 >> 3] = $add;
    $mul10 = $a_0 * $3;
    $div11 = $mul10 / 3.0;
    $add12 = $1 + $div11;
    HEAPF64[$y14 >> 3] = $add12;
    $mul17 = $b_0 * $5;
    $div18 = $mul17 / 3.0;
    $sub = $4 - $div18;
    HEAPF64[$x20 >> 3] = $sub;
    $mul23 = $b_0 * $7;
    $div24 = $mul23 / 3.0;
    $sub25 = $6 - $div24;
    HEAPF64[$y27 >> 3] = $sub25;
    HEAPF64[$x30 >> 3] = $8;
    HEAPF64[$y33 >> 3] = $6;
    if ($first_0) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call = +_dist_n($arrayidx, 4);
    $call34 = +_dist_n($inps, $inpn);
    $sub35 = $call34 + -.001;
    $cmp36 = $call < $sub35;
    if ($cmp36) {
      $retval_0 = 0;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call38 = _splineisinside($edges, $edgen, $arrayidx) | 0;
    $tobool39 = ($call38 | 0) == 0;
    if ($tobool39) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $9 = HEAP32[2292] | 0;
    $add41 = $9 + 4 | 0;
    _growops($add41);
    $10 = HEAP32[2286] | 0;
    $opl_promoted20 = HEAP32[2292] | 0;
    $x45 = $sps + 16 | 0;
    $11 = +HEAPF64[$x45 >> 3];
    $x47 = $10 + ($opl_promoted20 << 4) | 0;
    HEAPF64[$x47 >> 3] = $11;
    $y49 = $sps + 24 | 0;
    $12 = +HEAPF64[$y49 >> 3];
    $inc = $opl_promoted20 + 1 | 0;
    $y51 = $10 + ($opl_promoted20 << 4) + 8 | 0;
    HEAPF64[$y51 >> 3] = $12;
    $x45_1 = $sps + 32 | 0;
    $13 = +HEAPF64[$x45_1 >> 3];
    $x47_1 = $10 + ($inc << 4) | 0;
    HEAPF64[$x47_1 >> 3] = $13;
    $y49_1 = $sps + 40 | 0;
    $14 = +HEAPF64[$y49_1 >> 3];
    $inc_1 = $opl_promoted20 + 2 | 0;
    $y51_1 = $10 + ($inc << 4) + 8 | 0;
    HEAPF64[$y51_1 >> 3] = $14;
    $x45_2 = $sps + 48 | 0;
    $15 = +HEAPF64[$x45_2 >> 3];
    $x47_2 = $10 + ($inc_1 << 4) | 0;
    HEAPF64[$x47_2 >> 3] = $15;
    $y49_2 = $sps + 56 | 0;
    $16 = +HEAPF64[$y49_2 >> 3];
    $y51_2 = $10 + ($inc_1 << 4) + 8 | 0;
    HEAPF64[$y51_2 >> 3] = $16;
    $17 = $opl_promoted20 + 3 | 0;
    HEAP32[2292] = $17;
    $retval_0 = 1;
    label = 12;
    break;
   case 7:
    $cmp54 = $a_0 == 0.0;
    $cmp56 = $b_0 == 0.0;
    $or_cond = $cmp54 & $cmp56;
    if ($or_cond) {
      label = 8;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    if ($cmp) {
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 9:
    $18 = HEAP32[2292] | 0;
    $add60 = $18 + 4 | 0;
    _growops($add60);
    $19 = HEAP32[2286] | 0;
    $opl_promoted = HEAP32[2292] | 0;
    $x65 = $sps + 16 | 0;
    $20 = +HEAPF64[$x65 >> 3];
    $x67 = $19 + ($opl_promoted << 4) | 0;
    HEAPF64[$x67 >> 3] = $20;
    $y69 = $sps + 24 | 0;
    $21 = +HEAPF64[$y69 >> 3];
    $inc70 = $opl_promoted + 1 | 0;
    $y72 = $19 + ($opl_promoted << 4) + 8 | 0;
    HEAPF64[$y72 >> 3] = $21;
    $x65_1 = $sps + 32 | 0;
    $22 = +HEAPF64[$x65_1 >> 3];
    $x67_1 = $19 + ($inc70 << 4) | 0;
    HEAPF64[$x67_1 >> 3] = $22;
    $y69_1 = $sps + 40 | 0;
    $23 = +HEAPF64[$y69_1 >> 3];
    $inc70_1 = $opl_promoted + 2 | 0;
    $y72_1 = $19 + ($inc70 << 4) + 8 | 0;
    HEAPF64[$y72_1 >> 3] = $23;
    $x65_2 = $sps + 48 | 0;
    $24 = +HEAPF64[$x65_2 >> 3];
    $x67_2 = $19 + ($inc70_1 << 4) | 0;
    HEAPF64[$x67_2 >> 3] = $24;
    $y69_2 = $sps + 56 | 0;
    $25 = +HEAPF64[$y69_2 >> 3];
    $y72_2 = $19 + ($inc70_1 << 4) + 8 | 0;
    HEAPF64[$y72_2 >> 3] = $25;
    $26 = $opl_promoted + 3 | 0;
    HEAP32[2292] = $26;
    $retval_0 = 1;
    label = 12;
    break;
   case 10:
    $cmp78 = $a_0 > .01;
    if ($cmp78) {
      label = 11;
      break;
    } else {
      $first_0 = 0;
      $b_0 = 0.0;
      $a_0 = 0.0;
      label = 3;
      break;
    }
   case 11:
    $div80 = $a_0 * .5;
    $div81 = $b_0 * .5;
    $first_0 = 0;
    $b_0 = $div81;
    $a_0 = $div80;
    label = 3;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _add($agg_result, $p1, $p2) {
  $agg_result = $agg_result | 0;
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  var $x1 = 0, $y2 = 0, $4 = 0, $5 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p2;
  $p2 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p2 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p2 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p2 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p2 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $x1 = $p1 | 0;
  HEAPF64[$x1 >> 3] = +HEAPF64[$p2 >> 3] + +HEAPF64[$x1 >> 3];
  $y2 = $p1 + 8 | 0;
  HEAPF64[$y2 >> 3] = +HEAPF64[$p2 + 8 >> 3] + +HEAPF64[$y2 >> 3];
  $4 = $agg_result;
  $5 = $p1;
  HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
  HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
  HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
  HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _sub($agg_result, $p1, $p2) {
  $agg_result = $agg_result | 0;
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  var $x1 = 0, $y2 = 0, $4 = 0, $5 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p2;
  $p2 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p2 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p2 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p2 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p2 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $x1 = $p1 | 0;
  HEAPF64[$x1 >> 3] = +HEAPF64[$x1 >> 3] - +HEAPF64[$p2 >> 3];
  $y2 = $p1 + 8 | 0;
  HEAPF64[$y2 >> 3] = +HEAPF64[$y2 >> 3] - +HEAPF64[$p2 + 8 >> 3];
  $4 = $agg_result;
  $5 = $p1;
  HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
  HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
  HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
  HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
  STACKTOP = __stackBase__;
  return;
}
function _dist_n($p, $n) {
  $p = $p | 0;
  $n = $n | 0;
  var $cmp18 = 0, $rv_020 = 0.0, $i_019 = 0, $x = 0, $0 = 0.0, $sub = 0, $x2 = 0, $1 = 0.0, $sub3 = 0.0, $mul = 0.0, $y = 0, $2 = 0.0, $y13 = 0, $3 = 0.0, $sub14 = 0.0, $mul21 = 0.0, $add = 0.0, $call = 0.0, $add22 = 0.0, $inc = 0, $cmp = 0, $rv_0_lcssa = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp18 = ($n | 0) > 1;
    if ($cmp18) {
      $i_019 = 1;
      $rv_020 = 0.0;
      label = 3;
      break;
    } else {
      $rv_0_lcssa = 0.0;
      label = 4;
      break;
    }
   case 3:
    $x = $p + ($i_019 << 4) | 0;
    $0 = +HEAPF64[$x >> 3];
    $sub = $i_019 - 1 | 0;
    $x2 = $p + ($sub << 4) | 0;
    $1 = +HEAPF64[$x2 >> 3];
    $sub3 = $0 - $1;
    $mul = $sub3 * $sub3;
    $y = $p + ($i_019 << 4) + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y13 = $p + ($sub << 4) + 8 | 0;
    $3 = +HEAPF64[$y13 >> 3];
    $sub14 = $2 - $3;
    $mul21 = $sub14 * $sub14;
    $add = $mul + $mul21;
    $call = +Math_sqrt(+$add);
    $add22 = $rv_020 + $call;
    $inc = $i_019 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_019 = $inc;
      $rv_020 = $add22;
      label = 3;
      break;
    } else {
      $rv_0_lcssa = $add22;
      label = 4;
      break;
    }
   case 4:
    return +$rv_0_lcssa;
  }
  return 0.0;
}
function _splineisinside($edges, $edgen, $sps) {
  $edges = $edges | 0;
  $edgen = $edgen | 0;
  $sps = $sps | 0;
  var $roots = 0, $lps = 0, $cmp41 = 0, $arrayidx = 0, $0 = 0, $arrayidx2 = 0, $1 = 0, $arraydecay4 = 0, $x = 0, $x33 = 0, $x36 = 0, $x40 = 0, $y = 0, $y47 = 0, $y51 = 0, $y55 = 0, $x61 = 0, $y70 = 0, $x82 = 0, $y91 = 0, $ei_042 = 0, $arrayidx1 = 0, $2 = 0, $b = 0, $3 = 0, $call = 0, $cmp5 = 0, $cmp738 = 0, $or_cond43 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $rooti_039 = 0, $arrayidx9 = 0, $8 = 0.0, $cmp10 = 0, $cmp12 = 0, $or_cond = 0, $mul = 0.0, $mul16 = 0.0, $mul17 = 0.0, $mul18 = 0.0, $sub = 0.0, $mul19 = 0.0, $mul22 = 0.0, $mul24 = 0.0, $mul27 = 0.0, $mul29 = 0.0, $9 = 0.0, $mul31 = 0.0, $10 = 0.0, $mul34 = 0.0, $add = 0.0, $11 = 0.0, $mul37 = 0.0, $add38 = 0.0, $12 = 0.0, $mul41 = 0.0, $add42 = 0.0, $13 = 0.0, $mul45 = 0.0, $14 = 0.0, $mul48 = 0.0, $add49 = 0.0, $15 = 0.0, $mul52 = 0.0, $add53 = 0.0, $16 = 0.0, $mul56 = 0.0, $add57 = 0.0, $sub62 = 0.0, $mul67 = 0.0, $sub71 = 0.0, $mul76 = 0.0, $add77 = 0.0, $cmp78 = 0, $sub83 = 0.0, $mul88 = 0.0, $sub92 = 0.0, $mul97 = 0.0, $add98 = 0.0, $cmp99 = 0, $inc = 0, $cmp7 = 0, $inc103 = 0, $cmp = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $roots = __stackBase__ | 0;
    $lps = __stackBase__ + 32 | 0;
    $cmp41 = ($edgen | 0) > 0;
    if ($cmp41) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 3:
    $arrayidx = $lps | 0;
    $0 = $lps;
    $arrayidx2 = $lps + 16 | 0;
    $1 = $arrayidx2;
    $arraydecay4 = $roots | 0;
    $x = $sps | 0;
    $x33 = $sps + 16 | 0;
    $x36 = $sps + 32 | 0;
    $x40 = $sps + 48 | 0;
    $y = $sps + 8 | 0;
    $y47 = $sps + 24 | 0;
    $y51 = $sps + 40 | 0;
    $y55 = $sps + 56 | 0;
    $x61 = $lps | 0;
    $y70 = $lps + 8 | 0;
    $x82 = $arrayidx2 | 0;
    $y91 = $lps + 24 | 0;
    $ei_042 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx1 = $edges + ($ei_042 << 5) | 0;
    $2 = $arrayidx1;
    HEAP32[$0 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    $b = $edges + ($ei_042 << 5) + 16 | 0;
    $3 = $b;
    HEAP32[$1 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $call = _splineintersectsline($sps, $arrayidx, $arraydecay4) | 0;
    $cmp5 = ($call | 0) != 4;
    $cmp738 = ($call | 0) > 0;
    $or_cond43 = $cmp5 & $cmp738;
    if ($or_cond43) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $4 = +HEAPF64[$x61 >> 3];
    $5 = +HEAPF64[$y70 >> 3];
    $6 = +HEAPF64[$x82 >> 3];
    $7 = +HEAPF64[$y91 >> 3];
    $rooti_039 = 0;
    label = 6;
    break;
   case 6:
    $arrayidx9 = $roots + ($rooti_039 << 3) | 0;
    $8 = +HEAPF64[$arrayidx9 >> 3];
    $cmp10 = $8 < 1.0e-6;
    $cmp12 = $8 > .999999;
    $or_cond = $cmp10 | $cmp12;
    if ($or_cond) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $mul = $8 * $8;
    $mul16 = $8 * $mul;
    $mul17 = $8 * 3.0;
    $mul18 = $8 * $mul17;
    $sub = 1.0 - $8;
    $mul19 = $sub * $mul18;
    $mul22 = $mul17 * $sub;
    $mul24 = $sub * $mul22;
    $mul27 = $sub * $sub;
    $mul29 = $sub * $mul27;
    $9 = +HEAPF64[$x >> 3];
    $mul31 = $mul29 * $9;
    $10 = +HEAPF64[$x33 >> 3];
    $mul34 = $mul24 * $10;
    $add = $mul31 + $mul34;
    $11 = +HEAPF64[$x36 >> 3];
    $mul37 = $mul19 * $11;
    $add38 = $add + $mul37;
    $12 = +HEAPF64[$x40 >> 3];
    $mul41 = $mul16 * $12;
    $add42 = $add38 + $mul41;
    $13 = +HEAPF64[$y >> 3];
    $mul45 = $mul29 * $13;
    $14 = +HEAPF64[$y47 >> 3];
    $mul48 = $mul24 * $14;
    $add49 = $mul45 + $mul48;
    $15 = +HEAPF64[$y51 >> 3];
    $mul52 = $mul19 * $15;
    $add53 = $add49 + $mul52;
    $16 = +HEAPF64[$y55 >> 3];
    $mul56 = $mul16 * $16;
    $add57 = $add53 + $mul56;
    $sub62 = $add42 - $4;
    $mul67 = $sub62 * $sub62;
    $sub71 = $add57 - $5;
    $mul76 = $sub71 * $sub71;
    $add77 = $mul67 + $mul76;
    $cmp78 = $add77 < .001;
    if ($cmp78) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $sub83 = $add42 - $6;
    $mul88 = $sub83 * $sub83;
    $sub92 = $add57 - $7;
    $mul97 = $sub92 * $sub92;
    $add98 = $mul88 + $mul97;
    $cmp99 = $add98 < .001;
    if ($cmp99) {
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 11;
      break;
    }
   case 9:
    $inc = $rooti_039 + 1 | 0;
    $cmp7 = ($inc | 0) < ($call | 0);
    if ($cmp7) {
      $rooti_039 = $inc;
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $inc103 = $ei_042 + 1 | 0;
    $cmp = ($inc103 | 0) < ($edgen | 0);
    if ($cmp) {
      $ei_042 = $inc103;
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 11:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _splineintersectsline($sps, $lps, $roots) {
  $sps = $sps | 0;
  $lps = $lps | 0;
  $roots = $roots | 0;
  var $scoeff = 0, $xroots = 0, $yroots = 0, $rootn = 0, $x = 0, $0 = 0.0, $x3 = 0, $1 = 0.0, $sub = 0.0, $y = 0, $2 = 0.0, $y10 = 0, $3 = 0.0, $sub13 = 0.0, $cmp = 0, $cmp17 = 0, $x20 = 0, $4 = 0.0, $x22 = 0, $5 = 0.0, $x24 = 0, $6 = 0.0, $x26 = 0, $7 = 0.0, $arraydecay = 0, $8 = 0.0, $sub29 = 0.0, $arraydecay31 = 0, $call = 0, $y33 = 0, $9 = 0.0, $y35 = 0, $10 = 0.0, $y37 = 0, $11 = 0.0, $y39 = 0, $12 = 0.0, $13 = 0.0, $sub43 = 0.0, $arraydecay45 = 0, $call46 = 0, $cmp47 = 0, $cmp49 = 0, $cmp5187 = 0, $j_088 = 0, $arrayidx52 = 0, $14 = 0.0, $inc = 0, $cmp51 = 0, $cmp5790 = 0, $cmp6892 = 0, $i_091 = 0, $arrayidx59 = 0, $15 = 0.0, $inc61 = 0, $cmp57 = 0, $i_196 = 0, $arrayidx70 = 0, $16 = 0.0, $j_193 = 0, $arrayidx71 = 0, $17 = 0.0, $cmp72 = 0, $inc77 = 0, $cmp68 = 0, $inc80 = 0, $cmp65 = 0, $18 = 0, $cmp100 = 0, $cmp10497 = 0, $y111 = 0, $y113 = 0, $y115 = 0, $y117 = 0, $arrayidx120 = 0, $arrayidx121 = 0, $arrayidx122 = 0, $i_298 = 0, $arrayidx106 = 0, $19 = 0.0, $cmp107 = 0, $cmp108 = 0, $or_cond = 0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $27 = 0.0, $mul = 0.0, $add = 0.0, $mul123 = 0.0, $add124 = 0.0, $mul125 = 0.0, $add126 = 0.0, $sub128 = 0.0, $div = 0.0, $cmp130 = 0, $cmp132 = 0, $or_cond1 = 0, $inc137 = 0, $cmp104 = 0, $28 = 0, $div142 = 0.0, $y144 = 0, $29 = 0.0, $x146 = 0, $30 = 0.0, $mul147 = 0.0, $sub148 = 0.0, $y150 = 0, $31 = 0.0, $x152 = 0, $32 = 0.0, $mul153 = 0.0, $sub154 = 0.0, $y156 = 0, $33 = 0.0, $x158 = 0, $34 = 0.0, $mul159 = 0.0, $sub160 = 0.0, $y162 = 0, $35 = 0.0, $x164 = 0, $36 = 0.0, $mul165 = 0.0, $sub166 = 0.0, $arraydecay167 = 0, $mul169 = 0.0, $sub171 = 0.0, $37 = 0.0, $add173 = 0.0, $arraydecay175 = 0, $call176 = 0, $cmp177 = 0, $cmp18199 = 0, $arrayidx198 = 0, $arrayidx199 = 0, $arrayidx200 = 0, $i_3100 = 0, $arrayidx183 = 0, $38 = 0.0, $cmp184 = 0, $cmp186 = 0, $or_cond2 = 0, $39 = 0.0, $40 = 0.0, $41 = 0.0, $42 = 0.0, $43 = 0.0, $44 = 0.0, $45 = 0.0, $46 = 0.0, $mul201 = 0.0, $add202 = 0.0, $mul203 = 0.0, $add204 = 0.0, $mul205 = 0.0, $add206 = 0.0, $sub208 = 0.0, $div210 = 0.0, $cmp211 = 0, $cmp213 = 0, $or_cond3 = 0, $inc218 = 0, $cmp181 = 0, $47 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 88 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $scoeff = __stackBase__ | 0;
    $xroots = __stackBase__ + 32 | 0;
    $yroots = __stackBase__ + 56 | 0;
    $rootn = __stackBase__ + 80 | 0;
    $x = $lps | 0;
    $0 = +HEAPF64[$x >> 3];
    $x3 = $lps + 16 | 0;
    $1 = +HEAPF64[$x3 >> 3];
    $sub = $1 - $0;
    $y = $lps + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y10 = $lps + 24 | 0;
    $3 = +HEAPF64[$y10 >> 3];
    $sub13 = $3 - $2;
    HEAP32[$rootn >> 2] = 0;
    $cmp = $sub == 0.0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 28;
      break;
    }
   case 3:
    $cmp17 = $sub13 == 0.0;
    $x20 = $sps | 0;
    $4 = +HEAPF64[$x20 >> 3];
    $x22 = $sps + 16 | 0;
    $5 = +HEAPF64[$x22 >> 3];
    $x24 = $sps + 32 | 0;
    $6 = +HEAPF64[$x24 >> 3];
    $x26 = $sps + 48 | 0;
    $7 = +HEAPF64[$x26 >> 3];
    $arraydecay = $scoeff | 0;
    _points2coeff($4, $5, $6, $7, $arraydecay);
    $8 = +HEAPF64[$arraydecay >> 3];
    $sub29 = $8 - $0;
    HEAPF64[$arraydecay >> 3] = $sub29;
    $arraydecay31 = $xroots | 0;
    $call = _solve3($arraydecay, $arraydecay31) | 0;
    if ($cmp17) {
      label = 4;
      break;
    } else {
      label = 20;
      break;
    }
   case 4:
    $y33 = $sps + 8 | 0;
    $9 = +HEAPF64[$y33 >> 3];
    $y35 = $sps + 24 | 0;
    $10 = +HEAPF64[$y35 >> 3];
    $y37 = $sps + 40 | 0;
    $11 = +HEAPF64[$y37 >> 3];
    $y39 = $sps + 56 | 0;
    $12 = +HEAPF64[$y39 >> 3];
    _points2coeff($9, $10, $11, $12, $arraydecay);
    $13 = +HEAPF64[$arraydecay >> 3];
    $sub43 = $13 - $2;
    HEAPF64[$arraydecay >> 3] = $sub43;
    $arraydecay45 = $yroots | 0;
    $call46 = _solve3($arraydecay, $arraydecay45) | 0;
    $cmp47 = ($call | 0) == 4;
    $cmp49 = ($call46 | 0) == 4;
    if ($cmp47) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    if ($cmp49) {
      $retval_0 = 4;
      label = 36;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp5187 = ($call46 | 0) > 0;
    if ($cmp5187) {
      $j_088 = 0;
      label = 7;
      break;
    } else {
      label = 19;
      break;
    }
   case 7:
    $arrayidx52 = $yroots + ($j_088 << 3) | 0;
    $14 = +HEAPF64[$arrayidx52 >> 3];
    _addroot($14, $roots, $rootn);
    $inc = $j_088 + 1 | 0;
    $cmp51 = ($inc | 0) < ($call46 | 0);
    if ($cmp51) {
      $j_088 = $inc;
      label = 7;
      break;
    } else {
      label = 19;
      break;
    }
   case 8:
    $cmp5790 = ($call | 0) > 0;
    if ($cmp49) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    if ($cmp5790) {
      label = 10;
      break;
    } else {
      label = 19;
      break;
    }
   case 10:
    $cmp6892 = ($call46 | 0) > 0;
    $i_196 = 0;
    label = 13;
    break;
   case 11:
    if ($cmp5790) {
      $i_091 = 0;
      label = 12;
      break;
    } else {
      label = 19;
      break;
    }
   case 12:
    $arrayidx59 = $xroots + ($i_091 << 3) | 0;
    $15 = +HEAPF64[$arrayidx59 >> 3];
    _addroot($15, $roots, $rootn);
    $inc61 = $i_091 + 1 | 0;
    $cmp57 = ($inc61 | 0) < ($call | 0);
    if ($cmp57) {
      $i_091 = $inc61;
      label = 12;
      break;
    } else {
      label = 19;
      break;
    }
   case 13:
    if ($cmp6892) {
      label = 14;
      break;
    } else {
      label = 18;
      break;
    }
   case 14:
    $arrayidx70 = $xroots + ($i_196 << 3) | 0;
    $16 = +HEAPF64[$arrayidx70 >> 3];
    $j_193 = 0;
    label = 15;
    break;
   case 15:
    $arrayidx71 = $yroots + ($j_193 << 3) | 0;
    $17 = +HEAPF64[$arrayidx71 >> 3];
    $cmp72 = $16 == $17;
    if ($cmp72) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    _addroot($16, $roots, $rootn);
    label = 17;
    break;
   case 17:
    $inc77 = $j_193 + 1 | 0;
    $cmp68 = ($inc77 | 0) < ($call46 | 0);
    if ($cmp68) {
      $j_193 = $inc77;
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $inc80 = $i_196 + 1 | 0;
    $cmp65 = ($inc80 | 0) < ($call | 0);
    if ($cmp65) {
      $i_196 = $inc80;
      label = 13;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $18 = HEAP32[$rootn >> 2] | 0;
    $retval_0 = $18;
    label = 36;
    break;
   case 20:
    $cmp100 = ($call | 0) == 4;
    if ($cmp100) {
      $retval_0 = 4;
      label = 36;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $cmp10497 = ($call | 0) > 0;
    if ($cmp10497) {
      label = 22;
      break;
    } else {
      label = 27;
      break;
    }
   case 22:
    $y111 = $sps + 8 | 0;
    $y113 = $sps + 24 | 0;
    $y115 = $sps + 40 | 0;
    $y117 = $sps + 56 | 0;
    $arrayidx120 = $scoeff + 8 | 0;
    $arrayidx121 = $scoeff + 16 | 0;
    $arrayidx122 = $scoeff + 24 | 0;
    $i_298 = 0;
    label = 23;
    break;
   case 23:
    $arrayidx106 = $xroots + ($i_298 << 3) | 0;
    $19 = +HEAPF64[$arrayidx106 >> 3];
    $cmp107 = $19 >= 0.0;
    $cmp108 = $19 <= 1.0;
    $or_cond = $cmp107 & $cmp108;
    if ($or_cond) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $20 = +HEAPF64[$y111 >> 3];
    $21 = +HEAPF64[$y113 >> 3];
    $22 = +HEAPF64[$y115 >> 3];
    $23 = +HEAPF64[$y117 >> 3];
    _points2coeff($20, $21, $22, $23, $arraydecay);
    $24 = +HEAPF64[$arraydecay >> 3];
    $25 = +HEAPF64[$arrayidx120 >> 3];
    $26 = +HEAPF64[$arrayidx121 >> 3];
    $27 = +HEAPF64[$arrayidx122 >> 3];
    $mul = $19 * $27;
    $add = $26 + $mul;
    $mul123 = $19 * $add;
    $add124 = $25 + $mul123;
    $mul125 = $19 * $add124;
    $add126 = $24 + $mul125;
    $sub128 = $add126 - $2;
    $div = $sub128 / $sub13;
    $cmp130 = $div >= 0.0;
    $cmp132 = $div <= 1.0;
    $or_cond1 = $cmp130 & $cmp132;
    if ($or_cond1) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    _addroot($19, $roots, $rootn);
    label = 26;
    break;
   case 26:
    $inc137 = $i_298 + 1 | 0;
    $cmp104 = ($inc137 | 0) < ($call | 0);
    if ($cmp104) {
      $i_298 = $inc137;
      label = 23;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $28 = HEAP32[$rootn >> 2] | 0;
    $retval_0 = $28;
    label = 36;
    break;
   case 28:
    $div142 = $sub13 / $sub;
    $y144 = $sps + 8 | 0;
    $29 = +HEAPF64[$y144 >> 3];
    $x146 = $sps | 0;
    $30 = +HEAPF64[$x146 >> 3];
    $mul147 = $div142 * $30;
    $sub148 = $29 - $mul147;
    $y150 = $sps + 24 | 0;
    $31 = +HEAPF64[$y150 >> 3];
    $x152 = $sps + 16 | 0;
    $32 = +HEAPF64[$x152 >> 3];
    $mul153 = $div142 * $32;
    $sub154 = $31 - $mul153;
    $y156 = $sps + 40 | 0;
    $33 = +HEAPF64[$y156 >> 3];
    $x158 = $sps + 32 | 0;
    $34 = +HEAPF64[$x158 >> 3];
    $mul159 = $div142 * $34;
    $sub160 = $33 - $mul159;
    $y162 = $sps + 56 | 0;
    $35 = +HEAPF64[$y162 >> 3];
    $x164 = $sps + 48 | 0;
    $36 = +HEAPF64[$x164 >> 3];
    $mul165 = $div142 * $36;
    $sub166 = $35 - $mul165;
    $arraydecay167 = $scoeff | 0;
    _points2coeff($sub148, $sub154, $sub160, $sub166, $arraydecay167);
    $mul169 = $0 * $div142;
    $sub171 = $mul169 - $2;
    $37 = +HEAPF64[$arraydecay167 >> 3];
    $add173 = $sub171 + $37;
    HEAPF64[$arraydecay167 >> 3] = $add173;
    $arraydecay175 = $xroots | 0;
    $call176 = _solve3($arraydecay167, $arraydecay175) | 0;
    $cmp177 = ($call176 | 0) == 4;
    if ($cmp177) {
      $retval_0 = 4;
      label = 36;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $cmp18199 = ($call176 | 0) > 0;
    if ($cmp18199) {
      label = 30;
      break;
    } else {
      label = 35;
      break;
    }
   case 30:
    $arrayidx198 = $scoeff + 8 | 0;
    $arrayidx199 = $scoeff + 16 | 0;
    $arrayidx200 = $scoeff + 24 | 0;
    $i_3100 = 0;
    label = 31;
    break;
   case 31:
    $arrayidx183 = $xroots + ($i_3100 << 3) | 0;
    $38 = +HEAPF64[$arrayidx183 >> 3];
    $cmp184 = $38 >= 0.0;
    $cmp186 = $38 <= 1.0;
    $or_cond2 = $cmp184 & $cmp186;
    if ($or_cond2) {
      label = 32;
      break;
    } else {
      label = 34;
      break;
    }
   case 32:
    $39 = +HEAPF64[$x146 >> 3];
    $40 = +HEAPF64[$x152 >> 3];
    $41 = +HEAPF64[$x158 >> 3];
    $42 = +HEAPF64[$x164 >> 3];
    _points2coeff($39, $40, $41, $42, $arraydecay167);
    $43 = +HEAPF64[$arraydecay167 >> 3];
    $44 = +HEAPF64[$arrayidx198 >> 3];
    $45 = +HEAPF64[$arrayidx199 >> 3];
    $46 = +HEAPF64[$arrayidx200 >> 3];
    $mul201 = $38 * $46;
    $add202 = $45 + $mul201;
    $mul203 = $38 * $add202;
    $add204 = $44 + $mul203;
    $mul205 = $38 * $add204;
    $add206 = $43 + $mul205;
    $sub208 = $add206 - $0;
    $div210 = $sub208 / $sub;
    $cmp211 = $div210 >= 0.0;
    $cmp213 = $div210 <= 1.0;
    $or_cond3 = $cmp211 & $cmp213;
    if ($or_cond3) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    _addroot($38, $roots, $rootn);
    label = 34;
    break;
   case 34:
    $inc218 = $i_3100 + 1 | 0;
    $cmp181 = ($inc218 | 0) < ($call176 | 0);
    if ($cmp181) {
      $i_3100 = $inc218;
      label = 31;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $47 = HEAP32[$rootn >> 2] | 0;
    $retval_0 = $47;
    label = 36;
    break;
   case 36:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _ccw($p1p, $p2p, $p3p) {
  $p1p = $p1p | 0;
  $p2p = $p2p | 0;
  $p3p = $p3p | 0;
  var $y = 0, $0 = 0.0, $y1 = 0, $1 = 0.0, $sub = 0.0, $x = 0, $2 = 0.0, $x2 = 0, $3 = 0.0, $sub3 = 0.0, $mul = 0.0, $y4 = 0, $4 = 0.0, $sub6 = 0.0, $x7 = 0, $5 = 0.0, $sub9 = 0.0, $mul10 = 0.0, $sub11 = 0.0, $cmp = 0, $cmp12 = 0, $cond = 0, $cond13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $y = $p1p + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $y1 = $p2p + 8 | 0;
    $1 = +HEAPF64[$y1 >> 3];
    $sub = $0 - $1;
    $x = $p3p | 0;
    $2 = +HEAPF64[$x >> 3];
    $x2 = $p2p | 0;
    $3 = +HEAPF64[$x2 >> 3];
    $sub3 = $2 - $3;
    $mul = $sub * $sub3;
    $y4 = $p3p + 8 | 0;
    $4 = +HEAPF64[$y4 >> 3];
    $sub6 = $4 - $1;
    $x7 = $p1p | 0;
    $5 = +HEAPF64[$x7 >> 3];
    $sub9 = $5 - $3;
    $mul10 = $sub6 * $sub9;
    $sub11 = $mul - $mul10;
    $cmp = $sub11 > 0.0;
    if ($cmp) {
      $cond13 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp12 = $sub11 < 0.0;
    $cond = $cmp12 ? 2 : 3;
    $cond13 = $cond;
    label = 4;
    break;
   case 4:
    return $cond13 | 0;
  }
  return 0;
}
function _connecttris($tri1, $tri2) {
  $tri1 = $tri1 | 0;
  $tri2 = $tri2 | 0;
  var $ei_025 = 0, $0 = 0, $arrayidx = 0, $arrayidx4 = 0, $pnl0p = 0, $1 = 0, $pp = 0, $2 = 0, $pnl0p8 = 0, $3 = 0, $pp9 = 0, $4 = 0, $cmp10 = 0, $pnl1p = 0, $5 = 0, $pp13 = 0, $6 = 0, $pnl1p16 = 0, $7 = 0, $pp17 = 0, $8 = 0, $cmp18 = 0, $9 = 0, $pp22 = 0, $10 = 0, $pnl1p25 = 0, $11 = 0, $pp26 = 0, $12 = 0, $cmp27 = 0, $pnl1p31 = 0, $13 = 0, $pp32 = 0, $14 = 0, $15 = 0, $pp36 = 0, $16 = 0, $cmp37 = 0, $rtp = 0, $rtp42 = 0, $17 = 0, $arrayidx_1 = 0, $arrayidx4_1 = 0, $pnl0p_1 = 0, $18 = 0, $pp_1 = 0, $19 = 0, $pnl0p8_1 = 0, $20 = 0, $pp9_1 = 0, $21 = 0, $cmp10_1 = 0, $pnl1p_1 = 0, $22 = 0, $pp13_1 = 0, $23 = 0, $pnl1p16_1 = 0, $24 = 0, $pp17_1 = 0, $25 = 0, $cmp18_1 = 0, $26 = 0, $pp22_1 = 0, $27 = 0, $pnl1p25_1 = 0, $28 = 0, $pp26_1 = 0, $29 = 0, $cmp27_1 = 0, $pnl1p31_1 = 0, $30 = 0, $pp32_1 = 0, $31 = 0, $32 = 0, $pp36_1 = 0, $33 = 0, $cmp37_1 = 0, $rtp_1 = 0, $rtp42_1 = 0, $34 = 0, $arrayidx_2 = 0, $arrayidx4_2 = 0, $pnl0p_2 = 0, $35 = 0, $pp_2 = 0, $36 = 0, $pnl0p8_2 = 0, $37 = 0, $pp9_2 = 0, $38 = 0, $cmp10_2 = 0, $pnl1p_2 = 0, $39 = 0, $pp13_2 = 0, $40 = 0, $pnl1p16_2 = 0, $41 = 0, $pp17_2 = 0, $42 = 0, $cmp18_2 = 0, $43 = 0, $pp22_2 = 0, $44 = 0, $pnl1p25_2 = 0, $45 = 0, $pp26_2 = 0, $46 = 0, $cmp27_2 = 0, $pnl1p31_2 = 0, $47 = 0, $pp32_2 = 0, $48 = 0, $49 = 0, $pp36_2 = 0, $50 = 0, $cmp37_2 = 0, $rtp_2 = 0, $rtp42_2 = 0, $inc44 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ei_025 = 0;
    label = 3;
    break;
   case 3:
    $0 = HEAP32[230] | 0;
    $arrayidx = $0 + ($tri1 * 52 & -1) | 0;
    $arrayidx4 = $0 + ($tri2 * 52 & -1) | 0;
    $pnl0p = $0 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) | 0;
    $1 = HEAP32[$pnl0p >> 2] | 0;
    $pp = $1 | 0;
    $2 = HEAP32[$pp >> 2] | 0;
    $pnl0p8 = $0 + ($tri2 * 52 & -1) + 4 | 0;
    $3 = HEAP32[$pnl0p8 >> 2] | 0;
    $pp9 = $3 | 0;
    $4 = HEAP32[$pp9 >> 2] | 0;
    $cmp10 = ($2 | 0) == ($4 | 0);
    if ($cmp10) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $pnl1p = $0 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 4 | 0;
    $5 = HEAP32[$pnl1p >> 2] | 0;
    $pp13 = $5 | 0;
    $6 = HEAP32[$pp13 >> 2] | 0;
    $pnl1p16 = $0 + ($tri2 * 52 & -1) + 8 | 0;
    $7 = HEAP32[$pnl1p16 >> 2] | 0;
    $pp17 = $7 | 0;
    $8 = HEAP32[$pp17 >> 2] | 0;
    $cmp18 = ($6 | 0) == ($8 | 0);
    if ($cmp18) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $9 = HEAP32[$pnl0p >> 2] | 0;
    $pp22 = $9 | 0;
    $10 = HEAP32[$pp22 >> 2] | 0;
    $pnl1p25 = $0 + ($tri2 * 52 & -1) + 8 | 0;
    $11 = HEAP32[$pnl1p25 >> 2] | 0;
    $pp26 = $11 | 0;
    $12 = HEAP32[$pp26 >> 2] | 0;
    $cmp27 = ($10 | 0) == ($12 | 0);
    if ($cmp27) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $pnl1p31 = $0 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 4 | 0;
    $13 = HEAP32[$pnl1p31 >> 2] | 0;
    $pp32 = $13 | 0;
    $14 = HEAP32[$pp32 >> 2] | 0;
    $15 = HEAP32[$pnl0p8 >> 2] | 0;
    $pp36 = $15 | 0;
    $16 = HEAP32[$pp36 >> 2] | 0;
    $cmp37 = ($14 | 0) == ($16 | 0);
    if ($cmp37) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $rtp = $0 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 12 | 0;
    HEAP32[$rtp >> 2] = $arrayidx4;
    $rtp42 = $0 + ($tri2 * 52 & -1) + 16 | 0;
    HEAP32[$rtp42 >> 2] = $arrayidx;
    label = 8;
    break;
   case 8:
    $17 = HEAP32[230] | 0;
    $arrayidx_1 = $17 + ($tri1 * 52 & -1) | 0;
    $arrayidx4_1 = $17 + ($tri2 * 52 & -1) | 0;
    $pnl0p_1 = $17 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) | 0;
    $18 = HEAP32[$pnl0p_1 >> 2] | 0;
    $pp_1 = $18 | 0;
    $19 = HEAP32[$pp_1 >> 2] | 0;
    $pnl0p8_1 = $17 + ($tri2 * 52 & -1) + 20 | 0;
    $20 = HEAP32[$pnl0p8_1 >> 2] | 0;
    $pp9_1 = $20 | 0;
    $21 = HEAP32[$pp9_1 >> 2] | 0;
    $cmp10_1 = ($19 | 0) == ($21 | 0);
    if ($cmp10_1) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    return;
   case 10:
    $pnl1p_1 = $17 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 4 | 0;
    $22 = HEAP32[$pnl1p_1 >> 2] | 0;
    $pp13_1 = $22 | 0;
    $23 = HEAP32[$pp13_1 >> 2] | 0;
    $pnl1p16_1 = $17 + ($tri2 * 52 & -1) + 24 | 0;
    $24 = HEAP32[$pnl1p16_1 >> 2] | 0;
    $pp17_1 = $24 | 0;
    $25 = HEAP32[$pp17_1 >> 2] | 0;
    $cmp18_1 = ($23 | 0) == ($25 | 0);
    if ($cmp18_1) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $26 = HEAP32[$pnl0p_1 >> 2] | 0;
    $pp22_1 = $26 | 0;
    $27 = HEAP32[$pp22_1 >> 2] | 0;
    $pnl1p25_1 = $17 + ($tri2 * 52 & -1) + 24 | 0;
    $28 = HEAP32[$pnl1p25_1 >> 2] | 0;
    $pp26_1 = $28 | 0;
    $29 = HEAP32[$pp26_1 >> 2] | 0;
    $cmp27_1 = ($27 | 0) == ($29 | 0);
    if ($cmp27_1) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $pnl1p31_1 = $17 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 4 | 0;
    $30 = HEAP32[$pnl1p31_1 >> 2] | 0;
    $pp32_1 = $30 | 0;
    $31 = HEAP32[$pp32_1 >> 2] | 0;
    $32 = HEAP32[$pnl0p8_1 >> 2] | 0;
    $pp36_1 = $32 | 0;
    $33 = HEAP32[$pp36_1 >> 2] | 0;
    $cmp37_1 = ($31 | 0) == ($33 | 0);
    if ($cmp37_1) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $rtp_1 = $17 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 12 | 0;
    HEAP32[$rtp_1 >> 2] = $arrayidx4_1;
    $rtp42_1 = $17 + ($tri2 * 52 & -1) + 32 | 0;
    HEAP32[$rtp42_1 >> 2] = $arrayidx_1;
    label = 14;
    break;
   case 14:
    $34 = HEAP32[230] | 0;
    $arrayidx_2 = $34 + ($tri1 * 52 & -1) | 0;
    $arrayidx4_2 = $34 + ($tri2 * 52 & -1) | 0;
    $pnl0p_2 = $34 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) | 0;
    $35 = HEAP32[$pnl0p_2 >> 2] | 0;
    $pp_2 = $35 | 0;
    $36 = HEAP32[$pp_2 >> 2] | 0;
    $pnl0p8_2 = $34 + ($tri2 * 52 & -1) + 36 | 0;
    $37 = HEAP32[$pnl0p8_2 >> 2] | 0;
    $pp9_2 = $37 | 0;
    $38 = HEAP32[$pp9_2 >> 2] | 0;
    $cmp10_2 = ($36 | 0) == ($38 | 0);
    if ($cmp10_2) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $pnl1p_2 = $34 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 4 | 0;
    $39 = HEAP32[$pnl1p_2 >> 2] | 0;
    $pp13_2 = $39 | 0;
    $40 = HEAP32[$pp13_2 >> 2] | 0;
    $pnl1p16_2 = $34 + ($tri2 * 52 & -1) + 40 | 0;
    $41 = HEAP32[$pnl1p16_2 >> 2] | 0;
    $pp17_2 = $41 | 0;
    $42 = HEAP32[$pp17_2 >> 2] | 0;
    $cmp18_2 = ($40 | 0) == ($42 | 0);
    if ($cmp18_2) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $43 = HEAP32[$pnl0p_2 >> 2] | 0;
    $pp22_2 = $43 | 0;
    $44 = HEAP32[$pp22_2 >> 2] | 0;
    $pnl1p25_2 = $34 + ($tri2 * 52 & -1) + 40 | 0;
    $45 = HEAP32[$pnl1p25_2 >> 2] | 0;
    $pp26_2 = $45 | 0;
    $46 = HEAP32[$pp26_2 >> 2] | 0;
    $cmp27_2 = ($44 | 0) == ($46 | 0);
    if ($cmp27_2) {
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 17:
    $pnl1p31_2 = $34 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 4 | 0;
    $47 = HEAP32[$pnl1p31_2 >> 2] | 0;
    $pp32_2 = $47 | 0;
    $48 = HEAP32[$pp32_2 >> 2] | 0;
    $49 = HEAP32[$pnl0p8_2 >> 2] | 0;
    $pp36_2 = $49 | 0;
    $50 = HEAP32[$pp36_2 >> 2] | 0;
    $cmp37_2 = ($48 | 0) == ($50 | 0);
    if ($cmp37_2) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $rtp_2 = $34 + ($tri1 * 52 & -1) + 4 + ($ei_025 << 4) + 12 | 0;
    HEAP32[$rtp_2 >> 2] = $arrayidx4_2;
    $rtp42_2 = $34 + ($tri2 * 52 & -1) + 48 | 0;
    HEAP32[$rtp42_2 >> 2] = $arrayidx_2;
    label = 19;
    break;
   case 19:
    $inc44 = $ei_025 + 1 | 0;
    $cmp = ($inc44 | 0) < 3;
    if ($cmp) {
      $ei_025 = $inc44;
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
  }
}
function _Pshortestpath($polyp, $eps, $output) {
  $polyp = $polyp | 0;
  $eps = $eps | 0;
  $output = $output | 0;
  var $p1 = 0, $p2 = 0, $p3 = 0, $epnls = 0, $pn = 0, $0 = 0, $1 = 0, $mul = 0, $2 = 0, $div = 0, $sub = 0, $3 = 0, $cmp154 = 0, $ps = 0, $4 = 0, $arrayidx8162 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $pi_0157 = 0, $minpi_0156 = 0, $minx_0155 = 0.0, $x = 0, $10 = 0.0, $cmp3 = 0, $minx_1 = 0.0, $minpi_1 = 0, $inc = 0, $cmp = 0, $arrayidx8 = 0, $11 = 0, $12 = 0, $cmp9 = 0, $13 = 0, $minpi_0_lcssa164 = 0, $_sink = 0, $sub11 = 0, $14 = 0, $arrayidx14 = 0, $15 = 0, $16 = 0, $17 = 0, $sub16 = 0, $cmp17 = 0, $add = 0, $_add = 0, $18 = 0, $arrayidx23 = 0, $19 = 0, $20 = 0, $x24 = 0, $21 = 0.0, $x25 = 0, $22 = 0.0, $cmp26 = 0, $x28 = 0, $23 = 0.0, $cmp29 = 0, $y = 0, $24 = 0.0, $y31 = 0, $25 = 0.0, $cmp32 = 0, $call = 0, $cmp33 = 0, $26 = 0, $cmp76150 = 0, $27 = 0, $cmp38146 = 0, $pi_1148_in = 0, $pi_1148 = 0, $28 = 0, $sub41 = 0, $cmp42 = 0, $29 = 0, $x46 = 0, $30 = 0.0, $x50 = 0, $31 = 0.0, $cmp51 = 0, $y55 = 0, $32 = 0.0, $y59 = 0, $33 = 0.0, $cmp60 = 0, $cmp38 = 0, $34 = 0, $arrayidx64 = 0, $35 = 0, $36 = 0, $pp = 0, $37 = 0, $38 = 0, $rem = 0, $39 = 0, $arrayidx67 = 0, $link = 0, $40 = 0, $41 = 0, $arrayidx69 = 0, $42 = 0, $arrayidx70 = 0, $43 = 0, $inc71 = 0, $pi_2151 = 0, $cmp78 = 0, $44 = 0, $x82 = 0, $45 = 0.0, $sub83 = 0, $x86 = 0, $46 = 0.0, $cmp87 = 0, $y91 = 0, $47 = 0.0, $y95 = 0, $48 = 0.0, $cmp96 = 0, $49 = 0, $arrayidx100 = 0, $50 = 0, $51 = 0, $pp102 = 0, $52 = 0, $53 = 0, $rem104 = 0, $54 = 0, $arrayidx105 = 0, $link107 = 0, $55 = 0, $56 = 0, $arrayidx108 = 0, $57 = 0, $arrayidx109 = 0, $58 = 0, $inc110 = 0, $inc112 = 0, $59 = 0, $cmp76 = 0, $60 = 0, $61 = 0, $62 = 0, $cmp116143 = 0, $63 = 0, $cmp116 = 0, $64 = 0, $trii_0144 = 0, $add118 = 0, $65 = 0, $cmp120141 = 0, $trij_0142 = 0, $inc123 = 0, $66 = 0, $cmp120 = 0, $trii_1 = 0, $cmp129 = 0, $call132 = 0, $tobool = 0, $inc136 = 0, $67 = 0, $cmp138 = 0, $arrayidx145 = 0, $68 = 0, $69 = 0, $call140 = 0, $trii_2 = 0, $cmp143 = 0, $call146 = 0, $tobool147 = 0, $inc151 = 0, $70 = 0, $cmp153 = 0, $71 = 0, $call155 = 0, $call157 = 0, $tobool158 = 0, $72 = 0, $call160 = 0, $pn161 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $arrayidx164 = 0, $arrayidx165 = 0, $77 = 0, $78 = 0, $79 = 0, $ps166 = 0, $cmp168 = 0, $pn170 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $arrayidx173 = 0, $arrayidx174 = 0, $84 = 0, $85 = 0, $86 = 0, $ps175 = 0, $arrayidx178 = 0, $pp179 = 0, $link181 = 0, $arrayidx182 = 0, $arrayidx183 = 0, $pp184 = 0, $link186 = 0, $87 = 0, $cmp188139 = 0, $trii_3140 = 0, $88 = 0, $mark = 0, $rtp = 0, $89 = 0, $tobool194 = 0, $mark199 = 0, $90 = 0, $cmp200 = 0, $rtp_1 = 0, $91 = 0, $tobool194_1 = 0, $92 = 0, $93 = 0, $arrayidx209 = 0, $94 = 0, $pp210 = 0, $95 = 0, $96 = 0, $arrayidx211 = 0, $97 = 0, $pp212 = 0, $98 = 0, $call213 = 0, $cmp214 = 0, $_arrayidx183 = 0, $arrayidx183_ = 0, $ei_0_lcssa_ph = 0, $add223 = 0, $rem224 = 0, $pnl1p = 0, $99 = 0, $pnl0p = 0, $100 = 0, $pp229 = 0, $101 = 0, $pp230 = 0, $102 = 0, $pnl1p233 = 0, $103 = 0, $pp234 = 0, $104 = 0, $call235 = 0, $cmp236 = 0, $_ = 0, $_130 = 0, $lpnlp_0 = 0, $rpnlp_0 = 0, $cmp253 = 0, $105 = 0, $106 = 0, $arrayidx256 = 0, $107 = 0, $cmp257 = 0, $108 = 0, $arrayidx259 = 0, $109 = 0, $cmp260 = 0, $call262 = 0, $110 = 0, $cmp263 = 0, $call267 = 0, $111 = 0, $cmp268 = 0, $rtp278 = 0, $112 = 0, $tobool279 = 0, $mark284 = 0, $113 = 0, $cmp285 = 0, $_lcssa160 = 0, $114 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $sub_ptr_div = 0, $115 = 0, $rtp278_1 = 0, $116 = 0, $tobool279_1 = 0, $pnlp_0135 = 0, $pi_3134 = 0, $inc298 = 0, $link300 = 0, $117 = 0, $tobool296 = 0, $pn302 = 0, $118 = 0, $119 = 0, $pi_4133 = 0, $pnlp_1132 = 0, $arrayidx308 = 0, $pp309 = 0, $120 = 0, $121 = 0, $122 = 0, $link312 = 0, $123 = 0, $pi_4 = 0, $tobool306 = 0, $124 = 0, $ps314 = 0, $retval_0 = 0, $mark199_1 = 0, $125 = 0, $cmp200_1 = 0, $rtp_2 = 0, $126 = 0, $tobool194_2 = 0, $mark199_2 = 0, $127 = 0, $cmp200_2 = 0, $mark284_1 = 0, $128 = 0, $cmp285_1 = 0, $rtp278_2 = 0, $129 = 0, $tobool279_2 = 0, $mark284_2 = 0, $130 = 0, $cmp285_2 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p1 = __stackBase__ | 0;
    $p2 = __stackBase__ + 16 | 0;
    $p3 = __stackBase__ + 32 | 0;
    $epnls = __stackBase__ + 48 | 0;
    $pn = $polyp + 4 | 0;
    $0 = HEAP32[$pn >> 2] | 0;
    _growpnls($0);
    HEAP32[1794] = 0;
    HEAP32[234] = 0;
    $1 = HEAP32[$pn >> 2] | 0;
    $mul = $1 << 1;
    _growdq($mul);
    $2 = HEAP32[5090] | 0;
    $div = ($2 | 0) / 2 & -1;
    HEAP32[5088] = $div;
    $sub = $div - 1 | 0;
    HEAP32[5086] = $sub;
    $3 = HEAP32[$pn >> 2] | 0;
    $cmp154 = ($3 | 0) > 0;
    $ps = $polyp | 0;
    $4 = HEAP32[$ps >> 2] | 0;
    if ($cmp154) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx8162 = $4 - 16 | 0;
    $5 = $p2;
    $6 = $arrayidx8162;
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    $_sink = -1;
    $minpi_0_lcssa164 = -1;
    label = 8;
    break;
   case 4:
    $7 = HEAP32[$pn >> 2] | 0;
    $8 = HEAP32[$ps >> 2] | 0;
    $minx_0155 = +Infinity;
    $minpi_0156 = -1;
    $pi_0157 = 0;
    $9 = $4;
    label = 5;
    break;
   case 5:
    $x = $9 + ($pi_0157 << 4) | 0;
    $10 = +HEAPF64[$x >> 3];
    $cmp3 = $minx_0155 > $10;
    $minx_1 = $cmp3 ? $10 : $minx_0155;
    $minpi_1 = $cmp3 ? $pi_0157 : $minpi_0156;
    $inc = $pi_0157 + 1 | 0;
    $cmp = ($inc | 0) < ($7 | 0);
    if ($cmp) {
      $minx_0155 = $minx_1;
      $minpi_0156 = $minpi_1;
      $pi_0157 = $inc;
      $9 = $8;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $arrayidx8 = $8 + ($minpi_1 << 4) | 0;
    $11 = $p2;
    $12 = $arrayidx8;
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    $cmp9 = ($minpi_1 | 0) == 0;
    if ($cmp9) {
      label = 7;
      break;
    } else {
      $_sink = $minpi_1;
      $minpi_0_lcssa164 = $minpi_1;
      label = 8;
      break;
    }
   case 7:
    $13 = HEAP32[$pn >> 2] | 0;
    $_sink = $13;
    $minpi_0_lcssa164 = 0;
    label = 8;
    break;
   case 8:
    $sub11 = $_sink - 1 | 0;
    $14 = HEAP32[$ps >> 2] | 0;
    $arrayidx14 = $14 + ($sub11 << 4) | 0;
    $15 = $p1;
    $16 = $arrayidx14;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $17 = HEAP32[$pn >> 2] | 0;
    $sub16 = $17 - 1 | 0;
    $cmp17 = ($minpi_0_lcssa164 | 0) == ($sub16 | 0);
    $add = $minpi_0_lcssa164 + 1 | 0;
    $_add = $cmp17 ? 0 : $add;
    $18 = HEAP32[$ps >> 2] | 0;
    $arrayidx23 = $18 + ($_add << 4) | 0;
    $19 = $p3;
    $20 = $arrayidx23;
    HEAP32[$19 >> 2] = HEAP32[$20 >> 2] | 0;
    HEAP32[$19 + 4 >> 2] = HEAP32[$20 + 4 >> 2] | 0;
    HEAP32[$19 + 8 >> 2] = HEAP32[$20 + 8 >> 2] | 0;
    HEAP32[$19 + 12 >> 2] = HEAP32[$20 + 12 >> 2] | 0;
    $x24 = $p1 | 0;
    $21 = +HEAPF64[$x24 >> 3];
    $x25 = $p2 | 0;
    $22 = +HEAPF64[$x25 >> 3];
    $cmp26 = $21 == $22;
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $x28 = $p3 | 0;
    $23 = +HEAPF64[$x28 >> 3];
    $cmp29 = $22 == $23;
    if ($cmp29) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $y = $p3 + 8 | 0;
    $24 = +HEAPF64[$y >> 3];
    $y31 = $p2 + 8 | 0;
    $25 = +HEAPF64[$y31 >> 3];
    $cmp32 = $24 > $25;
    if ($cmp32) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call = _ccw($p1, $p2, $p3) | 0;
    $cmp33 = ($call | 0) == 1;
    if ($cmp33) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $26 = HEAP32[$pn >> 2] | 0;
    $cmp76150 = ($26 | 0) > 0;
    if ($cmp76150) {
      $pi_2151 = 0;
      label = 19;
      break;
    } else {
      label = 24;
      break;
    }
   case 13:
    $27 = HEAP32[$pn >> 2] | 0;
    $cmp38146 = ($27 | 0) > 0;
    if ($cmp38146) {
      $pi_1148_in = $27;
      label = 14;
      break;
    } else {
      label = 24;
      break;
    }
   case 14:
    $pi_1148 = $pi_1148_in - 1 | 0;
    $28 = HEAP32[$pn >> 2] | 0;
    $sub41 = $28 - 1 | 0;
    $cmp42 = ($pi_1148 | 0) < ($sub41 | 0);
    if ($cmp42) {
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $29 = HEAP32[$ps >> 2] | 0;
    $x46 = $29 + ($pi_1148 << 4) | 0;
    $30 = +HEAPF64[$x46 >> 3];
    $x50 = $29 + ($pi_1148_in << 4) | 0;
    $31 = +HEAPF64[$x50 >> 3];
    $cmp51 = $30 == $31;
    if ($cmp51) {
      label = 16;
      break;
    } else {
      label = 18;
      break;
    }
   case 16:
    $y55 = $29 + ($pi_1148 << 4) + 8 | 0;
    $32 = +HEAPF64[$y55 >> 3];
    $y59 = $29 + ($pi_1148_in << 4) + 8 | 0;
    $33 = +HEAPF64[$y59 >> 3];
    $cmp60 = $32 == $33;
    if ($cmp60) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $cmp38 = ($pi_1148 | 0) > 0;
    if ($cmp38) {
      $pi_1148_in = $pi_1148;
      label = 14;
      break;
    } else {
      label = 24;
      break;
    }
   case 18:
    $34 = HEAP32[$ps >> 2] | 0;
    $arrayidx64 = $34 + ($pi_1148 << 4) | 0;
    $35 = HEAP32[1794] | 0;
    $36 = HEAP32[1788] | 0;
    $pp = $36 + ($35 << 3) | 0;
    HEAP32[$pp >> 2] = $arrayidx64;
    $37 = HEAP32[1794] | 0;
    $38 = HEAP32[$pn >> 2] | 0;
    $rem = ($37 | 0) % ($38 | 0);
    $39 = HEAP32[1788] | 0;
    $arrayidx67 = $39 + ($rem << 3) | 0;
    $link = $39 + ($37 << 3) + 4 | 0;
    HEAP32[$link >> 2] = $arrayidx67;
    $40 = HEAP32[1794] | 0;
    $41 = HEAP32[1788] | 0;
    $arrayidx69 = $41 + ($40 << 3) | 0;
    $42 = HEAP32[1790] | 0;
    $arrayidx70 = $42 + ($40 << 2) | 0;
    HEAP32[$arrayidx70 >> 2] = $arrayidx69;
    $43 = HEAP32[1794] | 0;
    $inc71 = $43 + 1 | 0;
    HEAP32[1794] = $inc71;
    label = 17;
    break;
   case 19:
    $cmp78 = ($pi_2151 | 0) > 0;
    if ($cmp78) {
      label = 20;
      break;
    } else {
      label = 22;
      break;
    }
   case 20:
    $44 = HEAP32[$ps >> 2] | 0;
    $x82 = $44 + ($pi_2151 << 4) | 0;
    $45 = +HEAPF64[$x82 >> 3];
    $sub83 = $pi_2151 - 1 | 0;
    $x86 = $44 + ($sub83 << 4) | 0;
    $46 = +HEAPF64[$x86 >> 3];
    $cmp87 = $45 == $46;
    if ($cmp87) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $y91 = $44 + ($pi_2151 << 4) + 8 | 0;
    $47 = +HEAPF64[$y91 >> 3];
    $y95 = $44 + ($sub83 << 4) + 8 | 0;
    $48 = +HEAPF64[$y95 >> 3];
    $cmp96 = $47 == $48;
    if ($cmp96) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $49 = HEAP32[$ps >> 2] | 0;
    $arrayidx100 = $49 + ($pi_2151 << 4) | 0;
    $50 = HEAP32[1794] | 0;
    $51 = HEAP32[1788] | 0;
    $pp102 = $51 + ($50 << 3) | 0;
    HEAP32[$pp102 >> 2] = $arrayidx100;
    $52 = HEAP32[1794] | 0;
    $53 = HEAP32[$pn >> 2] | 0;
    $rem104 = ($52 | 0) % ($53 | 0);
    $54 = HEAP32[1788] | 0;
    $arrayidx105 = $54 + ($rem104 << 3) | 0;
    $link107 = $54 + ($52 << 3) + 4 | 0;
    HEAP32[$link107 >> 2] = $arrayidx105;
    $55 = HEAP32[1794] | 0;
    $56 = HEAP32[1788] | 0;
    $arrayidx108 = $56 + ($55 << 3) | 0;
    $57 = HEAP32[1790] | 0;
    $arrayidx109 = $57 + ($55 << 2) | 0;
    HEAP32[$arrayidx109 >> 2] = $arrayidx108;
    $58 = HEAP32[1794] | 0;
    $inc110 = $58 + 1 | 0;
    HEAP32[1794] = $inc110;
    label = 23;
    break;
   case 23:
    $inc112 = $pi_2151 + 1 | 0;
    $59 = HEAP32[$pn >> 2] | 0;
    $cmp76 = ($inc112 | 0) < ($59 | 0);
    if ($cmp76) {
      $pi_2151 = $inc112;
      label = 19;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $60 = HEAP32[1790] | 0;
    $61 = HEAP32[1794] | 0;
    _triangulate($60, $61);
    $62 = HEAP32[234] | 0;
    $cmp116143 = ($62 | 0) > 0;
    if ($cmp116143) {
      $trii_0144 = 0;
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $63 = HEAP32[234] | 0;
    $cmp116 = ($add118 | 0) < ($63 | 0);
    if ($cmp116) {
      $trii_0144 = $add118;
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $64 = HEAP32[234] | 0;
    $trii_1 = 0;
    label = 29;
    break;
   case 27:
    $add118 = $trii_0144 + 1 | 0;
    $65 = HEAP32[234] | 0;
    $cmp120141 = ($add118 | 0) < ($65 | 0);
    if ($cmp120141) {
      $trij_0142 = $add118;
      label = 28;
      break;
    } else {
      label = 25;
      break;
    }
   case 28:
    _connecttris($trii_0144, $trij_0142);
    $inc123 = $trij_0142 + 1 | 0;
    $66 = HEAP32[234] | 0;
    $cmp120 = ($inc123 | 0) < ($66 | 0);
    if ($cmp120) {
      $trij_0142 = $inc123;
      label = 28;
      break;
    } else {
      label = 25;
      break;
    }
   case 29:
    $cmp129 = ($trii_1 | 0) < ($64 | 0);
    if ($cmp129) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $call132 = _pointintri($trii_1, $eps) | 0;
    $tobool = ($call132 | 0) == 0;
    $inc136 = $trii_1 + 1 | 0;
    if ($tobool) {
      $trii_1 = $inc136;
      label = 29;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $67 = HEAP32[234] | 0;
    $cmp138 = ($trii_1 | 0) == ($67 | 0);
    if ($cmp138) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $arrayidx145 = $eps + 16 | 0;
    $68 = HEAP32[234] | 0;
    $trii_2 = 0;
    label = 34;
    break;
   case 33:
    $69 = HEAP32[_stderr >> 2] | 0;
    $call140 = _fprintf($69 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 183, HEAP32[tempInt + 16 >> 2] = 120496, tempInt) | 0) | 0;
    $retval_0 = -1;
    label = 64;
    break;
   case 34:
    $cmp143 = ($trii_2 | 0) < ($68 | 0);
    if ($cmp143) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $call146 = _pointintri($trii_2, $arrayidx145) | 0;
    $tobool147 = ($call146 | 0) == 0;
    $inc151 = $trii_2 + 1 | 0;
    if ($tobool147) {
      $trii_2 = $inc151;
      label = 34;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $70 = HEAP32[234] | 0;
    $cmp153 = ($trii_2 | 0) == ($70 | 0);
    if ($cmp153) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $71 = HEAP32[_stderr >> 2] | 0;
    $call155 = _fprintf($71 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 191, HEAP32[tempInt + 16 >> 2] = 114416, tempInt) | 0) | 0;
    $retval_0 = -1;
    label = 64;
    break;
   case 38:
    $call157 = _marktripath($trii_1, $trii_2) | 0;
    $tobool158 = ($call157 | 0) == 0;
    if ($tobool158) {
      label = 39;
      break;
    } else {
      label = 40;
      break;
    }
   case 39:
    $72 = HEAP32[_stderr >> 2] | 0;
    $call160 = _fprintf($72 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 198, HEAP32[tempInt + 16 >> 2] = 112096, tempInt) | 0) | 0;
    _growops13(2);
    $pn161 = $output + 4 | 0;
    HEAP32[$pn161 >> 2] = 2;
    $73 = HEAP32[2284] | 0;
    $74 = $73;
    $75 = $eps;
    HEAP32[$74 >> 2] = HEAP32[$75 >> 2] | 0;
    HEAP32[$74 + 4 >> 2] = HEAP32[$75 + 4 >> 2] | 0;
    HEAP32[$74 + 8 >> 2] = HEAP32[$75 + 8 >> 2] | 0;
    HEAP32[$74 + 12 >> 2] = HEAP32[$75 + 12 >> 2] | 0;
    $76 = HEAP32[2284] | 0;
    $arrayidx164 = $76 + 16 | 0;
    $arrayidx165 = $eps + 16 | 0;
    $77 = $arrayidx164;
    $78 = $arrayidx165;
    HEAP32[$77 >> 2] = HEAP32[$78 >> 2] | 0;
    HEAP32[$77 + 4 >> 2] = HEAP32[$78 + 4 >> 2] | 0;
    HEAP32[$77 + 8 >> 2] = HEAP32[$78 + 8 >> 2] | 0;
    HEAP32[$77 + 12 >> 2] = HEAP32[$78 + 12 >> 2] | 0;
    $79 = HEAP32[2284] | 0;
    $ps166 = $output | 0;
    HEAP32[$ps166 >> 2] = $79;
    $retval_0 = 0;
    label = 64;
    break;
   case 40:
    $cmp168 = ($trii_1 | 0) == ($trii_2 | 0);
    if ($cmp168) {
      label = 41;
      break;
    } else {
      label = 42;
      break;
    }
   case 41:
    _growops13(2);
    $pn170 = $output + 4 | 0;
    HEAP32[$pn170 >> 2] = 2;
    $80 = HEAP32[2284] | 0;
    $81 = $80;
    $82 = $eps;
    HEAP32[$81 >> 2] = HEAP32[$82 >> 2] | 0;
    HEAP32[$81 + 4 >> 2] = HEAP32[$82 + 4 >> 2] | 0;
    HEAP32[$81 + 8 >> 2] = HEAP32[$82 + 8 >> 2] | 0;
    HEAP32[$81 + 12 >> 2] = HEAP32[$82 + 12 >> 2] | 0;
    $83 = HEAP32[2284] | 0;
    $arrayidx173 = $83 + 16 | 0;
    $arrayidx174 = $eps + 16 | 0;
    $84 = $arrayidx173;
    $85 = $arrayidx174;
    HEAP32[$84 >> 2] = HEAP32[$85 >> 2] | 0;
    HEAP32[$84 + 4 >> 2] = HEAP32[$85 + 4 >> 2] | 0;
    HEAP32[$84 + 8 >> 2] = HEAP32[$85 + 8 >> 2] | 0;
    HEAP32[$84 + 12 >> 2] = HEAP32[$85 + 12 >> 2] | 0;
    $86 = HEAP32[2284] | 0;
    $ps175 = $output | 0;
    HEAP32[$ps175 >> 2] = $86;
    $retval_0 = 0;
    label = 64;
    break;
   case 42:
    $arrayidx178 = $epnls | 0;
    $pp179 = $epnls | 0;
    HEAP32[$pp179 >> 2] = $eps;
    $link181 = $epnls + 4 | 0;
    HEAP32[$link181 >> 2] = 0;
    $arrayidx182 = $eps + 16 | 0;
    $arrayidx183 = $epnls + 8 | 0;
    $pp184 = $arrayidx183 | 0;
    HEAP32[$pp184 >> 2] = $arrayidx182;
    $link186 = $epnls + 12 | 0;
    HEAP32[$link186 >> 2] = 0;
    _add2dq(1, $arrayidx178);
    $87 = HEAP32[5088] | 0;
    HEAP32[5084] = $87;
    $cmp188139 = ($trii_1 | 0) == -1;
    if ($cmp188139) {
      $pi_3134 = 0;
      $pnlp_0135 = $arrayidx183;
      label = 60;
      break;
    } else {
      $trii_3140 = $trii_1;
      label = 43;
      break;
    }
   case 43:
    $88 = HEAP32[230] | 0;
    $mark = $88 + ($trii_3140 * 52 & -1) | 0;
    HEAP32[$mark >> 2] = 2;
    $rtp = $88 + ($trii_3140 * 52 & -1) + 16 | 0;
    $89 = HEAP32[$rtp >> 2] | 0;
    $tobool194 = ($89 | 0) == 0;
    if ($tobool194) {
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $mark199 = $89 | 0;
    $90 = HEAP32[$mark199 >> 2] | 0;
    $cmp200 = ($90 | 0) == 1;
    if ($cmp200) {
      $ei_0_lcssa_ph = 0;
      label = 47;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $rtp_1 = $88 + ($trii_3140 * 52 & -1) + 32 | 0;
    $91 = HEAP32[$rtp_1 >> 2] | 0;
    $tobool194_1 = ($91 | 0) == 0;
    if ($tobool194_1) {
      label = 66;
      break;
    } else {
      label = 65;
      break;
    }
   case 46:
    $92 = HEAP32[5088] | 0;
    $93 = HEAP32[5092] | 0;
    $arrayidx209 = $93 + ($92 << 2) | 0;
    $94 = HEAP32[$arrayidx209 >> 2] | 0;
    $pp210 = $94 | 0;
    $95 = HEAP32[$pp210 >> 2] | 0;
    $96 = HEAP32[5086] | 0;
    $arrayidx211 = $93 + ($96 << 2) | 0;
    $97 = HEAP32[$arrayidx211 >> 2] | 0;
    $pp212 = $97 | 0;
    $98 = HEAP32[$pp212 >> 2] | 0;
    $call213 = _ccw($arrayidx182, $95, $98) | 0;
    $cmp214 = ($call213 | 0) == 1;
    $_arrayidx183 = $cmp214 ? $97 : $arrayidx183;
    $arrayidx183_ = $cmp214 ? $arrayidx183 : $97;
    $rpnlp_0 = $arrayidx183_;
    $lpnlp_0 = $_arrayidx183;
    label = 48;
    break;
   case 47:
    $add223 = $ei_0_lcssa_ph + 1 | 0;
    $rem224 = ($add223 >>> 0) % 3;
    $pnl1p = $88 + ($trii_3140 * 52 & -1) + 4 + ($rem224 << 4) + 4 | 0;
    $99 = HEAP32[$pnl1p >> 2] | 0;
    $pnl0p = $88 + ($trii_3140 * 52 & -1) + 4 + ($ei_0_lcssa_ph << 4) | 0;
    $100 = HEAP32[$pnl0p >> 2] | 0;
    $pp229 = $100 | 0;
    $101 = HEAP32[$pp229 >> 2] | 0;
    $pp230 = $99 | 0;
    $102 = HEAP32[$pp230 >> 2] | 0;
    $pnl1p233 = $88 + ($trii_3140 * 52 & -1) + 4 + ($ei_0_lcssa_ph << 4) + 4 | 0;
    $103 = HEAP32[$pnl1p233 >> 2] | 0;
    $pp234 = $103 | 0;
    $104 = HEAP32[$pp234 >> 2] | 0;
    $call235 = _ccw($101, $102, $104) | 0;
    $cmp236 = ($call235 | 0) == 1;
    $_ = $cmp236 ? $103 : $100;
    $_130 = $cmp236 ? $100 : $103;
    $rpnlp_0 = $_130;
    $lpnlp_0 = $_;
    label = 48;
    break;
   case 48:
    $cmp253 = ($trii_3140 | 0) == ($trii_1 | 0);
    if ($cmp253) {
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 49:
    _add2dq(2, $lpnlp_0);
    _add2dq(1, $rpnlp_0);
    label = 56;
    break;
   case 50:
    $105 = HEAP32[5088] | 0;
    $106 = HEAP32[5092] | 0;
    $arrayidx256 = $106 + ($105 << 2) | 0;
    $107 = HEAP32[$arrayidx256 >> 2] | 0;
    $cmp257 = ($107 | 0) == ($rpnlp_0 | 0);
    if ($cmp257) {
      label = 54;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $108 = HEAP32[5086] | 0;
    $arrayidx259 = $106 + ($108 << 2) | 0;
    $109 = HEAP32[$arrayidx259 >> 2] | 0;
    $cmp260 = ($109 | 0) == ($rpnlp_0 | 0);
    if ($cmp260) {
      label = 54;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $call262 = _finddqsplit($rpnlp_0) | 0;
    _splitdq(2, $call262);
    _add2dq(1, $rpnlp_0);
    $110 = HEAP32[5084] | 0;
    $cmp263 = ($call262 | 0) > ($110 | 0);
    if ($cmp263) {
      label = 53;
      break;
    } else {
      label = 56;
      break;
    }
   case 53:
    HEAP32[5084] = $call262;
    label = 56;
    break;
   case 54:
    $call267 = _finddqsplit($lpnlp_0) | 0;
    _splitdq(1, $call267);
    _add2dq(2, $lpnlp_0);
    $111 = HEAP32[5084] | 0;
    $cmp268 = ($call267 | 0) < ($111 | 0);
    if ($cmp268) {
      label = 55;
      break;
    } else {
      label = 56;
      break;
    }
   case 55:
    HEAP32[5084] = $call267;
    label = 56;
    break;
   case 56:
    $rtp278 = $88 + ($trii_3140 * 52 & -1) + 16 | 0;
    $112 = HEAP32[$rtp278 >> 2] | 0;
    $tobool279 = ($112 | 0) == 0;
    if ($tobool279) {
      label = 59;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $mark284 = $112 | 0;
    $113 = HEAP32[$mark284 >> 2] | 0;
    $cmp285 = ($113 | 0) == 1;
    if ($cmp285) {
      $_lcssa160 = $112;
      label = 58;
      break;
    } else {
      label = 59;
      break;
    }
   case 58:
    $114 = HEAP32[230] | 0;
    $sub_ptr_lhs_cast = $_lcssa160;
    $sub_ptr_rhs_cast = $114;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $sub_ptr_div = ($sub_ptr_sub | 0) / 52 & -1;
    $115 = ($sub_ptr_sub | 0) == -52;
    if ($115) {
      $pi_3134 = 0;
      $pnlp_0135 = $arrayidx183;
      label = 60;
      break;
    } else {
      $trii_3140 = $sub_ptr_div;
      label = 43;
      break;
    }
   case 59:
    $rtp278_1 = $88 + ($trii_3140 * 52 & -1) + 32 | 0;
    $116 = HEAP32[$rtp278_1 >> 2] | 0;
    $tobool279_1 = ($116 | 0) == 0;
    if ($tobool279_1) {
      label = 69;
      break;
    } else {
      label = 68;
      break;
    }
   case 60:
    $inc298 = $pi_3134 + 1 | 0;
    $link300 = $pnlp_0135 + 4 | 0;
    $117 = HEAP32[$link300 >> 2] | 0;
    $tobool296 = ($117 | 0) == 0;
    if ($tobool296) {
      label = 61;
      break;
    } else {
      $pi_3134 = $inc298;
      $pnlp_0135 = $117;
      label = 60;
      break;
    }
   case 61:
    _growops13($inc298);
    $pn302 = $output + 4 | 0;
    HEAP32[$pn302 >> 2] = $inc298;
    $118 = HEAP32[2284] | 0;
    $pnlp_1132 = $arrayidx183;
    $pi_4133 = $pi_3134;
    $119 = $118;
    label = 62;
    break;
   case 62:
    $arrayidx308 = $119 + ($pi_4133 << 4) | 0;
    $pp309 = $pnlp_1132 | 0;
    $120 = HEAP32[$pp309 >> 2] | 0;
    $121 = $arrayidx308;
    $122 = $120;
    HEAP32[$121 >> 2] = HEAP32[$122 >> 2] | 0;
    HEAP32[$121 + 4 >> 2] = HEAP32[$122 + 4 >> 2] | 0;
    HEAP32[$121 + 8 >> 2] = HEAP32[$122 + 8 >> 2] | 0;
    HEAP32[$121 + 12 >> 2] = HEAP32[$122 + 12 >> 2] | 0;
    $link312 = $pnlp_1132 + 4 | 0;
    $123 = HEAP32[$link312 >> 2] | 0;
    $pi_4 = $pi_4133 - 1 | 0;
    $tobool306 = ($123 | 0) == 0;
    $124 = HEAP32[2284] | 0;
    if ($tobool306) {
      label = 63;
      break;
    } else {
      $pnlp_1132 = $123;
      $pi_4133 = $pi_4;
      $119 = $124;
      label = 62;
      break;
    }
   case 63:
    $ps314 = $output | 0;
    HEAP32[$ps314 >> 2] = $124;
    $retval_0 = 0;
    label = 64;
    break;
   case 64:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
   case 65:
    $mark199_1 = $91 | 0;
    $125 = HEAP32[$mark199_1 >> 2] | 0;
    $cmp200_1 = ($125 | 0) == 1;
    if ($cmp200_1) {
      $ei_0_lcssa_ph = 1;
      label = 47;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    $rtp_2 = $88 + ($trii_3140 * 52 & -1) + 48 | 0;
    $126 = HEAP32[$rtp_2 >> 2] | 0;
    $tobool194_2 = ($126 | 0) == 0;
    if ($tobool194_2) {
      label = 46;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $mark199_2 = $126 | 0;
    $127 = HEAP32[$mark199_2 >> 2] | 0;
    $cmp200_2 = ($127 | 0) == 1;
    if ($cmp200_2) {
      $ei_0_lcssa_ph = 2;
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 68:
    $mark284_1 = $116 | 0;
    $128 = HEAP32[$mark284_1 >> 2] | 0;
    $cmp285_1 = ($128 | 0) == 1;
    if ($cmp285_1) {
      $_lcssa160 = $116;
      label = 58;
      break;
    } else {
      label = 69;
      break;
    }
   case 69:
    $rtp278_2 = $88 + ($trii_3140 * 52 & -1) + 48 | 0;
    $129 = HEAP32[$rtp278_2 >> 2] | 0;
    $tobool279_2 = ($129 | 0) == 0;
    if ($tobool279_2) {
      $pi_3134 = 0;
      $pnlp_0135 = $arrayidx183;
      label = 60;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $mark284_2 = $129 | 0;
    $130 = HEAP32[$mark284_2 >> 2] | 0;
    $cmp285_2 = ($130 | 0) == 1;
    if ($cmp285_2) {
      $_lcssa160 = $129;
      label = 58;
      break;
    } else {
      $pi_3134 = 0;
      $pnlp_0135 = $arrayidx183;
      label = 60;
      break;
    }
  }
  return 0;
}
function _triangulate($pnlps, $pnln) {
  $pnlps = $pnlps | 0;
  $pnln = $pnln | 0;
  var $cmp29 = 0, $cmp = 0, $pnln_tr30 = 0, $pnli_0 = 0, $cmp1 = 0, $add = 0, $rem = 0, $add2 = 0, $rem3 = 0, $call = 0, $tobool = 0, $arrayidx = 0, $0 = 0, $arrayidx5 = 0, $1 = 0, $arrayidx6 = 0, $2 = 0, $sub = 0, $cmp827 = 0, $pnli_128 = 0, $add10 = 0, $arrayidx11 = 0, $3 = 0, $arrayidx12 = 0, $cmp8 = 0, $4 = 0, $call17 = 0, $5 = 0, $arrayidx19 = 0, $6 = 0, $arrayidx20 = 0, $7 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp29 = ($pnln | 0) > 3;
    if ($cmp29) {
      $pnln_tr30 = $pnln;
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $cmp = ($sub | 0) > 3;
    if ($cmp) {
      $pnln_tr30 = $sub;
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $pnli_0 = 0;
    label = 5;
    break;
   case 5:
    $cmp1 = ($pnli_0 | 0) < ($pnln_tr30 | 0);
    if ($cmp1) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $add = $pnli_0 + 1 | 0;
    $rem = ($add | 0) % ($pnln_tr30 | 0);
    $add2 = $pnli_0 + 2 | 0;
    $rem3 = ($add2 | 0) % ($pnln_tr30 | 0);
    $call = _isdiagonal($pnli_0, $rem3, $pnlps, $pnln_tr30) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $pnli_0 = $add;
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $arrayidx = $pnlps + ($pnli_0 << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $arrayidx5 = $pnlps + ($rem << 2) | 0;
    $1 = HEAP32[$arrayidx5 >> 2] | 0;
    $arrayidx6 = $pnlps + ($rem3 << 2) | 0;
    $2 = HEAP32[$arrayidx6 >> 2] | 0;
    _loadtriangle($0, $1, $2);
    $sub = $pnln_tr30 - 1 | 0;
    $cmp827 = ($rem | 0) < ($sub | 0);
    if ($cmp827) {
      $pnli_128 = $rem;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 8:
    $add10 = $pnli_128 + 1 | 0;
    $arrayidx11 = $pnlps + ($add10 << 2) | 0;
    $3 = HEAP32[$arrayidx11 >> 2] | 0;
    $arrayidx12 = $pnlps + ($pnli_128 << 2) | 0;
    HEAP32[$arrayidx12 >> 2] = $3;
    $cmp8 = ($add10 | 0) < ($sub | 0);
    if ($cmp8) {
      $pnli_128 = $add10;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 9:
    $4 = HEAP32[_stderr >> 2] | 0;
    $call17 = _fprintf($4 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 315, HEAP32[tempInt + 16 >> 2] = 152464, tempInt) | 0) | 0;
    label = 11;
    break;
   case 10:
    $5 = HEAP32[$pnlps >> 2] | 0;
    $arrayidx19 = $pnlps + 4 | 0;
    $6 = HEAP32[$arrayidx19 >> 2] | 0;
    $arrayidx20 = $pnlps + 8 | 0;
    $7 = HEAP32[$arrayidx20 >> 2] | 0;
    _loadtriangle($5, $6, $7);
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return;
  }
}
function _growpnls($newpnln) {
  $newpnln = $newpnln | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $tobool = 0, $mul = 0, $call = 0, $2 = 0, $tobool2 = 0, $3 = 0, $call4 = 0, $mul6 = 0, $call7 = 0, $4 = 0, $tobool8 = 0, $5 = 0, $call10 = 0, $6 = 0, $mul12 = 0, $call13 = 0, $7 = 0, $tobool14 = 0, $8 = 0, $call16 = 0, $9 = 0, $10 = 0, $mul18 = 0, $call19 = 0, $11 = 0, $tobool20 = 0, $12 = 0, $call22 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1792] | 0;
    $cmp = ($0 | 0) < ($newpnln | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $1 = HEAP32[1788] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $mul = $newpnln << 3;
    $call = _malloc($mul) | 0;
    $2 = $call;
    HEAP32[1788] = $2;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $3 = HEAP32[_stderr >> 2] | 0;
    $call4 = _fprintf($3 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 514, HEAP32[tempInt + 16 >> 2] = 92152, tempInt) | 0) | 0;
    _abort();
   case 6:
    $mul6 = $newpnln << 2;
    $call7 = _malloc($mul6) | 0;
    $4 = $call7;
    HEAP32[1790] = $4;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 12;
      break;
    }
   case 7:
    $5 = HEAP32[_stderr >> 2] | 0;
    $call10 = _fprintf($5 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 518, HEAP32[tempInt + 16 >> 2] = 162288, tempInt) | 0) | 0;
    _abort();
   case 8:
    $6 = $1;
    $mul12 = $newpnln << 3;
    $call13 = _realloc($6, $mul12) | 0;
    $7 = $call13;
    HEAP32[1788] = $7;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $8 = HEAP32[_stderr >> 2] | 0;
    $call16 = _fprintf($8 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 524, HEAP32[tempInt + 16 >> 2] = 158744, tempInt) | 0) | 0;
    _abort();
   case 10:
    $9 = HEAP32[1790] | 0;
    $10 = $9;
    $mul18 = $newpnln << 2;
    $call19 = _realloc($10, $mul18) | 0;
    $11 = $call19;
    HEAP32[1790] = $11;
    $tobool20 = ($call19 | 0) == 0;
    if ($tobool20) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $12 = HEAP32[_stderr >> 2] | 0;
    $call22 = _fprintf($12 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 530, HEAP32[tempInt + 16 >> 2] = 155264, tempInt) | 0) | 0;
    _abort();
   case 12:
    HEAP32[1792] = $newpnln;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _growdq($newdqn) {
  $newdqn = $newdqn | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $tobool = 0, $mul = 0, $call = 0, $2 = 0, $tobool2 = 0, $3 = 0, $call4 = 0, $4 = 0, $mul6 = 0, $call7 = 0, $5 = 0, $tobool8 = 0, $6 = 0, $call10 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[5090] | 0;
    $cmp = ($0 | 0) < ($newdqn | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $1 = HEAP32[5092] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $mul = $newdqn << 2;
    $call = _malloc($mul) | 0;
    $2 = $call;
    HEAP32[5092] = $2;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $3 = HEAP32[_stderr >> 2] | 0;
    $call4 = _fprintf($3 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 564, HEAP32[tempInt + 16 >> 2] = 99600, tempInt) | 0) | 0;
    _abort();
   case 6:
    $4 = $1;
    $mul6 = $newdqn << 2;
    $call7 = _realloc($4, $mul6) | 0;
    $5 = $call7;
    HEAP32[5092] = $5;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $6 = HEAP32[_stderr >> 2] | 0;
    $call10 = _fprintf($6 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 571, HEAP32[tempInt + 16 >> 2] = 95608, tempInt) | 0) | 0;
    _abort();
   case 8:
    HEAP32[5090] = $newdqn;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _splitdq($side, $index) {
  $side = $side | 0;
  $index = $index | 0;
  var $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($side | 0) == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[5086] = $index;
    label = 5;
    break;
   case 4:
    HEAP32[5088] = $index;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _add2dq($side, $pnlp) {
  $side = $side | 0;
  $pnlp = $pnlp | 0;
  var $cmp = 0, $0 = 0, $1 = 0, $sub = 0, $cmp1 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $link = 0, $4 = 0, $dec = 0, $5 = 0, $arrayidx3 = 0, $6 = 0, $arrayidx7 = 0, $7 = 0, $link8 = 0, $8 = 0, $inc = 0, $9 = 0, $arrayidx10 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($side | 0) == 1;
    $0 = HEAP32[5086] | 0;
    $1 = HEAP32[5088] | 0;
    $sub = $0 - $1 | 0;
    $cmp1 = ($sub | 0) > -1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $2 = HEAP32[5092] | 0;
    $arrayidx = $2 + ($1 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $link = $pnlp + 4 | 0;
    HEAP32[$link >> 2] = $3;
    label = 5;
    break;
   case 5:
    $4 = HEAP32[5088] | 0;
    $dec = $4 - 1 | 0;
    HEAP32[5088] = $dec;
    $5 = HEAP32[5092] | 0;
    $arrayidx3 = $5 + ($dec << 2) | 0;
    HEAP32[$arrayidx3 >> 2] = $pnlp;
    label = 9;
    break;
   case 6:
    if ($cmp1) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $6 = HEAP32[5092] | 0;
    $arrayidx7 = $6 + ($0 << 2) | 0;
    $7 = HEAP32[$arrayidx7 >> 2] | 0;
    $link8 = $pnlp + 4 | 0;
    HEAP32[$link8 >> 2] = $7;
    label = 8;
    break;
   case 8:
    $8 = HEAP32[5086] | 0;
    $inc = $8 + 1 | 0;
    HEAP32[5086] = $inc;
    $9 = HEAP32[5092] | 0;
    $arrayidx10 = $9 + ($inc << 2) | 0;
    HEAP32[$arrayidx10 >> 2] = $pnlp;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _solve1($coeff, $roots) {
  $coeff = $coeff | 0;
  $roots = $roots | 0;
  var $arrayidx = 0, $0 = 0.0, $1 = 0.0, $cmp = 0, $cmp2 = 0, $or_cond = 0, $cmp3 = 0, $cmp5 = 0, $or_cond1 = 0, $_ = 0, $sub = 0.0, $div = 0.0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrayidx = $coeff + 8 | 0;
    $0 = +HEAPF64[$arrayidx >> 3];
    $1 = +HEAPF64[$coeff >> 3];
    $cmp = $0 < 1.0e-7;
    $cmp2 = $0 > -1.0e-7;
    $or_cond = $cmp & $cmp2;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $cmp3 = $1 < 1.0e-7;
    $cmp5 = $1 > -1.0e-7;
    $or_cond1 = $cmp3 & $cmp5;
    $_ = $or_cond1 ? 4 : 0;
    $retval_0 = $_;
    label = 5;
    break;
   case 4:
    $sub = -0.0 - $1;
    $div = $sub / $0;
    HEAPF64[$roots >> 3] = $div;
    $retval_0 = 1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _pointintri($trii, $pp) {
  $trii = $trii | 0;
  $pp = $pp | 0;
  var $0 = 0, $pnl0p = 0, $1 = 0, $pp2 = 0, $2 = 0, $pnl1p = 0, $3 = 0, $pp6 = 0, $4 = 0, $call = 0, $not_cmp7 = 0, $inc = 0, $pnl0p_1 = 0, $5 = 0, $pp2_1 = 0, $6 = 0, $pnl1p_1 = 0, $7 = 0, $pp6_1 = 0, $8 = 0, $call_1 = 0, $not_cmp7_1 = 0, $inc_1 = 0, $sum_0_inc_1 = 0, $pnl0p_2 = 0, $9 = 0, $pp2_2 = 0, $10 = 0, $pnl1p_2 = 0, $11 = 0, $pp6_2 = 0, $12 = 0, $call_2 = 0, $not_cmp7_2 = 0, $inc_2 = 0, $sum_0_inc_2 = 0, $cmp9 = 0, $cmp10 = 0, $phitmp = 0, $13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[230] | 0;
    $pnl0p = $0 + ($trii * 52 & -1) + 4 | 0;
    $1 = HEAP32[$pnl0p >> 2] | 0;
    $pp2 = $1 | 0;
    $2 = HEAP32[$pp2 >> 2] | 0;
    $pnl1p = $0 + ($trii * 52 & -1) + 8 | 0;
    $3 = HEAP32[$pnl1p >> 2] | 0;
    $pp6 = $3 | 0;
    $4 = HEAP32[$pp6 >> 2] | 0;
    $call = _ccw($2, $4, $pp) | 0;
    $not_cmp7 = ($call | 0) != 2;
    $inc = $not_cmp7 & 1;
    $pnl0p_1 = $0 + ($trii * 52 & -1) + 20 | 0;
    $5 = HEAP32[$pnl0p_1 >> 2] | 0;
    $pp2_1 = $5 | 0;
    $6 = HEAP32[$pp2_1 >> 2] | 0;
    $pnl1p_1 = $0 + ($trii * 52 & -1) + 24 | 0;
    $7 = HEAP32[$pnl1p_1 >> 2] | 0;
    $pp6_1 = $7 | 0;
    $8 = HEAP32[$pp6_1 >> 2] | 0;
    $call_1 = _ccw($6, $8, $pp) | 0;
    $not_cmp7_1 = ($call_1 | 0) != 2;
    $inc_1 = $not_cmp7_1 & 1;
    $sum_0_inc_1 = $inc_1 + $inc | 0;
    $pnl0p_2 = $0 + ($trii * 52 & -1) + 36 | 0;
    $9 = HEAP32[$pnl0p_2 >> 2] | 0;
    $pp2_2 = $9 | 0;
    $10 = HEAP32[$pp2_2 >> 2] | 0;
    $pnl1p_2 = $0 + ($trii * 52 & -1) + 40 | 0;
    $11 = HEAP32[$pnl1p_2 >> 2] | 0;
    $pp6_2 = $11 | 0;
    $12 = HEAP32[$pp6_2 >> 2] | 0;
    $call_2 = _ccw($10, $12, $pp) | 0;
    $not_cmp7_2 = ($call_2 | 0) != 2;
    $inc_2 = $not_cmp7_2 & 1;
    $sum_0_inc_2 = $inc_2 + $sum_0_inc_1 | 0;
    $cmp9 = ($sum_0_inc_2 | 0) == 3;
    if ($cmp9) {
      $13 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp10 = ($sum_0_inc_2 | 0) == 0;
    $phitmp = $cmp10 & 1;
    $13 = $phitmp;
    label = 4;
    break;
   case 4:
    return $13 | 0;
  }
  return 0;
}
function _marktripath($trii, $trij) {
  $trii = $trii | 0;
  $trij = $trij | 0;
  var $0 = 0, $mark = 0, $1 = 0, $tobool = 0, $cmp = 0, $2 = 0, $rtp = 0, $3 = 0, $tobool8 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $sub_ptr_div = 0, $call = 0, $tobool13 = 0, $4 = 0, $rtp_1 = 0, $5 = 0, $tobool8_1 = 0, $retval_0 = 0, $sub_ptr_lhs_cast_1 = 0, $sub_ptr_rhs_cast_1 = 0, $sub_ptr_sub_1 = 0, $sub_ptr_div_1 = 0, $call_1 = 0, $tobool13_1 = 0, $6 = 0, $rtp_2 = 0, $7 = 0, $tobool8_2 = 0, $sub_ptr_lhs_cast_2 = 0, $sub_ptr_rhs_cast_2 = 0, $sub_ptr_sub_2 = 0, $sub_ptr_div_2 = 0, $call_2 = 0, $tobool13_2 = 0, $8 = 0, $mark17 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[230] | 0;
    $mark = $0 + ($trii * 52 & -1) | 0;
    $1 = HEAP32[$mark >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 3:
    HEAP32[$mark >> 2] = 1;
    $cmp = ($trii | 0) == ($trij | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP32[230] | 0;
    $rtp = $2 + ($trii * 52 & -1) + 16 | 0;
    $3 = HEAP32[$rtp >> 2] | 0;
    $tobool8 = ($3 | 0) == 0;
    if ($tobool8) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $sub_ptr_lhs_cast = $3;
    $sub_ptr_rhs_cast = $2;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $sub_ptr_div = ($sub_ptr_sub | 0) / 52 & -1;
    $call = _marktripath($sub_ptr_div, $trij) | 0;
    $tobool13 = ($call | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 7;
      break;
    }
   case 6:
    $4 = HEAP32[230] | 0;
    $rtp_1 = $4 + ($trii * 52 & -1) + 32 | 0;
    $5 = HEAP32[$rtp_1 >> 2] | 0;
    $tobool8_1 = ($5 | 0) == 0;
    if ($tobool8_1) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    return $retval_0 | 0;
   case 8:
    $sub_ptr_lhs_cast_1 = $5;
    $sub_ptr_rhs_cast_1 = $4;
    $sub_ptr_sub_1 = $sub_ptr_lhs_cast_1 - $sub_ptr_rhs_cast_1 | 0;
    $sub_ptr_div_1 = ($sub_ptr_sub_1 | 0) / 52 & -1;
    $call_1 = _marktripath($sub_ptr_div_1, $trij) | 0;
    $tobool13_1 = ($call_1 | 0) == 0;
    if ($tobool13_1) {
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 7;
      break;
    }
   case 9:
    $6 = HEAP32[230] | 0;
    $rtp_2 = $6 + ($trii * 52 & -1) + 48 | 0;
    $7 = HEAP32[$rtp_2 >> 2] | 0;
    $tobool8_2 = ($7 | 0) == 0;
    if ($tobool8_2) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $sub_ptr_lhs_cast_2 = $7;
    $sub_ptr_rhs_cast_2 = $6;
    $sub_ptr_sub_2 = $sub_ptr_lhs_cast_2 - $sub_ptr_rhs_cast_2 | 0;
    $sub_ptr_div_2 = ($sub_ptr_sub_2 | 0) / 52 & -1;
    $call_2 = _marktripath($sub_ptr_div_2, $trij) | 0;
    $tobool13_2 = ($call_2 | 0) == 0;
    if ($tobool13_2) {
      label = 11;
      break;
    } else {
      $retval_0 = 1;
      label = 7;
      break;
    }
   case 11:
    $8 = HEAP32[230] | 0;
    $mark17 = $8 + ($trii * 52 & -1) | 0;
    HEAP32[$mark17 >> 2] = 0;
    $retval_0 = 0;
    label = 7;
    break;
  }
  return 0;
}
function _finddqsplit($pnlp) {
  $pnlp = $pnlp | 0;
  var $0 = 0, $1 = 0, $2 = 0, $pp3 = 0, $index_0 = 0, $cmp = 0, $add = 0, $arrayidx = 0, $3 = 0, $pp = 0, $4 = 0, $arrayidx1 = 0, $5 = 0, $pp2 = 0, $6 = 0, $7 = 0, $call = 0, $cmp4 = 0, $8 = 0, $9 = 0, $10 = 0, $pp12 = 0, $index_1 = 0, $cmp6 = 0, $sub = 0, $arrayidx8 = 0, $11 = 0, $pp9 = 0, $12 = 0, $arrayidx10 = 0, $13 = 0, $pp11 = 0, $14 = 0, $15 = 0, $call13 = 0, $cmp14 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[5088] | 0;
    $1 = HEAP32[5084] | 0;
    $2 = HEAP32[5092] | 0;
    $pp3 = $pnlp | 0;
    $index_0 = $0;
    label = 3;
    break;
   case 3:
    $cmp = ($index_0 | 0) < ($1 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $add = $index_0 + 1 | 0;
    $arrayidx = $2 + ($add << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $pp = $3 | 0;
    $4 = HEAP32[$pp >> 2] | 0;
    $arrayidx1 = $2 + ($index_0 << 2) | 0;
    $5 = HEAP32[$arrayidx1 >> 2] | 0;
    $pp2 = $5 | 0;
    $6 = HEAP32[$pp2 >> 2] | 0;
    $7 = HEAP32[$pp3 >> 2] | 0;
    $call = _ccw($4, $6, $7) | 0;
    $cmp4 = ($call | 0) == 1;
    if ($cmp4) {
      $retval_0 = $index_0;
      label = 8;
      break;
    } else {
      $index_0 = $add;
      label = 3;
      break;
    }
   case 5:
    $8 = HEAP32[5086] | 0;
    $9 = HEAP32[5084] | 0;
    $10 = HEAP32[5092] | 0;
    $pp12 = $pnlp | 0;
    $index_1 = $8;
    label = 6;
    break;
   case 6:
    $cmp6 = ($index_1 | 0) > ($9 | 0);
    if ($cmp6) {
      label = 7;
      break;
    } else {
      $retval_0 = $9;
      label = 8;
      break;
    }
   case 7:
    $sub = $index_1 - 1 | 0;
    $arrayidx8 = $10 + ($sub << 2) | 0;
    $11 = HEAP32[$arrayidx8 >> 2] | 0;
    $pp9 = $11 | 0;
    $12 = HEAP32[$pp9 >> 2] | 0;
    $arrayidx10 = $10 + ($index_1 << 2) | 0;
    $13 = HEAP32[$arrayidx10 >> 2] | 0;
    $pp11 = $13 | 0;
    $14 = HEAP32[$pp11 >> 2] | 0;
    $15 = HEAP32[$pp12 >> 2] | 0;
    $call13 = _ccw($12, $14, $15) | 0;
    $cmp14 = ($call13 | 0) == 2;
    if ($cmp14) {
      $retval_0 = $index_1;
      label = 8;
      break;
    } else {
      $index_1 = $sub;
      label = 6;
      break;
    }
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _isdiagonal($pnli, $pnlip2, $pnlps, $pnln) {
  $pnli = $pnli | 0;
  $pnlip2 = $pnlip2 | 0;
  $pnlps = $pnlps | 0;
  $pnln = $pnln | 0;
  var $add = 0, $rem = 0, $add1 = 0, $sub = 0, $rem2 = 0, $arrayidx = 0, $0 = 0, $pp = 0, $1 = 0, $arrayidx3 = 0, $2 = 0, $pp4 = 0, $3 = 0, $arrayidx5 = 0, $4 = 0, $pp6 = 0, $5 = 0, $call = 0, $cmp = 0, $arrayidx9 = 0, $6 = 0, $pp10 = 0, $7 = 0, $call13 = 0, $cmp14 = 0, $call29 = 0, $cmp30 = 0, $call21 = 0, $cmp22 = 0, $cmp3341 = 0, $pnlj_042 = 0, $add35 = 0, $8 = 0, $tmp = 0, $cmp37 = 0, $cmp39 = 0, $or_cond = 0, $cmp42 = 0, $or_cond39 = 0, $cmp45 = 0, $or_cond40 = 0, $9 = 0, $pp49 = 0, $10 = 0, $11 = 0, $pp51 = 0, $12 = 0, $arrayidx52 = 0, $13 = 0, $pp53 = 0, $14 = 0, $arrayidx54 = 0, $15 = 0, $pp55 = 0, $16 = 0, $call56 = 0, $tobool57 = 0, $cmp33 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add = $pnli + 1 | 0;
    $rem = ($add | 0) % ($pnln | 0);
    $add1 = $pnli - 1 | 0;
    $sub = $add1 + $pnln | 0;
    $rem2 = ($sub | 0) % ($pnln | 0);
    $arrayidx = $pnlps + ($rem2 << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $pp = $0 | 0;
    $1 = HEAP32[$pp >> 2] | 0;
    $arrayidx3 = $pnlps + ($pnli << 2) | 0;
    $2 = HEAP32[$arrayidx3 >> 2] | 0;
    $pp4 = $2 | 0;
    $3 = HEAP32[$pp4 >> 2] | 0;
    $arrayidx5 = $pnlps + ($rem << 2) | 0;
    $4 = HEAP32[$arrayidx5 >> 2] | 0;
    $pp6 = $4 | 0;
    $5 = HEAP32[$pp6 >> 2] | 0;
    $call = _ccw($1, $3, $5) | 0;
    $cmp = ($call | 0) == 1;
    $arrayidx9 = $pnlps + ($pnlip2 << 2) | 0;
    $6 = HEAP32[$arrayidx9 >> 2] | 0;
    $pp10 = $6 | 0;
    $7 = HEAP32[$pp10 >> 2] | 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call13 = _ccw($3, $7, $1) | 0;
    $cmp14 = ($call13 | 0) == 1;
    if ($cmp14) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 10;
      break;
    }
   case 4:
    $call29 = _ccw($3, $7, $5) | 0;
    $cmp30 = ($call29 | 0) == 2;
    if ($cmp30) {
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 10;
      break;
    }
   case 5:
    $call21 = _ccw($7, $3, $5) | 0;
    $cmp22 = ($call21 | 0) == 1;
    if ($cmp22) {
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 10;
      break;
    }
   case 6:
    $cmp3341 = ($pnln | 0) > 0;
    if ($cmp3341) {
      $pnlj_042 = 0;
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 10;
      break;
    }
   case 7:
    $add35 = $pnlj_042 + 1 | 0;
    $8 = ($add35 | 0) == ($pnln | 0);
    $tmp = $8 ? 0 : $add35;
    $cmp37 = ($pnlj_042 | 0) == ($pnli | 0);
    $cmp39 = ($tmp | 0) == ($pnli | 0);
    $or_cond = $cmp37 | $cmp39;
    $cmp42 = ($pnlj_042 | 0) == ($pnlip2 | 0);
    $or_cond39 = $or_cond | $cmp42;
    $cmp45 = ($tmp | 0) == ($pnlip2 | 0);
    $or_cond40 = $or_cond39 | $cmp45;
    if ($or_cond40) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $9 = HEAP32[$arrayidx3 >> 2] | 0;
    $pp49 = $9 | 0;
    $10 = HEAP32[$pp49 >> 2] | 0;
    $11 = HEAP32[$arrayidx9 >> 2] | 0;
    $pp51 = $11 | 0;
    $12 = HEAP32[$pp51 >> 2] | 0;
    $arrayidx52 = $pnlps + ($pnlj_042 << 2) | 0;
    $13 = HEAP32[$arrayidx52 >> 2] | 0;
    $pp53 = $13 | 0;
    $14 = HEAP32[$pp53 >> 2] | 0;
    $arrayidx54 = $pnlps + ($tmp << 2) | 0;
    $15 = HEAP32[$arrayidx54 >> 2] | 0;
    $pp55 = $15 | 0;
    $16 = HEAP32[$pp55 >> 2] | 0;
    $call56 = _intersects($10, $12, $14, $16) | 0;
    $tobool57 = ($call56 | 0) == 0;
    if ($tobool57) {
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 10;
      break;
    }
   case 9:
    $cmp33 = ($add35 | 0) < ($pnln | 0);
    if ($cmp33) {
      $pnlj_042 = $add35;
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 10;
      break;
    }
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _loadtriangle($pnlap, $pnlbp, $pnlcp) {
  $pnlap = $pnlap | 0;
  $pnlbp = $pnlbp | 0;
  $pnlcp = $pnlcp | 0;
  var $0 = 0, $1 = 0, $cmp = 0, $add = 0, $2 = 0, $inc = 0, $3 = 0, $arrayidx = 0, $mark = 0, $pnl0p = 0, $pnl1p = 0, $rtp = 0, $pnl0p8 = 0, $pnl1p11 = 0, $rtp14 = 0, $pnl0p17 = 0, $pnl1p20 = 0, $rtp23 = 0, $ltp = 0, $ltp_1 = 0, $ltp_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[234] | 0;
    $1 = HEAP32[232] | 0;
    $cmp = ($0 | 0) < ($1 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $1 + 20 | 0;
    _growtris($add);
    label = 4;
    break;
   case 4:
    $2 = HEAP32[234] | 0;
    $inc = $2 + 1 | 0;
    HEAP32[234] = $inc;
    $3 = HEAP32[230] | 0;
    $arrayidx = $3 + ($2 * 52 & -1) | 0;
    $mark = $arrayidx | 0;
    HEAP32[$mark >> 2] = 0;
    $pnl0p = $3 + ($2 * 52 & -1) + 4 | 0;
    HEAP32[$pnl0p >> 2] = $pnlap;
    $pnl1p = $3 + ($2 * 52 & -1) + 8 | 0;
    HEAP32[$pnl1p >> 2] = $pnlbp;
    $rtp = $3 + ($2 * 52 & -1) + 16 | 0;
    HEAP32[$rtp >> 2] = 0;
    $pnl0p8 = $3 + ($2 * 52 & -1) + 20 | 0;
    HEAP32[$pnl0p8 >> 2] = $pnlbp;
    $pnl1p11 = $3 + ($2 * 52 & -1) + 24 | 0;
    HEAP32[$pnl1p11 >> 2] = $pnlcp;
    $rtp14 = $3 + ($2 * 52 & -1) + 32 | 0;
    HEAP32[$rtp14 >> 2] = 0;
    $pnl0p17 = $3 + ($2 * 52 & -1) + 36 | 0;
    HEAP32[$pnl0p17 >> 2] = $pnlcp;
    $pnl1p20 = $3 + ($2 * 52 & -1) + 40 | 0;
    HEAP32[$pnl1p20 >> 2] = $pnlap;
    $rtp23 = $3 + ($2 * 52 & -1) + 48 | 0;
    HEAP32[$rtp23 >> 2] = 0;
    $ltp = $3 + ($2 * 52 & -1) + 12 | 0;
    HEAP32[$ltp >> 2] = $arrayidx;
    $ltp_1 = $3 + ($2 * 52 & -1) + 28 | 0;
    HEAP32[$ltp_1 >> 2] = $arrayidx;
    $ltp_2 = $3 + ($2 * 52 & -1) + 44 | 0;
    HEAP32[$ltp_2 >> 2] = $arrayidx;
    return;
  }
}
function _intersects($pap, $pbp, $pcp, $pdp) {
  $pap = $pap | 0;
  $pbp = $pbp | 0;
  $pcp = $pcp | 0;
  $pdp = $pdp | 0;
  var $call = 0, $cmp = 0, $call1 = 0, $cmp2 = 0, $call4 = 0, $cmp5 = 0, $call7 = 0, $cmp8 = 0, $call9 = 0, $tobool = 0, $call11 = 0, $tobool12 = 0, $call14 = 0, $tobool15 = 0, $call17 = 0, $not_tobool18 = 0, $_ = 0, $cmp21 = 0, $cmp23 = 0, $xor33 = 0, $cmp29 = 0, $cmp26 = 0, $xor3234 = 0, $xor32 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _ccw($pap, $pbp, $pcp) | 0;
    $cmp = ($call | 0) == 3;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _ccw($pap, $pbp, $pdp) | 0;
    $cmp2 = ($call1 | 0) == 3;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call4 = _ccw($pcp, $pdp, $pap) | 0;
    $cmp5 = ($call4 | 0) == 3;
    if ($cmp5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call7 = _ccw($pcp, $pdp, $pbp) | 0;
    $cmp8 = ($call7 | 0) == 3;
    if ($cmp8) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 6:
    $call9 = _between($pap, $pbp, $pcp) | 0;
    $tobool = ($call9 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 12;
      break;
    }
   case 7:
    $call11 = _between($pap, $pbp, $pdp) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      label = 8;
      break;
    } else {
      $retval_0 = 1;
      label = 12;
      break;
    }
   case 8:
    $call14 = _between($pcp, $pdp, $pap) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 12;
      break;
    }
   case 9:
    $call17 = _between($pcp, $pdp, $pbp) | 0;
    $not_tobool18 = ($call17 | 0) != 0;
    $_ = $not_tobool18 & 1;
    return $_ | 0;
   case 10:
    $cmp21 = ($call | 0) == 1;
    $cmp23 = ($call1 | 0) == 1;
    $xor33 = $cmp21 ^ $cmp23;
    if ($xor33) {
      label = 11;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 11:
    $cmp29 = ($call7 | 0) == 1;
    $cmp26 = ($call4 | 0) == 1;
    $xor3234 = $cmp26 ^ $cmp29;
    $xor32 = $xor3234 & 1;
    $retval_0 = $xor32;
    label = 12;
    break;
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _between($pap, $pbp, $pcp) {
  $pap = $pap | 0;
  $pbp = $pbp | 0;
  $pcp = $pcp | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $sub = 0.0, $y = 0, $2 = 0.0, $y3 = 0, $3 = 0.0, $sub4 = 0.0, $x6 = 0, $4 = 0.0, $sub8 = 0.0, $y10 = 0, $5 = 0.0, $sub12 = 0.0, $call = 0, $cmp = 0, $mul = 0.0, $mul18 = 0.0, $add = 0.0, $cmp19 = 0, $mul22 = 0.0, $mul25 = 0.0, $add26 = 0.0, $mul29 = 0.0, $mul32 = 0.0, $add33 = 0.0, $cmp34 = 0, $phitmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $pbp | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $pap | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $sub = $0 - $1;
    $y = $pbp + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y3 = $pap + 8 | 0;
    $3 = +HEAPF64[$y3 >> 3];
    $sub4 = $2 - $3;
    $x6 = $pcp | 0;
    $4 = +HEAPF64[$x6 >> 3];
    $sub8 = $4 - $1;
    $y10 = $pcp + 8 | 0;
    $5 = +HEAPF64[$y10 >> 3];
    $sub12 = $5 - $3;
    $call = _ccw($pap, $pbp, $pcp) | 0;
    $cmp = ($call | 0) == 3;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 3:
    $mul = $sub * $sub8;
    $mul18 = $sub4 * $sub12;
    $add = $mul + $mul18;
    $cmp19 = $add < 0.0;
    if ($cmp19) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $mul22 = $sub8 * $sub8;
    $mul25 = $sub12 * $sub12;
    $add26 = $mul22 + $mul25;
    $mul29 = $sub * $sub;
    $mul32 = $sub4 * $sub4;
    $add33 = $mul29 + $mul32;
    $cmp34 = $add26 <= $add33;
    $phitmp = $cmp34 & 1;
    $retval_0 = $phitmp;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _solve3($coeff, $roots) {
  $coeff = $coeff | 0;
  $roots = $roots | 0;
  var $arrayidx = 0, $0 = 0.0, $cmp = 0, $cmp4 = 0, $or_cond = 0, $call = 0, $arrayidx2 = 0, $arrayidx1 = 0, $1 = 0.0, $2 = 0.0, $3 = 0.0, $mul = 0.0, $div = 0.0, $div5 = 0.0, $div6 = 0.0, $mul7 = 0.0, $mul8 = 0.0, $mul9 = 0.0, $mul10 = 0.0, $sub = 0.0, $add = 0.0, $div11 = 0.0, $sub12 = 0.0, $mul13 = 0.0, $mul14 = 0.0, $mul15 = 0.0, $mul16 = 0.0, $add17 = 0.0, $cmp18 = 0, $sub20 = 0.0, $add22 = 0.0, $call23 = 0.0, $mul24 = 0.0, $call26 = 0.0, $sub27 = 0.0, $call28 = 0.0, $cmp29 = 0, $sub30 = 0.0, $4 = 0.0, $mul31 = 0.0, $5 = 0.0, $cond = 0.0, $mul32 = 0.0, $div33 = 0.0, $call34 = 0.0, $mul35 = 0.0, $add37 = 0.0, $add38 = 0.0, $div39 = 0.0, $call40 = 0.0, $mul41 = 0.0, $arrayidx42 = 0, $sub43 = 0.0, $sub44 = 0.0, $div45 = 0.0, $call46 = 0.0, $mul47 = 0.0, $arrayidx48 = 0, $call49 = 0.0, $sub50 = 0.0, $mul51 = 0.0, $sub52 = 0.0, $sub53 = 0.0, $cmp54 = 0, $sub56 = 0.0, $6 = 0.0, $mul57 = 0.0, $7 = 0.0, $cond60 = 0.0, $cmp61 = 0, $sub63 = 0.0, $8 = 0.0, $mul64 = 0.0, $9 = 0.0, $cond67 = 0.0, $add68 = 0.0, $cmp70 = 0, $mul74 = 0.0, $arrayidx75 = 0, $arrayidx76 = 0, $rootn_0 = 0, $i_046 = 0, $arrayidx80 = 0, $10 = 0.0, $sub81 = 0.0, $inc = 0, $cmp79 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrayidx = $coeff + 24 | 0;
    $0 = +HEAPF64[$arrayidx >> 3];
    $cmp = $0 < 1.0e-7;
    $cmp4 = $0 > -1.0e-7;
    $or_cond = $cmp & $cmp4;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _solve2($coeff, $roots) | 0;
    $retval_0 = $call;
    label = 19;
    break;
   case 4:
    $arrayidx2 = $coeff + 8 | 0;
    $arrayidx1 = $coeff + 16 | 0;
    $1 = +HEAPF64[$coeff >> 3];
    $2 = +HEAPF64[$arrayidx2 >> 3];
    $3 = +HEAPF64[$arrayidx1 >> 3];
    $mul = $0 * 3.0;
    $div = $3 / $mul;
    $div5 = $2 / $0;
    $div6 = $1 / $0;
    $mul7 = $div * $div;
    $mul8 = $div * 2.0;
    $mul9 = $mul8 * $mul7;
    $mul10 = $div * $div5;
    $sub = $mul9 - $mul10;
    $add = $div6 + $sub;
    $div11 = $div5 / 3.0;
    $sub12 = $div11 - $mul7;
    $mul13 = $add * $add;
    $mul14 = $sub12 * 4.0;
    $mul15 = $sub12 * $mul14;
    $mul16 = $sub12 * $mul15;
    $add17 = $mul13 + $mul16;
    $cmp18 = $add17 < 0.0;
    if ($cmp18) {
      label = 5;
      break;
    } else {
      label = 9;
      break;
    }
   case 5:
    $sub20 = -0.0 - $add17;
    $add22 = $mul13 - $add17;
    $call23 = +Math_sqrt(+$add22);
    $mul24 = $call23 * .5;
    $call26 = +Math_sqrt(+$sub20);
    $sub27 = -0.0 - $add;
    $call28 = +Math_atan2(+$call26, +$sub27);
    $cmp29 = $mul24 < 0.0;
    if ($cmp29) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $sub30 = -0.0 - $mul24;
    $4 = +Math_pow(+$sub30, .3333333333333333);
    $mul31 = $4 * -1.0;
    $cond = $mul31;
    label = 8;
    break;
   case 7:
    $5 = +Math_pow(+$mul24, .3333333333333333);
    $cond = $5;
    label = 8;
    break;
   case 8:
    $mul32 = $cond * 2.0;
    $div33 = $call28 / 3.0;
    $call34 = +Math_cos(+$div33);
    $mul35 = $mul32 * $call34;
    HEAPF64[$roots >> 3] = $mul35;
    $add37 = $call28 + 3.141592653589793;
    $add38 = $add37 + 3.141592653589793;
    $div39 = $add38 / 3.0;
    $call40 = +Math_cos(+$div39);
    $mul41 = $mul32 * $call40;
    $arrayidx42 = $roots + 8 | 0;
    HEAPF64[$arrayidx42 >> 3] = $mul41;
    $sub43 = $call28 - 3.141592653589793;
    $sub44 = $sub43 - 3.141592653589793;
    $div45 = $sub44 / 3.0;
    $call46 = +Math_cos(+$div45);
    $mul47 = $mul32 * $call46;
    $arrayidx48 = $roots + 16 | 0;
    HEAPF64[$arrayidx48 >> 3] = $mul47;
    $rootn_0 = 3;
    label = 17;
    break;
   case 9:
    $call49 = +Math_sqrt(+$add17);
    $sub50 = $call49 - $add;
    $mul51 = $sub50 * .5;
    $sub52 = -0.0 - $add;
    $sub53 = $sub52 - $mul51;
    $cmp54 = $mul51 < 0.0;
    if ($cmp54) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $sub56 = -0.0 - $mul51;
    $6 = +Math_pow(+$sub56, .3333333333333333);
    $mul57 = $6 * -1.0;
    $cond60 = $mul57;
    label = 12;
    break;
   case 11:
    $7 = +Math_pow(+$mul51, .3333333333333333);
    $cond60 = $7;
    label = 12;
    break;
   case 12:
    $cmp61 = $sub53 < 0.0;
    if ($cmp61) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $sub63 = -0.0 - $sub53;
    $8 = +Math_pow(+$sub63, .3333333333333333);
    $mul64 = $8 * -1.0;
    $cond67 = $mul64;
    label = 15;
    break;
   case 14:
    $9 = +Math_pow(+$sub53, .3333333333333333);
    $cond67 = $9;
    label = 15;
    break;
   case 15:
    $add68 = $cond60 + $cond67;
    HEAPF64[$roots >> 3] = $add68;
    $cmp70 = $add17 > 0.0;
    if ($cmp70) {
      $rootn_0 = 1;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $mul74 = $add68 * -.5;
    $arrayidx75 = $roots + 16 | 0;
    HEAPF64[$arrayidx75 >> 3] = $mul74;
    $arrayidx76 = $roots + 8 | 0;
    HEAPF64[$arrayidx76 >> 3] = $mul74;
    $rootn_0 = 3;
    label = 17;
    break;
   case 17:
    $i_046 = 0;
    label = 18;
    break;
   case 18:
    $arrayidx80 = $roots + ($i_046 << 3) | 0;
    $10 = +HEAPF64[$arrayidx80 >> 3];
    $sub81 = $10 - $div;
    HEAPF64[$arrayidx80 >> 3] = $sub81;
    $inc = $i_046 + 1 | 0;
    $cmp79 = ($inc | 0) < ($rootn_0 | 0);
    if ($cmp79) {
      $i_046 = $inc;
      label = 18;
      break;
    } else {
      $retval_0 = $rootn_0;
      label = 19;
      break;
    }
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _solve2($coeff, $roots) {
  $coeff = $coeff | 0;
  $roots = $roots | 0;
  var $arrayidx = 0, $0 = 0.0, $cmp = 0, $cmp3 = 0, $or_cond = 0, $call = 0, $arrayidx1 = 0, $1 = 0.0, $2 = 0.0, $mul = 0.0, $div = 0.0, $div4 = 0.0, $mul5 = 0.0, $sub = 0.0, $cmp6 = 0, $cmp8 = 0, $sub10 = 0.0, $call14 = 0.0, $add = 0.0, $mul16 = 0.0, $sub18 = 0.0, $arrayidx19 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrayidx = $coeff + 16 | 0;
    $0 = +HEAPF64[$arrayidx >> 3];
    $cmp = $0 < 1.0e-7;
    $cmp3 = $0 > -1.0e-7;
    $or_cond = $cmp & $cmp3;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _solve1($coeff, $roots) | 0;
    $retval_0 = $call;
    label = 8;
    break;
   case 4:
    $arrayidx1 = $coeff + 8 | 0;
    $1 = +HEAPF64[$coeff >> 3];
    $2 = +HEAPF64[$arrayidx1 >> 3];
    $mul = $0 * 2.0;
    $div = $2 / $mul;
    $div4 = $1 / $0;
    $mul5 = $div * $div;
    $sub = $mul5 - $div4;
    $cmp6 = $sub < 0.0;
    if ($cmp6) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp8 = $sub == 0.0;
    if ($cmp8) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $sub10 = -0.0 - $div;
    HEAPF64[$roots >> 3] = $sub10;
    $retval_0 = 1;
    label = 8;
    break;
   case 7:
    $call14 = +Math_sqrt(+$sub);
    $add = $call14 - $div;
    HEAPF64[$roots >> 3] = $add;
    $mul16 = $div * -2.0;
    $sub18 = $mul16 - $add;
    $arrayidx19 = $roots + 8 | 0;
    HEAPF64[$arrayidx19 >> 3] = $sub18;
    $retval_0 = 2;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _make_polyline($line, $sline) {
  $line = $line | 0;
  $sline = $sline | 0;
  var $pn = 0, $0 = 0, $1 = 0, $add = 0, $2 = 0, $cmp = 0, $3 = 0, $tobool = 0, $4 = 0, $mul1 = 0, $call = 0, $mul2 = 0, $call3 = 0, $call_sink = 0, $5 = 0, $6 = 0, $arrayidx = 0, $ps = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $11 = 0, $sub918 = 0, $cmp1019 = 0, $12 = 0, $13 = 0, $14 = 0, $sub9 = 0, $15 = 0, $smax = 0, $16 = 0, $i_021 = 0, $j_020 = 0, $add11 = 0, $arrayidx12 = 0, $add13 = 0, $arrayidx14 = 0, $arrayidx15 = 0, $arrayidx17 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $add18 = 0, $inc19 = 0, $cmp10 = 0, $21 = 0, $i_0_lcssa = 0, $j_0_lcssa = 0, $add20 = 0, $22 = 0, $arrayidx21 = 0, $arrayidx22 = 0, $23 = 0, $arrayidx24 = 0, $24 = 0, $25 = 0, $26 = 0, $pn25 = 0, $27 = 0, $ps26 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $line;
  $line = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$line >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$line + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pn = $line + 4 | 0;
    $0 = HEAP32[$pn >> 2] | 0;
    $1 = $0 * 3 & -1;
    $add = $1 - 2 | 0;
    $2 = HEAP32[2860] | 0;
    $cmp = ($add | 0) > ($2 | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $3 = HEAP32[2862] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = $3;
    $mul1 = $add << 4;
    $call = _realloc($4, $mul1) | 0;
    $call_sink = $call;
    label = 6;
    break;
   case 5:
    $mul2 = $add << 4;
    $call3 = _malloc($mul2) | 0;
    $call_sink = $call3;
    label = 6;
    break;
   case 6:
    $5 = $call_sink;
    HEAP32[2862] = $5;
    HEAP32[2860] = $add;
    label = 7;
    break;
   case 7:
    $6 = HEAP32[2862] | 0;
    $arrayidx = $6 + 16 | 0;
    $ps = $line | 0;
    $7 = HEAP32[$ps >> 2] | 0;
    $8 = $6;
    $9 = $7;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $10 = $arrayidx;
    _memmove($10 | 0, $9 | 0, 16);
    $11 = HEAP32[$pn >> 2] | 0;
    $sub918 = $11 - 1 | 0;
    $cmp1019 = ($sub918 | 0) > 1;
    if ($cmp1019) {
      label = 8;
      break;
    } else {
      $j_0_lcssa = 2;
      $i_0_lcssa = 1;
      label = 11;
      break;
    }
   case 8:
    $12 = HEAP32[2862] | 0;
    $13 = HEAP32[$ps >> 2] | 0;
    $14 = HEAP32[$pn >> 2] | 0;
    $sub9 = $14 - 1 | 0;
    $15 = ($sub9 | 0) > 2;
    $smax = $15 ? $sub9 : 2;
    $16 = $smax * 3 & -1;
    $j_020 = 2;
    $i_021 = 1;
    label = 9;
    break;
   case 9:
    $add11 = $j_020 + 2 | 0;
    $arrayidx12 = $12 + ($add11 << 4) | 0;
    $add13 = $j_020 + 1 | 0;
    $arrayidx14 = $12 + ($add13 << 4) | 0;
    $arrayidx15 = $12 + ($j_020 << 4) | 0;
    $arrayidx17 = $13 + ($i_021 << 4) | 0;
    $17 = $arrayidx15;
    $18 = $arrayidx17;
    HEAP32[$17 >> 2] = HEAP32[$18 >> 2] | 0;
    HEAP32[$17 + 4 >> 2] = HEAP32[$18 + 4 >> 2] | 0;
    HEAP32[$17 + 8 >> 2] = HEAP32[$18 + 8 >> 2] | 0;
    HEAP32[$17 + 12 >> 2] = HEAP32[$18 + 12 >> 2] | 0;
    $19 = $arrayidx14;
    _memmove($19 | 0, $18 | 0, 16);
    $20 = $arrayidx12;
    HEAP32[$20 >> 2] = HEAP32[$19 >> 2] | 0;
    HEAP32[$20 + 4 >> 2] = HEAP32[$19 + 4 >> 2] | 0;
    HEAP32[$20 + 8 >> 2] = HEAP32[$19 + 8 >> 2] | 0;
    HEAP32[$20 + 12 >> 2] = HEAP32[$19 + 12 >> 2] | 0;
    $add18 = $j_020 + 3 | 0;
    $inc19 = $i_021 + 1 | 0;
    $cmp10 = ($inc19 | 0) < ($sub9 | 0);
    if ($cmp10) {
      $j_020 = $add18;
      $i_021 = $inc19;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $21 = $16 - 1 | 0;
    $j_0_lcssa = $21;
    $i_0_lcssa = $smax;
    label = 11;
    break;
   case 11:
    $add20 = $j_0_lcssa + 1 | 0;
    $22 = HEAP32[2862] | 0;
    $arrayidx21 = $22 + ($add20 << 4) | 0;
    $arrayidx22 = $22 + ($j_0_lcssa << 4) | 0;
    $23 = HEAP32[$ps >> 2] | 0;
    $arrayidx24 = $23 + ($i_0_lcssa << 4) | 0;
    $24 = $arrayidx22;
    $25 = $arrayidx24;
    HEAP32[$24 >> 2] = HEAP32[$25 >> 2] | 0;
    HEAP32[$24 + 4 >> 2] = HEAP32[$25 + 4 >> 2] | 0;
    HEAP32[$24 + 8 >> 2] = HEAP32[$25 + 8 >> 2] | 0;
    HEAP32[$24 + 12 >> 2] = HEAP32[$25 + 12 >> 2] | 0;
    $26 = $arrayidx21;
    _memmove($26 | 0, $25 | 0, 16);
    $pn25 = $sline + 4 | 0;
    HEAP32[$pn25 >> 2] = $add;
    $27 = HEAP32[2862] | 0;
    $ps26 = $sline | 0;
    HEAP32[$ps26 >> 2] = $27;
    STACKTOP = __stackBase__;
    return;
  }
}
function _agxbinit($xb, $hint, $init) {
  $xb = $xb | 0;
  $hint = $hint | 0;
  $init = $init | 0;
  var $tobool = 0, $buf = 0, $dyna = 0, $cmp = 0, $_hint = 0, $dyna2 = 0, $call = 0, $buf3 = 0, $hint_addr_1 = 0, $buf5 = 0, $0 = 0, $add_ptr = 0, $eptr = 0, $1 = 0, $ptr = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($init | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $buf = $xb | 0;
    HEAP32[$buf >> 2] = $init;
    $dyna = $xb + 12 | 0;
    HEAP32[$dyna >> 2] = 0;
    $hint_addr_1 = $hint;
    label = 5;
    break;
   case 4:
    $cmp = ($hint | 0) == 0;
    $_hint = $cmp ? 1024 : $hint;
    $dyna2 = $xb + 12 | 0;
    HEAP32[$dyna2 >> 2] = 1;
    $call = _malloc($_hint) | 0;
    $buf3 = $xb | 0;
    HEAP32[$buf3 >> 2] = $call;
    $hint_addr_1 = $_hint;
    label = 5;
    break;
   case 5:
    $buf5 = $xb | 0;
    $0 = HEAP32[$buf5 >> 2] | 0;
    $add_ptr = $0 + $hint_addr_1 | 0;
    $eptr = $xb + 8 | 0;
    HEAP32[$eptr >> 2] = $add_ptr;
    $1 = HEAP32[$buf5 >> 2] | 0;
    $ptr = $xb + 4 | 0;
    HEAP32[$ptr >> 2] = $1;
    HEAP8[$1] = 0;
    return;
  }
}
function _agxbmore($xb, $ssz) {
  $xb = $xb | 0;
  $ssz = $ssz | 0;
  var $eptr = 0, $0 = 0, $buf = 0, $1 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $mul = 0, $add = 0, $cmp = 0, $add_mul = 0, $ptr = 0, $2 = 0, $sub_ptr_lhs_cast3 = 0, $sub_ptr_sub5 = 0, $dyna = 0, $3 = 0, $tobool = 0, $call = 0, $call9 = 0, $4 = 0, $nbuf_0 = 0, $add_ptr = 0, $5 = 0, $add_ptr17 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $eptr = $xb + 8 | 0;
    $0 = HEAP32[$eptr >> 2] | 0;
    $buf = $xb | 0;
    $1 = HEAP32[$buf >> 2] | 0;
    $sub_ptr_lhs_cast = $0;
    $sub_ptr_rhs_cast = $1;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $mul = $sub_ptr_sub << 1;
    $add = $sub_ptr_sub + $ssz | 0;
    $cmp = $add >>> 0 > $mul >>> 0;
    $add_mul = $cmp ? $add : $mul;
    $ptr = $xb + 4 | 0;
    $2 = HEAP32[$ptr >> 2] | 0;
    $sub_ptr_lhs_cast3 = $2;
    $sub_ptr_sub5 = $sub_ptr_lhs_cast3 - $sub_ptr_rhs_cast | 0;
    $dyna = $xb + 12 | 0;
    $3 = HEAP32[$dyna >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _realloc($1, $add_mul) | 0;
    $nbuf_0 = $call;
    label = 5;
    break;
   case 4:
    $call9 = _malloc($add_mul) | 0;
    $4 = HEAP32[$buf >> 2] | 0;
    _memcpy($call9 | 0, $4 | 0, $sub_ptr_sub5);
    HEAP32[$dyna >> 2] = 1;
    $nbuf_0 = $call9;
    label = 5;
    break;
   case 5:
    HEAP32[$buf >> 2] = $nbuf_0;
    $add_ptr = $nbuf_0 + $sub_ptr_sub5 | 0;
    HEAP32[$ptr >> 2] = $add_ptr;
    $5 = HEAP32[$buf >> 2] | 0;
    $add_ptr17 = $5 + $add_mul | 0;
    HEAP32[$eptr >> 2] = $add_ptr17;
    return 0;
  }
  return 0;
}
function _growops13($newopn) {
  $newopn = $newopn | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $tobool = 0, $mul = 0, $call = 0, $2 = 0, $tobool2 = 0, $3 = 0, $call4 = 0, $4 = 0, $mul6 = 0, $call7 = 0, $5 = 0, $tobool8 = 0, $6 = 0, $call10 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2288] | 0;
    $cmp = ($0 | 0) < ($newopn | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $1 = HEAP32[2284] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $mul = $newopn << 4;
    $call = _malloc($mul) | 0;
    $2 = $call;
    HEAP32[2284] = $2;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $3 = HEAP32[_stderr >> 2] | 0;
    $call4 = _fprintf($3 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 584, HEAP32[tempInt + 16 >> 2] = 108664, tempInt) | 0) | 0;
    _abort();
   case 6:
    $4 = $1;
    $mul6 = $newopn << 4;
    $call7 = _realloc($4, $mul6) | 0;
    $5 = $call7;
    HEAP32[2284] = $5;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $6 = HEAP32[_stderr >> 2] | 0;
    $call10 = _fprintf($6 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 590, HEAP32[tempInt + 16 >> 2] = 103784, tempInt) | 0) | 0;
    _abort();
   case 8:
    HEAP32[2288] = $newopn;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _growtris($newtrin) {
  $newtrin = $newtrin | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $tobool = 0, $mul = 0, $call = 0, $2 = 0, $tobool2 = 0, $3 = 0, $call4 = 0, $4 = 0, $mul6 = 0, $call7 = 0, $5 = 0, $tobool8 = 0, $6 = 0, $call10 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[232] | 0;
    $cmp = ($0 | 0) < ($newtrin | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $1 = HEAP32[230] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $mul = $newtrin * 52 & -1;
    $call = _malloc($mul) | 0;
    $2 = $call;
    HEAP32[230] = $2;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $3 = HEAP32[_stderr >> 2] | 0;
    $call4 = _fprintf($3 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 543, HEAP32[tempInt + 16 >> 2] = 148528, tempInt) | 0) | 0;
    _abort();
   case 6:
    $4 = $1;
    $mul6 = $newtrin * 52 & -1;
    $call7 = _realloc($4, $mul6) | 0;
    $5 = $call7;
    HEAP32[230] = $5;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $6 = HEAP32[_stderr >> 2] | 0;
    $call10 = _fprintf($6 | 0, 107728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 142728, HEAP32[tempInt + 8 >> 2] = 549, HEAP32[tempInt + 16 >> 2] = 145760, tempInt) | 0) | 0;
    _abort();
   case 8:
    HEAP32[232] = $newtrin;
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _agxbpop($xb) {
  $xb = $xb | 0;
  var $ptr = 0, $0 = 0, $buf = 0, $1 = 0, $cmp = 0, $incdec_ptr = 0, $2 = 0, $conv = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr = $xb + 4 | 0;
    $0 = HEAP32[$ptr >> 2] | 0;
    $buf = $xb | 0;
    $1 = HEAP32[$buf >> 2] | 0;
    $cmp = $0 >>> 0 > $1 >>> 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = -1;
      label = 4;
      break;
    }
   case 3:
    $incdec_ptr = $0 - 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    $2 = HEAP8[$0] | 0;
    $conv = $2 & 255;
    $retval_0 = $conv;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agdictof($obj) {
  $obj = $obj | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $univ = 0, $3 = 0, $4 = 0, $globattr = 0, $5 = 0, $graph = 0, $6 = 0, $7 = 0, $univ2 = 0, $8 = 0, $nodeattr = 0, $9 = 0, $tail = 0, $10 = 0, $11 = 0, $graph4 = 0, $12 = 0, $univ5 = 0, $13 = 0, $edgeattr = 0, $14 = 0, $d_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 5;
      break;
    } else {
      $d_0 = 0;
      label = 6;
      break;
    }
   case 3:
    $univ = $obj + 16 | 0;
    $3 = $univ;
    $4 = HEAP32[$3 >> 2] | 0;
    $globattr = $4 + 12 | 0;
    $5 = HEAP32[$globattr >> 2] | 0;
    $d_0 = $5;
    label = 6;
    break;
   case 4:
    $graph = $obj + 20 | 0;
    $6 = $graph;
    $7 = HEAP32[$6 >> 2] | 0;
    $univ2 = $7 + 16 | 0;
    $8 = HEAP32[$univ2 >> 2] | 0;
    $nodeattr = $8 + 4 | 0;
    $9 = HEAP32[$nodeattr >> 2] | 0;
    $d_0 = $9;
    label = 6;
    break;
   case 5:
    $tail = $obj + 16 | 0;
    $10 = $tail;
    $11 = HEAP32[$10 >> 2] | 0;
    $graph4 = $11 + 20 | 0;
    $12 = HEAP32[$graph4 >> 2] | 0;
    $univ5 = $12 + 16 | 0;
    $13 = HEAP32[$univ5 >> 2] | 0;
    $edgeattr = $13 + 8 | 0;
    $14 = HEAP32[$edgeattr >> 2] | 0;
    $d_0 = $14;
    label = 6;
    break;
   case 6:
    return $d_0 | 0;
  }
  return 0;
}
function _agxget($obj, $index) {
  $obj = $obj | 0;
  $index = $index | 0;
  var $cmp = 0, $attr = 0, $0 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($index | 0) > -1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $attr = $obj + 4 | 0;
    $0 = $attr;
    $1 = HEAP32[$0 >> 2] | 0;
    $arrayidx = $1 + ($index << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $retval_0 = $2;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agxbput_n($xb, $s, $ssz) {
  $xb = $xb | 0;
  $s = $s | 0;
  $ssz = $ssz | 0;
  var $ptr = 0, $0 = 0, $add_ptr = 0, $eptr = 0, $1 = 0, $cmp = 0, $call = 0, $2 = 0, $3 = 0, $add_ptr3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr = $xb + 4 | 0;
    $0 = HEAP32[$ptr >> 2] | 0;
    $add_ptr = $0 + $ssz | 0;
    $eptr = $xb + 8 | 0;
    $1 = HEAP32[$eptr >> 2] | 0;
    $cmp = $add_ptr >>> 0 > $1 >>> 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agxbmore($xb, $ssz) | 0;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$ptr >> 2] | 0;
    _memcpy($2 | 0, $s | 0, $ssz);
    $3 = HEAP32[$ptr >> 2] | 0;
    $add_ptr3 = $3 + $ssz | 0;
    HEAP32[$ptr >> 2] = $add_ptr3;
    return $ssz | 0;
  }
  return 0;
}
function _agxbput($xb, $s) {
  $xb = $xb | 0;
  $s = $s | 0;
  return _agxbput_n($xb, $s, _strlen($s | 0) | 0) | 0;
}
function _agxbfree($xb) {
  $xb = $xb | 0;
  var $dyna = 0, $0 = 0, $tobool = 0, $buf = 0, $1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dyna = $xb + 12 | 0;
    $0 = HEAP32[$dyna >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $buf = $xb | 0;
    $1 = HEAP32[$buf >> 2] | 0;
    _free($1);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _agNEWsym($dict, $name, $value) {
  $dict = $dict | 0;
  $name = $name | 0;
  $value = $value | 0;
  var $call = 0, $0 = 0, $call1 = 0, $name2 = 0, $call3 = 0, $value4 = 0, $1 = 0, $2 = 0, $dict5 = 0, $3 = 0, $call6 = 0, $index = 0, $4 = 0, $list = 0, $5 = 0, $tobool = 0, $6 = 0, $add = 0, $mul = 0, $call8 = 0, $add9 = 0, $mul10 = 0, $call11 = 0, $call8_sink = 0, $7 = 0, $inc = 0, $arrayidx = 0, $8 = 0, $arrayidx16 = 0, $9 = 0, $searchf = 0, $10 = 0, $call19 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _calloc(1, 16) | 0;
    $0 = $call;
    $call1 = _agstrdup($name) | 0;
    $name2 = $call;
    HEAP32[$name2 >> 2] = $call1;
    $call3 = _agstrdup($value) | 0;
    $value4 = $call + 4 | 0;
    $1 = $value4;
    HEAP32[$1 >> 2] = $call3;
    $2 = $call + 12 | 0;
    HEAP8[$2] = 1;
    $dict5 = $dict + 4 | 0;
    $3 = HEAP32[$dict5 >> 2] | 0;
    $call6 = _dtsize($3) | 0;
    $index = $call + 8 | 0;
    $4 = $index;
    HEAP32[$4 >> 2] = $call6;
    $list = $dict + 8 | 0;
    $5 = HEAP32[$list >> 2] | 0;
    $tobool = ($5 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $6 = $5;
    $add = $call6 << 2;
    $mul = $add + 8 | 0;
    $call8 = _realloc($6, $mul) | 0;
    $call8_sink = $call8;
    label = 5;
    break;
   case 4:
    $add9 = $call6 << 2;
    $mul10 = $add9 + 8 | 0;
    $call11 = _malloc($mul10) | 0;
    $call8_sink = $call11;
    label = 5;
    break;
   case 5:
    $7 = $call8_sink;
    HEAP32[$list >> 2] = $7;
    $inc = $call6 + 1 | 0;
    $arrayidx = $7 + ($call6 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $0;
    $8 = HEAP32[$list >> 2] | 0;
    $arrayidx16 = $8 + ($inc << 2) | 0;
    HEAP32[$arrayidx16 >> 2] = 0;
    $9 = HEAP32[$dict5 >> 2] | 0;
    $searchf = $9 | 0;
    $10 = HEAP32[$searchf >> 2] | 0;
    $call19 = FUNCTION_TABLE_iiii[$10 & 1023]($9, $call, 1) | 0;
    return $0 | 0;
  }
  return 0;
}
function _agattr($obj, $name, $value) {
  $obj = $obj | 0;
  $name = $name | 0;
  $value = $value | 0;
  var $call = 0, $tobool = 0, $value1 = 0, $0 = 0, $call2 = 0, $tobool3 = 0, $call6 = 0, $call9 = 0, $call10 = 0, $rv_0 = 0, $isnew_0 = 0, $tobool12 = 0, $1 = 0, $2 = 0, $3 = 0, $bf_val_sext = 0, $4 = 0, $graph = 0, $5 = 0, $6 = 0, $head = 0, $7 = 0, $8 = 0, $graph16 = 0, $9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfindattr($obj, $name) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $value1 = $call + 4 | 0;
    $0 = HEAP32[$value1 >> 2] | 0;
    $call2 = _strcmp($0 | 0, $value | 0) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      $retval_0 = $call;
      label = 11;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _agstrfree($0);
    $call6 = _agstrdup($value) | 0;
    HEAP32[$value1 >> 2] = $call6;
    $isnew_0 = 0;
    $rv_0 = $call;
    label = 6;
    break;
   case 5:
    $call9 = _agdictof($obj) | 0;
    $call10 = _agNEWsym($call9, $name, $value) | 0;
    $isnew_0 = 1;
    $rv_0 = $call10;
    label = 6;
    break;
   case 6:
    $tobool12 = ($rv_0 | 0) == 0;
    if ($tobool12) {
      $retval_0 = 0;
      label = 11;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $1 = $obj;
    $2 = HEAP32[$1 >> 2] | 0;
    $3 = $2 << 28;
    $bf_val_sext = $3 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 8;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 9;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 10;
      break;
    } else {
      $retval_0 = $rv_0;
      label = 11;
      break;
    }
   case 8:
    $4 = $obj;
    _add_graph_attr($4, $rv_0, $isnew_0);
    $retval_0 = $rv_0;
    label = 11;
    break;
   case 9:
    $graph = $obj + 20 | 0;
    $5 = $graph;
    $6 = HEAP32[$5 >> 2] | 0;
    _add_node_attr($6, $rv_0, $isnew_0);
    $retval_0 = $rv_0;
    label = 11;
    break;
   case 10:
    $head = $obj + 12 | 0;
    $7 = $head;
    $8 = HEAP32[$7 >> 2] | 0;
    $graph16 = $8 + 20 | 0;
    $9 = HEAP32[$graph16 >> 2] | 0;
    _add_edge_attr($9, $rv_0, $isnew_0);
    $retval_0 = $rv_0;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _agfindattr($obj, $name) {
  $obj = $obj | 0;
  $name = $name | 0;
  var $0 = 0;
  $0 = HEAP32[(_agdictof($obj) | 0) + 4 >> 2] | 0;
  return FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, $name, 512) | 0;
}
function _add_graph_attr($g, $attr, $isnew) {
  $g = $g | 0;
  $attr = $attr | 0;
  $isnew = $isnew | 0;
  var $meta_node = 0, $0 = 0, $tobool = 0, $graph = 0, $1 = 0, $call = 0, $tobool27 = 0, $n_08 = 0, $2 = 0, $call3 = 0, $3 = 0, $4 = 0, $graph5 = 0, $5 = 0, $call6 = 0, $tobool2 = 0, $6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meta_node = $g + 36 | 0;
    $0 = HEAP32[$meta_node >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $call = _agfstnode($1) | 0;
    $tobool27 = ($call | 0) == 0;
    if ($tobool27) {
      label = 6;
      break;
    } else {
      $n_08 = $call;
      label = 4;
      break;
    }
   case 4:
    $2 = $n_08;
    $call3 = _agusergraph($2) | 0;
    $3 = $call3 | 0;
    _obj_init_attr($3, $attr, $isnew);
    $4 = HEAP32[$meta_node >> 2] | 0;
    $graph5 = $4 + 20 | 0;
    $5 = HEAP32[$graph5 >> 2] | 0;
    $call6 = _agnxtnode($5, $n_08) | 0;
    $tobool2 = ($call6 | 0) == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      $n_08 = $call6;
      label = 4;
      break;
    }
   case 5:
    $6 = $g | 0;
    _obj_init_attr($6, $attr, $isnew);
    label = 6;
    break;
   case 6:
    return;
  }
}
function _add_node_attr($g, $attr, $isnew) {
  $g = $g | 0;
  $attr = $attr | 0;
  $isnew = $isnew | 0;
  var $call = 0, $tobool27 = 0, $n_028 = 0, $0 = 0, $call1 = 0, $tobool = 0, $meta_node = 0, $1 = 0, $tobool2 = 0, $graph = 0, $2 = 0, $call4 = 0, $tobool625 = 0, $n_126 = 0, $3 = 0, $call8 = 0, $proto9 = 0, $4 = 0, $tobool1122 = 0, $5 = 0, $proto_023 = 0, $n13 = 0, $6 = 0, $7 = 0, $prev = 0, $8 = 0, $tobool11 = 0, $9 = 0, $graph18 = 0, $10 = 0, $call19 = 0, $tobool6 = 0, $proto21 = 0, $proto_119 = 0, $tobool2320 = 0, $proto_121 = 0, $n25 = 0, $11 = 0, $12 = 0, $prev27 = 0, $proto_1 = 0, $tobool23 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfstnode($g) | 0;
    $tobool27 = ($call | 0) == 0;
    if ($tobool27) {
      label = 4;
      break;
    } else {
      $n_028 = $call;
      label = 3;
      break;
    }
   case 3:
    $0 = $n_028 | 0;
    _obj_init_attr($0, $attr, $isnew);
    $call1 = _agnxtnode($g, $n_028) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_028 = $call1;
      label = 3;
      break;
    }
   case 4:
    $meta_node = $g + 36 | 0;
    $1 = HEAP32[$meta_node >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    if ($tobool2) {
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $graph = $1 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $call4 = _agfstnode($2) | 0;
    $tobool625 = ($call4 | 0) == 0;
    if ($tobool625) {
      label = 12;
      break;
    } else {
      $n_126 = $call4;
      label = 6;
      break;
    }
   case 6:
    $3 = $n_126;
    $call8 = _agusergraph($3) | 0;
    $proto9 = $call8 + 40 | 0;
    $4 = HEAP32[$proto9 >> 2] | 0;
    $tobool1122 = ($4 | 0) == 0;
    if ($tobool1122) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $5 = $4;
    $proto_023 = $5;
    label = 8;
    break;
   case 8:
    $n13 = $proto_023 | 0;
    $6 = HEAP32[$n13 >> 2] | 0;
    $7 = $6 | 0;
    _obj_init_attr($7, $attr, $isnew);
    $prev = $proto_023 + 8 | 0;
    $8 = HEAP32[$prev >> 2] | 0;
    $tobool11 = ($8 | 0) == 0;
    if ($tobool11) {
      label = 9;
      break;
    } else {
      $proto_023 = $8;
      label = 8;
      break;
    }
   case 9:
    $9 = HEAP32[$meta_node >> 2] | 0;
    $graph18 = $9 + 20 | 0;
    $10 = HEAP32[$graph18 >> 2] | 0;
    $call19 = _agnxtnode($10, $n_126) | 0;
    $tobool6 = ($call19 | 0) == 0;
    if ($tobool6) {
      label = 12;
      break;
    } else {
      $n_126 = $call19;
      label = 6;
      break;
    }
   case 10:
    $proto21 = $g + 40 | 0;
    $proto_119 = HEAP32[$proto21 >> 2] | 0;
    $tobool2320 = ($proto_119 | 0) == 0;
    if ($tobool2320) {
      label = 12;
      break;
    } else {
      $proto_121 = $proto_119;
      label = 11;
      break;
    }
   case 11:
    $n25 = $proto_121 | 0;
    $11 = HEAP32[$n25 >> 2] | 0;
    $12 = $11 | 0;
    _obj_init_attr($12, $attr, $isnew);
    $prev27 = $proto_121 + 8 | 0;
    $proto_1 = HEAP32[$prev27 >> 2] | 0;
    $tobool23 = ($proto_1 | 0) == 0;
    if ($tobool23) {
      label = 12;
      break;
    } else {
      $proto_121 = $proto_1;
      label = 11;
      break;
    }
   case 12:
    return;
  }
}
function _add_edge_attr($g, $attr, $isnew) {
  $g = $g | 0;
  $attr = $attr | 0;
  $isnew = $isnew | 0;
  var $call = 0, $tobool32 = 0, $n_033 = 0, $call1 = 0, $tobool330 = 0, $e_031 = 0, $0 = 0, $call5 = 0, $tobool3 = 0, $call7 = 0, $tobool = 0, $meta_node = 0, $1 = 0, $tobool9 = 0, $graph = 0, $2 = 0, $call11 = 0, $tobool1328 = 0, $n_129 = 0, $3 = 0, $call15 = 0, $proto16 = 0, $4 = 0, $tobool1825 = 0, $5 = 0, $proto_026 = 0, $e20 = 0, $6 = 0, $7 = 0, $prev = 0, $8 = 0, $tobool18 = 0, $9 = 0, $graph25 = 0, $10 = 0, $call26 = 0, $tobool13 = 0, $proto28 = 0, $proto_122 = 0, $tobool3023 = 0, $proto_124 = 0, $e32 = 0, $11 = 0, $12 = 0, $prev34 = 0, $proto_1 = 0, $tobool30 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfstnode($g) | 0;
    $tobool32 = ($call | 0) == 0;
    if ($tobool32) {
      label = 6;
      break;
    } else {
      $n_033 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agfstout($g, $n_033) | 0;
    $tobool330 = ($call1 | 0) == 0;
    if ($tobool330) {
      label = 5;
      break;
    } else {
      $e_031 = $call1;
      label = 4;
      break;
    }
   case 4:
    $0 = $e_031 | 0;
    _obj_init_attr($0, $attr, $isnew);
    $call5 = _agnxtout($g, $e_031) | 0;
    $tobool3 = ($call5 | 0) == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      $e_031 = $call5;
      label = 4;
      break;
    }
   case 5:
    $call7 = _agnxtnode($g, $n_033) | 0;
    $tobool = ($call7 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_033 = $call7;
      label = 3;
      break;
    }
   case 6:
    $meta_node = $g + 36 | 0;
    $1 = HEAP32[$meta_node >> 2] | 0;
    $tobool9 = ($1 | 0) == 0;
    if ($tobool9) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $graph = $1 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $call11 = _agfstnode($2) | 0;
    $tobool1328 = ($call11 | 0) == 0;
    if ($tobool1328) {
      label = 14;
      break;
    } else {
      $n_129 = $call11;
      label = 8;
      break;
    }
   case 8:
    $3 = $n_129;
    $call15 = _agusergraph($3) | 0;
    $proto16 = $call15 + 40 | 0;
    $4 = HEAP32[$proto16 >> 2] | 0;
    $tobool1825 = ($4 | 0) == 0;
    if ($tobool1825) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $5 = $4;
    $proto_026 = $5;
    label = 10;
    break;
   case 10:
    $e20 = $proto_026 + 4 | 0;
    $6 = HEAP32[$e20 >> 2] | 0;
    $7 = $6 | 0;
    _obj_init_attr($7, $attr, $isnew);
    $prev = $proto_026 + 8 | 0;
    $8 = HEAP32[$prev >> 2] | 0;
    $tobool18 = ($8 | 0) == 0;
    if ($tobool18) {
      label = 11;
      break;
    } else {
      $proto_026 = $8;
      label = 10;
      break;
    }
   case 11:
    $9 = HEAP32[$meta_node >> 2] | 0;
    $graph25 = $9 + 20 | 0;
    $10 = HEAP32[$graph25 >> 2] | 0;
    $call26 = _agnxtnode($10, $n_129) | 0;
    $tobool13 = ($call26 | 0) == 0;
    if ($tobool13) {
      label = 14;
      break;
    } else {
      $n_129 = $call26;
      label = 8;
      break;
    }
   case 12:
    $proto28 = $g + 40 | 0;
    $proto_122 = HEAP32[$proto28 >> 2] | 0;
    $tobool3023 = ($proto_122 | 0) == 0;
    if ($tobool3023) {
      label = 14;
      break;
    } else {
      $proto_124 = $proto_122;
      label = 13;
      break;
    }
   case 13:
    $e32 = $proto_124 + 4 | 0;
    $11 = HEAP32[$e32 >> 2] | 0;
    $12 = $11 | 0;
    _obj_init_attr($12, $attr, $isnew);
    $prev34 = $proto_124 + 8 | 0;
    $proto_1 = HEAP32[$prev34 >> 2] | 0;
    $tobool30 = ($proto_1 | 0) == 0;
    if ($tobool30) {
      label = 14;
      break;
    } else {
      $proto_124 = $proto_1;
      label = 13;
      break;
    }
   case 14:
    return;
  }
}
function _agraphattr($g, $name, $value) {
  $g = $g | 0;
  $name = $name | 0;
  $value = $value | 0;
  var $cmp = 0, $0 = 0, $_g = 0, $root = 0, $1 = 0, $cmp1 = 0, $2 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($g | 0) == 0;
    $0 = HEAP32[42137] | 0;
    $_g = $cmp ? $0 : $g;
    $root = $_g + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $cmp1 = ($_g | 0) == ($1 | 0);
    if ($cmp1) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $2 = $_g | 0;
    $call = _agattr($2, $name, $value) | 0;
    $retval_0 = $call;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agnodeattr($g, $name, $value) {
  $g = $g | 0;
  $name = $name | 0;
  $value = $value | 0;
  var $cmp = 0, $0 = 0, $_g = 0, $root = 0, $1 = 0, $cmp1 = 0, $proto = 0, $2 = 0, $n = 0, $3 = 0, $4 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($g | 0) == 0;
    $0 = HEAP32[42137] | 0;
    $_g = $cmp ? $0 : $g;
    $root = $_g + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $cmp1 = ($_g | 0) == ($1 | 0);
    if ($cmp1) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $proto = $_g + 40 | 0;
    $2 = HEAP32[$proto >> 2] | 0;
    $n = $2 | 0;
    $3 = HEAP32[$n >> 2] | 0;
    $4 = $3 | 0;
    $call = _agattr($4, $name, $value) | 0;
    $retval_0 = $call;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agedgeattr($g, $name, $value) {
  $g = $g | 0;
  $name = $name | 0;
  $value = $value | 0;
  var $cmp = 0, $0 = 0, $_g = 0, $root = 0, $1 = 0, $cmp1 = 0, $proto = 0, $2 = 0, $e = 0, $3 = 0, $4 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($g | 0) == 0;
    $0 = HEAP32[42137] | 0;
    $_g = $cmp ? $0 : $g;
    $root = $_g + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $cmp1 = ($_g | 0) == ($1 | 0);
    if ($cmp1) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $proto = $_g + 40 | 0;
    $2 = HEAP32[$proto >> 2] | 0;
    $e = $2 + 4 | 0;
    $3 = HEAP32[$e >> 2] | 0;
    $4 = $3 | 0;
    $call = _agattr($4, $name, $value) | 0;
    $retval_0 = $call;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agFREEdict($g, $dict) {
  $g = $g | 0;
  $dict = $dict | 0;
  var $dict1 = 0, $0 = 0, $call = 0, $list = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $tobool35 = 0, $4 = 0, $i_06 = 0, $inc = 0, $5 = 0, $6 = 0, $arrayidx = 0, $7 = 0, $tobool3 = 0, $_lcssa = 0, $8 = 0, $9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dict1 = $dict + 4 | 0;
    $0 = HEAP32[$dict1 >> 2] | 0;
    $call = _dtclose($0) | 0;
    $list = $dict + 8 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$list >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool35 = ($3 | 0) == 0;
    if ($tobool35) {
      $_lcssa = $2;
      label = 5;
      break;
    } else {
      $i_06 = 0;
      $4 = $3;
      label = 4;
      break;
    }
   case 4:
    $inc = $i_06 + 1 | 0;
    $5 = $4;
    _agfreesym($5);
    $6 = HEAP32[$list >> 2] | 0;
    $arrayidx = $6 + ($inc << 2) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $tobool3 = ($7 | 0) == 0;
    if ($tobool3) {
      $_lcssa = $6;
      label = 5;
      break;
    } else {
      $i_06 = $inc;
      $4 = $7;
      label = 4;
      break;
    }
   case 5:
    $8 = $_lcssa;
    _free($8);
    label = 6;
    break;
   case 6:
    $9 = $dict;
    _free($9);
    return;
  }
}
function _agfreesym($ptr) {
  $ptr = $ptr | 0;
  _agstrfree(HEAP32[$ptr >> 2] | 0);
  _agstrfree(HEAP32[$ptr + 4 >> 2] | 0);
  _free($ptr);
  return;
}
function _agNEWdict($name) {
  $name = $name | 0;
  var $call = 0;
  $call = _calloc(1, 12) | 0;
  HEAP32[$call >> 2] = $name;
  HEAP32[$call + 4 >> 2] = _dtopen(89552, HEAP32[41974] | 0) | 0;
  HEAP32[$call + 8 >> 2] = 0;
  return $call | 0;
}
function _agcopydict($to_dict, $from_dict) {
  $to_dict = $to_dict | 0;
  $from_dict = $from_dict | 0;
  var $dict = 0, $0 = 0, $call = 0, $cmp8 = 0, $list = 0, $i_09 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $name = 0, $3 = 0, $value = 0, $4 = 0, $call1 = 0, $printed = 0, $5 = 0, $printed2 = 0, $fixed = 0, $6 = 0, $fixed3 = 0, $inc = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dict = $from_dict + 4 | 0;
    $0 = HEAP32[$dict >> 2] | 0;
    $call = _dtsize($0) | 0;
    $cmp8 = ($call | 0) > 0;
    if ($cmp8) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $list = $from_dict + 8 | 0;
    $i_09 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_09 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $name = $2 | 0;
    $3 = HEAP32[$name >> 2] | 0;
    $value = $2 + 4 | 0;
    $4 = HEAP32[$value >> 2] | 0;
    $call1 = _agNEWsym($to_dict, $3, $4) | 0;
    $printed = $2 + 12 | 0;
    $5 = HEAP8[$printed] | 0;
    $printed2 = $call1 + 12 | 0;
    HEAP8[$printed2] = $5;
    $fixed = $2 + 13 | 0;
    $6 = HEAP8[$fixed] | 0;
    $fixed3 = $call1 + 13 | 0;
    HEAP8[$fixed3] = $6;
    $inc = $i_09 + 1 | 0;
    $cmp = ($inc | 0) < ($call | 0);
    if ($cmp) {
      $i_09 = $inc;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    return;
  }
}
function _aginitlib($gs, $ns, $es) {
  $gs = $gs | 0;
  $ns = $ns | 0;
  $es = $es | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $cmp1 = 0, $2 = 0, $cmp2 = 0, $or_cond = 0, $3 = 0, $cmp4 = 0, $or_cond4 = 0, $call = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[42137] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[42134] = $gs;
    HEAP32[42135] = $ns;
    HEAP32[42136] = $es;
    HEAP8[168567] = 1;
    _initproto();
    label = 6;
    break;
   case 4:
    $1 = HEAP32[42134] | 0;
    $cmp1 = ($1 | 0) == ($gs | 0);
    $2 = HEAP32[42135] | 0;
    $cmp2 = ($2 | 0) == ($ns | 0);
    $or_cond = $cmp1 & $cmp2;
    $3 = HEAP32[42136] | 0;
    $cmp4 = ($3 | 0) == ($es | 0);
    $or_cond4 = $or_cond & $cmp4;
    if ($or_cond4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call = _agerr(0, 120304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return;
  }
}
function _agget($obj, $attr) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  return _agxget($obj, _agindex($obj, $attr) | 0) | 0;
}
function _agindex($obj, $name) {
  $obj = $obj | 0;
  $name = $name | 0;
  var $call = 0, $tobool = 0, $index = 0, $0 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfindattr($obj, $name) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $rv_0 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $index = $call + 8 | 0;
    $0 = HEAP32[$index >> 2] | 0;
    $rv_0 = $0;
    label = 4;
    break;
   case 4:
    return $rv_0 | 0;
  }
  return 0;
}
function _agset($obj, $attr, $value) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  $value = $value | 0;
  return _agxset($obj, _agindex($obj, $attr) | 0, $value) | 0;
}
function _agxset($obj, $index, $buf) {
  $obj = $obj | 0;
  $index = $index | 0;
  $buf = $buf | 0;
  var $cmp = 0, $attr = 0, $0 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $call = 0, $rem7 = 0, $shl = 0, $div = 0, $didset = 0, $3 = 0, $4 = 0, $arrayidx2 = 0, $5 = 0, $conv8 = 0, $or = 0, $conv3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($index | 0) > -1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = -1;
      label = 4;
      break;
    }
   case 3:
    $attr = $obj + 4 | 0;
    $0 = $attr;
    $1 = HEAP32[$0 >> 2] | 0;
    $arrayidx = $1 + ($index << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _agstrfree($2);
    $call = _agstrdup($buf) | 0;
    HEAP32[$arrayidx >> 2] = $call;
    $rem7 = $index & 7;
    $shl = 1 << $rem7;
    $div = ($index | 0) / 8 & -1;
    $didset = $obj + 8 | 0;
    $3 = $didset;
    $4 = HEAP32[$3 >> 2] | 0;
    $arrayidx2 = $4 + $div | 0;
    $5 = HEAP8[$arrayidx2] | 0;
    $conv8 = $5 & 255;
    $or = $conv8 | $shl;
    $conv3 = $or & 255;
    HEAP8[$arrayidx2] = $conv3;
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agsafeset($obj, $name, $value, $def) {
  $obj = $obj | 0;
  $name = $name | 0;
  $value = $value | 0;
  $def = $def | 0;
  var $call = 0, $cmp = 0, $tobool = 0, $_def = 0, $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $root = 0, $3 = 0, $4 = 0, $call2 = 0, $graph = 0, $5 = 0, $6 = 0, $call4 = 0, $head = 0, $7 = 0, $8 = 0, $graph6 = 0, $9 = 0, $call7 = 0, $a_0 = 0, $index = 0, $10 = 0, $call9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfindattr($obj, $name) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $a_0 = $call;
      label = 7;
      break;
    }
   case 3:
    $tobool = ($def | 0) == 0;
    $_def = $tobool ? 153736 : $def;
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 3) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 1) {
      label = 5;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 6;
      break;
    } else {
      $a_0 = 0;
      label = 7;
      break;
    }
   case 4:
    $root = $obj + 32 | 0;
    $3 = $root;
    $4 = HEAP32[$3 >> 2] | 0;
    $call2 = _agraphattr($4, $name, $_def) | 0;
    $a_0 = $call2;
    label = 7;
    break;
   case 5:
    $graph = $obj + 20 | 0;
    $5 = $graph;
    $6 = HEAP32[$5 >> 2] | 0;
    $call4 = _agnodeattr($6, $name, $_def) | 0;
    $a_0 = $call4;
    label = 7;
    break;
   case 6:
    $head = $obj + 12 | 0;
    $7 = $head;
    $8 = HEAP32[$7 >> 2] | 0;
    $graph6 = $8 + 20 | 0;
    $9 = HEAP32[$graph6 >> 2] | 0;
    $call7 = _agedgeattr($9, $name, $_def) | 0;
    $a_0 = $call7;
    label = 7;
    break;
   case 7:
    $index = $a_0 + 8 | 0;
    $10 = HEAP32[$index >> 2] | 0;
    $call9 = _agxset($obj, $10, $value) | 0;
    return $call9 | 0;
  }
  return 0;
}
function _agcopyattr($oldobj, $newobj) {
  $oldobj = $oldobj | 0;
  $newobj = $newobj | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $cmp = 0, $3 = 0, $4 = 0, $5 = 0, $bf_val_sext5 = 0, $cmp6 = 0, $call = 0, $list1 = 0, $6 = 0, $list_0_ph = 0, $r_0_ph = 0, $tobool = 0, $list_0 = 0, $incdec_ptr = 0, $7 = 0, $tobool8 = 0, $index = 0, $8 = 0, $cmp10 = 0, $name = 0, $9 = 0, $call14 = 0, $tobool15 = 0, $index18 = 0, $10 = 0, $index19 = 0, $11 = 0, $call20 = 0, $call21 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $oldobj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    $cmp = ($bf_val_sext | 0) == 2;
    $3 = $newobj;
    $4 = HEAP32[$3 >> 2] | 0;
    $5 = $4 << 28;
    $bf_val_sext5 = $5 >> 28;
    $cmp6 = ($bf_val_sext | 0) == ($bf_val_sext5 | 0);
    if ($cmp6) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 3:
    $call = _agdictof($oldobj) | 0;
    $list1 = $call + 8 | 0;
    $6 = HEAP32[$list1 >> 2] | 0;
    $r_0_ph = 0;
    $list_0_ph = $6;
    label = 4;
    break;
   case 4:
    $tobool = ($r_0_ph | 0) == 0;
    $list_0 = $list_0_ph;
    label = 5;
    break;
   case 5:
    if ($tobool) {
      label = 6;
      break;
    } else {
      $retval_0 = $r_0_ph;
      label = 11;
      break;
    }
   case 6:
    $incdec_ptr = $list_0 + 4 | 0;
    $7 = HEAP32[$list_0 >> 2] | 0;
    $tobool8 = ($7 | 0) == 0;
    if ($tobool8) {
      $retval_0 = 0;
      label = 11;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $index = $7 + 8 | 0;
    $8 = HEAP32[$index >> 2] | 0;
    $cmp10 = ($8 | 0) == 0;
    if ($cmp10) {
      $list_0 = $incdec_ptr;
      label = 5;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $name = $7 | 0;
    $9 = HEAP32[$name >> 2] | 0;
    $call14 = _agfindattr($newobj, $9) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      $retval_0 = 1;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $index18 = $call14 + 8 | 0;
    $10 = HEAP32[$index18 >> 2] | 0;
    $index19 = $7 + 8 | 0;
    $11 = HEAP32[$index19 >> 2] | 0;
    $call20 = _agxget($oldobj, $11) | 0;
    $call21 = _agxset($newobj, $10, $call20) | 0;
    $r_0_ph = $call21;
    $list_0_ph = $incdec_ptr;
    label = 4;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _obj_init_attr($obj, $attr, $isnew) {
  $obj = $obj | 0;
  $attr = $attr | 0;
  $isnew = $isnew | 0;
  var $index = 0, $0 = 0, $tobool = 0, $attr1 = 0, $1 = 0, $2 = 0, $tobool2 = 0, $3 = 0, $add = 0, $mul = 0, $call = 0, $add4 = 0, $mul5 = 0, $call6 = 0, $call_sink = 0, $4 = 0, $value = 0, $5 = 0, $call8 = 0, $6 = 0, $arrayidx = 0, $rem24 = 0, $cmp = 0, $didset = 0, $7 = 0, $8 = 0, $tobool11 = 0, $div18 = 0, $add19 = 0, $call16 = 0, $call21 = 0, $cond23 = 0, $arrayidx27 = 0, $div28 = 0, $didset29 = 0, $9 = 0, $10 = 0, $arrayidx30 = 0, $11 = 0, $conv = 0, $rem3123 = 0, $shl = 0, $and = 0, $cmp32 = 0, $attr35 = 0, $12 = 0, $13 = 0, $arrayidx36 = 0, $14 = 0, $value37 = 0, $15 = 0, $call38 = 0, $16 = 0, $arrayidx40 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $index = $attr + 8 | 0;
    $0 = HEAP32[$index >> 2] | 0;
    $tobool = ($isnew | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $attr1 = $obj + 4 | 0;
    $1 = $attr1;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = $2;
    $add = $0 << 2;
    $mul = $add + 4 | 0;
    $call = _realloc($3, $mul) | 0;
    $call_sink = $call;
    label = 6;
    break;
   case 5:
    $add4 = $0 << 2;
    $mul5 = $add4 + 4 | 0;
    $call6 = _malloc($mul5) | 0;
    $call_sink = $call6;
    label = 6;
    break;
   case 6:
    $4 = $call_sink;
    HEAP32[$1 >> 2] = $4;
    $value = $attr + 4 | 0;
    $5 = HEAP32[$value >> 2] | 0;
    $call8 = _agstrdup($5) | 0;
    $6 = HEAP32[$1 >> 2] | 0;
    $arrayidx = $6 + ($0 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $call8;
    $rem24 = $0 & 7;
    $cmp = ($rem24 | 0) == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 13;
      break;
    }
   case 7:
    $didset = $obj + 8 | 0;
    $7 = $didset;
    $8 = HEAP32[$7 >> 2] | 0;
    $tobool11 = ($8 | 0) == 0;
    $div18 = ($0 | 0) / 8 & -1;
    $add19 = $div18 + 1 | 0;
    if ($tobool11) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call16 = _realloc($8, $add19) | 0;
    $cond23 = $call16;
    label = 10;
    break;
   case 9:
    $call21 = _malloc($add19) | 0;
    $cond23 = $call21;
    label = 10;
    break;
   case 10:
    HEAP32[$7 >> 2] = $cond23;
    $arrayidx27 = $cond23 + $div18 | 0;
    HEAP8[$arrayidx27] = 0;
    label = 13;
    break;
   case 11:
    $div28 = ($0 | 0) / 8 & -1;
    $didset29 = $obj + 8 | 0;
    $9 = $didset29;
    $10 = HEAP32[$9 >> 2] | 0;
    $arrayidx30 = $10 + $div28 | 0;
    $11 = HEAP8[$arrayidx30] | 0;
    $conv = $11 << 24 >> 24;
    $rem3123 = $0 & 7;
    $shl = 1 << $rem3123;
    $and = $conv & $shl;
    $cmp32 = ($and | 0) == 0;
    if ($cmp32) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $attr35 = $obj + 4 | 0;
    $12 = $attr35;
    $13 = HEAP32[$12 >> 2] | 0;
    $arrayidx36 = $13 + ($0 << 2) | 0;
    $14 = HEAP32[$arrayidx36 >> 2] | 0;
    _agstrfree($14);
    $value37 = $attr + 4 | 0;
    $15 = HEAP32[$value37 >> 2] | 0;
    $call38 = _agstrdup($15) | 0;
    $16 = HEAP32[$12 >> 2] | 0;
    $arrayidx40 = $16 + ($0 << 2) | 0;
    HEAP32[$arrayidx40 >> 2] = $call38;
    label = 13;
    break;
   case 13:
    return;
  }
}
function _initproto() {
  var $call = 0, $0 = 0, $proto = 0, $1 = 0, $e = 0, $2 = 0, $3 = 0, $call1 = 0, $index = 0, $4 = 0, $cmp = 0, $5 = 0, $e3 = 0, $6 = 0, $7 = 0, $call4 = 0, $index5 = 0, $8 = 0, $cmp6 = 0, $printed = 0, $9 = 0, $e10 = 0, $10 = 0, $11 = 0, $call11 = 0, $index12 = 0, $12 = 0, $cmp13 = 0, $printed16 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agopen(126536, 0) | 0;
    $0 = $call;
    HEAP32[42137] = $0;
    $proto = $call + 40 | 0;
    $1 = HEAP32[$proto >> 2] | 0;
    $e = $1 + 4 | 0;
    $2 = HEAP32[$e >> 2] | 0;
    $3 = $2 | 0;
    $call1 = _agattr($3, 117288, 153736) | 0;
    $index = $call1 + 8 | 0;
    $4 = HEAP32[$index >> 2] | 0;
    $cmp = ($4 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _abort();
   case 4:
    $5 = HEAP32[$proto >> 2] | 0;
    $e3 = $5 + 4 | 0;
    $6 = HEAP32[$e3 >> 2] | 0;
    $7 = $6 | 0;
    $call4 = _agattr($7, 112040, 153736) | 0;
    $index5 = $call4 + 8 | 0;
    $8 = HEAP32[$index5 >> 2] | 0;
    $cmp6 = ($8 | 0) == 1;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _abort();
   case 6:
    $printed = $call4 + 12 | 0;
    HEAP8[$printed] = 0;
    $9 = HEAP32[$proto >> 2] | 0;
    $e10 = $9 + 4 | 0;
    $10 = HEAP32[$e10 >> 2] | 0;
    $11 = $10 | 0;
    $call11 = _agattr($11, 107712, 153736) | 0;
    $index12 = $call11 + 8 | 0;
    $12 = HEAP32[$index12 >> 2] | 0;
    $cmp13 = ($12 | 0) == 2;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _abort();
   case 8:
    $printed16 = $call11 + 12 | 0;
    HEAP8[$printed16] = 0;
    return;
  }
}
function _agcmpid($dict, $id0, $id1, $disc) {
  $dict = $dict | 0;
  $id0 = $id0 | 0;
  $id1 = $id1 | 0;
  $disc = $disc | 0;
  return (HEAP32[$id0 >> 2] | 0) - (HEAP32[$id1 >> 2] | 0) | 0;
}
function _agfindedge($g, $tail, $head) {
  $g = $g | 0;
  $tail = $tail | 0;
  $head = $head | 0;
  var $call = 0, $cmp = 0, $0 = 0, $1 = 0, $and = 0, $tobool = 0, $call1 = 0, $e_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _esearch($g, $tail, $head, 0) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $e_0 = $call;
      label = 5;
      break;
    }
   case 3:
    $0 = $g;
    $1 = HEAP32[$0 >> 2] | 0;
    $and = $1 & 16;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $e_0 = 0;
      label = 5;
      break;
    }
   case 4:
    $call1 = _esearch($g, $head, $tail, 0) | 0;
    $e_0 = $call1;
    label = 5;
    break;
   case 5:
    return $e_0 | 0;
  }
  return 0;
}
function _esearch($g, $tail, $head, $usrkey) {
  $g = $g | 0;
  $tail = $tail | 0;
  $head = $head | 0;
  $usrkey = $usrkey | 0;
  var $key = 0, $attr = 0, $arrayidx = 0, $tail1 = 0, $head2 = 0, $tobool = 0, $cond = 0, $attr3 = 0, $inedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $call9 = 0, $4 = 0, $tobool10 = 0, $tail11 = 0, $5 = 0, $6 = 0, $cmp = 0, $head12 = 0, $7 = 0, $8 = 0, $cmp13 = 0, $e_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $attr = __stackBase__ + 32 | 0;
    $arrayidx = $attr | 0;
    HEAP32[$arrayidx >> 2] = $usrkey;
    $tail1 = $key + 16 | 0;
    HEAP32[$tail1 >> 2] = $tail;
    $head2 = $key + 12 | 0;
    HEAP32[$head2 >> 2] = $head;
    $tobool = ($usrkey | 0) != 0;
    $cond = $tobool ? $arrayidx : 0;
    $attr3 = $key + 4 | 0;
    HEAP32[$attr3 >> 2] = $cond;
    $inedges = $g + 24 | 0;
    $0 = HEAP32[$inedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $key | 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 4) | 0;
    $3 = $call;
    $e_0 = $3;
    label = 8;
    break;
   case 4:
    $call9 = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 8) | 0;
    $4 = $call9;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      $e_0 = $4;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $tail11 = $call9 + 16 | 0;
    $5 = $tail11;
    $6 = HEAP32[$5 >> 2] | 0;
    $cmp = ($6 | 0) == ($tail | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $head12 = $call9 + 12 | 0;
    $7 = $head12;
    $8 = HEAP32[$7 >> 2] | 0;
    $cmp13 = ($8 | 0) == ($head | 0);
    if ($cmp13) {
      $e_0 = $4;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $e_0 = 0;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return $e_0 | 0;
  }
  return 0;
}
function _agINSedge($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $0 = 0, $1 = 0, $_mask = 0, $cmp = 0, $2 = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $e;
    $1 = HEAP32[$0 >> 2] | 0;
    $_mask = $1 & 240;
    $cmp = ($_mask | 0) == 16;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = $1 & -241;
    $3 = $2 | 32;
    HEAP32[$0 >> 2] = $3;
    label = 4;
    break;
   case 4:
    _install_edge($g, $e);
    return;
  }
}
function _install_edge($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $inedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $tobool = 0, $tail = 0, $3 = 0, $head = 0, $4 = 0, $outedges = 0, $5 = 0, $searchf2 = 0, $6 = 0, $call4 = 0, $7 = 0, $searchf6 = 0, $8 = 0, $call8 = 0, $9 = 0, $searchf10 = 0, $10 = 0, $call12 = 0, $tobool13 = 0, $tail14 = 0, $11 = 0, $12 = 0, $13 = 0, $cmp = 0, $head17 = 0, $14 = 0, $15 = 0, $16 = 0, $cmp19 = 0, $17 = 0, $18 = 0, $_mask = 0, $cmp21 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $and = 0, $cmp26 = 0, $meta_node = 0, $23 = 0, $graph = 0, $24 = 0, $call29 = 0, $tobool3030 = 0, $f_031 = 0, $tail31 = 0, $25 = 0, $26 = 0, $call32 = 0, $27 = 0, $call33 = 0, $tobool30 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $inedges = $g + 24 | 0;
    $0 = HEAP32[$inedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $e | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 11;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $3 = HEAP32[$tail >> 2] | 0;
    _agINSnode($g, $3);
    $head = $e + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    _agINSnode($g, $4);
    $outedges = $g + 28 | 0;
    $5 = HEAP32[$outedges >> 2] | 0;
    $searchf2 = $5 | 0;
    $6 = HEAP32[$searchf2 >> 2] | 0;
    $call4 = FUNCTION_TABLE_iiii[$6 & 1023]($5, $2, 1) | 0;
    $7 = HEAP32[$inedges >> 2] | 0;
    $searchf6 = $7 | 0;
    $8 = HEAP32[$searchf6 >> 2] | 0;
    $call8 = FUNCTION_TABLE_iiii[$8 & 1023]($7, $2, 1) | 0;
    $9 = HEAP32[$outedges >> 2] | 0;
    $searchf10 = $9 | 0;
    $10 = HEAP32[$searchf10 >> 2] | 0;
    $call12 = FUNCTION_TABLE_iiii[$10 & 1023]($9, $2, 16) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $tail14 = $call12 + 16 | 0;
    $11 = $tail14;
    $12 = HEAP32[$11 >> 2] | 0;
    $13 = HEAP32[$tail >> 2] | 0;
    $cmp = ($12 | 0) == ($13 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $head17 = $call12 + 12 | 0;
    $14 = $head17;
    $15 = HEAP32[$14 >> 2] | 0;
    $16 = HEAP32[$head >> 2] | 0;
    $cmp19 = ($15 | 0) == ($16 | 0);
    if ($cmp19) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $17 = $e;
    $18 = HEAP32[$17 >> 2] | 0;
    $_mask = $18 & 240;
    $cmp21 = ($_mask | 0) == 0;
    if ($cmp21) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $19 = $18 & -241;
    $20 = $19 | 16;
    HEAP32[$17 >> 2] = $20;
    label = 8;
    break;
   case 8:
    $21 = $g;
    $22 = HEAP32[$21 >> 2] | 0;
    $and = $22 & 64;
    $cmp26 = ($and | 0) == 0;
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $meta_node = $g + 36 | 0;
    $23 = HEAP32[$meta_node >> 2] | 0;
    $graph = $23 + 20 | 0;
    $24 = HEAP32[$graph >> 2] | 0;
    $call29 = _agfstin($24, $23) | 0;
    $tobool3030 = ($call29 | 0) == 0;
    if ($tobool3030) {
      label = 11;
      break;
    } else {
      $f_031 = $call29;
      label = 10;
      break;
    }
   case 10:
    $tail31 = $f_031 + 16 | 0;
    $25 = HEAP32[$tail31 >> 2] | 0;
    $26 = $25;
    $call32 = _agusergraph($26) | 0;
    $27 = $call32;
    _install_edge($27, $e);
    $call33 = _agnxtin($24, $f_031) | 0;
    $tobool30 = ($call33 | 0) == 0;
    if ($tobool30) {
      label = 11;
      break;
    } else {
      $f_031 = $call33;
      label = 10;
      break;
    }
   case 11:
    return;
  }
}
function _agfstedge($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $cmp = 0, $cmp1 = 0, $or_cond = 0, $call = 0, $cmp2 = 0, $call4 = 0, $e_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($g | 0) == 0;
    $cmp1 = ($n | 0) == 0;
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      $e_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _agfstout($g, $n) | 0;
    $cmp2 = ($call | 0) == 0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      $e_0 = $call;
      label = 5;
      break;
    }
   case 4:
    $call4 = _agfstin($g, $n) | 0;
    $e_0 = $call4;
    label = 5;
    break;
   case 5:
    return $e_0 | 0;
  }
  return 0;
}
function _agfstout($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $key = 0, $cmp = 0, $cmp1 = 0, $or_cond = 0, $tail = 0, $head = 0, $attr = 0, $outedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $tobool = 0, $tail4 = 0, $4 = 0, $5 = 0, $cmp5 = 0, $_ = 0, $f_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $cmp = ($g | 0) == 0;
    $cmp1 = ($n | 0) == 0;
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      $f_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $key + 16 | 0;
    HEAP32[$tail >> 2] = $n;
    $head = $key + 12 | 0;
    HEAP32[$head >> 2] = 0;
    $attr = $key + 4 | 0;
    HEAP32[$attr >> 2] = 0;
    $outedges = $g + 28 | 0;
    $0 = HEAP32[$outedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $key | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 8) | 0;
    $3 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $f_0 = $3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $tail4 = $call + 16 | 0;
    $4 = $tail4;
    $5 = HEAP32[$4 >> 2] | 0;
    $cmp5 = ($5 | 0) == ($n | 0);
    $_ = $cmp5 ? $3 : 0;
    STACKTOP = __stackBase__;
    return $_ | 0;
   case 5:
    STACKTOP = __stackBase__;
    return $f_0 | 0;
  }
  return 0;
}
function _agfstin($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $key = 0, $cmp = 0, $cmp1 = 0, $or_cond = 0, $head = 0, $tail = 0, $attr = 0, $inedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $tobool = 0, $head4 = 0, $4 = 0, $5 = 0, $cmp5 = 0, $_ = 0, $f_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $cmp = ($g | 0) == 0;
    $cmp1 = ($n | 0) == 0;
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      $f_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $key + 12 | 0;
    HEAP32[$head >> 2] = $n;
    $tail = $key + 16 | 0;
    HEAP32[$tail >> 2] = 0;
    $attr = $key + 4 | 0;
    HEAP32[$attr >> 2] = 0;
    $inedges = $g + 24 | 0;
    $0 = HEAP32[$inedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $key | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 8) | 0;
    $3 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $f_0 = $3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $head4 = $call + 12 | 0;
    $4 = $head4;
    $5 = HEAP32[$4 >> 2] | 0;
    $cmp5 = ($5 | 0) == ($n | 0);
    $_ = $cmp5 ? $3 : 0;
    STACKTOP = __stackBase__;
    return $_ | 0;
   case 5:
    STACKTOP = __stackBase__;
    return $f_0 | 0;
  }
  return 0;
}
function _agnxtedge($g, $e, $n) {
  $g = $g | 0;
  $e = $e | 0;
  $n = $n | 0;
  var $cmp = 0, $cmp1 = 0, $or_cond = 0, $cmp3 = 0, $or_cond38 = 0, $tail = 0, $0 = 0, $cmp4 = 0, $outedges = 0, $1 = 0, $searchf = 0, $2 = 0, $3 = 0, $call = 0, $cmp7 = 0, $4 = 0, $tail9 = 0, $5 = 0, $6 = 0, $cmp10 = 0, $call12 = 0, $tobool44 = 0, $inedges = 0, $f_045 = 0, $head = 0, $7 = 0, $tail14 = 0, $8 = 0, $cmp15 = 0, $cmp17 = 0, $or_cond39 = 0, $9 = 0, $searchf18 = 0, $10 = 0, $11 = 0, $call20 = 0, $12 = 0, $tobool = 0, $head21 = 0, $13 = 0, $cmp22 = 0, $inedges25 = 0, $14 = 0, $searchf26 = 0, $15 = 0, $16 = 0, $call28 = 0, $17 = 0, $f_1_ph = 0, $tobool3242 = 0, $inedges42 = 0, $f_143 = 0, $head34 = 0, $18 = 0, $tail35 = 0, $19 = 0, $cmp36 = 0, $cmp39 = 0, $or_cond40 = 0, $20 = 0, $searchf43 = 0, $21 = 0, $22 = 0, $call45 = 0, $23 = 0, $tobool32 = 0, $f_1_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($g | 0) == 0;
    $cmp1 = ($e | 0) == 0;
    $or_cond = $cmp | $cmp1;
    $cmp3 = ($n | 0) == 0;
    $or_cond38 = $or_cond | $cmp3;
    if ($or_cond38) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $cmp4 = ($0 | 0) == ($n | 0);
    if ($cmp4) {
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $outedges = $g + 28 | 0;
    $1 = HEAP32[$outedges >> 2] | 0;
    $searchf = $1 | 0;
    $2 = HEAP32[$searchf >> 2] | 0;
    $3 = $e | 0;
    $call = FUNCTION_TABLE_iiii[$2 & 1023]($1, $3, 8) | 0;
    $cmp7 = ($call | 0) == 0;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = $call;
    $tail9 = $call + 16 | 0;
    $5 = $tail9;
    $6 = HEAP32[$5 >> 2] | 0;
    $cmp10 = ($6 | 0) == ($n | 0);
    if ($cmp10) {
      $retval_0 = $4;
      label = 17;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call12 = _agfstin($g, $n) | 0;
    $tobool44 = ($call12 | 0) == 0;
    if ($tobool44) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $inedges = $g + 24 | 0;
    $f_045 = $call12;
    label = 8;
    break;
   case 8:
    $head = $f_045 + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    $tail14 = $f_045 + 16 | 0;
    $8 = HEAP32[$tail14 >> 2] | 0;
    $cmp15 = ($7 | 0) == ($8 | 0);
    $cmp17 = ($7 | 0) == ($n | 0);
    $or_cond39 = $cmp15 & $cmp17;
    if ($or_cond39) {
      label = 9;
      break;
    } else {
      $f_1_ph = $f_045;
      label = 12;
      break;
    }
   case 9:
    $9 = HEAP32[$inedges >> 2] | 0;
    $searchf18 = $9 | 0;
    $10 = HEAP32[$searchf18 >> 2] | 0;
    $11 = $f_045 | 0;
    $call20 = FUNCTION_TABLE_iiii[$10 & 1023]($9, $11, 8) | 0;
    $12 = $call20;
    $tobool = ($call20 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      $f_045 = $12;
      label = 8;
      break;
    }
   case 10:
    $head21 = $e + 12 | 0;
    $13 = HEAP32[$head21 >> 2] | 0;
    $cmp22 = ($13 | 0) == ($n | 0);
    if ($cmp22) {
      label = 11;
      break;
    } else {
      $retval_0 = 0;
      label = 17;
      break;
    }
   case 11:
    $inedges25 = $g + 24 | 0;
    $14 = HEAP32[$inedges25 >> 2] | 0;
    $searchf26 = $14 | 0;
    $15 = HEAP32[$searchf26 >> 2] | 0;
    $16 = $e | 0;
    $call28 = FUNCTION_TABLE_iiii[$15 & 1023]($14, $16, 8) | 0;
    $17 = $call28;
    $f_1_ph = $17;
    label = 12;
    break;
   case 12:
    $tobool3242 = ($f_1_ph | 0) == 0;
    if ($tobool3242) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $inedges42 = $g + 24 | 0;
    $f_143 = $f_1_ph;
    label = 14;
    break;
   case 14:
    $head34 = $f_143 + 12 | 0;
    $18 = HEAP32[$head34 >> 2] | 0;
    $tail35 = $f_143 + 16 | 0;
    $19 = HEAP32[$tail35 >> 2] | 0;
    $cmp36 = ($18 | 0) == ($19 | 0);
    $cmp39 = ($18 | 0) == ($n | 0);
    $or_cond40 = $cmp36 & $cmp39;
    if ($or_cond40) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $20 = HEAP32[$inedges42 >> 2] | 0;
    $searchf43 = $20 | 0;
    $21 = HEAP32[$searchf43 >> 2] | 0;
    $22 = $f_143 | 0;
    $call45 = FUNCTION_TABLE_iiii[$21 & 1023]($20, $22, 8) | 0;
    $23 = $call45;
    $tobool32 = ($call45 | 0) == 0;
    if ($tobool32) {
      $retval_0 = 0;
      label = 17;
      break;
    } else {
      $f_143 = $23;
      label = 14;
      break;
    }
   case 16:
    $f_1_ = $cmp39 ? $f_143 : 0;
    return $f_1_ | 0;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _agnxtout($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $outedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $tobool = 0, $tail = 0, $4 = 0, $5 = 0, $tail2 = 0, $6 = 0, $cmp = 0, $_ = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $outedges = $g + 28 | 0;
    $0 = HEAP32[$outedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $e | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 8) | 0;
    $3 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $call + 16 | 0;
    $4 = $tail;
    $5 = HEAP32[$4 >> 2] | 0;
    $tail2 = $e + 16 | 0;
    $6 = HEAP32[$tail2 >> 2] | 0;
    $cmp = ($5 | 0) == ($6 | 0);
    $_ = $cmp ? $3 : 0;
    return $_ | 0;
   case 4:
    return $3 | 0;
  }
  return 0;
}
function _agnxtin($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $inedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $tobool = 0, $head = 0, $4 = 0, $5 = 0, $head2 = 0, $6 = 0, $cmp = 0, $_ = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $inedges = $g + 24 | 0;
    $0 = HEAP32[$inedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $e | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 8) | 0;
    $3 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $call + 12 | 0;
    $4 = $head;
    $5 = HEAP32[$4 >> 2] | 0;
    $head2 = $e + 12 | 0;
    $6 = HEAP32[$head2 >> 2] | 0;
    $cmp = ($5 | 0) == ($6 | 0);
    $_ = $cmp ? $3 : 0;
    return $_ | 0;
   case 4:
    return $3 | 0;
  }
  return 0;
}
function _agNEWedge($subg, $tail, $head, $proto) {
  $subg = $subg | 0;
  $tail = $tail | 0;
  $head = $head | 0;
  $proto = $proto | 0;
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $tail1 = 0, $6 = 0, $head2 = 0, $7 = 0, $univ = 0, $8 = 0, $max_edge_id = 0, $9 = 0, $inc = 0, $id = 0, $10 = 0, $11 = 0, $edgeattr = 0, $12 = 0, $dict = 0, $13 = 0, $call4 = 0, $tobool = 0, $attr7 = 0, $14 = 0, $didset8 = 0, $15 = 0, $call5 = 0, $16 = 0, $attr = 0, $17 = 0, $sub = 0, $div = 0, $call6 = 0, $didset = 0, $18 = 0, $cmp19 = 0, $tobool9 = 0, $attr15 = 0, $19 = 0, $attr10 = 0, $i_020 = 0, $20 = 0, $arrayidx = 0, $21 = 0, $edgeattr12 = 0, $22 = 0, $list = 0, $23 = 0, $arrayidx13 = 0, $24 = 0, $value = 0, $cond_in = 0, $cond = 0, $call14 = 0, $25 = 0, $arrayidx16 = 0, $inc17 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[42136] | 0;
    $call = _calloc(1, $0) | 0;
    $1 = $call;
    $2 = $call;
    $3 = HEAP32[$2 >> 2] | 0;
    $4 = $3 & -16;
    $5 = $4 | 2;
    HEAP32[$2 >> 2] = $5;
    $tail1 = $call + 16 | 0;
    $6 = $tail1;
    HEAP32[$6 >> 2] = $tail;
    $head2 = $call + 12 | 0;
    $7 = $head2;
    HEAP32[$7 >> 2] = $head;
    $univ = $subg + 16 | 0;
    $8 = HEAP32[$univ >> 2] | 0;
    $max_edge_id = $8 + 20 | 0;
    $9 = HEAP32[$max_edge_id >> 2] | 0;
    $inc = $9 + 1 | 0;
    HEAP32[$max_edge_id >> 2] = $inc;
    $id = $call + 20 | 0;
    $10 = $id;
    HEAP32[$10 >> 2] = $9;
    $11 = HEAP32[$univ >> 2] | 0;
    $edgeattr = $11 + 8 | 0;
    $12 = HEAP32[$edgeattr >> 2] | 0;
    $dict = $12 + 4 | 0;
    $13 = HEAP32[$dict >> 2] | 0;
    $call4 = _dtsize($13) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $attr7 = $call + 4 | 0;
    $14 = $attr7;
    HEAP32[$14 >> 2] = 0;
    $didset8 = $call + 8 | 0;
    $15 = $didset8;
    HEAP32[$15 >> 2] = 0;
    label = 10;
    break;
   case 4:
    $call5 = _calloc($call4, 4) | 0;
    $16 = $call5;
    $attr = $call + 4 | 0;
    $17 = $attr;
    HEAP32[$17 >> 2] = $16;
    $sub = $call4 + 7 | 0;
    $div = ($sub | 0) / 8 & -1;
    $call6 = _calloc($div, 1) | 0;
    $didset = $call + 8 | 0;
    $18 = $didset;
    HEAP32[$18 >> 2] = $call6;
    $cmp19 = ($call4 | 0) > 0;
    if ($cmp19) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $tobool9 = ($proto | 0) == 0;
    $attr15 = $call + 4 | 0;
    $19 = $attr15;
    $attr10 = $proto + 4 | 0;
    $i_020 = 0;
    label = 6;
    break;
   case 6:
    if ($tobool9) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $20 = HEAP32[$attr10 >> 2] | 0;
    $arrayidx = $20 + ($i_020 << 2) | 0;
    $cond_in = $arrayidx;
    label = 9;
    break;
   case 8:
    $21 = HEAP32[$univ >> 2] | 0;
    $edgeattr12 = $21 + 8 | 0;
    $22 = HEAP32[$edgeattr12 >> 2] | 0;
    $list = $22 + 8 | 0;
    $23 = HEAP32[$list >> 2] | 0;
    $arrayidx13 = $23 + ($i_020 << 2) | 0;
    $24 = HEAP32[$arrayidx13 >> 2] | 0;
    $value = $24 + 4 | 0;
    $cond_in = $value;
    label = 9;
    break;
   case 9:
    $cond = HEAP32[$cond_in >> 2] | 0;
    $call14 = _agstrdup($cond) | 0;
    $25 = HEAP32[$19 >> 2] | 0;
    $arrayidx16 = $25 + ($i_020 << 2) | 0;
    HEAP32[$arrayidx16 >> 2] = $call14;
    $inc17 = $i_020 + 1 | 0;
    $cmp = ($inc17 | 0) < ($call4 | 0);
    if ($cmp) {
      $i_020 = $inc17;
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    return $1 | 0;
  }
  return 0;
}
function _agedge($g, $tail, $head) {
  $g = $g | 0;
  $tail = $tail | 0;
  $head = $head | 0;
  var $key = 0, $proto = 0, $0 = 0, $e1 = 0, $1 = 0, $attr = 0, $2 = 0, $3 = 0, $head4 = 0, $4 = 0, $e6 = 0, $5 = 0, $tail7 = 0, $6 = 0, $7 = 0, $and = 0, $tobool = 0, $call = 0, $tobool8 = 0, $8 = 0, $and11 = 0, $tobool12 = 0, $call14 = 0, $tobool15 = 0, $e_048 = 0, $9 = 0, $tobool19 = 0, $call21 = 0, $tobool22 = 0, $10 = 0, $and26 = 0, $tobool27 = 0, $call29 = 0, $tobool31 = 0, $e_152 = 0, $arraydecay = 0, $11 = 0, $inc = 0, $call36 = 0, $12 = 0, $e39 = 0, $13 = 0, $attr40 = 0, $14 = 0, $printkey_054 = 0, $15 = 0, $e46 = 0, $16 = 0, $call47 = 0, $17 = 0, $n = 0, $18 = 0, $e50 = 0, $19 = 0, $tail51 = 0, $20 = 0, $e53 = 0, $21 = 0, $head54 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $e_3 = 0, $26 = 0, $e57 = 0, $27 = 0, $attr58 = 0, $28 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $key = __stackBase__ | 0;
    $proto = $g + 40 | 0;
    $0 = HEAP32[$proto >> 2] | 0;
    $e1 = $0 + 4 | 0;
    $1 = HEAP32[$e1 >> 2] | 0;
    $attr = $1 + 4 | 0;
    $2 = HEAP32[$attr >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $head4 = $1 + 12 | 0;
    HEAP32[$head4 >> 2] = $head;
    $4 = HEAP32[$proto >> 2] | 0;
    $e6 = $4 + 4 | 0;
    $5 = HEAP32[$e6 >> 2] | 0;
    $tail7 = $5 + 16 | 0;
    HEAP32[$tail7 >> 2] = $tail;
    $6 = $g;
    $7 = HEAP32[$6 >> 2] | 0;
    $and = $7 & 32;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _esearch($g, $tail, $head, 0) | 0;
    $tobool8 = ($call | 0) == 0;
    if ($tobool8) {
      label = 4;
      break;
    } else {
      $e_048 = $call;
      label = 6;
      break;
    }
   case 4:
    $8 = HEAP32[$6 >> 2] | 0;
    $and11 = $8 & 16;
    $tobool12 = ($and11 | 0) == 0;
    if ($tobool12) {
      label = 5;
      break;
    } else {
      $printkey_054 = 0;
      label = 13;
      break;
    }
   case 5:
    $call14 = _esearch($g, $head, $tail, 0) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      $printkey_054 = 0;
      label = 13;
      break;
    } else {
      $e_048 = $call14;
      label = 6;
      break;
    }
   case 6:
    _install_edge($g, $e_048);
    $e_3 = $e_048;
    label = 14;
    break;
   case 7:
    $9 = HEAP8[$3] | 0;
    $tobool19 = $9 << 24 >> 24 == 0;
    if ($tobool19) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call21 = _esearch($g, $tail, $head, $3) | 0;
    $tobool22 = ($call21 | 0) == 0;
    if ($tobool22) {
      label = 9;
      break;
    } else {
      $e_152 = $call21;
      label = 11;
      break;
    }
   case 9:
    $10 = HEAP32[$6 >> 2] | 0;
    $and26 = $10 & 16;
    $tobool27 = ($and26 | 0) == 0;
    if ($tobool27) {
      label = 10;
      break;
    } else {
      $printkey_054 = 32;
      label = 13;
      break;
    }
   case 10:
    $call29 = _esearch($g, $head, $tail, $3) | 0;
    $tobool31 = ($call29 | 0) == 0;
    if ($tobool31) {
      $printkey_054 = 32;
      label = 13;
      break;
    } else {
      $e_152 = $call29;
      label = 11;
      break;
    }
   case 11:
    _agINSedge($g, $e_152);
    $e_3 = $e_152;
    label = 14;
    break;
   case 12:
    $arraydecay = $key | 0;
    $11 = HEAP32[22298] | 0;
    $inc = $11 + 1 | 0;
    HEAP32[22298] = $inc;
    $call36 = _sprintf($arraydecay | 0, 103776, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $11, tempInt) | 0) | 0;
    $12 = HEAP32[$proto >> 2] | 0;
    $e39 = $12 + 4 | 0;
    $13 = HEAP32[$e39 >> 2] | 0;
    $attr40 = $13 + 4 | 0;
    $14 = HEAP32[$attr40 >> 2] | 0;
    HEAP32[$14 >> 2] = $arraydecay;
    $printkey_054 = 0;
    label = 13;
    break;
   case 13:
    $15 = HEAP32[$proto >> 2] | 0;
    $e46 = $15 + 4 | 0;
    $16 = HEAP32[$e46 >> 2] | 0;
    $call47 = _agNEWedge($g, $tail, $head, $16) | 0;
    _install_edge($g, $call47);
    $17 = HEAP32[$proto >> 2] | 0;
    $n = $17 | 0;
    $18 = HEAP32[$n >> 2] | 0;
    $e50 = $17 + 4 | 0;
    $19 = HEAP32[$e50 >> 2] | 0;
    $tail51 = $19 + 16 | 0;
    HEAP32[$tail51 >> 2] = $18;
    $20 = HEAP32[$proto >> 2] | 0;
    $e53 = $20 + 4 | 0;
    $21 = HEAP32[$e53 >> 2] | 0;
    $head54 = $21 + 12 | 0;
    HEAP32[$head54 >> 2] = $18;
    $22 = $call47;
    $23 = HEAP32[$22 >> 2] | 0;
    $24 = $23 & -241;
    $25 = $24 | $printkey_054;
    HEAP32[$22 >> 2] = $25;
    $e_3 = $call47;
    label = 14;
    break;
   case 14:
    $26 = HEAP32[$proto >> 2] | 0;
    $e57 = $26 + 4 | 0;
    $27 = HEAP32[$e57 >> 2] | 0;
    $attr58 = $27 + 4 | 0;
    $28 = HEAP32[$attr58 >> 2] | 0;
    HEAP32[$28 >> 2] = $3;
    STACKTOP = __stackBase__;
    return $e_3 | 0;
  }
  return 0;
}
function _agFREEedge($e) {
  $e = $e | 0;
  var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $tail = 0, $4 = 0, $graph = 0, $5 = 0, $univ = 0, $6 = 0, $edgeattr = 0, $7 = 0, $dict1 = 0, $8 = 0, $call2 = 0, $cmp9 = 0, $attr = 0, $9 = 0, $10 = 0, $i_010 = 0, $arrayidx = 0, $11 = 0, $inc = 0, $cmp = 0, $12 = 0, $_lcssa = 0, $13 = 0, $didset = 0, $14 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $e | 0;
    $1 = $e;
    $2 = HEAP32[$1 >> 2] | 0;
    $3 = $2 | 15;
    HEAP32[$1 >> 2] = $3;
    $tail = $e + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $graph = $4 + 20 | 0;
    $5 = HEAP32[$graph >> 2] | 0;
    $univ = $5 + 16 | 0;
    $6 = HEAP32[$univ >> 2] | 0;
    $edgeattr = $6 + 8 | 0;
    $7 = HEAP32[$edgeattr >> 2] | 0;
    $dict1 = $7 + 4 | 0;
    $8 = HEAP32[$dict1 >> 2] | 0;
    $call2 = _dtsize($8) | 0;
    $cmp9 = ($call2 | 0) > 0;
    $attr = $e + 4 | 0;
    $9 = HEAP32[$attr >> 2] | 0;
    if ($cmp9) {
      $i_010 = 0;
      $10 = $9;
      label = 3;
      break;
    } else {
      $_lcssa = $9;
      label = 4;
      break;
    }
   case 3:
    $arrayidx = $10 + ($i_010 << 2) | 0;
    $11 = HEAP32[$arrayidx >> 2] | 0;
    _agstrfree($11);
    $inc = $i_010 + 1 | 0;
    $cmp = ($inc | 0) < ($call2 | 0);
    $12 = HEAP32[$attr >> 2] | 0;
    if ($cmp) {
      $i_010 = $inc;
      $10 = $12;
      label = 3;
      break;
    } else {
      $_lcssa = $12;
      label = 4;
      break;
    }
   case 4:
    $13 = $_lcssa;
    _free($13);
    $didset = $e + 8 | 0;
    $14 = HEAP32[$didset >> 2] | 0;
    _free($14);
    _free($0);
    return;
  }
}
function _agDELedge($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $inedges = 0, $0 = 0, $searchf = 0, $1 = 0, $2 = 0, $call = 0, $cmp = 0, $call2 = 0, $3 = 0, $call4 = 0, $4 = 0, $5 = 0, $and = 0, $cmp5 = 0, $meta_node = 0, $6 = 0, $graph = 0, $7 = 0, $call8 = 0, $tobool24 = 0, $f_025 = 0, $head = 0, $8 = 0, $9 = 0, $call9 = 0, $inedges10 = 0, $10 = 0, $11 = 0, $searchf11 = 0, $12 = 0, $call13 = 0, $tobool14 = 0, $13 = 0, $call17 = 0, $tobool = 0, $14 = 0, $searchf20 = 0, $15 = 0, $call22 = 0, $outedges = 0, $16 = 0, $searchf23 = 0, $17 = 0, $call25 = 0, $root = 0, $18 = 0, $cmp26 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $inedges = $g + 24 | 0;
    $0 = HEAP32[$inedges >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $2 = $e | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $2, 4) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call2 = _agerr(1, 139192, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $e, tempInt) | 0) | 0;
    $3 = HEAP32[$inedges >> 2] | 0;
    $call4 = _dtwalk($3, 98, 0) | 0;
    label = 11;
    break;
   case 4:
    $4 = $g;
    $5 = HEAP32[$4 >> 2] | 0;
    $and = $5 & 64;
    $cmp5 = ($and | 0) == 0;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 9;
      break;
    }
   case 5:
    $meta_node = $g + 36 | 0;
    $6 = HEAP32[$meta_node >> 2] | 0;
    $graph = $6 + 20 | 0;
    $7 = HEAP32[$graph >> 2] | 0;
    $call8 = _agfstout($7, $6) | 0;
    $tobool24 = ($call8 | 0) == 0;
    if ($tobool24) {
      label = 9;
      break;
    } else {
      $f_025 = $call8;
      label = 6;
      break;
    }
   case 6:
    $head = $f_025 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $9 = $8;
    $call9 = _agusergraph($9) | 0;
    $inedges10 = $call9 + 24 | 0;
    $10 = HEAP32[$inedges10 >> 2] | 0;
    $11 = $10;
    $searchf11 = $10;
    $12 = HEAP32[$searchf11 >> 2] | 0;
    $call13 = FUNCTION_TABLE_iiii[$12 & 1023]($11, $2, 4) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $13 = $call9;
    _agDELedge($13, $e);
    label = 8;
    break;
   case 8:
    $call17 = _agnxtout($7, $f_025) | 0;
    $tobool = ($call17 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $f_025 = $call17;
      label = 6;
      break;
    }
   case 9:
    $14 = HEAP32[$inedges >> 2] | 0;
    $searchf20 = $14 | 0;
    $15 = HEAP32[$searchf20 >> 2] | 0;
    $call22 = FUNCTION_TABLE_iiii[$15 & 1023]($14, $2, 2) | 0;
    $outedges = $g + 28 | 0;
    $16 = HEAP32[$outedges >> 2] | 0;
    $searchf23 = $16 | 0;
    $17 = HEAP32[$searchf23 >> 2] | 0;
    $call25 = FUNCTION_TABLE_iiii[$17 & 1023]($16, $2, 2) | 0;
    $root = $g + 32 | 0;
    $18 = HEAP32[$root >> 2] | 0;
    $cmp26 = ($18 | 0) == ($g | 0);
    if ($cmp26) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _agFREEedge($e);
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return;
  }
}
function _printedge($d, $p, $ignored) {
  $d = $d | 0;
  $p = $p | 0;
  $ignored = $ignored | 0;
  var $2 = 0, $5 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $2 = HEAP32[(HEAP32[$p + 16 >> 2] | 0) + 12 >> 2] | 0;
  $5 = HEAP32[(HEAP32[$p + 12 >> 2] | 0) + 12 >> 2] | 0;
  _agerr(3, 119832, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $p, HEAP32[tempInt + 8 >> 2] = $2, HEAP32[tempInt + 16 >> 2] = $5, tempInt) | 0);
  STACKTOP = __stackBase__;
  return 0;
}
function _agcmpin($d, $e0, $e1, $disc) {
  $d = $d | 0;
  $e0 = $e0 | 0;
  $e1 = $e1 | 0;
  $disc = $disc | 0;
  var $tail = 0, $0 = 0, $tobool = 0, $id = 0, $1 = 0, $cond = 0, $head = 0, $2 = 0, $tobool2 = 0, $id5 = 0, $3 = 0, $cond8 = 0, $tail9 = 0, $4 = 0, $tobool10 = 0, $id13 = 0, $5 = 0, $cond16 = 0, $head17 = 0, $6 = 0, $tobool18 = 0, $id21 = 0, $7 = 0, $cond24 = 0, $cmp = 0, $sub = 0, $cmp25 = 0, $sub27 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e0 + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $cond = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $id = $0 + 16 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    $cond = $1;
    label = 4;
    break;
   case 4:
    $head = $e0 + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      $cond8 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $id5 = $2 + 16 | 0;
    $3 = HEAP32[$id5 >> 2] | 0;
    $cond8 = $3;
    label = 6;
    break;
   case 6:
    $tail9 = $e1 + 16 | 0;
    $4 = HEAP32[$tail9 >> 2] | 0;
    $tobool10 = ($4 | 0) == 0;
    if ($tobool10) {
      $cond16 = -1;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $id13 = $4 + 16 | 0;
    $5 = HEAP32[$id13 >> 2] | 0;
    $cond16 = $5;
    label = 8;
    break;
   case 8:
    $head17 = $e1 + 12 | 0;
    $6 = HEAP32[$head17 >> 2] | 0;
    $tobool18 = ($6 | 0) == 0;
    if ($tobool18) {
      $cond24 = -1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $id21 = $6 + 16 | 0;
    $7 = HEAP32[$id21 >> 2] | 0;
    $cond24 = $7;
    label = 10;
    break;
   case 10:
    $cmp = ($cond8 | 0) == ($cond24 | 0);
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $sub = $cond8 - $cond24 | 0;
    $retval_0 = $sub;
    label = 15;
    break;
   case 12:
    $cmp25 = ($cond | 0) == ($cond16 | 0);
    if ($cmp25) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $sub27 = $cond - $cond16 | 0;
    $retval_0 = $sub27;
    label = 15;
    break;
   case 14:
    $call = _keycmp($e0, $e1) | 0;
    $retval_0 = $call;
    label = 15;
    break;
   case 15:
    return $retval_0 | 0;
  }
  return 0;
}
function _agcmpout($d, $e0, $e1, $disc) {
  $d = $d | 0;
  $e0 = $e0 | 0;
  $e1 = $e1 | 0;
  $disc = $disc | 0;
  var $tail = 0, $0 = 0, $tobool = 0, $id = 0, $1 = 0, $cond = 0, $head = 0, $2 = 0, $tobool2 = 0, $id5 = 0, $3 = 0, $cond8 = 0, $tail9 = 0, $4 = 0, $tobool10 = 0, $id13 = 0, $5 = 0, $cond16 = 0, $head17 = 0, $6 = 0, $tobool18 = 0, $id21 = 0, $7 = 0, $cond24 = 0, $cmp = 0, $sub = 0, $cmp25 = 0, $sub27 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e0 + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $cond = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $id = $0 + 16 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    $cond = $1;
    label = 4;
    break;
   case 4:
    $head = $e0 + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    if ($tobool2) {
      $cond8 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $id5 = $2 + 16 | 0;
    $3 = HEAP32[$id5 >> 2] | 0;
    $cond8 = $3;
    label = 6;
    break;
   case 6:
    $tail9 = $e1 + 16 | 0;
    $4 = HEAP32[$tail9 >> 2] | 0;
    $tobool10 = ($4 | 0) == 0;
    if ($tobool10) {
      $cond16 = -1;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $id13 = $4 + 16 | 0;
    $5 = HEAP32[$id13 >> 2] | 0;
    $cond16 = $5;
    label = 8;
    break;
   case 8:
    $head17 = $e1 + 12 | 0;
    $6 = HEAP32[$head17 >> 2] | 0;
    $tobool18 = ($6 | 0) == 0;
    if ($tobool18) {
      $cond24 = -1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $id21 = $6 + 16 | 0;
    $7 = HEAP32[$id21 >> 2] | 0;
    $cond24 = $7;
    label = 10;
    break;
   case 10:
    $cmp = ($cond | 0) == ($cond16 | 0);
    if ($cmp) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $sub = $cond - $cond16 | 0;
    $retval_0 = $sub;
    label = 15;
    break;
   case 12:
    $cmp25 = ($cond8 | 0) == ($cond24 | 0);
    if ($cmp25) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $sub27 = $cond8 - $cond24 | 0;
    $retval_0 = $sub27;
    label = 15;
    break;
   case 14:
    $call = _keycmp($e0, $e1) | 0;
    $retval_0 = $call;
    label = 15;
    break;
   case 15:
    return $retval_0 | 0;
  }
  return 0;
}
function _agusergraph($n) {
  $n = $n | 0;
  var $graph = 0, $0 = 0, $meta_node = 0, $1 = 0, $tobool = 0, $attr = 0, $2 = 0, $3 = 0, $4 = 0, $cond = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $meta_node = $0 + 36 | 0;
    $1 = HEAP32[$meta_node >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $cond = 0;
      label = 4;
      break;
    }
   case 3:
    $attr = $n + 4 | 0;
    $2 = HEAP32[$attr >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $4 = $3;
    $cond = $4;
    label = 4;
    break;
   case 4:
    return $cond | 0;
  }
  return 0;
}
function _keycmp($e0, $e1) {
  $e0 = $e0 | 0;
  $e1 = $e1 | 0;
  var $attr = 0, $0 = 0, $tobool = 0, $1 = 0, $cond = 0, $attr2 = 0, $2 = 0, $tobool3 = 0, $3 = 0, $cond9 = 0, $cmp = 0, $tobool10 = 0, $cond11 = 0, $cmp12 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $attr = $e0 + 4 | 0;
    $0 = HEAP32[$attr >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $cond = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[$0 >> 2] | 0;
    $cond = $1;
    label = 4;
    break;
   case 4:
    $attr2 = $e1 + 4 | 0;
    $2 = HEAP32[$attr2 >> 2] | 0;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      $cond9 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = HEAP32[$2 >> 2] | 0;
    $cond9 = $3;
    label = 6;
    break;
   case 6:
    $cmp = ($cond | 0) == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $tobool10 = ($cond9 | 0) != 0;
    $cond11 = $tobool10 << 31 >> 31;
    $retval_0 = $cond11;
    label = 10;
    break;
   case 8:
    $cmp12 = ($cond9 | 0) == 0;
    if ($cmp12) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call = _strcmp($cond | 0, $cond9 | 0) | 0;
    $retval_0 = $call;
    label = 10;
    break;
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _agpushproto($g) {
  $g = $g | 0;
  _dup_proto($g, HEAP32[$g + 40 >> 2] | 0);
  return;
}
function _dup_proto($g, $proto) {
  $g = $g | 0;
  $proto = $proto | 0;
  var $call = 0, $0 = 0, $proto1 = 0, $1 = 0, $prev = 0, $2 = 0, $tobool = 0, $n2 = 0, $3 = 0, $e3 = 0, $4 = 0, $phitmp = 0, $phitmp11 = 0, $e_0 = 0, $n_0 = 0, $5 = 0, $call4 = 0, $6 = 0, $n5 = 0, $call8 = 0, $7 = 0, $e9 = 0, $8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _calloc(1, 12) | 0;
    $0 = $call;
    $proto1 = $g + 40 | 0;
    $1 = HEAP32[$proto1 >> 2] | 0;
    $prev = $call + 8 | 0;
    $2 = $prev;
    HEAP32[$2 >> 2] = $1;
    $tobool = ($proto | 0) == 0;
    if ($tobool) {
      $n_0 = 0;
      $e_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $n2 = $proto | 0;
    $3 = HEAP32[$n2 >> 2] | 0;
    $e3 = $proto + 4 | 0;
    $4 = HEAP32[$e3 >> 2] | 0;
    $phitmp = $3;
    $phitmp11 = $4;
    $n_0 = $phitmp;
    $e_0 = $phitmp11;
    label = 4;
    break;
   case 4:
    $5 = $g;
    $call4 = _agNEWnode($5, 108144, $n_0) | 0;
    $6 = $call4;
    $n5 = $call;
    HEAP32[$n5 >> 2] = $6;
    $call8 = _agNEWedge($5, $call4, $call4, $e_0) | 0;
    $7 = $call8;
    $e9 = $call + 4 | 0;
    $8 = $e9;
    HEAP32[$8 >> 2] = $7;
    HEAP32[$proto1 >> 2] = $0;
    return;
  }
}
function _agpopproto($g) {
  $g = $g | 0;
  var $proto = 0, $0 = 0, $cmp = 0, $prev = 0, $1 = 0, $n = 0, $2 = 0, $e = 0, $3 = 0, $head = 0, $4 = 0, $tail = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $proto = $g + 40 | 0;
    $0 = HEAP32[$proto >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $prev = $0 + 8 | 0;
    $1 = HEAP32[$prev >> 2] | 0;
    HEAP32[$proto >> 2] = $1;
    $n = $0 | 0;
    $2 = HEAP32[$n >> 2] | 0;
    $e = $0 + 4 | 0;
    $3 = HEAP32[$e >> 2] | 0;
    $head = $3 + 12 | 0;
    HEAP32[$head >> 2] = $2;
    $4 = HEAP32[$e >> 2] | 0;
    $tail = $4 + 16 | 0;
    HEAP32[$tail >> 2] = $2;
    $5 = HEAP32[$e >> 2] | 0;
    $6 = $5;
    _agFREEedge($6);
    $7 = HEAP32[$n >> 2] | 0;
    $8 = $7;
    _agFREEnode($8);
    $9 = $0;
    _free($9);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _agopen($name, $kind) {
  $name = $name | 0;
  $kind = $kind | 0;
  var $call = 0, $call1 = 0, $tobool = 0, $tobool2 = 0, $or_cond = 0, $0 = 0, $call3 = 0, $call4 = 0, $1 = 0, $meta_node = 0, $2 = 0, $3 = 0, $4 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agNEWgraph($name, 0, $kind) | 0;
    $call1 = _agNEWgraph($name, 0, 7) | 0;
    $tobool = ($call | 0) == 0;
    $tobool2 = ($call1 | 0) == 0;
    $or_cond = $tobool | $tobool2;
    if ($or_cond) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = $call1;
    $call3 = _agnodeattr($0, 151800, 0) | 0;
    $call4 = _agnode($0, $name) | 0;
    $1 = $call4;
    $meta_node = $call + 36 | 0;
    HEAP32[$meta_node >> 2] = $1;
    $2 = $call | 0;
    $3 = $call4 + 4 | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    HEAP32[$4 >> 2] = $2;
    $retval_0 = $call;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _agNEWgraph($name, $parent, $kind) {
  $name = $name | 0;
  $parent = $parent | 0;
  $kind = $kind | 0;
  var $0 = 0, $cmp = 0, $call = 0, $1 = 0, $call2 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $bf_value = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $call3 = 0, $11 = 0, $nodes = 0, $12 = 0, $13 = 0, $14 = 0, $call4 = 0, $15 = 0, $inedges = 0, $16 = 0, $17 = 0, $18 = 0, $call5 = 0, $19 = 0, $outedges = 0, $20 = 0, $cmp6 = 0, $call9 = 0, $univ = 0, $21 = 0, $root = 0, $22 = 0, $23 = 0, $globattr = 0, $24 = 0, $dict = 0, $25 = 0, $26 = 0, $call11 = 0, $tobool = 0, $attr15 = 0, $27 = 0, $didset16 = 0, $28 = 0, $call13 = 0, $29 = 0, $attr = 0, $30 = 0, $sub = 0, $div = 0, $call14 = 0, $didset = 0, $31 = 0, $cmp1846 = 0, $attr22 = 0, $32 = 0, $i_047 = 0, $33 = 0, $34 = 0, $35 = 0, $arrayidx = 0, $36 = 0, $call21 = 0, $37 = 0, $arrayidx23 = 0, $inc = 0, $cmp18 = 0, $univ25 = 0, $38 = 0, $univ26 = 0, $39 = 0, $root27 = 0, $40 = 0, $root28 = 0, $41 = 0, $42 = 0, $globattr30 = 0, $43 = 0, $dict31 = 0, $44 = 0, $45 = 0, $call32 = 0, $tobool33 = 0, $attr43 = 0, $46 = 0, $didset44 = 0, $47 = 0, $call35 = 0, $48 = 0, $attr36 = 0, $49 = 0, $sub38 = 0, $div39 = 0, $call40 = 0, $didset41 = 0, $50 = 0, $cmp4749 = 0, $attr50 = 0, $attr53 = 0, $51 = 0, $i_150 = 0, $52 = 0, $arrayidx51 = 0, $53 = 0, $call52 = 0, $54 = 0, $arrayidx54 = 0, $inc56 = 0, $cmp47 = 0, $meta_node = 0, $55 = 0, $call59 = 0, $name60 = 0, $56 = 0, $proto = 0, $57 = 0, $proto63 = 0, $58 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[168567] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agerr(1, 158152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $retval_0 = 0;
    label = 18;
    break;
   case 4:
    $1 = HEAP32[42134] | 0;
    $call2 = _calloc(1, $1) | 0;
    $2 = $call2;
    $3 = $call2;
    $4 = HEAP32[$3 >> 2] | 0;
    $5 = $4 & -256;
    $bf_value = $kind << 4;
    $6 = $bf_value & 240;
    $7 = $6 | $5;
    $8 = $7 | 3;
    HEAP32[$3 >> 2] = $8;
    $9 = HEAP32[41974] | 0;
    $10 = $9;
    $call3 = _dtopen(89472, $10) | 0;
    $11 = $call3;
    $nodes = $call2 + 20 | 0;
    $12 = $nodes;
    HEAP32[$12 >> 2] = $11;
    $13 = HEAP32[41974] | 0;
    $14 = $13;
    $call4 = _dtopen(89592, $14) | 0;
    $15 = $call4;
    $inedges = $call2 + 24 | 0;
    $16 = $inedges;
    HEAP32[$16 >> 2] = $15;
    $17 = HEAP32[41974] | 0;
    $18 = $17;
    $call5 = _dtopen(89432, $18) | 0;
    $19 = $call5;
    $outedges = $call2 + 28 | 0;
    $20 = $outedges;
    HEAP32[$20 >> 2] = $19;
    $cmp6 = ($parent | 0) == 0;
    if ($cmp6) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $call9 = _agnewdata() | 0;
    $univ = $call2 + 16 | 0;
    $21 = $univ;
    HEAP32[$21 >> 2] = $call9;
    $root = $call2 + 32 | 0;
    $22 = $root;
    HEAP32[$22 >> 2] = $2;
    $23 = HEAP32[$21 >> 2] | 0;
    $globattr = $23 + 12 | 0;
    $24 = HEAP32[$globattr >> 2] | 0;
    $dict = $24 + 4 | 0;
    $25 = HEAP32[$dict >> 2] | 0;
    $26 = $25;
    $call11 = _dtsize($26) | 0;
    $tobool = ($call11 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $attr15 = $call2 + 4 | 0;
    $27 = $attr15;
    HEAP32[$27 >> 2] = 0;
    $didset16 = $call2 + 8 | 0;
    $28 = $didset16;
    HEAP32[$28 >> 2] = 0;
    label = 15;
    break;
   case 7:
    $call13 = _calloc($call11, 4) | 0;
    $29 = $call13;
    $attr = $call2 + 4 | 0;
    $30 = $attr;
    HEAP32[$30 >> 2] = $29;
    $sub = $call11 + 7 | 0;
    $div = ($sub | 0) / 8 & -1;
    $call14 = _calloc($div, 1) | 0;
    $didset = $call2 + 8 | 0;
    $31 = $didset;
    HEAP32[$31 >> 2] = $call14;
    $cmp1846 = ($call11 | 0) > 0;
    if ($cmp1846) {
      label = 8;
      break;
    } else {
      label = 15;
      break;
    }
   case 8:
    $attr22 = $call2 + 4 | 0;
    $32 = $attr22;
    $i_047 = 0;
    label = 9;
    break;
   case 9:
    $33 = HEAP32[42137] | 0;
    $34 = $33 + 4 | 0;
    $35 = HEAP32[$34 >> 2] | 0;
    $arrayidx = $35 + ($i_047 << 2) | 0;
    $36 = HEAP32[$arrayidx >> 2] | 0;
    $call21 = _agstrdup($36) | 0;
    $37 = HEAP32[$32 >> 2] | 0;
    $arrayidx23 = $37 + ($i_047 << 2) | 0;
    HEAP32[$arrayidx23 >> 2] = $call21;
    $inc = $i_047 + 1 | 0;
    $cmp18 = ($inc | 0) < ($call11 | 0);
    if ($cmp18) {
      $i_047 = $inc;
      label = 9;
      break;
    } else {
      label = 15;
      break;
    }
   case 10:
    $univ25 = $parent + 16 | 0;
    $38 = HEAP32[$univ25 >> 2] | 0;
    $univ26 = $call2 + 16 | 0;
    $39 = $univ26;
    HEAP32[$39 >> 2] = $38;
    $root27 = $parent + 32 | 0;
    $40 = HEAP32[$root27 >> 2] | 0;
    $root28 = $call2 + 32 | 0;
    $41 = $root28;
    HEAP32[$41 >> 2] = $40;
    $42 = HEAP32[$univ25 >> 2] | 0;
    $globattr30 = $42 + 12 | 0;
    $43 = HEAP32[$globattr30 >> 2] | 0;
    $dict31 = $43 + 4 | 0;
    $44 = HEAP32[$dict31 >> 2] | 0;
    $45 = $44;
    $call32 = _dtsize($45) | 0;
    $tobool33 = ($call32 | 0) == 0;
    if ($tobool33) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $attr43 = $call2 + 4 | 0;
    $46 = $attr43;
    HEAP32[$46 >> 2] = 0;
    $didset44 = $call2 + 8 | 0;
    $47 = $didset44;
    HEAP32[$47 >> 2] = 0;
    label = 15;
    break;
   case 12:
    $call35 = _calloc($call32, 4) | 0;
    $48 = $call35;
    $attr36 = $call2 + 4 | 0;
    $49 = $attr36;
    HEAP32[$49 >> 2] = $48;
    $sub38 = $call32 + 7 | 0;
    $div39 = ($sub38 | 0) / 8 & -1;
    $call40 = _calloc($div39, 1) | 0;
    $didset41 = $call2 + 8 | 0;
    $50 = $didset41;
    HEAP32[$50 >> 2] = $call40;
    $cmp4749 = ($call32 | 0) > 0;
    if ($cmp4749) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $attr50 = $parent + 4 | 0;
    $attr53 = $call2 + 4 | 0;
    $51 = $attr53;
    $i_150 = 0;
    label = 14;
    break;
   case 14:
    $52 = HEAP32[$attr50 >> 2] | 0;
    $arrayidx51 = $52 + ($i_150 << 2) | 0;
    $53 = HEAP32[$arrayidx51 >> 2] | 0;
    $call52 = _agstrdup($53) | 0;
    $54 = HEAP32[$51 >> 2] | 0;
    $arrayidx54 = $54 + ($i_150 << 2) | 0;
    HEAP32[$arrayidx54 >> 2] = $call52;
    $inc56 = $i_150 + 1 | 0;
    $cmp47 = ($inc56 | 0) < ($call32 | 0);
    if ($cmp47) {
      $i_150 = $inc56;
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $meta_node = $call2 + 36 | 0;
    $55 = $meta_node;
    HEAP32[$55 >> 2] = 0;
    $call59 = _agstrdup($name) | 0;
    $name60 = $call2 + 12 | 0;
    $56 = $name60;
    HEAP32[$56 >> 2] = $call59;
    $proto = $call2 + 40 | 0;
    $57 = $proto;
    HEAP32[$57 >> 2] = 0;
    if ($cmp6) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $proto63 = $parent + 40 | 0;
    $58 = HEAP32[$proto63 >> 2] | 0;
    _dup_proto($2, $58);
    $retval_0 = $2;
    label = 18;
    break;
   case 17:
    _agpushproto($2);
    $retval_0 = $2;
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _agsubg($g, $name) {
  $g = $g | 0;
  $name = $name | 0;
  var $meta_node = 0, $0 = 0, $graph = 0, $1 = 0, $2 = 0, $call = 0, $tobool = 0, $3 = 0, $call1 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $bf_val_sext = 0, $call2 = 0, $tobool3 = 0, $call5 = 0, $8 = 0, $meta_node6 = 0, $9 = 0, $10 = 0, $11 = 0, $subg_0 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meta_node = $g + 36 | 0;
    $0 = HEAP32[$meta_node >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $2 = $1;
    $call = _agfindnode($2, $name) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $3 = $call;
    $call1 = _agusergraph($3) | 0;
    $subg_0 = $call1;
    label = 6;
    break;
   case 4:
    $4 = $g;
    $5 = HEAP32[$4 >> 2] | 0;
    $6 = $5 >>> 4;
    $7 = $6 << 28;
    $bf_val_sext = $7 >> 28;
    $call2 = _agNEWgraph($name, $g, $bf_val_sext) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call5 = _agnode($2, $name) | 0;
    $8 = $call5;
    $meta_node6 = $call2 + 36 | 0;
    HEAP32[$meta_node6 >> 2] = $8;
    $9 = $call2 | 0;
    $10 = $call5 + 4 | 0;
    $11 = HEAP32[$10 >> 2] | 0;
    HEAP32[$11 >> 2] = $9;
    $subg_0 = $call2;
    label = 6;
    break;
   case 6:
    _agINSgraph($g, $subg_0);
    $retval_0 = $subg_0;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _agINSgraph($g, $subg) {
  $g = $g | 0;
  $subg = $subg | 0;
  var $meta_node = 0, $0 = 0, $meta_node1 = 0, $1 = 0, $tobool = 0, $tobool2 = 0, $or_cond = 0, $call = 0, $cmp = 0, $graph = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $call4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meta_node = $g + 36 | 0;
    $0 = HEAP32[$meta_node >> 2] | 0;
    $meta_node1 = $subg + 36 | 0;
    $1 = HEAP32[$meta_node1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    $tobool2 = ($1 | 0) == 0;
    $or_cond = $tobool | $tobool2;
    if ($or_cond) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _reach($1, $0) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $graph = $0 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $3 = $2;
    $4 = $0;
    $5 = $1;
    $call4 = _agedge($3, $4, $5) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _agfindsubg($g, $name) {
  $g = $g | 0;
  $name = $name | 0;
  var $meta_node = 0, $0 = 0, $tobool = 0, $graph = 0, $1 = 0, $2 = 0, $call = 0, $tobool2 = 0, $3 = 0, $call4 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meta_node = $g + 36 | 0;
    $0 = HEAP32[$meta_node >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $2 = $1;
    $call = _agfindnode($2, $name) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = $call;
    $call4 = _agusergraph($3) | 0;
    $retval_0 = $call4;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _reach($from, $to) {
  $from = $from | 0;
  $to = $to | 0;
  var $call = 0, $call1 = 0;
  $call = _dtopen(89472, HEAP32[41974] | 0) | 0;
  $call1 = _reach0($call, $from, $to) | 0;
  _dtclose($call);
  return $call1 | 0;
}
function _agclose($g) {
  $g = $g | 0;
  var $cmp = 0, $0 = 0, $1 = 0, $_mask = 0, $cmp1 = 0, $and = 0, $cmp4 = 0, $meta_node = 0, $2 = 0, $graph = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $call = 0, $flag_0_ph = 0, $e_0_in_ph = 0, $e_0_in = 0, $tobool = 0, $call7 = 0, $head = 0, $7 = 0, $call8 = 0, $call9 = 0, $cmp10 = 0, $8 = 0, $9 = 0, $call13 = 0, $tobool15 = 0, $meta_0_ph = 0, $proto = 0, $10 = 0, $tobool1746 = 0, $11 = 0, $tobool17 = 0, $univ = 0, $12 = 0, $globattr = 0, $13 = 0, $dict = 0, $14 = 0, $15 = 0, $call20 = 0, $cmp2244 = 0, $attr = 0, $i_045 = 0, $16 = 0, $arrayidx = 0, $17 = 0, $inc = 0, $cmp22 = 0, $attr27 = 0, $18 = 0, $tobool28 = 0, $19 = 0, $didset = 0, $20 = 0, $tobool32 = 0, $root = 0, $21 = 0, $cmp36 = 0, $22 = 0, $call38 = 0, $tobool4042 = 0, $n_0_in43 = 0, $call42 = 0, $tobool40 = 0, $meta_node47 = 0, $23 = 0, $graph48 = 0, $24 = 0, $meta_node52 = 0, $25 = 0, $26 = 0, $nodes = 0, $27 = 0, $28 = 0, $call55 = 0, $inedges = 0, $29 = 0, $30 = 0, $call56 = 0, $outedges = 0, $31 = 0, $32 = 0, $call57 = 0, $name = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($g | 0) == 0;
    if ($cmp) {
      label = 31;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = $g;
    $1 = HEAP32[$0 >> 2] | 0;
    $_mask = $1 & 15;
    $cmp1 = ($_mask | 0) == 3;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 31;
      break;
    }
   case 4:
    $and = $1 & 64;
    $cmp4 = ($and | 0) == 0;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      $meta_0_ph = 0;
      label = 12;
      break;
    }
   case 5:
    $meta_node = $g + 36 | 0;
    $2 = HEAP32[$meta_node >> 2] | 0;
    $graph = $2 + 20 | 0;
    $3 = HEAP32[$graph >> 2] | 0;
    $4 = $3;
    label = 6;
    break;
   case 6:
    $5 = HEAP32[$meta_node >> 2] | 0;
    $6 = $5;
    $call = _agfstout($4, $6) | 0;
    $e_0_in_ph = $call;
    $flag_0_ph = 0;
    label = 7;
    break;
   case 7:
    $e_0_in = $e_0_in_ph;
    label = 8;
    break;
   case 8:
    $tobool = ($e_0_in | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call7 = _agnxtout($4, $e_0_in) | 0;
    $head = $e_0_in + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    $call8 = _agfstin($4, $7) | 0;
    $call9 = _agnxtin($4, $call8) | 0;
    $cmp10 = ($call9 | 0) == 0;
    if ($cmp10) {
      label = 10;
      break;
    } else {
      $e_0_in = $call7;
      label = 8;
      break;
    }
   case 10:
    $8 = HEAP32[$head >> 2] | 0;
    $9 = $8;
    $call13 = _agusergraph($9) | 0;
    _agclose($call13);
    $e_0_in_ph = $call7;
    $flag_0_ph = 1;
    label = 7;
    break;
   case 11:
    $tobool15 = ($flag_0_ph | 0) == 0;
    if ($tobool15) {
      $meta_0_ph = $3;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 12:
    $proto = $g + 40 | 0;
    $10 = HEAP32[$proto >> 2] | 0;
    $tobool1746 = ($10 | 0) == 0;
    if ($tobool1746) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _agpopproto($g);
    $11 = HEAP32[$proto >> 2] | 0;
    $tobool17 = ($11 | 0) == 0;
    if ($tobool17) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 14:
    if ($cmp4) {
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $univ = $g + 16 | 0;
    $12 = HEAP32[$univ >> 2] | 0;
    $globattr = $12 + 12 | 0;
    $13 = HEAP32[$globattr >> 2] | 0;
    $dict = $13 + 4 | 0;
    $14 = HEAP32[$dict >> 2] | 0;
    $15 = $14;
    $call20 = _dtsize($15) | 0;
    $cmp2244 = ($call20 | 0) > 0;
    if ($cmp2244) {
      label = 16;
      break;
    } else {
      label = 18;
      break;
    }
   case 16:
    $attr = $g + 4 | 0;
    $i_045 = 0;
    label = 17;
    break;
   case 17:
    $16 = HEAP32[$attr >> 2] | 0;
    $arrayidx = $16 + ($i_045 << 2) | 0;
    $17 = HEAP32[$arrayidx >> 2] | 0;
    _agstrfree($17);
    $inc = $i_045 + 1 | 0;
    $cmp22 = ($inc | 0) < ($call20 | 0);
    if ($cmp22) {
      $i_045 = $inc;
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $attr27 = $g + 4 | 0;
    $18 = HEAP32[$attr27 >> 2] | 0;
    $tobool28 = ($18 | 0) == 0;
    if ($tobool28) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $19 = $18;
    _free($19);
    label = 20;
    break;
   case 20:
    $didset = $g + 8 | 0;
    $20 = HEAP32[$didset >> 2] | 0;
    $tobool32 = ($20 | 0) == 0;
    if ($tobool32) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    _free($20);
    label = 22;
    break;
   case 22:
    $root = $g + 32 | 0;
    $21 = HEAP32[$root >> 2] | 0;
    $cmp36 = ($21 | 0) == ($g | 0);
    if ($cmp36) {
      label = 23;
      break;
    } else {
      label = 28;
      break;
    }
   case 23:
    $22 = $g;
    $call38 = _agfstnode($22) | 0;
    $tobool4042 = ($call38 | 0) == 0;
    if ($tobool4042) {
      label = 25;
      break;
    } else {
      $n_0_in43 = $call38;
      label = 24;
      break;
    }
   case 24:
    $call42 = _agnxtnode($22, $n_0_in43) | 0;
    _agDELnode($22, $n_0_in43);
    $tobool40 = ($call42 | 0) == 0;
    if ($tobool40) {
      label = 25;
      break;
    } else {
      $n_0_in43 = $call42;
      label = 24;
      break;
    }
   case 25:
    if ($cmp4) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $meta_node47 = $g + 36 | 0;
    $23 = HEAP32[$meta_node47 >> 2] | 0;
    $graph48 = $23 + 20 | 0;
    $24 = HEAP32[$graph48 >> 2] | 0;
    _agclose($24);
    label = 27;
    break;
   case 27:
    _agfreedata($g);
    label = 30;
    break;
   case 28:
    if ($cmp4) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $meta_node52 = $g + 36 | 0;
    $25 = HEAP32[$meta_node52 >> 2] | 0;
    $26 = $25 | 0;
    _agdelete($meta_0_ph, $26);
    label = 30;
    break;
   case 30:
    $nodes = $g + 20 | 0;
    $27 = HEAP32[$nodes >> 2] | 0;
    $28 = $27;
    $call55 = _dtclose($28) | 0;
    $inedges = $g + 24 | 0;
    $29 = HEAP32[$inedges >> 2] | 0;
    $30 = $29;
    $call56 = _dtclose($30) | 0;
    $outedges = $g + 28 | 0;
    $31 = HEAP32[$outedges >> 2] | 0;
    $32 = $31;
    $call57 = _dtclose($32) | 0;
    $name = $g + 12 | 0;
    $33 = HEAP32[$name >> 2] | 0;
    _agstrfree($33);
    $34 = HEAP32[$0 >> 2] | 0;
    $35 = $34 | 15;
    HEAP32[$0 >> 2] = $35;
    $36 = $g | 0;
    _free($36);
    label = 31;
    break;
   case 31:
    return;
  }
}
function _agfreedata($g) {
  $g = $g | 0;
  var $univ = 0, $2 = 0;
  $univ = $g + 16 | 0;
  $2 = $g;
  _agFREEdict($2, HEAP32[(HEAP32[$univ >> 2] | 0) + 12 >> 2] | 0);
  _agFREEdict($2, HEAP32[(HEAP32[$univ >> 2] | 0) + 4 >> 2] | 0);
  _agFREEdict($2, HEAP32[(HEAP32[$univ >> 2] | 0) + 8 >> 2] | 0);
  _dtclose(HEAP32[HEAP32[$univ >> 2] >> 2] | 0);
  _free(HEAP32[$univ >> 2] | 0);
  return;
}
function _agdelete($g, $obj) {
  $g = $g | 0;
  $obj = $obj | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 1) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 3) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $3 = $g;
    $4 = $obj;
    _agDELnode($3, $4);
    label = 6;
    break;
   case 4:
    $5 = $g;
    $6 = $obj;
    _agDELedge($5, $6);
    label = 6;
    break;
   case 5:
    $7 = $obj;
    _agclose($7);
    label = 6;
    break;
   case 6:
    return;
  }
}
function _agcontains($g, $obj) {
  $g = $g | 0;
  $obj = $obj | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $id = 0, $3 = 0, $4 = 0, $5 = 0, $call = 0, $cmp = 0, $conv = 0, $inedges = 0, $6 = 0, $searchf = 0, $7 = 0, $call3 = 0, $cmp4 = 0, $conv5 = 0, $meta_node = 0, $8 = 0, $meta_node7 = 0, $9 = 0, $10 = 0, $call8 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 1) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 3) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 3:
    $id = $obj + 16 | 0;
    $3 = $id;
    $4 = HEAP32[$3 >> 2] | 0;
    $5 = $g;
    $call = _agidnode($5, $4) | 0;
    $cmp = ($call | 0) != 0;
    $conv = $cmp & 1;
    $retval_0 = $conv;
    label = 6;
    break;
   case 4:
    $inedges = $g + 24 | 0;
    $6 = HEAP32[$inedges >> 2] | 0;
    $searchf = $6 | 0;
    $7 = HEAP32[$searchf >> 2] | 0;
    $call3 = FUNCTION_TABLE_iiii[$7 & 1023]($6, $obj, 4) | 0;
    $cmp4 = ($call3 | 0) != 0;
    $conv5 = $cmp4 & 1;
    $retval_0 = $conv5;
    label = 6;
    break;
   case 5:
    $meta_node = $g + 36 | 0;
    $8 = HEAP32[$meta_node >> 2] | 0;
    $meta_node7 = $obj + 36 | 0;
    $9 = $meta_node7;
    $10 = HEAP32[$9 >> 2] | 0;
    $call8 = _reach($8, $10) | 0;
    $retval_0 = $call8;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _aginsert($g, $obj) {
  $g = $g | 0;
  $obj = $obj | 0;
  var $0 = 0, $1 = 0, $2 = 0, $bf_val_sext = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $obj;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 << 28;
    $bf_val_sext = $2 >> 28;
    if (($bf_val_sext | 0) == 1) {
      label = 3;
      break;
    } else if (($bf_val_sext | 0) == 2) {
      label = 4;
      break;
    } else if (($bf_val_sext | 0) == 3) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $3 = $g;
    $4 = $obj;
    _agINSnode($3, $4);
    label = 6;
    break;
   case 4:
    $5 = $g;
    $6 = $obj;
    _agINSedge($5, $6);
    label = 6;
    break;
   case 5:
    $7 = $obj;
    _agINSgraph($g, $7);
    label = 6;
    break;
   case 6:
    return;
  }
}
function _agnnodes($g) {
  $g = $g | 0;
  return _dtsize(HEAP32[$g + 20 >> 2] | 0) | 0;
}
function _agnedges($g) {
  $g = $g | 0;
  return _dtsize(HEAP32[$g + 28 >> 2] | 0) | 0;
}
function _reach0($m, $from, $to) {
  $m = $m | 0;
  $from = $from | 0;
  $to = $to | 0;
  var $cmp = 0, $graph = 0, $0 = 0, $root = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $call = 0, $tobool = 0, $searchf = 0, $5 = 0, $6 = 0, $call3 = 0, $7 = 0, $8 = 0, $call5 = 0, $tobool616 = 0, $e_0_in17 = 0, $9 = 0, $head = 0, $10 = 0, $11 = 0, $call8 = 0, $cmp9 = 0, $12 = 0, $13 = 0, $call11 = 0, $tobool12 = 0, $14 = 0, $15 = 0, $call16 = 0, $tobool6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($from | 0) == ($to | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $graph = $from + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $root = $0 + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $2 = $1;
    $3 = $from;
    $4 = $to;
    $call = _agfindedge($2, $3, $4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 8;
      break;
    }
   case 4:
    $searchf = $m | 0;
    $5 = HEAP32[$searchf >> 2] | 0;
    $6 = $from | 0;
    $call3 = FUNCTION_TABLE_iiii[$5 & 1023]($m, $6, 1) | 0;
    $7 = HEAP32[$graph >> 2] | 0;
    $8 = $7;
    $call5 = _agfstout($8, $3) | 0;
    $tobool616 = ($call5 | 0) == 0;
    if ($tobool616) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      $e_0_in17 = $call5;
      label = 5;
      break;
    }
   case 5:
    $9 = HEAP32[$searchf >> 2] | 0;
    $head = $e_0_in17 + 12 | 0;
    $10 = HEAP32[$head >> 2] | 0;
    $11 = $10 | 0;
    $call8 = FUNCTION_TABLE_iiii[$9 & 1023]($m, $11, 4) | 0;
    $cmp9 = ($call8 | 0) == 0;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $12 = HEAP32[$head >> 2] | 0;
    $13 = $12;
    $call11 = _reach0($m, $13, $to) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 8;
      break;
    }
   case 7:
    $14 = HEAP32[$graph >> 2] | 0;
    $15 = $14;
    $call16 = _agnxtout($15, $e_0_in17) | 0;
    $tobool6 = ($call16 | 0) == 0;
    if ($tobool6) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      $e_0_in17 = $call16;
      label = 5;
      break;
    }
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _agnewdata() {
  var $call = 0, $0 = 0, $1 = 0, $2 = 0, $call1 = 0, $3 = 0, $node_dict = 0, $call2 = 0, $4 = 0, $globattr = 0, $5 = 0, $call3 = 0, $6 = 0, $nodeattr = 0, $7 = 0, $call4 = 0, $8 = 0, $edgeattr = 0, $9 = 0, $10 = 0, $tobool = 0, $11 = 0, $univ = 0, $12 = 0, $globattr6 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $univ8 = 0, $17 = 0, $nodeattr9 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $univ11 = 0, $22 = 0, $edgeattr12 = 0, $23 = 0, $24 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _calloc(1, 24) | 0;
    $0 = $call;
    $1 = HEAP32[41974] | 0;
    $2 = $1;
    $call1 = _dtopen(89512, $2) | 0;
    $3 = $call1;
    $node_dict = $call;
    HEAP32[$node_dict >> 2] = $3;
    $call2 = _agNEWdict(129568) | 0;
    $4 = $call2;
    $globattr = $call + 12 | 0;
    $5 = $globattr;
    HEAP32[$5 >> 2] = $4;
    $call3 = _agNEWdict(118008) | 0;
    $6 = $call3;
    $nodeattr = $call + 4 | 0;
    $7 = $nodeattr;
    HEAP32[$7 >> 2] = $6;
    $call4 = _agNEWdict(112624) | 0;
    $8 = $call4;
    $edgeattr = $call + 8 | 0;
    $9 = $edgeattr;
    HEAP32[$9 >> 2] = $8;
    $10 = HEAP32[42137] | 0;
    $tobool = ($10 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $11 = HEAP32[$5 >> 2] | 0;
    $univ = $10 + 16 | 0;
    $12 = HEAP32[$univ >> 2] | 0;
    $globattr6 = $12 + 12 | 0;
    $13 = HEAP32[$globattr6 >> 2] | 0;
    $14 = $11;
    _agcopydict($14, $13);
    $15 = HEAP32[$7 >> 2] | 0;
    $16 = HEAP32[42137] | 0;
    $univ8 = $16 + 16 | 0;
    $17 = HEAP32[$univ8 >> 2] | 0;
    $nodeattr9 = $17 + 4 | 0;
    $18 = HEAP32[$nodeattr9 >> 2] | 0;
    $19 = $15;
    _agcopydict($19, $18);
    $20 = HEAP32[$9 >> 2] | 0;
    $21 = HEAP32[42137] | 0;
    $univ11 = $21 + 16 | 0;
    $22 = HEAP32[$univ11 >> 2] | 0;
    $edgeattr12 = $22 + 8 | 0;
    $23 = HEAP32[$edgeattr12 >> 2] | 0;
    $24 = $20;
    _agcopydict($24, $23);
    label = 4;
    break;
   case 4:
    return $0 | 0;
  }
  return 0;
}
function _agread($fp) {
  $fp = $fp | 0;
  _aglexinit($fp, 0);
  _agparse();
  return HEAP32[42138] | 0;
}
function _agmemread($cp) {
  $cp = $cp | 0;
  var $0 = 0;
  $0 = HEAP32[42142] | 0;
  HEAP32[42142] = 676;
  _aglexinit($cp, 0);
  _agparse();
  HEAP32[42142] = $0;
  return HEAP32[42138] | 0;
}
function _memgets($ubuf, $n, $mbuf) {
  $ubuf = $ubuf | 0;
  $n = $n | 0;
  $mbuf = $mbuf | 0;
  var $tobool = 0, $0 = 0, $sub = 0, $to_0 = 0, $i_0 = 0, $cmp = 0, $1 = 0, $2 = 0, $cmp1 = 0, $tobool4 = 0, $incdec_ptr = 0, $cmp9 = 0, $incdec_ptr12 = 0, $3 = 0, $incdec_ptr13 = 0, $inc = 0, $to_1 = 0, $clp_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($n | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $0 = $mbuf;
    HEAP32[2808] = $0;
    label = 4;
    break;
   case 4:
    $sub = $n - 1 | 0;
    $i_0 = 0;
    $to_0 = $ubuf;
    label = 5;
    break;
   case 5:
    $cmp = ($i_0 | 0) < ($sub | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      $clp_0 = $ubuf;
      $to_1 = $to_0;
      label = 11;
      break;
    }
   case 6:
    $1 = HEAP32[2808] | 0;
    $2 = HEAP8[$1] | 0;
    $cmp1 = $2 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $tobool4 = ($i_0 | 0) == 0;
    if ($tobool4) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $incdec_ptr = $to_0 + 1 | 0;
    HEAP8[$to_0] = 10;
    $clp_0 = $ubuf;
    $to_1 = $incdec_ptr;
    label = 11;
    break;
   case 9:
    HEAP32[2808] = 0;
    $clp_0 = 0;
    $to_1 = $to_0;
    label = 11;
    break;
   case 10:
    $cmp9 = $2 << 24 >> 24 == 10;
    $incdec_ptr12 = $1 + 1 | 0;
    HEAP32[2808] = $incdec_ptr12;
    $3 = HEAP8[$1] | 0;
    $incdec_ptr13 = $to_0 + 1 | 0;
    HEAP8[$to_0] = $3;
    $inc = $i_0 + 1 | 0;
    if ($cmp9) {
      $clp_0 = $ubuf;
      $to_1 = $incdec_ptr13;
      label = 11;
      break;
    } else {
      $i_0 = $inc;
      $to_0 = $incdec_ptr13;
      label = 5;
      break;
    }
   case 11:
    HEAP8[$to_1] = 0;
    return $clp_0 | 0;
  }
  return 0;
}
function _agstrcanon($arg, $buf) {
  $arg = $arg | 0;
  $buf = $buf | 0;
  var $call = 0, $tobool = 0, $p_09 = 0, $0 = 0, $tobool110 = 0, $1 = 0, $p_012 = 0, $s_011 = 0, $incdec_ptr2 = 0, $p_0 = 0, $2 = 0, $tobool1 = 0, $p_0_lcssa = 0, $buf_pn_lcssa = 0, $incdec_ptr4 = 0, $call5 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _aghtmlstr($arg) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP8[$buf] = 60;
    $p_09 = $buf + 1 | 0;
    $0 = HEAP8[$arg] | 0;
    $tobool110 = $0 << 24 >> 24 == 0;
    if ($tobool110) {
      $buf_pn_lcssa = $buf;
      $p_0_lcssa = $p_09;
      label = 5;
      break;
    } else {
      $s_011 = $arg;
      $p_012 = $p_09;
      $1 = $0;
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr2 = $s_011 + 1 | 0;
    HEAP8[$p_012] = $1;
    $p_0 = $p_012 + 1 | 0;
    $2 = HEAP8[$incdec_ptr2] | 0;
    $tobool1 = $2 << 24 >> 24 == 0;
    if ($tobool1) {
      $buf_pn_lcssa = $p_012;
      $p_0_lcssa = $p_0;
      label = 5;
      break;
    } else {
      $s_011 = $incdec_ptr2;
      $p_012 = $p_0;
      $1 = $2;
      label = 4;
      break;
    }
   case 5:
    $incdec_ptr4 = $buf_pn_lcssa + 2 | 0;
    HEAP8[$p_0_lcssa] = 62;
    HEAP8[$incdec_ptr4] = 0;
    $retval_0 = $buf;
    label = 7;
    break;
   case 6:
    $call5 = __agstrcanon($arg, $buf) | 0;
    $retval_0 = $call5;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _agsetiodisc($myfgets, $myfwrite, $myferror) {
  $myfgets = $myfgets | 0;
  $myfwrite = $myfwrite | 0;
  $myferror = $myferror | 0;
  var $tobool = 0, $tobool1 = 0, $tobool4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($myfgets | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP32[42142] = $myfgets;
    label = 4;
    break;
   case 4:
    $tobool1 = ($myfwrite | 0) == 0;
    if ($tobool1) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP32[42143] = $myfwrite;
    label = 6;
    break;
   case 6:
    $tobool4 = ($myferror | 0) == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    HEAP32[42144] = $myferror;
    label = 8;
    break;
   case 8:
    return;
  }
}
function __agstrcanon($arg, $buf) {
  $arg = $arg | 0;
  $buf = $buf | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $incdec_ptr = 0, $incdec_ptr3 = 0, $1 = 0, $call = 0, $tobool22 = 0, $s_0_ph = 0, $uc_0_ph = 0, $p_0_ph = 0, $cnt_0_ph = 0, $has_special_0_ph = 0, $backslash_pending_0_ph = 0, $s_0 = 0, $uc_0 = 0, $p_0 = 0, $cnt_0 = 0, $has_special_0 = 0, $incdec_ptr8 = 0, $conv4 = 0, $call10 = 0, $notlhs = 0, $notrhs = 0, $or_cond_not = 0, $cmp18 = 0, $or_cond37 = 0, $brmerge = 0, $_mux = 0, $call23 = 0, $tobool24 = 0, $_has_special_0 = 0, $p_1 = 0, $has_special_1 = 0, $incdec_ptr29 = 0, $incdec_ptr30 = 0, $2 = 0, $inc = 0, $conv31 = 0, $tobool32 = 0, $tobool32_not = 0, $or_cond38 = 0, $call36 = 0, $tobool37 = 0, $3 = 0, $conv40 = 0, $call41 = 0, $tobool42 = 0, $4 = 0, $cmp46 = 0, $call49 = 0, $tobool50 = 0, $call53 = 0, $tobool54 = 0, $incdec_ptr56 = 0, $incdec_ptr57 = 0, $rem36 = 0, $cmp62 = 0, $5 = 0, $call66 = 0, $tobool67 = 0, $6 = 0, $conv70 = 0, $call71 = 0, $tobool72 = 0, $7 = 0, $cmp76 = 0, $call79 = 0, $tobool80 = 0, $call83 = 0, $tobool84 = 0, $incdec_ptr86 = 0, $incdec_ptr87 = 0, $incdec_ptr92 = 0, $tobool93 = 0, $call96 = 0, $cmp97 = 0, $buf_arg = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($arg | 0) == 0;
    if ($cmp) {
      $retval_0 = 142720;
      label = 27;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$arg] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    if ($cmp1) {
      $retval_0 = 142720;
      label = 27;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $buf + 1 | 0;
    HEAP8[$buf] = 34;
    $incdec_ptr3 = $arg + 1 | 0;
    $1 = HEAP8[$arg] | 0;
    $call = __is_number_char($1) | 0;
    $tobool22 = ($call | 0) == 0;
    $backslash_pending_0_ph = 1;
    $has_special_0_ph = 0;
    $cnt_0_ph = 0;
    $p_0_ph = $incdec_ptr;
    $uc_0_ph = $1;
    $s_0_ph = $incdec_ptr3;
    label = 5;
    break;
   case 5:
    $has_special_0 = $has_special_0_ph;
    $cnt_0 = $cnt_0_ph;
    $p_0 = $p_0_ph;
    $uc_0 = $uc_0_ph;
    $s_0 = $s_0_ph;
    label = 6;
    break;
   case 6:
    if (($uc_0 << 24 >> 24 | 0) == 34) {
      label = 7;
      break;
    } else if (($uc_0 << 24 >> 24 | 0) == 0) {
      label = 25;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $incdec_ptr8 = $p_0 + 1 | 0;
    HEAP8[$p_0] = 92;
    $has_special_1 = 1;
    $p_1 = $incdec_ptr8;
    label = 10;
    break;
   case 8:
    $conv4 = $uc_0 & 255;
    $call10 = _isalnum($conv4 | 0) | 0;
    $notlhs = ($call10 | 0) == 0;
    $notrhs = $uc_0 << 24 >> 24 != 95;
    $or_cond_not = $notrhs & $notlhs;
    $cmp18 = $uc_0 << 24 >> 24 > -1;
    $or_cond37 = $or_cond_not & $cmp18;
    $brmerge = $or_cond37 | $tobool22;
    $_mux = $or_cond37 ? 1 : $has_special_0;
    if ($brmerge) {
      $has_special_1 = $_mux;
      $p_1 = $p_0;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call23 = __is_number_char($uc_0) | 0;
    $tobool24 = ($call23 | 0) == 0;
    $_has_special_0 = $tobool24 ? 1 : $has_special_0;
    $has_special_1 = $_has_special_0;
    $p_1 = $p_0;
    label = 10;
    break;
   case 10:
    $incdec_ptr29 = $p_1 + 1 | 0;
    HEAP8[$p_1] = $uc_0;
    $incdec_ptr30 = $s_0 + 1 | 0;
    $2 = HEAP8[$s_0] | 0;
    $inc = $cnt_0 + 1 | 0;
    $conv31 = $2 & 255;
    $tobool32 = $2 << 24 >> 24 != 0;
    $tobool32_not = $tobool32 ^ 1;
    $or_cond38 = $backslash_pending_0_ph | $tobool32_not;
    if ($or_cond38) {
      label = 17;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call36 = __is_number_char($uc_0) | 0;
    $tobool37 = ($call36 | 0) == 0;
    if ($tobool37) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $3 = HEAP8[$p_1] | 0;
    $conv40 = $3 << 24 >> 24;
    $call41 = _isalpha($conv40 | 0) | 0;
    $tobool42 = ($call41 | 0) == 0;
    if ($tobool42) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $4 = HEAP8[$p_1] | 0;
    $cmp46 = $4 << 24 >> 24 == 92;
    if ($cmp46) {
      label = 14;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $call49 = __is_number_char($2) | 0;
    $tobool50 = ($call49 | 0) == 0;
    if ($tobool50) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 15:
    $call53 = _isalpha($conv31 | 0) | 0;
    $tobool54 = ($call53 | 0) == 0;
    if ($tobool54) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $incdec_ptr56 = $p_1 + 2 | 0;
    HEAP8[$incdec_ptr29] = 92;
    $incdec_ptr57 = $p_1 + 3 | 0;
    HEAP8[$incdec_ptr56] = 10;
    $backslash_pending_0_ph = 1;
    $has_special_0_ph = 1;
    $cnt_0_ph = $inc;
    $p_0_ph = $incdec_ptr57;
    $uc_0_ph = $2;
    $s_0_ph = $incdec_ptr30;
    label = 5;
    break;
   case 17:
    if ($tobool32) {
      label = 18;
      break;
    } else {
      $has_special_0 = $has_special_1;
      $cnt_0 = $inc;
      $p_0 = $incdec_ptr29;
      $uc_0 = 0;
      $s_0 = $incdec_ptr30;
      label = 6;
      break;
    }
   case 18:
    $rem36 = $inc & 127;
    $cmp62 = ($rem36 | 0) == 0;
    if ($cmp62) {
      label = 19;
      break;
    } else {
      $has_special_0 = $has_special_1;
      $cnt_0 = $inc;
      $p_0 = $incdec_ptr29;
      $uc_0 = $2;
      $s_0 = $incdec_ptr30;
      label = 6;
      break;
    }
   case 19:
    $5 = HEAP8[$p_1] | 0;
    $call66 = __is_number_char($5) | 0;
    $tobool67 = ($call66 | 0) == 0;
    if ($tobool67) {
      label = 20;
      break;
    } else {
      label = 22;
      break;
    }
   case 20:
    $6 = HEAP8[$p_1] | 0;
    $conv70 = $6 << 24 >> 24;
    $call71 = _isalpha($conv70 | 0) | 0;
    $tobool72 = ($call71 | 0) == 0;
    if ($tobool72) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $7 = HEAP8[$p_1] | 0;
    $cmp76 = $7 << 24 >> 24 == 92;
    if ($cmp76) {
      label = 22;
      break;
    } else {
      label = 24;
      break;
    }
   case 22:
    $call79 = __is_number_char($2) | 0;
    $tobool80 = ($call79 | 0) == 0;
    if ($tobool80) {
      label = 23;
      break;
    } else {
      $backslash_pending_0_ph = 0;
      $has_special_0_ph = $has_special_1;
      $cnt_0_ph = $inc;
      $p_0_ph = $incdec_ptr29;
      $uc_0_ph = $2;
      $s_0_ph = $incdec_ptr30;
      label = 5;
      break;
    }
   case 23:
    $call83 = _isalpha($conv31 | 0) | 0;
    $tobool84 = ($call83 | 0) == 0;
    if ($tobool84) {
      label = 24;
      break;
    } else {
      $backslash_pending_0_ph = 0;
      $has_special_0_ph = $has_special_1;
      $cnt_0_ph = $inc;
      $p_0_ph = $incdec_ptr29;
      $uc_0_ph = $2;
      $s_0_ph = $incdec_ptr30;
      label = 5;
      break;
    }
   case 24:
    $incdec_ptr86 = $p_1 + 2 | 0;
    HEAP8[$incdec_ptr29] = 92;
    $incdec_ptr87 = $p_1 + 3 | 0;
    HEAP8[$incdec_ptr86] = 10;
    $has_special_0 = 1;
    $cnt_0 = $inc;
    $p_0 = $incdec_ptr87;
    $uc_0 = $2;
    $s_0 = $incdec_ptr30;
    label = 6;
    break;
   case 25:
    $incdec_ptr92 = $p_0 + 1 | 0;
    HEAP8[$p_0] = 34;
    HEAP8[$incdec_ptr92] = 0;
    $tobool93 = ($has_special_0 | 0) == 0;
    if ($tobool93) {
      label = 26;
      break;
    } else {
      $retval_0 = $buf;
      label = 27;
      break;
    }
   case 26:
    $call96 = _agtoken($arg) | 0;
    $cmp97 = ($call96 | 0) > -1;
    $buf_arg = $cmp97 ? $buf : $arg;
    $retval_0 = $buf_arg;
    label = 27;
    break;
   case 27:
    return $retval_0 | 0;
  }
  return 0;
}
function _agputs($s, $fp) {
  $s = $s | 0;
  $fp = $fp | 0;
  var $call = 0;
  $call = _strlen($s | 0) | 0;
  return ((FUNCTION_TABLE_iiiii[HEAP32[42143] & 1023]($s, 1, $call, $fp) | 0) == ($call | 0) ? 1 : -1) | 0;
}
function _agputc($c, $fp) {
  $c = $c | 0;
  $fp = $fp | 0;
  var $cc = 0, $c_ = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  $cc = __stackBase__ | 0;
  HEAP8[$cc] = $c & 255;
  $c_ = (FUNCTION_TABLE_iiiii[HEAP32[42143] & 1023]($cc, 1, 1, $fp) | 0) == 1 ? $c : -1;
  STACKTOP = __stackBase__;
  return $c_ | 0;
}
function _agcanonical($str) {
  $str = $str | 0;
  return _agstrcanon($str, _getoutputbuffer($str) | 0) | 0;
}
function _getoutputbuffer($str) {
  $str = $str | 0;
  var $call = 0, $mul = 0, $add = 0, $cmp = 0, $add_ = 0, $0 = 0, $cmp4 = 0, $1 = 0, $tobool = 0, $call6 = 0, $call7 = 0, $storemerge = 0, $2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _strlen($str | 0) | 0;
    $mul = $call << 1;
    $add = $mul + 2 | 0;
    $cmp = $add >>> 0 > 1024;
    $add_ = $cmp ? $add : 1024;
    $0 = HEAP32[4072] | 0;
    $cmp4 = ($add_ | 0) > ($0 | 0);
    if ($cmp4) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $1 = HEAP32[4070] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call6 = _realloc($1, $add_) | 0;
    $storemerge = $call6;
    label = 6;
    break;
   case 5:
    $call7 = _malloc($add_) | 0;
    $storemerge = $call7;
    label = 6;
    break;
   case 6:
    HEAP32[4070] = $storemerge;
    HEAP32[4072] = $add_;
    label = 7;
    break;
   case 7:
    $2 = HEAP32[4070] | 0;
    return $2 | 0;
  }
  return 0;
}
function _agwrnode($g, $fp, $n, $full, $indent) {
  $g = $g | 0;
  $fp = $fp | 0;
  $n = $n | 0;
  $full = $full | 0;
  $indent = $indent | 0;
  var $nprint = 0, $graph = 0, $0 = 0, $univ = 0, $1 = 0, $nodeattr = 0, $2 = 0, $tobool = 0, $dict = 0, $3 = 0, $call26 = 0, $cmp28 = 0, $list = 0, $4 = 0, $name19 = 0, $proto = 0, $i_030 = 0, $didwrite_029 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $printed = 0, $7 = 0, $cmp1 = 0, $name = 0, $8 = 0, $call4 = 0, $9 = 0, $cmp6 = 0, $value = 0, $10 = 0, $11 = 0, $n9 = 0, $12 = 0, $13 = 0, $14 = 0, $call11 = 0, $defval_0 = 0, $call13 = 0, $tobool14 = 0, $cmp16 = 0, $15 = 0, $call20 = 0, $call21 = 0, $didwrite_1 = 0, $16 = 0, $didwrite_2 = 0, $inc = 0, $17 = 0, $call = 0, $cmp = 0, $tobool25 = 0, $18 = 0, $cmp27 = 0, $cond = 0, $call29 = 0, $call32 = 0, $cmp33 = 0, $call35 = 0, $cmp36 = 0, $name39 = 0, $19 = 0, $call40 = 0, $call41 = 0, $call42 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nprint = __stackBase__ | 0;
    HEAP32[$nprint >> 2] = 0;
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $univ = $0 + 16 | 0;
    $1 = HEAP32[$univ >> 2] | 0;
    $nodeattr = $1 + 4 | 0;
    $2 = HEAP32[$nodeattr >> 2] | 0;
    $tobool = ($full | 0) == 0;
    if ($tobool) {
      label = 16;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $dict = $2 + 4 | 0;
    $3 = HEAP32[$dict >> 2] | 0;
    $call26 = _dtsize($3) | 0;
    $cmp28 = ($call26 | 0) > 0;
    if ($cmp28) {
      label = 4;
      break;
    } else {
      label = 16;
      break;
    }
   case 4:
    $list = $2 + 8 | 0;
    $4 = $n | 0;
    $name19 = $n + 12 | 0;
    $proto = $g + 40 | 0;
    $didwrite_029 = 0;
    $i_030 = 0;
    label = 5;
    break;
   case 5:
    $5 = HEAP32[$list >> 2] | 0;
    $arrayidx = $5 + ($i_030 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    $printed = $6 + 12 | 0;
    $7 = HEAP8[$printed] | 0;
    $cmp1 = $7 << 24 >> 24 == 0;
    if ($cmp1) {
      $didwrite_2 = $didwrite_029;
      label = 13;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $name = $6 | 0;
    $8 = HEAP32[$name >> 2] | 0;
    $call4 = _agget($4, $8) | 0;
    $9 = HEAP32[$graph >> 2] | 0;
    $cmp6 = ($9 | 0) == ($g | 0);
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $value = $6 + 4 | 0;
    $10 = HEAP32[$value >> 2] | 0;
    $defval_0 = $10;
    label = 9;
    break;
   case 8:
    $11 = HEAP32[$proto >> 2] | 0;
    $n9 = $11 | 0;
    $12 = HEAP32[$n9 >> 2] | 0;
    $13 = $12 | 0;
    $14 = HEAP32[$name >> 2] | 0;
    $call11 = _agget($13, $14) | 0;
    $defval_0 = $call11;
    label = 9;
    break;
   case 9:
    $call13 = _strcmp($defval_0 | 0, $call4 | 0) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      $didwrite_2 = $didwrite_029;
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $cmp16 = ($didwrite_029 | 0) == 0;
    if ($cmp16) {
      label = 11;
      break;
    } else {
      $didwrite_1 = $didwrite_029;
      label = 12;
      break;
    }
   case 11:
    _tabover($fp, $indent);
    $15 = HEAP32[$name19 >> 2] | 0;
    $call20 = _agcanonical($15) | 0;
    $call21 = _agputs($call20, $fp) | 0;
    $didwrite_1 = 1;
    label = 12;
    break;
   case 12:
    $16 = HEAP32[$name >> 2] | 0;
    _writeattr($fp, $nprint, $16, $call4);
    $didwrite_2 = $didwrite_1;
    label = 13;
    break;
   case 13:
    $inc = $i_030 + 1 | 0;
    $17 = HEAP32[$dict >> 2] | 0;
    $call = _dtsize($17) | 0;
    $cmp = ($inc | 0) < ($call | 0);
    if ($cmp) {
      $didwrite_029 = $didwrite_2;
      $i_030 = $inc;
      label = 5;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $tobool25 = ($didwrite_2 | 0) == 0;
    if ($tobool25) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $18 = HEAP32[$nprint >> 2] | 0;
    $cmp27 = ($18 | 0) > 0;
    $cond = $cmp27 ? 125344 : 154784;
    $call29 = _agputs($cond, $fp) | 0;
    label = 19;
    break;
   case 16:
    $call32 = _agfstout($g, $n) | 0;
    $cmp33 = ($call32 | 0) == 0;
    if ($cmp33) {
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 17:
    $call35 = _agfstin($g, $n) | 0;
    $cmp36 = ($call35 | 0) == 0;
    if ($cmp36) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    _tabover($fp, $indent);
    $name39 = $n + 12 | 0;
    $19 = HEAP32[$name39 >> 2] | 0;
    $call40 = _agcanonical($19) | 0;
    $call41 = _agputs($call40, $fp) | 0;
    $call42 = _agputs(154784, $fp) | 0;
    label = 19;
    break;
   case 19:
    STACKTOP = __stackBase__;
    return;
  }
}
function _tabover($fp, $tab) {
  $fp = $fp | 0;
  $tab = $tab | 0;
  var $tobool1 = 0, $tab_addr_02 = 0, $dec = 0, $call = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool1 = ($tab | 0) == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      $tab_addr_02 = $tab;
      label = 3;
      break;
    }
   case 3:
    $dec = $tab_addr_02 - 1 | 0;
    $call = _agputc(9, $fp) | 0;
    $tobool = ($dec | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $tab_addr_02 = $dec;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _writeattr($fp, $npp, $name, $val) {
  $fp = $fp | 0;
  $npp = $npp | 0;
  $name = $name | 0;
  $val = $val | 0;
  var $0 = 0;
  $0 = HEAP32[$npp >> 2] | 0;
  HEAP32[$npp >> 2] = $0 + 1 | 0;
  _agputs(($0 | 0) > 0 ? 145752 : 151712, $fp);
  _agputs(_agcanonical($name) | 0, $fp);
  _agputc(61, $fp);
  _agputs(_agcanonical($val) | 0, $fp);
  return;
}
function _agwredge($g, $fp, $e, $list_all) {
  $g = $g | 0;
  $fp = $fp | 0;
  $e = $e | 0;
  $list_all = $list_all | 0;
  var $nprint = 0, $tail = 0, $0 = 0, $graph = 0, $1 = 0, $univ = 0, $2 = 0, $edgeattr = 0, $3 = 0, $attr = 0, $4 = 0, $tobool = 0, $arrayidx = 0, $5 = 0, $arrayidx3 = 0, $6 = 0, $hport_0 = 0, $tport_0 = 0, $7 = 0, $name = 0, $8 = 0, $9 = 0, $10 = 0, $and = 0, $tobool5 = 0, $cond = 0, $call = 0, $head = 0, $11 = 0, $name6 = 0, $12 = 0, $tobool7 = 0, $dict = 0, $13 = 0, $call925 = 0, $cmp26 = 0, $list = 0, $14 = 0, $15 = 0, $root = 0, $proto = 0, $i_027 = 0, $16 = 0, $arrayidx10 = 0, $17 = 0, $printed = 0, $18 = 0, $cmp11 = 0, $cmp13 = 0, $19 = 0, $_mask = 0, $cmp17 = 0, $name21 = 0, $20 = 0, $call22 = 0, $21 = 0, $cmp23 = 0, $value = 0, $22 = 0, $23 = 0, $e27 = 0, $24 = 0, $25 = 0, $26 = 0, $call29 = 0, $defval_0 = 0, $call31 = 0, $tobool32 = 0, $27 = 0, $inc = 0, $28 = 0, $call9 = 0, $cmp = 0, $29 = 0, $cmp37 = 0, $cond39 = 0, $call40 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nprint = __stackBase__ | 0;
    HEAP32[$nprint >> 2] = 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $univ = $1 + 16 | 0;
    $2 = HEAP32[$univ >> 2] | 0;
    $edgeattr = $2 + 8 | 0;
    $3 = HEAP32[$edgeattr >> 2] | 0;
    $attr = $e + 4 | 0;
    $4 = HEAP32[$attr >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      $tport_0 = 127144;
      $hport_0 = 127144;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $4 + 4 | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $arrayidx3 = $4 + 8 | 0;
    $6 = HEAP32[$arrayidx3 >> 2] | 0;
    $tport_0 = $5;
    $hport_0 = $6;
    label = 4;
    break;
   case 4:
    $7 = HEAP32[$tail >> 2] | 0;
    $name = $7 + 12 | 0;
    $8 = HEAP32[$name >> 2] | 0;
    _writenodeandport2898($fp, $8, $tport_0);
    $9 = $g;
    $10 = HEAP32[$9 >> 2] | 0;
    $and = $10 & 16;
    $tobool5 = ($and | 0) != 0;
    $cond = $tobool5 ? 117392 : 112128;
    $call = _agputs($cond, $fp) | 0;
    $head = $e + 12 | 0;
    $11 = HEAP32[$head >> 2] | 0;
    $name6 = $11 + 12 | 0;
    $12 = HEAP32[$name6 >> 2] | 0;
    _writenodeandport2898($fp, $12, $hport_0);
    $tobool7 = ($list_all | 0) == 0;
    if ($tobool7) {
      label = 16;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $dict = $3 + 4 | 0;
    $13 = HEAP32[$dict >> 2] | 0;
    $call925 = _dtsize($13) | 0;
    $cmp26 = ($call925 | 0) > 0;
    if ($cmp26) {
      label = 6;
      break;
    } else {
      label = 16;
      break;
    }
   case 6:
    $list = $3 + 8 | 0;
    $14 = $e;
    $15 = $e | 0;
    $root = $g + 32 | 0;
    $proto = $g + 40 | 0;
    $i_027 = 0;
    label = 7;
    break;
   case 7:
    $16 = HEAP32[$list >> 2] | 0;
    $arrayidx10 = $16 + ($i_027 << 2) | 0;
    $17 = HEAP32[$arrayidx10 >> 2] | 0;
    $printed = $17 + 12 | 0;
    $18 = HEAP8[$printed] | 0;
    $cmp11 = $18 << 24 >> 24 == 0;
    if ($cmp11) {
      label = 15;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $cmp13 = ($i_027 | 0) == 0;
    if ($cmp13) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $19 = HEAP32[$14 >> 2] | 0;
    $_mask = $19 & 240;
    $cmp17 = ($_mask | 0) == 32;
    if ($cmp17) {
      label = 10;
      break;
    } else {
      label = 15;
      break;
    }
   case 10:
    $name21 = $17 | 0;
    $20 = HEAP32[$name21 >> 2] | 0;
    $call22 = _agget($15, $20) | 0;
    $21 = HEAP32[$root >> 2] | 0;
    $cmp23 = ($21 | 0) == ($g | 0);
    if ($cmp23) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $value = $17 + 4 | 0;
    $22 = HEAP32[$value >> 2] | 0;
    $defval_0 = $22;
    label = 13;
    break;
   case 12:
    $23 = HEAP32[$proto >> 2] | 0;
    $e27 = $23 + 4 | 0;
    $24 = HEAP32[$e27 >> 2] | 0;
    $25 = $24 | 0;
    $26 = HEAP32[$name21 >> 2] | 0;
    $call29 = _agget($25, $26) | 0;
    $defval_0 = $call29;
    label = 13;
    break;
   case 13:
    $call31 = _strcmp($defval_0 | 0, $call22 | 0) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $27 = HEAP32[$name21 >> 2] | 0;
    _writeattr($fp, $nprint, $27, $call22);
    label = 15;
    break;
   case 15:
    $inc = $i_027 + 1 | 0;
    $28 = HEAP32[$dict >> 2] | 0;
    $call9 = _dtsize($28) | 0;
    $cmp = ($inc | 0) < ($call9 | 0);
    if ($cmp) {
      $i_027 = $inc;
      label = 7;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $29 = HEAP32[$nprint >> 2] | 0;
    $cmp37 = ($29 | 0) > 0;
    $cond39 = $cmp37 ? 125344 : 154784;
    $call40 = _agputs($cond39, $fp) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _writenodeandport2898($fp, $node, $port) {
  $fp = $fp | 0;
  $node = $node | 0;
  $port = $port | 0;
  var $call = 0, $call1 = 0, $tobool = 0, $0 = 0, $tobool2 = 0, $call3 = 0, $tobool4 = 0, $call6 = 0, $call7 = 0, $call8 = 0, $call9 = 0, $call10 = 0, $tobool11 = 0, $call13 = 0, $call14 = 0, $call15 = 0, $call16 = 0, $call17 = 0, $add_ptr = 0, $call19 = 0, $call20 = 0, $call21 = 0, $call23 = 0, $call24 = 0, $call25 = 0, $call26 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agcanonical($node) | 0;
    $call1 = _agputs($call, $fp) | 0;
    $tobool = ($port | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$port] | 0;
    $tobool2 = $0 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 9;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call3 = _aghtmlstr($port) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call6 = _agputc(58, $fp) | 0;
    $call7 = _getoutputbuffer($port) | 0;
    $call8 = _agstrcanon($port, $call7) | 0;
    $call9 = _agputs($call8, $fp) | 0;
    label = 9;
    break;
   case 6:
    $call10 = _strchr($port | 0, 58) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    HEAP8[$call10] = 0;
    $call13 = _agputc(58, $fp) | 0;
    $call14 = _getoutputbuffer($port) | 0;
    $call15 = __agstrcanon($port, $call14) | 0;
    $call16 = _agputs($call15, $fp) | 0;
    $call17 = _agputc(58, $fp) | 0;
    $add_ptr = $call10 + 1 | 0;
    $call19 = _getoutputbuffer($add_ptr) | 0;
    $call20 = __agstrcanon($add_ptr, $call19) | 0;
    $call21 = _agputs($call20, $fp) | 0;
    HEAP8[$call10] = 58;
    label = 9;
    break;
   case 8:
    $call23 = _agputc(58, $fp) | 0;
    $call24 = _getoutputbuffer($port) | 0;
    $call25 = __agstrcanon($port, $call24) | 0;
    $call26 = _agputs($call25, $fp) | 0;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _agwrite($g, $fp) {
  $g = $g | 0;
  $fp = $fp | 0;
  var $0 = 0, $cmp = 0, $1 = 0, $cmp1 = 0, $2 = 0, $3 = 0, $and = 0, $tobool = 0, $cond = 0, $call = 0, $4 = 0, $and6 = 0, $tobool7 = 0, $cond8 = 0, $call9 = 0, $name = 0, $5 = 0, $call10 = 0, $tobool11 = 0, $call13 = 0, $6 = 0, $call15 = 0, $call16 = 0, $call18 = 0, $univ = 0, $7 = 0, $globattr = 0, $8 = 0, $9 = 0, $nodeattr = 0, $10 = 0, $11 = 0, $edgeattr = 0, $12 = 0, $call21 = 0, $call22 = 0, $13 = 0, $call23 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[42143] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[42143] = 308;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[42144] | 0;
    $cmp1 = ($1 | 0) == 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP32[42144] = 74;
    label = 6;
    break;
   case 6:
    $2 = $g;
    $3 = HEAP32[$2 >> 2] | 0;
    $and = $3 & 32;
    $tobool = ($and | 0) != 0;
    $cond = $tobool ? 107680 : 127144;
    $call = _agputs($cond, $fp) | 0;
    $4 = HEAP32[$2 >> 2] | 0;
    $and6 = $4 & 16;
    $tobool7 = ($and6 | 0) != 0;
    $cond8 = $tobool7 ? 103712 : 99592;
    $call9 = _agputs($cond8, $fp) | 0;
    $name = $g + 12 | 0;
    $5 = HEAP32[$name >> 2] | 0;
    $call10 = _strncmp($5 | 0, 95592, 10) | 0;
    $tobool11 = ($call10 | 0) == 0;
    if ($tobool11) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call13 = _agputc(32, $fp) | 0;
    $6 = HEAP32[$name >> 2] | 0;
    $call15 = _agcanonical($6) | 0;
    $call16 = _agputs($call15, $fp) | 0;
    label = 8;
    break;
   case 8:
    $call18 = _agputs(92144, $fp) | 0;
    $univ = $g + 16 | 0;
    $7 = HEAP32[$univ >> 2] | 0;
    $globattr = $7 + 12 | 0;
    $8 = HEAP32[$globattr >> 2] | 0;
    _write_dict($8, $fp);
    $9 = HEAP32[$univ >> 2] | 0;
    $nodeattr = $9 + 4 | 0;
    $10 = HEAP32[$nodeattr >> 2] | 0;
    _write_dict($10, $fp);
    $11 = HEAP32[$univ >> 2] | 0;
    $edgeattr = $11 + 8 | 0;
    $12 = HEAP32[$edgeattr >> 2] | 0;
    _write_dict($12, $fp);
    $call21 = _new_printdict_t($g) | 0;
    _write_subg($g, $fp, 0, 0, $call21);
    $call22 = _agputs(162280, $fp) | 0;
    _free_printdict_t($call21);
    $13 = HEAP32[42144] | 0;
    $call23 = FUNCTION_TABLE_ii[$13 & 1023]($fp) | 0;
    return $call23 | 0;
  }
  return 0;
}
function _write_dict($dict, $fp) {
  $dict = $dict | 0;
  $fp = $fp | 0;
  var $dict1 = 0, $0 = 0, $call18 = 0, $cmp19 = 0, $list = 0, $name = 0, $i_021 = 0, $cnt_020 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $value = 0, $3 = 0, $cmp2 = 0, $4 = 0, $phitmp15 = 0, $inc = 0, $cmp8 = 0, $call11 = 0, $5 = 0, $call12 = 0, $call13 = 0, $call14 = 0, $name15 = 0, $6 = 0, $call16 = 0, $call17 = 0, $7 = 0, $call19 = 0, $call20 = 0, $cnt_1 = 0, $inc22 = 0, $8 = 0, $call = 0, $cmp = 0, $cmp23 = 0, $call26 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dict1 = $dict + 4 | 0;
    $0 = HEAP32[$dict1 >> 2] | 0;
    $call18 = _dtsize($0) | 0;
    $cmp19 = ($call18 | 0) > 0;
    if ($cmp19) {
      label = 3;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $list = $dict + 8 | 0;
    $name = $dict | 0;
    $cnt_020 = 0;
    $i_021 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_021 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $value = $2 + 4 | 0;
    $3 = HEAP32[$value >> 2] | 0;
    $cmp2 = ($3 | 0) == 0;
    if ($cmp2) {
      $cnt_1 = $cnt_020;
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = HEAP8[$3] | 0;
    $phitmp15 = $4 << 24 >> 24 == 0;
    if ($phitmp15) {
      $cnt_1 = $cnt_020;
      label = 10;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $inc = $cnt_020 + 1 | 0;
    $cmp8 = ($cnt_020 | 0) == 0;
    if ($cmp8) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call11 = _agputc(9, $fp) | 0;
    $5 = HEAP32[$name >> 2] | 0;
    $call12 = _agputs($5, $fp) | 0;
    $call13 = _agputs(151712, $fp) | 0;
    label = 9;
    break;
   case 8:
    $call14 = _agputs(145752, $fp) | 0;
    label = 9;
    break;
   case 9:
    $name15 = $2 | 0;
    $6 = HEAP32[$name15 >> 2] | 0;
    $call16 = _agputs($6, $fp) | 0;
    $call17 = _agputc(61, $fp) | 0;
    $7 = HEAP32[$value >> 2] | 0;
    $call19 = _agcanonical($7) | 0;
    $call20 = _agputs($call19, $fp) | 0;
    $cnt_1 = $inc;
    label = 10;
    break;
   case 10:
    $inc22 = $i_021 + 1 | 0;
    $8 = HEAP32[$dict1 >> 2] | 0;
    $call = _dtsize($8) | 0;
    $cmp = ($inc22 | 0) < ($call | 0);
    if ($cmp) {
      $cnt_020 = $cnt_1;
      $i_021 = $inc22;
      label = 4;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $cmp23 = ($cnt_1 | 0) > 0;
    if ($cmp23) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $call26 = _agputs(125344, $fp) | 0;
    label = 13;
    break;
   case 13:
    return;
  }
}
function _new_printdict_t($g) {
  $g = $g | 0;
  var $call = 0, $call1 = 0, $call3 = 0, $call7 = 0;
  $call = _calloc(1, 20) | 0;
  $call1 = _dtopen(89472, HEAP32[41974] | 0) | 0;
  HEAP32[$call >> 2] = $call1;
  _copydict(HEAP32[$g + 20 >> 2] | 0, $call1);
  $call3 = _dtopen(89632, HEAP32[41974] | 0) | 0;
  HEAP32[$call + 4 >> 2] = $call3;
  _copydict(HEAP32[$g + 28 >> 2] | 0, $call3);
  HEAP32[$call + 16 >> 2] = _dtopen(89472, HEAP32[41974] | 0) | 0;
  HEAP32[$call + 12 >> 2] = _dtopen(89432, HEAP32[41974] | 0) | 0;
  $call7 = _dtopen(89472, HEAP32[41974] | 0) | 0;
  HEAP32[$call + 8 >> 2] = $call7;
  _copydict(HEAP32[(HEAP32[(HEAP32[$g + 36 >> 2] | 0) + 20 >> 2] | 0) + 20 >> 2] | 0, $call7);
  return $call | 0;
}
function _aglinenumber() {
  return HEAP32[41638] | 0;
}
function __is_number_char($c) {
  $c = $c | 0;
  var $conv = 0, $isdigittmp = 0, $isdigit = 0, $c_off = 0, $switch = 0, $or_cond = 0, $cmp8 = 0, $phitmp = 0, $0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $conv = $c << 24 >> 24;
    $isdigittmp = $conv - 48 | 0;
    $isdigit = $isdigittmp >>> 0 < 10;
    $c_off = $c - 45 & 255;
    $switch = ($c_off & 255) < 2;
    $or_cond = $isdigit | $switch;
    if ($or_cond) {
      $0 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp8 = $c << 24 >> 24 == 43;
    $phitmp = $cmp8 & 1;
    $0 = $phitmp;
    label = 4;
    break;
   case 4:
    return $0 | 0;
  }
  return 0;
}
function _write_subg($g, $fp, $par, $indent, $state) {
  $g = $g | 0;
  $fp = $fp | 0;
  $par = $par | 0;
  $indent = $indent | 0;
  $state = $state | 0;
  var $tobool = 0, $inc = 0, $subgleft = 0, $0 = 0, $searchf = 0, $1 = 0, $meta_node = 0, $2 = 0, $3 = 0, $call = 0, $tobool2 = 0, $name = 0, $4 = 0, $call4 = 0, $tobool5 = 0, $call7 = 0, $5 = 0, $call9 = 0, $call10 = 0, $call11 = 0, $call12 = 0, $6 = 0, $7 = 0, $univ = 0, $8 = 0, $globattr = 0, $9 = 0, $root = 0, $10 = 0, $cmp = 0, $proto = 0, $11 = 0, $n15 = 0, $12 = 0, $e17 = 0, $13 = 0, $pn_0 = 0, $pe_0 = 0, $proto19 = 0, $14 = 0, $n20 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $nodeattr = 0, $19 = 0, $20 = 0, $e23 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $edgeattr = 0, $25 = 0, $26 = 0, $searchf26 = 0, $27 = 0, $28 = 0, $29 = 0, $call29 = 0, $call31 = 0, $name32 = 0, $30 = 0, $call33 = 0, $call34 = 0, $call35 = 0, $31 = 0, $univ39 = 0, $32 = 0, $globattr40 = 0, $33 = 0, $n_insubg = 0, $34 = 0, $e_insubg = 0, $35 = 0, $meta_node42 = 0, $36 = 0, $graph = 0, $37 = 0, $38 = 0, $39 = 0, $call43 = 0, $40 = 0, $41 = 0, $call45 = 0, $42 = 0, $call48 = 0, $tobool49113 = 0, $e_0114 = 0, $head = 0, $43 = 0, $44 = 0, $call50 = 0, $45 = 0, $call51 = 0, $tobool49 = 0, $call52 = 0, $tobool54111 = 0, $nodesleft = 0, $searchf74 = 0, $n_0112 = 0, $46 = 0, $searchf56 = 0, $47 = 0, $48 = 0, $call58 = 0, $tobool59 = 0, $49 = 0, $searchf62 = 0, $50 = 0, $call64 = 0, $51 = 0, $searchf67 = 0, $52 = 0, $call69 = 0, $cmp70 = 0, $53 = 0, $call75 = 0, $call77 = 0, $tobool54 = 0, $outedges = 0, $54 = 0, $call79 = 0, $55 = 0, $searchf81 = 0, $56 = 0, $call83 = 0, $tobool85108 = 0, $edgesleft = 0, $searchf105 = 0, $e_1110_in = 0, $e_1110 = 0, $57 = 0, $searchf87 = 0, $58 = 0, $call89 = 0, $tobool90 = 0, $59 = 0, $searchf93 = 0, $60 = 0, $call95 = 0, $61 = 0, $searchf98 = 0, $62 = 0, $call100 = 0, $cmp101 = 0, $63 = 0, $call106 = 0, $64 = 0, $searchf109 = 0, $65 = 0, $call111 = 0, $tobool85 = 0, $66 = 0, $call114 = 0, $67 = 0, $call116 = 0, $68 = 0, $call119 = 0, $cmp121 = 0, $call123 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($indent | 0) == 0;
    $inc = $indent + 1 | 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _tabover($fp, $indent);
    $subgleft = $state + 8 | 0;
    $0 = HEAP32[$subgleft >> 2] | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $meta_node = $g + 36 | 0;
    $2 = HEAP32[$meta_node >> 2] | 0;
    $3 = $2 | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $3, 4) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $name = $g + 12 | 0;
    $4 = HEAP32[$name >> 2] | 0;
    $call4 = _strncmp($4 | 0, 95592, 10) | 0;
    $tobool5 = ($call4 | 0) == 0;
    if ($tobool5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call7 = _agputs(158728, $fp) | 0;
    $5 = HEAP32[$name >> 2] | 0;
    $call9 = _agcanonical($5) | 0;
    $call10 = _agputs($call9, $fp) | 0;
    $call11 = _agputs(92144, $fp) | 0;
    label = 7;
    break;
   case 6:
    $call12 = _agputs(155256, $fp) | 0;
    label = 7;
    break;
   case 7:
    $6 = $g | 0;
    $7 = $par | 0;
    $univ = $g + 16 | 0;
    $8 = HEAP32[$univ >> 2] | 0;
    $globattr = $8 + 12 | 0;
    $9 = HEAP32[$globattr >> 2] | 0;
    _write_diffattr($fp, $inc, $6, $7, $9);
    $root = $g + 32 | 0;
    $10 = HEAP32[$root >> 2] | 0;
    $cmp = ($10 | 0) == ($par | 0);
    if ($cmp) {
      $pe_0 = 0;
      $pn_0 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $proto = $par + 40 | 0;
    $11 = HEAP32[$proto >> 2] | 0;
    $n15 = $11 | 0;
    $12 = HEAP32[$n15 >> 2] | 0;
    $e17 = $11 + 4 | 0;
    $13 = HEAP32[$e17 >> 2] | 0;
    $pe_0 = $13;
    $pn_0 = $12;
    label = 9;
    break;
   case 9:
    $proto19 = $g + 40 | 0;
    $14 = HEAP32[$proto19 >> 2] | 0;
    $n20 = $14 | 0;
    $15 = HEAP32[$n20 >> 2] | 0;
    $16 = $15 | 0;
    $17 = $pn_0 | 0;
    $18 = HEAP32[$univ >> 2] | 0;
    $nodeattr = $18 + 4 | 0;
    $19 = HEAP32[$nodeattr >> 2] | 0;
    _write_diffattr($fp, $inc, $16, $17, $19);
    $20 = HEAP32[$proto19 >> 2] | 0;
    $e23 = $20 + 4 | 0;
    $21 = HEAP32[$e23 >> 2] | 0;
    $22 = $21 | 0;
    $23 = $pe_0 | 0;
    $24 = HEAP32[$univ >> 2] | 0;
    $edgeattr = $24 + 8 | 0;
    $25 = HEAP32[$edgeattr >> 2] | 0;
    _write_diffattr($fp, $inc, $22, $23, $25);
    $26 = HEAP32[$subgleft >> 2] | 0;
    $searchf26 = $26 | 0;
    $27 = HEAP32[$searchf26 >> 2] | 0;
    $28 = HEAP32[$meta_node >> 2] | 0;
    $29 = $28 | 0;
    $call29 = FUNCTION_TABLE_iiii[$27 & 1023]($26, $29, 2) | 0;
    label = 12;
    break;
   case 10:
    $call31 = _agputs(158728, $fp) | 0;
    $name32 = $g + 12 | 0;
    $30 = HEAP32[$name32 >> 2] | 0;
    $call33 = _agcanonical($30) | 0;
    $call34 = _agputs($call33, $fp) | 0;
    $call35 = _agputs(154784, $fp) | 0;
    label = 30;
    break;
   case 11:
    $31 = $g | 0;
    $univ39 = $g + 16 | 0;
    $32 = HEAP32[$univ39 >> 2] | 0;
    $globattr40 = $32 + 12 | 0;
    $33 = HEAP32[$globattr40 >> 2] | 0;
    _write_diffattr($fp, $inc, $31, 0, $33);
    label = 12;
    break;
   case 12:
    $n_insubg = $state + 16 | 0;
    $34 = HEAP32[$n_insubg >> 2] | 0;
    $e_insubg = $state + 12 | 0;
    $35 = HEAP32[$e_insubg >> 2] | 0;
    $meta_node42 = $g + 36 | 0;
    $36 = HEAP32[$meta_node42 >> 2] | 0;
    $graph = $36 + 20 | 0;
    $37 = HEAP32[$graph >> 2] | 0;
    $38 = HEAP32[41974] | 0;
    $39 = $38;
    $call43 = _dtopen(89512, $39) | 0;
    HEAP32[$n_insubg >> 2] = $call43;
    $40 = HEAP32[41974] | 0;
    $41 = $40;
    $call45 = _dtopen(89432, $41) | 0;
    HEAP32[$e_insubg >> 2] = $call45;
    $42 = HEAP32[$meta_node42 >> 2] | 0;
    $call48 = _agfstout($37, $42) | 0;
    $tobool49113 = ($call48 | 0) == 0;
    if ($tobool49113) {
      label = 14;
      break;
    } else {
      $e_0114 = $call48;
      label = 13;
      break;
    }
   case 13:
    $head = $e_0114 + 12 | 0;
    $43 = HEAP32[$head >> 2] | 0;
    $44 = $43;
    $call50 = _agusergraph($44) | 0;
    $45 = $call50;
    _write_subg($45, $fp, $g, $inc, $state);
    $call51 = _agnxtout($37, $e_0114) | 0;
    $tobool49 = ($call51 | 0) == 0;
    if ($tobool49) {
      label = 14;
      break;
    } else {
      $e_0114 = $call51;
      label = 13;
      break;
    }
   case 14:
    $call52 = _agfstnode($g) | 0;
    $tobool54111 = ($call52 | 0) == 0;
    if ($tobool54111) {
      label = 21;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $nodesleft = $state | 0;
    $searchf74 = $34 | 0;
    $n_0112 = $call52;
    label = 16;
    break;
   case 16:
    $46 = HEAP32[$nodesleft >> 2] | 0;
    $searchf56 = $46 | 0;
    $47 = HEAP32[$searchf56 >> 2] | 0;
    $48 = $n_0112 | 0;
    $call58 = FUNCTION_TABLE_iiii[$47 & 1023]($46, $48, 4) | 0;
    $tobool59 = ($call58 | 0) == 0;
    if ($tobool59) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    _agwrnode($g, $fp, $n_0112, 1, $inc);
    $49 = HEAP32[$nodesleft >> 2] | 0;
    $searchf62 = $49 | 0;
    $50 = HEAP32[$searchf62 >> 2] | 0;
    $call64 = FUNCTION_TABLE_iiii[$50 & 1023]($49, $48, 2) | 0;
    label = 20;
    break;
   case 18:
    $51 = HEAP32[$n_insubg >> 2] | 0;
    $searchf67 = $51 | 0;
    $52 = HEAP32[$searchf67 >> 2] | 0;
    $call69 = FUNCTION_TABLE_iiii[$52 & 1023]($51, $48, 4) | 0;
    $cmp70 = ($call69 | 0) == 0;
    if ($cmp70) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    _agwrnode($g, $fp, $n_0112, 0, $inc);
    label = 20;
    break;
   case 20:
    $53 = HEAP32[$searchf74 >> 2] | 0;
    $call75 = FUNCTION_TABLE_iiii[$53 & 1023]($34, $48, 1) | 0;
    $call77 = _agnxtnode($g, $n_0112) | 0;
    $tobool54 = ($call77 | 0) == 0;
    if ($tobool54) {
      label = 21;
      break;
    } else {
      $n_0112 = $call77;
      label = 16;
      break;
    }
   case 21:
    $outedges = $g + 28 | 0;
    $54 = HEAP32[$outedges >> 2] | 0;
    $call79 = _dtdisc($54, 89632, 0) | 0;
    $55 = HEAP32[$outedges >> 2] | 0;
    $searchf81 = $55 | 0;
    $56 = HEAP32[$searchf81 >> 2] | 0;
    $call83 = FUNCTION_TABLE_iiii[$56 & 1023]($55, 0, 128) | 0;
    $tobool85108 = ($call83 | 0) == 0;
    if ($tobool85108) {
      label = 28;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $edgesleft = $state + 4 | 0;
    $searchf105 = $35 | 0;
    $e_1110_in = $call83;
    label = 23;
    break;
   case 23:
    $e_1110 = $e_1110_in;
    $57 = HEAP32[$edgesleft >> 2] | 0;
    $searchf87 = $57 | 0;
    $58 = HEAP32[$searchf87 >> 2] | 0;
    $call89 = FUNCTION_TABLE_iiii[$58 & 1023]($57, $e_1110_in, 4) | 0;
    $tobool90 = ($call89 | 0) == 0;
    if ($tobool90) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    _tabover($fp, $inc);
    _agwredge($g, $fp, $e_1110, 1);
    $59 = HEAP32[$edgesleft >> 2] | 0;
    $searchf93 = $59 | 0;
    $60 = HEAP32[$searchf93 >> 2] | 0;
    $call95 = FUNCTION_TABLE_iiii[$60 & 1023]($59, $e_1110_in, 2) | 0;
    label = 27;
    break;
   case 25:
    $61 = HEAP32[$e_insubg >> 2] | 0;
    $searchf98 = $61 | 0;
    $62 = HEAP32[$searchf98 >> 2] | 0;
    $call100 = FUNCTION_TABLE_iiii[$62 & 1023]($61, $e_1110_in, 4) | 0;
    $cmp101 = ($call100 | 0) == 0;
    if ($cmp101) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    _tabover($fp, $inc);
    _agwredge($g, $fp, $e_1110, 0);
    label = 27;
    break;
   case 27:
    $63 = HEAP32[$searchf105 >> 2] | 0;
    $call106 = FUNCTION_TABLE_iiii[$63 & 1023]($35, $e_1110_in, 1) | 0;
    $64 = HEAP32[$outedges >> 2] | 0;
    $searchf109 = $64 | 0;
    $65 = HEAP32[$searchf109 >> 2] | 0;
    $call111 = FUNCTION_TABLE_iiii[$65 & 1023]($64, $e_1110_in, 8) | 0;
    $tobool85 = ($call111 | 0) == 0;
    if ($tobool85) {
      label = 28;
      break;
    } else {
      $e_1110_in = $call111;
      label = 23;
      break;
    }
   case 28:
    $66 = HEAP32[$outedges >> 2] | 0;
    $call114 = _dtdisc($66, 89432, 0) | 0;
    $67 = HEAP32[$n_insubg >> 2] | 0;
    $call116 = _dtclose($67) | 0;
    HEAP32[$n_insubg >> 2] = $34;
    $68 = HEAP32[$e_insubg >> 2] | 0;
    $call119 = _dtclose($68) | 0;
    HEAP32[$e_insubg >> 2] = $35;
    $cmp121 = ($indent | 0) > 0;
    if ($cmp121) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    _tabover($fp, $indent);
    $call123 = _agputs(162280, $fp) | 0;
    label = 30;
    break;
   case 30:
    return;
  }
}
function _free_printdict_t($dict) {
  $dict = $dict | 0;
  _dtclose(HEAP32[$dict >> 2] | 0);
  _dtclose(HEAP32[$dict + 16 >> 2] | 0);
  _dtclose(HEAP32[$dict + 4 >> 2] | 0);
  _dtclose(HEAP32[$dict + 12 >> 2] | 0);
  _dtclose(HEAP32[$dict + 8 >> 2] | 0);
  _free($dict);
  return;
}
function _write_diffattr($fp, $indent, $obj, $par, $dict) {
  $fp = $fp | 0;
  $indent = $indent | 0;
  $obj = $obj | 0;
  $par = $par | 0;
  $dict = $dict | 0;
  var $dict1 = 0, $0 = 0, $call20 = 0, $cmp21 = 0, $list = 0, $tobool = 0, $name = 0, $add = 0, $cnt_023 = 0, $i_022 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $printed = 0, $3 = 0, $cmp2 = 0, $index = 0, $4 = 0, $call4 = 0, $call7 = 0, $value = 0, $5 = 0, $q_0 = 0, $call9 = 0, $tobool10 = 0, $inc = 0, $cmp12 = 0, $6 = 0, $call15 = 0, $call16 = 0, $call18 = 0, $name20 = 0, $7 = 0, $call21 = 0, $call22 = 0, $call23 = 0, $call24 = 0, $call25 = 0, $cnt_1 = 0, $inc27 = 0, $8 = 0, $call = 0, $cmp = 0, $cmp28 = 0, $call31 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $dict1 = $dict + 4 | 0;
    $0 = HEAP32[$dict1 >> 2] | 0;
    $call20 = _dtsize($0) | 0;
    $cmp21 = ($call20 | 0) > 0;
    if ($cmp21) {
      label = 3;
      break;
    } else {
      label = 16;
      break;
    }
   case 3:
    $list = $dict + 8 | 0;
    $tobool = ($par | 0) == 0;
    $name = $dict | 0;
    $add = $indent + 1 | 0;
    $i_022 = 0;
    $cnt_023 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_022 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $printed = $2 + 12 | 0;
    $3 = HEAP8[$printed] | 0;
    $cmp2 = $3 << 24 >> 24 == 0;
    if ($cmp2) {
      $cnt_1 = $cnt_023;
      label = 13;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $index = $2 + 8 | 0;
    $4 = HEAP32[$index >> 2] | 0;
    $call4 = _agxget($obj, $4) | 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call7 = _agxget($par, $4) | 0;
    $q_0 = $call7;
    label = 8;
    break;
   case 7:
    $value = $2 + 4 | 0;
    $5 = HEAP32[$value >> 2] | 0;
    $q_0 = $5;
    label = 8;
    break;
   case 8:
    $call9 = _strcmp($call4 | 0, $q_0 | 0) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      $cnt_1 = $cnt_023;
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $inc = $cnt_023 + 1 | 0;
    $cmp12 = ($cnt_023 | 0) == 0;
    if ($cmp12) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _tabover($fp, $indent);
    $6 = HEAP32[$name >> 2] | 0;
    $call15 = _agputs($6, $fp) | 0;
    $call16 = _agputs(151712, $fp) | 0;
    label = 12;
    break;
   case 11:
    $call18 = _agputs(148520, $fp) | 0;
    _tabover($fp, $add);
    label = 12;
    break;
   case 12:
    $name20 = $2 | 0;
    $7 = HEAP32[$name20 >> 2] | 0;
    $call21 = _agcanonical($7) | 0;
    $call22 = _agputs($call21, $fp) | 0;
    $call23 = _agputc(61, $fp) | 0;
    $call24 = _agcanonical($call4) | 0;
    $call25 = _agputs($call24, $fp) | 0;
    $cnt_1 = $inc;
    label = 13;
    break;
   case 13:
    $inc27 = $i_022 + 1 | 0;
    $8 = HEAP32[$dict1 >> 2] | 0;
    $call = _dtsize($8) | 0;
    $cmp = ($inc27 | 0) < ($call | 0);
    if ($cmp) {
      $i_022 = $inc27;
      $cnt_023 = $cnt_1;
      label = 4;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $cmp28 = ($cnt_1 | 0) > 0;
    if ($cmp28) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $call31 = _agputs(125344, $fp) | 0;
    label = 16;
    break;
   case 16:
    return;
  }
}
function _copydict($from, $to) {
  $from = $from | 0;
  $to = $to | 0;
  HEAP32[41984] = $to;
  _dtwalk($from, 372, 0);
  return;
}
function _copydictf($d, $a, $ignored) {
  $d = $d | 0;
  $a = $a | 0;
  $ignored = $ignored | 0;
  var $0 = 0;
  $0 = HEAP32[41984] | 0;
  FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, $a, 1);
  return 0;
}
function _aglexinit($fp, $mygets) {
  $fp = $fp | 0;
  $mygets = $mygets | 0;
  var $tobool = 0, $_pr = 0, $cmp = 0, $0 = 0, $cmp3 = 0, $call = 0, $1 = 0, $call5 = 0, $2 = 0, $3 = 0, $call7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[41650] = $fp;
    $tobool = ($mygets | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP32[42142] = $mygets;
    label = 6;
    break;
   case 4:
    $_pr = HEAP32[42142] | 0;
    $cmp = ($_pr | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP32[42142] = 608;
    label = 6;
    break;
   case 6:
    HEAP32[41652] = 0;
    $0 = HEAP32[42140] | 0;
    $cmp3 = ($0 | 0) == 0;
    if ($cmp3) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[41640] = 1024;
    $call = _calloc(1024, 1) | 0;
    HEAP32[42140] = $call;
    $1 = HEAP32[41640] | 0;
    $call5 = _calloc($1, 1) | 0;
    HEAP32[41342] = $call5;
    label = 8;
    break;
   case 8:
    $2 = HEAP32[42142] | 0;
    $3 = HEAP32[42140] | 0;
    $call7 = FUNCTION_TABLE_iiii[$2 & 1023]($3, 0, $fp) | 0;
    HEAP16[84282] = 0;
    return;
  }
}
function _aglex() {
  var $xb = 0, $htmlbuf = 0, $0 = 0, $tobool = 0, $_pr = 0, $1 = 0, $cmp = 0, $2 = 0, $cmp1 = 0, $call = 0, $cmp4 = 0, $_b = 0, $3 = 0, $conv9 = 0, $call10 = 0, $4 = 0, $cmp14 = 0, $5 = 0, $call16 = 0, $tobool17 = 0, $add_ptr = 0, $6 = 0, $call20 = 0, $7 = 0, $cmp23 = 0, $8 = 0, $call30 = 0, $call31 = 0, $arraydecay = 0, $9 = 0, $call38 = 0, $ptr = 0, $10 = 0, $eptr = 0, $11 = 0, $cmp39 = 0, $call41 = 0, $12 = 0, $buf = 0, $13 = 0, $call44 = 0, $14 = 0, $tobool46 = 0, $call48 = 0, $call49 = 0, $cmp50 = 0, $add_ptr54 = 0, $15 = 0, $call56 = 0, $tobool57 = 0, $call59 = 0, $16 = 0, $17 = 0, $conv60 = 0, $call61 = 0, $tobool62 = 0, $cmp65 = 0, $or_cond = 0, $18 = 0, $incdec_ptr68 = 0, $19 = 0, $conv69 = 0, $call71 = 0, $call74 = 0, $cmp75 = 0, $call78 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1040 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $xb = __stackBase__ | 0;
    $htmlbuf = __stackBase__ + 16 | 0;
    $0 = HEAP8[168566] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP8[168566] = 0;
    $retval_0 = -1;
    label = 28;
    break;
   case 4:
    $_pr = HEAP32[41652] | 0;
    $1 = $_pr;
    label = 5;
    break;
   case 5:
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$1] | 0;
    $cmp1 = $2 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $call = _lex_gets() | 0;
    HEAP32[41652] = $call;
    $cmp4 = ($call | 0) == 0;
    if ($cmp4) {
      label = 8;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $_b = HEAP8[166992] | 0;
    if ($_b) {
      label = 9;
      break;
    } else {
      $retval_0 = -1;
      label = 28;
      break;
    }
   case 9:
    $3 = HEAP8[167960] | 0;
    $conv9 = $3 & 255;
    $call10 = _agerr(0, 125096, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $conv9, tempInt) | 0) | 0;
    $retval_0 = -1;
    label = 28;
    break;
   case 10:
    $4 = HEAP32[41638] | 0;
    $cmp14 = ($4 | 0) == 1;
    if ($cmp14) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $5 = HEAP32[41652] | 0;
    $call16 = _strncmp($5 | 0, 89152, 3) | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $add_ptr = $5 + 3 | 0;
    HEAP32[41652] = $add_ptr;
    label = 13;
    break;
   case 13:
    $6 = HEAP32[41652] | 0;
    $call20 = _skip_wscomments($6) | 0;
    HEAP32[41652] = $call20;
    $7 = HEAP8[$call20] | 0;
    $cmp23 = $7 << 24 >> 24 == 0;
    if ($cmp23) {
      $1 = $call20;
      label = 5;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $8 = HEAP32[41342] | 0;
    if (($7 << 24 >> 24 | 0) == 34) {
      label = 15;
      break;
    } else if (($7 << 24 >> 24 | 0) == 60) {
      label = 16;
      break;
    } else {
      label = 19;
      break;
    }
   case 15:
    $call30 = _quoted_string($call20, $8) | 0;
    HEAP32[41652] = $call30;
    $call31 = _agstrdup($8) | 0;
    HEAP32[22286] = $call31;
    $retval_0 = 265;
    label = 28;
    break;
   case 16:
    $arraydecay = $htmlbuf | 0;
    _agxbinit($xb, 1024, $arraydecay);
    $9 = HEAP32[41652] | 0;
    $call38 = _html_string3314($9, $xb) | 0;
    HEAP32[41652] = $call38;
    $ptr = $xb + 4 | 0;
    $10 = HEAP32[$ptr >> 2] | 0;
    $eptr = $xb + 8 | 0;
    $11 = HEAP32[$eptr >> 2] | 0;
    $cmp39 = $10 >>> 0 < $11 >>> 0;
    if ($cmp39) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $call41 = _agxbmore($xb, 1) | 0;
    label = 18;
    break;
   case 18:
    $12 = HEAP32[$ptr >> 2] | 0;
    HEAP8[$12] = 0;
    $buf = $xb | 0;
    $13 = HEAP32[$buf >> 2] | 0;
    HEAP32[$ptr >> 2] = $13;
    $call44 = _agstrdup_html($13) | 0;
    HEAP32[22286] = $call44;
    _agxbfree($xb);
    $retval_0 = 264;
    label = 28;
    break;
   case 19:
    $14 = HEAP32[42139] | 0;
    $tobool46 = ($14 | 0) == 0;
    if ($tobool46) {
      label = 22;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call48 = _strlen($14 | 0) | 0;
    $call49 = _strncmp($call20 | 0, $14 | 0, $call48 | 0) | 0;
    $cmp50 = ($call49 | 0) == 0;
    if ($cmp50) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $add_ptr54 = $call20 + $call48 | 0;
    HEAP32[41652] = $add_ptr54;
    $retval_0 = 263;
    label = 28;
    break;
   case 22:
    $15 = HEAP32[41652] | 0;
    $call56 = _scan_num($15, $8) | 0;
    $tobool57 = ($call56 | 0) == 0;
    if ($tobool57) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    HEAP32[41652] = $call56;
    $call59 = _agstrdup($8) | 0;
    HEAP32[22286] = $call59;
    $retval_0 = 264;
    label = 28;
    break;
   case 24:
    $16 = HEAP32[41652] | 0;
    $17 = HEAP8[$16] | 0;
    $conv60 = $17 & 255;
    $call61 = _ispunct($conv60 | 0) | 0;
    $tobool62 = ($call61 | 0) == 0;
    $cmp65 = $17 << 24 >> 24 == 95;
    $or_cond = $tobool62 | $cmp65;
    $18 = HEAP32[41652] | 0;
    if ($or_cond) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $incdec_ptr68 = $18 + 1 | 0;
    HEAP32[41652] = $incdec_ptr68;
    $19 = HEAP8[$18] | 0;
    $conv69 = $19 << 24 >> 24;
    $retval_0 = $conv69;
    label = 28;
    break;
   case 26:
    $call71 = _scan_token($18, $8) | 0;
    HEAP32[41652] = $call71;
    $call74 = _agtoken($8) | 0;
    $cmp75 = ($call74 | 0) == -1;
    if ($cmp75) {
      label = 27;
      break;
    } else {
      $retval_0 = $call74;
      label = 28;
      break;
    }
   case 27:
    $call78 = _agstrdup($8) | 0;
    HEAP32[22286] = $call78;
    $retval_0 = 264;
    label = 28;
    break;
   case 28:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _agtoken($p) {
  $p = $p | 0;
  var $0 = 0, $tobool8 = 0, $1 = 0, $2 = 0, $p_addr_09 = 0, $tobool1 = 0, $_ = 0, $cmp = 0, $conv6 = 0, $call = 0, $tobool7 = 0, $call10 = 0, $conv11 = 0, $call13 = 0, $tobool14 = 0, $c_0 = 0, $3 = 0, $idxprom = 0, $mask = 0, $4 = 0, $conv17 = 0, $sub = 0, $arrayidx18 = 0, $5 = 0, $and19 = 0, $tobool20 = 0, $trans_base = 0, $6 = 0, $i_0 = 0, $idxprom25 = 0, $c27 = 0, $7 = 0, $conv28 = 0, $cmp30 = 0, $inc = 0, $next_state = 0, $8 = 0, $incdec_ptr = 0, $9 = 0, $tobool = 0, $_pr10 = 0, $cmp40 = 0, $10 = 0, $conv39 = 0, $def = 0, $11 = 0, $conv46 = 0, $cond48 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP16[82692] = 0;
    $0 = HEAP8[$p] | 0;
    $tobool8 = $0 << 24 >> 24 == 0;
    if ($tobool8) {
      $10 = 0;
      label = 15;
      break;
    } else {
      $p_addr_09 = $p;
      $2 = $0;
      $1 = 0;
      label = 3;
      break;
    }
   case 3:
    $tobool1 = $2 << 24 >> 24 < 0;
    $_ = $tobool1 ? 127 : $2;
    $cmp = $1 << 16 >> 16 > -1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 4:
    $conv6 = $_ & 255;
    $call = _isupper($conv6 | 0) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call10 = _tolower($conv6 | 0) | 0;
    $conv11 = $call10 & 255;
    $c_0 = $conv11;
    label = 8;
    break;
   case 6:
    $call13 = _islower($conv6 | 0) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 7;
      break;
    } else {
      $c_0 = $_;
      label = 8;
      break;
    }
   case 7:
    HEAP16[82692] = -1;
    label = 13;
    break;
   case 8:
    $3 = HEAP16[82692] | 0;
    $idxprom = $3 << 16 >> 16;
    $mask = 165068 + ($idxprom << 3) | 0;
    $4 = HEAP32[$mask >> 2] | 0;
    $conv17 = $c_0 & 255;
    $sub = $conv17 - 97 | 0;
    $arrayidx18 = 167976 + ($sub << 2) | 0;
    $5 = HEAP32[$arrayidx18 >> 2] | 0;
    $and19 = $5 & $4;
    $tobool20 = ($and19 | 0) == 0;
    if ($tobool20) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $trans_base = 165066 + ($idxprom << 3) | 0;
    $6 = HEAP16[$trans_base >> 1] | 0;
    $i_0 = $6;
    label = 10;
    break;
   case 10:
    $idxprom25 = $i_0 << 16 >> 16;
    $c27 = 164928 + ($idxprom25 << 2) | 0;
    $7 = HEAP16[$c27 >> 1] | 0;
    $conv28 = $7 << 16 >> 16;
    $cmp30 = ($conv28 | 0) == ($conv17 | 0);
    $inc = $i_0 + 1 & 65535;
    if ($cmp30) {
      label = 11;
      break;
    } else {
      $i_0 = $inc;
      label = 10;
      break;
    }
   case 11:
    $next_state = 164930 + ($idxprom25 << 2) | 0;
    $8 = HEAP16[$next_state >> 1] | 0;
    HEAP16[82692] = $8;
    label = 13;
    break;
   case 12:
    HEAP16[82692] = -1;
    label = 13;
    break;
   case 13:
    $incdec_ptr = $p_addr_09 + 1 | 0;
    $9 = HEAP8[$incdec_ptr] | 0;
    $tobool = $9 << 24 >> 24 == 0;
    $_pr10 = HEAP16[82692] | 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      $p_addr_09 = $incdec_ptr;
      $2 = $9;
      $1 = $_pr10;
      label = 3;
      break;
    }
   case 14:
    $cmp40 = $_pr10 << 16 >> 16 < 0;
    if ($cmp40) {
      $cond48 = -1;
      label = 16;
      break;
    } else {
      $10 = $_pr10;
      label = 15;
      break;
    }
   case 15:
    $conv39 = $10 << 16 >> 16;
    $def = 165064 + ($conv39 << 3) | 0;
    $11 = HEAP16[$def >> 1] | 0;
    $conv46 = $11 << 16 >> 16;
    $cond48 = $conv46;
    label = 16;
    break;
   case 16:
    return $cond48 | 0;
  }
  return 0;
}
function _lex_gets() {
  var $cnt = 0, $buf = 0, $arraydecay = 0, $curlen_0 = 0, $add = 0, $0 = 0, $cmp = 0, $add1 = 0, $1 = 0, $call = 0, $2 = 0, $3 = 0, $call2 = 0, $4 = 0, $5 = 0, $add_ptr_sum = 0, $add_ptr3 = 0, $6 = 0, $sub = 0, $sub4 = 0, $7 = 0, $call5 = 0, $cmp6 = 0, $call9 = 0, $sub10 = 0, $arrayidx = 0, $8 = 0, $cmp11 = 0, $9 = 0, $cmp16 = 0, $cmp18 = 0, $or_cond = 0, $add_ptr21 = 0, $call22 = 0, $cmp23 = 0, $add_ptr26 = 0, $add_ptr26_add_ptr21 = 0, $call28 = 0, $cmp29 = 0, $10 = 0, $inc = 0, $dec = 0, $cmp32 = 0, $11 = 0, $add_ptr35 = 0, $e_0 = 0, $12 = 0, $incdec_ptr = 0, $cmp40 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $13 = 0, $inc48 = 0, $sub49 = 0, $arrayidx50 = 0, $14 = 0, $cmp52 = 0, $len_0 = 0, $add59 = 0, $curlen_1 = 0, $len_1 = 0, $sub60 = 0, $arrayidx61 = 0, $15 = 0, $cmp63 = 0, $curlen_2 = 0, $cmp65 = 0, $16 = 0, $add_ptr68 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cnt = __stackBase__ | 0;
    $buf = __stackBase__ + 8 | 0;
    $arraydecay = $buf | 0;
    $curlen_0 = 0;
    label = 3;
    break;
   case 3:
    $add = $curlen_0 + 128 | 0;
    $0 = HEAP32[41640] | 0;
    $cmp = ($add | 0) < ($0 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $add1 = $0 + 1024 | 0;
    HEAP32[41640] = $add1;
    $1 = HEAP32[42140] | 0;
    $call = _realloc($1, $add1) | 0;
    HEAP32[42140] = $call;
    $2 = HEAP32[41342] | 0;
    $3 = HEAP32[41640] | 0;
    $call2 = _realloc($2, $3) | 0;
    HEAP32[41342] = $call2;
    label = 5;
    break;
   case 5:
    $4 = HEAP32[42142] | 0;
    $5 = HEAP32[42140] | 0;
    $add_ptr_sum = $curlen_0 + 1 | 0;
    $add_ptr3 = $5 + $add_ptr_sum | 0;
    $6 = HEAP32[41640] | 0;
    $sub = $curlen_0 ^ -1;
    $sub4 = $6 + $sub | 0;
    $7 = HEAP32[41650] | 0;
    $call5 = FUNCTION_TABLE_iiii[$4 & 1023]($add_ptr3, $sub4, $7) | 0;
    $cmp6 = ($call5 | 0) == 0;
    if ($cmp6) {
      $curlen_2 = $curlen_0;
      label = 21;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call9 = _strlen($call5 | 0) | 0;
    $sub10 = $call9 - 1 | 0;
    $arrayidx = $call5 + $sub10 | 0;
    $8 = HEAP8[$arrayidx] | 0;
    $cmp11 = $8 << 24 >> 24 == 10;
    if ($cmp11) {
      label = 7;
      break;
    } else {
      $len_0 = $call9;
      label = 19;
      break;
    }
   case 7:
    $9 = HEAP8[$call5] | 0;
    $cmp16 = $9 << 24 >> 24 == 35;
    $cmp18 = ($curlen_0 | 0) == 0;
    $or_cond = $cmp16 & $cmp18;
    if ($or_cond) {
      label = 8;
      break;
    } else {
      label = 17;
      break;
    }
   case 8:
    $add_ptr21 = $call5 + 1 | 0;
    $call22 = _strncmp($add_ptr21 | 0, 142152, 4) | 0;
    $cmp23 = ($call22 | 0) == 0;
    $add_ptr26 = $call5 + 5 | 0;
    $add_ptr26_add_ptr21 = $cmp23 ? $add_ptr26 : $add_ptr21;
    $call28 = _sscanf($add_ptr26_add_ptr21 | 0, 138608, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = 166552, HEAP32[tempInt + 8 >> 2] = $arraydecay, HEAP32[tempInt + 16 >> 2] = $cnt, tempInt) | 0) | 0;
    $cmp29 = ($call28 | 0) < 1;
    $10 = HEAP32[41638] | 0;
    if ($cmp29) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $inc = $10 + 1 | 0;
    HEAP32[41638] = $inc;
    label = 16;
    break;
   case 10:
    $dec = $10 - 1 | 0;
    HEAP32[41638] = $dec;
    $cmp32 = ($call28 | 0) > 1;
    if ($cmp32) {
      label = 11;
      break;
    } else {
      label = 16;
      break;
    }
   case 11:
    $11 = HEAP32[$cnt >> 2] | 0;
    $add_ptr35 = $add_ptr26_add_ptr21 + $11 | 0;
    $e_0 = $add_ptr35;
    label = 12;
    break;
   case 12:
    $12 = HEAP8[$e_0] | 0;
    if (($12 << 24 >> 24 | 0) == 34 | ($12 << 24 >> 24 | 0) == 0) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $incdec_ptr = $e_0 + 1 | 0;
    $e_0 = $incdec_ptr;
    label = 12;
    break;
   case 14:
    $cmp40 = ($e_0 | 0) == ($add_ptr35 | 0);
    if ($cmp40) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    HEAP8[$e_0] = 0;
    $sub_ptr_lhs_cast = $e_0;
    $sub_ptr_rhs_cast = $add_ptr35;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    _storeFileName($add_ptr35, $sub_ptr_sub);
    label = 16;
    break;
   case 16:
    HEAP8[$call5] = 0;
    $len_1 = 1;
    $curlen_1 = $curlen_0;
    label = 20;
    break;
   case 17:
    $13 = HEAP32[41638] | 0;
    $inc48 = $13 + 1 | 0;
    HEAP32[41638] = $inc48;
    $sub49 = $call9 - 2 | 0;
    $arrayidx50 = $call5 + $sub49 | 0;
    $14 = HEAP8[$arrayidx50] | 0;
    $cmp52 = $14 << 24 >> 24 == 92;
    if ($cmp52) {
      label = 18;
      break;
    } else {
      $len_0 = $call9;
      label = 19;
      break;
    }
   case 18:
    HEAP8[$arrayidx50] = 0;
    $len_0 = $sub49;
    label = 19;
    break;
   case 19:
    $add59 = $len_0 + $curlen_0 | 0;
    $len_1 = $len_0;
    $curlen_1 = $add59;
    label = 20;
    break;
   case 20:
    $sub60 = $len_1 - 1 | 0;
    $arrayidx61 = $call5 + $sub60 | 0;
    $15 = HEAP8[$arrayidx61] | 0;
    $cmp63 = $15 << 24 >> 24 == 10;
    if ($cmp63) {
      $curlen_2 = $curlen_1;
      label = 21;
      break;
    } else {
      $curlen_0 = $curlen_1;
      label = 3;
      break;
    }
   case 21:
    $cmp65 = ($curlen_2 | 0) > 0;
    if ($cmp65) {
      label = 22;
      break;
    } else {
      $retval_0 = 0;
      label = 23;
      break;
    }
   case 22:
    $16 = HEAP32[42140] | 0;
    $add_ptr68 = $16 + 1 | 0;
    $retval_0 = $add_ptr68;
    label = 23;
    break;
   case 23:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _agerr($level, $fmt, varrp) {
  $level = $level | 0;
  $fmt = $fmt | 0;
  varrp = varrp | 0;
  var $args = 0, $arraydecay1 = 0, $call = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  $args = __stackBase__ | 0;
  $arraydecay1 = $args;
  HEAP32[$arraydecay1 >> 2] = varrp;
  HEAP32[$arraydecay1 + 4 >> 2] = 0;
  $call = _agerr_va($level, $fmt, $args | 0) | 0;
  STACKTOP = __stackBase__;
  return $call | 0;
}
function _agerrors() {
  var $0 = 0, $conv = 0;
  $0 = HEAP32[22284] | 0;
  $conv = HEAP16[84282] | 0;
  return (($0 | 0) > ($conv | 0) ? $0 : $conv) | 0;
}
function _skip_wscomments($pp) {
  $pp = $pp | 0;
  var $p_0 = 0, $0 = 0, $cmp = 0, $conv = 0, $call = 0, $tobool = 0, $1 = 0, $conv3 = 0, $call4 = 0, $tobool5 = 0, $_b22 = 0, $_b = 0, $incdec_ptr = 0, $p_123 = 0, $2 = 0, $tobool11 = 0, $p_2 = 0, $3 = 0, $tobool17 = 0, $cmp21 = 0, $not_tobool17 = 0, $_cmp21 = 0, $incdec_ptr25 = 0, $p_1_be = 0, $arrayidx29 = 0, $4 = 0, $cmp31 = 0, $add_ptr = 0, $p_3 = 0, $5 = 0, $arrayidx42 = 0, $6 = 0, $p_4 = 0, $7 = 0, $tobool48 = 0, $incdec_ptr50 = 0, $8 = 0, $conv58 = 0, $add_ptr59 = 0, $conv38 = 0, $call67 = 0, $tobool68 = 0, $9 = 0, $conv69 = 0, $call70 = 0, $tobool71 = 0, $p_5 = 0, $10 = 0, $tobool76 = 0, $p_6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p_0 = $pp;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$p_0] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $0 & 255;
    $call = _isspace($conv | 0) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $1 = HEAP8[$p_0] | 0;
    $conv3 = $1 & 255;
    $call4 = _iscntrl($conv3 | 0) | 0;
    $tobool5 = ($call4 | 0) == 0;
    if ($tobool5) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $_b22 = HEAP8[166992] | 0;
    if ($_b22) {
      label = 7;
      break;
    } else {
      $p_3 = $p_0;
      label = 15;
      break;
    }
   case 7:
    $_b = HEAP8[166992] | 0;
    $p_123 = $p_0;
    label = 9;
    break;
   case 8:
    $incdec_ptr = $p_0 + 1 | 0;
    $p_0 = $incdec_ptr;
    label = 3;
    break;
   case 9:
    $2 = HEAP8[$p_123] | 0;
    $tobool11 = $2 << 24 >> 24 == 0;
    if ($tobool11) {
      $p_3 = $p_123;
      label = 15;
      break;
    } else {
      $p_2 = $p_123;
      label = 10;
      break;
    }
   case 10:
    $3 = HEAP8[$p_2] | 0;
    $tobool17 = $3 << 24 >> 24 == 0;
    $cmp21 = $3 << 24 >> 24 != 42;
    $not_tobool17 = $tobool17 ^ 1;
    $_cmp21 = $cmp21 & $not_tobool17;
    $incdec_ptr25 = $p_2 + 1 | 0;
    if ($_cmp21) {
      $p_2 = $incdec_ptr25;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    if ($tobool17) {
      $p_1_be = $p_2;
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    if ($_b) {
      $p_123 = $p_1_be;
      label = 9;
      break;
    } else {
      $p_3 = $p_1_be;
      label = 15;
      break;
    }
   case 13:
    $arrayidx29 = $p_2 + 1 | 0;
    $4 = HEAP8[$arrayidx29] | 0;
    $cmp31 = $4 << 24 >> 24 == 47;
    if ($cmp31) {
      label = 14;
      break;
    } else {
      $p_1_be = $arrayidx29;
      label = 12;
      break;
    }
   case 14:
    HEAP8[166992] = 0;
    $add_ptr = $p_2 + 2 | 0;
    $p_3 = $add_ptr;
    label = 15;
    break;
   case 15:
    $5 = HEAP8[$p_3] | 0;
    if (($5 << 24 >> 24 | 0) == 47) {
      label = 16;
      break;
    } else if (($5 << 24 >> 24 | 0) == 0) {
      $p_6 = $p_3;
      label = 22;
      break;
    } else {
      label = 19;
      break;
    }
   case 16:
    $arrayidx42 = $p_3 + 1 | 0;
    $6 = HEAP8[$arrayidx42] | 0;
    if (($6 << 24 >> 24 | 0) == 47) {
      $p_4 = $p_3;
      label = 17;
      break;
    } else if (($6 << 24 >> 24 | 0) == 42) {
      label = 18;
      break;
    } else {
      $p_6 = $p_3;
      label = 22;
      break;
    }
   case 17:
    $7 = HEAP8[$p_4] | 0;
    $tobool48 = $7 << 24 >> 24 == 0;
    $incdec_ptr50 = $p_4 + 1 | 0;
    if ($tobool48) {
      $p_5 = $p_4;
      label = 21;
      break;
    } else {
      $p_4 = $incdec_ptr50;
      label = 17;
      break;
    }
   case 18:
    HEAP8[166992] = 1;
    $8 = HEAP32[41638] | 0;
    $conv58 = $8 & 255;
    HEAP8[167960] = $conv58;
    $add_ptr59 = $p_3 + 2 | 0;
    $p_5 = $add_ptr59;
    label = 21;
    break;
   case 19:
    $conv38 = $5 & 255;
    $call67 = _isspace($conv38 | 0) | 0;
    $tobool68 = ($call67 | 0) == 0;
    if ($tobool68) {
      label = 20;
      break;
    } else {
      $p_5 = $p_3;
      label = 21;
      break;
    }
   case 20:
    $9 = HEAP8[$p_3] | 0;
    $conv69 = $9 & 255;
    $call70 = _iscntrl($conv69 | 0) | 0;
    $tobool71 = ($call70 | 0) == 0;
    if ($tobool71) {
      $p_6 = $p_3;
      label = 22;
      break;
    } else {
      $p_5 = $p_3;
      label = 21;
      break;
    }
   case 21:
    $10 = HEAP8[$p_5] | 0;
    $tobool76 = $10 << 24 >> 24 == 0;
    if ($tobool76) {
      $p_6 = $p_5;
      label = 22;
      break;
    } else {
      $p_0 = $p_5;
      label = 3;
      break;
    }
   case 22:
    return $p_6 | 0;
  }
  return 0;
}
function _quoted_string($p, $token) {
  $p = $p | 0;
  $token = $token | 0;
  var $0 = 0, $p_addr_013 = 0, $1 = 0, $tobool14 = 0, $cmp16 = 0, $not_tobool17 = 0, $2 = 0, $3 = 0, $p_addr_020 = 0, $q_019 = 0, $p_pn18 = 0, $cmp5 = 0, $add_ptr = 0, $4 = 0, $cmp9 = 0, $cmp15 = 0, $incdec_ptr19 = 0, $p_addr_1 = 0, $q_1 = 0, $5 = 0, $incdec_ptr23 = 0, $p_addr_0 = 0, $6 = 0, $tobool = 0, $cmp = 0, $not_tobool = 0, $7 = 0, $tobool_lcssa = 0, $p_addr_0_lcssa = 0, $q_0_lcssa = 0, $p_pn_lcssa = 0, $8 = 0, $tobool28 = 0, $cond = 0, $9 = 0, $call = 0, $incdec_ptr30 = 0, $p_addr_2 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$p] | 0;
    $p_addr_013 = $p + 1 | 0;
    $1 = HEAP8[$p_addr_013] | 0;
    $tobool14 = $1 << 24 >> 24 == 0;
    $cmp16 = $1 << 24 >> 24 != $0 << 24 >> 24;
    $not_tobool17 = $tobool14 ^ 1;
    $2 = $cmp16 & $not_tobool17;
    if ($2) {
      $p_pn18 = $p;
      $q_019 = $token;
      $p_addr_020 = $p_addr_013;
      $3 = $1;
      label = 3;
      break;
    } else {
      $p_pn_lcssa = $p;
      $q_0_lcssa = $token;
      $p_addr_0_lcssa = $p_addr_013;
      $tobool_lcssa = $tobool14;
      label = 8;
      break;
    }
   case 3:
    $cmp5 = $3 << 24 >> 24 == 92;
    if ($cmp5) {
      label = 4;
      break;
    } else {
      $q_1 = $q_019;
      $p_addr_1 = $p_addr_020;
      label = 7;
      break;
    }
   case 4:
    $add_ptr = $p_pn18 + 2 | 0;
    $4 = HEAP8[$add_ptr] | 0;
    $cmp9 = $4 << 24 >> 24 == $0 << 24 >> 24;
    if ($cmp9) {
      $q_1 = $q_019;
      $p_addr_1 = $add_ptr;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp15 = $4 << 24 >> 24 == 92;
    if ($cmp15) {
      label = 6;
      break;
    } else {
      $q_1 = $q_019;
      $p_addr_1 = $p_addr_020;
      label = 7;
      break;
    }
   case 6:
    $incdec_ptr19 = $q_019 + 1 | 0;
    HEAP8[$q_019] = $3;
    $q_1 = $incdec_ptr19;
    $p_addr_1 = $add_ptr;
    label = 7;
    break;
   case 7:
    $5 = HEAP8[$p_addr_1] | 0;
    $incdec_ptr23 = $q_1 + 1 | 0;
    HEAP8[$q_1] = $5;
    $p_addr_0 = $p_addr_1 + 1 | 0;
    $6 = HEAP8[$p_addr_0] | 0;
    $tobool = $6 << 24 >> 24 == 0;
    $cmp = $6 << 24 >> 24 != $0 << 24 >> 24;
    $not_tobool = $tobool ^ 1;
    $7 = $cmp & $not_tobool;
    if ($7) {
      $p_pn18 = $p_addr_1;
      $q_019 = $incdec_ptr23;
      $p_addr_020 = $p_addr_0;
      $3 = $6;
      label = 3;
      break;
    } else {
      $p_pn_lcssa = $p_addr_1;
      $q_0_lcssa = $incdec_ptr23;
      $p_addr_0_lcssa = $p_addr_0;
      $tobool_lcssa = $tobool;
      label = 8;
      break;
    }
   case 8:
    if ($tobool_lcssa) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $8 = HEAP32[41740] | 0;
    $tobool28 = ($8 | 0) != 0;
    $cond = $tobool28 ? $8 : 111640;
    $9 = HEAP32[41638] | 0;
    $call = _agerr(0, 145192, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $cond, HEAP32[tempInt + 8 >> 2] = $9, tempInt) | 0) | 0;
    $p_addr_2 = $p_addr_0_lcssa;
    label = 11;
    break;
   case 10:
    $incdec_ptr30 = $p_pn_lcssa + 2 | 0;
    $p_addr_2 = $incdec_ptr30;
    label = 11;
    break;
   case 11:
    HEAP8[$q_0_lcssa] = 0;
    STACKTOP = __stackBase__;
    return $p_addr_2 | 0;
  }
  return 0;
}
function _html_string3314($p, $token) {
  $p = $p | 0;
  $token = $token | 0;
  var $call = 0;
  HEAP8[165432] = HEAP32[41638] & 255;
  $call = _html_pair($p + 1 | 0, $token) | 0;
  return (($call | 0) == 0 ? 0 : $call + 1 | 0) | 0;
}
function _scan_num($p, $token) {
  $p = $p | 0;
  $token = $token | 0;
  var $0 = 0, $cmp = 0, $incdec_ptr = 0, $incdec_ptr2 = 0, $z_0 = 0, $q_0 = 0, $1 = 0, $cmp4 = 0, $incdec_ptr7 = 0, $incdec_ptr8 = 0, $z_1_ph = 0, $saw_rp_0_ph = 0, $q_1_ph = 0, $2 = 0, $conv1040 = 0, $isdigittmp41 = 0, $isdigit42 = 0, $q_144 = 0, $z_143 = 0, $incdec_ptr11 = 0, $3 = 0, $incdec_ptr12 = 0, $4 = 0, $conv10 = 0, $isdigittmp = 0, $isdigit = 0, $q_1_lcssa = 0, $saw_digit_0_lcssa = 0, $z_1_lcssa = 0, $5 = 0, $cmp14 = 0, $cmp16 = 0, $or_cond = 0, $q_231 = 0, $z_232 = 0, $6 = 0, $conv2233 = 0, $isdigittmp2934 = 0, $isdigit3035 = 0, $z_237 = 0, $q_236 = 0, $7 = 0, $q_2 = 0, $z_2 = 0, $8 = 0, $conv22 = 0, $isdigittmp29 = 0, $isdigit30 = 0, $z_3 = 0, $q_3 = 0, $cond28 = 0, $z_351 = 0, $9 = 0, $tobool33 = 0, $conv32 = 0, $call36 = 0, $tobool37 = 0, $10 = 0, $cmp39 = 0, $z_3_pn = 0, $endp_0 = 0, $11 = 0, $tobool44 = 0, $conv43 = 0, $call46 = 0, $cmp49 = 0, $not_tobool47 = 0, $cmp49_ = 0, $12 = 0, $tobool54 = 0, $cond = 0, $13 = 0, $call55 = 0, $z_4 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$p] | 0;
    $cmp = $0 << 24 >> 24 == 45;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $q_0 = $token;
      $z_0 = $p;
      label = 4;
      break;
    }
   case 3:
    $incdec_ptr = $p + 1 | 0;
    $incdec_ptr2 = $token + 1 | 0;
    HEAP8[$token] = $0;
    $q_0 = $incdec_ptr2;
    $z_0 = $incdec_ptr;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$z_0] | 0;
    $cmp4 = $1 << 24 >> 24 == 46;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      $q_1_ph = $q_0;
      $saw_rp_0_ph = 0;
      $z_1_ph = $z_0;
      label = 6;
      break;
    }
   case 5:
    $incdec_ptr7 = $z_0 + 1 | 0;
    $incdec_ptr8 = $q_0 + 1 | 0;
    HEAP8[$q_0] = $1;
    $q_1_ph = $incdec_ptr8;
    $saw_rp_0_ph = 1;
    $z_1_ph = $incdec_ptr7;
    label = 6;
    break;
   case 6:
    $2 = HEAP8[$z_1_ph] | 0;
    $conv1040 = $2 & 255;
    $isdigittmp41 = $conv1040 - 48 | 0;
    $isdigit42 = $isdigittmp41 >>> 0 < 10;
    if ($isdigit42) {
      $z_143 = $z_1_ph;
      $q_144 = $q_1_ph;
      label = 7;
      break;
    } else {
      $z_1_lcssa = $z_1_ph;
      $saw_digit_0_lcssa = 0;
      $q_1_lcssa = $q_1_ph;
      label = 8;
      break;
    }
   case 7:
    $incdec_ptr11 = $z_143 + 1 | 0;
    $3 = HEAP8[$z_143] | 0;
    $incdec_ptr12 = $q_144 + 1 | 0;
    HEAP8[$q_144] = $3;
    $4 = HEAP8[$incdec_ptr11] | 0;
    $conv10 = $4 & 255;
    $isdigittmp = $conv10 - 48 | 0;
    $isdigit = $isdigittmp >>> 0 < 10;
    if ($isdigit) {
      $z_143 = $incdec_ptr11;
      $q_144 = $incdec_ptr12;
      label = 7;
      break;
    } else {
      $z_1_lcssa = $incdec_ptr11;
      $saw_digit_0_lcssa = 1;
      $q_1_lcssa = $incdec_ptr12;
      label = 8;
      break;
    }
   case 8:
    $5 = HEAP8[$z_1_lcssa] | 0;
    $cmp14 = $5 << 24 >> 24 == 46;
    $cmp16 = ($saw_rp_0_ph | 0) == 0;
    $or_cond = $cmp14 & $cmp16;
    if ($or_cond) {
      label = 9;
      break;
    } else {
      $q_3 = $q_1_lcssa;
      $z_3 = $z_1_lcssa;
      label = 12;
      break;
    }
   case 9:
    HEAP8[$q_1_lcssa] = $5;
    $q_231 = $q_1_lcssa + 1 | 0;
    $z_232 = $z_1_lcssa + 1 | 0;
    $6 = HEAP8[$z_232] | 0;
    $conv2233 = $6 & 255;
    $isdigittmp2934 = $conv2233 - 48 | 0;
    $isdigit3035 = $isdigittmp2934 >>> 0 < 10;
    if ($isdigit3035) {
      $q_236 = $q_231;
      $z_237 = $z_232;
      label = 10;
      break;
    } else {
      $q_3 = $q_231;
      $z_3 = $z_232;
      label = 12;
      break;
    }
   case 10:
    $7 = HEAP8[$z_237] | 0;
    HEAP8[$q_236] = $7;
    $q_2 = $q_236 + 1 | 0;
    $z_2 = $z_237 + 1 | 0;
    $8 = HEAP8[$z_2] | 0;
    $conv22 = $8 & 255;
    $isdigittmp29 = $conv22 - 48 | 0;
    $isdigit30 = $isdigittmp29 >>> 0 < 10;
    if ($isdigit30) {
      $q_236 = $q_2;
      $z_237 = $z_2;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    HEAP8[$q_2] = 0;
    $z_351 = $z_2;
    label = 13;
    break;
   case 12:
    HEAP8[$q_3] = 0;
    $cond28 = ($saw_digit_0_lcssa | 0) == 0;
    if ($cond28) {
      $z_4 = 0;
      label = 19;
      break;
    } else {
      $z_351 = $z_3;
      label = 13;
      break;
    }
   case 13:
    $9 = HEAP8[$z_351] | 0;
    $tobool33 = $9 << 24 >> 24 == 0;
    if ($tobool33) {
      $z_4 = $z_351;
      label = 19;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $conv32 = $9 & 255;
    $call36 = _isalpha($conv32 | 0) | 0;
    $tobool37 = ($call36 | 0) == 0;
    if ($tobool37) {
      label = 15;
      break;
    } else {
      $z_3_pn = $z_351;
      label = 16;
      break;
    }
   case 15:
    $10 = HEAP8[$z_351] | 0;
    $cmp39 = $10 << 24 >> 24 == 95;
    if ($cmp39) {
      $z_3_pn = $z_351;
      label = 16;
      break;
    } else {
      $z_4 = $z_351;
      label = 19;
      break;
    }
   case 16:
    $endp_0 = $z_3_pn + 1 | 0;
    $11 = HEAP8[$endp_0] | 0;
    $tobool44 = $11 << 24 >> 24 == 0;
    if ($tobool44) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $conv43 = $11 & 255;
    $call46 = _isalpha($conv43 | 0) | 0;
    $cmp49 = $11 << 24 >> 24 == 95;
    $not_tobool47 = ($call46 | 0) != 0;
    $cmp49_ = $cmp49 | $not_tobool47;
    if ($cmp49_) {
      $z_3_pn = $endp_0;
      label = 16;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    HEAP8[$endp_0] = 0;
    $12 = HEAP32[41740] | 0;
    $tobool54 = ($12 | 0) != 0;
    $cond = $tobool54 ? $12 : 111640;
    $13 = HEAP32[41638] | 0;
    $call55 = _agerr(0, 151040, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = $cond, HEAP32[tempInt + 8 >> 2] = $13, HEAP32[tempInt + 16 >> 2] = $p, HEAP32[tempInt + 24 >> 2] = $token, HEAP32[tempInt + 32 >> 2] = $z_351, tempInt) | 0) | 0;
    HEAP8[$endp_0] = $11;
    $z_4 = $z_351;
    label = 19;
    break;
   case 19:
    STACKTOP = __stackBase__;
    return $z_4 | 0;
  }
  return 0;
}
function _scan_token($p, $token) {
  $p = $p | 0;
  $token = $token | 0;
  var $cmp = 0, $p_addr_0 = 0, $q_0 = 0, $0 = 0, $conv = 0, $call = 0, $tobool = 0, $1 = 0, $cmp2 = 0, $lnot = 0, $or_cond = 0, $incdec_ptr = 0, $2 = 0, $incdec_ptr7 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($p | 0) == 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      $q_0 = $token;
      $p_addr_0 = $p;
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$p_addr_0] | 0;
    $conv = $0 & 255;
    $call = _isalnum($conv | 0) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $1 = HEAP8[$p_addr_0] | 0;
    $cmp2 = $1 << 24 >> 24 == 95;
    $lnot = $1 << 24 >> 24 < 0;
    $or_cond = $cmp2 | $lnot;
    if ($or_cond) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $incdec_ptr = $p_addr_0 + 1 | 0;
    $2 = HEAP8[$p_addr_0] | 0;
    $incdec_ptr7 = $q_0 + 1 | 0;
    HEAP8[$q_0] = $2;
    $q_0 = $incdec_ptr7;
    $p_addr_0 = $incdec_ptr;
    label = 3;
    break;
   case 6:
    HEAP8[$q_0] = 0;
    $retval_0 = $p_addr_0;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _agerror($msg) {
  $msg = $msg | 0;
  var $0 = 0, $inc = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $cond = 0, $2 = 0, $call = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP16[84282] | 0;
    $inc = $0 + 1 & 65535;
    HEAP16[84282] = $inc;
    $tobool = $0 << 16 >> 16 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $1 = HEAP32[41740] | 0;
    $tobool1 = ($1 | 0) != 0;
    $cond = $tobool1 ? $1 : 111640;
    $2 = HEAP32[41638] | 0;
    $call = _agerr(1, 116856, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $cond, HEAP32[tempInt + 8 >> 2] = $2, HEAP32[tempInt + 16 >> 2] = $msg, HEAP32[tempInt + 24 >> 2] = $2, tempInt) | 0) | 0;
    _error_context2903();
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return;
  }
}
function _error_context2903() {
  var $0 = 0, $add_ptr = 0, $1 = 0, $cmp = 0, $call = 0, $2 = 0, $_pn = 0, $p_0 = 0, $cmp2 = 0, $3 = 0, $conv = 0, $call3 = 0, $lnot = 0, $4 = 0, $call7 = 0, $call9 = 0, $5 = 0, $6 = 0, $call10 = 0, $7 = 0, $call11 = 0, $8 = 0, $call12 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[42140] | 0;
    $add_ptr = $0 + 1 | 0;
    $1 = HEAP32[41652] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _agerr(3, 161744, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $2 = HEAP32[41652] | 0;
    $_pn = $2;
    label = 4;
    break;
   case 4:
    $p_0 = $_pn - 1 | 0;
    $cmp2 = $p_0 >>> 0 > $add_ptr >>> 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $3 = HEAP8[$p_0] | 0;
    $conv = $3 & 255;
    $call3 = _isspace($conv | 0) | 0;
    $lnot = ($call3 | 0) == 0;
    if ($lnot) {
      $_pn = $p_0;
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = HEAP8[$p_0] | 0;
    HEAP8[$p_0] = 0;
    $call7 = _agerr(3, $add_ptr, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    HEAP8[$p_0] = $4;
    label = 7;
    break;
   case 7:
    $call9 = _agerr(3, 158208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $5 = HEAP32[41652] | 0;
    $6 = HEAP8[$5] | 0;
    HEAP8[$5] = 0;
    $call10 = _agerr(3, $p_0, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $7 = HEAP32[41652] | 0;
    HEAP8[$7] = $6;
    $call11 = _agerr(3, 154728, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    $8 = HEAP32[41652] | 0;
    $call12 = _agerr(3, $8, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _agerr_va($level, $fmt, $args) {
  $level = $level | 0;
  $fmt = $fmt | 0;
  $args = $args | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $cond = 0, $cond5 = 0, $1 = 0, $cmp6 = 0, $cond10 = 0, $2 = 0, $cmp11 = 0, $3 = 0, $tobool = 0, $4 = 0, $cmp15 = 0, $cond16 = 0, $call = 0, $5 = 0, $call17 = 0, $6 = 0, $7 = 0, $tobool20 = 0, $call22 = 0, $tobool23 = 0, $8 = 0, $call29 = 0, $9 = 0, $call31 = 0, $10 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($level | 0) == 3;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[22294] | 0;
    $cond5 = $0;
    label = 5;
    break;
   case 4:
    $cmp1 = ($level | 0) == 2;
    $cond = $cmp1 ? 1 : $level;
    $cond5 = $cond;
    label = 5;
    break;
   case 5:
    HEAP32[22294] = $cond5;
    $1 = HEAP32[22284] | 0;
    $cmp6 = $1 >>> 0 > $cond5 >>> 0;
    $cond10 = $cmp6 ? $1 : $cond5;
    HEAP32[22284] = $cond10;
    $2 = HEAP32[22296] | 0;
    $cmp11 = $cond5 >>> 0 < $2 >>> 0;
    if ($cmp11) {
      label = 11;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP32[228] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _userout($level, $fmt, $args);
    $retval_0 = 0;
    label = 16;
    break;
   case 8:
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $4 = HEAP32[_stderr >> 2] | 0;
    $cmp15 = ($level | 0) == 1;
    $cond16 = $cmp15 ? 103384 : 99184;
    $call = _fprintf($4 | 0, 107312, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $cond16, tempInt) | 0) | 0;
    label = 10;
    break;
   case 10:
    $5 = HEAP32[_stderr >> 2] | 0;
    $call17 = _vfprintf($5 | 0, $fmt | 0, $args | 0) | 0;
    $6 = $args;
    $retval_0 = 0;
    label = 16;
    break;
   case 11:
    $7 = HEAP32[22292] | 0;
    $tobool20 = ($7 | 0) == 0;
    if ($tobool20) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $call22 = _tmpfile() | 0;
    HEAP32[22292] = $call22;
    $tobool23 = ($call22 | 0) == 0;
    if ($tobool23) {
      $retval_0 = 1;
      label = 16;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    if ($cmp) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $8 = HEAP32[22292] | 0;
    $call29 = _ftell($8 | 0) | 0;
    HEAP32[22290] = $call29;
    label = 15;
    break;
   case 15:
    $9 = HEAP32[22292] | 0;
    $call31 = _vfprintf($9 | 0, $fmt | 0, $args | 0) | 0;
    $10 = $args;
    $retval_0 = 0;
    label = 16;
    break;
   case 16:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _agerrorf($fmt, varrp) {
  $fmt = $fmt | 0;
  varrp = varrp | 0;
  var $args = 0, $arraydecay1 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  $args = __stackBase__ | 0;
  $arraydecay1 = $args;
  HEAP32[$arraydecay1 >> 2] = varrp;
  HEAP32[$arraydecay1 + 4 >> 2] = 0;
  _agerr_va(1, $fmt, $args | 0);
  STACKTOP = __stackBase__;
  return;
}
function _userout($level, $fmt, $args) {
  $level = $level | 0;
  $fmt = $fmt | 0;
  $args = $args | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $call = 0, $tobool1 = 0, $2 = 0, $3 = 0, $cmp = 0, $4 = 0, $cmp6 = 0, $cond = 0, $call7 = 0, $5 = 0, $call8 = 0, $6 = 0, $7 = 0, $call10 = 0, $cmp11 = 0, $8 = 0, $cmp12 = 0, $or_cond = 0, $9 = 0, $10 = 0, $call14 = 0, $11 = 0, $mul = 0, $add = 0, $cmp16 = 0, $mul_add = 0, $12 = 0, $call20 = 0, $cmp21 = 0, $13 = 0, $14 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[226] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $1 = HEAP32[224] | 0;
    $call = _malloc($1) | 0;
    HEAP32[226] = $call;
    $tobool1 = ($call | 0) == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $2 = HEAP32[_stderr >> 2] | 0;
    $3 = _fwrite(95136, 35, 1, $2 | 0) | 0;
    label = 11;
    break;
   case 5:
    $cmp = ($level | 0) == 3;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = HEAP32[228] | 0;
    $cmp6 = ($level | 0) == 1;
    $cond = $cmp6 ? 103384 : 99184;
    $call7 = FUNCTION_TABLE_ii[$4 & 1023]($cond) | 0;
    $5 = HEAP32[228] | 0;
    $call8 = FUNCTION_TABLE_ii[$5 & 1023](91592) | 0;
    label = 7;
    break;
   case 7:
    $6 = HEAP32[226] | 0;
    $7 = HEAP32[224] | 0;
    $call10 = _vsnprintf($6 | 0, $7 | 0, $fmt | 0, $args | 0) | 0;
    $cmp11 = ($call10 | 0) > -1;
    $8 = HEAP32[224] | 0;
    $cmp12 = ($call10 | 0) < ($8 | 0);
    $or_cond = $cmp11 & $cmp12;
    if ($or_cond) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $9 = HEAP32[228] | 0;
    $10 = HEAP32[226] | 0;
    $call14 = FUNCTION_TABLE_ii[$9 & 1023]($10) | 0;
    $11 = $args;
    label = 11;
    break;
   case 9:
    $mul = $8 << 1;
    $add = $call10 + 1 | 0;
    $cmp16 = ($mul | 0) > ($add | 0);
    $mul_add = $cmp16 ? $mul : $add;
    HEAP32[224] = $mul_add;
    $12 = HEAP32[226] | 0;
    $call20 = _realloc($12, $mul_add) | 0;
    $cmp21 = ($call20 | 0) == 0;
    if ($cmp21) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    $13 = HEAP32[_stderr >> 2] | 0;
    $14 = _fwrite(95136, 35, 1, $13 | 0) | 0;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _html_pair($p, $tokp) {
  $p = $p | 0;
  $tokp = $tokp | 0;
  var $ptr = 0, $eptr = 0, $p_addr_0_ph = 0, $depth_0_ph = 0, $p_addr_0 = 0, $0 = 0, $dec = 0, $cmp4 = 0, $inc = 0, $depth_1 = 0, $1 = 0, $2 = 0, $cmp13 = 0, $call = 0, $3 = 0, $incdec_ptr = 0, $incdec_ptr17 = 0, $call18 = 0, $cmp19 = 0, $4 = 0, $conv22 = 0, $5 = 0, $tobool23 = 0, $cond27 = 0, $call28 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr = $tokp + 4 | 0;
    $eptr = $tokp + 8 | 0;
    $depth_0_ph = 1;
    $p_addr_0_ph = $p;
    label = 3;
    break;
   case 3:
    $p_addr_0 = $p_addr_0_ph;
    label = 4;
    break;
   case 4:
    $0 = HEAP8[$p_addr_0] | 0;
    if (($0 << 24 >> 24 | 0) == 62) {
      label = 5;
      break;
    } else if (($0 << 24 >> 24 | 0) == 60) {
      label = 6;
      break;
    } else if (($0 << 24 >> 24 | 0) == 0) {
      label = 10;
      break;
    } else {
      $depth_1 = $depth_0_ph;
      label = 7;
      break;
    }
   case 5:
    $dec = $depth_0_ph - 1 | 0;
    $cmp4 = ($dec | 0) == 0;
    if ($cmp4) {
      $retval_0 = $p_addr_0;
      label = 12;
      break;
    } else {
      $depth_1 = $dec;
      label = 7;
      break;
    }
   case 6:
    $inc = $depth_0_ph + 1 | 0;
    $depth_1 = $inc;
    label = 7;
    break;
   case 7:
    $1 = HEAP32[$ptr >> 2] | 0;
    $2 = HEAP32[$eptr >> 2] | 0;
    $cmp13 = $1 >>> 0 < $2 >>> 0;
    if ($cmp13) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call = _agxbmore($tokp, 1) | 0;
    label = 9;
    break;
   case 9:
    $3 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$3] = $0;
    $incdec_ptr17 = $p_addr_0 + 1 | 0;
    $depth_0_ph = $depth_1;
    $p_addr_0_ph = $incdec_ptr17;
    label = 3;
    break;
   case 10:
    $call18 = _lex_gets() | 0;
    $cmp19 = ($call18 | 0) == 0;
    if ($cmp19) {
      label = 11;
      break;
    } else {
      $p_addr_0 = $call18;
      label = 4;
      break;
    }
   case 11:
    $4 = HEAP8[165432] | 0;
    $conv22 = $4 & 255;
    $5 = HEAP32[41740] | 0;
    $tobool23 = ($5 | 0) != 0;
    $cond27 = $tobool23 ? $5 : 111640;
    $call28 = _agerr(0, 147984, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv22, HEAP32[tempInt + 8 >> 2] = $cond27, tempInt) | 0) | 0;
    $retval_0 = 0;
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _storeFileName($fname, $len) {
  $fname = $fname | 0;
  $len = $len | 0;
  var $0 = 0, $cmp = 0, $tobool = 0, $1 = 0, $add = 0, $call = 0, $add2 = 0, $call3 = 0, $storemerge = 0, $2 = 0, $call5 = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[1026] | 0;
    $cmp = ($0 | 0) < ($len | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP32[1028] | 0;
    $add = $len + 1 | 0;
    $call = _realloc($1, $add) | 0;
    $storemerge = $call;
    label = 6;
    break;
   case 5:
    $add2 = $len + 1 | 0;
    $call3 = _malloc($add2) | 0;
    $storemerge = $call3;
    label = 6;
    break;
   case 6:
    HEAP32[1028] = $storemerge;
    HEAP32[1026] = $len;
    label = 7;
    break;
   case 7:
    $2 = HEAP32[1028] | 0;
    $call5 = _strcpy($2 | 0, $fname | 0) | 0;
    $3 = HEAP32[1028] | 0;
    HEAP32[41740] = $3;
    return;
  }
}
function _agfindnode($g, $name) {
  $g = $g | 0;
  $name = $name | 0;
  var $univ = 0, $0 = 0, $node_dict = 0, $1 = 0, $searchf = 0, $2 = 0, $call = 0, $3 = 0, $tobool = 0, $root = 0, $4 = 0, $cmp = 0, $nodes = 0, $5 = 0, $searchf3 = 0, $6 = 0, $call5 = 0, $7 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $univ = $g + 16 | 0;
    $0 = HEAP32[$univ >> 2] | 0;
    $node_dict = $0 | 0;
    $1 = HEAP32[$node_dict >> 2] | 0;
    $searchf = $1 | 0;
    $2 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$2 & 1023]($1, $name, 512) | 0;
    $3 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $rv_0 = $3;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $root = $g + 32 | 0;
    $4 = HEAP32[$root >> 2] | 0;
    $cmp = ($4 | 0) == ($g | 0);
    if ($cmp) {
      $rv_0 = $3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $nodes = $g + 20 | 0;
    $5 = HEAP32[$nodes >> 2] | 0;
    $searchf3 = $5 | 0;
    $6 = HEAP32[$searchf3 >> 2] | 0;
    $call5 = FUNCTION_TABLE_iiii[$6 & 1023]($5, $call, 4) | 0;
    $7 = $call5;
    $rv_0 = $7;
    label = 5;
    break;
   case 5:
    return $rv_0 | 0;
  }
  return 0;
}
function _agidnode($g, $index) {
  $g = $g | 0;
  $index = $index | 0;
  var $index_addr = 0, $0 = 0, $3 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  $index_addr = __stackBase__ | 0;
  HEAP32[$index_addr >> 2] = $index;
  $0 = HEAP32[$g + 20 >> 2] | 0;
  $3 = FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, $index_addr, 512) | 0;
  STACKTOP = __stackBase__;
  return $3 | 0;
}
function _agnode($g, $name) {
  $g = $g | 0;
  $name = $name | 0;
  var $root = 0, $0 = 0, $call = 0, $cmp = 0, $proto = 0, $1 = 0, $n1 = 0, $2 = 0, $call2 = 0, $univ = 0, $3 = 0, $node_dict = 0, $4 = 0, $searchf = 0, $5 = 0, $6 = 0, $call5 = 0, $n_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $call = _agfindnode($0, $name) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $n_0 = $call;
      label = 4;
      break;
    }
   case 3:
    $proto = $g + 40 | 0;
    $1 = HEAP32[$proto >> 2] | 0;
    $n1 = $1 | 0;
    $2 = HEAP32[$n1 >> 2] | 0;
    $call2 = _agNEWnode($g, $name, $2) | 0;
    $univ = $g + 16 | 0;
    $3 = HEAP32[$univ >> 2] | 0;
    $node_dict = $3 | 0;
    $4 = HEAP32[$node_dict >> 2] | 0;
    $searchf = $4 | 0;
    $5 = HEAP32[$searchf >> 2] | 0;
    $6 = $call2 | 0;
    $call5 = FUNCTION_TABLE_iiii[$5 & 1023]($4, $6, 1) | 0;
    $n_0 = $call2;
    label = 4;
    break;
   case 4:
    _agINSnode($g, $n_0);
    return $n_0 | 0;
  }
  return 0;
}
function _agNEWnode($subg, $name, $proto) {
  $subg = $subg | 0;
  $name = $name | 0;
  $proto = $proto | 0;
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $call1 = 0, $name2 = 0, $6 = 0, $univ = 0, $7 = 0, $max_node_id = 0, $8 = 0, $inc = 0, $id = 0, $9 = 0, $root = 0, $10 = 0, $graph = 0, $11 = 0, $12 = 0, $nodeattr = 0, $13 = 0, $dict = 0, $14 = 0, $call4 = 0, $tobool = 0, $attr7 = 0, $15 = 0, $didset8 = 0, $16 = 0, $call5 = 0, $17 = 0, $attr = 0, $18 = 0, $sub = 0, $div = 0, $call6 = 0, $didset = 0, $19 = 0, $cmp20 = 0, $tobool9 = 0, $attr15 = 0, $20 = 0, $attr10 = 0, $i_021 = 0, $21 = 0, $arrayidx = 0, $22 = 0, $nodeattr12 = 0, $23 = 0, $list = 0, $24 = 0, $arrayidx13 = 0, $25 = 0, $value = 0, $cond_in = 0, $cond = 0, $call14 = 0, $26 = 0, $arrayidx16 = 0, $inc17 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[42135] | 0;
    $call = _calloc(1, $0) | 0;
    $1 = $call;
    $2 = $call;
    $3 = HEAP32[$2 >> 2] | 0;
    $4 = $3 & -16;
    $5 = $4 | 1;
    HEAP32[$2 >> 2] = $5;
    $call1 = _agstrdup($name) | 0;
    $name2 = $call + 12 | 0;
    $6 = $name2;
    HEAP32[$6 >> 2] = $call1;
    $univ = $subg + 16 | 0;
    $7 = HEAP32[$univ >> 2] | 0;
    $max_node_id = $7 + 16 | 0;
    $8 = HEAP32[$max_node_id >> 2] | 0;
    $inc = $8 + 1 | 0;
    HEAP32[$max_node_id >> 2] = $inc;
    $id = $call + 16 | 0;
    $9 = $id;
    HEAP32[$9 >> 2] = $8;
    $root = $subg + 32 | 0;
    $10 = HEAP32[$root >> 2] | 0;
    $graph = $call + 20 | 0;
    $11 = $graph;
    HEAP32[$11 >> 2] = $10;
    $12 = HEAP32[$univ >> 2] | 0;
    $nodeattr = $12 + 4 | 0;
    $13 = HEAP32[$nodeattr >> 2] | 0;
    $dict = $13 + 4 | 0;
    $14 = HEAP32[$dict >> 2] | 0;
    $call4 = _dtsize($14) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $attr7 = $call + 4 | 0;
    $15 = $attr7;
    HEAP32[$15 >> 2] = 0;
    $didset8 = $call + 8 | 0;
    $16 = $didset8;
    HEAP32[$16 >> 2] = 0;
    label = 10;
    break;
   case 4:
    $call5 = _calloc($call4, 4) | 0;
    $17 = $call5;
    $attr = $call + 4 | 0;
    $18 = $attr;
    HEAP32[$18 >> 2] = $17;
    $sub = $call4 + 7 | 0;
    $div = ($sub | 0) / 8 & -1;
    $call6 = _calloc($div, 1) | 0;
    $didset = $call + 8 | 0;
    $19 = $didset;
    HEAP32[$19 >> 2] = $call6;
    $cmp20 = ($call4 | 0) > 0;
    if ($cmp20) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $tobool9 = ($proto | 0) == 0;
    $attr15 = $call + 4 | 0;
    $20 = $attr15;
    $attr10 = $proto + 4 | 0;
    $i_021 = 0;
    label = 6;
    break;
   case 6:
    if ($tobool9) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $21 = HEAP32[$attr10 >> 2] | 0;
    $arrayidx = $21 + ($i_021 << 2) | 0;
    $cond_in = $arrayidx;
    label = 9;
    break;
   case 8:
    $22 = HEAP32[$univ >> 2] | 0;
    $nodeattr12 = $22 + 4 | 0;
    $23 = HEAP32[$nodeattr12 >> 2] | 0;
    $list = $23 + 8 | 0;
    $24 = HEAP32[$list >> 2] | 0;
    $arrayidx13 = $24 + ($i_021 << 2) | 0;
    $25 = HEAP32[$arrayidx13 >> 2] | 0;
    $value = $25 + 4 | 0;
    $cond_in = $value;
    label = 9;
    break;
   case 9:
    $cond = HEAP32[$cond_in >> 2] | 0;
    $call14 = _agstrdup($cond) | 0;
    $26 = HEAP32[$20 >> 2] | 0;
    $arrayidx16 = $26 + ($i_021 << 2) | 0;
    HEAP32[$arrayidx16 >> 2] = $call14;
    $inc17 = $i_021 + 1 | 0;
    $cmp = ($inc17 | 0) < ($call4 | 0);
    if ($cmp) {
      $i_021 = $inc17;
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    return $1 | 0;
  }
  return 0;
}
function _agINSnode($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $id = 0, $0 = 0, $call = 0, $tobool = 0, $nodes = 0, $1 = 0, $searchf = 0, $2 = 0, $3 = 0, $call2 = 0, $4 = 0, $5 = 0, $and = 0, $cmp = 0, $meta_node = 0, $6 = 0, $graph = 0, $7 = 0, $call5 = 0, $tobool612 = 0, $e_013 = 0, $tail = 0, $8 = 0, $9 = 0, $call7 = 0, $10 = 0, $call8 = 0, $tobool6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $id = $n + 16 | 0;
    $0 = HEAP32[$id >> 2] | 0;
    $call = _agidnode($g, $0) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $nodes = $g + 20 | 0;
    $1 = HEAP32[$nodes >> 2] | 0;
    $searchf = $1 | 0;
    $2 = HEAP32[$searchf >> 2] | 0;
    $3 = $n | 0;
    $call2 = FUNCTION_TABLE_iiii[$2 & 1023]($1, $3, 1) | 0;
    $4 = $g;
    $5 = HEAP32[$4 >> 2] | 0;
    $and = $5 & 64;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $meta_node = $g + 36 | 0;
    $6 = HEAP32[$meta_node >> 2] | 0;
    $graph = $6 + 20 | 0;
    $7 = HEAP32[$graph >> 2] | 0;
    $call5 = _agfstin($7, $6) | 0;
    $tobool612 = ($call5 | 0) == 0;
    if ($tobool612) {
      label = 6;
      break;
    } else {
      $e_013 = $call5;
      label = 5;
      break;
    }
   case 5:
    $tail = $e_013 + 16 | 0;
    $8 = HEAP32[$tail >> 2] | 0;
    $9 = $8;
    $call7 = _agusergraph($9) | 0;
    $10 = $call7;
    _agINSnode($10, $n);
    $call8 = _agnxtin($7, $e_013) | 0;
    $tobool6 = ($call8 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      $e_013 = $call8;
      label = 5;
      break;
    }
   case 6:
    return;
  }
}
function _agDELnode($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $call = 0, $tobool25 = 0, $e_026 = 0, $call1 = 0, $tobool = 0, $0 = 0, $1 = 0, $and = 0, $cmp = 0, $meta_node = 0, $2 = 0, $graph = 0, $3 = 0, $call3 = 0, $tobool523 = 0, $4 = 0, $e_124 = 0, $head = 0, $5 = 0, $6 = 0, $call7 = 0, $nodes = 0, $7 = 0, $8 = 0, $searchf = 0, $9 = 0, $call9 = 0, $tobool10 = 0, $10 = 0, $call13 = 0, $tobool5 = 0, $nodes16 = 0, $11 = 0, $searchf17 = 0, $12 = 0, $13 = 0, $call19 = 0, $root = 0, $14 = 0, $cmp20 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _agfstedge($g, $n) | 0;
    $tobool25 = ($call | 0) == 0;
    if ($tobool25) {
      label = 4;
      break;
    } else {
      $e_026 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agnxtedge($g, $e_026, $n) | 0;
    _agDELedge($g, $e_026);
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $e_026 = $call1;
      label = 3;
      break;
    }
   case 4:
    $0 = $g;
    $1 = HEAP32[$0 >> 2] | 0;
    $and = $1 & 64;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $meta_node = $g + 36 | 0;
    $2 = HEAP32[$meta_node >> 2] | 0;
    $graph = $2 + 20 | 0;
    $3 = HEAP32[$graph >> 2] | 0;
    $call3 = _agfstout($3, $2) | 0;
    $tobool523 = ($call3 | 0) == 0;
    if ($tobool523) {
      label = 10;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $4 = $n | 0;
    $e_124 = $call3;
    label = 7;
    break;
   case 7:
    $head = $e_124 + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $6 = $5;
    $call7 = _agusergraph($6) | 0;
    $nodes = $call7 + 20 | 0;
    $7 = HEAP32[$nodes >> 2] | 0;
    $8 = $7;
    $searchf = $7;
    $9 = HEAP32[$searchf >> 2] | 0;
    $call9 = FUNCTION_TABLE_iiii[$9 & 1023]($8, $4, 4) | 0;
    $tobool10 = ($call9 | 0) == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $10 = $call7;
    _agDELnode($10, $n);
    label = 9;
    break;
   case 9:
    $call13 = _agnxtout($3, $e_124) | 0;
    $tobool5 = ($call13 | 0) == 0;
    if ($tobool5) {
      label = 10;
      break;
    } else {
      $e_124 = $call13;
      label = 7;
      break;
    }
   case 10:
    $nodes16 = $g + 20 | 0;
    $11 = HEAP32[$nodes16 >> 2] | 0;
    $searchf17 = $11 | 0;
    $12 = HEAP32[$searchf17 >> 2] | 0;
    $13 = $n | 0;
    $call19 = FUNCTION_TABLE_iiii[$12 & 1023]($11, $13, 2) | 0;
    $root = $g + 32 | 0;
    $14 = HEAP32[$root >> 2] | 0;
    $cmp20 = ($14 | 0) == ($g | 0);
    if ($cmp20) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _agFREEnode($n);
    label = 12;
    break;
   case 12:
    return;
  }
}
function _agFREEnode($n) {
  $n = $n | 0;
  var $0 = 0, $graph = 0, $1 = 0, $univ = 0, $2 = 0, $node_dict = 0, $3 = 0, $searchf = 0, $4 = 0, $call4 = 0, $5 = 0, $6 = 0, $7 = 0, $name = 0, $8 = 0, $9 = 0, $10 = 0, $11 = 0, $and = 0, $cmp = 0, $univ7 = 0, $12 = 0, $nodeattr = 0, $13 = 0, $dict8 = 0, $14 = 0, $call9 = 0, $cmp1015 = 0, $attr = 0, $i_016 = 0, $15 = 0, $arrayidx = 0, $16 = 0, $inc = 0, $cmp10 = 0, $attr11 = 0, $17 = 0, $18 = 0, $didset = 0, $19 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $n | 0;
    $graph = $n + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $univ = $1 + 16 | 0;
    $2 = HEAP32[$univ >> 2] | 0;
    $node_dict = $2 | 0;
    $3 = HEAP32[$node_dict >> 2] | 0;
    $searchf = $3 | 0;
    $4 = HEAP32[$searchf >> 2] | 0;
    $call4 = FUNCTION_TABLE_iiii[$4 & 1023]($3, $0, 2) | 0;
    $5 = $n;
    $6 = HEAP32[$5 >> 2] | 0;
    $7 = $6 | 15;
    HEAP32[$5 >> 2] = $7;
    $name = $n + 12 | 0;
    $8 = HEAP32[$name >> 2] | 0;
    _agstrfree($8);
    $9 = HEAP32[$graph >> 2] | 0;
    $10 = $9;
    $11 = HEAP32[$10 >> 2] | 0;
    $and = $11 & 64;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $univ7 = $9 + 16 | 0;
    $12 = HEAP32[$univ7 >> 2] | 0;
    $nodeattr = $12 + 4 | 0;
    $13 = HEAP32[$nodeattr >> 2] | 0;
    $dict8 = $13 + 4 | 0;
    $14 = HEAP32[$dict8 >> 2] | 0;
    $call9 = _dtsize($14) | 0;
    $cmp1015 = ($call9 | 0) > 0;
    if ($cmp1015) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $attr = $n + 4 | 0;
    $i_016 = 0;
    label = 5;
    break;
   case 5:
    $15 = HEAP32[$attr >> 2] | 0;
    $arrayidx = $15 + ($i_016 << 2) | 0;
    $16 = HEAP32[$arrayidx >> 2] | 0;
    _agstrfree($16);
    $inc = $i_016 + 1 | 0;
    $cmp10 = ($inc | 0) < ($call9 | 0);
    if ($cmp10) {
      $i_016 = $inc;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $attr11 = $n + 4 | 0;
    $17 = HEAP32[$attr11 >> 2] | 0;
    $18 = $17;
    _free($18);
    $didset = $n + 8 | 0;
    $19 = HEAP32[$didset >> 2] | 0;
    _free($19);
    _free($0);
    return;
  }
}
function _agfstnode($g) {
  $g = $g | 0;
  var $0 = 0;
  $0 = HEAP32[$g + 20 >> 2] | 0;
  return FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, 0, 128) | 0;
}
function _agnxtnode($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $0 = 0;
  $0 = HEAP32[$g + 20 >> 2] | 0;
  return FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, $n | 0, 8) | 0;
}
function _aglstnode($g) {
  $g = $g | 0;
  var $0 = 0;
  $0 = HEAP32[$g + 20 >> 2] | 0;
  return FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, 0, 256) | 0;
}
function _agprvnode($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $0 = 0;
  $0 = HEAP32[$g + 20 >> 2] | 0;
  return FUNCTION_TABLE_iiii[HEAP32[$0 >> 2] & 1023]($0, $n | 0, 16) | 0;
}
function _agparse() {
  var $agssa = 0, $agvsa = 0, $tmp = 0, $tmp211 = 0, $tmp215 = 0, $tmp218 = 0, $arraydecay = 0, $arraydecay1 = 0, $agval_sroa_0_0__idx28 = 0, $agval_sroa_1_4__idx39 = 0, $agval_sroa_0_0__idx26 = 0, $agval_sroa_1_4__idx37 = 0, $agval_sroa_0_0__idx24 = 0, $agval_sroa_1_4__idx35 = 0, $agval_sroa_0_0__idx22 = 0, $agval_sroa_1_4__idx33 = 0, $agvsp_0 = 0, $agssp_0 = 0, $agerrstatus_0 = 0, $agstate_0 = 0, $incdec_ptr = 0, $agstacksize_0 = 0, $agvsp_1 = 0, $agvs_0 = 0, $agssp_1 = 0, $agss_0 = 0, $agerrstatus_1 = 0, $agstate_1 = 0, $conv = 0, $add_ptr_sum = 0, $add_ptr2 = 0, $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $sub_ptr_div = 0, $add = 0, $cmp4 = 0, $mul = 0, $cmp7 = 0, $_mul = 0, $mul11 = 0, $add12 = 0, $call = 0, $tobool = 0, $0 = 0, $agss_alloc = 0, $1 = 0, $mul15 = 0, $mul17 = 0, $add18 = 0, $div = 0, $agvs_alloc = 0, $2 = 0, $3 = 0, $mul22 = 0, $cmp30 = 0, $add_ptr35 = 0, $add_ptr37 = 0, $add_ptr38_sum = 0, $cmp40 = 0, $agstacksize_2 = 0, $agvsp_2 = 0, $agvs_1 = 0, $agssp_2 = 0, $agss_1 = 0, $cmp45 = 0, $arrayidx = 0, $4 = 0, $conv49 = 0, $cmp50 = 0, $5 = 0, $cmp54 = 0, $call57 = 0, $6 = 0, $cmp59 = 0, $cmp62 = 0, $arrayidx64 = 0, $7 = 0, $conv65 = 0, $agtoken_2 = 0, $add67 = 0, $8 = 0, $arrayidx73 = 0, $9 = 0, $conv74 = 0, $cmp75 = 0, $arrayidx79 = 0, $10 = 0, $conv80 = 0, $cmp81 = 0, $cmp84 = 0, $sub = 0, $tobool92 = 0, $dec = 0, $agerrstatus_1_dec = 0, $incdec_ptr95 = 0, $11 = 0, $$etemp$0 = 0, $ld$1$0 = 0, $12$0 = 0, $ld$2$1 = 0, $12$1 = 0, $st$3$0 = 0, $st$4$1 = 0, $arrayidx96 = 0, $13 = 0, $conv97 = 0, $cmp98 = 0, $agn_0 = 0, $arrayidx102 = 0, $14 = 0, $conv103 = 0, $sub104 = 0, $agval_sroa_0_0__idx20 = 0, $agval_sroa_0_0_copyload21 = 0, $agval_sroa_1_4__idx31 = 0, $agval_sroa_1_4_copyload32 = 0, $str = 0, $15 = 0, $16 = 0, $17 = 0, $tobool111 = 0, $18 = 0, $str117 = 0, $19 = 0, $20 = 0, $proto = 0, $21 = 0, $n = 0, $22 = 0, $23 = 0, $proto128 = 0, $24 = 0, $e = 0, $25 = 0, $str131 = 0, $26 = 0, $str133 = 0, $27 = 0, $28 = 0, $29 = 0, $str140 = 0, $30 = 0, $31 = 0, $arrayidx148 = 0, $n149 = 0, $32 = 0, $33 = 0, $34 = 0, $str153 = 0, $35 = 0, $call154 = 0, $36 = 0, $37 = 0, $str160 = 0, $38 = 0, $str163 = 0, $39 = 0, $str165 = 0, $40 = 0, $call166 = 0, $41 = 0, $42 = 0, $obj174 = 0, $43 = 0, $44 = 0, $port178 = 0, $45 = 0, $obj181 = 0, $46 = 0, $subg = 0, $47 = 0, $proto183 = 0, $48 = 0, $e184 = 0, $49 = 0, $obj188 = 0, $50 = 0, $subg190 = 0, $51 = 0, $proto191 = 0, $52 = 0, $e192 = 0, $53 = 0, $obj196 = 0, $obj199 = 0, $obj202 = 0, $obj205 = 0, $agval_sroa_0_0_copyload29 = 0, $agval_sroa_1_4_copyload40 = 0, $agval_sroa_0_0_copyload27 = 0, $agval_sroa_1_4_copyload38 = 0, $agval_sroa_0_0_copyload25 = 0, $agval_sroa_1_4_copyload36 = 0, $agval_sroa_0_0_copyload23 = 0, $agval_sroa_1_4_copyload34 = 0, $54 = 0, $str223 = 0, $55 = 0, $56 = 0, $call224 = 0, $tobool225 = 0, $57 = 0, $58 = 0, $59 = 0, $60 = 0, $61 = 0, $call230 = 0, $subg221_0_in = 0, $subg221_0 = 0, $62 = 0, $str236 = 0, $63 = 0, $str240 = 0, $64 = 0, $str244 = 0, $65 = 0, $str248 = 0, $66 = 0, $str250 = 0, $67 = 0, $call251 = 0, $68 = 0, $69 = 0, $agval_sroa_1_0 = 0, $agval_sroa_0_0 = 0, $idx_neg = 0, $add_ptr259 = 0, $add_ptr257_sum = 0, $incdec_ptr260 = 0, $agval_sroa_0_0__idx = 0, $agval_sroa_1_4__idx30 = 0, $arrayidx261 = 0, $70 = 0, $conv262 = 0, $sub263 = 0, $arrayidx264 = 0, $71 = 0, $conv265 = 0, $72 = 0, $conv266 = 0, $add267 = 0, $73 = 0, $arrayidx273 = 0, $74 = 0, $conv274 = 0, $cmp276 = 0, $arrayidx279 = 0, $75 = 0, $conv280 = 0, $arrayidx283 = 0, $76 = 0, $conv284 = 0, $77 = 0, $inc = 0, $78 = 0, $cmp292 = 0, $cmp295 = 0, $agvsp_3 = 0, $agssp_3 = 0, $agstate_2 = 0, $arrayidx307 = 0, $79 = 0, $cmp309 = 0, $conv308 = 0, $add312 = 0, $80 = 0, $arrayidx319 = 0, $81 = 0, $cmp321 = 0, $arrayidx324 = 0, $82 = 0, $cmp326 = 0, $cmp332 = 0, $add_ptr338 = 0, $add_ptr339 = 0, $83 = 0, $conv340 = 0, $conv325 = 0, $incdec_ptr341 = 0, $84 = 0, $$etemp$5 = 0, $ld$6$0 = 0, $85$0 = 0, $ld$7$1 = 0, $85$1 = 0, $st$8$0 = 0, $st$9$1 = 0, $agresult_0 = 0, $agss_3 = 0, $cmp357 = 0, $86 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 2032 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $agssa = __stackBase__ | 0;
    $agvsa = __stackBase__ + 400 | 0;
    $tmp = __stackBase__ + 2e3 | 0;
    $tmp211 = __stackBase__ + 2008 | 0;
    $tmp215 = __stackBase__ + 2016 | 0;
    $tmp218 = __stackBase__ + 2024 | 0;
    $arraydecay = $agssa | 0;
    $arraydecay1 = $agvsa | 0;
    HEAP32[22282] = 0;
    HEAP32[22356] = -2;
    $agval_sroa_0_0__idx28 = $tmp | 0;
    $agval_sroa_1_4__idx39 = $tmp + 4 | 0;
    $agval_sroa_0_0__idx26 = $tmp211 | 0;
    $agval_sroa_1_4__idx37 = $tmp211 + 4 | 0;
    $agval_sroa_0_0__idx24 = $tmp215 | 0;
    $agval_sroa_1_4__idx35 = $tmp215 + 4 | 0;
    $agval_sroa_0_0__idx22 = $tmp218 | 0;
    $agval_sroa_1_4__idx33 = $tmp218 + 4 | 0;
    $agstate_1 = 0;
    $agerrstatus_1 = 0;
    $agss_0 = $arraydecay;
    $agssp_1 = $arraydecay;
    $agvs_0 = $arraydecay1;
    $agvsp_1 = $arraydecay1;
    $agstacksize_0 = 200;
    label = 4;
    break;
   case 3:
    $incdec_ptr = $agssp_0 + 2 | 0;
    $agstate_1 = $agstate_0;
    $agerrstatus_1 = $agerrstatus_0;
    $agss_0 = $agss_1;
    $agssp_1 = $incdec_ptr;
    $agvs_0 = $agvs_1;
    $agvsp_1 = $agvsp_0;
    $agstacksize_0 = $agstacksize_2;
    label = 4;
    break;
   case 4:
    $conv = $agstate_1 & 65535;
    HEAP16[$agssp_1 >> 1] = $conv;
    $add_ptr_sum = $agstacksize_0 - 1 | 0;
    $add_ptr2 = $agss_0 + ($add_ptr_sum << 1) | 0;
    $cmp = $add_ptr2 >>> 0 > $agssp_1 >>> 0;
    if ($cmp) {
      $agss_1 = $agss_0;
      $agssp_2 = $agssp_1;
      $agvs_1 = $agvs_0;
      $agvsp_2 = $agvsp_1;
      $agstacksize_2 = $agstacksize_0;
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $sub_ptr_lhs_cast = $agssp_1;
    $sub_ptr_rhs_cast = $agss_0;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $sub_ptr_div = $sub_ptr_sub >> 1;
    $add = $sub_ptr_div + 1 | 0;
    $cmp4 = $agstacksize_0 >>> 0 > 9999;
    if ($cmp4) {
      label = 92;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $mul = $agstacksize_0 << 1;
    $cmp7 = $mul >>> 0 > 1e4;
    $_mul = $cmp7 ? 1e4 : $mul;
    $mul11 = $_mul * 10 & -1;
    $add12 = $mul11 + 7 | 0;
    $call = _malloc($add12) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 92;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $0 = $call;
    $agss_alloc = $call;
    $1 = $agss_0;
    $mul15 = $add << 1;
    _memcpy($call | 0, $1 | 0, $mul15);
    $mul17 = $_mul << 1;
    $add18 = $mul17 + 7 | 0;
    $div = $add18 >>> 3;
    $agvs_alloc = $0 + ($div << 3) | 0;
    $2 = $agvs_alloc;
    $3 = $agvs_0;
    $mul22 = $add << 3;
    _memcpy($2 | 0, $3 | 0, $mul22);
    $cmp30 = ($agss_0 | 0) == ($arraydecay | 0);
    if ($cmp30) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _free($1);
    label = 9;
    break;
   case 9:
    $add_ptr35 = $agss_alloc + ($sub_ptr_div << 1) | 0;
    $add_ptr37 = $agvs_alloc + ($sub_ptr_div << 3) | 0;
    $add_ptr38_sum = $_mul - 1 | 0;
    $cmp40 = ($add_ptr38_sum | 0) > ($sub_ptr_div | 0);
    if ($cmp40) {
      $agss_1 = $agss_alloc;
      $agssp_2 = $add_ptr35;
      $agvs_1 = $agvs_alloc;
      $agvsp_2 = $add_ptr37;
      $agstacksize_2 = $_mul;
      label = 10;
      break;
    } else {
      $agss_3 = $agss_alloc;
      $agresult_0 = 1;
      label = 93;
      break;
    }
   case 10:
    $cmp45 = ($agstate_1 | 0) == 9;
    if ($cmp45) {
      $agss_3 = $agss_1;
      $agresult_0 = 0;
      label = 93;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $arrayidx = $agstate_1 + 89032 | 0;
    $4 = HEAP8[$arrayidx] | 0;
    $conv49 = $4 << 24 >> 24;
    $cmp50 = $4 << 24 >> 24 == -68;
    if ($cmp50) {
      label = 24;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $5 = HEAP32[22356] | 0;
    $cmp54 = ($5 | 0) == -2;
    if ($cmp54) {
      label = 13;
      break;
    } else {
      $6 = $5;
      label = 14;
      break;
    }
   case 13:
    $call57 = _aglex() | 0;
    HEAP32[22356] = $call57;
    $6 = $call57;
    label = 14;
    break;
   case 14:
    $cmp59 = ($6 | 0) < 1;
    if ($cmp59) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    HEAP32[22356] = 0;
    $agtoken_2 = 0;
    label = 18;
    break;
   case 16:
    $cmp62 = $6 >>> 0 < 267;
    if ($cmp62) {
      label = 17;
      break;
    } else {
      $agtoken_2 = 2;
      label = 18;
      break;
    }
   case 17:
    $arrayidx64 = $6 + 88488 | 0;
    $7 = HEAP8[$arrayidx64] | 0;
    $conv65 = $7 & 255;
    $agtoken_2 = $conv65;
    label = 18;
    break;
   case 18:
    $add67 = $agtoken_2 + $conv49 | 0;
    $8 = $add67 >>> 0 > 80;
    if ($8) {
      label = 24;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $arrayidx73 = $add67 + 89336 | 0;
    $9 = HEAP8[$arrayidx73] | 0;
    $conv74 = $9 << 24 >> 24;
    $cmp75 = ($conv74 | 0) == ($agtoken_2 | 0);
    if ($cmp75) {
      label = 20;
      break;
    } else {
      label = 24;
      break;
    }
   case 20:
    $arrayidx79 = $add67 + 88760 | 0;
    $10 = HEAP8[$arrayidx79] | 0;
    $conv80 = $10 << 24 >> 24;
    $cmp81 = $10 << 24 >> 24 < 1;
    if ($cmp81) {
      label = 21;
      break;
    } else {
      label = 23;
      break;
    }
   case 21:
    $cmp84 = $10 << 24 >> 24 == 0;
    if ($cmp84) {
      label = 80;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $sub = -$conv80 | 0;
    $agn_0 = $sub;
    label = 25;
    break;
   case 23:
    $tobool92 = ($agerrstatus_1 | 0) == 0;
    $dec = $agerrstatus_1 - 1 | 0;
    $agerrstatus_1_dec = $tobool92 ? 0 : $dec;
    HEAP32[22356] = -2;
    $incdec_ptr95 = $agvsp_2 + 8 | 0;
    $11 = $incdec_ptr95;
    $$etemp$0 = 89144;
    $ld$1$0 = $$etemp$0 | 0;
    $12$0 = HEAP32[$ld$1$0 >> 2] | 0;
    $ld$2$1 = $$etemp$0 + 4 | 0;
    $12$1 = HEAP32[$ld$2$1 >> 2] | 0;
    $st$3$0 = $11 | 0;
    HEAP32[$st$3$0 >> 2] = $12$0;
    $st$4$1 = $11 + 4 | 0;
    HEAP32[$st$4$1 >> 2] = $12$1;
    $agstate_0 = $conv80;
    $agerrstatus_0 = $agerrstatus_1_dec;
    $agssp_0 = $agssp_2;
    $agvsp_0 = $incdec_ptr95;
    label = 3;
    break;
   case 24:
    $arrayidx96 = $agstate_1 + 89240 | 0;
    $13 = HEAP8[$arrayidx96] | 0;
    $conv97 = $13 & 255;
    $cmp98 = $13 << 24 >> 24 == 0;
    if ($cmp98) {
      label = 80;
      break;
    } else {
      $agn_0 = $conv97;
      label = 25;
      break;
    }
   case 25:
    $arrayidx102 = $agn_0 + 88848 | 0;
    $14 = HEAP8[$arrayidx102] | 0;
    $conv103 = $14 & 255;
    $sub104 = 1 - $conv103 | 0;
    $agval_sroa_0_0__idx20 = $agvsp_2 + ($sub104 << 3) | 0;
    $agval_sroa_0_0_copyload21 = HEAP32[$agval_sroa_0_0__idx20 >> 2] | 0;
    $agval_sroa_1_4__idx31 = $agvsp_2 + ($sub104 << 3) + 4 | 0;
    $agval_sroa_1_4_copyload32 = HEAP32[$agval_sroa_1_4__idx31 >> 2] | 0;
    if (($agn_0 | 0) == 2) {
      label = 26;
      break;
    } else if (($agn_0 | 0) == 3) {
      label = 27;
      break;
    } else if (($agn_0 | 0) == 4) {
      label = 28;
      break;
    } else if (($agn_0 | 0) == 5) {
      label = 31;
      break;
    } else if (($agn_0 | 0) == 6) {
      label = 32;
      break;
    } else if (($agn_0 | 0) == 7) {
      label = 33;
      break;
    } else if (($agn_0 | 0) == 8) {
      label = 34;
      break;
    } else if (($agn_0 | 0) == 9) {
      label = 35;
      break;
    } else if (($agn_0 | 0) == 10) {
      label = 36;
      break;
    } else if (($agn_0 | 0) == 11) {
      label = 37;
      break;
    } else if (($agn_0 | 0) == 12) {
      label = 38;
      break;
    } else if (($agn_0 | 0) == 13) {
      label = 39;
      break;
    } else if (($agn_0 | 0) == 14) {
      label = 40;
      break;
    } else if (($agn_0 | 0) == 23) {
      label = 41;
      break;
    } else if (($agn_0 | 0) == 25) {
      label = 42;
      break;
    } else if (($agn_0 | 0) == 32) {
      label = 43;
      break;
    } else if (($agn_0 | 0) == 37) {
      label = 44;
      break;
    } else if (($agn_0 | 0) == 38) {
      label = 45;
      break;
    } else if (($agn_0 | 0) == 39) {
      label = 46;
      break;
    } else if (($agn_0 | 0) == 40) {
      label = 47;
      break;
    } else if (($agn_0 | 0) == 42) {
      label = 48;
      break;
    } else if (($agn_0 | 0) == 43) {
      label = 49;
      break;
    } else if (($agn_0 | 0) == 44) {
      label = 50;
      break;
    } else if (($agn_0 | 0) == 45) {
      label = 51;
      break;
    } else if (($agn_0 | 0) == 46) {
      label = 52;
      break;
    } else if (($agn_0 | 0) == 47) {
      label = 53;
      break;
    } else if (($agn_0 | 0) == 48) {
      label = 54;
      break;
    } else if (($agn_0 | 0) == 49) {
      label = 55;
      break;
    } else if (($agn_0 | 0) == 50) {
      label = 56;
      break;
    } else if (($agn_0 | 0) == 51) {
      label = 57;
      break;
    } else if (($agn_0 | 0) == 52) {
      label = 58;
      break;
    } else if (($agn_0 | 0) == 53) {
      label = 59;
      break;
    } else if (($agn_0 | 0) == 55) {
      label = 60;
      break;
    } else if (($agn_0 | 0) == 56) {
      label = 61;
      break;
    } else if (($agn_0 | 0) == 58) {
      label = 62;
      break;
    } else if (($agn_0 | 0) == 59) {
      label = 63;
      break;
    } else if (($agn_0 | 0) == 60) {
      label = 64;
      break;
    } else if (($agn_0 | 0) == 61) {
      label = 65;
      break;
    } else if (($agn_0 | 0) == 62) {
      label = 66;
      break;
    } else if (($agn_0 | 0) == 63) {
      label = 67;
      break;
    } else if (($agn_0 | 0) == 64) {
      label = 68;
      break;
    } else if (($agn_0 | 0) == 65) {
      label = 72;
      break;
    } else if (($agn_0 | 0) == 66) {
      label = 73;
      break;
    } else if (($agn_0 | 0) == 67) {
      label = 74;
      break;
    } else if (($agn_0 | 0) == 68) {
      label = 75;
      break;
    } else {
      $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
      $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
      label = 76;
      break;
    }
   case 26:
    $str = $agvsp_2 | 0;
    $15 = HEAP32[$str >> 2] | 0;
    _begin_graph($15);
    $16 = HEAP32[$str >> 2] | 0;
    _agstrfree($16);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 27:
    HEAP8[168566] = 1;
    _end_graph();
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 28:
    $17 = HEAP32[42138] | 0;
    $tobool111 = ($17 | 0) == 0;
    if ($tobool111) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $18 = $17;
    _agclose($18);
    label = 30;
    break;
   case 30:
    HEAP32[42138] = 0;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 31:
    HEAP32[42138] = 0;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 32:
    $str117 = $agvsp_2 | 0;
    $19 = HEAP32[$str117 >> 2] | 0;
    $agval_sroa_0_0 = $19;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 33:
    $agval_sroa_0_0 = 0;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 34:
    HEAP32[42132] = 0;
    HEAP32[42139] = 98608;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 35:
    HEAP32[42132] = 2;
    HEAP32[42139] = 98608;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 36:
    HEAP32[42132] = 1;
    HEAP32[42139] = 138272;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 37:
    HEAP32[42132] = 3;
    HEAP32[42139] = 138272;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 38:
    HEAP32[41982] = 3;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 39:
    HEAP32[41982] = 1;
    $20 = HEAP32[41880] | 0;
    $proto = $20 + 40 | 0;
    $21 = HEAP32[$proto >> 2] | 0;
    $n = $21 | 0;
    $22 = HEAP32[$n >> 2] | 0;
    HEAP32[41626] = $22;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 40:
    HEAP32[41982] = 2;
    $23 = HEAP32[41880] | 0;
    $proto128 = $23 + 40 | 0;
    $24 = HEAP32[$proto128 >> 2] | 0;
    $e = $24 + 4 | 0;
    $25 = HEAP32[$e >> 2] | 0;
    HEAP32[41972] = $25;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 41:
    $str131 = $agvsp_2 - 16 | 0;
    $26 = HEAP32[$str131 >> 2] | 0;
    $str133 = $agvsp_2 | 0;
    $27 = HEAP32[$str133 >> 2] | 0;
    _attr_set($26, $27);
    $28 = HEAP32[$str131 >> 2] | 0;
    _agstrfree($28);
    $29 = HEAP32[$str133 >> 2] | 0;
    _agstrfree($29);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 42:
    $str140 = $agvsp_2 | 0;
    $30 = HEAP32[$str140 >> 2] | 0;
    _attr_set($30, 120160);
    $31 = HEAP32[$str140 >> 2] | 0;
    _agstrfree($31);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 43:
    _agerror(114616);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 44:
    HEAP32[41982] = 3;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 45:
    HEAP32[41982] = 3;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 46:
    $arrayidx148 = $agvsp_2 - 8 | 0;
    $n149 = $arrayidx148;
    $32 = HEAP32[$n149 >> 2] | 0;
    $33 = $32 | 0;
    $34 = HEAP32[41542] | 0;
    HEAP32[41542] = 0;
    $agval_sroa_0_0 = $33;
    $agval_sroa_1_0 = $34;
    label = 76;
    break;
   case 47:
    $str153 = $agvsp_2 | 0;
    $35 = HEAP32[$str153 >> 2] | 0;
    $call154 = _bind_node($35) | 0;
    $36 = $call154 | 0;
    $37 = HEAP32[$str153 >> 2] | 0;
    _agstrfree($37);
    $agval_sroa_0_0 = $36;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 48:
    $str160 = $agvsp_2 | 0;
    $38 = HEAP32[$str160 >> 2] | 0;
    HEAP32[41542] = $38;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 49:
    $str163 = $agvsp_2 - 16 | 0;
    $39 = HEAP32[$str163 >> 2] | 0;
    $str165 = $agvsp_2 | 0;
    $40 = HEAP32[$str165 >> 2] | 0;
    $call166 = _concat3($39, $40) | 0;
    HEAP32[41542] = $call166;
    $41 = HEAP32[$str163 >> 2] | 0;
    _agstrfree($41);
    $42 = HEAP32[$str165 >> 2] | 0;
    _agstrfree($42);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 50:
    HEAP32[41982] = 1;
    $obj174 = $agvsp_2 | 0;
    $43 = HEAP32[$obj174 >> 2] | 0;
    $44 = $43;
    HEAP32[41626] = $44;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 51:
    $port178 = $agvsp_2 - 16 + 4 | 0;
    $45 = HEAP32[$port178 >> 2] | 0;
    _agstrfree($45);
    HEAP32[41982] = 3;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 52:
    $obj181 = $agvsp_2 | 0;
    _begin_edgestmt($obj181);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 53:
    $46 = HEAP32[41524] | 0;
    $subg = $46 | 0;
    $47 = HEAP32[$subg >> 2] | 0;
    $proto183 = $47 + 40 | 0;
    $48 = HEAP32[$proto183 >> 2] | 0;
    $e184 = $48 + 4 | 0;
    $49 = HEAP32[$e184 >> 2] | 0;
    HEAP32[41972] = $49;
    HEAP32[41982] = 2;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 54:
    _end_edgestmt();
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 55:
    $obj188 = $agvsp_2 | 0;
    _begin_edgestmt($obj188);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 56:
    $50 = HEAP32[41524] | 0;
    $subg190 = $50 | 0;
    $51 = HEAP32[$subg190 >> 2] | 0;
    $proto191 = $51 + 40 | 0;
    $52 = HEAP32[$proto191 >> 2] | 0;
    $e192 = $52 + 4 | 0;
    $53 = HEAP32[$e192 >> 2] | 0;
    HEAP32[41972] = $53;
    HEAP32[41982] = 2;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 57:
    _end_edgestmt();
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 58:
    $obj196 = $agvsp_2 | 0;
    _mid_edgestmt($obj196);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 59:
    $obj199 = $agvsp_2 | 0;
    _mid_edgestmt($obj199);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 60:
    $obj202 = $agvsp_2 | 0;
    _mid_edgestmt($obj202);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 61:
    $obj205 = $agvsp_2 | 0;
    _mid_edgestmt($obj205);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 62:
    _pop_gobj($tmp);
    $agval_sroa_0_0_copyload29 = HEAP32[$agval_sroa_0_0__idx28 >> 2] | 0;
    $agval_sroa_1_4_copyload40 = HEAP32[$agval_sroa_1_4__idx39 >> 2] | 0;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload29;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload40;
    label = 76;
    break;
   case 63:
    _anonsubg();
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 64:
    _pop_gobj($tmp211);
    $agval_sroa_0_0_copyload27 = HEAP32[$agval_sroa_0_0__idx26 >> 2] | 0;
    $agval_sroa_1_4_copyload38 = HEAP32[$agval_sroa_1_4__idx37 >> 2] | 0;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload27;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload38;
    label = 76;
    break;
   case 65:
    _anonsubg();
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 66:
    _pop_gobj($tmp215);
    $agval_sroa_0_0_copyload25 = HEAP32[$agval_sroa_0_0__idx24 >> 2] | 0;
    $agval_sroa_1_4_copyload36 = HEAP32[$agval_sroa_1_4__idx35 >> 2] | 0;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload25;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload36;
    label = 76;
    break;
   case 67:
    _subgraph_warn();
    _pop_gobj($tmp218);
    $agval_sroa_0_0_copyload23 = HEAP32[$agval_sroa_0_0__idx22 >> 2] | 0;
    $agval_sroa_1_4_copyload34 = HEAP32[$agval_sroa_1_4__idx33 >> 2] | 0;
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload23;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload34;
    label = 76;
    break;
   case 68:
    $54 = HEAP32[42138] | 0;
    $str223 = $agvsp_2 | 0;
    $55 = HEAP32[$str223 >> 2] | 0;
    $56 = $54;
    $call224 = _agfindsubg($56, $55) | 0;
    $tobool225 = ($call224 | 0) == 0;
    $57 = HEAP32[41880] | 0;
    if ($tobool225) {
      label = 70;
      break;
    } else {
      label = 69;
      break;
    }
   case 69:
    $58 = $call224 | 0;
    $59 = $57;
    _aginsert($59, $58);
    $subg221_0_in = $call224;
    label = 71;
    break;
   case 70:
    $60 = HEAP32[$str223 >> 2] | 0;
    $61 = $57;
    $call230 = _agsubg($61, $60) | 0;
    $subg221_0_in = $call230;
    label = 71;
    break;
   case 71:
    $subg221_0 = $subg221_0_in;
    _push_subg($subg221_0);
    HEAP8[166984] = 0;
    $62 = HEAP32[$str223 >> 2] | 0;
    _agstrfree($62);
    $agval_sroa_0_0 = $agval_sroa_0_0_copyload21;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 72:
    $str236 = $agvsp_2 | 0;
    $63 = HEAP32[$str236 >> 2] | 0;
    $agval_sroa_0_0 = $63;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 73:
    $str240 = $agvsp_2 | 0;
    $64 = HEAP32[$str240 >> 2] | 0;
    $agval_sroa_0_0 = $64;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 74:
    $str244 = $agvsp_2 | 0;
    $65 = HEAP32[$str244 >> 2] | 0;
    $agval_sroa_0_0 = $65;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 75:
    $str248 = $agvsp_2 - 16 | 0;
    $66 = HEAP32[$str248 >> 2] | 0;
    $str250 = $agvsp_2 | 0;
    $67 = HEAP32[$str250 >> 2] | 0;
    $call251 = _concat($66, $67) | 0;
    $68 = HEAP32[$str248 >> 2] | 0;
    _agstrfree($68);
    $69 = HEAP32[$str250 >> 2] | 0;
    _agstrfree($69);
    $agval_sroa_0_0 = $call251;
    $agval_sroa_1_0 = $agval_sroa_1_4_copyload32;
    label = 76;
    break;
   case 76:
    $idx_neg = -$conv103 | 0;
    $add_ptr259 = $agssp_2 + ($idx_neg << 1) | 0;
    $add_ptr257_sum = 1 - $conv103 | 0;
    $incdec_ptr260 = $agvsp_2 + ($add_ptr257_sum << 3) | 0;
    $agval_sroa_0_0__idx = $agvsp_2 + ($add_ptr257_sum << 3) | 0;
    HEAP32[$agval_sroa_0_0__idx >> 2] = $agval_sroa_0_0;
    $agval_sroa_1_4__idx30 = $agvsp_2 + ($add_ptr257_sum << 3) + 4 | 0;
    HEAP32[$agval_sroa_1_4__idx30 >> 2] = $agval_sroa_1_0;
    $arrayidx261 = $agn_0 + 88920 | 0;
    $70 = HEAP8[$arrayidx261] | 0;
    $conv262 = $70 & 255;
    $sub263 = $conv262 - 21 | 0;
    $arrayidx264 = $sub263 + 88992 | 0;
    $71 = HEAP8[$arrayidx264] | 0;
    $conv265 = $71 << 24 >> 24;
    $72 = HEAP16[$add_ptr259 >> 1] | 0;
    $conv266 = $72 << 16 >> 16;
    $add267 = $conv266 + $conv265 | 0;
    $73 = $add267 >>> 0 < 81;
    if ($73) {
      label = 77;
      break;
    } else {
      label = 79;
      break;
    }
   case 77:
    $arrayidx273 = $add267 + 89336 | 0;
    $74 = HEAP8[$arrayidx273] | 0;
    $conv274 = $74 << 24 >> 24;
    $cmp276 = ($conv274 | 0) == ($conv266 | 0);
    if ($cmp276) {
      label = 78;
      break;
    } else {
      label = 79;
      break;
    }
   case 78:
    $arrayidx279 = $add267 + 88760 | 0;
    $75 = HEAP8[$arrayidx279] | 0;
    $conv280 = $75 << 24 >> 24;
    $agstate_0 = $conv280;
    $agerrstatus_0 = $agerrstatus_1;
    $agssp_0 = $add_ptr259;
    $agvsp_0 = $incdec_ptr260;
    label = 3;
    break;
   case 79:
    $arrayidx283 = $sub263 + 89200 | 0;
    $76 = HEAP8[$arrayidx283] | 0;
    $conv284 = $76 << 24 >> 24;
    $agstate_0 = $conv284;
    $agerrstatus_0 = $agerrstatus_1;
    $agssp_0 = $add_ptr259;
    $agvsp_0 = $incdec_ptr260;
    label = 3;
    break;
   case 80:
    if (($agerrstatus_1 | 0) == 0) {
      label = 81;
      break;
    } else if (($agerrstatus_1 | 0) == 3) {
      label = 82;
      break;
    } else {
      $agstate_2 = $agstate_1;
      $agssp_3 = $agssp_2;
      $agvsp_3 = $agvsp_2;
      label = 85;
      break;
    }
   case 81:
    $77 = HEAP32[22282] | 0;
    $inc = $77 + 1 | 0;
    HEAP32[22282] = $inc;
    _agerror(105728);
    $agstate_2 = $agstate_1;
    $agssp_3 = $agssp_2;
    $agvsp_3 = $agvsp_2;
    label = 85;
    break;
   case 82:
    $78 = HEAP32[22356] | 0;
    $cmp292 = ($78 | 0) < 1;
    if ($cmp292) {
      label = 83;
      break;
    } else {
      label = 84;
      break;
    }
   case 83:
    $cmp295 = ($78 | 0) == 0;
    if ($cmp295) {
      $agss_3 = $agss_1;
      $agresult_0 = 1;
      label = 93;
      break;
    } else {
      $agstate_2 = $agstate_1;
      $agssp_3 = $agssp_2;
      $agvsp_3 = $agvsp_2;
      label = 85;
      break;
    }
   case 84:
    HEAP32[22356] = -2;
    $agstate_2 = $agstate_1;
    $agssp_3 = $agssp_2;
    $agvsp_3 = $agvsp_2;
    label = 85;
    break;
   case 85:
    $arrayidx307 = $agstate_2 + 89032 | 0;
    $79 = HEAP8[$arrayidx307] | 0;
    $cmp309 = $79 << 24 >> 24 == -68;
    if ($cmp309) {
      label = 89;
      break;
    } else {
      label = 86;
      break;
    }
   case 86:
    $conv308 = $79 << 24 >> 24;
    $add312 = $conv308 + 1 | 0;
    $80 = $add312 >>> 0 < 81;
    if ($80) {
      label = 87;
      break;
    } else {
      label = 89;
      break;
    }
   case 87:
    $arrayidx319 = $add312 + 89336 | 0;
    $81 = HEAP8[$arrayidx319] | 0;
    $cmp321 = $81 << 24 >> 24 == 1;
    if ($cmp321) {
      label = 88;
      break;
    } else {
      label = 89;
      break;
    }
   case 88:
    $arrayidx324 = $add312 + 88760 | 0;
    $82 = HEAP8[$arrayidx324] | 0;
    $cmp326 = $82 << 24 >> 24 > 0;
    if ($cmp326) {
      label = 91;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $cmp332 = ($agssp_3 | 0) == ($agss_1 | 0);
    if ($cmp332) {
      $agss_3 = $agss_1;
      $agresult_0 = 1;
      label = 93;
      break;
    } else {
      label = 90;
      break;
    }
   case 90:
    $add_ptr338 = $agvsp_3 - 8 | 0;
    $add_ptr339 = $agssp_3 - 2 | 0;
    $83 = HEAP16[$add_ptr339 >> 1] | 0;
    $conv340 = $83 << 16 >> 16;
    $agstate_2 = $conv340;
    $agssp_3 = $add_ptr339;
    $agvsp_3 = $add_ptr338;
    label = 85;
    break;
   case 91:
    $conv325 = $82 << 24 >> 24;
    $incdec_ptr341 = $agvsp_3 + 8 | 0;
    $84 = $incdec_ptr341;
    $$etemp$5 = 89144;
    $ld$6$0 = $$etemp$5 | 0;
    $85$0 = HEAP32[$ld$6$0 >> 2] | 0;
    $ld$7$1 = $$etemp$5 + 4 | 0;
    $85$1 = HEAP32[$ld$7$1 >> 2] | 0;
    $st$8$0 = $84 | 0;
    HEAP32[$st$8$0 >> 2] = $85$0;
    $st$9$1 = $84 + 4 | 0;
    HEAP32[$st$9$1 >> 2] = $85$1;
    $agstate_0 = $conv325;
    $agerrstatus_0 = 3;
    $agssp_0 = $agssp_3;
    $agvsp_0 = $incdec_ptr341;
    label = 3;
    break;
   case 92:
    _agerror(93720);
    $agss_3 = $agss_0;
    $agresult_0 = 2;
    label = 93;
    break;
   case 93:
    $cmp357 = ($agss_3 | 0) == ($arraydecay | 0);
    if ($cmp357) {
      label = 95;
      break;
    } else {
      label = 94;
      break;
    }
   case 94:
    $86 = $agss_3;
    _free($86);
    label = 95;
    break;
   case 95:
    STACKTOP = __stackBase__;
    return $agresult_0 | 0;
  }
  return 0;
}
function _begin_graph($name) {
  $name = $name | 0;
  var $buf = 0, $tobool = 0, $arraydecay = 0, $name_addr_0 = 0, $0 = 0, $call = 0, $1 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $tobool = ($name | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $name_addr_0 = $name;
      label = 4;
      break;
    }
   case 3:
    $arraydecay = $buf | 0;
    _anonname($arraydecay);
    $name_addr_0 = $arraydecay;
    label = 4;
    break;
   case 4:
    $0 = HEAP32[42132] | 0;
    $call = _agopen($name_addr_0, $0) | 0;
    $1 = $call;
    HEAP32[42138] = $1;
    HEAP32[41982] = 3;
    _push_subg($1);
    HEAP8[166984] = 1;
    STACKTOP = __stackBase__;
    return;
  }
}
function _end_graph() {
  _pop_subg();
  return;
}
function _aghtmlstr($s) {
  $s = $s | 0;
  var $0 = 0, $cmp = 0, $cmp1 = 0, $or_cond = 0, $refcnt = 0, $1 = 0, $2 = 0, $_b = 0, $3 = 0, $and = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41354] | 0;
    $cmp = ($0 | 0) == 0;
    $cmp1 = ($s | 0) == 0;
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $refcnt = $s - 4 | 0;
    $1 = $refcnt;
    $2 = HEAP32[$1 >> 2] | 0;
    $_b = HEAP8[167144] | 0;
    $3 = $_b ? -2147483648 : 0;
    $and = $3 & $2;
    $retval_0 = $and;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _attr_set($name, $value) {
  $name = $name | 0;
  $value = $value | 0;
  var $_b21 = 0, $0 = 0, $root = 0, $1 = 0, $cmp = 0, $value_ = 0, $defval_0 = 0, $2 = 0, $3 = 0, $proto = 0, $4 = 0, $n = 0, $5 = 0, $6 = 0, $call = 0, $cmp2 = 0, $7 = 0, $call5 = 0, $fixed = 0, $8 = 0, $tobool7 = 0, $_b20 = 0, $ap_0 = 0, $9 = 0, $10 = 0, $index = 0, $11 = 0, $call14 = 0, $12 = 0, $proto16 = 0, $13 = 0, $e = 0, $14 = 0, $15 = 0, $call17 = 0, $cmp18 = 0, $16 = 0, $call21 = 0, $fixed23 = 0, $17 = 0, $tobool25 = 0, $_b19 = 0, $18 = 0, $root30 = 0, $19 = 0, $cmp31 = 0, $ap_1 = 0, $20 = 0, $21 = 0, $index36 = 0, $22 = 0, $call37 = 0, $23 = 0, $24 = 0, $call39 = 0, $cmp40 = 0, $25 = 0, $call43 = 0, $fixed45 = 0, $26 = 0, $tobool47 = 0, $_b = 0, $ap_2 = 0, $27 = 0, $28 = 0, $index54 = 0, $29 = 0, $call55 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $_b21 = HEAP8[166984] | 0;
    if ($_b21) {
      label = 3;
      break;
    } else {
      $defval_0 = 136416;
      label = 4;
      break;
    }
   case 3:
    $0 = HEAP32[41880] | 0;
    $root = $0 + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $cmp = ($1 | 0) == ($0 | 0);
    $value_ = $cmp ? $value : 136416;
    $defval_0 = $value_;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[41982] | 0;
    if (($2 | 0) == 1) {
      label = 5;
      break;
    } else if (($2 | 0) == 2) {
      label = 10;
      break;
    } else if (($2 | 0) == 0 | ($2 | 0) == 3) {
      label = 16;
      break;
    } else {
      label = 21;
      break;
    }
   case 5:
    $3 = HEAP32[41880] | 0;
    $proto = $3 + 40 | 0;
    $4 = HEAP32[$proto >> 2] | 0;
    $n = $4 | 0;
    $5 = HEAP32[$n >> 2] | 0;
    $6 = $5 | 0;
    $call = _agfindattr($6, $name) | 0;
    $cmp2 = ($call | 0) == 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $7 = HEAP32[42138] | 0;
    $call5 = _agnodeattr($7, $name, $defval_0) | 0;
    $ap_0 = $call5;
    label = 9;
    break;
   case 7:
    $fixed = $call + 13 | 0;
    $8 = HEAP8[$fixed] | 0;
    $tobool7 = $8 << 24 >> 24 == 0;
    if ($tobool7) {
      $ap_0 = $call;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $_b20 = HEAP8[166984] | 0;
    if ($_b20) {
      label = 21;
      break;
    } else {
      $ap_0 = $call;
      label = 9;
      break;
    }
   case 9:
    $9 = HEAP32[41626] | 0;
    $10 = $9 | 0;
    $index = $ap_0 + 8 | 0;
    $11 = HEAP32[$index >> 2] | 0;
    $call14 = _agxset($10, $11, $value) | 0;
    label = 21;
    break;
   case 10:
    $12 = HEAP32[41880] | 0;
    $proto16 = $12 + 40 | 0;
    $13 = HEAP32[$proto16 >> 2] | 0;
    $e = $13 + 4 | 0;
    $14 = HEAP32[$e >> 2] | 0;
    $15 = $14 | 0;
    $call17 = _agfindattr($15, $name) | 0;
    $cmp18 = ($call17 | 0) == 0;
    if ($cmp18) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $16 = HEAP32[42138] | 0;
    $call21 = _agedgeattr($16, $name, $defval_0) | 0;
    $ap_1 = $call21;
    label = 15;
    break;
   case 12:
    $fixed23 = $call17 + 13 | 0;
    $17 = HEAP8[$fixed23] | 0;
    $tobool25 = $17 << 24 >> 24 == 0;
    if ($tobool25) {
      $ap_1 = $call17;
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $_b19 = HEAP8[166984] | 0;
    if ($_b19) {
      label = 14;
      break;
    } else {
      $ap_1 = $call17;
      label = 15;
      break;
    }
   case 14:
    $18 = HEAP32[41880] | 0;
    $root30 = $18 + 32 | 0;
    $19 = HEAP32[$root30 >> 2] | 0;
    $cmp31 = ($19 | 0) == ($18 | 0);
    if ($cmp31) {
      label = 21;
      break;
    } else {
      $ap_1 = $call17;
      label = 15;
      break;
    }
   case 15:
    $20 = HEAP32[41972] | 0;
    $21 = $20 | 0;
    $index36 = $ap_1 + 8 | 0;
    $22 = HEAP32[$index36 >> 2] | 0;
    $call37 = _agxset($21, $22, $value) | 0;
    label = 21;
    break;
   case 16:
    $23 = HEAP32[41880] | 0;
    $24 = $23 | 0;
    $call39 = _agfindattr($24, $name) | 0;
    $cmp40 = ($call39 | 0) == 0;
    if ($cmp40) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $25 = HEAP32[42138] | 0;
    $call43 = _agraphattr($25, $name, $defval_0) | 0;
    $ap_2 = $call43;
    label = 20;
    break;
   case 18:
    $fixed45 = $call39 + 13 | 0;
    $26 = HEAP8[$fixed45] | 0;
    $tobool47 = $26 << 24 >> 24 == 0;
    if ($tobool47) {
      $ap_2 = $call39;
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $_b = HEAP8[166984] | 0;
    if ($_b) {
      label = 21;
      break;
    } else {
      $ap_2 = $call39;
      label = 20;
      break;
    }
   case 20:
    $27 = HEAP32[41880] | 0;
    $28 = $27 | 0;
    $index54 = $ap_2 + 8 | 0;
    $29 = HEAP32[$index54 >> 2] | 0;
    $call55 = _agxset($28, $29, $value) | 0;
    label = 21;
    break;
   case 21:
    return;
  }
}
function _bind_node($name) {
  $name = $name | 0;
  var $call = 0;
  $call = _agnode(HEAP32[41880] | 0, $name) | 0;
  HEAP8[166984] = 0;
  return $call | 0;
}
function _concat3($s1, $s3) {
  $s1 = $s1 | 0;
  $s3 = $s3 | 0;
  var $buf = 0, $call = 0, $call2 = 0, $add3 = 0, $add4 = 0, $cmp = 0, $arraydecay = 0, $call5 = 0, $sym_0 = 0, $call6 = 0, $strlen = 0, $endptr = 0, $0 = 0, $call8 = 0, $call9 = 0, $arraydecay10 = 0, $cmp11 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $call = _strlen($s1 | 0) | 0;
    $call2 = _strlen($s3 | 0) | 0;
    $add3 = $call + 2 | 0;
    $add4 = $add3 + $call2 | 0;
    $cmp = ($add4 | 0) < 1025;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $arraydecay = $buf | 0;
    $sym_0 = $arraydecay;
    label = 5;
    break;
   case 4:
    $call5 = _malloc($add4) | 0;
    $sym_0 = $call5;
    label = 5;
    break;
   case 5:
    $call6 = _strcpy($sym_0 | 0, $s1 | 0) | 0;
    $strlen = _strlen($sym_0 | 0) | 0;
    $endptr = $sym_0 + $strlen | 0;
    $0 = $endptr;
    tempBigInt = 58;
    HEAP8[$0] = tempBigInt & 255;
    tempBigInt = tempBigInt >> 8;
    HEAP8[$0 + 1 | 0] = tempBigInt & 255;
    $call8 = _strcat($sym_0 | 0, $s3 | 0) | 0;
    $call9 = _agstrdup($sym_0) | 0;
    $arraydecay10 = $buf | 0;
    $cmp11 = ($sym_0 | 0) == ($arraydecay10 | 0);
    if ($cmp11) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($sym_0);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $call9 | 0;
  }
  return 0;
}
function _begin_edgestmt($objp) {
  $objp = $objp | 0;
  var $call = 0, $3 = 0, $8 = 0, $9 = 0, $10$1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $objp;
  $objp = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$objp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$objp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  $call = _calloc(1, 20) | 0;
  HEAP32[$call + 16 >> 2] = HEAP32[41524] | 0;
  HEAP32[41524] = $call;
  $3 = _calloc(1, 12) | 0;
  HEAP32[(HEAP32[41524] | 0) + 8 >> 2] = $3;
  HEAP32[(HEAP32[41524] | 0) + 4 >> 2] = $3;
  $8 = $objp;
  $9 = HEAP32[(HEAP32[41524] | 0) + 4 >> 2] | 0;
  $10$1 = HEAP32[$8 + 4 >> 2] | 0;
  HEAP32[$9 >> 2] = HEAP32[$8 >> 2] | 0;
  HEAP32[$9 + 4 >> 2] = $10$1;
  HEAP32[(HEAP32[(HEAP32[41524] | 0) + 4 >> 2] | 0) + 8 >> 2] = 0;
  HEAP32[(HEAP32[41524] | 0) + 12 >> 2] = HEAP8[166976] | 0;
  HEAP32[HEAP32[41524] >> 2] = HEAP32[41880] | 0;
  _agpushproto(HEAP32[41880] | 0);
  HEAP8[166976] = 1;
  STACKTOP = __stackBase__;
  return;
}
function _mid_edgestmt($objp) {
  $objp = $objp | 0;
  var $0 = 0, $last1 = 0, $8 = 0, $9 = 0, $10$1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $objp;
  $objp = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$objp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$objp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  $0 = _calloc(1, 12) | 0;
  HEAP32[(HEAP32[(HEAP32[41524] | 0) + 8 >> 2] | 0) + 8 >> 2] = $0;
  $last1 = (HEAP32[41524] | 0) + 8 | 0;
  HEAP32[$last1 >> 2] = HEAP32[(HEAP32[$last1 >> 2] | 0) + 8 >> 2] | 0;
  $8 = $objp;
  $9 = HEAP32[(HEAP32[41524] | 0) + 8 >> 2] | 0;
  $10$1 = HEAP32[$8 + 4 >> 2] | 0;
  HEAP32[$9 >> 2] = HEAP32[$8 >> 2] | 0;
  HEAP32[$9 + 4 >> 2] = $10$1;
  HEAP32[(HEAP32[(HEAP32[41524] | 0) + 8 >> 2] | 0) + 8 >> 2] = 0;
  STACKTOP = __stackBase__;
  return;
}
function _pop_gobj($agg_result) {
  $agg_result = $agg_result | 0;
  HEAP32[$agg_result >> 2] = _pop_subg() | 0;
  HEAP32[$agg_result + 4 >> 2] = 0;
  return;
}
function _anonsubg() {
  var $arraydecay = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  HEAP8[166984] = 0;
  $arraydecay = __stackBase__ | 0;
  _anonname($arraydecay);
  _push_subg(_agsubg(HEAP32[41880] | 0, $arraydecay) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _subgraph_warn() {
  var $1 = 0, $call = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $1 = HEAP32[(HEAP32[41880] | 0) + 12 >> 2] | 0;
  $call = _aglinenumber() | 0;
  _agerr(0, 149672, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $1, HEAP32[tempInt + 8 >> 2] = $call, tempInt) | 0);
  _agerr(3, 146832, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
  _agerr(3, 144008, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = HEAP32[(HEAP32[167160 + ((HEAP32[41876] | 0) - 2 << 2) >> 2] | 0) + 12 >> 2] | 0, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _concat($s1, $s2) {
  $s1 = $s1 | 0;
  $s2 = $s2 | 0;
  var $buf = 0, $call = 0, $call1 = 0, $add = 0, $add2 = 0, $cmp = 0, $arraydecay = 0, $call3 = 0, $sym_0 = 0, $call4 = 0, $call5 = 0, $call6 = 0, $arraydecay7 = 0, $cmp8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $call = _strlen($s1 | 0) | 0;
    $call1 = _strlen($s2 | 0) | 0;
    $add = $call + 1 | 0;
    $add2 = $add + $call1 | 0;
    $cmp = ($add2 | 0) < 1025;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $arraydecay = $buf | 0;
    $sym_0 = $arraydecay;
    label = 5;
    break;
   case 4:
    $call3 = _malloc($add2) | 0;
    $sym_0 = $call3;
    label = 5;
    break;
   case 5:
    $call4 = _strcpy($sym_0 | 0, $s1 | 0) | 0;
    $call5 = _strcat($sym_0 | 0, $s2 | 0) | 0;
    $call6 = _agstrdup($sym_0) | 0;
    $arraydecay7 = $buf | 0;
    $cmp8 = ($sym_0 | 0) == ($arraydecay7 | 0);
    if ($cmp8) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _free($sym_0);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $call6 | 0;
  }
  return 0;
}
function _anonname($buf) {
  $buf = $buf | 0;
  var $0 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $0 = HEAP32[22120] | 0;
  HEAP32[22120] = $0 + 1 | 0;
  _sprintf($buf | 0, 140200, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $0, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _agstrdup($s) {
  $s = $s | 0;
  var $0 = 0, $cmp = 0, $cmp1 = 0, $add_ptr = 0, $1 = 0, $searchf = 0, $2 = 0, $call = 0, $tobool = 0, $refcnt = 0, $3 = 0, $4 = 0, $inc = 0, $call5 = 0, $add = 0, $call6 = 0, $refcnt7 = 0, $5 = 0, $s8 = 0, $call9 = 0, $6 = 0, $searchf10 = 0, $7 = 0, $call11 = 0, $r_0_in = 0, $8 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41354] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _initialize_strings();
    label = 4;
    break;
   case 4:
    $cmp1 = ($s | 0) == 0;
    if ($cmp1) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $s - 12 | 0;
    $1 = HEAP32[41354] | 0;
    $searchf = $1 | 0;
    $2 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$2 & 1023]($1, $add_ptr, 4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $refcnt = $call + 8 | 0;
    $3 = $refcnt;
    $4 = HEAP32[$3 >> 2] | 0;
    $inc = $4 + 1 | 0;
    HEAP32[$3 >> 2] = $inc;
    $r_0_in = $call;
    label = 8;
    break;
   case 7:
    $call5 = _strlen($s | 0) | 0;
    $add = $call5 + 16 | 0;
    $call6 = _malloc($add) | 0;
    $refcnt7 = $call6 + 8 | 0;
    $5 = $refcnt7;
    HEAP32[$5 >> 2] = 1;
    $s8 = $call6 + 12 | 0;
    $call9 = _strcpy($s8 | 0, $s | 0) | 0;
    $6 = HEAP32[41354] | 0;
    $searchf10 = $6 | 0;
    $7 = HEAP32[$searchf10 >> 2] | 0;
    $call11 = FUNCTION_TABLE_iiii[$7 & 1023]($6, $call6, 1) | 0;
    $r_0_in = $call6;
    label = 8;
    break;
   case 8:
    $8 = $r_0_in + 12 | 0;
    $retval_0 = $8;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _initialize_strings() {
  HEAP32[41354] = _dtopen(166112, HEAP32[41974] | 0) | 0;
  HEAP8[167144] = 1;
  HEAP8[168120] = 1;
  return;
}
function _agstrdup_html($s) {
  $s = $s | 0;
  var $0 = 0, $cmp = 0, $cmp1 = 0, $add_ptr = 0, $1 = 0, $searchf = 0, $2 = 0, $call = 0, $tobool = 0, $refcnt = 0, $3 = 0, $4 = 0, $inc = 0, $call5 = 0, $add = 0, $call6 = 0, $_b = 0, $or = 0, $refcnt7 = 0, $5 = 0, $s8 = 0, $call9 = 0, $6 = 0, $searchf10 = 0, $7 = 0, $call11 = 0, $r_0_in = 0, $8 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41354] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _initialize_strings();
    label = 4;
    break;
   case 4:
    $cmp1 = ($s | 0) == 0;
    if ($cmp1) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $s - 12 | 0;
    $1 = HEAP32[41354] | 0;
    $searchf = $1 | 0;
    $2 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$2 & 1023]($1, $add_ptr, 4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $refcnt = $call + 8 | 0;
    $3 = $refcnt;
    $4 = HEAP32[$3 >> 2] | 0;
    $inc = $4 + 1 | 0;
    HEAP32[$3 >> 2] = $inc;
    $r_0_in = $call;
    label = 8;
    break;
   case 7:
    $call5 = _strlen($s | 0) | 0;
    $add = $call5 + 16 | 0;
    $call6 = _malloc($add) | 0;
    $_b = HEAP8[167144] | 0;
    $or = $_b ? -2147483647 : 1;
    $refcnt7 = $call6 + 8 | 0;
    $5 = $refcnt7;
    HEAP32[$5 >> 2] = $or;
    $s8 = $call6 + 12 | 0;
    $call9 = _strcpy($s8 | 0, $s | 0) | 0;
    $6 = HEAP32[41354] | 0;
    $searchf10 = $6 | 0;
    $7 = HEAP32[$searchf10 >> 2] | 0;
    $call11 = FUNCTION_TABLE_iiii[$7 & 1023]($6, $call6, 1) | 0;
    $r_0_in = $call6;
    label = 8;
    break;
   case 8:
    $8 = $r_0_in + 12 | 0;
    $retval_0 = $8;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _agstrfree($s) {
  $s = $s | 0;
  var $0 = 0, $cmp = 0, $cmp1 = 0, $or_cond = 0, $add_ptr = 0, $searchf = 0, $1 = 0, $call = 0, $tobool = 0, $refcnt = 0, $2 = 0, $3 = 0, $dec = 0, $tobool4 = 0, $_b = 0, $phitmp7 = 0, $or_cond8 = 0, $4 = 0, $searchf8 = 0, $5 = 0, $call9 = 0, $call11 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41354] | 0;
    $cmp = ($0 | 0) == 0;
    $cmp1 = ($s | 0) == 0;
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add_ptr = $s - 12 | 0;
    $searchf = $0 | 0;
    $1 = HEAP32[$searchf >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($0, $add_ptr, 4) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $refcnt = $call + 8 | 0;
    $2 = $refcnt;
    $3 = HEAP32[$2 >> 2] | 0;
    $dec = $3 - 1 | 0;
    HEAP32[$2 >> 2] = $dec;
    $tobool4 = ($dec | 0) == 0;
    $_b = HEAP8[168120] | 0;
    $phitmp7 = $_b ^ 1;
    $or_cond8 = $tobool4 | $phitmp7;
    if ($or_cond8) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $4 = HEAP32[41354] | 0;
    $searchf8 = $4 | 0;
    $5 = HEAP32[$searchf8 >> 2] | 0;
    $call9 = FUNCTION_TABLE_iiii[$5 & 1023]($4, $call, 2) | 0;
    _free($call);
    label = 7;
    break;
   case 6:
    $call11 = _agerr(1, 91240, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $s, tempInt) | 0) | 0;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _reverse_edge($e) {
  $e = $e | 0;
  var $head = 0, $0 = 0, $tail = 0, $1 = 0, $call = 0, $tobool = 0, $call3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _delete_fast_edge($e);
    $head = $e + 12 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $tail = $e + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $call = _find_fast_edge($0, $1) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _merge_oneway($e, $call);
    label = 5;
    break;
   case 4:
    $call3 = _virtual_edge($0, $1, $e) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _acyclic($g) {
  $g = $g | 0;
  var $size = 0, $0 = 0, $cmp17 = 0, $list = 0, $nlist = 0, $c_018 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $tobool12 = 0, $n_013 = 0, $mark = 0, $next = 0, $3 = 0, $tobool = 0, $n_114_pr = 0, $tobool1315 = 0, $n_116 = 0, $next17 = 0, $n_1 = 0, $tobool13 = 0, $inc = 0, $4 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $g + 232 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp17 = ($0 | 0) > 0;
    if ($cmp17) {
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $list = $g + 228 | 0;
    $nlist = $g + 220 | 0;
    $c_018 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($c_018 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    HEAP32[$nlist >> 2] = $2;
    $tobool12 = ($2 | 0) == 0;
    if ($tobool12) {
      label = 8;
      break;
    } else {
      $n_013 = $2;
      label = 5;
      break;
    }
   case 5:
    $mark = $n_013 + 163 | 0;
    HEAP8[$mark] = 0;
    $next = $n_013 + 168 | 0;
    $3 = HEAP32[$next >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_013 = $3;
      label = 5;
      break;
    }
   case 6:
    $n_114_pr = HEAP32[$nlist >> 2] | 0;
    $tobool1315 = ($n_114_pr | 0) == 0;
    if ($tobool1315) {
      label = 8;
      break;
    } else {
      $n_116 = $n_114_pr;
      label = 7;
      break;
    }
   case 7:
    _dfs($n_116);
    $next17 = $n_116 + 168 | 0;
    $n_1 = HEAP32[$next17 >> 2] | 0;
    $tobool13 = ($n_1 | 0) == 0;
    if ($tobool13) {
      label = 8;
      break;
    } else {
      $n_116 = $n_1;
      label = 7;
      break;
    }
   case 8:
    $inc = $c_018 + 1 | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $cmp = ($inc | 0) < ($4 | 0);
    if ($cmp) {
      $c_018 = $inc;
      label = 4;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    return;
  }
}
function _dfs($n) {
  $n = $n | 0;
  var $mark = 0, $0 = 0, $tobool = 0, $onstack = 0, $list = 0, $1 = 0, $2 = 0, $tobool510 = 0, $3 = 0, $i_011 = 0, $head = 0, $4 = 0, $onstack7 = 0, $5 = 0, $tobool8 = 0, $dec = 0, $mark11 = 0, $6 = 0, $cmp = 0, $i_1 = 0, $inc = 0, $7 = 0, $arrayidx = 0, $8 = 0, $tobool5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $mark = $n + 163 | 0;
    $0 = HEAP8[$mark] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    HEAP8[$mark] = 1;
    $onstack = $n + 164 | 0;
    HEAP8[$onstack] = 1;
    $list = $n + 184 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool510 = ($2 | 0) == 0;
    if ($tobool510) {
      label = 9;
      break;
    } else {
      $i_011 = 0;
      $3 = $2;
      label = 4;
      break;
    }
   case 4:
    $head = $3 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $onstack7 = $4 + 164 | 0;
    $5 = HEAP8[$onstack7] | 0;
    $tobool8 = $5 << 24 >> 24 == 0;
    if ($tobool8) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _reverse_edge($3);
    $dec = $i_011 - 1 | 0;
    $i_1 = $dec;
    label = 8;
    break;
   case 6:
    $mark11 = $4 + 163 | 0;
    $6 = HEAP8[$mark11] | 0;
    $cmp = $6 << 24 >> 24 == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      $i_1 = $i_011;
      label = 8;
      break;
    }
   case 7:
    _dfs($4);
    $i_1 = $i_011;
    label = 8;
    break;
   case 8:
    $inc = $i_1 + 1 | 0;
    $7 = HEAP32[$list >> 2] | 0;
    $arrayidx = $7 + ($inc << 2) | 0;
    $8 = HEAP32[$arrayidx >> 2] | 0;
    $tobool5 = ($8 | 0) == 0;
    if ($tobool5) {
      label = 9;
      break;
    } else {
      $i_011 = $inc;
      $3 = $8;
      label = 4;
      break;
    }
   case 9:
    HEAP8[$onstack] = 0;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _countDummyNodes($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool15 = 0, $n_0_in17 = 0, $count_016 = 0, $call1 = 0, $tobool312 = 0, $e_0_in14 = 0, $count_113 = 0, $head = 0, $1 = 0, $rank = 0, $2 = 0, $3 = 0, $tail = 0, $4 = 0, $rank6 = 0, $5 = 0, $6 = 0, $cmp = 0, $sub = 0, $ispos = 0, $neg = 0, $call13 = 0, $sub14 = 0, $add = 0, $count_2 = 0, $call15 = 0, $tobool3 = 0, $count_1_lcssa = 0, $call17 = 0, $tobool = 0, $count_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool15 = ($call | 0) == 0;
    if ($tobool15) {
      $count_0_lcssa = 0;
      label = 8;
      break;
    } else {
      $count_016 = 0;
      $n_0_in17 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agfstout($0, $n_0_in17) | 0;
    $tobool312 = ($call1 | 0) == 0;
    if ($tobool312) {
      $count_1_lcssa = $count_016;
      label = 7;
      break;
    } else {
      $count_113 = $count_016;
      $e_0_in14 = $call1;
      label = 4;
      break;
    }
   case 4:
    $head = $e_0_in14 + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $rank = $1 + 236 | 0;
    $2 = $rank;
    $3 = HEAP32[$2 >> 2] | 0;
    $tail = $e_0_in14 + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $rank6 = $4 + 236 | 0;
    $5 = $rank6;
    $6 = HEAP32[$5 >> 2] | 0;
    $cmp = ($3 | 0) == ($6 | 0);
    if ($cmp) {
      $count_2 = $count_113;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $sub = $3 - $6 | 0;
    $ispos = ($sub | 0) > -1;
    $neg = -$sub | 0;
    $call13 = $ispos ? $sub : $neg;
    $sub14 = $count_113 - 1 | 0;
    $add = $sub14 + $call13 | 0;
    $count_2 = $add;
    label = 6;
    break;
   case 6:
    $call15 = _agnxtout($0, $e_0_in14) | 0;
    $tobool3 = ($call15 | 0) == 0;
    if ($tobool3) {
      $count_1_lcssa = $count_2;
      label = 7;
      break;
    } else {
      $count_113 = $count_2;
      $e_0_in14 = $call15;
      label = 4;
      break;
    }
   case 7:
    $call17 = _agnxtnode($0, $n_0_in17) | 0;
    $tobool = ($call17 | 0) == 0;
    if ($tobool) {
      $count_0_lcssa = $count_1_lcssa;
      label = 8;
      break;
    } else {
      $count_016 = $count_1_lcssa;
      $n_0_in17 = $call17;
      label = 3;
      break;
    }
   case 8:
    return $count_0_lcssa | 0;
  }
  return 0;
}
function _initEdgeTypes($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool10 = 0, $n_0_in11 = 0, $size = 0, $1 = 0, $2 = 0, $cmp8 = 0, $in = 0, $lc_09 = 0, $list7 = 0, $3 = 0, $arrayidx = 0, $4 = 0, $edge_type = 0, $inc = 0, $5 = 0, $cmp = 0, $call7 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool10 = ($call | 0) == 0;
    if ($tobool10) {
      label = 7;
      break;
    } else {
      $n_0_in11 = $call;
      label = 3;
      break;
    }
   case 3:
    $size = $n_0_in11 + 180 | 0;
    $1 = $size;
    $2 = HEAP32[$1 >> 2] | 0;
    $cmp8 = ($2 | 0) > 0;
    if ($cmp8) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $in = $n_0_in11 + 176 | 0;
    $lc_09 = 0;
    label = 5;
    break;
   case 5:
    $list7 = HEAP32[$in >> 2] | 0;
    $3 = $list7;
    $arrayidx = $3 + ($lc_09 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $edge_type = $4 + 128 | 0;
    HEAP8[$edge_type] = 0;
    $inc = $lc_09 + 1 | 0;
    $5 = HEAP32[$1 >> 2] | 0;
    $cmp = ($inc | 0) < ($5 | 0);
    if ($cmp) {
      $lc_09 = $inc;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call7 = _agnxtnode($0, $n_0_in11) | 0;
    $tobool = ($call7 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $n_0_in11 = $call7;
      label = 3;
      break;
    }
   case 7:
    return;
  }
}
function _end_edgestmt() {
  var $0 = 0, $list = 0, $tailptr_045 = 0, $link46 = 0, $1 = 0, $tobool47 = 0, $tailptr_0 = 0, $link = 0, $2 = 0, $tobool = 0, $3 = 0, $link49 = 0, $tailptr_048 = 0, $port = 0, $4 = 0, $port3 = 0, $5 = 0, $obj = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $_mask36 = 0, $cmp = 0, $10 = 0, $call = 0, $t_first_0 = 0, $t_graph_0 = 0, $obj10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $_mask37 = 0, $cmp13 = 0, $15 = 0, $call20 = 0, $h_first_0 = 0, $h_graph_0 = 0, $tobool2342 = 0, $tobool2640 = 0, $tobool54 = 0, $tobool51 = 0, $t_node_043 = 0, $h_node_041 = 0, $16 = 0, $call28 = 0, $tobool29 = 0, $tail = 0, $17 = 0, $head = 0, $18 = 0, $cmp31 = 0, $cmp33 = 0, $or_cond = 0, $tp_0 = 0, $hp_0 = 0, $tobool36 = 0, $19 = 0, $tobool38 = 0, $20 = 0, $call40 = 0, $tobool42 = 0, $21 = 0, $tobool46 = 0, $22 = 0, $call48 = 0, $call52 = 0, $tobool26 = 0, $call56 = 0, $tobool23 = 0, $23 = 0, $list64 = 0, $24 = 0, $tobool6538 = 0, $tailptr_139 = 0, $link66 = 0, $25 = 0, $obj68 = 0, $26 = 0, $27 = 0, $28 = 0, $_mask = 0, $cmp71 = 0, $29 = 0, $tobool65 = 0, $30 = 0, $31 = 0, $subg = 0, $32 = 0, $cmp75 = 0, $33 = 0, $34 = 0, $in_edge_stmt = 0, $35 = 0, $conv79 = 0, $link80 = 0, $36 = 0, $37 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41524] | 0;
    $list = $0 + 4 | 0;
    $tailptr_045 = HEAP32[$list >> 2] | 0;
    $link46 = $tailptr_045 + 8 | 0;
    $1 = HEAP32[$link46 >> 2] | 0;
    $tobool47 = ($1 | 0) == 0;
    if ($tobool47) {
      label = 24;
      break;
    } else {
      $tailptr_048 = $tailptr_045;
      $link49 = $link46;
      $3 = $1;
      label = 4;
      break;
    }
   case 3:
    $tailptr_0 = HEAP32[$link49 >> 2] | 0;
    $link = $tailptr_0 + 8 | 0;
    $2 = HEAP32[$link >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 24;
      break;
    } else {
      $tailptr_048 = $tailptr_0;
      $link49 = $link;
      $3 = $2;
      label = 4;
      break;
    }
   case 4:
    $port = $tailptr_048 + 4 | 0;
    $4 = HEAP32[$port >> 2] | 0;
    $port3 = $3 + 4 | 0;
    $5 = HEAP32[$port3 >> 2] | 0;
    $obj = $tailptr_048 | 0;
    $6 = HEAP32[$obj >> 2] | 0;
    $7 = $6;
    $8 = $6;
    $9 = HEAP32[$8 >> 2] | 0;
    $_mask36 = $9 & 15;
    $cmp = ($_mask36 | 0) == 1;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $10 = $6;
    $t_graph_0 = 0;
    $t_first_0 = $10;
    label = 7;
    break;
   case 6:
    $call = _agfstnode($7) | 0;
    $t_graph_0 = $7;
    $t_first_0 = $call;
    label = 7;
    break;
   case 7:
    $obj10 = $3 | 0;
    $11 = HEAP32[$obj10 >> 2] | 0;
    $12 = $11;
    $13 = $11;
    $14 = HEAP32[$13 >> 2] | 0;
    $_mask37 = $14 & 15;
    $cmp13 = ($_mask37 | 0) == 1;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $15 = $11;
    $h_graph_0 = 0;
    $h_first_0 = $15;
    label = 10;
    break;
   case 9:
    $call20 = _agfstnode($12) | 0;
    $h_graph_0 = $12;
    $h_first_0 = $call20;
    label = 10;
    break;
   case 10:
    $tobool2342 = ($t_first_0 | 0) == 0;
    if ($tobool2342) {
      label = 3;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $tobool2640 = ($h_first_0 | 0) == 0;
    $tobool54 = ($t_graph_0 | 0) == 0;
    $tobool51 = ($h_graph_0 | 0) == 0;
    $t_node_043 = $t_first_0;
    label = 12;
    break;
   case 12:
    if ($tobool2640) {
      label = 22;
      break;
    } else {
      $h_node_041 = $h_first_0;
      label = 13;
      break;
    }
   case 13:
    $16 = HEAP32[41880] | 0;
    $call28 = _agedge($16, $t_node_043, $h_node_041) | 0;
    $tobool29 = ($call28 | 0) == 0;
    if ($tobool29) {
      label = 20;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $tail = $call28 + 16 | 0;
    $17 = HEAP32[$tail >> 2] | 0;
    $head = $call28 + 12 | 0;
    $18 = HEAP32[$head >> 2] | 0;
    $cmp31 = ($17 | 0) != ($18 | 0);
    $cmp33 = ($18 | 0) == ($t_node_043 | 0);
    $or_cond = $cmp31 & $cmp33;
    $tp_0 = $or_cond ? $5 : $4;
    $hp_0 = $or_cond ? $4 : $5;
    $tobool36 = ($tp_0 | 0) == 0;
    if ($tobool36) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $19 = HEAP8[$tp_0] | 0;
    $tobool38 = $19 << 24 >> 24 == 0;
    if ($tobool38) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $20 = $call28 | 0;
    $call40 = _agxset($20, 1, $tp_0) | 0;
    _agstrfree($tp_0);
    label = 17;
    break;
   case 17:
    $tobool42 = ($hp_0 | 0) == 0;
    if ($tobool42) {
      label = 20;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $21 = HEAP8[$hp_0] | 0;
    $tobool46 = $21 << 24 >> 24 == 0;
    if ($tobool46) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $22 = $call28 | 0;
    $call48 = _agxset($22, 2, $hp_0) | 0;
    _agstrfree($hp_0);
    label = 20;
    break;
   case 20:
    if ($tobool51) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $call52 = _agnxtnode($h_graph_0, $h_node_041) | 0;
    $tobool26 = ($call52 | 0) == 0;
    if ($tobool26) {
      label = 22;
      break;
    } else {
      $h_node_041 = $call52;
      label = 13;
      break;
    }
   case 22:
    if ($tobool54) {
      label = 3;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $call56 = _agnxtnode($t_graph_0, $t_node_043) | 0;
    $tobool23 = ($call56 | 0) == 0;
    if ($tobool23) {
      label = 3;
      break;
    } else {
      $t_node_043 = $call56;
      label = 12;
      break;
    }
   case 24:
    $23 = HEAP32[41524] | 0;
    $list64 = $23 + 4 | 0;
    $24 = HEAP32[$list64 >> 2] | 0;
    $tobool6538 = ($24 | 0) == 0;
    if ($tobool6538) {
      label = 28;
      break;
    } else {
      $tailptr_139 = $24;
      label = 25;
      break;
    }
   case 25:
    $link66 = $tailptr_139 + 8 | 0;
    $25 = HEAP32[$link66 >> 2] | 0;
    $obj68 = $tailptr_139 | 0;
    $26 = HEAP32[$obj68 >> 2] | 0;
    $27 = $26;
    $28 = HEAP32[$27 >> 2] | 0;
    $_mask = $28 & 15;
    $cmp71 = ($_mask | 0) == 1;
    if ($cmp71) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $29 = $tailptr_139;
    _free($29);
    label = 27;
    break;
   case 27:
    $tobool65 = ($25 | 0) == 0;
    if ($tobool65) {
      label = 28;
      break;
    } else {
      $tailptr_139 = $25;
      label = 25;
      break;
    }
   case 28:
    $30 = HEAP32[41880] | 0;
    $31 = HEAP32[41524] | 0;
    $subg = $31 | 0;
    $32 = HEAP32[$subg >> 2] | 0;
    $cmp75 = ($30 | 0) == ($32 | 0);
    if ($cmp75) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    _abort();
   case 30:
    $33 = $30;
    _agpopproto($33);
    $34 = HEAP32[41524] | 0;
    $in_edge_stmt = $34 + 12 | 0;
    $35 = HEAP32[$in_edge_stmt >> 2] | 0;
    $conv79 = $35 & 255;
    HEAP8[166976] = $conv79;
    $link80 = $34 + 16 | 0;
    $36 = HEAP32[$link80 >> 2] | 0;
    HEAP32[41524] = $36;
    HEAP8[166984] = 0;
    $37 = $34;
    _free($37);
    HEAP32[41982] = 3;
    return;
  }
}
function _push_subg($g) {
  $g = $g | 0;
  var $0 = 0, $cmp = 0, $call = 0, $inc = 0, $arrayidx = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41876] | 0;
    $cmp = ($0 | 0) > 63;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agerr(1, 153272, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _exit(1);
   case 4:
    $inc = $0 + 1 | 0;
    HEAP32[41876] = $inc;
    $arrayidx = 167160 + ($0 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $g;
    HEAP32[41880] = $g;
    STACKTOP = __stackBase__;
    return;
  }
}
function _pop_subg() {
  var $0 = 0, $cmp = 0, $call = 0, $dec = 0, $arrayidx = 0, $1 = 0, $cmp1 = 0, $sub = 0, $arrayidx3 = 0, $2 = 0, $storemerge = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41876] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agerr(1, 137472, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    _exit(1);
    return 0;
   case 4:
    $dec = $0 - 1 | 0;
    HEAP32[41876] = $dec;
    $arrayidx = 167160 + ($dec << 2) | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $cmp1 = ($dec | 0) > 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $storemerge = 0;
      label = 6;
      break;
    }
   case 5:
    $sub = $0 - 2 | 0;
    $arrayidx3 = 167160 + ($sub << 2) | 0;
    $2 = HEAP32[$arrayidx3 >> 2] | 0;
    $storemerge = $2;
    label = 6;
    break;
   case 6:
    HEAP32[41880] = $storemerge;
    STACKTOP = __stackBase__;
    return $1 | 0;
  }
  return 0;
}
function _zapLayers() {
  var $0 = 0, $cmp6 = 0, $i_09 = 0, $count_08 = 0, $start_07 = 0, $1 = 0, $arrayidx = 0, $nNodeGroupsInLayer = 0, $2 = 0, $cmp1 = 0, $cmp2 = 0, $layerNumber = 0, $3 = 0, $start_1 = 0, $inc = 0, $layerNumber6 = 0, $4 = 0, $cmp7 = 0, $5 = 0, $nNodeGroupsInLayer113 = 0, $6 = 0, $cmp124 = 0, $7 = 0, $j_05 = 0, $nodeGroupsInLayer = 0, $8 = 0, $arrayidx15 = 0, $9 = 0, $nNodes = 0, $10 = 0, $cmp171 = 0, $nodes = 0, $q_02 = 0, $11 = 0, $arrayidx19 = 0, $12 = 0, $rank = 0, $13 = 0, $sub = 0, $inc20 = 0, $14 = 0, $cmp17 = 0, $inc22 = 0, $15 = 0, $nNodeGroupsInLayer11 = 0, $16 = 0, $cmp12 = 0, $start_2 = 0, $count_1 = 0, $inc27 = 0, $17 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2800] | 0;
    $cmp6 = ($0 | 0) > 0;
    if ($cmp6) {
      $start_07 = 0;
      $count_08 = 0;
      $i_09 = 0;
      label = 3;
      break;
    } else {
      label = 15;
      break;
    }
   case 3:
    $1 = HEAP32[2958] | 0;
    $arrayidx = $1 + ($i_09 * 40 & -1) | 0;
    $nNodeGroupsInLayer = $1 + ($i_09 * 40 & -1) + 12 | 0;
    $2 = HEAP32[$nNodeGroupsInLayer >> 2] | 0;
    $cmp1 = ($2 | 0) == 0;
    $cmp2 = ($count_08 | 0) == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    if ($cmp2) {
      label = 5;
      break;
    } else {
      $start_1 = $start_07;
      label = 6;
      break;
    }
   case 5:
    $layerNumber = $arrayidx | 0;
    $3 = HEAP32[$layerNumber >> 2] | 0;
    $start_1 = $3;
    label = 6;
    break;
   case 6:
    $inc = $count_08 + 1 | 0;
    $count_1 = $inc;
    $start_2 = $start_1;
    label = 14;
    break;
   case 7:
    if ($cmp2) {
      $count_1 = 0;
      $start_2 = $start_07;
      label = 14;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $layerNumber6 = $arrayidx | 0;
    $4 = HEAP32[$layerNumber6 >> 2] | 0;
    $cmp7 = ($4 | 0) > ($start_07 | 0);
    if ($cmp7) {
      label = 9;
      break;
    } else {
      $count_1 = $count_08;
      $start_2 = $start_07;
      label = 14;
      break;
    }
   case 9:
    $5 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer113 = $5 + ($i_09 * 40 & -1) + 12 | 0;
    $6 = HEAP32[$nNodeGroupsInLayer113 >> 2] | 0;
    $cmp124 = ($6 | 0) > 0;
    if ($cmp124) {
      $j_05 = 0;
      $7 = $5;
      label = 10;
      break;
    } else {
      $count_1 = $count_08;
      $start_2 = $start_07;
      label = 14;
      break;
    }
   case 10:
    $nodeGroupsInLayer = $7 + ($i_09 * 40 & -1) + 4 | 0;
    $8 = HEAP32[$nodeGroupsInLayer >> 2] | 0;
    $arrayidx15 = $8 + ($j_05 << 2) | 0;
    $9 = HEAP32[$arrayidx15 >> 2] | 0;
    $nNodes = $9 + 4 | 0;
    $10 = HEAP32[$nNodes >> 2] | 0;
    $cmp171 = ($10 | 0) > 0;
    if ($cmp171) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $nodes = $9 | 0;
    $q_02 = 0;
    label = 12;
    break;
   case 12:
    $11 = HEAP32[$nodes >> 2] | 0;
    $arrayidx19 = $11 + ($q_02 << 2) | 0;
    $12 = HEAP32[$arrayidx19 >> 2] | 0;
    $rank = $12 + 236 | 0;
    $13 = HEAP32[$rank >> 2] | 0;
    $sub = $13 - $count_08 | 0;
    HEAP32[$rank >> 2] = $sub;
    $inc20 = $q_02 + 1 | 0;
    $14 = HEAP32[$nNodes >> 2] | 0;
    $cmp17 = ($inc20 | 0) < ($14 | 0);
    if ($cmp17) {
      $q_02 = $inc20;
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $inc22 = $j_05 + 1 | 0;
    $15 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer11 = $15 + ($i_09 * 40 & -1) + 12 | 0;
    $16 = HEAP32[$nNodeGroupsInLayer11 >> 2] | 0;
    $cmp12 = ($inc22 | 0) < ($16 | 0);
    if ($cmp12) {
      $j_05 = $inc22;
      $7 = $15;
      label = 10;
      break;
    } else {
      $count_1 = $count_08;
      $start_2 = $start_07;
      label = 14;
      break;
    }
   case 14:
    $inc27 = $i_09 + 1 | 0;
    $17 = HEAP32[2800] | 0;
    $cmp = ($inc27 | 0) < ($17 | 0);
    if ($cmp) {
      $start_07 = $start_2;
      $count_08 = $count_1;
      $i_09 = $inc27;
      label = 3;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    return;
  }
}
function _rank3($g, $asp) {
  $g = $g | 0;
  $asp = $asp | 0;
  var $nextIter = 0, $0 = 0, $cmp27 = 0, $cmp1 = 0, $or_cond28 = 0, $1 = 0, $2 = 0, $combiAR = 0, $targetAR = 0, $i_029 = 0, $call = 0, $tobool24 = 0, $n_0_in25 = 0, $rank = 0, $call4 = 0, $tobool = 0, $call5 = 0.0, $3 = 0, $tobool6 = 0, $4 = 0, $call8 = 0, $5 = 0.0, $6 = 0.0, $cmp11 = 0, $curIterations = 0, $7 = 0, $prevIterations = 0, $inc = 0, $cmp = 0, $or_cond = 0, $8 = 0, $call17 = 0.0, $combiAR18 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nextIter = $asp + 24 | 0;
    $0 = HEAP32[$nextIter >> 2] | 0;
    _computeNodeGroups($g);
    $cmp27 = ($0 | 0) > 0;
    $cmp1 = ($0 | 0) == -1;
    $or_cond28 = $cmp27 | $cmp1;
    if ($or_cond28) {
      label = 3;
      break;
    } else {
      label = 12;
      break;
    }
   case 3:
    $1 = $g;
    $2 = $g;
    $combiAR = $asp + 8 | 0;
    $targetAR = $asp | 0;
    $i_029 = 0;
    label = 4;
    break;
   case 4:
    $call = _agfstnode($1) | 0;
    $tobool24 = ($call | 0) == 0;
    if ($tobool24) {
      label = 6;
      break;
    } else {
      $n_0_in25 = $call;
      label = 5;
      break;
    }
   case 5:
    $rank = $n_0_in25 + 236 | 0;
    HEAP32[$rank >> 2] = 0;
    $call4 = _agnxtnode($1, $n_0_in25) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_0_in25 = $call4;
      label = 5;
      break;
    }
   case 6:
    _rank1($2);
    $call5 = +_computeCombiAR($g);
    HEAPF64[$combiAR >> 3] = $call5;
    $3 = HEAP8[164912] | 0;
    $tobool6 = $3 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $4 = HEAP32[_stderr >> 2] | 0;
    $call8 = _fprintf($4 | 0, 119304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $call5, tempInt) | 0) | 0;
    label = 8;
    break;
   case 8:
    if ($cmp1) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $5 = +HEAPF64[$combiAR >> 3];
    $6 = +HEAPF64[$targetAR >> 3];
    $cmp11 = $5 > $6;
    if ($cmp11) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $curIterations = $asp + 20 | 0;
    $7 = HEAP32[$curIterations >> 2] | 0;
    $prevIterations = $asp + 16 | 0;
    HEAP32[$prevIterations >> 2] = $7;
    HEAP32[$curIterations >> 2] = $i_029;
    label = 12;
    break;
   case 11:
    _applyPacking2($g);
    $inc = $i_029 + 1 | 0;
    $cmp = ($inc | 0) < ($0 | 0);
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      $i_029 = $inc;
      label = 4;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $8 = $g;
    _rank1($8);
    _computeLayerWidths($g);
    _zapLayers();
    $call17 = +_computeCombiAR($g);
    $combiAR18 = $asp + 8 | 0;
    HEAPF64[$combiAR18 >> 3] = $call17;
    STACKTOP = __stackBase__;
    return;
  }
}
function _computeNodeGroups($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $mul = 0, $call1 = 0, $1 = 0, $2 = 0, $call2 = 0, $tobool46 = 0, $n_0_in47 = 0, $id = 0, $3 = 0, $call3 = 0, $tobool = 0, $call4 = 0, $tobool643 = 0, $n_145_in = 0, $n_145 = 0, $u8 = 0, $UF_size = 0, $4 = 0, $5 = 0, $cmp = 0, $call9 = 0, $6 = 0, $7 = 0, $8 = 0, $nodes = 0, $9 = 0, $10 = 0, $nodes11 = 0, $11 = 0, $12 = 0, $13 = 0, $nNodes = 0, $width = 0, $14 = 0, $15 = 0.0, $16 = 0, $17 = 0, $width16 = 0, $height = 0, $18 = 0, $19 = 0.0, $20 = 0, $21 = 0, $height19 = 0, $22 = 0, $id21 = 0, $23 = 0, $24 = 0, $inc = 0, $call22 = 0, $id24 = 0, $25 = 0, $cmp25 = 0, $26 = 0, $nNodes30 = 0, $27 = 0, $inc31 = 0, $28 = 0, $nodes33 = 0, $29 = 0, $arrayidx34 = 0, $width36 = 0, $30 = 0, $31 = 0.0, $32 = 0, $width38 = 0, $33 = 0.0, $add = 0.0, $34 = 0, $height40 = 0, $35 = 0.0, $height42 = 0, $36 = 0, $37 = 0.0, $cmp43 = 0, $_ = 0.0, $id51 = 0, $38 = 0, $UF_size54 = 0, $39 = 0, $mul55 = 0, $call56 = 0, $40 = 0, $41 = 0, $42 = 0, $nodes58 = 0, $cmp59 = 0, $43 = 0, $44 = 0, $nodes62 = 0, $45 = 0, $46 = 0, $47 = 0, $nNodes65 = 0, $width67 = 0, $48 = 0.0, $49 = 0, $50 = 0, $width69 = 0, $height71 = 0, $51 = 0.0, $52 = 0, $53 = 0, $height73 = 0, $nodes79 = 0, $54 = 0, $arrayidx80 = 0, $55 = 0, $56 = 0, $nNodes82 = 0, $width84 = 0, $57 = 0.0, $width86 = 0, $58 = 0, $59 = 0.0, $add87 = 0.0, $60 = 0, $61 = 0, $width89 = 0, $height91 = 0, $62 = 0.0, $height93 = 0, $63 = 0, $64 = 0.0, $cmp94 = 0, $_41 = 0.0, $65 = 0, $66 = 0, $height104 = 0, $67 = 0, $68 = 0, $id108 = 0, $69 = 0, $70 = 0, $inc109 = 0, $call113 = 0, $tobool6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agnnodes($0) | 0;
    $mul = $call * 24 & -1;
    $call1 = _gmalloc($mul) | 0;
    $1 = $call1;
    HEAP32[2294] = $1;
    HEAP32[2798] = 0;
    $2 = $g;
    $call2 = _agfstnode($2) | 0;
    $tobool46 = ($call2 | 0) == 0;
    if ($tobool46) {
      label = 4;
      break;
    } else {
      $n_0_in47 = $call2;
      label = 3;
      break;
    }
   case 3:
    $id = $n_0_in47 + 136 | 0;
    $3 = $id;
    HEAP32[$3 >> 2] = -1;
    $call3 = _agnxtnode($2, $n_0_in47) | 0;
    $tobool = ($call3 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_0_in47 = $call3;
      label = 3;
      break;
    }
   case 4:
    $call4 = _agfstnode($2) | 0;
    $tobool643 = ($call4 | 0) == 0;
    if ($tobool643) {
      label = 14;
      break;
    } else {
      $n_145_in = $call4;
      label = 5;
      break;
    }
   case 5:
    $n_145 = $n_145_in;
    $u8 = $n_145_in + 24 | 0;
    $UF_size = $n_145_in + 220 | 0;
    $4 = $UF_size;
    $5 = HEAP32[$4 >> 2] | 0;
    $cmp = ($5 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call9 = _zmalloc(4) | 0;
    $6 = $call9;
    $7 = HEAP32[2798] | 0;
    $8 = HEAP32[2294] | 0;
    $nodes = $8 + ($7 * 24 & -1) | 0;
    HEAP32[$nodes >> 2] = $6;
    $9 = HEAP32[2798] | 0;
    $10 = HEAP32[2294] | 0;
    $nodes11 = $10 + ($9 * 24 & -1) | 0;
    $11 = HEAP32[$nodes11 >> 2] | 0;
    HEAP32[$11 >> 2] = $n_145;
    $12 = HEAP32[2798] | 0;
    $13 = HEAP32[2294] | 0;
    $nNodes = $13 + ($12 * 24 & -1) + 4 | 0;
    HEAP32[$nNodes >> 2] = 1;
    $width = $u8 + 24 | 0;
    $14 = $width;
    $15 = +HEAPF64[$14 >> 3];
    $16 = HEAP32[2798] | 0;
    $17 = HEAP32[2294] | 0;
    $width16 = $17 + ($16 * 24 & -1) + 8 | 0;
    HEAPF64[$width16 >> 3] = $15;
    $height = $u8 + 32 | 0;
    $18 = $height;
    $19 = +HEAPF64[$18 >> 3];
    $20 = HEAP32[2798] | 0;
    $21 = HEAP32[2294] | 0;
    $height19 = $21 + ($20 * 24 & -1) + 16 | 0;
    HEAPF64[$height19 >> 3] = $19;
    $22 = HEAP32[2798] | 0;
    $id21 = $u8 + 112 | 0;
    $23 = $id21;
    HEAP32[$23 >> 2] = $22;
    $24 = HEAP32[2798] | 0;
    $inc = $24 + 1 | 0;
    HEAP32[2798] = $inc;
    label = 13;
    break;
   case 7:
    $call22 = _UF_find($n_145) | 0;
    $id24 = $call22 + 136 | 0;
    $25 = HEAP32[$id24 >> 2] | 0;
    $cmp25 = ($25 | 0) > -1;
    if ($cmp25) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $26 = HEAP32[2294] | 0;
    $nNodes30 = $26 + ($25 * 24 & -1) + 4 | 0;
    $27 = HEAP32[$nNodes30 >> 2] | 0;
    $inc31 = $27 + 1 | 0;
    HEAP32[$nNodes30 >> 2] = $inc31;
    $28 = HEAP32[2294] | 0;
    $nodes33 = $28 + ($25 * 24 & -1) | 0;
    $29 = HEAP32[$nodes33 >> 2] | 0;
    $arrayidx34 = $29 + ($27 << 2) | 0;
    HEAP32[$arrayidx34 >> 2] = $n_145;
    $width36 = $u8 + 24 | 0;
    $30 = $width36;
    $31 = +HEAPF64[$30 >> 3];
    $32 = HEAP32[2294] | 0;
    $width38 = $32 + ($25 * 24 & -1) + 8 | 0;
    $33 = +HEAPF64[$width38 >> 3];
    $add = $31 + $33;
    HEAPF64[$width38 >> 3] = $add;
    $34 = HEAP32[2294] | 0;
    $height40 = $34 + ($25 * 24 & -1) + 16 | 0;
    $35 = +HEAPF64[$height40 >> 3];
    $height42 = $u8 + 32 | 0;
    $36 = $height42;
    $37 = +HEAPF64[$36 >> 3];
    $cmp43 = $35 < $37;
    $_ = $cmp43 ? $37 : $35;
    HEAPF64[$height40 >> 3] = $_;
    $id51 = $u8 + 112 | 0;
    $38 = $id51;
    HEAP32[$38 >> 2] = $25;
    label = 13;
    break;
   case 9:
    $UF_size54 = $call22 + 220 | 0;
    $39 = HEAP32[$UF_size54 >> 2] | 0;
    $mul55 = $39 << 2;
    $call56 = _zmalloc($mul55) | 0;
    $40 = $call56;
    $41 = HEAP32[2798] | 0;
    $42 = HEAP32[2294] | 0;
    $nodes58 = $42 + ($41 * 24 & -1) | 0;
    HEAP32[$nodes58 >> 2] = $40;
    $cmp59 = ($call22 | 0) == ($n_145 | 0);
    $43 = HEAP32[2798] | 0;
    $44 = HEAP32[2294] | 0;
    $nodes62 = $44 + ($43 * 24 & -1) | 0;
    $45 = HEAP32[$nodes62 >> 2] | 0;
    HEAP32[$45 >> 2] = $call22;
    $46 = HEAP32[2798] | 0;
    $47 = HEAP32[2294] | 0;
    if ($cmp59) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $nNodes65 = $47 + ($46 * 24 & -1) + 4 | 0;
    HEAP32[$nNodes65 >> 2] = 1;
    $width67 = $call22 + 48 | 0;
    $48 = +HEAPF64[$width67 >> 3];
    $49 = HEAP32[2798] | 0;
    $50 = HEAP32[2294] | 0;
    $width69 = $50 + ($49 * 24 & -1) + 8 | 0;
    HEAPF64[$width69 >> 3] = $48;
    $height71 = $call22 + 56 | 0;
    $51 = +HEAPF64[$height71 >> 3];
    $52 = HEAP32[2798] | 0;
    $53 = HEAP32[2294] | 0;
    $height73 = $53 + ($52 * 24 & -1) + 16 | 0;
    HEAPF64[$height73 >> 3] = $51;
    label = 12;
    break;
   case 11:
    $nodes79 = $47 + ($46 * 24 & -1) | 0;
    $54 = HEAP32[$nodes79 >> 2] | 0;
    $arrayidx80 = $54 + 4 | 0;
    HEAP32[$arrayidx80 >> 2] = $n_145;
    $55 = HEAP32[2798] | 0;
    $56 = HEAP32[2294] | 0;
    $nNodes82 = $56 + ($55 * 24 & -1) + 4 | 0;
    HEAP32[$nNodes82 >> 2] = 2;
    $width84 = $call22 + 48 | 0;
    $57 = +HEAPF64[$width84 >> 3];
    $width86 = $n_145_in + 48 | 0;
    $58 = $width86;
    $59 = +HEAPF64[$58 >> 3];
    $add87 = $57 + $59;
    $60 = HEAP32[2798] | 0;
    $61 = HEAP32[2294] | 0;
    $width89 = $61 + ($60 * 24 & -1) + 8 | 0;
    HEAPF64[$width89 >> 3] = $add87;
    $height91 = $call22 + 56 | 0;
    $62 = +HEAPF64[$height91 >> 3];
    $height93 = $n_145_in + 56 | 0;
    $63 = $height93;
    $64 = +HEAPF64[$63 >> 3];
    $cmp94 = $62 < $64;
    $_41 = $cmp94 ? $64 : $62;
    $65 = HEAP32[2798] | 0;
    $66 = HEAP32[2294] | 0;
    $height104 = $66 + ($65 * 24 & -1) + 16 | 0;
    HEAPF64[$height104 >> 3] = $_41;
    label = 12;
    break;
   case 12:
    $67 = HEAP32[2798] | 0;
    HEAP32[$id24 >> 2] = $67;
    $68 = HEAP32[2798] | 0;
    $id108 = $n_145_in + 136 | 0;
    $69 = $id108;
    HEAP32[$69 >> 2] = $68;
    $70 = HEAP32[2798] | 0;
    $inc109 = $70 + 1 | 0;
    HEAP32[2798] = $inc109;
    label = 13;
    break;
   case 13:
    $call113 = _agnxtnode($2, $n_145_in) | 0;
    $tobool6 = ($call113 | 0) == 0;
    if ($tobool6) {
      label = 14;
      break;
    } else {
      $n_145_in = $call113;
      label = 5;
      break;
    }
   case 14:
    return;
  }
}
function _computeCombiAR($g) {
  $g = $g | 0;
  var $0 = 0, $sub = 0, $ranksep = 0, $1 = 0, $mul = 0, $conv = 0.0, $cmp12 = 0, $2 = 0, $nodesep = 0, $3 = 0, $4 = 0, $i_015 = 0, $maxH_014 = 0.0, $maxW_013 = 0.0, $width = 0, $5 = 0.0, $nDummyNodes = 0, $6 = 0, $mul4 = 0, $conv5 = 0.0, $add = 0.0, $cmp6 = 0, $maxW_1 = 0.0, $height = 0, $7 = 0.0, $add18 = 0.0, $inc = 0, $cmp = 0, $maxH_0_lcssa = 0.0, $maxW_0_lcssa = 0.0, $div = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _computeLayerWidths($g);
    $0 = HEAP32[2800] | 0;
    $sub = $0 - 1 | 0;
    $ranksep = $g + 264 | 0;
    $1 = HEAP32[$ranksep >> 2] | 0;
    $mul = Math_imul($sub, $1);
    $conv = +($mul | 0);
    $cmp12 = ($0 | 0) > 0;
    if ($cmp12) {
      label = 3;
      break;
    } else {
      $maxW_0_lcssa = 0.0;
      $maxH_0_lcssa = $conv;
      label = 5;
      break;
    }
   case 3:
    $2 = HEAP32[2958] | 0;
    $nodesep = $g + 260 | 0;
    $3 = HEAP32[$nodesep >> 2] | 0;
    $4 = HEAP32[2800] | 0;
    $maxW_013 = 0.0;
    $maxH_014 = $conv;
    $i_015 = 0;
    label = 4;
    break;
   case 4:
    $width = $2 + ($i_015 * 40 & -1) + 24 | 0;
    $5 = +HEAPF64[$width >> 3];
    $nDummyNodes = $2 + ($i_015 * 40 & -1) + 16 | 0;
    $6 = HEAP32[$nDummyNodes >> 2] | 0;
    $mul4 = Math_imul($3, $6);
    $conv5 = +($mul4 | 0);
    $add = $5 + $conv5;
    $cmp6 = $maxW_013 < $add;
    $maxW_1 = $cmp6 ? $add : $maxW_013;
    $height = $2 + ($i_015 * 40 & -1) + 32 | 0;
    $7 = +HEAPF64[$height >> 3];
    $add18 = $maxH_014 + $7;
    $inc = $i_015 + 1 | 0;
    $cmp = ($inc | 0) < ($4 | 0);
    if ($cmp) {
      $maxW_013 = $maxW_1;
      $maxH_014 = $add18;
      $i_015 = $inc;
      label = 4;
      break;
    } else {
      $maxW_0_lcssa = $maxW_1;
      $maxH_0_lcssa = $add18;
      label = 5;
      break;
    }
   case 5:
    $div = $maxW_0_lcssa / $maxH_0_lcssa;
    return +$div;
  }
  return 0.0;
}
function _applyPacking2($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $mul = 0, $call1 = 0, $1 = 0, $call28 = 0, $cmp9 = 0, $i_010 = 0, $2 = 0, $arrayidx = 0, $inc = 0, $call2 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agnnodes($0) | 0;
    $mul = $call << 2;
    $call1 = _zmalloc($mul) | 0;
    $1 = $call1;
    HEAP32[1044] = $1;
    $call28 = _agnnodes($0) | 0;
    $cmp9 = ($call28 | 0) > 0;
    if ($cmp9) {
      $i_010 = 0;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $2 = HEAP32[1044] | 0;
    $arrayidx = $2 + ($i_010 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $i_010;
    $inc = $i_010 + 1 | 0;
    $call2 = _agnnodes($0) | 0;
    $cmp = ($inc | 0) < ($call2 | 0);
    if ($cmp) {
      $i_010 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _computeLayerWidths($g);
    _sortLayers($g);
    _reduceMaxWidth2($g);
    return;
  }
}
function _computeLayerWidths($g) {
  $g = $g | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $cmp57 = 0, $2 = 0, $3 = 0, $i_058 = 0, $nodeGroupsInLayer = 0, $4 = 0, $tobool1 = 0, $5 = 0, $nodeGroupsInLayer8 = 0, $6 = 0, $7 = 0, $8 = 0, $removed = 0, $9 = 0, $tobool10 = 0, $10 = 0, $inc16 = 0, $11 = 0, $cmp = 0, $12 = 0, $_lcssa56 = 0, $13 = 0, $14 = 0, $mul = 0, $call = 0, $15 = 0, $16 = 0, $cmp2054 = 0, $17 = 0, $i_155 = 0, $mul22 = 0, $call23 = 0, $18 = 0, $19 = 0, $nodeGroupsInLayer25 = 0, $20 = 0, $mul26 = 0, $call27 = 0, $21 = 0, $22 = 0, $removed29 = 0, $23 = 0, $layerNumber = 0, $24 = 0, $nNodeGroupsInLayer32 = 0, $25 = 0, $nDummyNodes = 0, $26 = 0, $width = 0, $27 = 0, $height = 0, $inc37 = 0, $28 = 0, $cmp20 = 0, $29 = 0, $call39 = 0, $tobool4152 = 0, $30 = 0, $cmp6544 = 0, $nodesep = 0, $n_0_in53 = 0, $call43 = 0, $tobool4550 = 0, $e_0_in51 = 0, $tail = 0, $31 = 0, $rank = 0, $32 = 0, $33 = 0, $k_046 = 0, $head = 0, $34 = 0, $rank4947 = 0, $35 = 0, $36 = 0, $cmp5048 = 0, $k_049 = 0, $37 = 0, $nDummyNodes53 = 0, $38 = 0, $inc54 = 0, $k_0 = 0, $39 = 0, $rank49 = 0, $40 = 0, $41 = 0, $cmp50 = 0, $call59 = 0, $tobool45 = 0, $call62 = 0, $tobool41 = 0, $i_245 = 0, $42 = 0, $nodes = 0, $43 = 0, $44 = 0, $rank70 = 0, $45 = 0, $add71 = 0, $46 = 0, $cmp72 = 0, $47 = 0, $width79 = 0, $48 = 0.0, $mul80 = 0.0, $49 = 0, $50 = 0, $width84 = 0, $51 = 0.0, $cmp85 = 0, $conv = 0, $52 = 0, $53 = 0, $mul87 = 0, $conv88 = 0.0, $add89 = 0.0, $add94 = 0.0, $54 = 0, $55 = 0, $height98 = 0, $56 = 0.0, $57 = 0, $height100 = 0, $58 = 0.0, $mul101 = 0.0, $cmp102 = 0, $59 = 0, $arrayidx113 = 0, $60 = 0, $61 = 0, $nNodeGroupsInLayer117 = 0, $62 = 0, $nodeGroupsInLayer121 = 0, $63 = 0, $arrayidx122 = 0, $64 = 0, $65 = 0, $nNodeGroupsInLayer126 = 0, $66 = 0, $inc127 = 0, $inc129 = 0, $67 = 0, $cmp65 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[2800] = 0;
    $0 = HEAP32[2958] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[2798] | 0;
    $cmp57 = ($1 | 0) > 0;
    $2 = HEAP32[2958] | 0;
    if ($cmp57) {
      $i_058 = 0;
      $3 = $2;
      label = 4;
      break;
    } else {
      $_lcssa56 = $2;
      label = 9;
      break;
    }
   case 4:
    $nodeGroupsInLayer = $3 + ($i_058 * 40 & -1) + 4 | 0;
    $4 = HEAP32[$nodeGroupsInLayer >> 2] | 0;
    $tobool1 = ($4 | 0) == 0;
    if ($tobool1) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP32[2958] | 0;
    $nodeGroupsInLayer8 = $5 + ($i_058 * 40 & -1) + 4 | 0;
    $6 = HEAP32[$nodeGroupsInLayer8 >> 2] | 0;
    $7 = $6;
    _free($7);
    label = 6;
    break;
   case 6:
    $8 = HEAP32[2958] | 0;
    $removed = $8 + ($i_058 * 40 & -1) + 8 | 0;
    $9 = HEAP32[$removed >> 2] | 0;
    $tobool10 = ($9 | 0) == 0;
    if ($tobool10) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $10 = $9;
    _free($10);
    label = 8;
    break;
   case 8:
    $inc16 = $i_058 + 1 | 0;
    $11 = HEAP32[2798] | 0;
    $cmp = ($inc16 | 0) < ($11 | 0);
    $12 = HEAP32[2958] | 0;
    if ($cmp) {
      $i_058 = $inc16;
      $3 = $12;
      label = 4;
      break;
    } else {
      $_lcssa56 = $12;
      label = 9;
      break;
    }
   case 9:
    $13 = $_lcssa56;
    _free($13);
    label = 10;
    break;
   case 10:
    $14 = HEAP32[2798] | 0;
    $mul = $14 * 40 & -1;
    $call = _zmalloc($mul) | 0;
    $15 = $call;
    HEAP32[2958] = $15;
    $16 = HEAP32[2798] | 0;
    $cmp2054 = ($16 | 0) > 0;
    if ($cmp2054) {
      $i_155 = 0;
      $17 = $16;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $mul22 = $17 << 2;
    $call23 = _zmalloc($mul22) | 0;
    $18 = $call23;
    $19 = HEAP32[2958] | 0;
    $nodeGroupsInLayer25 = $19 + ($i_155 * 40 & -1) + 4 | 0;
    HEAP32[$nodeGroupsInLayer25 >> 2] = $18;
    $20 = HEAP32[2798] | 0;
    $mul26 = $20 << 2;
    $call27 = _zmalloc($mul26) | 0;
    $21 = $call27;
    $22 = HEAP32[2958] | 0;
    $removed29 = $22 + ($i_155 * 40 & -1) + 8 | 0;
    HEAP32[$removed29 >> 2] = $21;
    $23 = HEAP32[2958] | 0;
    $layerNumber = $23 + ($i_155 * 40 & -1) | 0;
    HEAP32[$layerNumber >> 2] = $i_155;
    $24 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer32 = $24 + ($i_155 * 40 & -1) + 12 | 0;
    HEAP32[$nNodeGroupsInLayer32 >> 2] = 0;
    $25 = HEAP32[2958] | 0;
    $nDummyNodes = $25 + ($i_155 * 40 & -1) + 16 | 0;
    HEAP32[$nDummyNodes >> 2] = 0;
    $26 = HEAP32[2958] | 0;
    $width = $26 + ($i_155 * 40 & -1) + 24 | 0;
    HEAPF64[$width >> 3] = 0.0;
    $27 = HEAP32[2958] | 0;
    $height = $27 + ($i_155 * 40 & -1) + 32 | 0;
    HEAPF64[$height >> 3] = 0.0;
    $inc37 = $i_155 + 1 | 0;
    $28 = HEAP32[2798] | 0;
    $cmp20 = ($inc37 | 0) < ($28 | 0);
    if ($cmp20) {
      $i_155 = $inc37;
      $17 = $28;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $29 = $g;
    $call39 = _agfstnode($29) | 0;
    $tobool4152 = ($call39 | 0) == 0;
    if ($tobool4152) {
      label = 13;
      break;
    } else {
      $n_0_in53 = $call39;
      label = 15;
      break;
    }
   case 13:
    $30 = HEAP32[2798] | 0;
    $cmp6544 = ($30 | 0) > 0;
    if ($cmp6544) {
      label = 14;
      break;
    } else {
      label = 25;
      break;
    }
   case 14:
    $nodesep = $g + 260 | 0;
    $i_245 = 0;
    label = 20;
    break;
   case 15:
    $call43 = _agfstout($29, $n_0_in53) | 0;
    $tobool4550 = ($call43 | 0) == 0;
    if ($tobool4550) {
      label = 19;
      break;
    } else {
      $e_0_in51 = $call43;
      label = 16;
      break;
    }
   case 16:
    $tail = $e_0_in51 + 16 | 0;
    $31 = HEAP32[$tail >> 2] | 0;
    $rank = $31 + 236 | 0;
    $32 = $rank;
    $33 = HEAP32[$32 >> 2] | 0;
    $k_046 = $33 + 1 | 0;
    $head = $e_0_in51 + 12 | 0;
    $34 = HEAP32[$head >> 2] | 0;
    $rank4947 = $34 + 236 | 0;
    $35 = $rank4947;
    $36 = HEAP32[$35 >> 2] | 0;
    $cmp5048 = ($k_046 | 0) < ($36 | 0);
    if ($cmp5048) {
      $k_049 = $k_046;
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $37 = HEAP32[2958] | 0;
    $nDummyNodes53 = $37 + ($k_049 * 40 & -1) + 16 | 0;
    $38 = HEAP32[$nDummyNodes53 >> 2] | 0;
    $inc54 = $38 + 1 | 0;
    HEAP32[$nDummyNodes53 >> 2] = $inc54;
    $k_0 = $k_049 + 1 | 0;
    $39 = HEAP32[$head >> 2] | 0;
    $rank49 = $39 + 236 | 0;
    $40 = $rank49;
    $41 = HEAP32[$40 >> 2] | 0;
    $cmp50 = ($k_0 | 0) < ($41 | 0);
    if ($cmp50) {
      $k_049 = $k_0;
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call59 = _agnxtout($29, $e_0_in51) | 0;
    $tobool45 = ($call59 | 0) == 0;
    if ($tobool45) {
      label = 19;
      break;
    } else {
      $e_0_in51 = $call59;
      label = 16;
      break;
    }
   case 19:
    $call62 = _agnxtnode($29, $n_0_in53) | 0;
    $tobool41 = ($call62 | 0) == 0;
    if ($tobool41) {
      label = 13;
      break;
    } else {
      $n_0_in53 = $call62;
      label = 15;
      break;
    }
   case 20:
    $42 = HEAP32[2294] | 0;
    $nodes = $42 + ($i_245 * 24 & -1) | 0;
    $43 = HEAP32[$nodes >> 2] | 0;
    $44 = HEAP32[$43 >> 2] | 0;
    $rank70 = $44 + 236 | 0;
    $45 = HEAP32[$rank70 >> 2] | 0;
    $add71 = $45 + 1 | 0;
    $46 = HEAP32[2800] | 0;
    $cmp72 = ($add71 | 0) > ($46 | 0);
    if ($cmp72) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    HEAP32[2800] = $add71;
    label = 22;
    break;
   case 22:
    $47 = HEAP32[2294] | 0;
    $width79 = $47 + ($i_245 * 24 & -1) + 8 | 0;
    $48 = +HEAPF64[$width79 >> 3];
    $mul80 = $48 * 72.0;
    $49 = HEAP32[$rank70 >> 2] | 0;
    $50 = HEAP32[2958] | 0;
    $width84 = $50 + ($49 * 40 & -1) + 24 | 0;
    $51 = +HEAPF64[$width84 >> 3];
    $cmp85 = $51 > 0.0;
    $conv = $cmp85 & 1;
    $52 = HEAP32[$nodesep >> 2] | 0;
    $53 = -$conv | 0;
    $mul87 = $52 & $53;
    $conv88 = +($mul87 | 0);
    $add89 = $mul80 + $conv88;
    $add94 = $51 + $add89;
    HEAPF64[$width84 >> 3] = $add94;
    $54 = HEAP32[$rank70 >> 2] | 0;
    $55 = HEAP32[2958] | 0;
    $height98 = $55 + ($54 * 40 & -1) + 32 | 0;
    $56 = +HEAPF64[$height98 >> 3];
    $57 = HEAP32[2294] | 0;
    $height100 = $57 + ($i_245 * 24 & -1) + 16 | 0;
    $58 = +HEAPF64[$height100 >> 3];
    $mul101 = $58 * 72.0;
    $cmp102 = $56 < $mul101;
    if ($cmp102) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    HEAPF64[$height98 >> 3] = $mul101;
    label = 24;
    break;
   case 24:
    $59 = HEAP32[2294] | 0;
    $arrayidx113 = $59 + ($i_245 * 24 & -1) | 0;
    $60 = HEAP32[$rank70 >> 2] | 0;
    $61 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer117 = $61 + ($60 * 40 & -1) + 12 | 0;
    $62 = HEAP32[$nNodeGroupsInLayer117 >> 2] | 0;
    $nodeGroupsInLayer121 = $61 + ($60 * 40 & -1) + 4 | 0;
    $63 = HEAP32[$nodeGroupsInLayer121 >> 2] | 0;
    $arrayidx122 = $63 + ($62 << 2) | 0;
    HEAP32[$arrayidx122 >> 2] = $arrayidx113;
    $64 = HEAP32[$rank70 >> 2] | 0;
    $65 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer126 = $65 + ($64 * 40 & -1) + 12 | 0;
    $66 = HEAP32[$nNodeGroupsInLayer126 >> 2] | 0;
    $inc127 = $66 + 1 | 0;
    HEAP32[$nNodeGroupsInLayer126 >> 2] = $inc127;
    $inc129 = $i_245 + 1 | 0;
    $67 = HEAP32[2798] | 0;
    $cmp65 = ($inc129 | 0) < ($67 | 0);
    if ($cmp65) {
      $i_245 = $inc129;
      label = 20;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    return;
  }
}
function _init_UF_size($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool4 = 0, $n_0_in5 = 0, $UF_size = 0, $1 = 0, $call1 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool4 = ($call | 0) == 0;
    if ($tobool4) {
      label = 4;
      break;
    } else {
      $n_0_in5 = $call;
      label = 3;
      break;
    }
   case 3:
    $UF_size = $n_0_in5 + 220 | 0;
    $1 = $UF_size;
    HEAP32[$1 >> 2] = 0;
    $call1 = _agnxtnode($0, $n_0_in5) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_0_in5 = $call1;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _sortLayers($g) {
  $g = $g | 0;
  var $1 = 0;
  $1 = HEAP32[1044] | 0;
  _qsort($1 | 0, _agnnodes($g) | 0, 4, 592);
  return;
}
function _reduceMaxWidth2($g) {
  $g = $g | 0;
  var $0 = 0, $1 = 0, $2 = 0, $i_0 = 0, $cmp = 0, $arrayidx = 0, $3 = 0, $nNodeGroupsInLayer = 0, $4 = 0, $cmp2 = 0, $inc = 0, $cmp4 = 0, $arrayidx6 = 0, $5 = 0, $width = 0, $6 = 0.0, $nextMaxWidth_0 = 0.0, $maxLayerIndex_0 = 0, $7 = 0, $cmp8 = 0, $8 = 0, $nodeGroupsInLayer = 0, $9 = 0, $10 = 0, $nNodeGroupsInLayer12 = 0, $11 = 0, $12 = 0, $width14 = 0, $13 = 0.0, $div = 0.0, $cmp15 = 0, $mul = 0.0, $div18 = 0.0, $cmp19 = 0, $14 = 0, $width22 = 0, $15 = 0.0, $div23 = 0.0, $nextMaxWidth_1 = 0.0, $16 = 0, $nNodeGroupsInLayer26 = 0, $17 = 0, $cmp2950 = 0, $nodesep = 0, $i_157 = 0, $rem_055 = 0, $fstNdGrp_053 = 0, $fst_052 = 0, $w_051 = 0.0, $18 = 0, $removed = 0, $19 = 0, $arrayidx32 = 0, $20 = 0, $tobool = 0, $inc34 = 0, $nodeGroupsInLayer37 = 0, $21 = 0, $arrayidx38 = 0, $22 = 0, $width39 = 0, $23 = 0.0, $mul40 = 0.0, $add41 = 0.0, $cmp42 = 0, $conv = 0, $24 = 0, $25 = 0, $mul43 = 0, $conv44 = 0.0, $add45 = 0.0, $cmp46 = 0, $tobool49 = 0, $or_cond = 0, $nNodes = 0, $26 = 0, $cmp7546 = 0, $nNodes79 = 0, $nodes = 0, $nodes84 = 0, $add62 = 0.0, $add63 = 0.0, $_fst_0 = 0, $_fstNdGrp_0 = 0, $p_048 = 0, $27 = 0, $cmp8043 = 0, $q_045 = 0, $28 = 0, $arrayidx83 = 0, $29 = 0, $30 = 0, $arrayidx85 = 0, $31 = 0, $call = 0, $edge_type = 0, $inc89 = 0, $32 = 0, $cmp80 = 0, $inc92 = 0, $33 = 0, $cmp75 = 0, $34 = 0, $removed95 = 0, $35 = 0, $arrayidx96 = 0, $36 = 0, $nNodeGroupsInLayer99 = 0, $37 = 0, $dec = 0, $38 = 0, $nDummyNodes = 0, $39 = 0, $inc101 = 0, $40 = 0.0, $mul103 = 0.0, $41 = 0, $conv106 = 0.0, $add107 = 0.0, $42 = 0, $width109 = 0, $43 = 0.0, $sub = 0.0, $w_1 = 0.0, $fst_1 = 0, $fstNdGrp_1 = 0, $rem_1 = 0, $inc112 = 0, $add28 = 0, $cmp29 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2800] | 0;
    $1 = HEAP32[1044] | 0;
    $2 = HEAP32[2958] | 0;
    $i_0 = 0;
    label = 3;
    break;
   case 3:
    $cmp = ($i_0 | 0) < ($0 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $maxLayerIndex_0 = 0;
      $nextMaxWidth_0 = 0.0;
      label = 7;
      break;
    }
   case 4:
    $arrayidx = $1 + ($i_0 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $nNodeGroupsInLayer = $2 + ($3 * 40 & -1) + 12 | 0;
    $4 = HEAP32[$nNodeGroupsInLayer >> 2] | 0;
    $cmp2 = ($4 | 0) < 2;
    $inc = $i_0 + 1 | 0;
    if ($cmp2) {
      $i_0 = $inc;
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp4 = ($0 | 0) > ($inc | 0);
    if ($cmp4) {
      label = 6;
      break;
    } else {
      $maxLayerIndex_0 = $3;
      $nextMaxWidth_0 = 0.0;
      label = 7;
      break;
    }
   case 6:
    $arrayidx6 = $1 + ($inc << 2) | 0;
    $5 = HEAP32[$arrayidx6 >> 2] | 0;
    $width = $2 + ($5 * 40 & -1) + 24 | 0;
    $6 = +HEAPF64[$width >> 3];
    $maxLayerIndex_0 = $3;
    $nextMaxWidth_0 = $6;
    label = 7;
    break;
   case 7:
    $7 = HEAP32[2800] | 0;
    $cmp8 = ($i_0 | 0) == ($7 | 0);
    if ($cmp8) {
      label = 24;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $8 = HEAP32[2958] | 0;
    $nodeGroupsInLayer = $8 + ($maxLayerIndex_0 * 40 & -1) + 4 | 0;
    $9 = HEAP32[$nodeGroupsInLayer >> 2] | 0;
    $10 = $9;
    $nNodeGroupsInLayer12 = $8 + ($maxLayerIndex_0 * 40 & -1) + 12 | 0;
    $11 = HEAP32[$nNodeGroupsInLayer12 >> 2] | 0;
    _qsort($10 | 0, $11 | 0, 4, 14);
    $12 = HEAP32[2958] | 0;
    $width14 = $12 + ($maxLayerIndex_0 * 40 & -1) + 24 | 0;
    $13 = +HEAPF64[$width14 >> 3];
    $div = $13 * .25;
    $cmp15 = $nextMaxWidth_0 > $div;
    if ($cmp15) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $mul = $13 * 3.0;
    $div18 = $mul * .25;
    $cmp19 = $nextMaxWidth_0 < $div18;
    if ($cmp19) {
      $nextMaxWidth_1 = $nextMaxWidth_0;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $14 = HEAP32[2958] | 0;
    $width22 = $14 + ($maxLayerIndex_0 * 40 & -1) + 24 | 0;
    $15 = +HEAPF64[$width22 >> 3];
    $div23 = $15 * .5;
    $nextMaxWidth_1 = $div23;
    label = 11;
    break;
   case 11:
    $16 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer26 = $16 + ($maxLayerIndex_0 * 40 & -1) + 12 | 0;
    $17 = HEAP32[$nNodeGroupsInLayer26 >> 2] | 0;
    $cmp2950 = ($17 | 0) > 0;
    if ($cmp2950) {
      label = 12;
      break;
    } else {
      label = 24;
      break;
    }
   case 12:
    $nodesep = $g + 260 | 0;
    $w_051 = 0.0;
    $fst_052 = 0;
    $fstNdGrp_053 = 0;
    $rem_055 = 0;
    $i_157 = 0;
    label = 13;
    break;
   case 13:
    $18 = HEAP32[2958] | 0;
    $removed = $18 + ($maxLayerIndex_0 * 40 & -1) + 8 | 0;
    $19 = HEAP32[$removed >> 2] | 0;
    $arrayidx32 = $19 + ($i_157 << 2) | 0;
    $20 = HEAP32[$arrayidx32 >> 2] | 0;
    $tobool = ($20 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $inc34 = $rem_055 + 1 | 0;
    $rem_1 = $inc34;
    $fstNdGrp_1 = $fstNdGrp_053;
    $fst_1 = $fst_052;
    $w_1 = $w_051;
    label = 23;
    break;
   case 15:
    $nodeGroupsInLayer37 = $18 + ($maxLayerIndex_0 * 40 & -1) + 4 | 0;
    $21 = HEAP32[$nodeGroupsInLayer37 >> 2] | 0;
    $arrayidx38 = $21 + ($i_157 << 2) | 0;
    $22 = HEAP32[$arrayidx38 >> 2] | 0;
    $width39 = $22 + 8 | 0;
    $23 = +HEAPF64[$width39 >> 3];
    $mul40 = $23 * 72.0;
    $add41 = $w_051 + $mul40;
    $cmp42 = $w_051 > 0.0;
    $conv = $cmp42 & 1;
    $24 = HEAP32[$nodesep >> 2] | 0;
    $25 = -$conv | 0;
    $mul43 = $24 & $25;
    $conv44 = +($mul43 | 0);
    $add45 = $add41 + $conv44;
    $cmp46 = $add45 <= $nextMaxWidth_1;
    $tobool49 = ($fst_052 | 0) == 0;
    $or_cond = $cmp46 | $tobool49;
    if ($or_cond) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $nNodes = $fstNdGrp_053 + 4 | 0;
    $26 = HEAP32[$nNodes >> 2] | 0;
    $cmp7546 = ($26 | 0) > 0;
    if ($cmp7546) {
      label = 17;
      break;
    } else {
      label = 22;
      break;
    }
   case 17:
    $nNodes79 = $22 + 4 | 0;
    $nodes = $fstNdGrp_053 | 0;
    $nodes84 = $22 | 0;
    $p_048 = 0;
    label = 19;
    break;
   case 18:
    $add62 = $mul40 + $conv44;
    $add63 = $w_051 + $add62;
    $_fst_0 = $tobool49 ? 1 : $fst_052;
    $_fstNdGrp_0 = $tobool49 ? $22 : $fstNdGrp_053;
    $rem_1 = $rem_055;
    $fstNdGrp_1 = $_fstNdGrp_0;
    $fst_1 = $_fst_0;
    $w_1 = $add63;
    label = 23;
    break;
   case 19:
    $27 = HEAP32[$nNodes79 >> 2] | 0;
    $cmp8043 = ($27 | 0) > 0;
    if ($cmp8043) {
      $q_045 = 0;
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $28 = HEAP32[$nodes >> 2] | 0;
    $arrayidx83 = $28 + ($p_048 << 2) | 0;
    $29 = HEAP32[$arrayidx83 >> 2] | 0;
    $30 = HEAP32[$nodes84 >> 2] | 0;
    $arrayidx85 = $30 + ($q_045 << 2) | 0;
    $31 = HEAP32[$arrayidx85 >> 2] | 0;
    $call = _virtual_edge($29, $31, 0) | 0;
    $edge_type = $call + 128 | 0;
    HEAP8[$edge_type] = 1;
    $inc89 = $q_045 + 1 | 0;
    $32 = HEAP32[$nNodes79 >> 2] | 0;
    $cmp80 = ($inc89 | 0) < ($32 | 0);
    if ($cmp80) {
      $q_045 = $inc89;
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $inc92 = $p_048 + 1 | 0;
    $33 = HEAP32[$nNodes >> 2] | 0;
    $cmp75 = ($inc92 | 0) < ($33 | 0);
    if ($cmp75) {
      $p_048 = $inc92;
      label = 19;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $34 = HEAP32[2958] | 0;
    $removed95 = $34 + ($maxLayerIndex_0 * 40 & -1) + 8 | 0;
    $35 = HEAP32[$removed95 >> 2] | 0;
    $arrayidx96 = $35 + ($i_157 << 2) | 0;
    HEAP32[$arrayidx96 >> 2] = 1;
    $36 = HEAP32[2958] | 0;
    $nNodeGroupsInLayer99 = $36 + ($maxLayerIndex_0 * 40 & -1) + 12 | 0;
    $37 = HEAP32[$nNodeGroupsInLayer99 >> 2] | 0;
    $dec = $37 - 1 | 0;
    HEAP32[$nNodeGroupsInLayer99 >> 2] = $dec;
    $38 = HEAP32[2958] | 0;
    $nDummyNodes = $38 + ($maxLayerIndex_0 * 40 & -1) + 16 | 0;
    $39 = HEAP32[$nDummyNodes >> 2] | 0;
    $inc101 = $39 + 1 | 0;
    HEAP32[$nDummyNodes >> 2] = $inc101;
    $40 = +HEAPF64[$width39 >> 3];
    $mul103 = $40 * 72.0;
    $41 = HEAP32[$nodesep >> 2] | 0;
    $conv106 = +($41 | 0);
    $add107 = $mul103 + $conv106;
    $42 = HEAP32[2958] | 0;
    $width109 = $42 + ($maxLayerIndex_0 * 40 & -1) + 24 | 0;
    $43 = +HEAPF64[$width109 >> 3];
    $sub = $43 - $add107;
    HEAPF64[$width109 >> 3] = $sub;
    $rem_1 = $rem_055;
    $fstNdGrp_1 = $fstNdGrp_053;
    $fst_1 = $fst_052;
    $w_1 = $w_051;
    label = 23;
    break;
   case 23:
    $inc112 = $i_157 + 1 | 0;
    $add28 = $rem_1 + $17 | 0;
    $cmp29 = ($inc112 | 0) < ($add28 | 0);
    if ($cmp29) {
      $w_051 = $w_1;
      $fst_052 = $fst_1;
      $fstNdGrp_053 = $fstNdGrp_1;
      $rem_055 = $rem_1;
      $i_157 = $inc112;
      label = 13;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    return;
  }
}
function _compFunction2($a, $b) {
  $a = $a | 0;
  $b = $b | 0;
  var $call = 0, $call1 = 0;
  $call = _getOutDegree(HEAP32[$a >> 2] | 0) | 0;
  $call1 = _getOutDegree(HEAP32[$b >> 2] | 0) | 0;
  return (($call1 | 0) < ($call | 0) & 1) - (($call1 | 0) > ($call | 0) & 1) | 0;
}
function _getOutDegree($ng) {
  $ng = $ng | 0;
  var $nNodes = 0, $0 = 0, $cmp11 = 0, $nodes = 0, $i_013 = 0, $cnt_012 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $graph = 0, $3 = 0, $4 = 0, $5 = 0, $call = 0, $tobool8 = 0, $e_0_in10 = 0, $cnt_19 = 0, $inc = 0, $call3 = 0, $tobool = 0, $cnt_1_lcssa = 0, $inc5 = 0, $6 = 0, $cmp = 0, $cnt_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nNodes = $ng + 4 | 0;
    $0 = HEAP32[$nNodes >> 2] | 0;
    $cmp11 = ($0 | 0) > 0;
    if ($cmp11) {
      label = 3;
      break;
    } else {
      $cnt_0_lcssa = 0;
      label = 7;
      break;
    }
   case 3:
    $nodes = $ng | 0;
    $cnt_012 = 0;
    $i_013 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$nodes >> 2] | 0;
    $arrayidx = $1 + ($i_013 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $graph = $2 + 20 | 0;
    $3 = HEAP32[$graph >> 2] | 0;
    $4 = $3;
    $5 = $2;
    $call = _agfstout($4, $5) | 0;
    $tobool8 = ($call | 0) == 0;
    if ($tobool8) {
      $cnt_1_lcssa = $cnt_012;
      label = 6;
      break;
    } else {
      $cnt_19 = $cnt_012;
      $e_0_in10 = $call;
      label = 5;
      break;
    }
   case 5:
    $inc = $cnt_19 + 1 | 0;
    $call3 = _agnxtout($4, $e_0_in10) | 0;
    $tobool = ($call3 | 0) == 0;
    if ($tobool) {
      $cnt_1_lcssa = $inc;
      label = 6;
      break;
    } else {
      $cnt_19 = $inc;
      $e_0_in10 = $call3;
      label = 5;
      break;
    }
   case 6:
    $inc5 = $i_013 + 1 | 0;
    $6 = HEAP32[$nNodes >> 2] | 0;
    $cmp = ($inc5 | 0) < ($6 | 0);
    if ($cmp) {
      $cnt_012 = $cnt_1_lcssa;
      $i_013 = $inc5;
      label = 4;
      break;
    } else {
      $cnt_0_lcssa = $cnt_1_lcssa;
      label = 7;
      break;
    }
   case 7:
    return $cnt_0_lcssa | 0;
  }
  return 0;
}
function _compFunction($a, $b) {
  $a = $a | 0;
  $b = $b | 0;
  var $3 = 0, $4 = 0.0, $6 = 0.0;
  $3 = HEAP32[2958] | 0;
  $4 = +HEAPF64[$3 + ((HEAP32[$b >> 2] | 0) * 40 & -1) + 24 >> 3];
  $6 = +HEAPF64[$3 + ((HEAP32[$a >> 2] | 0) * 40 & -1) + 24 >> 3];
  return ($4 > $6 & 1) - ($4 < $6 & 1) | 0;
}
function _incr_width($g, $v) {
  $g = $g | 0;
  $v = $v | 0;
  var $conv = 0.0, $lw = 0, $rw = 0;
  $conv = +((HEAP32[$g + 260 >> 2] | 0) / 2 & -1 | 0);
  $lw = $v + 104 | 0;
  HEAPF64[$lw >> 3] = +HEAPF64[$lw >> 3] + $conv;
  $rw = $v + 112 | 0;
  HEAPF64[$rw >> 3] = $conv + +HEAPF64[$rw >> 3];
  return;
}
function _is_cluster_edge($e) {
  $e = $e | 0;
  var $tail = 0, $0 = 0, $ranktype = 0, $1 = 0, $cmp = 0, $head = 0, $2 = 0, $ranktype3 = 0, $3 = 0, $cmp5 = 0, $phitmp = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $ranktype = $0 + 165 | 0;
    $1 = HEAP8[$ranktype] | 0;
    $cmp = $1 << 24 >> 24 == 7;
    if ($cmp) {
      $4 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $e + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $ranktype3 = $2 + 165 | 0;
    $3 = HEAP8[$ranktype3] | 0;
    $cmp5 = $3 << 24 >> 24 == 7;
    $phitmp = $cmp5 & 1;
    $4 = $phitmp;
    label = 4;
    break;
   case 4:
    return $4 | 0;
  }
  return 0;
}
function _nonconstraint_edge($e) {
  $e = $e | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $index = 0, $2 = 0, $call = 0, $tobool1 = 0, $3 = 0, $tobool2 = 0, $call4 = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41954] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $e | 0;
    $index = $0 + 8 | 0;
    $2 = HEAP32[$index >> 2] | 0;
    $call = _agxget($1, $2) | 0;
    $tobool1 = ($call | 0) == 0;
    if ($tobool1) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP8[$call] | 0;
    $tobool2 = $3 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call4 = _mapbool($call) | 0;
    $cmp = $call4 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = 1;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $retval_0 = 0;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _class1($g) {
  $g = $g | 0;
  var $0 = 0, $1 = 0, $call = 0, $tobool28 = 0, $n_0_in29 = 0, $call1 = 0, $tobool325 = 0, $e_027_in = 0, $e_027 = 0, $to_virt = 0, $2 = 0, $3 = 0, $tobool5 = 0, $call6 = 0, $tobool7 = 0, $tail = 0, $4 = 0, $5 = 0, $call10 = 0, $head = 0, $6 = 0, $7 = 0, $call11 = 0, $cmp = 0, $clust = 0, $8 = 0, $tobool15 = 0, $clust17 = 0, $9 = 0, $tobool18 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $call23 = 0, $tobool24 = 0, $call26 = 0, $call28 = 0, $tobool3 = 0, $call30 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    _mark_clusters($0);
    $1 = $g;
    $call = _agfstnode($1) | 0;
    $tobool28 = ($call | 0) == 0;
    if ($tobool28) {
      label = 15;
      break;
    } else {
      $n_0_in29 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agfstout($1, $n_0_in29) | 0;
    $tobool325 = ($call1 | 0) == 0;
    if ($tobool325) {
      label = 14;
      break;
    } else {
      $e_027_in = $call1;
      label = 4;
      break;
    }
   case 4:
    $e_027 = $e_027_in;
    $to_virt = $e_027_in + 188 | 0;
    $2 = $to_virt;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool5 = ($3 | 0) == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      label = 13;
      break;
    }
   case 5:
    $call6 = _nonconstraint_edge($e_027) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      label = 13;
      break;
    }
   case 6:
    $tail = $e_027_in + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $5 = $4;
    $call10 = _UF_find($5) | 0;
    $head = $e_027_in + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $7 = $6;
    $call11 = _UF_find($7) | 0;
    $cmp = ($call10 | 0) == ($call11 | 0);
    if ($cmp) {
      label = 13;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $clust = $call10 + 216 | 0;
    $8 = HEAP32[$clust >> 2] | 0;
    $tobool15 = ($8 | 0) == 0;
    if ($tobool15) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $clust17 = $call11 + 216 | 0;
    $9 = HEAP32[$clust17 >> 2] | 0;
    $tobool18 = ($9 | 0) == 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $10 = HEAP32[$tail >> 2] | 0;
    $11 = $10;
    $12 = HEAP32[$head >> 2] | 0;
    $13 = $12;
    _interclust1($g, $11, $13, $e_027);
    label = 13;
    break;
   case 10:
    $call23 = _find_fast_edge($call10, $call11) | 0;
    $tobool24 = ($call23 | 0) == 0;
    if ($tobool24) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _merge_oneway($e_027, $call23);
    label = 13;
    break;
   case 12:
    $call26 = _virtual_edge($call10, $call11, $e_027) | 0;
    label = 13;
    break;
   case 13:
    $call28 = _agnxtout($1, $e_027_in) | 0;
    $tobool3 = ($call28 | 0) == 0;
    if ($tobool3) {
      label = 14;
      break;
    } else {
      $e_027_in = $call28;
      label = 4;
      break;
    }
   case 14:
    $call30 = _agnxtnode($1, $n_0_in29) | 0;
    $tobool = ($call30 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      $n_0_in29 = $call30;
      label = 3;
      break;
    }
   case 15:
    return;
  }
}
function _interclust1($g, $t, $h, $e) {
  $g = $g | 0;
  $t = $t | 0;
  $h = $h | 0;
  $e = $e | 0;
  var $tail = 0, $0 = 0, $clust = 0, $1 = 0, $tobool = 0, $rank = 0, $2 = 0, $leader = 0, $3 = 0, $rank8 = 0, $4 = 0, $sub = 0, $t_rank_0 = 0, $head = 0, $5 = 0, $clust10 = 0, $6 = 0, $tobool11 = 0, $rank15 = 0, $7 = 0, $leader20 = 0, $8 = 0, $rank22 = 0, $9 = 0, $sub23 = 0, $h_rank_0 = 0, $minlen = 0, $10 = 0, $conv = 0, $add = 0, $sub27 = 0, $cmp = 0, $phitmp14 = 0.0, $sub31 = 0, $phitmp = 0.0, $h_len_0 = 0.0, $t_len_0 = 0.0, $call = 0, $node_type = 0, $call34 = 0, $call35 = 0, $weight = 0, $11 = 0.0, $mul = 0.0, $conv38 = 0, $call39 = 0, $12 = 0.0, $conv43 = 0, $call44 = 0, $to_orig = 0, $to_orig47 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $clust = $0 + 216 | 0;
    $1 = HEAP32[$clust >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      $t_rank_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $rank = $0 + 236 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $leader = $1 + 276 | 0;
    $3 = HEAP32[$leader >> 2] | 0;
    $rank8 = $3 + 236 | 0;
    $4 = HEAP32[$rank8 >> 2] | 0;
    $sub = $2 - $4 | 0;
    $t_rank_0 = $sub;
    label = 4;
    break;
   case 4:
    $head = $e + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $clust10 = $5 + 216 | 0;
    $6 = HEAP32[$clust10 >> 2] | 0;
    $tobool11 = ($6 | 0) == 0;
    if ($tobool11) {
      $h_rank_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $rank15 = $5 + 236 | 0;
    $7 = HEAP32[$rank15 >> 2] | 0;
    $leader20 = $6 + 276 | 0;
    $8 = HEAP32[$leader20 >> 2] | 0;
    $rank22 = $8 + 236 | 0;
    $9 = HEAP32[$rank22 >> 2] | 0;
    $sub23 = $7 - $9 | 0;
    $h_rank_0 = $sub23;
    label = 6;
    break;
   case 6:
    $minlen = $e + 186 | 0;
    $10 = HEAP16[$minlen >> 1] | 0;
    $conv = $10 & 65535;
    $add = $t_rank_0 - $h_rank_0 | 0;
    $sub27 = $add + $conv | 0;
    $cmp = ($sub27 | 0) > 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $phitmp14 = +($sub27 | 0);
    $t_len_0 = 0.0;
    $h_len_0 = $phitmp14;
    label = 9;
    break;
   case 8:
    $sub31 = -$sub27 | 0;
    $phitmp = +($sub31 | 0);
    $t_len_0 = $phitmp;
    $h_len_0 = 0.0;
    label = 9;
    break;
   case 9:
    $call = _virtual_node($g) | 0;
    $node_type = $call + 162 | 0;
    HEAP8[$node_type] = 2;
    $call34 = _UF_find($t) | 0;
    $call35 = _UF_find($h) | 0;
    $weight = $e + 172 | 0;
    $11 = +HEAPF32[$weight >> 2];
    $mul = $11 * 10.0;
    $conv38 = ~~$mul;
    $call39 = _make_aux_edge($call, $call34, $t_len_0, $conv38) | 0;
    $12 = +HEAPF32[$weight >> 2];
    $conv43 = ~~$12;
    $call44 = _make_aux_edge($call, $call35, $h_len_0, $conv43) | 0;
    $to_orig = $call44 + 132 | 0;
    HEAP32[$to_orig >> 2] = $e;
    $to_orig47 = $call39 + 132 | 0;
    HEAP32[$to_orig47 >> 2] = $e;
    return;
  }
}
function _mergeable($e, $f) {
  $e = $e | 0;
  $f = $f | 0;
  var $tobool = 0, $tobool1 = 0, $or_cond = 0, $tail = 0, $0 = 0, $tail3 = 0, $1 = 0, $cmp = 0, $head = 0, $2 = 0, $head5 = 0, $3 = 0, $cmp6 = 0, $label = 0, $4 = 0, $label9 = 0, $5 = 0, $cmp10 = 0, $call = 0, $tobool12 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($e | 0) == 0;
    $tobool1 = ($f | 0) == 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $tail3 = $f + 16 | 0;
    $1 = HEAP32[$tail3 >> 2] | 0;
    $cmp = ($0 | 0) == ($1 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $head = $e + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $head5 = $f + 12 | 0;
    $3 = HEAP32[$head5 >> 2] | 0;
    $cmp6 = ($2 | 0) == ($3 | 0);
    if ($cmp6) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $label = $e + 112 | 0;
    $4 = HEAP32[$label >> 2] | 0;
    $label9 = $f + 112 | 0;
    $5 = HEAP32[$label9 >> 2] | 0;
    $cmp10 = ($4 | 0) == ($5 | 0);
    if ($cmp10) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call = _ports_eq($e, $f) | 0;
    $tobool12 = ($call | 0) == 0;
    if ($tobool12) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 8;
      break;
    }
   case 7:
    $retval_0 = 0;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _class2($g) {
  $g = $g | 0;
  var $nlist = 0, $n_nodes = 0, $0 = 0, $n_cluster = 0, $1 = 0, $cmp126 = 0, $clust = 0, $c_0127 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $4 = 0, $inc = 0, $5 = 0, $cmp = 0, $6 = 0, $call = 0, $tobool124 = 0, $n_0_in125 = 0, $call6 = 0, $tobool8122 = 0, $e_0_in123 = 0, $head = 0, $7 = 0, $8 = 0, $weight_class = 0, $9 = 0, $cmp11 = 0, $inc16 = 0, $tail = 0, $10 = 0, $11 = 0, $weight_class18 = 0, $12 = 0, $cmp20 = 0, $inc26 = 0, $call29 = 0, $tobool8 = 0, $call32 = 0, $tobool = 0, $call34 = 0, $tobool36119 = 0, $n_1121_in = 0, $n_1121 = 0, $clust39 = 0, $13 = 0, $cmp40 = 0, $call42 = 0, $cmp43 = 0, $14 = 0, $inc48 = 0, $call50 = 0, $tobool52113 = 0, $e_1117_in = 0, $prev_0116 = 0, $e_1117 = 0, $u54 = 0, $to_virt = 0, $15 = 0, $16 = 0, $tobool55 = 0, $call58 = 0, $tobool59 = 0, $call61 = 0, $tobool62 = 0, $to_virt65 = 0, $17 = 0, $tobool66 = 0, $tail70 = 0, $18 = 0, $u71 = 0, $rank = 0, $19 = 0, $20 = 0, $head72 = 0, $21 = 0, $u73 = 0, $rank74 = 0, $22 = 0, $23 = 0, $cmp75 = 0, $tobool82 = 0, $tail84 = 0, $24 = 0, $25 = 0, $tail85 = 0, $26 = 0, $cmp86 = 0, $head89 = 0, $27 = 0, $28 = 0, $head90 = 0, $29 = 0, $cmp91 = 0, $u95 = 0, $rank96 = 0, $30 = 0, $31 = 0, $u98 = 0, $rank99 = 0, $32 = 0, $33 = 0, $cmp100 = 0, $label = 0, $34 = 0, $35 = 0, $cmp105 = 0, $label109 = 0, $36 = 0, $cmp110 = 0, $call113 = 0, $tobool114 = 0, $37 = 0, $tobool116 = 0, $38 = 0, $to_virt121 = 0, $39 = 0, $tail125 = 0, $40 = 0, $head126 = 0, $41 = 0, $cmp127 = 0, $42 = 0, $call132 = 0, $43 = 0, $44 = 0, $call134 = 0, $45 = 0, $46 = 0, $cmp136 = 0, $47 = 0, $48 = 0, $cmp139 = 0, $rank145 = 0, $49 = 0, $50 = 0, $rank148 = 0, $51 = 0, $52 = 0, $cmp149 = 0, $cmp159 = 0, $call167 = 0, $53 = 0, $tobool168 = 0, $cmp170 = 0, $or_cond = 0, $u173 = 0, $to_virt174 = 0, $54 = 0, $55 = 0, $cmp175 = 0, $tail178 = 0, $56 = 0, $57 = 0, $head179 = 0, $58 = 0, $59 = 0, $label182 = 0, $60 = 0, $61 = 0, $cmp183 = 0, $label187 = 0, $62 = 0, $63 = 0, $cmp188 = 0, $call191 = 0, $tobool192 = 0, $64 = 0, $tobool194 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $70 = 0, $71 = 0, $prev_1 = 0, $call209 = 0, $tobool52 = 0, $call212 = 0, $tobool36 = 0, $root = 0, $72 = 0, $cmp214 = 0, $list = 0, $73 = 0, $tobool218 = 0, $74 = 0, $call222 = 0, $call223 = 0, $call222_sink = 0, $75 = 0, $76 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    HEAP32[$nlist >> 2] = 0;
    $n_nodes = $g + 244 | 0;
    HEAP32[$n_nodes >> 2] = 0;
    $0 = $g;
    _mark_clusters($0);
    $n_cluster = $g + 212 | 0;
    $1 = HEAP32[$n_cluster >> 2] | 0;
    $cmp126 = ($1 | 0) < 1;
    if ($cmp126) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_0127 = 1;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $2 + ($c_0127 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $4 = $3;
    _build_skeleton($0, $4);
    $inc = $c_0127 + 1 | 0;
    $5 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($5 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_0127 = $inc;
      label = 4;
      break;
    }
   case 5:
    $6 = $g;
    $call = _agfstnode($6) | 0;
    $tobool124 = ($call | 0) == 0;
    if ($tobool124) {
      label = 13;
      break;
    } else {
      $n_0_in125 = $call;
      label = 6;
      break;
    }
   case 6:
    $call6 = _agfstout($6, $n_0_in125) | 0;
    $tobool8122 = ($call6 | 0) == 0;
    if ($tobool8122) {
      label = 12;
      break;
    } else {
      $e_0_in123 = $call6;
      label = 7;
      break;
    }
   case 7:
    $head = $e_0_in123 + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    $8 = $7;
    $weight_class = $8 + 166 | 0;
    $9 = HEAP8[$weight_class] | 0;
    $cmp11 = $9 << 24 >> 24 < 3;
    if ($cmp11) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $inc16 = $9 + 1 & 255;
    HEAP8[$weight_class] = $inc16;
    label = 9;
    break;
   case 9:
    $tail = $e_0_in123 + 16 | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $11 = $10;
    $weight_class18 = $11 + 166 | 0;
    $12 = HEAP8[$weight_class18] | 0;
    $cmp20 = $12 << 24 >> 24 < 3;
    if ($cmp20) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $inc26 = $12 + 1 & 255;
    HEAP8[$weight_class18] = $inc26;
    label = 11;
    break;
   case 11:
    $call29 = _agnxtout($6, $e_0_in123) | 0;
    $tobool8 = ($call29 | 0) == 0;
    if ($tobool8) {
      label = 12;
      break;
    } else {
      $e_0_in123 = $call29;
      label = 7;
      break;
    }
   case 12:
    $call32 = _agnxtnode($6, $n_0_in125) | 0;
    $tobool = ($call32 | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      $n_0_in125 = $call32;
      label = 6;
      break;
    }
   case 13:
    $call34 = _agfstnode($6) | 0;
    $tobool36119 = ($call34 | 0) == 0;
    if ($tobool36119) {
      label = 57;
      break;
    } else {
      $n_1121_in = $call34;
      label = 14;
      break;
    }
   case 14:
    $n_1121 = $n_1121_in;
    $clust39 = $n_1121_in + 216 | 0;
    $13 = HEAP32[$clust39 >> 2] | 0;
    $cmp40 = ($13 | 0) == 0;
    if ($cmp40) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 15:
    $call42 = _UF_find($n_1121) | 0;
    $cmp43 = ($n_1121 | 0) == ($call42 | 0);
    if ($cmp43) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    _fast_node($g, $n_1121);
    $14 = HEAP32[$n_nodes >> 2] | 0;
    $inc48 = $14 + 1 | 0;
    HEAP32[$n_nodes >> 2] = $inc48;
    label = 17;
    break;
   case 17:
    $call50 = _agfstout($6, $n_1121_in) | 0;
    $tobool52113 = ($call50 | 0) == 0;
    if ($tobool52113) {
      label = 56;
      break;
    } else {
      $prev_0116 = 0;
      $e_1117_in = $call50;
      label = 18;
      break;
    }
   case 18:
    $e_1117 = $e_1117_in;
    $u54 = $e_1117_in + 24 | 0;
    $to_virt = $e_1117_in + 188 | 0;
    $15 = $to_virt;
    $16 = HEAP32[$15 >> 2] | 0;
    $tobool55 = ($16 | 0) == 0;
    if ($tobool55) {
      label = 19;
      break;
    } else {
      $prev_1 = $e_1117;
      label = 55;
      break;
    }
   case 19:
    $call58 = _is_cluster_edge($e_1117) | 0;
    $tobool59 = ($call58 | 0) == 0;
    if ($tobool59) {
      label = 26;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call61 = _mergeable($prev_0116, $e_1117) | 0;
    $tobool62 = ($call61 | 0) == 0;
    if ($tobool62) {
      label = 25;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $to_virt65 = $prev_0116 + 188 | 0;
    $17 = HEAP32[$to_virt65 >> 2] | 0;
    $tobool66 = ($17 | 0) == 0;
    if ($tobool66) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    _merge_chain($g, $e_1117, $17, 0);
    _other_edge($e_1117);
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 23:
    $tail70 = $e_1117_in + 16 | 0;
    $18 = HEAP32[$tail70 >> 2] | 0;
    $u71 = $18 + 24 | 0;
    $rank = $u71 + 212 | 0;
    $19 = $rank;
    $20 = HEAP32[$19 >> 2] | 0;
    $head72 = $e_1117_in + 12 | 0;
    $21 = HEAP32[$head72 >> 2] | 0;
    $u73 = $21 + 24 | 0;
    $rank74 = $u73 + 212 | 0;
    $22 = $rank74;
    $23 = HEAP32[$22 >> 2] | 0;
    $cmp75 = ($20 | 0) == ($23 | 0);
    if ($cmp75) {
      label = 24;
      break;
    } else {
      $prev_1 = $prev_0116;
      label = 55;
      break;
    }
   case 24:
    _merge_oneway($e_1117, $prev_0116);
    _other_edge($e_1117);
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 25:
    _interclrep($g, $e_1117);
    $prev_1 = $e_1117;
    label = 55;
    break;
   case 26:
    $tobool82 = ($prev_0116 | 0) == 0;
    if ($tobool82) {
      label = 37;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $tail84 = $e_1117_in + 16 | 0;
    $24 = HEAP32[$tail84 >> 2] | 0;
    $25 = $24;
    $tail85 = $prev_0116 + 16 | 0;
    $26 = HEAP32[$tail85 >> 2] | 0;
    $cmp86 = ($25 | 0) == ($26 | 0);
    if ($cmp86) {
      label = 28;
      break;
    } else {
      label = 37;
      break;
    }
   case 28:
    $head89 = $e_1117_in + 12 | 0;
    $27 = HEAP32[$head89 >> 2] | 0;
    $28 = $27;
    $head90 = $prev_0116 + 12 | 0;
    $29 = HEAP32[$head90 >> 2] | 0;
    $cmp91 = ($28 | 0) == ($29 | 0);
    if ($cmp91) {
      label = 29;
      break;
    } else {
      label = 37;
      break;
    }
   case 29:
    $u95 = $24 + 24 | 0;
    $rank96 = $u95 + 212 | 0;
    $30 = $rank96;
    $31 = HEAP32[$30 >> 2] | 0;
    $u98 = $27 + 24 | 0;
    $rank99 = $u98 + 212 | 0;
    $32 = $rank99;
    $33 = HEAP32[$32 >> 2] | 0;
    $cmp100 = ($31 | 0) == ($33 | 0);
    if ($cmp100) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    _merge_oneway($e_1117, $prev_0116);
    _other_edge($e_1117);
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 31:
    $label = $u54 + 88 | 0;
    $34 = $label;
    $35 = HEAP32[$34 >> 2] | 0;
    $cmp105 = ($35 | 0) == 0;
    if ($cmp105) {
      label = 32;
      break;
    } else {
      label = 37;
      break;
    }
   case 32:
    $label109 = $prev_0116 + 112 | 0;
    $36 = HEAP32[$label109 >> 2] | 0;
    $cmp110 = ($36 | 0) == 0;
    if ($cmp110) {
      label = 33;
      break;
    } else {
      label = 37;
      break;
    }
   case 33:
    $call113 = _ports_eq($e_1117, $prev_0116) | 0;
    $tobool114 = ($call113 | 0) == 0;
    if ($tobool114) {
      label = 37;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $37 = HEAP8[167952] | 0;
    $tobool116 = $37 << 24 >> 24 == 0;
    if ($tobool116) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $38 = $u54 + 104 | 0;
    HEAP8[$38] = 6;
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 36:
    $to_virt121 = $prev_0116 + 188 | 0;
    $39 = HEAP32[$to_virt121 >> 2] | 0;
    _merge_chain($g, $e_1117, $39, 1);
    _other_edge($e_1117);
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 37:
    $tail125 = $e_1117_in + 16 | 0;
    $40 = HEAP32[$tail125 >> 2] | 0;
    $head126 = $e_1117_in + 12 | 0;
    $41 = HEAP32[$head126 >> 2] | 0;
    $cmp127 = ($40 | 0) == ($41 | 0);
    if ($cmp127) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    _other_edge($e_1117);
    $prev_1 = $e_1117;
    label = 55;
    break;
   case 39:
    $42 = $40;
    $call132 = _UF_find($42) | 0;
    $43 = HEAP32[$head126 >> 2] | 0;
    $44 = $43;
    $call134 = _UF_find($44) | 0;
    $45 = HEAP32[$tail125 >> 2] | 0;
    $46 = $45;
    $cmp136 = ($46 | 0) == ($call132 | 0);
    if ($cmp136) {
      label = 40;
      break;
    } else {
      $prev_1 = $prev_0116;
      label = 55;
      break;
    }
   case 40:
    $47 = HEAP32[$head126 >> 2] | 0;
    $48 = $47;
    $cmp139 = ($48 | 0) == ($call134 | 0);
    if ($cmp139) {
      label = 41;
      break;
    } else {
      $prev_1 = $prev_0116;
      label = 55;
      break;
    }
   case 41:
    $rank145 = $45 + 236 | 0;
    $49 = $rank145;
    $50 = HEAP32[$49 >> 2] | 0;
    $rank148 = $47 + 236 | 0;
    $51 = $rank148;
    $52 = HEAP32[$51 >> 2] | 0;
    $cmp149 = ($50 | 0) == ($52 | 0);
    if ($cmp149) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    _flat_edge($g, $e_1117);
    $prev_1 = $e_1117;
    label = 55;
    break;
   case 43:
    $cmp159 = ($52 | 0) > ($50 | 0);
    if ($cmp159) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    _make_chain($g, $46, $48, $e_1117);
    $prev_1 = $e_1117;
    label = 55;
    break;
   case 45:
    $call167 = _agfindedge($6, $47, $45) | 0;
    $53 = $call167;
    $tobool168 = ($call167 | 0) == 0;
    $cmp170 = ($call167 | 0) == ($e_1117_in | 0);
    $or_cond = $tobool168 | $cmp170;
    if ($or_cond) {
      label = 54;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $u173 = $call167 + 24 | 0;
    $to_virt174 = $u173 + 164 | 0;
    $54 = $to_virt174;
    $55 = HEAP32[$54 >> 2] | 0;
    $cmp175 = ($55 | 0) == 0;
    if ($cmp175) {
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    $tail178 = $call167 + 16 | 0;
    $56 = HEAP32[$tail178 >> 2] | 0;
    $57 = $56;
    $head179 = $call167 + 12 | 0;
    $58 = HEAP32[$head179 >> 2] | 0;
    $59 = $58;
    _make_chain($g, $57, $59, $53);
    label = 48;
    break;
   case 48:
    $label182 = $u54 + 88 | 0;
    $60 = $label182;
    $61 = HEAP32[$60 >> 2] | 0;
    $cmp183 = ($61 | 0) == 0;
    if ($cmp183) {
      label = 49;
      break;
    } else {
      label = 54;
      break;
    }
   case 49:
    $label187 = $u173 + 88 | 0;
    $62 = $label187;
    $63 = HEAP32[$62 >> 2] | 0;
    $cmp188 = ($63 | 0) == 0;
    if ($cmp188) {
      label = 50;
      break;
    } else {
      label = 54;
      break;
    }
   case 50:
    $call191 = _ports_eq($e_1117, $53) | 0;
    $tobool192 = ($call191 | 0) == 0;
    if ($tobool192) {
      label = 54;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $64 = HEAP8[167952] | 0;
    $tobool194 = $64 << 24 >> 24 == 0;
    if ($tobool194) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $65 = $u54 + 104 | 0;
    HEAP8[$65] = 6;
    $66 = $u173 + 145 | 0;
    HEAP8[$66] = 1;
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 53:
    _other_edge($e_1117);
    $67 = HEAP32[$54 >> 2] | 0;
    _merge_chain($g, $e_1117, $67, 1);
    $prev_1 = $prev_0116;
    label = 55;
    break;
   case 54:
    $68 = HEAP32[$head126 >> 2] | 0;
    $69 = $68;
    $70 = HEAP32[$tail125 >> 2] | 0;
    $71 = $70;
    _make_chain($g, $69, $71, $e_1117);
    $prev_1 = $e_1117;
    label = 55;
    break;
   case 55:
    $call209 = _agnxtout($6, $e_1117_in) | 0;
    $tobool52 = ($call209 | 0) == 0;
    if ($tobool52) {
      label = 56;
      break;
    } else {
      $prev_0116 = $prev_1;
      $e_1117_in = $call209;
      label = 18;
      break;
    }
   case 56:
    $call212 = _agnxtnode($6, $n_1121_in) | 0;
    $tobool36 = ($call212 | 0) == 0;
    if ($tobool36) {
      label = 57;
      break;
    } else {
      $n_1121_in = $call212;
      label = 14;
      break;
    }
   case 57:
    $root = $g + 32 | 0;
    $72 = HEAP32[$root >> 2] | 0;
    $cmp214 = ($72 | 0) == ($g | 0);
    if ($cmp214) {
      label = 62;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $list = $g + 228 | 0;
    $73 = HEAP32[$list >> 2] | 0;
    $tobool218 = ($73 | 0) == 0;
    if ($tobool218) {
      label = 60;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $74 = $73;
    $call222 = _grealloc($74, 4) | 0;
    $call222_sink = $call222;
    label = 61;
    break;
   case 60:
    $call223 = _gmalloc(4) | 0;
    $call222_sink = $call223;
    label = 61;
    break;
   case 61:
    $75 = $call222_sink;
    HEAP32[$list >> 2] = $75;
    $76 = HEAP32[$nlist >> 2] | 0;
    HEAP32[$75 >> 2] = $76;
    label = 62;
    break;
   case 62:
    return;
  }
}
function _interclrep($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $tail = 0, $0 = 0, $call = 0, $head = 0, $1 = 0, $call1 = 0, $rank = 0, $2 = 0, $rank3 = 0, $3 = 0, $cmp = 0, $call_call1 = 0, $call1_call = 0, $clust = 0, $4 = 0, $clust6 = 0, $5 = 0, $cmp7 = 0, $call9 = 0, $tobool = 0, $rank13 = 0, $6 = 0, $rank15 = 0, $7 = 0, $cmp16 = 0, $to_virt = 0, $ve_023 = 0, $tobool2024 = 0, $ve_025 = 0, $head21 = 0, $8 = 0, $rank23 = 0, $9 = 0, $10 = 0, $cmp26 = 0, $edge_type = 0, $11 = 0, $list = 0, $12 = 0, $ve_0 = 0, $tobool20 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $call = _leader_of($0) | 0;
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $call1 = _leader_of($1) | 0;
    $rank = $call + 236 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $rank3 = $call1 + 236 | 0;
    $3 = HEAP32[$rank3 >> 2] | 0;
    $cmp = ($2 | 0) > ($3 | 0);
    $call_call1 = $cmp ? $call : $call1;
    $call1_call = $cmp ? $call1 : $call;
    $clust = $call1_call + 216 | 0;
    $4 = HEAP32[$clust >> 2] | 0;
    $clust6 = $call_call1 + 216 | 0;
    $5 = HEAP32[$clust6 >> 2] | 0;
    $cmp7 = ($4 | 0) == ($5 | 0);
    if ($cmp7) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call9 = _find_fast_edge($call1_call, $call_call1) | 0;
    $tobool = ($call9 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _merge_chain($g, $e, $call9, 1);
    label = 9;
    break;
   case 5:
    $rank13 = $call1_call + 236 | 0;
    $6 = HEAP32[$rank13 >> 2] | 0;
    $rank15 = $call_call1 + 236 | 0;
    $7 = HEAP32[$rank15 >> 2] | 0;
    $cmp16 = ($6 | 0) == ($7 | 0);
    if ($cmp16) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _make_chain($g, $call1_call, $call_call1, $e);
    $to_virt = $e + 188 | 0;
    $ve_023 = HEAP32[$to_virt >> 2] | 0;
    $tobool2024 = ($ve_023 | 0) == 0;
    if ($tobool2024) {
      label = 9;
      break;
    } else {
      $ve_025 = $ve_023;
      label = 7;
      break;
    }
   case 7:
    $head21 = $ve_025 + 12 | 0;
    $8 = HEAP32[$head21 >> 2] | 0;
    $rank23 = $8 + 236 | 0;
    $9 = HEAP32[$rank23 >> 2] | 0;
    $10 = HEAP32[$rank15 >> 2] | 0;
    $cmp26 = ($9 | 0) > ($10 | 0);
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $edge_type = $ve_025 + 128 | 0;
    HEAP8[$edge_type] = 5;
    $11 = HEAP32[$head21 >> 2] | 0;
    $list = $11 + 184 | 0;
    $12 = HEAP32[$list >> 2] | 0;
    $ve_0 = HEAP32[$12 >> 2] | 0;
    $tobool20 = ($ve_0 | 0) == 0;
    if ($tobool20) {
      label = 9;
      break;
    } else {
      $ve_025 = $ve_0;
      label = 7;
      break;
    }
   case 9:
    return;
  }
}
function _label_vnode($g, $orig) {
  $g = $g | 0;
  $orig = $orig | 0;
  var $label = 0, $0 = 0, $dimen_sroa_0_0__idx = 0, $dimen_sroa_0_0_copyload = 0.0, $dimen_sroa_1_8__idx3 = 0, $dimen_sroa_1_8_copyload = 0.0, $call = 0, $1 = 0, $label5 = 0, $graph = 0, $2 = 0, $root = 0, $3 = 0, $nodesep = 0, $4 = 0, $conv = 0.0, $lw = 0, $label_ontop = 0, $5 = 0, $tobool = 0, $root9 = 0, $6 = 0, $rankdir = 0, $7 = 0, $and11 = 0, $tobool12 = 0, $ht18 = 0, $rw = 0, $rw21 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $label = $orig + 112 | 0;
    $0 = HEAP32[$label >> 2] | 0;
    $dimen_sroa_0_0__idx = $0 + 24 | 0;
    $dimen_sroa_0_0_copyload = +HEAPF64[$dimen_sroa_0_0__idx >> 3];
    $dimen_sroa_1_8__idx3 = $0 + 32 | 0;
    $dimen_sroa_1_8_copyload = +HEAPF64[$dimen_sroa_1_8__idx3 >> 3];
    $call = _virtual_node($g) | 0;
    $1 = HEAP32[$label >> 2] | 0;
    $label5 = $call + 120 | 0;
    HEAP32[$label5 >> 2] = $1;
    $graph = $call + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $root = $2 + 32 | 0;
    $3 = HEAP32[$root >> 2] | 0;
    $nodesep = $3 + 260 | 0;
    $4 = HEAP32[$nodesep >> 2] | 0;
    $conv = +($4 | 0);
    $lw = $call + 104 | 0;
    HEAPF64[$lw >> 3] = $conv;
    $label_ontop = $orig + 130 | 0;
    $5 = HEAP8[$label_ontop] | 0;
    $tobool = $5 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $root9 = $g + 32 | 0;
    $6 = HEAP32[$root9 >> 2] | 0;
    $rankdir = $6 + 156 | 0;
    $7 = HEAP32[$rankdir >> 2] | 0;
    $and11 = $7 & 1;
    $tobool12 = ($and11 | 0) == 0;
    $ht18 = $call + 96 | 0;
    if ($tobool12) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAPF64[$ht18 >> 3] = $dimen_sroa_0_0_copyload;
    $rw = $call + 112 | 0;
    HEAPF64[$rw >> 3] = $dimen_sroa_1_8_copyload;
    label = 6;
    break;
   case 5:
    HEAPF64[$ht18 >> 3] = $dimen_sroa_1_8_copyload;
    $rw21 = $call + 112 | 0;
    HEAPF64[$rw21 >> 3] = $dimen_sroa_0_0_copyload;
    label = 6;
    break;
   case 6:
    return $call | 0;
  }
  return 0;
}
function _plain_vnode($g) {
  $g = $g | 0;
  var $call = 0;
  $call = _virtual_node($g) | 0;
  _incr_width($g, $call);
  return $call | 0;
}
function _merge_chain($g, $e, $f, $flag) {
  $g = $g | 0;
  $e = $e | 0;
  $f = $f | 0;
  $flag = $flag | 0;
  var $tail = 0, $0 = 0, $rank = 0, $1 = 0, $head = 0, $2 = 0, $rank2 = 0, $3 = 0, $cmp = 0, $_ = 0, $to_virt = 0, $4 = 0, $cmp10 = 0, $tobool = 0, $xpenalty = 0, $weight = 0, $count = 0, $rep_0 = 0, $5 = 0, $count18 = 0, $6 = 0, $add = 0, $7 = 0, $xpenalty24 = 0, $8 = 0, $add26 = 0, $9 = 0.0, $weight30 = 0, $10 = 0.0, $add31 = 0.0, $head32 = 0, $11 = 0, $rank34 = 0, $12 = 0, $cmp35 = 0, $13 = 0, $list = 0, $14 = 0, $15 = 0, $tobool42 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $rank = $0 + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $head = $e + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $rank2 = $2 + 236 | 0;
    $3 = HEAP32[$rank2 >> 2] | 0;
    $cmp = ($1 | 0) > ($3 | 0);
    $_ = $cmp ? $1 : $3;
    $to_virt = $e + 188 | 0;
    $4 = HEAP32[$to_virt >> 2] | 0;
    $cmp10 = ($4 | 0) == 0;
    if ($cmp10) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(153128, 149, 164032, 155184);
   case 4:
    HEAP32[$to_virt >> 2] = $f;
    $tobool = ($flag | 0) == 0;
    $xpenalty = $e + 170 | 0;
    $weight = $e + 172 | 0;
    $count = $e + 184 | 0;
    $rep_0 = $f;
    label = 5;
    break;
   case 5:
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $5 = HEAP16[$count >> 1] | 0;
    $count18 = $rep_0 + 184 | 0;
    $6 = HEAP16[$count18 >> 1] | 0;
    $add = $6 + $5 & 65535;
    HEAP16[$count18 >> 1] = $add;
    label = 7;
    break;
   case 7:
    $7 = HEAP16[$xpenalty >> 1] | 0;
    $xpenalty24 = $rep_0 + 170 | 0;
    $8 = HEAP16[$xpenalty24 >> 1] | 0;
    $add26 = $8 + $7 & 65535;
    HEAP16[$xpenalty24 >> 1] = $add26;
    $9 = +HEAPF32[$weight >> 2];
    $weight30 = $rep_0 + 172 | 0;
    $10 = +HEAPF32[$weight30 >> 2];
    $add31 = $9 + $10;
    HEAPF32[$weight30 >> 2] = $add31;
    $head32 = $rep_0 + 12 | 0;
    $11 = HEAP32[$head32 >> 2] | 0;
    $rank34 = $11 + 236 | 0;
    $12 = HEAP32[$rank34 >> 2] | 0;
    $cmp35 = ($12 | 0) == ($_ | 0);
    if ($cmp35) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _incr_width($g, $11);
    $13 = HEAP32[$head32 >> 2] | 0;
    $list = $13 + 184 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $15 = HEAP32[$14 >> 2] | 0;
    $tobool42 = ($15 | 0) == 0;
    if ($tobool42) {
      label = 9;
      break;
    } else {
      $rep_0 = $15;
      label = 5;
      break;
    }
   case 9:
    return;
  }
}
function _make_chain($g, $from, $to, $orig) {
  $g = $g | 0;
  $from = $from | 0;
  $to = $to | 0;
  $orig = $orig | 0;
  var $label = 0, $0 = 0, $tobool = 0, $rank = 0, $1 = 0, $rank4 = 0, $2 = 0, $add = 0, $div = 0, $label_rank_0 = 0, $to_virt = 0, $3 = 0, $cmp = 0, $rank7 = 0, $4 = 0, $r_016 = 0, $rank10 = 0, $5 = 0, $cmp1117 = 0, $6 = 0, $r_019 = 0, $u_018 = 0, $cmp14 = 0, $cmp16 = 0, $call = 0, $call19 = 0, $v_0 = 0, $rank22 = 0, $v_1 = 0, $call25 = 0, $r_0 = 0, $7 = 0, $cmp11 = 0, $8 = 0, $cmp28 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $label = $orig + 112 | 0;
    $0 = HEAP32[$label >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $label_rank_0 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $rank = $from + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $rank4 = $to + 236 | 0;
    $2 = HEAP32[$rank4 >> 2] | 0;
    $add = $2 + $1 | 0;
    $div = ($add | 0) / 2 & -1;
    $label_rank_0 = $div;
    label = 4;
    break;
   case 4:
    $to_virt = $orig + 188 | 0;
    $3 = HEAP32[$to_virt >> 2] | 0;
    $cmp = ($3 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    ___assert_func(153128, 90, 164112, 126200);
   case 6:
    $rank7 = $from + 236 | 0;
    $4 = HEAP32[$rank7 >> 2] | 0;
    $r_016 = $4 + 1 | 0;
    $rank10 = $to + 236 | 0;
    $5 = HEAP32[$rank10 >> 2] | 0;
    $cmp1117 = ($r_016 | 0) > ($5 | 0);
    if ($cmp1117) {
      label = 13;
      break;
    } else {
      $u_018 = $from;
      $r_019 = $r_016;
      $6 = $5;
      label = 7;
      break;
    }
   case 7:
    $cmp14 = ($r_019 | 0) < ($6 | 0);
    if ($cmp14) {
      label = 8;
      break;
    } else {
      $v_1 = $to;
      label = 12;
      break;
    }
   case 8:
    $cmp16 = ($r_019 | 0) == ($label_rank_0 | 0);
    if ($cmp16) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $call = _label_vnode($g, $orig) | 0;
    $v_0 = $call;
    label = 11;
    break;
   case 10:
    $call19 = _plain_vnode($g) | 0;
    $v_0 = $call19;
    label = 11;
    break;
   case 11:
    $rank22 = $v_0 + 236 | 0;
    HEAP32[$rank22 >> 2] = $r_019;
    $v_1 = $v_0;
    label = 12;
    break;
   case 12:
    $call25 = _virtual_edge($u_018, $v_1, $orig) | 0;
    _virtual_weight($call25);
    $r_0 = $r_019 + 1 | 0;
    $7 = HEAP32[$rank10 >> 2] | 0;
    $cmp11 = ($r_0 | 0) > ($7 | 0);
    if ($cmp11) {
      label = 13;
      break;
    } else {
      $u_018 = $v_1;
      $r_019 = $r_0;
      $6 = $7;
      label = 7;
      break;
    }
   case 13:
    $8 = HEAP32[$to_virt >> 2] | 0;
    $cmp28 = ($8 | 0) == 0;
    if ($cmp28) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    ___assert_func(153128, 104, 164112, 117208);
   case 15:
    return;
  }
}
function _leader_of($v) {
  $v = $v | 0;
  var $ranktype = 0, $0 = 0, $cmp = 0, $call = 0, $clust3 = 0, $1 = 0, $rank = 0, $2 = 0, $rankleader = 0, $3 = 0, $arrayidx = 0, $4 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ranktype = $v + 165 | 0;
    $0 = HEAP8[$ranktype] | 0;
    $cmp = $0 << 24 >> 24 == 7;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _UF_find($v) | 0;
    $rv_0 = $call;
    label = 5;
    break;
   case 4:
    $clust3 = $v + 216 | 0;
    $1 = HEAP32[$clust3 >> 2] | 0;
    $rank = $v + 236 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $rankleader = $1 + 280 | 0;
    $3 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $3 + ($2 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $rv_0 = $4;
    label = 5;
    break;
   case 5:
    return $rv_0 | 0;
  }
  return 0;
}
function _make_interclust_chain($from, $to, $orig) {
  $from = $from | 0;
  $to = $to | 0;
  $orig = $orig | 0;
  var $call = 0, $call1 = 0;
  $call = _map_interclust_node($from) | 0;
  $call1 = _map_interclust_node($to) | 0;
  _map_path($call, $call1, $orig, HEAP32[$orig + 188 >> 2] | 0, ($call | 0) == ($from | 0) & ($call1 | 0) == ($to | 0) ? 1 : 5);
  return;
}
function _expand_cluster($subg) {
  $subg = $subg | 0;
  var $0 = 0;
  $0 = $subg;
  _class2($0);
  HEAP32[$subg + 232 >> 2] = 1;
  HEAP32[HEAP32[$subg + 228 >> 2] >> 2] = HEAP32[$subg + 220 >> 2] | 0;
  _allocate_ranks($0);
  _build_ranks($0, 0);
  _merge_ranks($subg);
  _interclexp($subg);
  _remove_rankleaders($subg);
  return;
}
function _merge_ranks($subg) {
  $subg = $subg | 0;
  var $root1 = 0, $0 = 0, $minrank = 0, $1 = 0, $cmp = 0, $conv = 0, $sub = 0, $rank = 0, $2 = 0, $valid = 0, $3 = 0, $conv9 = 0, $maxrank = 0, $4 = 0, $cmp1244 = 0, $rank15 = 0, $rankleader = 0, $rank47 = 0, $rank34 = 0, $5 = 0, $r_045 = 0, $6 = 0, $n = 0, $7 = 0, $8 = 0, $arrayidx18 = 0, $9 = 0, $order = 0, $10 = 0, $11 = 0, $n2439 = 0, $12 = 0, $cmp2540 = 0, $13 = 0, $i_042 = 0, $pos_041 = 0, $v31 = 0, $14 = 0, $arrayidx32 = 0, $15 = 0, $16 = 0, $v36 = 0, $17 = 0, $arrayidx37 = 0, $inc = 0, $order39 = 0, $18 = 0, $graph = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $n_nodes = 0, $23 = 0, $inc44 = 0, $inc45 = 0, $24 = 0, $n24 = 0, $25 = 0, $cmp25 = 0, $_lcssa = 0, $26 = 0, $v49 = 0, $27 = 0, $add_ptr = 0, $v53 = 0, $28 = 0, $valid57 = 0, $inc59 = 0, $29 = 0, $conv11 = 0, $cmp12 = 0, $r_0_lcssa = 0, $maxrank62 = 0, $30 = 0, $conv63 = 0, $cmp64 = 0, $rank68 = 0, $31 = 0, $valid70 = 0, $expanded = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root1 = $subg + 32 | 0;
    $0 = HEAP32[$root1 >> 2] | 0;
    $minrank = $subg + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $cmp = $1 << 16 >> 16 > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $conv = $1 << 16 >> 16;
    $sub = $conv - 1 | 0;
    $rank = $0 + 224 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $valid = $2 + ($sub * 44 & -1) + 33 | 0;
    HEAP8[$valid] = 0;
    label = 4;
    break;
   case 4:
    $3 = HEAP16[$minrank >> 1] | 0;
    $conv9 = $3 << 16 >> 16;
    $maxrank = $subg + 250 | 0;
    $4 = HEAP16[$maxrank >> 1] | 0;
    $cmp1244 = $3 << 16 >> 16 > $4 << 16 >> 16;
    if ($cmp1244) {
      $r_0_lcssa = $conv9;
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $rank15 = $subg + 224 | 0;
    $rankleader = $subg + 280 | 0;
    $rank47 = $0 + 224 | 0;
    $rank34 = $0 + 224 | 0;
    $5 = $subg;
    $r_045 = $conv9;
    label = 6;
    break;
   case 6:
    $6 = HEAP32[$rank15 >> 2] | 0;
    $n = $6 + ($r_045 * 44 & -1) | 0;
    $7 = HEAP32[$n >> 2] | 0;
    $8 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx18 = $8 + ($r_045 << 2) | 0;
    $9 = HEAP32[$arrayidx18 >> 2] | 0;
    $order = $9 + 240 | 0;
    $10 = HEAP32[$order >> 2] | 0;
    _make_slots($0, $r_045, $10, $7);
    $11 = HEAP32[$rank15 >> 2] | 0;
    $n2439 = $11 + ($r_045 * 44 & -1) | 0;
    $12 = HEAP32[$n2439 >> 2] | 0;
    $cmp2540 = ($12 | 0) > 0;
    if ($cmp2540) {
      $pos_041 = $10;
      $i_042 = 0;
      $13 = $11;
      label = 7;
      break;
    } else {
      $_lcssa = $11;
      label = 8;
      break;
    }
   case 7:
    $v31 = $13 + ($r_045 * 44 & -1) + 4 | 0;
    $14 = HEAP32[$v31 >> 2] | 0;
    $arrayidx32 = $14 + ($i_042 << 2) | 0;
    $15 = HEAP32[$arrayidx32 >> 2] | 0;
    $16 = HEAP32[$rank34 >> 2] | 0;
    $v36 = $16 + ($r_045 * 44 & -1) + 4 | 0;
    $17 = HEAP32[$v36 >> 2] | 0;
    $arrayidx37 = $17 + ($pos_041 << 2) | 0;
    HEAP32[$arrayidx37 >> 2] = $15;
    $inc = $pos_041 + 1 | 0;
    $order39 = $15 + 240 | 0;
    HEAP32[$order39 >> 2] = $pos_041;
    $18 = HEAP32[$root1 >> 2] | 0;
    $graph = $15 + 20 | 0;
    HEAP32[$graph >> 2] = $18;
    $19 = $15;
    _delete_fast_node($5, $19);
    $20 = HEAP32[$root1 >> 2] | 0;
    $21 = $20;
    _fast_node($21, $19);
    $22 = HEAP32[$root1 >> 2] | 0;
    $n_nodes = $22 + 244 | 0;
    $23 = HEAP32[$n_nodes >> 2] | 0;
    $inc44 = $23 + 1 | 0;
    HEAP32[$n_nodes >> 2] = $inc44;
    $inc45 = $i_042 + 1 | 0;
    $24 = HEAP32[$rank15 >> 2] | 0;
    $n24 = $24 + ($r_045 * 44 & -1) | 0;
    $25 = HEAP32[$n24 >> 2] | 0;
    $cmp25 = ($inc45 | 0) < ($25 | 0);
    if ($cmp25) {
      $pos_041 = $inc;
      $i_042 = $inc45;
      $13 = $24;
      label = 7;
      break;
    } else {
      $_lcssa = $24;
      label = 8;
      break;
    }
   case 8:
    $26 = HEAP32[$rank47 >> 2] | 0;
    $v49 = $26 + ($r_045 * 44 & -1) + 4 | 0;
    $27 = HEAP32[$v49 >> 2] | 0;
    $add_ptr = $27 + ($10 << 2) | 0;
    $v53 = $_lcssa + ($r_045 * 44 & -1) + 4 | 0;
    HEAP32[$v53 >> 2] = $add_ptr;
    $28 = HEAP32[$rank47 >> 2] | 0;
    $valid57 = $28 + ($r_045 * 44 & -1) + 33 | 0;
    HEAP8[$valid57] = 0;
    $inc59 = $r_045 + 1 | 0;
    $29 = HEAP16[$maxrank >> 1] | 0;
    $conv11 = $29 << 16 >> 16;
    $cmp12 = ($inc59 | 0) > ($conv11 | 0);
    if ($cmp12) {
      $r_0_lcssa = $inc59;
      label = 9;
      break;
    } else {
      $r_045 = $inc59;
      label = 6;
      break;
    }
   case 9:
    $maxrank62 = $0 + 250 | 0;
    $30 = HEAP16[$maxrank62 >> 1] | 0;
    $conv63 = $30 << 16 >> 16;
    $cmp64 = ($r_0_lcssa | 0) < ($conv63 | 0);
    if ($cmp64) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $rank68 = $0 + 224 | 0;
    $31 = HEAP32[$rank68 >> 2] | 0;
    $valid70 = $31 + ($r_0_lcssa * 44 & -1) + 33 | 0;
    HEAP8[$valid70] = 0;
    label = 11;
    break;
   case 11:
    $expanded = $subg + 284 | 0;
    HEAP8[$expanded] = 1;
    return;
  }
}
function _remove_rankleaders($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp15 = 0, $conv = 0, $rankleader = 0, $root = 0, $r_016 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $list = 0, $4 = 0, $5 = 0, $tobool12 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $tobool = 0, $list9 = 0, $10 = 0, $11 = 0, $tobool1113 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $tobool11 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $arrayidx16 = 0, $inc = 0, $20 = 0, $conv2 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp15 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp15) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rankleader = $g + 280 | 0;
    $root = $g + 32 | 0;
    $r_016 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $2 + ($r_016 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $list = $3 + 184 | 0;
    $4 = HEAP32[$list >> 2] | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $tobool12 = ($5 | 0) == 0;
    if ($tobool12) {
      label = 6;
      break;
    } else {
      $6 = $5;
      label = 5;
      break;
    }
   case 5:
    $7 = $6;
    _delete_fast_edge($7);
    $8 = HEAP32[$list >> 2] | 0;
    $9 = HEAP32[$8 >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $6 = $9;
      label = 5;
      break;
    }
   case 6:
    $list9 = $3 + 176 | 0;
    $10 = HEAP32[$list9 >> 2] | 0;
    $11 = HEAP32[$10 >> 2] | 0;
    $tobool1113 = ($11 | 0) == 0;
    if ($tobool1113) {
      label = 8;
      break;
    } else {
      $12 = $11;
      label = 7;
      break;
    }
   case 7:
    $13 = $12;
    _delete_fast_edge($13);
    $14 = HEAP32[$list9 >> 2] | 0;
    $15 = HEAP32[$14 >> 2] | 0;
    $tobool11 = ($15 | 0) == 0;
    if ($tobool11) {
      label = 8;
      break;
    } else {
      $12 = $15;
      label = 7;
      break;
    }
   case 8:
    $16 = HEAP32[$root >> 2] | 0;
    $17 = $16;
    $18 = $3;
    _delete_fast_node($17, $18);
    $19 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx16 = $19 + ($r_016 << 2) | 0;
    HEAP32[$arrayidx16 >> 2] = 0;
    $inc = $r_016 + 1 | 0;
    $20 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $20 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 9;
      break;
    } else {
      $r_016 = $inc;
      label = 4;
      break;
    }
   case 9:
    return;
  }
}
function _mark_clusters($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool39 = 0, $n_cluster = 0, $1 = 0, $cmp736 = 0, $clust11 = 0, $name23 = 0, $n_0_in40 = 0, $n_0 = 0, $ranktype = 0, $2 = 0, $cmp = 0, $3 = 0, $clust3 = 0, $call4 = 0, $tobool = 0, $c_037 = 0, $4 = 0, $arrayidx = 0, $5 = 0, $6 = 0, $call12 = 0, $tobool1434 = 0, $leader = 0, $7 = 0, $n_1_in35 = 0, $call16 = 0, $u17 = 0, $8 = 0, $9 = 0, $cmp20 = 0, $10 = 0, $11 = 0, $12 = 0, $call24 = 0, $13 = 0, $tobool14 = 0, $14 = 0, $15 = 0, $16 = 0, $clust28 = 0, $17 = 0, $call31 = 0, $tobool3332 = 0, $orig_0_in33 = 0, $to_virt = 0, $18 = 0, $19 = 0, $tobool36 = 0, $e_031 = 0, $head = 0, $20 = 0, $node_type = 0, $21 = 0, $cmp41 = 0, $clust44 = 0, $22 = 0, $list = 0, $23 = 0, $24 = 0, $tobool38 = 0, $call50 = 0, $tobool33 = 0, $inc = 0, $25 = 0, $cmp7 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool39 = ($call | 0) == 0;
    if ($tobool39) {
      label = 3;
      break;
    } else {
      $n_0_in40 = $call;
      label = 5;
      break;
    }
   case 3:
    $n_cluster = $g + 212 | 0;
    $1 = HEAP32[$n_cluster >> 2] | 0;
    $cmp736 = ($1 | 0) < 1;
    if ($cmp736) {
      label = 19;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $clust11 = $g + 216 | 0;
    $name23 = $g + 12 | 0;
    $c_037 = 1;
    label = 8;
    break;
   case 5:
    $n_0 = $n_0_in40;
    $ranktype = $n_0 + 165 | 0;
    $2 = HEAP8[$ranktype] | 0;
    $cmp = $2 << 24 >> 24 == 7;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $3 = $n_0_in40;
    _UF_singleton($3);
    label = 7;
    break;
   case 7:
    $clust3 = $n_0_in40 + 216 | 0;
    HEAP32[$clust3 >> 2] = 0;
    $call4 = _agnxtnode($0, $n_0_in40) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $n_0_in40 = $call4;
      label = 5;
      break;
    }
   case 8:
    $4 = HEAP32[$clust11 >> 2] | 0;
    $arrayidx = $4 + ($c_037 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $6 = $5;
    $call12 = _agfstnode($6) | 0;
    $tobool1434 = ($call12 | 0) == 0;
    if ($tobool1434) {
      label = 18;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $leader = $5 + 276 | 0;
    $7 = $5;
    $n_1_in35 = $call12;
    label = 10;
    break;
   case 10:
    $call16 = _agnxtnode($6, $n_1_in35) | 0;
    $u17 = $n_1_in35 + 24 | 0;
    $8 = $u17 + 141 | 0;
    $9 = HEAP8[$8] | 0;
    $cmp20 = $9 << 24 >> 24 == 0;
    if ($cmp20) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $10 = $n_1_in35 + 12 | 0;
    $11 = HEAP32[$10 >> 2] | 0;
    $12 = HEAP32[$name23 >> 2] | 0;
    $call24 = _agerr(0, 121184, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $11, HEAP32[tempInt + 8 >> 2] = $12, tempInt) | 0) | 0;
    $13 = $n_1_in35 | 0;
    _agdelete($7, $13);
    label = 12;
    break;
   case 12:
    $tobool14 = ($call16 | 0) == 0;
    if ($tobool14) {
      label = 18;
      break;
    } else {
      $n_1_in35 = $call16;
      label = 10;
      break;
    }
   case 13:
    $14 = HEAP32[$leader >> 2] | 0;
    $15 = $n_1_in35;
    $16 = $14;
    _UF_setname($15, $16);
    $clust28 = $u17 + 192 | 0;
    $17 = $clust28;
    HEAP32[$17 >> 2] = $5;
    HEAP8[$8] = 7;
    $call31 = _agfstout($6, $n_1_in35) | 0;
    $tobool3332 = ($call31 | 0) == 0;
    if ($tobool3332) {
      label = 12;
      break;
    } else {
      $orig_0_in33 = $call31;
      label = 14;
      break;
    }
   case 14:
    $to_virt = $orig_0_in33 + 188 | 0;
    $18 = $to_virt;
    $19 = HEAP32[$18 >> 2] | 0;
    $tobool36 = ($19 | 0) == 0;
    if ($tobool36) {
      label = 17;
      break;
    } else {
      $e_031 = $19;
      label = 15;
      break;
    }
   case 15:
    $head = $e_031 + 12 | 0;
    $20 = HEAP32[$head >> 2] | 0;
    $node_type = $20 + 162 | 0;
    $21 = HEAP8[$node_type] | 0;
    $cmp41 = $21 << 24 >> 24 == 1;
    if ($cmp41) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $clust44 = $20 + 216 | 0;
    HEAP32[$clust44 >> 2] = $5;
    $22 = HEAP32[$head >> 2] | 0;
    $list = $22 + 184 | 0;
    $23 = HEAP32[$list >> 2] | 0;
    $24 = HEAP32[$23 >> 2] | 0;
    $tobool38 = ($24 | 0) == 0;
    if ($tobool38) {
      label = 17;
      break;
    } else {
      $e_031 = $24;
      label = 15;
      break;
    }
   case 17:
    $call50 = _agnxtout($6, $orig_0_in33) | 0;
    $tobool33 = ($call50 | 0) == 0;
    if ($tobool33) {
      label = 12;
      break;
    } else {
      $orig_0_in33 = $call50;
      label = 14;
      break;
    }
   case 18:
    $inc = $c_037 + 1 | 0;
    $25 = HEAP32[$n_cluster >> 2] | 0;
    $cmp7 = ($inc | 0) > ($25 | 0);
    if ($cmp7) {
      label = 19;
      break;
    } else {
      $c_037 = $inc;
      label = 8;
      break;
    }
   case 19:
    STACKTOP = __stackBase__;
    return;
  }
}
function _build_skeleton($g, $subg) {
  $g = $g | 0;
  $subg = $subg | 0;
  var $maxrank = 0, $0 = 0, $conv = 0, $add = 0, $mul = 0, $call = 0, $1 = 0, $rankleader = 0, $minrank = 0, $2 = 0, $3 = 0, $cmp49 = 0, $conv3 = 0, $4 = 0, $subg_c = 0, $prev_051 = 0, $r_050 = 0, $call8 = 0, $5 = 0, $6 = 0, $arrayidx = 0, $7 = 0, $8 = 0, $clust = 0, $tobool = 0, $9 = 0, $call14 = 0, $10 = 0, $11 = 0, $mul17 = 0, $inc = 0, $12 = 0, $conv6 = 0, $cmp = 0, $13 = 0, $call19 = 0, $tobool2146 = 0, $v_0_in47 = 0, $rank24 = 0, $14 = 0, $15 = 0, $16 = 0, $arrayidx27 = 0, $17 = 0, $UF_size = 0, $18 = 0, $inc29 = 0, $call30 = 0, $tobool3244 = 0, $list = 0, $e_0_in45 = 0, $tail = 0, $19 = 0, $rank35 = 0, $20 = 0, $21 = 0, $head = 0, $22 = 0, $rank3841 = 0, $23 = 0, $24 = 0, $cmp3942 = 0, $r_143 = 0, $25 = 0, $26 = 0, $count = 0, $27 = 0, $inc45 = 0, $inc47 = 0, $28 = 0, $rank38 = 0, $29 = 0, $30 = 0, $cmp39 = 0, $call50 = 0, $tobool32 = 0, $call53 = 0, $tobool21 = 0, $31 = 0, $32 = 0, $cmp6239 = 0, $conv57 = 0, $r_240 = 0, $33 = 0, $arrayidx67 = 0, $34 = 0, $UF_size69 = 0, $35 = 0, $cmp70 = 0, $dec = 0, $inc77 = 0, $36 = 0, $conv61 = 0, $cmp62 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $maxrank = $subg + 250 | 0;
    $0 = HEAP16[$maxrank >> 1] | 0;
    $conv = $0 << 16 >> 16;
    $add = $conv << 2;
    $mul = $add + 8 | 0;
    $call = _zmalloc($mul) | 0;
    $1 = $call;
    $rankleader = $subg + 280 | 0;
    HEAP32[$rankleader >> 2] = $1;
    $minrank = $subg + 248 | 0;
    $2 = HEAP16[$minrank >> 1] | 0;
    $3 = HEAP16[$maxrank >> 1] | 0;
    $cmp49 = $2 << 16 >> 16 > $3 << 16 >> 16;
    if ($cmp49) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv3 = $2 << 16 >> 16;
    $4 = $g;
    $subg_c = $subg;
    $r_050 = $conv3;
    $prev_051 = 0;
    label = 4;
    break;
   case 4:
    $call8 = _virtual_node($4) | 0;
    $5 = $call8;
    $6 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $6 + ($r_050 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $5;
    $7 = $call8 + 236 | 0;
    HEAP32[$7 >> 2] = $r_050;
    $8 = $call8 + 165 | 0;
    HEAP8[$8] = 7;
    $clust = $call8 + 216 | 0;
    HEAP32[$clust >> 2] = $subg_c;
    $tobool = ($prev_051 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $9 = $prev_051;
    $call14 = _virtual_edge($9, $call8, 0) | 0;
    $10 = $call14 + 170 | 0;
    $11 = HEAP16[$10 >> 1] | 0;
    $mul17 = $11 * 1e3 & 65535;
    HEAP16[$10 >> 1] = $mul17;
    label = 6;
    break;
   case 6:
    $inc = $r_050 + 1 | 0;
    $12 = HEAP16[$maxrank >> 1] | 0;
    $conv6 = $12 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv6 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      $r_050 = $inc;
      $prev_051 = $5;
      label = 4;
      break;
    }
   case 7:
    $13 = $subg;
    $call19 = _agfstnode($13) | 0;
    $tobool2146 = ($call19 | 0) == 0;
    if ($tobool2146) {
      label = 14;
      break;
    } else {
      $v_0_in47 = $call19;
      label = 8;
      break;
    }
   case 8:
    $rank24 = $v_0_in47 + 236 | 0;
    $14 = $rank24;
    $15 = HEAP32[$14 >> 2] | 0;
    $16 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx27 = $16 + ($15 << 2) | 0;
    $17 = HEAP32[$arrayidx27 >> 2] | 0;
    $UF_size = $17 + 220 | 0;
    $18 = HEAP32[$UF_size >> 2] | 0;
    $inc29 = $18 + 1 | 0;
    HEAP32[$UF_size >> 2] = $inc29;
    $call30 = _agfstout($13, $v_0_in47) | 0;
    $tobool3244 = ($call30 | 0) == 0;
    if ($tobool3244) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $list = $17 + 184 | 0;
    $e_0_in45 = $call30;
    label = 10;
    break;
   case 10:
    $tail = $e_0_in45 + 16 | 0;
    $19 = HEAP32[$tail >> 2] | 0;
    $rank35 = $19 + 236 | 0;
    $20 = $rank35;
    $21 = HEAP32[$20 >> 2] | 0;
    $head = $e_0_in45 + 12 | 0;
    $22 = HEAP32[$head >> 2] | 0;
    $rank3841 = $22 + 236 | 0;
    $23 = $rank3841;
    $24 = HEAP32[$23 >> 2] | 0;
    $cmp3942 = ($21 | 0) < ($24 | 0);
    if ($cmp3942) {
      $r_143 = $21;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $25 = HEAP32[$list >> 2] | 0;
    $26 = HEAP32[$25 >> 2] | 0;
    $count = $26 + 184 | 0;
    $27 = HEAP16[$count >> 1] | 0;
    $inc45 = $27 + 1 & 65535;
    HEAP16[$count >> 1] = $inc45;
    $inc47 = $r_143 + 1 | 0;
    $28 = HEAP32[$head >> 2] | 0;
    $rank38 = $28 + 236 | 0;
    $29 = $rank38;
    $30 = HEAP32[$29 >> 2] | 0;
    $cmp39 = ($inc47 | 0) < ($30 | 0);
    if ($cmp39) {
      $r_143 = $inc47;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call50 = _agnxtout($13, $e_0_in45) | 0;
    $tobool32 = ($call50 | 0) == 0;
    if ($tobool32) {
      label = 13;
      break;
    } else {
      $e_0_in45 = $call50;
      label = 10;
      break;
    }
   case 13:
    $call53 = _agnxtnode($13, $v_0_in47) | 0;
    $tobool21 = ($call53 | 0) == 0;
    if ($tobool21) {
      label = 14;
      break;
    } else {
      $v_0_in47 = $call53;
      label = 8;
      break;
    }
   case 14:
    $31 = HEAP16[$minrank >> 1] | 0;
    $32 = HEAP16[$maxrank >> 1] | 0;
    $cmp6239 = $31 << 16 >> 16 > $32 << 16 >> 16;
    if ($cmp6239) {
      label = 19;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $conv57 = $31 << 16 >> 16;
    $r_240 = $conv57;
    label = 16;
    break;
   case 16:
    $33 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx67 = $33 + ($r_240 << 2) | 0;
    $34 = HEAP32[$arrayidx67 >> 2] | 0;
    $UF_size69 = $34 + 220 | 0;
    $35 = HEAP32[$UF_size69 >> 2] | 0;
    $cmp70 = ($35 | 0) > 1;
    if ($cmp70) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $dec = $35 - 1 | 0;
    HEAP32[$UF_size69 >> 2] = $dec;
    label = 18;
    break;
   case 18:
    $inc77 = $r_240 + 1 | 0;
    $36 = HEAP16[$maxrank >> 1] | 0;
    $conv61 = $36 << 16 >> 16;
    $cmp62 = ($inc77 | 0) > ($conv61 | 0);
    if ($cmp62) {
      label = 19;
      break;
    } else {
      $r_240 = $inc77;
      label = 16;
      break;
    }
   case 19:
    return;
  }
}
function _install_cluster($g, $n, $pass, $q) {
  $g = $g | 0;
  $n = $n | 0;
  $pass = $pass | 0;
  $q = $q | 0;
  var $clust1 = 0, $0 = 0, $installed = 0, $1 = 0, $conv = 0, $add = 0, $cmp = 0, $minrank = 0, $2 = 0, $maxrank = 0, $3 = 0, $cmp819 = 0, $conv5 = 0, $rankleader = 0, $4 = 0, $r_020 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $7 = 0, $inc = 0, $8 = 0, $conv7 = 0, $cmp8 = 0, $9 = 0, $10 = 0, $cmp1816 = 0, $conv13 = 0, $rankleader22 = 0, $11 = 0, $r_117 = 0, $12 = 0, $arrayidx23 = 0, $13 = 0, $14 = 0, $inc25 = 0, $15 = 0, $conv17 = 0, $cmp18 = 0, $conv28 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $clust1 = $n + 216 | 0;
    $0 = HEAP32[$clust1 >> 2] | 0;
    $installed = $0 + 285 | 0;
    $1 = HEAP8[$installed] | 0;
    $conv = $1 << 24 >> 24;
    $add = $pass + 1 | 0;
    $cmp = ($conv | 0) == ($add | 0);
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $minrank = $0 + 248 | 0;
    $2 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $0 + 250 | 0;
    $3 = HEAP16[$maxrank >> 1] | 0;
    $cmp819 = $2 << 16 >> 16 > $3 << 16 >> 16;
    if ($cmp819) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv5 = $2 << 16 >> 16;
    $rankleader = $0 + 280 | 0;
    $4 = $g;
    $r_020 = $conv5;
    label = 5;
    break;
   case 5:
    $5 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $5 + ($r_020 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    $7 = $6;
    _install_in_rank($4, $7);
    $inc = $r_020 + 1 | 0;
    $8 = HEAP16[$maxrank >> 1] | 0;
    $conv7 = $8 << 16 >> 16;
    $cmp8 = ($inc | 0) > ($conv7 | 0);
    if ($cmp8) {
      label = 6;
      break;
    } else {
      $r_020 = $inc;
      label = 5;
      break;
    }
   case 6:
    $9 = HEAP16[$minrank >> 1] | 0;
    $10 = HEAP16[$maxrank >> 1] | 0;
    $cmp1816 = $9 << 16 >> 16 > $10 << 16 >> 16;
    if ($cmp1816) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $conv13 = $9 << 16 >> 16;
    $rankleader22 = $0 + 280 | 0;
    $11 = $q;
    $r_117 = $conv13;
    label = 8;
    break;
   case 8:
    $12 = HEAP32[$rankleader22 >> 2] | 0;
    $arrayidx23 = $12 + ($r_117 << 2) | 0;
    $13 = HEAP32[$arrayidx23 >> 2] | 0;
    $14 = $13;
    _enqueue_neighbors($11, $14, $pass);
    $inc25 = $r_117 + 1 | 0;
    $15 = HEAP16[$maxrank >> 1] | 0;
    $conv17 = $15 << 16 >> 16;
    $cmp18 = ($inc25 | 0) > ($conv17 | 0);
    if ($cmp18) {
      label = 9;
      break;
    } else {
      $r_117 = $inc25;
      label = 8;
      break;
    }
   case 9:
    $conv28 = $add & 255;
    HEAP8[$installed] = $conv28;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _mark_lowclusters($root) {
  $root = $root | 0;
  var $0 = 0, $call = 0, $tobool16 = 0, $n_0_in17 = 0, $clust = 0, $call1 = 0, $tobool314 = 0, $orig_0_in15 = 0, $to_virt = 0, $1 = 0, $2 = 0, $tobool6 = 0, $e_013 = 0, $head = 0, $3 = 0, $node_type = 0, $4 = 0, $cmp = 0, $clust11 = 0, $5 = 0, $list = 0, $6 = 0, $7 = 0, $tobool7 = 0, $call14 = 0, $tobool3 = 0, $call16 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $root;
    $call = _agfstnode($0) | 0;
    $tobool16 = ($call | 0) == 0;
    if ($tobool16) {
      label = 9;
      break;
    } else {
      $n_0_in17 = $call;
      label = 3;
      break;
    }
   case 3:
    $clust = $n_0_in17 + 216 | 0;
    HEAP32[$clust >> 2] = 0;
    $call1 = _agfstout($0, $n_0_in17) | 0;
    $tobool314 = ($call1 | 0) == 0;
    if ($tobool314) {
      label = 8;
      break;
    } else {
      $orig_0_in15 = $call1;
      label = 4;
      break;
    }
   case 4:
    $to_virt = $orig_0_in15 + 188 | 0;
    $1 = $to_virt;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool6 = ($2 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      $e_013 = $2;
      label = 5;
      break;
    }
   case 5:
    $head = $e_013 + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $node_type = $3 + 162 | 0;
    $4 = HEAP8[$node_type] | 0;
    $cmp = $4 << 24 >> 24 == 1;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $clust11 = $3 + 216 | 0;
    HEAP32[$clust11 >> 2] = 0;
    $5 = HEAP32[$head >> 2] | 0;
    $list = $5 + 184 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $tobool7 = ($7 | 0) == 0;
    if ($tobool7) {
      label = 7;
      break;
    } else {
      $e_013 = $7;
      label = 5;
      break;
    }
   case 7:
    $call14 = _agnxtout($0, $orig_0_in15) | 0;
    $tobool3 = ($call14 | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      $orig_0_in15 = $call14;
      label = 4;
      break;
    }
   case 8:
    $call16 = _agnxtnode($0, $n_0_in17) | 0;
    $tobool = ($call16 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $n_0_in17 = $call16;
      label = 3;
      break;
    }
   case 9:
    _mark_lowcluster_basic($root);
    return;
  }
}
function _mark_lowcluster_basic($g) {
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp25 = 0, $clust2 = 0, $c_026 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, $4 = 0, $call = 0, $tobool23 = 0, $n_0_in24 = 0, $clust6 = 0, $5 = 0, $cmp7 = 0, $call10 = 0, $tobool1221 = 0, $orig_0_in22 = 0, $to_virt = 0, $6 = 0, $7 = 0, $tobool15 = 0, $e_020 = 0, $head = 0, $8 = 0, $node_type = 0, $9 = 0, $cmp19 = 0, $clust22 = 0, $10 = 0, $cmp23 = 0, $11 = 0, $list = 0, $12 = 0, $13 = 0, $tobool17 = 0, $call34 = 0, $tobool12 = 0, $call37 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp25 = ($0 | 0) < 1;
    if ($cmp25) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust2 = $g + 216 | 0;
    $c_026 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust2 >> 2] | 0;
    $arrayidx = $1 + ($c_026 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _mark_lowcluster_basic($2);
    $inc = $c_026 + 1 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_026 = $inc;
      label = 4;
      break;
    }
   case 5:
    $4 = $g;
    $call = _agfstnode($4) | 0;
    $tobool23 = ($call | 0) == 0;
    if ($tobool23) {
      label = 16;
      break;
    } else {
      $n_0_in24 = $call;
      label = 6;
      break;
    }
   case 6:
    $clust6 = $n_0_in24 + 216 | 0;
    $5 = HEAP32[$clust6 >> 2] | 0;
    $cmp7 = ($5 | 0) == 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$clust6 >> 2] = $4;
    label = 8;
    break;
   case 8:
    $call10 = _agfstout($4, $n_0_in24) | 0;
    $tobool1221 = ($call10 | 0) == 0;
    if ($tobool1221) {
      label = 15;
      break;
    } else {
      $orig_0_in22 = $call10;
      label = 9;
      break;
    }
   case 9:
    $to_virt = $orig_0_in22 + 188 | 0;
    $6 = $to_virt;
    $7 = HEAP32[$6 >> 2] | 0;
    $tobool15 = ($7 | 0) == 0;
    if ($tobool15) {
      label = 14;
      break;
    } else {
      $e_020 = $7;
      label = 10;
      break;
    }
   case 10:
    $head = $e_020 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $node_type = $8 + 162 | 0;
    $9 = HEAP8[$node_type] | 0;
    $cmp19 = $9 << 24 >> 24 == 1;
    if ($cmp19) {
      label = 11;
      break;
    } else {
      label = 14;
      break;
    }
   case 11:
    $clust22 = $8 + 216 | 0;
    $10 = HEAP32[$clust22 >> 2] | 0;
    $cmp23 = ($10 | 0) == 0;
    if ($cmp23) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAP32[$clust22 >> 2] = $g;
    label = 13;
    break;
   case 13:
    $11 = HEAP32[$head >> 2] | 0;
    $list = $11 + 184 | 0;
    $12 = HEAP32[$list >> 2] | 0;
    $13 = HEAP32[$12 >> 2] | 0;
    $tobool17 = ($13 | 0) == 0;
    if ($tobool17) {
      label = 14;
      break;
    } else {
      $e_020 = $13;
      label = 10;
      break;
    }
   case 14:
    $call34 = _agnxtout($4, $orig_0_in22) | 0;
    $tobool12 = ($call34 | 0) == 0;
    if ($tobool12) {
      label = 15;
      break;
    } else {
      $orig_0_in22 = $call34;
      label = 9;
      break;
    }
   case 15:
    $call37 = _agnxtnode($4, $n_0_in24) | 0;
    $tobool = ($call37 | 0) == 0;
    if ($tobool) {
      label = 16;
      break;
    } else {
      $n_0_in24 = $call37;
      label = 6;
      break;
    }
   case 16:
    return;
  }
}
function _make_slots($root, $r, $pos, $d) {
  $root = $root | 0;
  $r = $r | 0;
  $pos = $pos | 0;
  $d = $d | 0;
  var $rank = 0, $0 = 0, $v1 = 0, $1 = 0, $cmp = 0, $sub = 0, $i_046 = 0, $2 = 0, $n47 = 0, $3 = 0, $cmp548 = 0, $i_050 = 0, $i_0_in49 = 0, $arrayidx6 = 0, $4 = 0, $sub8 = 0, $order = 0, $arrayidx12 = 0, $i_0 = 0, $5 = 0, $n = 0, $6 = 0, $cmp5 = 0, $_lcssa = 0, $add17 = 0, $sub18 = 0, $7 = 0, $n2343 = 0, $8 = 0, $cmp2444 = 0, $i_145 = 0, $arrayidx26 = 0, $inc28 = 0, $9 = 0, $n23 = 0, $10 = 0, $cmp24 = 0, $n33 = 0, $11 = 0, $i_255 = 0, $cmp3656 = 0, $add39 = 0, $cmp5153 = 0, $i_257 = 0, $arrayidx38 = 0, $12 = 0, $sub40 = 0, $order42 = 0, $arrayidx45 = 0, $i_2 = 0, $cmp36 = 0, $13 = 0, $scevgep = 0, $scevgep59 = 0, $14 = 0, $15 = 0, $sub57 = 0, $16 = 0, $n61 = 0, $17 = 0, $add62 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $root + 224 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $v1 = $0 + ($r * 44 & -1) + 4 | 0;
    $1 = HEAP32[$v1 >> 2] | 0;
    $cmp = ($d | 0) < 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $sub = $pos - $d | 0;
    $i_046 = $sub + 1 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $n47 = $2 + ($r * 44 & -1) | 0;
    $3 = HEAP32[$n47 >> 2] | 0;
    $cmp548 = ($i_046 | 0) < ($3 | 0);
    if ($cmp548) {
      $i_0_in49 = $sub;
      $i_050 = $i_046;
      label = 4;
      break;
    } else {
      $_lcssa = $3;
      label = 5;
      break;
    }
   case 4:
    $arrayidx6 = $1 + ($i_050 << 2) | 0;
    $4 = HEAP32[$arrayidx6 >> 2] | 0;
    $sub8 = $i_0_in49 + $d | 0;
    $order = $4 + 240 | 0;
    HEAP32[$order >> 2] = $sub8;
    $arrayidx12 = $1 + ($sub8 << 2) | 0;
    HEAP32[$arrayidx12 >> 2] = $4;
    $i_0 = $i_050 + 1 | 0;
    $5 = HEAP32[$rank >> 2] | 0;
    $n = $5 + ($r * 44 & -1) | 0;
    $6 = HEAP32[$n >> 2] | 0;
    $cmp5 = ($i_0 | 0) < ($6 | 0);
    if ($cmp5) {
      $i_0_in49 = $i_050;
      $i_050 = $i_0;
      label = 4;
      break;
    } else {
      $_lcssa = $6;
      label = 5;
      break;
    }
   case 5:
    $add17 = $d - 1 | 0;
    $sub18 = $add17 + $_lcssa | 0;
    $7 = HEAP32[$rank >> 2] | 0;
    $n2343 = $7 + ($r * 44 & -1) | 0;
    $8 = HEAP32[$n2343 >> 2] | 0;
    $cmp2444 = ($sub18 | 0) < ($8 | 0);
    if ($cmp2444) {
      $i_145 = $sub18;
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 6:
    $arrayidx26 = $1 + ($i_145 << 2) | 0;
    HEAP32[$arrayidx26 >> 2] = 0;
    $inc28 = $i_145 + 1 | 0;
    $9 = HEAP32[$rank >> 2] | 0;
    $n23 = $9 + ($r * 44 & -1) | 0;
    $10 = HEAP32[$n23 >> 2] | 0;
    $cmp24 = ($inc28 | 0) < ($10 | 0);
    if ($cmp24) {
      $i_145 = $inc28;
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 7:
    $n33 = $0 + ($r * 44 & -1) | 0;
    $11 = HEAP32[$n33 >> 2] | 0;
    $i_255 = $11 - 1 | 0;
    $cmp3656 = ($i_255 | 0) > ($pos | 0);
    if ($cmp3656) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $add39 = $d - 1 | 0;
    $i_257 = $i_255;
    label = 10;
    break;
   case 9:
    $cmp5153 = ($d | 0) > 1;
    if ($cmp5153) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 10:
    $arrayidx38 = $1 + ($i_257 << 2) | 0;
    $12 = HEAP32[$arrayidx38 >> 2] | 0;
    $sub40 = $add39 + $i_257 | 0;
    $order42 = $12 + 240 | 0;
    HEAP32[$order42 >> 2] = $sub40;
    $arrayidx45 = $1 + ($sub40 << 2) | 0;
    HEAP32[$arrayidx45 >> 2] = $12;
    $i_2 = $i_257 - 1 | 0;
    $cmp36 = ($i_2 | 0) > ($pos | 0);
    if ($cmp36) {
      $i_257 = $i_2;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 11:
    $13 = $pos + 1 | 0;
    $scevgep = $1 + ($13 << 2) | 0;
    $scevgep59 = $scevgep;
    $14 = $d << 2;
    $15 = $14 - 4 | 0;
    _memset($scevgep59 | 0, 0, $15 | 0);
    label = 12;
    break;
   case 12:
    $sub57 = $d - 1 | 0;
    $16 = HEAP32[$rank >> 2] | 0;
    $n61 = $16 + ($r * 44 & -1) | 0;
    $17 = HEAP32[$n61 >> 2] | 0;
    $add62 = $sub57 + $17 | 0;
    HEAP32[$n61 >> 2] = $add62;
    return;
  }
}
function _interclexp($subg) {
  $subg = $subg | 0;
  var $root = 0, $0 = 0, $1 = 0, $call = 0, $tobool45 = 0, $2 = 0, $3 = 0, $4 = 0, $n_0_in46 = 0, $5 = 0, $6 = 0, $call2 = 0, $tobool441 = 0, $e_044_in = 0, $prev_043 = 0, $e_044 = 0, $7 = 0, $call6 = 0, $tobool7 = 0, $8 = 0, $9 = 0, $call8 = 0, $tobool9 = 0, $tail = 0, $10 = 0, $11 = 0, $rank = 0, $12 = 0, $13 = 0, $head = 0, $14 = 0, $15 = 0, $rank12 = 0, $16 = 0, $17 = 0, $cmp = 0, $u14 = 0, $to_virt = 0, $18 = 0, $prev_0_ = 0, $to_virt19 = 0, $19 = 0, $cmp20 = 0, $20 = 0, $21 = 0, $22 = 0, $call36 = 0, $cmp37 = 0, $23 = 0, $cmp40 = 0, $u42 = 0, $to_virt43 = 0, $24 = 0, $25 = 0, $tobool44 = 0, $to_virt51 = 0, $26 = 0, $27 = 0, $cmp52 = 0, $cmp59 = 0, $prev_1 = 0, $28 = 0, $29 = 0, $call68 = 0, $tobool4 = 0, $call70 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $subg + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $1 = $subg;
    $call = _agfstnode($1) | 0;
    $tobool45 = ($call | 0) == 0;
    if ($tobool45) {
      label = 22;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $subg;
    $3 = $0;
    $4 = $subg;
    $n_0_in46 = $call;
    label = 4;
    break;
   case 4:
    $5 = HEAP32[$root >> 2] | 0;
    $6 = $5;
    $call2 = _agfstedge($6, $n_0_in46) | 0;
    $tobool441 = ($call2 | 0) == 0;
    if ($tobool441) {
      label = 21;
      break;
    } else {
      $prev_043 = 0;
      $e_044_in = $call2;
      label = 5;
      break;
    }
   case 5:
    $e_044 = $e_044_in;
    $7 = $e_044_in | 0;
    $call6 = _agcontains($2, $7) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      $prev_1 = $prev_043;
      label = 20;
      break;
    }
   case 6:
    $8 = $prev_043;
    $9 = $e_044_in;
    $call8 = _mergeable($8, $9) | 0;
    $tobool9 = ($call8 | 0) == 0;
    $tail = $e_044_in + 16 | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $11 = $10;
    $rank = $10 + 236 | 0;
    $12 = $rank;
    $13 = HEAP32[$12 >> 2] | 0;
    $head = $e_044_in + 12 | 0;
    $14 = HEAP32[$head >> 2] | 0;
    $15 = $14;
    $rank12 = $14 + 236 | 0;
    $16 = $rank12;
    $17 = HEAP32[$16 >> 2] | 0;
    $cmp = ($13 | 0) == ($17 | 0);
    if ($tobool9) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $u14 = $e_044_in + 24 | 0;
    $to_virt = $u14 + 164 | 0;
    $18 = $to_virt;
    $prev_0_ = $cmp ? $prev_043 : 0;
    HEAP32[$18 >> 2] = $prev_0_;
    $to_virt19 = $prev_043 + 188 | 0;
    $19 = HEAP32[$to_virt19 >> 2] | 0;
    $cmp20 = ($19 | 0) == 0;
    if ($cmp20) {
      $prev_1 = $prev_043;
      label = 20;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $20 = $19;
    _merge_chain($4, $9, $20, 0);
    _safe_other_edge($9);
    $prev_1 = $prev_043;
    label = 20;
    break;
   case 9:
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 15;
      break;
    }
   case 10:
    $21 = $10;
    $22 = $14;
    $call36 = _find_flat_edge($21, $22) | 0;
    $cmp37 = ($call36 | 0) == 0;
    if ($cmp37) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _flat_edge($3, $9);
    $prev_1 = $e_044;
    label = 20;
    break;
   case 12:
    $23 = $call36;
    $cmp40 = ($e_044_in | 0) == ($23 | 0);
    if ($cmp40) {
      $prev_1 = $prev_043;
      label = 20;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _safe_other_edge($9);
    $u42 = $e_044_in + 24 | 0;
    $to_virt43 = $u42 + 164 | 0;
    $24 = $to_virt43;
    $25 = HEAP32[$24 >> 2] | 0;
    $tobool44 = ($25 | 0) == 0;
    if ($tobool44) {
      label = 14;
      break;
    } else {
      $prev_1 = $prev_043;
      label = 20;
      break;
    }
   case 14:
    _merge_oneway($9, $call36);
    $prev_1 = $prev_043;
    label = 20;
    break;
   case 15:
    $to_virt51 = $e_044_in + 188 | 0;
    $26 = $to_virt51;
    $27 = HEAP32[$26 >> 2] | 0;
    $cmp52 = ($27 | 0) == 0;
    if ($cmp52) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    ___assert_func(111976, 234, 164168, 145696);
   case 17:
    $cmp59 = ($17 | 0) > ($13 | 0);
    if ($cmp59) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    _make_interclust_chain($11, $15, $e_044);
    $prev_1 = $e_044;
    label = 20;
    break;
   case 19:
    _make_interclust_chain($15, $11, $e_044);
    $prev_1 = $e_044;
    label = 20;
    break;
   case 20:
    $28 = HEAP32[$root >> 2] | 0;
    $29 = $28;
    $call68 = _agnxtedge($29, $e_044_in, $n_0_in46) | 0;
    $tobool4 = ($call68 | 0) == 0;
    if ($tobool4) {
      label = 21;
      break;
    } else {
      $prev_043 = $prev_1;
      $e_044_in = $call68;
      label = 5;
      break;
    }
   case 21:
    $call70 = _agnxtnode($1, $n_0_in46) | 0;
    $tobool = ($call70 | 0) == 0;
    if ($tobool) {
      label = 22;
      break;
    } else {
      $n_0_in46 = $call70;
      label = 4;
      break;
    }
   case 22:
    return;
  }
}
function _map_interclust_node($n) {
  $n = $n | 0;
  var $clust = 0, $0 = 0, $cmp = 0, $expanded = 0, $1 = 0, $tobool = 0, $rank = 0, $2 = 0, $rankleader = 0, $3 = 0, $arrayidx = 0, $4 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $clust = $n + 216 | 0;
    $0 = HEAP32[$clust >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      $rv_0 = $n;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $expanded = $0 + 284 | 0;
    $1 = HEAP8[$expanded] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $rv_0 = $n;
      label = 5;
      break;
    }
   case 4:
    $rank = $n + 236 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $rankleader = $0 + 280 | 0;
    $3 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $3 + ($2 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $rv_0 = $4;
    label = 5;
    break;
   case 5:
    return $rv_0 | 0;
  }
  return 0;
}
function _inBoxf($p, $bb) {
  $p = $p | 0;
  $bb = $bb | 0;
  var $x = 0, $0 = 0.0, $x1 = 0, $1 = 0.0, $cmp = 0, $x3 = 0, $2 = 0.0, $cmp4 = 0, $y = 0, $3 = 0.0, $y6 = 0, $4 = 0.0, $cmp7 = 0, $y11 = 0, $5 = 0.0, $cmp12 = 0, $phitmp = 0, $6 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $bb | 0;
    $0 = +HEAPF64[$x >> 3];
    $x1 = $p | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $cmp = $0 > $1;
    if ($cmp) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x3 = $bb + 16 | 0;
    $2 = +HEAPF64[$x3 >> 3];
    $cmp4 = $1 > $2;
    if ($cmp4) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $bb + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $y6 = $p + 8 | 0;
    $4 = +HEAPF64[$y6 >> 3];
    $cmp7 = $3 > $4;
    if ($cmp7) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y11 = $bb + 24 | 0;
    $5 = +HEAPF64[$y11 >> 3];
    $cmp12 = $4 <= $5;
    $phitmp = $cmp12 & 1;
    $6 = $phitmp;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $6 | 0;
  }
  return 0;
}
function _clone_vn($g, $vn) {
  $g = $g | 0;
  $vn = $vn | 0;
  var $rank = 0, $0 = 0, $order = 0, $call = 0, $3 = 0, $add = 0;
  $rank = $vn + 236 | 0;
  $0 = HEAP32[$rank >> 2] | 0;
  $order = $vn + 240 | 0;
  _make_slots($g, $0, HEAP32[$order >> 2] | 0, 2);
  $call = _virtual_node($g) | 0;
  $3 = $call;
  HEAPF64[$call + 104 >> 3] = +HEAPF64[$vn + 104 >> 3];
  HEAPF64[$call + 112 >> 3] = +HEAPF64[$vn + 112 >> 3];
  HEAP32[$call + 236 >> 2] = HEAP32[$rank >> 2] | 0;
  $add = (HEAP32[$order >> 2] | 0) + 1 | 0;
  HEAP32[$call + 240 >> 2] = $add;
  HEAP32[(HEAP32[(HEAP32[$g + 224 >> 2] | 0) + ($0 * 44 & -1) + 4 >> 2] | 0) + ($add << 2) >> 2] = $3;
  return $3 | 0;
}
function _dot_compoundEdges($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool10 = 0, $n_0_in11 = 0, $call1 = 0, $tobool38 = 0, $e_0_in9 = 0, $e_0 = 0, $call5 = 0, $tobool3 = 0, $call7 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool10 = ($call | 0) == 0;
    if ($tobool10) {
      label = 6;
      break;
    } else {
      $n_0_in11 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agfstout($0, $n_0_in11) | 0;
    $tobool38 = ($call1 | 0) == 0;
    if ($tobool38) {
      label = 5;
      break;
    } else {
      $e_0_in9 = $call1;
      label = 4;
      break;
    }
   case 4:
    $e_0 = $e_0_in9;
    _makeCompoundEdge($g, $e_0);
    $call5 = _agnxtout($0, $e_0_in9) | 0;
    $tobool3 = ($call5 | 0) == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      $e_0_in9 = $call5;
      label = 4;
      break;
    }
   case 5:
    $call7 = _agnxtnode($0, $n_0_in11) | 0;
    $tobool = ($call7 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_0_in11 = $call7;
      label = 3;
      break;
    }
   case 6:
    return;
  }
}
function _getCluster($g, $cluster_name) {
  $g = $g | 0;
  $cluster_name = $cluster_name | 0;
  var $tobool = 0, $0 = 0, $cmp = 0, $1 = 0, $call = 0, $2 = 0, $cmp2 = 0, $call5 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($cluster_name | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$cluster_name] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = $g;
    $call = _agfindsubg($1, $cluster_name) | 0;
    $2 = $call;
    $cmp2 = ($call | 0) == 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      $retval_0 = $2;
      label = 6;
      break;
    }
   case 5:
    $call5 = _agerr(0, 152184, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $cluster_name, tempInt) | 0) | 0;
    $retval_0 = $2;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _map_path($from, $to, $orig, $ve, $type) {
  $from = $from | 0;
  $to = $to | 0;
  $orig = $orig | 0;
  $ve = $ve | 0;
  $type = $type | 0;
  var $rank = 0, $0 = 0, $rank3 = 0, $1 = 0, $cmp = 0, $tail = 0, $2 = 0, $cmp4 = 0, $head = 0, $3 = 0, $cmp5 = 0, $count = 0, $4 = 0, $cmp7 = 0, $to_virt = 0, $5 = 0, $6 = 0, $sub = 0, $cmp15 = 0, $7 = 0, $8 = 0, $call = 0, $tobool = 0, $9 = 0, $call19 = 0, $tobool20 = 0, $node_type = 0, $10 = 0, $cmp24 = 0, $node_type28 = 0, $11 = 0, $cmp30 = 0, $12 = 0, $13 = 0, $cmp4072 = 0, $graph = 0, $14 = 0, $conv52 = 0, $15 = 0, $u_075 = 0, $r_074 = 0, $ve_addr_073 = 0, $sub44 = 0, $cmp45 = 0, $16 = 0, $head48 = 0, $17 = 0, $call49 = 0, $v_0 = 0, $18 = 0, $19 = 0, $call51 = 0, $20 = 0, $count55 = 0, $21 = 0, $dec = 0, $head56 = 0, $22 = 0, $list = 0, $23 = 0, $24 = 0, $inc = 0, $25 = 0, $cmp40 = 0, $26 = 0, $27 = 0, $sub63 = 0, $cmp64 = 0, $28 = 0, $29 = 0, $call67 = 0, $30 = 0, $tobool68 = 0, $31 = 0, $call70 = 0, $tobool71 = 0, $to_virt74 = 0, $conv75 = 0, $32 = 0, $33 = 0, $34 = 0, $inc80 = 0, $node_type82 = 0, $35 = 0, $cmp84 = 0, $node_type88 = 0, $36 = 0, $cmp90 = 0, $to_virt96 = 0, $37 = 0, $call97 = 0, $38 = 0, $conv98 = 0, $39 = 0, $ve_addr_1 = 0, $40 = 0, $41 = 0, $sub107 = 0, $cmp108 = 0, $tail111 = 0, $42 = 0, $cmp112 = 0, $to_virt116 = 0, $head117 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $call118 = 0, $47 = 0, $48 = 0, $e_0_ph = 0, $head12376 = 0, $49 = 0, $rank12577 = 0, $50 = 0, $51 = 0, $cmp12878 = 0, $52 = 0, $53 = 0, $list133 = 0, $54 = 0, $55 = 0, $head123 = 0, $56 = 0, $rank125 = 0, $57 = 0, $cmp128 = 0, $_lcssa = 0, $e_0_lcssa = 0, $cmp136 = 0, $tail139 = 0, $58 = 0, $59 = 0, $60 = 0, $61 = 0, $call140 = 0, $conv141 = 0, $62 = 0, $63 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $from + 236 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $rank3 = $to + 236 | 0;
    $1 = HEAP32[$rank3 >> 2] | 0;
    $cmp = ($0 | 0) < ($1 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(111976, 109, 164048, 114944);
   case 4:
    $tail = $ve + 16 | 0;
    $2 = HEAP32[$tail >> 2] | 0;
    $cmp4 = ($2 | 0) == ($from | 0);
    if ($cmp4) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $head = $ve + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $cmp5 = ($3 | 0) == ($to | 0);
    if ($cmp5) {
      label = 33;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $count = $ve + 184 | 0;
    $4 = HEAP16[$count >> 1] | 0;
    $cmp7 = $4 << 16 >> 16 > 1;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 18;
      break;
    }
   case 7:
    $to_virt = $orig + 188 | 0;
    HEAP32[$to_virt >> 2] = 0;
    $5 = HEAP32[$rank3 >> 2] | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $sub = $5 - $6 | 0;
    $cmp15 = ($sub | 0) == 1;
    if ($cmp15) {
      label = 8;
      break;
    } else {
      label = 13;
      break;
    }
   case 8:
    $7 = $from;
    $8 = $to;
    $call = _find_fast_edge($7, $8) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $9 = $orig;
    $call19 = _ports_eq($9, $call) | 0;
    $tobool20 = ($call19 | 0) == 0;
    if ($tobool20) {
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _merge_oneway($9, $call);
    $node_type = $from + 162 | 0;
    $10 = HEAP8[$node_type] | 0;
    $cmp24 = $10 << 24 >> 24 == 0;
    if ($cmp24) {
      label = 11;
      break;
    } else {
      label = 33;
      break;
    }
   case 11:
    $node_type28 = $to + 162 | 0;
    $11 = HEAP8[$node_type28] | 0;
    $cmp30 = $11 << 24 >> 24 == 0;
    if ($cmp30) {
      label = 12;
      break;
    } else {
      label = 33;
      break;
    }
   case 12:
    _other_edge($9);
    label = 33;
    break;
   case 13:
    $12 = HEAP32[$rank >> 2] | 0;
    $13 = HEAP32[$rank3 >> 2] | 0;
    $cmp4072 = ($12 | 0) < ($13 | 0);
    if ($cmp4072) {
      label = 14;
      break;
    } else {
      label = 33;
      break;
    }
   case 14:
    $graph = $from + 20 | 0;
    $14 = $orig;
    $conv52 = $type & 255;
    $ve_addr_073 = $ve;
    $r_074 = $12;
    $u_075 = $from;
    $15 = $13;
    label = 15;
    break;
   case 15:
    $sub44 = $15 - 1 | 0;
    $cmp45 = ($r_074 | 0) < ($sub44 | 0);
    if ($cmp45) {
      label = 16;
      break;
    } else {
      $v_0 = $to;
      label = 17;
      break;
    }
   case 16:
    $16 = HEAP32[$graph >> 2] | 0;
    $head48 = $ve_addr_073 + 12 | 0;
    $17 = HEAP32[$head48 >> 2] | 0;
    $call49 = _clone_vn($16, $17) | 0;
    $v_0 = $call49;
    label = 17;
    break;
   case 17:
    $18 = $u_075;
    $19 = $v_0;
    $call51 = _virtual_edge($18, $19, $14) | 0;
    $20 = $call51 + 128 | 0;
    HEAP8[$20] = $conv52;
    $count55 = $ve_addr_073 + 184 | 0;
    $21 = HEAP16[$count55 >> 1] | 0;
    $dec = $21 - 1 & 65535;
    HEAP16[$count55 >> 1] = $dec;
    $head56 = $ve_addr_073 + 12 | 0;
    $22 = HEAP32[$head56 >> 2] | 0;
    $list = $22 + 184 | 0;
    $23 = HEAP32[$list >> 2] | 0;
    $24 = HEAP32[$23 >> 2] | 0;
    $inc = $r_074 + 1 | 0;
    $25 = HEAP32[$rank3 >> 2] | 0;
    $cmp40 = ($inc | 0) < ($25 | 0);
    if ($cmp40) {
      $ve_addr_073 = $24;
      $r_074 = $inc;
      $u_075 = $v_0;
      $15 = $25;
      label = 15;
      break;
    } else {
      label = 33;
      break;
    }
   case 18:
    $26 = HEAP32[$rank3 >> 2] | 0;
    $27 = HEAP32[$rank >> 2] | 0;
    $sub63 = $26 - $27 | 0;
    $cmp64 = ($sub63 | 0) == 1;
    if ($cmp64) {
      label = 19;
      break;
    } else {
      $ve_addr_1 = $ve;
      label = 25;
      break;
    }
   case 19:
    $28 = $from;
    $29 = $to;
    $call67 = _find_fast_edge($28, $29) | 0;
    $30 = $call67;
    $tobool68 = ($call67 | 0) == 0;
    if ($tobool68) {
      label = 24;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $31 = $orig;
    $call70 = _ports_eq($31, $call67) | 0;
    $tobool71 = ($call70 | 0) == 0;
    if ($tobool71) {
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $to_virt74 = $orig + 188 | 0;
    HEAP32[$to_virt74 >> 2] = $30;
    $conv75 = $type & 255;
    $32 = $call67 + 128 | 0;
    HEAP8[$32] = $conv75;
    $33 = $call67 + 184 | 0;
    $34 = HEAP16[$33 >> 1] | 0;
    $inc80 = $34 + 1 & 65535;
    HEAP16[$33 >> 1] = $inc80;
    $node_type82 = $from + 162 | 0;
    $35 = HEAP8[$node_type82] | 0;
    $cmp84 = $35 << 24 >> 24 == 0;
    if ($cmp84) {
      label = 22;
      break;
    } else {
      $ve_addr_1 = $30;
      label = 25;
      break;
    }
   case 22:
    $node_type88 = $to + 162 | 0;
    $36 = HEAP8[$node_type88] | 0;
    $cmp90 = $36 << 24 >> 24 == 0;
    if ($cmp90) {
      label = 23;
      break;
    } else {
      $ve_addr_1 = $30;
      label = 25;
      break;
    }
   case 23:
    _other_edge($31);
    $ve_addr_1 = $30;
    label = 25;
    break;
   case 24:
    $to_virt96 = $orig + 188 | 0;
    HEAP32[$to_virt96 >> 2] = 0;
    $37 = $orig;
    $call97 = _virtual_edge($28, $29, $37) | 0;
    $38 = $call97;
    $conv98 = $type & 255;
    $39 = $call97 + 128 | 0;
    HEAP8[$39] = $conv98;
    $ve_addr_1 = $38;
    label = 25;
    break;
   case 25:
    $40 = HEAP32[$rank3 >> 2] | 0;
    $41 = HEAP32[$rank >> 2] | 0;
    $sub107 = $40 - $41 | 0;
    $cmp108 = ($sub107 | 0) > 1;
    if ($cmp108) {
      label = 26;
      break;
    } else {
      label = 33;
      break;
    }
   case 26:
    $tail111 = $ve_addr_1 + 16 | 0;
    $42 = HEAP32[$tail111 >> 2] | 0;
    $cmp112 = ($42 | 0) == ($from | 0);
    if ($cmp112) {
      $e_0_ph = $ve_addr_1;
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $to_virt116 = $orig + 188 | 0;
    HEAP32[$to_virt116 >> 2] = 0;
    $head117 = $ve_addr_1 + 12 | 0;
    $43 = HEAP32[$head117 >> 2] | 0;
    $44 = $from;
    $45 = $43;
    $46 = $orig;
    $call118 = _virtual_edge($44, $45, $46) | 0;
    $47 = $call118;
    HEAP32[$to_virt116 >> 2] = $47;
    $48 = $ve_addr_1;
    _delete_fast_edge($48);
    $e_0_ph = $47;
    label = 28;
    break;
   case 28:
    $head12376 = $e_0_ph + 12 | 0;
    $49 = HEAP32[$head12376 >> 2] | 0;
    $rank12577 = $49 + 236 | 0;
    $50 = HEAP32[$rank12577 >> 2] | 0;
    $51 = HEAP32[$rank3 >> 2] | 0;
    $cmp12878 = ($50 | 0) == ($51 | 0);
    if ($cmp12878) {
      $e_0_lcssa = $e_0_ph;
      $_lcssa = $49;
      label = 31;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $52 = HEAP32[$rank3 >> 2] | 0;
    $53 = $49;
    label = 30;
    break;
   case 30:
    $list133 = $53 + 184 | 0;
    $54 = HEAP32[$list133 >> 2] | 0;
    $55 = HEAP32[$54 >> 2] | 0;
    $head123 = $55 + 12 | 0;
    $56 = HEAP32[$head123 >> 2] | 0;
    $rank125 = $56 + 236 | 0;
    $57 = HEAP32[$rank125 >> 2] | 0;
    $cmp128 = ($57 | 0) == ($52 | 0);
    if ($cmp128) {
      $e_0_lcssa = $55;
      $_lcssa = $56;
      label = 31;
      break;
    } else {
      $53 = $56;
      label = 30;
      break;
    }
   case 31:
    $cmp136 = ($_lcssa | 0) == ($to | 0);
    if ($cmp136) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $tail139 = $e_0_lcssa + 16 | 0;
    $58 = HEAP32[$tail139 >> 2] | 0;
    $59 = $58;
    $60 = $to;
    $61 = $orig;
    $call140 = _virtual_edge($59, $60, $61) | 0;
    $conv141 = $type & 255;
    $62 = $call140 + 128 | 0;
    HEAP8[$62] = $conv141;
    $63 = $e_0_lcssa;
    _delete_fast_edge($63);
    label = 33;
    break;
   case 33:
    return;
  }
}
function _makeCompoundEdge($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $pts = 0, $p = 0, $tmp64 = 0, $tmp70 = 0, $tmp75 = 0, $tmp104 = 0, $tmp177 = 0, $tmp185 = 0, $tmp192 = 0, $tmp243 = 0, $0 = 0, $call = 0, $call1 = 0, $call2 = 0, $call3 = 0, $tobool = 0, $tobool_not = 0, $tobool4 = 0, $or_cond = 0, $spl = 0, $1 = 0, $tobool5 = 0, $size10 = 0, $2 = 0, $cmp = 0, $tail12 = 0, $3 = 0, $name = 0, $4 = 0, $head13 = 0, $5 = 0, $name14 = 0, $6 = 0, $call15 = 0, $list = 0, $7 = 0, $size19 = 0, $8 = 0, $head20 = 0, $9 = 0, $tail21 = 0, $10 = 0, $call22 = 0, $11 = 0, $eflag = 0, $12 = 0, $eflag23 = 0, $13 = 0, $sflag = 0, $14 = 0, $sflag24 = 0, $15 = 0, $bb28 = 0, $coord = 0, $call30 = 0, $tobool31 = 0, $16 = 0, $name34 = 0, $17 = 0, $18 = 0, $name36 = 0, $19 = 0, $call37 = 0, $call38 = 0, $list39 = 0, $20 = 0, $call40 = 0, $tobool41 = 0, $sub = 0, $coord44 = 0, $call45 = 0, $tobool46 = 0, $21 = 0, $name49 = 0, $22 = 0, $23 = 0, $name51 = 0, $24 = 0, $call52 = 0, $call53 = 0, $25 = 0, $tobool56 = 0, $sp = 0, $26 = 0, $27 = 0, $arrayidx60 = 0, $28 = 0, $29 = 0, $arrayidx62 = 0, $30 = 0, $31 = 0, $32 = 0, $arrayidx68 = 0, $33 = 0, $34 = 0, $35 = 0, $arrayidx72 = 0, $arrayidx74 = 0, $36 = 0, $37 = 0, $38 = 0, $tobool77 = 0, $39 = 0, $40 = 0, $call81 = 0, $phitmp = 0, $endi_1 = 0, $cmp85 = 0, $41 = 0, $arrayidx87 = 0, $call88 = 0, $tobool89 = 0, $add92 = 0, $cmp94 = 0, $42 = 0, $tobool97 = 0, $ep = 0, $ep101 = 0, $43 = 0, $arrayidx103 = 0, $44 = 0, $45 = 0, $46 = 0, $call111 = 0, $endi_2 = 0, $add113 = 0, $sub120 = 0, $47 = 0, $tobool122 = 0, $ep124 = 0, $ep125 = 0, $48 = 0, $endi_5 = 0, $bb131 = 0, $coord133 = 0, $call134 = 0, $tobool135 = 0, $49 = 0, $name138 = 0, $50 = 0, $51 = 0, $name140 = 0, $52 = 0, $call141 = 0, $call142 = 0, $list144 = 0, $53 = 0, $arrayidx145 = 0, $call146 = 0, $tobool147 = 0, $arraydecay = 0, $coord150 = 0, $call151 = 0, $tobool152 = 0, $54 = 0, $name155 = 0, $55 = 0, $56 = 0, $name157 = 0, $57 = 0, $call158 = 0, $call159 = 0, $58 = 0, $tobool162 = 0, $ep168 = 0, $59 = 0, $60 = 0, $sub170 = 0, $61 = 0, $arrayidx172 = 0, $62 = 0, $add173 = 0, $63 = 0, $arrayidx175 = 0, $64 = 0, $65 = 0, $66 = 0, $arrayidx180 = 0, $arrayidx183 = 0, $67 = 0, $68 = 0, $add186 = 0, $69 = 0, $arrayidx188 = 0, $arrayidx191 = 0, $70 = 0, $71 = 0, $72 = 0, $tobool194 = 0, $73 = 0, $74 = 0, $call199 = 0, $starti_1 = 0, $cmp204 = 0, $75 = 0, $arrayidx212 = 0, $76 = 0, $77 = 0, $arrayidx209_1 = 0, $sub210_1 = 0, $78 = 0, $arrayidx212_1 = 0, $79 = 0, $80 = 0, $arrayidx209_2 = 0, $sub210_2 = 0, $81 = 0, $arrayidx212_2 = 0, $82 = 0, $83 = 0, $arrayidx209_3 = 0, $sub210_3 = 0, $84 = 0, $arrayidx212_3 = 0, $85 = 0, $86 = 0, $call215 = 0, $tobool216 = 0, $sub230 = 0, $87 = 0, $arrayidx223 = 0, $88 = 0, $89 = 0, $sub221_1 = 0, $90 = 0, $arrayidx223_1 = 0, $arrayidx224_1 = 0, $91 = 0, $92 = 0, $sub221_2 = 0, $93 = 0, $arrayidx223_2 = 0, $arrayidx224_2 = 0, $94 = 0, $95 = 0, $sub221_3 = 0, $96 = 0, $arrayidx223_3 = 0, $arrayidx224_3 = 0, $97 = 0, $98 = 0, $cmp232 = 0, $99 = 0, $tobool235 = 0, $sp239 = 0, $sp240 = 0, $100 = 0, $arrayidx242 = 0, $101 = 0, $sub245 = 0, $102 = 0, $tobool247 = 0, $103 = 0, $sub250 = 0, $104 = 0, $call252 = 0, $105 = 0, $tobool261 = 0, $sp263 = 0, $sp264 = 0, $106 = 0, $starti_3157 = 0, $sub267 = 0, $add268 = 0, $size269 = 0, $107 = 0, $mul = 0, $call271 = 0, $108 = 0, $list272 = 0, $109 = 0, $cmp275158 = 0, $list279 = 0, $j_0160 = 0, $i_2159 = 0, $110 = 0, $arrayidx278 = 0, $111 = 0, $arrayidx280 = 0, $112 = 0, $113 = 0, $inc282 = 0, $inc283 = 0, $114 = 0, $cmp275 = 0, $list285 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $list288 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 208 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pts = __stackBase__ | 0;
    $p = __stackBase__ + 64 | 0;
    $tmp64 = __stackBase__ + 80 | 0;
    $tmp70 = __stackBase__ + 96 | 0;
    $tmp75 = __stackBase__ + 112 | 0;
    $tmp104 = __stackBase__ + 128 | 0;
    $tmp177 = __stackBase__ + 144 | 0;
    $tmp185 = __stackBase__ + 160 | 0;
    $tmp192 = __stackBase__ + 176 | 0;
    $tmp243 = __stackBase__ + 192 | 0;
    $0 = $e | 0;
    $call = _agget($0, 151760) | 0;
    $call1 = _getCluster($g, $call) | 0;
    $call2 = _agget($0, 158144) | 0;
    $call3 = _getCluster($g, $call2) | 0;
    $tobool = ($call3 | 0) != 0;
    $tobool_not = $tobool ^ 1;
    $tobool4 = ($call1 | 0) == 0;
    $or_cond = $tobool4 & $tobool_not;
    if ($or_cond) {
      label = 54;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $spl = $e + 24 | 0;
    $1 = HEAP32[$spl >> 2] | 0;
    $tobool5 = ($1 | 0) == 0;
    if ($tobool5) {
      label = 54;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $size10 = $1 + 4 | 0;
    $2 = HEAP32[$size10 >> 2] | 0;
    $cmp = ($2 | 0) > 1;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $tail12 = $e + 16 | 0;
    $3 = HEAP32[$tail12 >> 2] | 0;
    $name = $3 + 12 | 0;
    $4 = HEAP32[$name >> 2] | 0;
    $head13 = $e + 12 | 0;
    $5 = HEAP32[$head13 >> 2] | 0;
    $name14 = $5 + 12 | 0;
    $6 = HEAP32[$name14 >> 2] | 0;
    $call15 = _agerr(0, 129520, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $4, HEAP32[tempInt + 8 >> 2] = $6, tempInt) | 0) | 0;
    label = 54;
    break;
   case 6:
    $list = $1 | 0;
    $7 = HEAP32[$list >> 2] | 0;
    $size19 = $7 + 4 | 0;
    $8 = HEAP32[$size19 >> 2] | 0;
    $head20 = $e + 12 | 0;
    $9 = HEAP32[$head20 >> 2] | 0;
    $tail21 = $e + 16 | 0;
    $10 = HEAP32[$tail21 >> 2] | 0;
    $call22 = _gmalloc(48) | 0;
    $11 = $call22;
    $eflag = $7 + 12 | 0;
    $12 = HEAP32[$eflag >> 2] | 0;
    $eflag23 = $call22 + 12 | 0;
    $13 = $eflag23;
    HEAP32[$13 >> 2] = $12;
    $sflag = $7 + 8 | 0;
    $14 = HEAP32[$sflag >> 2] | 0;
    $sflag24 = $call22 + 8 | 0;
    $15 = $sflag24;
    HEAP32[$15 >> 2] = $14;
    if ($tobool4) {
      label = 26;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $bb28 = $call1 + 56 | 0;
    $coord = $9 + 32 | 0;
    $call30 = _inBoxf($coord, $bb28) | 0;
    $tobool31 = ($call30 | 0) == 0;
    if ($tobool31) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $16 = HEAP32[$tail21 >> 2] | 0;
    $name34 = $16 + 12 | 0;
    $17 = HEAP32[$name34 >> 2] | 0;
    $18 = HEAP32[$head20 >> 2] | 0;
    $name36 = $18 + 12 | 0;
    $19 = HEAP32[$name36 >> 2] | 0;
    $call37 = _agget($0, 151760) | 0;
    $call38 = _agerr(0, 117960, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $17, HEAP32[tempInt + 8 >> 2] = $19, HEAP32[tempInt + 16 >> 2] = $call37, tempInt) | 0) | 0;
    label = 26;
    break;
   case 9:
    $list39 = $7 | 0;
    $20 = HEAP32[$list39 >> 2] | 0;
    $call40 = _inBoxf($20, $bb28) | 0;
    $tobool41 = ($call40 | 0) == 0;
    if ($tobool41) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $sub = $8 - 1 | 0;
    $endi_1 = 0;
    label = 17;
    break;
   case 11:
    $coord44 = $10 + 32 | 0;
    $call45 = _inBoxf($coord44, $bb28) | 0;
    $tobool46 = ($call45 | 0) == 0;
    if ($tobool46) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $21 = HEAP32[$tail21 >> 2] | 0;
    $name49 = $21 + 12 | 0;
    $22 = HEAP32[$name49 >> 2] | 0;
    $23 = HEAP32[$head20 >> 2] | 0;
    $name51 = $23 + 12 | 0;
    $24 = HEAP32[$name51 >> 2] | 0;
    $call52 = _agget($0, 151760) | 0;
    $call53 = _agerr(0, 112576, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $22, HEAP32[tempInt + 8 >> 2] = $24, HEAP32[tempInt + 16 >> 2] = $call52, tempInt) | 0) | 0;
    label = 26;
    break;
   case 13:
    $25 = HEAP32[$sflag >> 2] | 0;
    $tobool56 = ($25 | 0) == 0;
    if ($tobool56) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    ___assert_func(107624, 364, 164144, 103696);
   case 15:
    $sp = $7 + 16 | 0;
    _boxIntersectf($p, $20, $sp, $bb28);
    $26 = $p;
    $27 = HEAP32[$list39 >> 2] | 0;
    $arrayidx60 = $27 + 48 | 0;
    $28 = $arrayidx60;
    HEAP32[$28 >> 2] = HEAP32[$26 >> 2] | 0;
    HEAP32[$28 + 4 >> 2] = HEAP32[$26 + 4 >> 2] | 0;
    HEAP32[$28 + 8 >> 2] = HEAP32[$26 + 8 >> 2] | 0;
    HEAP32[$28 + 12 >> 2] = HEAP32[$26 + 12 >> 2] | 0;
    $29 = HEAP32[$list39 >> 2] | 0;
    $arrayidx62 = $29 + 16 | 0;
    _mid_pointf3014($tmp64, $p, $sp);
    $30 = $arrayidx62;
    $31 = $tmp64;
    HEAP32[$30 >> 2] = HEAP32[$31 >> 2] | 0;
    HEAP32[$30 + 4 >> 2] = HEAP32[$31 + 4 >> 2] | 0;
    HEAP32[$30 + 8 >> 2] = HEAP32[$31 + 8 >> 2] | 0;
    HEAP32[$30 + 12 >> 2] = HEAP32[$31 + 12 >> 2] | 0;
    $32 = HEAP32[$list39 >> 2] | 0;
    $arrayidx68 = $32 + 16 | 0;
    _mid_pointf3014($tmp70, $arrayidx68, $sp);
    $33 = $32;
    $34 = $tmp70;
    HEAP32[$33 >> 2] = HEAP32[$34 >> 2] | 0;
    HEAP32[$33 + 4 >> 2] = HEAP32[$34 + 4 >> 2] | 0;
    HEAP32[$33 + 8 >> 2] = HEAP32[$34 + 8 >> 2] | 0;
    HEAP32[$33 + 12 >> 2] = HEAP32[$34 + 12 >> 2] | 0;
    $35 = HEAP32[$list39 >> 2] | 0;
    $arrayidx72 = $35 + 32 | 0;
    $arrayidx74 = $35 + 16 | 0;
    _mid_pointf3014($tmp75, $arrayidx74, $p);
    $36 = $arrayidx72;
    $37 = $tmp75;
    HEAP32[$36 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$36 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$36 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$36 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    $38 = HEAP32[$eflag >> 2] | 0;
    $tobool77 = ($38 | 0) == 0;
    if ($tobool77) {
      $endi_5 = 3;
      label = 28;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $39 = HEAP32[$list39 >> 2] | 0;
    $40 = $e;
    $call81 = _arrowEndClip($40, $39, 0, 0, $11, $38) | 0;
    $phitmp = $call81 + 3 | 0;
    $endi_5 = $phitmp;
    label = 28;
    break;
   case 17:
    $cmp85 = ($endi_1 | 0) < ($sub | 0);
    if ($cmp85) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $41 = HEAP32[$list39 >> 2] | 0;
    $arrayidx87 = $41 + ($endi_1 << 4) | 0;
    $call88 = _splineIntersectf($arrayidx87, $bb28) | 0;
    $tobool89 = ($call88 | 0) == 0;
    $add92 = $endi_1 + 3 | 0;
    if ($tobool89) {
      $endi_1 = $add92;
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $cmp94 = ($endi_1 | 0) == ($sub | 0);
    $42 = HEAP32[$eflag >> 2] | 0;
    $tobool97 = ($42 | 0) != 0;
    if ($cmp94) {
      label = 20;
      break;
    } else {
      label = 23;
      break;
    }
   case 20:
    if ($tobool97) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    ___assert_func(107624, 382, 164144, 99520);
   case 22:
    $ep = $call22 + 32 | 0;
    $ep101 = $7 + 32 | 0;
    $43 = HEAP32[$list39 >> 2] | 0;
    $arrayidx103 = $43 + ($endi_1 << 4) | 0;
    _boxIntersectf($tmp104, $ep101, $arrayidx103, $bb28);
    $44 = $tmp104;
    HEAP32[$ep >> 2] = HEAP32[$44 >> 2] | 0;
    HEAP32[$ep + 4 >> 2] = HEAP32[$44 + 4 >> 2] | 0;
    HEAP32[$ep + 8 >> 2] = HEAP32[$44 + 8 >> 2] | 0;
    HEAP32[$ep + 12 >> 2] = HEAP32[$44 + 12 >> 2] | 0;
    $endi_5 = $endi_1;
    label = 28;
    break;
   case 23:
    if ($tobool97) {
      label = 24;
      break;
    } else {
      $endi_2 = $endi_1;
      label = 25;
      break;
    }
   case 24:
    $45 = HEAP32[$list39 >> 2] | 0;
    $46 = $e;
    $call111 = _arrowEndClip($46, $45, 0, $endi_1, $11, $42) | 0;
    $endi_2 = $call111;
    label = 25;
    break;
   case 25:
    $add113 = $endi_2 + 3 | 0;
    $endi_5 = $add113;
    label = 28;
    break;
   case 26:
    $sub120 = $8 - 1 | 0;
    $47 = HEAP32[$eflag >> 2] | 0;
    $tobool122 = ($47 | 0) == 0;
    if ($tobool122) {
      $endi_5 = $sub120;
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $ep124 = $call22 + 32 | 0;
    $ep125 = $7 + 32 | 0;
    $48 = $ep125;
    HEAP32[$ep124 >> 2] = HEAP32[$48 >> 2] | 0;
    HEAP32[$ep124 + 4 >> 2] = HEAP32[$48 + 4 >> 2] | 0;
    HEAP32[$ep124 + 8 >> 2] = HEAP32[$48 + 8 >> 2] | 0;
    HEAP32[$ep124 + 12 >> 2] = HEAP32[$48 + 12 >> 2] | 0;
    $endi_5 = $sub120;
    label = 28;
    break;
   case 28:
    if ($tobool) {
      label = 29;
      break;
    } else {
      label = 48;
      break;
    }
   case 29:
    $bb131 = $call3 + 56 | 0;
    $coord133 = $10 + 32 | 0;
    $call134 = _inBoxf($coord133, $bb131) | 0;
    $tobool135 = ($call134 | 0) == 0;
    if ($tobool135) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $49 = HEAP32[$tail21 >> 2] | 0;
    $name138 = $49 + 12 | 0;
    $50 = HEAP32[$name138 >> 2] | 0;
    $51 = HEAP32[$head20 >> 2] | 0;
    $name140 = $51 + 12 | 0;
    $52 = HEAP32[$name140 >> 2] | 0;
    $call141 = _agget($0, 158144) | 0;
    $call142 = _agerr(0, 95480, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $50, HEAP32[tempInt + 8 >> 2] = $52, HEAP32[tempInt + 16 >> 2] = $call141, tempInt) | 0) | 0;
    label = 48;
    break;
   case 31:
    $list144 = $7 | 0;
    $53 = HEAP32[$list144 >> 2] | 0;
    $arrayidx145 = $53 + ($endi_5 << 4) | 0;
    $call146 = _inBoxf($arrayidx145, $bb131) | 0;
    $tobool147 = ($call146 | 0) == 0;
    if ($tobool147) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 32:
    $arraydecay = $pts | 0;
    $starti_1 = $endi_5;
    label = 39;
    break;
   case 33:
    $coord150 = $9 + 32 | 0;
    $call151 = _inBoxf($coord150, $bb131) | 0;
    $tobool152 = ($call151 | 0) == 0;
    if ($tobool152) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $54 = HEAP32[$tail21 >> 2] | 0;
    $name155 = $54 + 12 | 0;
    $55 = HEAP32[$name155 >> 2] | 0;
    $56 = HEAP32[$head20 >> 2] | 0;
    $name157 = $56 + 12 | 0;
    $57 = HEAP32[$name157 >> 2] | 0;
    $call158 = _agget($0, 158144) | 0;
    $call159 = _agerr(0, 91984, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $55, HEAP32[tempInt + 8 >> 2] = $57, HEAP32[tempInt + 16 >> 2] = $call158, tempInt) | 0) | 0;
    label = 48;
    break;
   case 35:
    $58 = HEAP32[$eflag >> 2] | 0;
    $tobool162 = ($58 | 0) == 0;
    if ($tobool162) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    ___assert_func(107624, 424, 164144, 99520);
   case 37:
    $ep168 = $call22 + 32 | 0;
    $59 = $ep168;
    _boxIntersectf($p, $arrayidx145, $59, $bb131);
    $60 = $p;
    $sub170 = $endi_5 - 3 | 0;
    $61 = HEAP32[$list144 >> 2] | 0;
    $arrayidx172 = $61 + ($sub170 << 4) | 0;
    $62 = $arrayidx172;
    HEAP32[$62 >> 2] = HEAP32[$60 >> 2] | 0;
    HEAP32[$62 + 4 >> 2] = HEAP32[$60 + 4 >> 2] | 0;
    HEAP32[$62 + 8 >> 2] = HEAP32[$60 + 8 >> 2] | 0;
    HEAP32[$62 + 12 >> 2] = HEAP32[$60 + 12 >> 2] | 0;
    $add173 = $endi_5 - 1 | 0;
    $63 = HEAP32[$list144 >> 2] | 0;
    $arrayidx175 = $63 + ($add173 << 4) | 0;
    _mid_pointf3014($tmp177, $p, $59);
    $64 = $arrayidx175;
    $65 = $tmp177;
    HEAP32[$64 >> 2] = HEAP32[$65 >> 2] | 0;
    HEAP32[$64 + 4 >> 2] = HEAP32[$65 + 4 >> 2] | 0;
    HEAP32[$64 + 8 >> 2] = HEAP32[$65 + 8 >> 2] | 0;
    HEAP32[$64 + 12 >> 2] = HEAP32[$65 + 12 >> 2] | 0;
    $66 = HEAP32[$list144 >> 2] | 0;
    $arrayidx180 = $66 + ($endi_5 << 4) | 0;
    $arrayidx183 = $66 + ($add173 << 4) | 0;
    _mid_pointf3014($tmp185, $arrayidx183, $59);
    $67 = $arrayidx180;
    $68 = $tmp185;
    HEAP32[$67 >> 2] = HEAP32[$68 >> 2] | 0;
    HEAP32[$67 + 4 >> 2] = HEAP32[$68 + 4 >> 2] | 0;
    HEAP32[$67 + 8 >> 2] = HEAP32[$68 + 8 >> 2] | 0;
    HEAP32[$67 + 12 >> 2] = HEAP32[$68 + 12 >> 2] | 0;
    $add186 = $endi_5 - 2 | 0;
    $69 = HEAP32[$list144 >> 2] | 0;
    $arrayidx188 = $69 + ($add186 << 4) | 0;
    $arrayidx191 = $69 + ($add173 << 4) | 0;
    _mid_pointf3014($tmp192, $arrayidx191, $p);
    $70 = $arrayidx188;
    $71 = $tmp192;
    HEAP32[$70 >> 2] = HEAP32[$71 >> 2] | 0;
    HEAP32[$70 + 4 >> 2] = HEAP32[$71 + 4 >> 2] | 0;
    HEAP32[$70 + 8 >> 2] = HEAP32[$71 + 8 >> 2] | 0;
    HEAP32[$70 + 12 >> 2] = HEAP32[$71 + 12 >> 2] | 0;
    $72 = HEAP32[$sflag >> 2] | 0;
    $tobool194 = ($72 | 0) == 0;
    if ($tobool194) {
      $starti_3157 = $sub170;
      label = 50;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $73 = HEAP32[$list144 >> 2] | 0;
    $74 = $e;
    $call199 = _arrowStartClip($74, $73, $sub170, $sub170, $11, $72) | 0;
    $starti_3157 = $call199;
    label = 50;
    break;
   case 39:
    $cmp204 = ($starti_1 | 0) > 0;
    if ($cmp204) {
      label = 40;
      break;
    } else {
      label = 42;
      break;
    }
   case 40:
    $75 = HEAP32[$list144 >> 2] | 0;
    $arrayidx212 = $75 + ($starti_1 << 4) | 0;
    $76 = $pts;
    $77 = $arrayidx212;
    HEAP32[$76 >> 2] = HEAP32[$77 >> 2] | 0;
    HEAP32[$76 + 4 >> 2] = HEAP32[$77 + 4 >> 2] | 0;
    HEAP32[$76 + 8 >> 2] = HEAP32[$77 + 8 >> 2] | 0;
    HEAP32[$76 + 12 >> 2] = HEAP32[$77 + 12 >> 2] | 0;
    $arrayidx209_1 = $pts + 16 | 0;
    $sub210_1 = $starti_1 - 1 | 0;
    $78 = HEAP32[$list144 >> 2] | 0;
    $arrayidx212_1 = $78 + ($sub210_1 << 4) | 0;
    $79 = $arrayidx209_1;
    $80 = $arrayidx212_1;
    HEAP32[$79 >> 2] = HEAP32[$80 >> 2] | 0;
    HEAP32[$79 + 4 >> 2] = HEAP32[$80 + 4 >> 2] | 0;
    HEAP32[$79 + 8 >> 2] = HEAP32[$80 + 8 >> 2] | 0;
    HEAP32[$79 + 12 >> 2] = HEAP32[$80 + 12 >> 2] | 0;
    $arrayidx209_2 = $pts + 32 | 0;
    $sub210_2 = $starti_1 - 2 | 0;
    $81 = HEAP32[$list144 >> 2] | 0;
    $arrayidx212_2 = $81 + ($sub210_2 << 4) | 0;
    $82 = $arrayidx209_2;
    $83 = $arrayidx212_2;
    HEAP32[$82 >> 2] = HEAP32[$83 >> 2] | 0;
    HEAP32[$82 + 4 >> 2] = HEAP32[$83 + 4 >> 2] | 0;
    HEAP32[$82 + 8 >> 2] = HEAP32[$83 + 8 >> 2] | 0;
    HEAP32[$82 + 12 >> 2] = HEAP32[$83 + 12 >> 2] | 0;
    $arrayidx209_3 = $pts + 48 | 0;
    $sub210_3 = $starti_1 - 3 | 0;
    $84 = HEAP32[$list144 >> 2] | 0;
    $arrayidx212_3 = $84 + ($sub210_3 << 4) | 0;
    $85 = $arrayidx209_3;
    $86 = $arrayidx212_3;
    HEAP32[$85 >> 2] = HEAP32[$86 >> 2] | 0;
    HEAP32[$85 + 4 >> 2] = HEAP32[$86 + 4 >> 2] | 0;
    HEAP32[$85 + 8 >> 2] = HEAP32[$86 + 8 >> 2] | 0;
    HEAP32[$85 + 12 >> 2] = HEAP32[$86 + 12 >> 2] | 0;
    $call215 = _splineIntersectf($arraydecay, $bb131) | 0;
    $tobool216 = ($call215 | 0) == 0;
    $sub230 = $starti_1 - 3 | 0;
    if ($tobool216) {
      $starti_1 = $sub230;
      label = 39;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $87 = HEAP32[$list144 >> 2] | 0;
    $arrayidx223 = $87 + ($starti_1 << 4) | 0;
    $88 = $arrayidx223;
    $89 = $pts;
    HEAP32[$88 >> 2] = HEAP32[$89 >> 2] | 0;
    HEAP32[$88 + 4 >> 2] = HEAP32[$89 + 4 >> 2] | 0;
    HEAP32[$88 + 8 >> 2] = HEAP32[$89 + 8 >> 2] | 0;
    HEAP32[$88 + 12 >> 2] = HEAP32[$89 + 12 >> 2] | 0;
    $sub221_1 = $starti_1 - 1 | 0;
    $90 = HEAP32[$list144 >> 2] | 0;
    $arrayidx223_1 = $90 + ($sub221_1 << 4) | 0;
    $arrayidx224_1 = $pts + 16 | 0;
    $91 = $arrayidx223_1;
    $92 = $arrayidx224_1;
    HEAP32[$91 >> 2] = HEAP32[$92 >> 2] | 0;
    HEAP32[$91 + 4 >> 2] = HEAP32[$92 + 4 >> 2] | 0;
    HEAP32[$91 + 8 >> 2] = HEAP32[$92 + 8 >> 2] | 0;
    HEAP32[$91 + 12 >> 2] = HEAP32[$92 + 12 >> 2] | 0;
    $sub221_2 = $starti_1 - 2 | 0;
    $93 = HEAP32[$list144 >> 2] | 0;
    $arrayidx223_2 = $93 + ($sub221_2 << 4) | 0;
    $arrayidx224_2 = $pts + 32 | 0;
    $94 = $arrayidx223_2;
    $95 = $arrayidx224_2;
    HEAP32[$94 >> 2] = HEAP32[$95 >> 2] | 0;
    HEAP32[$94 + 4 >> 2] = HEAP32[$95 + 4 >> 2] | 0;
    HEAP32[$94 + 8 >> 2] = HEAP32[$95 + 8 >> 2] | 0;
    HEAP32[$94 + 12 >> 2] = HEAP32[$95 + 12 >> 2] | 0;
    $sub221_3 = $starti_1 - 3 | 0;
    $96 = HEAP32[$list144 >> 2] | 0;
    $arrayidx223_3 = $96 + ($sub221_3 << 4) | 0;
    $arrayidx224_3 = $pts + 48 | 0;
    $97 = $arrayidx223_3;
    $98 = $arrayidx224_3;
    HEAP32[$97 >> 2] = HEAP32[$98 >> 2] | 0;
    HEAP32[$97 + 4 >> 2] = HEAP32[$98 + 4 >> 2] | 0;
    HEAP32[$97 + 8 >> 2] = HEAP32[$98 + 8 >> 2] | 0;
    HEAP32[$97 + 12 >> 2] = HEAP32[$98 + 12 >> 2] | 0;
    label = 46;
    break;
   case 42:
    $cmp232 = ($starti_1 | 0) == 0;
    if ($cmp232) {
      label = 43;
      break;
    } else {
      label = 46;
      break;
    }
   case 43:
    $99 = HEAP32[$sflag >> 2] | 0;
    $tobool235 = ($99 | 0) == 0;
    if ($tobool235) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    ___assert_func(107624, 447, 164144, 103696);
   case 45:
    $sp239 = $call22 + 16 | 0;
    $sp240 = $7 + 16 | 0;
    $100 = HEAP32[$list144 >> 2] | 0;
    $arrayidx242 = $100 + ($starti_1 << 4) | 0;
    _boxIntersectf($tmp243, $sp240, $arrayidx242, $bb131);
    $101 = $tmp243;
    HEAP32[$sp239 >> 2] = HEAP32[$101 >> 2] | 0;
    HEAP32[$sp239 + 4 >> 2] = HEAP32[$101 + 4 >> 2] | 0;
    HEAP32[$sp239 + 8 >> 2] = HEAP32[$101 + 8 >> 2] | 0;
    HEAP32[$sp239 + 12 >> 2] = HEAP32[$101 + 12 >> 2] | 0;
    $starti_3157 = $starti_1;
    label = 50;
    break;
   case 46:
    $sub245 = $starti_1 - 3 | 0;
    $102 = HEAP32[$sflag >> 2] | 0;
    $tobool247 = ($102 | 0) == 0;
    if ($tobool247) {
      $starti_3157 = $sub245;
      label = 50;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $103 = HEAP32[$list144 >> 2] | 0;
    $sub250 = $endi_5 - 3 | 0;
    $104 = $e;
    $call252 = _arrowStartClip($104, $103, $sub245, $sub250, $11, $102) | 0;
    $starti_3157 = $call252;
    label = 50;
    break;
   case 48:
    $105 = HEAP32[$sflag >> 2] | 0;
    $tobool261 = ($105 | 0) == 0;
    if ($tobool261) {
      $starti_3157 = 0;
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $sp263 = $call22 + 16 | 0;
    $sp264 = $7 + 16 | 0;
    $106 = $sp264;
    HEAP32[$sp263 >> 2] = HEAP32[$106 >> 2] | 0;
    HEAP32[$sp263 + 4 >> 2] = HEAP32[$106 + 4 >> 2] | 0;
    HEAP32[$sp263 + 8 >> 2] = HEAP32[$106 + 8 >> 2] | 0;
    HEAP32[$sp263 + 12 >> 2] = HEAP32[$106 + 12 >> 2] | 0;
    $starti_3157 = 0;
    label = 50;
    break;
   case 50:
    $sub267 = $endi_5 - $starti_3157 | 0;
    $add268 = $sub267 + 1 | 0;
    $size269 = $call22 + 4 | 0;
    $107 = $size269;
    HEAP32[$107 >> 2] = $add268;
    $mul = $add268 << 4;
    $call271 = _gmalloc($mul) | 0;
    $108 = $call271;
    $list272 = $call22;
    HEAP32[$list272 >> 2] = $108;
    $109 = HEAP32[$107 >> 2] | 0;
    $cmp275158 = ($109 | 0) > 0;
    if ($cmp275158) {
      label = 51;
      break;
    } else {
      label = 53;
      break;
    }
   case 51:
    $list279 = $7 | 0;
    $i_2159 = 0;
    $j_0160 = $starti_3157;
    label = 52;
    break;
   case 52:
    $110 = HEAP32[$list272 >> 2] | 0;
    $arrayidx278 = $110 + ($i_2159 << 4) | 0;
    $111 = HEAP32[$list279 >> 2] | 0;
    $arrayidx280 = $111 + ($j_0160 << 4) | 0;
    $112 = $arrayidx278;
    $113 = $arrayidx280;
    HEAP32[$112 >> 2] = HEAP32[$113 >> 2] | 0;
    HEAP32[$112 + 4 >> 2] = HEAP32[$113 + 4 >> 2] | 0;
    HEAP32[$112 + 8 >> 2] = HEAP32[$113 + 8 >> 2] | 0;
    HEAP32[$112 + 12 >> 2] = HEAP32[$113 + 12 >> 2] | 0;
    $inc282 = $i_2159 + 1 | 0;
    $inc283 = $j_0160 + 1 | 0;
    $114 = HEAP32[$107 >> 2] | 0;
    $cmp275 = ($inc282 | 0) < ($114 | 0);
    if ($cmp275) {
      $i_2159 = $inc282;
      $j_0160 = $inc283;
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $list285 = $7 | 0;
    $115 = HEAP32[$list285 >> 2] | 0;
    $116 = $115;
    _free($116);
    $117 = $7;
    _free($117);
    $118 = HEAP32[$spl >> 2] | 0;
    $list288 = $118 | 0;
    HEAP32[$list288 >> 2] = $11;
    label = 54;
    break;
   case 54:
    STACKTOP = __stackBase__;
    return;
  }
}
function _mid_pointf3014($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $div5 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $div5 = (+HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3]) * .5;
  HEAPF64[$agg_result >> 3] = (+HEAPF64[$p >> 3] + +HEAPF64[$q >> 3]) * .5;
  HEAPF64[$agg_result + 8 >> 3] = $div5;
  STACKTOP = __stackBase__;
  return;
}
function _countHorzCross($pts, $ycoord) {
  $pts = $pts | 0;
  $ycoord = +$ycoord;
  var $y = 0, $0 = 0.0, $cmp = 0, $cmp3 = 0, $cond = 0, $cond4 = 0, $cmp5 = 0, $_ = 0, $y8 = 0, $1 = 0.0, $cmp9 = 0, $cmp14 = 0, $cond15 = 0, $cond17 = 0, $cmp18 = 0, $cmp19 = 0, $or_cond = 0, $inc21 = 0, $inc21_num_crossings_1 = 0, $y8_1 = 0, $2 = 0.0, $cmp9_1 = 0, $cmp14_1 = 0, $cond15_1 = 0, $cond17_1 = 0, $cmp18_1 = 0, $cmp19_1 = 0, $or_cond_1 = 0, $inc21_1 = 0, $inc21_num_crossings_1_1 = 0, $y8_2 = 0, $3 = 0.0, $cmp9_2 = 0, $cmp14_2 = 0, $cond15_2 = 0, $cond17_2 = 0, $cmp18_2 = 0, $cmp19_2 = 0, $or_cond_2 = 0, $inc21_2 = 0, $inc21_num_crossings_1_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $y = $pts + 8 | 0;
    $0 = +HEAPF64[$y >> 3];
    $cmp = $0 < $ycoord;
    if ($cmp) {
      $cond4 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp3 = $0 > $ycoord;
    $cond = $cmp3 & 1;
    $cond4 = $cond;
    label = 4;
    break;
   case 4:
    $cmp5 = ($cond4 | 0) == 0;
    $_ = $cmp5 & 1;
    $y8 = $pts + 24 | 0;
    $1 = +HEAPF64[$y8 >> 3];
    $cmp9 = $1 < $ycoord;
    if ($cmp9) {
      $cond17 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp14 = $1 > $ycoord;
    $cond15 = $cmp14 & 1;
    $cond17 = $cond15;
    label = 6;
    break;
   case 6:
    $cmp18 = ($cond17 | 0) != ($cond4 | 0);
    $cmp19 = ($cond4 | 0) != 0;
    $or_cond = $cmp18 & $cmp19;
    $inc21 = $or_cond & 1;
    $inc21_num_crossings_1 = $inc21 + $_ | 0;
    $y8_1 = $pts + 40 | 0;
    $2 = +HEAPF64[$y8_1 >> 3];
    $cmp9_1 = $2 < $ycoord;
    if ($cmp9_1) {
      $cond17_1 = -1;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp14_1 = $2 > $ycoord;
    $cond15_1 = $cmp14_1 & 1;
    $cond17_1 = $cond15_1;
    label = 8;
    break;
   case 8:
    $cmp18_1 = ($cond17_1 | 0) != ($cond17 | 0);
    $cmp19_1 = ($cond17 | 0) != 0;
    $or_cond_1 = $cmp18_1 & $cmp19_1;
    $inc21_1 = $or_cond_1 & 1;
    $inc21_num_crossings_1_1 = $inc21_1 + $inc21_num_crossings_1 | 0;
    $y8_2 = $pts + 56 | 0;
    $3 = +HEAPF64[$y8_2 >> 3];
    $cmp9_2 = $3 < $ycoord;
    if ($cmp9_2) {
      $cond17_2 = -1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp14_2 = $3 > $ycoord;
    $cond15_2 = $cmp14_2 & 1;
    $cond17_2 = $cond15_2;
    label = 10;
    break;
   case 10:
    $cmp18_2 = ($cond17_2 | 0) != ($cond17_1 | 0);
    $cmp19_2 = ($cond17_1 | 0) != 0;
    $or_cond_2 = $cmp18_2 & $cmp19_2;
    $inc21_2 = $or_cond_2 & 1;
    $inc21_num_crossings_1_2 = $inc21_2 + $inc21_num_crossings_1_1 | 0;
    return $inc21_num_crossings_1_2 | 0;
  }
  return 0;
}
function _countVertCross($pts, $xcoord) {
  $pts = $pts | 0;
  $xcoord = +$xcoord;
  var $x = 0, $0 = 0.0, $cmp = 0, $cmp3 = 0, $cond = 0, $cond4 = 0, $cmp5 = 0, $_ = 0, $x8 = 0, $1 = 0.0, $cmp9 = 0, $cmp14 = 0, $cond15 = 0, $cond17 = 0, $cmp18 = 0, $cmp19 = 0, $or_cond = 0, $inc21 = 0, $inc21_num_crossings_1 = 0, $x8_1 = 0, $2 = 0.0, $cmp9_1 = 0, $cmp14_1 = 0, $cond15_1 = 0, $cond17_1 = 0, $cmp18_1 = 0, $cmp19_1 = 0, $or_cond_1 = 0, $inc21_1 = 0, $inc21_num_crossings_1_1 = 0, $x8_2 = 0, $3 = 0.0, $cmp9_2 = 0, $cmp14_2 = 0, $cond15_2 = 0, $cond17_2 = 0, $cmp18_2 = 0, $cmp19_2 = 0, $or_cond_2 = 0, $inc21_2 = 0, $inc21_num_crossings_1_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $pts | 0;
    $0 = +HEAPF64[$x >> 3];
    $cmp = $0 < $xcoord;
    if ($cmp) {
      $cond4 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp3 = $0 > $xcoord;
    $cond = $cmp3 & 1;
    $cond4 = $cond;
    label = 4;
    break;
   case 4:
    $cmp5 = ($cond4 | 0) == 0;
    $_ = $cmp5 & 1;
    $x8 = $pts + 16 | 0;
    $1 = +HEAPF64[$x8 >> 3];
    $cmp9 = $1 < $xcoord;
    if ($cmp9) {
      $cond17 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp14 = $1 > $xcoord;
    $cond15 = $cmp14 & 1;
    $cond17 = $cond15;
    label = 6;
    break;
   case 6:
    $cmp18 = ($cond17 | 0) != ($cond4 | 0);
    $cmp19 = ($cond4 | 0) != 0;
    $or_cond = $cmp18 & $cmp19;
    $inc21 = $or_cond & 1;
    $inc21_num_crossings_1 = $inc21 + $_ | 0;
    $x8_1 = $pts + 32 | 0;
    $2 = +HEAPF64[$x8_1 >> 3];
    $cmp9_1 = $2 < $xcoord;
    if ($cmp9_1) {
      $cond17_1 = -1;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp14_1 = $2 > $xcoord;
    $cond15_1 = $cmp14_1 & 1;
    $cond17_1 = $cond15_1;
    label = 8;
    break;
   case 8:
    $cmp18_1 = ($cond17_1 | 0) != ($cond17 | 0);
    $cmp19_1 = ($cond17 | 0) != 0;
    $or_cond_1 = $cmp18_1 & $cmp19_1;
    $inc21_1 = $or_cond_1 & 1;
    $inc21_num_crossings_1_1 = $inc21_1 + $inc21_num_crossings_1 | 0;
    $x8_2 = $pts + 48 | 0;
    $3 = +HEAPF64[$x8_2 >> 3];
    $cmp9_2 = $3 < $xcoord;
    if ($cmp9_2) {
      $cond17_2 = -1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp14_2 = $3 > $xcoord;
    $cond15_2 = $cmp14_2 & 1;
    $cond17_2 = $cond15_2;
    label = 10;
    break;
   case 10:
    $cmp18_2 = ($cond17_2 | 0) != ($cond17_1 | 0);
    $cmp19_2 = ($cond17_1 | 0) != 0;
    $or_cond_2 = $cmp18_2 & $cmp19_2;
    $inc21_2 = $or_cond_2 & 1;
    $inc21_num_crossings_1_2 = $inc21_2 + $inc21_num_crossings_1_1 | 0;
    return $inc21_num_crossings_1_2 | 0;
  }
  return 0;
}
function _downcandidate($v) {
  $v = $v | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $size = 0, $1 = 0, $cmp3 = 0, $size7 = 0, $2 = 0, $cmp8 = 0, $label = 0, $3 = 0, $cmp11 = 0, $phitmp = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 3:
    $size = $v + 180 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $cmp3 = ($1 | 0) == 1;
    if ($cmp3) {
      label = 4;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 4:
    $size7 = $v + 188 | 0;
    $2 = HEAP32[$size7 >> 2] | 0;
    $cmp8 = ($2 | 0) == 1;
    if ($cmp8) {
      label = 5;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 5:
    $label = $v + 120 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $cmp11 = ($3 | 0) == 0;
    $phitmp = $cmp11 & 1;
    $4 = $phitmp;
    label = 6;
    break;
   case 6:
    return $4 | 0;
  }
  return 0;
}
function _splineIntersectf($pts, $bb) {
  $pts = $pts | 0;
  $bb = $bb | 0;
  var $origpts = 0, $tmp = 0, $tmp19 = 0, $tmp38 = 0, $tmp57 = 0, $0 = 0, $1 = 0, $arrayidx_1 = 0, $arrayidx1_1 = 0, $2 = 0, $3 = 0, $arrayidx_2 = 0, $arrayidx1_2 = 0, $4 = 0, $5 = 0, $arrayidx_3 = 0, $arrayidx1_3 = 0, $6 = 0, $7 = 0, $x = 0, $8 = 0.0, $y = 0, $9 = 0.0, $y3 = 0, $10 = 0.0, $call = 0.0, $cmp4 = 0, $cmp5 = 0, $or_cond = 0, $arraydecay = 0, $tmin_0 = 0.0, $cmp6 = 0, $cond = 0.0, $x8 = 0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $call13 = 0.0, $cmp14 = 0, $cmp16 = 0, $or_cond48 = 0, $arraydecay18 = 0, $tmin_1 = 0.0, $cmp21 = 0, $cond25 = 0.0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $call32 = 0.0, $cmp33 = 0, $cmp35 = 0, $or_cond49 = 0, $arraydecay37 = 0, $tmin_2 = 0.0, $cmp40 = 0, $cond44 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0.0, $call51 = 0.0, $cmp52 = 0, $cmp54 = 0, $or_cond50 = 0, $arraydecay56 = 0, $tmin_3 = 0.0, $cmp59 = 0, $_ = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 128 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $origpts = __stackBase__ | 0;
    $tmp = __stackBase__ + 64 | 0;
    $tmp19 = __stackBase__ + 80 | 0;
    $tmp38 = __stackBase__ + 96 | 0;
    $tmp57 = __stackBase__ + 112 | 0;
    $0 = $origpts;
    $1 = $pts;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $arrayidx_1 = $origpts + 16 | 0;
    $arrayidx1_1 = $pts + 16 | 0;
    $2 = $arrayidx_1;
    $3 = $arrayidx1_1;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $arrayidx_2 = $origpts + 32 | 0;
    $arrayidx1_2 = $pts + 32 | 0;
    $4 = $arrayidx_2;
    $5 = $arrayidx1_2;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $arrayidx_3 = $origpts + 48 | 0;
    $arrayidx1_3 = $pts + 48 | 0;
    $6 = $arrayidx_3;
    $7 = $arrayidx1_3;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $x = $bb | 0;
    $8 = +HEAPF64[$x >> 3];
    $y = $bb + 8 | 0;
    $9 = +HEAPF64[$y >> 3];
    $y3 = $bb + 24 | 0;
    $10 = +HEAPF64[$y3 >> 3];
    $call = +_findVertical($pts, 0.0, 1.0, $8, $9, $10);
    $cmp4 = $call >= 0.0;
    $cmp5 = $call < 2.0;
    $or_cond = $cmp4 & $cmp5;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      $tmin_0 = 2.0;
      label = 4;
      break;
    }
   case 3:
    $arraydecay = $origpts | 0;
    _Bezier($tmp, $arraydecay, 3, $call, $pts, 0);
    $tmin_0 = $call;
    label = 4;
    break;
   case 4:
    $cmp6 = $tmin_0 > 1.0;
    $cond = $cmp6 ? 1.0 : $tmin_0;
    $x8 = $bb + 16 | 0;
    $11 = +HEAPF64[$x8 >> 3];
    $12 = +HEAPF64[$y >> 3];
    $13 = +HEAPF64[$y3 >> 3];
    $call13 = +_findVertical($pts, 0.0, $cond, $11, $12, $13);
    $cmp14 = $call13 >= 0.0;
    $cmp16 = $call13 < $tmin_0;
    $or_cond48 = $cmp14 & $cmp16;
    if ($or_cond48) {
      label = 5;
      break;
    } else {
      $tmin_1 = $tmin_0;
      label = 6;
      break;
    }
   case 5:
    $arraydecay18 = $origpts | 0;
    _Bezier($tmp19, $arraydecay18, 3, $call13, $pts, 0);
    $tmin_1 = $call13;
    label = 6;
    break;
   case 6:
    $cmp21 = $tmin_1 > 1.0;
    $cond25 = $cmp21 ? 1.0 : $tmin_1;
    $14 = +HEAPF64[$y >> 3];
    $15 = +HEAPF64[$x >> 3];
    $16 = +HEAPF64[$x8 >> 3];
    $call32 = +_findHorizontal($pts, 0.0, $cond25, $14, $15, $16);
    $cmp33 = $call32 >= 0.0;
    $cmp35 = $call32 < $tmin_1;
    $or_cond49 = $cmp33 & $cmp35;
    if ($or_cond49) {
      label = 7;
      break;
    } else {
      $tmin_2 = $tmin_1;
      label = 8;
      break;
    }
   case 7:
    $arraydecay37 = $origpts | 0;
    _Bezier($tmp38, $arraydecay37, 3, $call32, $pts, 0);
    $tmin_2 = $call32;
    label = 8;
    break;
   case 8:
    $cmp40 = $tmin_2 > 1.0;
    $cond44 = $cmp40 ? 1.0 : $tmin_2;
    $17 = +HEAPF64[$y3 >> 3];
    $18 = +HEAPF64[$x >> 3];
    $19 = +HEAPF64[$x8 >> 3];
    $call51 = +_findHorizontal($pts, 0.0, $cond44, $17, $18, $19);
    $cmp52 = $call51 >= 0.0;
    $cmp54 = $call51 < $tmin_2;
    $or_cond50 = $cmp52 & $cmp54;
    if ($or_cond50) {
      label = 9;
      break;
    } else {
      $tmin_3 = $tmin_2;
      label = 10;
      break;
    }
   case 9:
    $arraydecay56 = $origpts | 0;
    _Bezier($tmp57, $arraydecay56, 3, $call51, $pts, 0);
    $tmin_3 = $call51;
    label = 10;
    break;
   case 10:
    $cmp59 = $tmin_3 < 2.0;
    $_ = $cmp59 & 1;
    STACKTOP = __stackBase__;
    return $_ | 0;
  }
  return 0;
}
function _findVertical($pts, $tmin, $tmax, $xcoord, $ymin, $ymax) {
  $pts = $pts | 0;
  $tmin = +$tmin;
  $tmax = +$tmax;
  $xcoord = +$xcoord;
  $ymin = +$ymin;
  $ymax = +$ymax;
  var $Left = 0, $Right = 0, $tmp = 0, $call = 0, $x = 0, $0 = 0.0, $cmp2 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $cmp8 = 0, $add11 = 0.0, $sub14 = 0.0, $add11_sink = 0.0, $conv12 = 0, $cmp18 = 0, $y = 0, $1 = 0.0, $cmp22 = 0, $cmp27 = 0, $or_cond = 0, $_tmax = 0.0, $arraydecay = 0, $arraydecay31 = 0, $add33 = 0.0, $div = 0.0, $call34 = 0.0, $cmp35 = 0, $call42 = 0.0, $retval_0 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $Left = __stackBase__ | 0;
    $Right = __stackBase__ + 64 | 0;
    $tmp = __stackBase__ + 128 | 0;
    $call = _countVertCross($pts, $xcoord) | 0;
    if (($call | 0) == 1) {
      label = 3;
      break;
    } else if (($call | 0) == 0) {
      $retval_0 = -1.0;
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 3:
    $x = $pts + 48 | 0;
    $0 = +HEAPF64[$x >> 3];
    $cmp2 = $0 < 0.0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $add = $0 + .5;
    $add_sink = $add;
    label = 6;
    break;
   case 5:
    $sub = $0 + -.5;
    $add_sink = $sub;
    label = 6;
    break;
   case 6:
    $conv = ~~$add_sink;
    $cmp8 = $xcoord < 0.0;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add11 = $xcoord + .5;
    $add11_sink = $add11;
    label = 9;
    break;
   case 8:
    $sub14 = $xcoord + -.5;
    $add11_sink = $sub14;
    label = 9;
    break;
   case 9:
    $conv12 = ~~$add11_sink;
    $cmp18 = ($conv | 0) == ($conv12 | 0);
    if ($cmp18) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $y = $pts + 56 | 0;
    $1 = +HEAPF64[$y >> 3];
    $cmp22 = $1 < $ymin;
    $cmp27 = $1 > $ymax;
    $or_cond = $cmp22 | $cmp27;
    $_tmax = $or_cond ? -1.0 : $tmax;
    STACKTOP = __stackBase__;
    return +$_tmax;
   case 11:
    $arraydecay = $Left | 0;
    $arraydecay31 = $Right | 0;
    _Bezier($tmp, $pts, 3, .5, $arraydecay, $arraydecay31);
    $add33 = $tmin + $tmax;
    $div = $add33 * .5;
    $call34 = +_findVertical($arraydecay, $tmin, $div, $xcoord, $ymin, $ymax);
    $cmp35 = $call34 < 0.0;
    if ($cmp35) {
      label = 12;
      break;
    } else {
      $retval_0 = $call34;
      label = 13;
      break;
    }
   case 12:
    $call42 = +_findVertical($arraydecay31, $div, $tmax, $xcoord, $ymin, $ymax);
    $retval_0 = $call42;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return +$retval_0;
  }
  return 0.0;
}
function _findHorizontal($pts, $tmin, $tmax, $ycoord, $xmin, $xmax) {
  $pts = $pts | 0;
  $tmin = +$tmin;
  $tmax = +$tmax;
  $ycoord = +$ycoord;
  $xmin = +$xmin;
  $xmax = +$xmax;
  var $Left = 0, $Right = 0, $tmp = 0, $call = 0, $y = 0, $0 = 0.0, $cmp2 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $cmp8 = 0, $add11 = 0.0, $sub14 = 0.0, $add11_sink = 0.0, $conv12 = 0, $cmp18 = 0, $x = 0, $1 = 0.0, $cmp22 = 0, $cmp27 = 0, $or_cond = 0, $_tmax = 0.0, $arraydecay = 0, $arraydecay31 = 0, $add33 = 0.0, $div = 0.0, $call34 = 0.0, $cmp35 = 0, $call42 = 0.0, $retval_0 = 0.0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $Left = __stackBase__ | 0;
    $Right = __stackBase__ + 64 | 0;
    $tmp = __stackBase__ + 128 | 0;
    $call = _countHorzCross($pts, $ycoord) | 0;
    if (($call | 0) == 1) {
      label = 3;
      break;
    } else if (($call | 0) == 0) {
      $retval_0 = -1.0;
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 3:
    $y = $pts + 56 | 0;
    $0 = +HEAPF64[$y >> 3];
    $cmp2 = $0 < 0.0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $add = $0 + .5;
    $add_sink = $add;
    label = 6;
    break;
   case 5:
    $sub = $0 + -.5;
    $add_sink = $sub;
    label = 6;
    break;
   case 6:
    $conv = ~~$add_sink;
    $cmp8 = $ycoord < 0.0;
    if ($cmp8) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add11 = $ycoord + .5;
    $add11_sink = $add11;
    label = 9;
    break;
   case 8:
    $sub14 = $ycoord + -.5;
    $add11_sink = $sub14;
    label = 9;
    break;
   case 9:
    $conv12 = ~~$add11_sink;
    $cmp18 = ($conv | 0) == ($conv12 | 0);
    if ($cmp18) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $x = $pts + 48 | 0;
    $1 = +HEAPF64[$x >> 3];
    $cmp22 = $1 < $xmin;
    $cmp27 = $1 > $xmax;
    $or_cond = $cmp22 | $cmp27;
    $_tmax = $or_cond ? -1.0 : $tmax;
    STACKTOP = __stackBase__;
    return +$_tmax;
   case 11:
    $arraydecay = $Left | 0;
    $arraydecay31 = $Right | 0;
    _Bezier($tmp, $pts, 3, .5, $arraydecay, $arraydecay31);
    $add33 = $tmin + $tmax;
    $div = $add33 * .5;
    $call34 = +_findHorizontal($arraydecay, $tmin, $div, $ycoord, $xmin, $xmax);
    $cmp35 = $call34 < 0.0;
    if ($cmp35) {
      label = 12;
      break;
    } else {
      $retval_0 = $call34;
      label = 13;
      break;
    }
   case 12:
    $call42 = +_findHorizontal($arraydecay31, $div, $tmax, $ycoord, $xmin, $xmax);
    $retval_0 = $call42;
    label = 13;
    break;
   case 13:
    STACKTOP = __stackBase__;
    return +$retval_0;
  }
  return 0.0;
}
function _pf2s($p, $buf) {
  $p = $p | 0;
  $buf = $buf | 0;
  var $1 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $1 = +HEAPF64[$p + 8 >> 3];
  _sprintf($buf | 0, 155560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = +HEAPF64[$p >> 3], HEAPF64[tempInt + 8 >> 3] = $1, tempInt) | 0);
  STACKTOP = __stackBase__;
  return $buf | 0;
}
function _dot_concentrate($g) {
  $g = $g | 0;
  var $maxrank = 0, $0 = 0, $conv = 0, $minrank = 0, $1 = 0, $conv2 = 0, $sub = 0, $cmp = 0, $rank = 0, $2 = 0, $n67 = 0, $3 = 0, $tobool68 = 0, $add = 0, $4 = 0, $n = 0, $5 = 0, $tobool = 0, $add70 = 0, $r_069 = 0, $6 = 0, $n963 = 0, $7 = 0, $cmp1064 = 0, $cmp5460 = 0, $8 = 0, $leftpos_065 = 0, $v = 0, $9 = 0, $arrayidx16 = 0, $10 = 0, $call = 0, $cmp18 = 0, $11 = 0, $n27 = 0, $12 = 0, $v34 = 0, $rightpos_0_in = 0, $rightpos_0 = 0, $cmp28 = 0, $13 = 0, $arrayidx35 = 0, $14 = 0, $call36 = 0, $cmp38 = 0, $sub42 = 0, $cmp43 = 0, $inc49 = 0, $15 = 0, $n9 = 0, $16 = 0, $cmp10 = 0, $r_161 = 0, $17 = 0, $n6056 = 0, $18 = 0, $cmp6157 = 0, $n_cluster = 0, $19 = 0, $cmp10954 = 0, $clust = 0, $20 = 0, $leftpos_158 = 0, $v67 = 0, $21 = 0, $arrayidx68 = 0, $22 = 0, $call69 = 0, $cmp71 = 0, $23 = 0, $n80 = 0, $24 = 0, $v87 = 0, $rightpos_1_in = 0, $rightpos_1 = 0, $cmp81 = 0, $25 = 0, $arrayidx88 = 0, $26 = 0, $call89 = 0, $cmp91 = 0, $sub98 = 0, $cmp99 = 0, $inc105 = 0, $27 = 0, $n60 = 0, $28 = 0, $cmp61 = 0, $dec = 0, $cmp54 = 0, $c_055 = 0, $29 = 0, $arrayidx113 = 0, $30 = 0, $inc115 = 0, $31 = 0, $cmp109 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $maxrank = $g + 250 | 0;
    $0 = HEAP16[$maxrank >> 1] | 0;
    $conv = $0 << 16 >> 16;
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $conv2 = $1 << 16 >> 16;
    $sub = $conv - $conv2 | 0;
    $cmp = ($sub | 0) < 2;
    if ($cmp) {
      label = 26;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $rank = $g + 224 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $n67 = $2 + 88 | 0;
    $3 = HEAP32[$n67 >> 2] | 0;
    $tobool68 = ($3 | 0) == 0;
    if ($tobool68) {
      $r_161 = 1;
      label = 14;
      break;
    } else {
      $r_069 = 1;
      $add70 = 2;
      label = 5;
      break;
    }
   case 4:
    $add = $add70 + 1 | 0;
    $4 = HEAP32[$rank >> 2] | 0;
    $n = $4 + ($add * 44 & -1) | 0;
    $5 = HEAP32[$n >> 2] | 0;
    $tobool = ($5 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $r_069 = $add70;
      $add70 = $add;
      label = 5;
      break;
    }
   case 5:
    $6 = HEAP32[$rank >> 2] | 0;
    $n963 = $6 + ($r_069 * 44 & -1) | 0;
    $7 = HEAP32[$n963 >> 2] | 0;
    $cmp1064 = ($7 | 0) > 0;
    if ($cmp1064) {
      $leftpos_065 = 0;
      $8 = $6;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 6:
    $cmp5460 = ($add70 | 0) > 0;
    if ($cmp5460) {
      $r_161 = $add70;
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 7:
    $v = $8 + ($r_069 * 44 & -1) + 4 | 0;
    $9 = HEAP32[$v >> 2] | 0;
    $arrayidx16 = $9 + ($leftpos_065 << 2) | 0;
    $10 = HEAP32[$arrayidx16 >> 2] | 0;
    $call = _downcandidate($10) | 0;
    $cmp18 = $call << 24 >> 24 == 0;
    if ($cmp18) {
      label = 13;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $11 = HEAP32[$rank >> 2] | 0;
    $n27 = $11 + ($r_069 * 44 & -1) | 0;
    $12 = HEAP32[$n27 >> 2] | 0;
    $v34 = $11 + ($r_069 * 44 & -1) + 4 | 0;
    $rightpos_0_in = $leftpos_065;
    label = 9;
    break;
   case 9:
    $rightpos_0 = $rightpos_0_in + 1 | 0;
    $cmp28 = ($rightpos_0 | 0) < ($12 | 0);
    if ($cmp28) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $13 = HEAP32[$v34 >> 2] | 0;
    $arrayidx35 = $13 + ($rightpos_0 << 2) | 0;
    $14 = HEAP32[$arrayidx35 >> 2] | 0;
    $call36 = _bothdowncandidates($10, $14) | 0;
    $cmp38 = $call36 << 24 >> 24 == 0;
    if ($cmp38) {
      label = 11;
      break;
    } else {
      $rightpos_0_in = $rightpos_0;
      label = 9;
      break;
    }
   case 11:
    $sub42 = $rightpos_0 - $leftpos_065 | 0;
    $cmp43 = ($sub42 | 0) > 1;
    if ($cmp43) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    _mergevirtual($g, $r_069, $leftpos_065, $rightpos_0_in, 1);
    label = 13;
    break;
   case 13:
    $inc49 = $leftpos_065 + 1 | 0;
    $15 = HEAP32[$rank >> 2] | 0;
    $n9 = $15 + ($r_069 * 44 & -1) | 0;
    $16 = HEAP32[$n9 >> 2] | 0;
    $cmp10 = ($inc49 | 0) < ($16 | 0);
    if ($cmp10) {
      $leftpos_065 = $inc49;
      $8 = $15;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 14:
    $17 = HEAP32[$rank >> 2] | 0;
    $n6056 = $17 + ($r_161 * 44 & -1) | 0;
    $18 = HEAP32[$n6056 >> 2] | 0;
    $cmp6157 = ($18 | 0) > 0;
    if ($cmp6157) {
      $leftpos_158 = 0;
      $20 = $17;
      label = 17;
      break;
    } else {
      label = 24;
      break;
    }
   case 15:
    $n_cluster = $g + 212 | 0;
    $19 = HEAP32[$n_cluster >> 2] | 0;
    $cmp10954 = ($19 | 0) < 1;
    if ($cmp10954) {
      label = 26;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $clust = $g + 216 | 0;
    $c_055 = 1;
    label = 25;
    break;
   case 17:
    $v67 = $20 + ($r_161 * 44 & -1) + 4 | 0;
    $21 = HEAP32[$v67 >> 2] | 0;
    $arrayidx68 = $21 + ($leftpos_158 << 2) | 0;
    $22 = HEAP32[$arrayidx68 >> 2] | 0;
    $call69 = _upcandidate($22) | 0;
    $cmp71 = $call69 << 24 >> 24 == 0;
    if ($cmp71) {
      label = 23;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $23 = HEAP32[$rank >> 2] | 0;
    $n80 = $23 + ($r_161 * 44 & -1) | 0;
    $24 = HEAP32[$n80 >> 2] | 0;
    $v87 = $23 + ($r_161 * 44 & -1) + 4 | 0;
    $rightpos_1_in = $leftpos_158;
    label = 19;
    break;
   case 19:
    $rightpos_1 = $rightpos_1_in + 1 | 0;
    $cmp81 = ($rightpos_1 | 0) < ($24 | 0);
    if ($cmp81) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $25 = HEAP32[$v87 >> 2] | 0;
    $arrayidx88 = $25 + ($rightpos_1 << 2) | 0;
    $26 = HEAP32[$arrayidx88 >> 2] | 0;
    $call89 = _bothupcandidates($22, $26) | 0;
    $cmp91 = $call89 << 24 >> 24 == 0;
    if ($cmp91) {
      label = 21;
      break;
    } else {
      $rightpos_1_in = $rightpos_1;
      label = 19;
      break;
    }
   case 21:
    $sub98 = $rightpos_1 - $leftpos_158 | 0;
    $cmp99 = ($sub98 | 0) > 1;
    if ($cmp99) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    _mergevirtual($g, $r_161, $leftpos_158, $rightpos_1_in, 0);
    label = 23;
    break;
   case 23:
    $inc105 = $leftpos_158 + 1 | 0;
    $27 = HEAP32[$rank >> 2] | 0;
    $n60 = $27 + ($r_161 * 44 & -1) | 0;
    $28 = HEAP32[$n60 >> 2] | 0;
    $cmp61 = ($inc105 | 0) < ($28 | 0);
    if ($cmp61) {
      $leftpos_158 = $inc105;
      $20 = $27;
      label = 17;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $dec = $r_161 - 1 | 0;
    $cmp54 = ($dec | 0) > 0;
    if ($cmp54) {
      $r_161 = $dec;
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 25:
    $29 = HEAP32[$clust >> 2] | 0;
    $arrayidx113 = $29 + ($c_055 << 2) | 0;
    $30 = HEAP32[$arrayidx113 >> 2] | 0;
    _rebuild_vlists($30);
    $inc115 = $c_055 + 1 | 0;
    $31 = HEAP32[$n_cluster >> 2] | 0;
    $cmp109 = ($inc115 | 0) > ($31 | 0);
    if ($cmp109) {
      label = 26;
      break;
    } else {
      $c_055 = $inc115;
      label = 25;
      break;
    }
   case 26:
    return;
  }
}
function _bothdowncandidates($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  var $list = 0, $0 = 0, $1 = 0, $list4 = 0, $2 = 0, $3 = 0, $call = 0, $tobool = 0, $tail = 0, $4 = 0, $tail6 = 0, $5 = 0, $cmp = 0, $call8 = 0, $tobool10 = 0, $tail_port = 0, $tail_port13 = 0, $call14 = 0, $cmp15 = 0, $phitmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $u + 176 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $list4 = $v + 176 | 0;
    $2 = HEAP32[$list4 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $call = _downcandidate($v) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $1 + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $tail6 = $3 + 16 | 0;
    $5 = HEAP32[$tail6 >> 2] | 0;
    $cmp = ($4 | 0) == ($5 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 4:
    $call8 = _samedir($1, $3) | 0;
    $tobool10 = $call8 << 24 >> 24 == 0;
    if ($tobool10) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $tail_port = $1 + 32 | 0;
    $tail_port13 = $3 + 32 | 0;
    $call14 = _portcmp($tail_port, $tail_port13) | 0;
    $cmp15 = ($call14 | 0) == 0;
    $phitmp = $cmp15 & 1;
    $retval_0 = $phitmp;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _boxIntersectf($agg_result, $pp, $cp, $bp) {
  $agg_result = $agg_result | 0;
  $pp = $pp | 0;
  $cp = $cp | 0;
  $bp = $bp | 0;
  var $ll = 0, $ur = 0, $ppbuf = 0, $cpbuf = 0, $llbuf = 0, $urbuf = 0, $x = 0, $0 = 0.0, $y = 0, $1 = 0.0, $x1 = 0, $2 = 0.0, $y2 = 0, $3 = 0.0, $4 = 0, $5 = 0, $UR = 0, $6 = 0, $7 = 0, $8 = 0.0, $x4 = 0, $9 = 0.0, $cmp = 0, $10 = 0.0, $sub = 0.0, $sub9 = 0.0, $mul = 0.0, $sub10 = 0.0, $div = 0.0, $conv = 0, $conv11 = 0.0, $add = 0.0, $y14 = 0, $11 = 0.0, $cmp15 = 0, $y18 = 0, $12 = 0.0, $cmp19 = 0, $ipp_sroa_0_0__idx25 = 0, $ipp_sroa_1_8__idx36 = 0, $13 = 0.0, $x24 = 0, $14 = 0.0, $cmp25 = 0, $15 = 0.0, $sub32 = 0.0, $sub33 = 0.0, $mul34 = 0.0, $sub35 = 0.0, $div36 = 0.0, $conv37 = 0, $conv38 = 0.0, $add39 = 0.0, $y42 = 0, $16 = 0.0, $cmp43 = 0, $y47 = 0, $17 = 0.0, $cmp48 = 0, $ipp_sroa_0_0__idx22 = 0, $ipp_sroa_1_8__idx32 = 0, $18 = 0.0, $y54 = 0, $19 = 0.0, $cmp55 = 0, $20 = 0.0, $sub62 = 0.0, $sub63 = 0.0, $mul64 = 0.0, $sub65 = 0.0, $div66 = 0.0, $conv67 = 0, $conv68 = 0.0, $add69 = 0.0, $21 = 0.0, $cmp73 = 0, $22 = 0.0, $cmp78 = 0, $ipp_sroa_0_0__idx18 = 0, $ipp_sroa_1_8__idx29 = 0, $23 = 0.0, $y84 = 0, $24 = 0.0, $cmp85 = 0, $25 = 0.0, $sub92 = 0.0, $sub93 = 0.0, $mul94 = 0.0, $sub95 = 0.0, $div96 = 0.0, $conv97 = 0, $conv98 = 0.0, $add99 = 0.0, $26 = 0.0, $cmp103 = 0, $27 = 0.0, $cmp108 = 0, $ipp_sroa_0_0__idx = 0, $ipp_sroa_1_8__idx28 = 0, $arraydecay = 0, $call = 0, $arraydecay113 = 0, $call114 = 0, $arraydecay115 = 0, $call116 = 0, $arraydecay117 = 0, $call118 = 0, $call119 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 448 | 0;
  tempParam = $pp;
  $pp = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$pp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$pp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$pp + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$pp + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $cp;
  $cp = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$cp >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$cp + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$cp + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$cp + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ll = __stackBase__ | 0;
    $ur = __stackBase__ + 16 | 0;
    $ppbuf = __stackBase__ + 32 | 0;
    $cpbuf = __stackBase__ + 136 | 0;
    $llbuf = __stackBase__ + 240 | 0;
    $urbuf = __stackBase__ + 344 | 0;
    $x = $pp | 0;
    $0 = +HEAPF64[$x >> 3];
    $y = $pp + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    $x1 = $cp | 0;
    $2 = +HEAPF64[$x1 >> 3];
    $y2 = $cp + 8 | 0;
    $3 = +HEAPF64[$y2 >> 3];
    $4 = $ll;
    $5 = $bp;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $UR = $bp + 16 | 0;
    $6 = $ur;
    $7 = $UR;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    $8 = +HEAPF64[$x1 >> 3];
    $x4 = $ll | 0;
    $9 = +HEAPF64[$x4 >> 3];
    $cmp = $8 < $9;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $10 = +HEAPF64[$y >> 3];
    $sub = $9 - $0;
    $sub9 = $1 - $3;
    $mul = $sub9 * $sub;
    $sub10 = $0 - $2;
    $div = $mul / $sub10;
    $conv = ~~$div;
    $conv11 = +($conv | 0);
    $add = $10 + $conv11;
    $y14 = $ll + 8 | 0;
    $11 = +HEAPF64[$y14 >> 3];
    $cmp15 = $add < $11;
    if ($cmp15) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y18 = $ur + 8 | 0;
    $12 = +HEAPF64[$y18 >> 3];
    $cmp19 = $add > $12;
    if ($cmp19) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $ipp_sroa_0_0__idx25 = $agg_result | 0;
    HEAPF64[$ipp_sroa_0_0__idx25 >> 3] = $9;
    $ipp_sroa_1_8__idx36 = $agg_result + 8 | 0;
    HEAPF64[$ipp_sroa_1_8__idx36 >> 3] = $add;
    label = 19;
    break;
   case 6:
    $13 = +HEAPF64[$x1 >> 3];
    $x24 = $ur | 0;
    $14 = +HEAPF64[$x24 >> 3];
    $cmp25 = $13 > $14;
    if ($cmp25) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $15 = +HEAPF64[$y >> 3];
    $sub32 = $14 - $0;
    $sub33 = $1 - $3;
    $mul34 = $sub33 * $sub32;
    $sub35 = $0 - $2;
    $div36 = $mul34 / $sub35;
    $conv37 = ~~$div36;
    $conv38 = +($conv37 | 0);
    $add39 = $15 + $conv38;
    $y42 = $ll + 8 | 0;
    $16 = +HEAPF64[$y42 >> 3];
    $cmp43 = $add39 < $16;
    if ($cmp43) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $y47 = $ur + 8 | 0;
    $17 = +HEAPF64[$y47 >> 3];
    $cmp48 = $add39 > $17;
    if ($cmp48) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $ipp_sroa_0_0__idx22 = $agg_result | 0;
    HEAPF64[$ipp_sroa_0_0__idx22 >> 3] = $14;
    $ipp_sroa_1_8__idx32 = $agg_result + 8 | 0;
    HEAPF64[$ipp_sroa_1_8__idx32 >> 3] = $add39;
    label = 19;
    break;
   case 10:
    $18 = +HEAPF64[$y2 >> 3];
    $y54 = $ll + 8 | 0;
    $19 = +HEAPF64[$y54 >> 3];
    $cmp55 = $18 < $19;
    if ($cmp55) {
      label = 11;
      break;
    } else {
      label = 14;
      break;
    }
   case 11:
    $20 = +HEAPF64[$x >> 3];
    $sub62 = $19 - $1;
    $sub63 = $0 - $2;
    $mul64 = $sub63 * $sub62;
    $sub65 = $1 - $3;
    $div66 = $mul64 / $sub65;
    $conv67 = ~~$div66;
    $conv68 = +($conv67 | 0);
    $add69 = $20 + $conv68;
    $21 = +HEAPF64[$x4 >> 3];
    $cmp73 = $add69 < $21;
    if ($cmp73) {
      label = 14;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $22 = +HEAPF64[$x24 >> 3];
    $cmp78 = $add69 > $22;
    if ($cmp78) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $ipp_sroa_0_0__idx18 = $agg_result | 0;
    HEAPF64[$ipp_sroa_0_0__idx18 >> 3] = $add69;
    $ipp_sroa_1_8__idx29 = $agg_result + 8 | 0;
    HEAPF64[$ipp_sroa_1_8__idx29 >> 3] = $19;
    label = 19;
    break;
   case 14:
    $23 = +HEAPF64[$y2 >> 3];
    $y84 = $ur + 8 | 0;
    $24 = +HEAPF64[$y84 >> 3];
    $cmp85 = $23 > $24;
    if ($cmp85) {
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $25 = +HEAPF64[$x >> 3];
    $sub92 = $24 - $1;
    $sub93 = $0 - $2;
    $mul94 = $sub93 * $sub92;
    $sub95 = $1 - $3;
    $div96 = $mul94 / $sub95;
    $conv97 = ~~$div96;
    $conv98 = +($conv97 | 0);
    $add99 = $25 + $conv98;
    $26 = +HEAPF64[$x4 >> 3];
    $cmp103 = $add99 < $26;
    if ($cmp103) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $27 = +HEAPF64[$x24 >> 3];
    $cmp108 = $add99 > $27;
    if ($cmp108) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $ipp_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$ipp_sroa_0_0__idx >> 3] = $add99;
    $ipp_sroa_1_8__idx28 = $agg_result + 8 | 0;
    HEAPF64[$ipp_sroa_1_8__idx28 >> 3] = $24;
    label = 19;
    break;
   case 18:
    $arraydecay = $ppbuf | 0;
    $call = _pf2s($pp, $arraydecay) | 0;
    $arraydecay113 = $cpbuf | 0;
    $call114 = _pf2s($cp, $arraydecay113) | 0;
    $arraydecay115 = $llbuf | 0;
    $call116 = _pf2s($ll, $arraydecay115) | 0;
    $arraydecay117 = $urbuf | 0;
    $call118 = _pf2s($ur, $arraydecay117) | 0;
    $call119 = _agerr(1, 162176, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $call, HEAP32[tempInt + 8 >> 2] = $call114, HEAP32[tempInt + 16 >> 2] = $call116, HEAP32[tempInt + 24 >> 2] = $call118, tempInt) | 0) | 0;
    ___assert_func(107624, 78, 164592, 158672);
   case 19:
    STACKTOP = __stackBase__;
    return;
  }
}
function _upcandidate($v) {
  $v = $v | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $size = 0, $1 = 0, $cmp3 = 0, $size7 = 0, $2 = 0, $cmp8 = 0, $label = 0, $3 = 0, $cmp11 = 0, $phitmp = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 3:
    $size = $v + 188 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $cmp3 = ($1 | 0) == 1;
    if ($cmp3) {
      label = 4;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 4:
    $size7 = $v + 180 | 0;
    $2 = HEAP32[$size7 >> 2] | 0;
    $cmp8 = ($2 | 0) == 1;
    if ($cmp8) {
      label = 5;
      break;
    } else {
      $4 = 0;
      label = 6;
      break;
    }
   case 5:
    $label = $v + 120 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $cmp11 = ($3 | 0) == 0;
    $phitmp = $cmp11 & 1;
    $4 = $phitmp;
    label = 6;
    break;
   case 6:
    return $4 | 0;
  }
  return 0;
}
function _infuse($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $rank = 0, $0 = 0, $rankleader = 0, $1 = 0, $arrayidx = 0, $2 = 0, $cmp = 0, $order = 0, $3 = 0, $order4 = 0, $4 = 0, $cmp5 = 0, $5 = 0, $6 = 0, $arrayidx10 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $n + 236 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $rankleader = $g + 280 | 0;
    $1 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $1 + ($0 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $cmp = ($2 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $order = $2 + 240 | 0;
    $3 = HEAP32[$order >> 2] | 0;
    $order4 = $n + 240 | 0;
    $4 = HEAP32[$order4 >> 2] | 0;
    $cmp5 = ($3 | 0) > ($4 | 0);
    if ($cmp5) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $5 = HEAP32[$rank >> 2] | 0;
    $6 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx10 = $6 + ($5 << 2) | 0;
    HEAP32[$arrayidx10 >> 2] = $n;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _samedir($e, $f) {
  $e = $e | 0;
  $f = $f | 0;
  var $edge_type12 = 0, $0 = 0, $cmp13 = 0, $e0_0_lcssa = 0, $edge_type59 = 0, $1 = 0, $cmp710 = 0, $e0_014 = 0, $to_orig = 0, $2 = 0, $edge_type = 0, $3 = 0, $cmp = 0, $f0_011 = 0, $to_orig12 = 0, $4 = 0, $edge_type5 = 0, $5 = 0, $cmp7 = 0, $f0_0_lcssa = 0, $conc_opp_flag = 0, $6 = 0, $tobool = 0, $conc_opp_flag16 = 0, $7 = 0, $tobool17 = 0, $tail = 0, $8 = 0, $rank = 0, $9 = 0, $head = 0, $10 = 0, $rank22 = 0, $11 = 0, $sub = 0, $tail23 = 0, $12 = 0, $rank25 = 0, $13 = 0, $head26 = 0, $14 = 0, $rank28 = 0, $15 = 0, $sub29 = 0, $mul = 0, $cmp30 = 0, $conv32 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $edge_type12 = $e + 128 | 0;
    $0 = HEAP8[$edge_type12] | 0;
    $cmp13 = $0 << 24 >> 24 == 0;
    if ($cmp13) {
      $e0_0_lcssa = $e;
      label = 3;
      break;
    } else {
      $e0_014 = $e;
      label = 4;
      break;
    }
   case 3:
    $edge_type59 = $f + 128 | 0;
    $1 = HEAP8[$edge_type59] | 0;
    $cmp710 = $1 << 24 >> 24 == 0;
    if ($cmp710) {
      $f0_0_lcssa = $f;
      label = 6;
      break;
    } else {
      $f0_011 = $f;
      label = 5;
      break;
    }
   case 4:
    $to_orig = $e0_014 + 132 | 0;
    $2 = HEAP32[$to_orig >> 2] | 0;
    $edge_type = $2 + 128 | 0;
    $3 = HEAP8[$edge_type] | 0;
    $cmp = $3 << 24 >> 24 == 0;
    if ($cmp) {
      $e0_0_lcssa = $2;
      label = 3;
      break;
    } else {
      $e0_014 = $2;
      label = 4;
      break;
    }
   case 5:
    $to_orig12 = $f0_011 + 132 | 0;
    $4 = HEAP32[$to_orig12 >> 2] | 0;
    $edge_type5 = $4 + 128 | 0;
    $5 = HEAP8[$edge_type5] | 0;
    $cmp7 = $5 << 24 >> 24 == 0;
    if ($cmp7) {
      $f0_0_lcssa = $4;
      label = 6;
      break;
    } else {
      $f0_011 = $4;
      label = 5;
      break;
    }
   case 6:
    $conc_opp_flag = $e0_0_lcssa + 169 | 0;
    $6 = HEAP8[$conc_opp_flag] | 0;
    $tobool = $6 << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $retval_0 = 0;
      label = 9;
      break;
    }
   case 7:
    $conc_opp_flag16 = $f0_0_lcssa + 169 | 0;
    $7 = HEAP8[$conc_opp_flag16] | 0;
    $tobool17 = $7 << 24 >> 24 == 0;
    if ($tobool17) {
      label = 8;
      break;
    } else {
      $retval_0 = 0;
      label = 9;
      break;
    }
   case 8:
    $tail = $f0_0_lcssa + 16 | 0;
    $8 = HEAP32[$tail >> 2] | 0;
    $rank = $8 + 236 | 0;
    $9 = HEAP32[$rank >> 2] | 0;
    $head = $f0_0_lcssa + 12 | 0;
    $10 = HEAP32[$head >> 2] | 0;
    $rank22 = $10 + 236 | 0;
    $11 = HEAP32[$rank22 >> 2] | 0;
    $sub = $9 - $11 | 0;
    $tail23 = $e0_0_lcssa + 16 | 0;
    $12 = HEAP32[$tail23 >> 2] | 0;
    $rank25 = $12 + 236 | 0;
    $13 = HEAP32[$rank25 >> 2] | 0;
    $head26 = $e0_0_lcssa + 12 | 0;
    $14 = HEAP32[$head26 >> 2] | 0;
    $rank28 = $14 + 236 | 0;
    $15 = HEAP32[$rank28 >> 2] | 0;
    $sub29 = $13 - $15 | 0;
    $mul = Math_imul($sub29, $sub);
    $cmp30 = ($mul | 0) > 0;
    $conv32 = $cmp30 & 1;
    $retval_0 = $conv32;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _begin_component() {
  HEAP32[(HEAP32[41878] | 0) + 220 >> 2] = 0;
  HEAP32[41654] = 0;
  return;
}
function _bothupcandidates($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  var $list = 0, $0 = 0, $1 = 0, $list4 = 0, $2 = 0, $3 = 0, $call = 0, $tobool = 0, $head = 0, $4 = 0, $head6 = 0, $5 = 0, $cmp = 0, $call8 = 0, $tobool10 = 0, $head_port = 0, $head_port13 = 0, $call14 = 0, $cmp15 = 0, $phitmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $u + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $list4 = $v + 184 | 0;
    $2 = HEAP32[$list4 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $call = _upcandidate($v) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head = $1 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $head6 = $3 + 12 | 0;
    $5 = HEAP32[$head6 >> 2] | 0;
    $cmp = ($4 | 0) == ($5 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 4:
    $call8 = _samedir($1, $3) | 0;
    $tobool10 = $call8 << 24 >> 24 == 0;
    if ($tobool10) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $head_port = $1 + 72 | 0;
    $head_port13 = $3 + 72 | 0;
    $call14 = _portcmp($head_port, $head_port13) | 0;
    $cmp15 = ($call14 | 0) == 0;
    $phitmp = $cmp15 & 1;
    $retval_0 = $phitmp;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _decompose($g, $pass) {
  $g = $g | 0;
  $pass = $pass | 0;
  var $0 = 0, $inc = 0, $cmp = 0, $_inc = 0, $size = 0, $n_nodes = 0, $1 = 0, $call = 0, $tobool14 = 0, $cmp3 = 0, $n_016_in = 0, $n_016 = 0, $u5 = 0, $clust = 0, $2 = 0, $3 = 0, $tobool6 = 0, $rank = 0, $4 = 0, $5 = 0, $rankleader = 0, $6 = 0, $arrayidx = 0, $7 = 0, $call10 = 0, $cmp11 = 0, $v_0 = 0, $mark = 0, $8 = 0, $9 = 0, $cmp19 = 0, $call23 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[41878] = $g;
    $0 = HEAP8[167968] | 0;
    $inc = $0 + 1 & 255;
    $cmp = $inc << 24 >> 24 == 0;
    $_inc = $cmp ? 1 : $inc;
    HEAP8[167968] = $_inc;
    $size = $g + 232 | 0;
    HEAP32[$size >> 2] = 0;
    $n_nodes = $g + 244 | 0;
    HEAP32[$n_nodes >> 2] = 0;
    $1 = $g;
    $call = _agfstnode($1) | 0;
    $tobool14 = ($call | 0) == 0;
    if ($tobool14) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp3 = ($pass | 0) > 0;
    $n_016_in = $call;
    label = 4;
    break;
   case 4:
    $n_016 = $n_016_in;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $u5 = $n_016_in + 24 | 0;
    $clust = $u5 + 192 | 0;
    $2 = $clust;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool6 = ($3 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $rank = $u5 + 212 | 0;
    $4 = $rank;
    $5 = HEAP32[$4 >> 2] | 0;
    $rankleader = $3 + 280 | 0;
    $6 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $6 + ($5 << 2) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $v_0 = $7;
    label = 8;
    break;
   case 7:
    $call10 = _UF_find($n_016) | 0;
    $cmp11 = ($n_016 | 0) == ($call10 | 0);
    if ($cmp11) {
      $v_0 = $n_016;
      label = 8;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $mark = $v_0 + 163 | 0;
    $8 = HEAP8[$mark] | 0;
    $9 = HEAP8[167968] | 0;
    $cmp19 = $8 << 24 >> 24 == $9 << 24 >> 24;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    _begin_component();
    _search_component($v_0);
    _end_component();
    label = 10;
    break;
   case 10:
    $call23 = _agnxtnode($1, $n_016_in) | 0;
    $tobool = ($call23 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      $n_016_in = $call23;
      label = 4;
      break;
    }
   case 11:
    return;
  }
}
function _search_component($n) {
  $n = $n | 0;
  var $vec1 = 0, $vec1_sub = 0, $out = 0, $0 = 0, $ld$0$0 = 0, $1$0 = 0, $ld$1$1 = 0, $1$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $arrayidx1 = 0, $in = 0, $2 = 0, $ld$4$0 = 0, $3$0 = 0, $ld$5$1 = 0, $3$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $arrayidx3 = 0, $flat_out = 0, $4 = 0, $ld$8$0 = 0, $5$0 = 0, $ld$9$1 = 0, $5$1 = 0, $st$10$0 = 0, $st$11$1 = 0, $arrayidx5 = 0, $flat_in = 0, $6 = 0, $ld$12$0 = 0, $7$0 = 0, $ld$13$1 = 0, $7$1 = 0, $st$14$0 = 0, $st$15$1 = 0, $list = 0, $8 = 0, $tobool = 0, $9 = 0, $10 = 0, $tobool123 = 0, $11 = 0, $12 = 0, $i_04 = 0, $head = 0, $13 = 0, $cmp14 = 0, $tail = 0, $14 = 0, $other_0 = 0, $mark = 0, $15 = 0, $16 = 0, $cmp18 = 0, $call = 0, $cmp20 = 0, $inc = 0, $arrayidx11 = 0, $17 = 0, $tobool12 = 0, $list_1 = 0, $18 = 0, $19 = 0, $tobool_1 = 0, $20 = 0, $21 = 0, $tobool123_1 = 0, $22 = 0, $23 = 0, $i_04_1 = 0, $head_1 = 0, $24 = 0, $cmp14_1 = 0, $tail_1 = 0, $25 = 0, $other_0_1 = 0, $mark_1 = 0, $26 = 0, $27 = 0, $cmp18_1 = 0, $call_1 = 0, $cmp20_1 = 0, $inc_1 = 0, $arrayidx11_1 = 0, $28 = 0, $tobool12_1 = 0, $list_2 = 0, $29 = 0, $30 = 0, $tobool_2 = 0, $31 = 0, $32 = 0, $tobool123_2 = 0, $33 = 0, $34 = 0, $i_04_2 = 0, $head_2 = 0, $35 = 0, $cmp14_2 = 0, $tail_2 = 0, $36 = 0, $other_0_2 = 0, $mark_2 = 0, $37 = 0, $38 = 0, $cmp18_2 = 0, $call_2 = 0, $cmp20_2 = 0, $inc_2 = 0, $arrayidx11_2 = 0, $39 = 0, $tobool12_2 = 0, $list_3 = 0, $40 = 0, $41 = 0, $tobool_3 = 0, $42 = 0, $43 = 0, $tobool123_3 = 0, $44 = 0, $45 = 0, $i_04_3 = 0, $head_3 = 0, $46 = 0, $cmp14_3 = 0, $tail_3 = 0, $47 = 0, $other_0_3 = 0, $mark_3 = 0, $48 = 0, $49 = 0, $cmp18_3 = 0, $call_3 = 0, $cmp20_3 = 0, $inc_3 = 0, $arrayidx11_3 = 0, $50 = 0, $tobool12_3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $vec1 = __stackBase__ | 0;
    $vec1_sub = $vec1 | 0;
    _add_to_component($n);
    $out = $n + 184 | 0;
    $0 = $out;
    $ld$0$0 = $0 | 0;
    $1$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $0 + 4 | 0;
    $1$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $vec1_sub | 0;
    HEAP32[$st$2$0 >> 2] = $1$0;
    $st$3$1 = $vec1_sub + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $1$1;
    $arrayidx1 = $vec1 + 8 | 0;
    $in = $n + 176 | 0;
    $2 = $in;
    $ld$4$0 = $2 | 0;
    $3$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $2 + 4 | 0;
    $3$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $arrayidx1 | 0;
    HEAP32[$st$6$0 >> 2] = $3$0;
    $st$7$1 = $arrayidx1 + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $3$1;
    $arrayidx3 = $vec1 + 16 | 0;
    $flat_out = $n + 192 | 0;
    $4 = $flat_out;
    $ld$8$0 = $4 | 0;
    $5$0 = HEAP32[$ld$8$0 >> 2] | 0;
    $ld$9$1 = $4 + 4 | 0;
    $5$1 = HEAP32[$ld$9$1 >> 2] | 0;
    $st$10$0 = $arrayidx3 | 0;
    HEAP32[$st$10$0 >> 2] = $5$0;
    $st$11$1 = $arrayidx3 + 4 | 0;
    HEAP32[$st$11$1 >> 2] = $5$1;
    $arrayidx5 = $vec1 + 24 | 0;
    $flat_in = $n + 200 | 0;
    $6 = $flat_in;
    $ld$12$0 = $6 | 0;
    $7$0 = HEAP32[$ld$12$0 >> 2] | 0;
    $ld$13$1 = $6 + 4 | 0;
    $7$1 = HEAP32[$ld$13$1 >> 2] | 0;
    $st$14$0 = $arrayidx5 | 0;
    HEAP32[$st$14$0 >> 2] = $7$0;
    $st$15$1 = $arrayidx5 + 4 | 0;
    HEAP32[$st$15$1 >> 2] = $7$1;
    $list = $vec1;
    $8 = HEAP32[$list >> 2] | 0;
    $tobool = ($8 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $9 = HEAP32[$list >> 2] | 0;
    $10 = HEAP32[$9 >> 2] | 0;
    $tobool123 = ($10 | 0) == 0;
    if ($tobool123) {
      label = 11;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $11 = HEAP32[$list >> 2] | 0;
    $i_04 = 0;
    $12 = $10;
    label = 5;
    break;
   case 5:
    $head = $12 + 12 | 0;
    $13 = HEAP32[$head >> 2] | 0;
    $cmp14 = ($13 | 0) == ($n | 0);
    if ($cmp14) {
      label = 6;
      break;
    } else {
      $other_0 = $13;
      label = 7;
      break;
    }
   case 6:
    $tail = $12 + 16 | 0;
    $14 = HEAP32[$tail >> 2] | 0;
    $other_0 = $14;
    label = 7;
    break;
   case 7:
    $mark = $other_0 + 163 | 0;
    $15 = HEAP8[$mark] | 0;
    $16 = HEAP8[167968] | 0;
    $cmp18 = $15 << 24 >> 24 == $16 << 24 >> 24;
    if ($cmp18) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call = _UF_find($other_0) | 0;
    $cmp20 = ($other_0 | 0) == ($call | 0);
    if ($cmp20) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    _search_component($other_0);
    label = 10;
    break;
   case 10:
    $inc = $i_04 + 1 | 0;
    $arrayidx11 = $11 + ($inc << 2) | 0;
    $17 = HEAP32[$arrayidx11 >> 2] | 0;
    $tobool12 = ($17 | 0) == 0;
    if ($tobool12) {
      label = 11;
      break;
    } else {
      $i_04 = $inc;
      $12 = $17;
      label = 5;
      break;
    }
   case 11:
    $list_1 = $vec1 + 8 | 0;
    $18 = $list_1;
    $19 = HEAP32[$18 >> 2] | 0;
    $tobool_1 = ($19 | 0) == 0;
    if ($tobool_1) {
      label = 20;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $20 = HEAP32[$18 >> 2] | 0;
    $21 = HEAP32[$20 >> 2] | 0;
    $tobool123_1 = ($21 | 0) == 0;
    if ($tobool123_1) {
      label = 20;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $22 = HEAP32[$18 >> 2] | 0;
    $i_04_1 = 0;
    $23 = $21;
    label = 14;
    break;
   case 14:
    $head_1 = $23 + 12 | 0;
    $24 = HEAP32[$head_1 >> 2] | 0;
    $cmp14_1 = ($24 | 0) == ($n | 0);
    if ($cmp14_1) {
      label = 15;
      break;
    } else {
      $other_0_1 = $24;
      label = 16;
      break;
    }
   case 15:
    $tail_1 = $23 + 16 | 0;
    $25 = HEAP32[$tail_1 >> 2] | 0;
    $other_0_1 = $25;
    label = 16;
    break;
   case 16:
    $mark_1 = $other_0_1 + 163 | 0;
    $26 = HEAP8[$mark_1] | 0;
    $27 = HEAP8[167968] | 0;
    $cmp18_1 = $26 << 24 >> 24 == $27 << 24 >> 24;
    if ($cmp18_1) {
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $call_1 = _UF_find($other_0_1) | 0;
    $cmp20_1 = ($other_0_1 | 0) == ($call_1 | 0);
    if ($cmp20_1) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    _search_component($other_0_1);
    label = 19;
    break;
   case 19:
    $inc_1 = $i_04_1 + 1 | 0;
    $arrayidx11_1 = $22 + ($inc_1 << 2) | 0;
    $28 = HEAP32[$arrayidx11_1 >> 2] | 0;
    $tobool12_1 = ($28 | 0) == 0;
    if ($tobool12_1) {
      label = 20;
      break;
    } else {
      $i_04_1 = $inc_1;
      $23 = $28;
      label = 14;
      break;
    }
   case 20:
    $list_2 = $vec1 + 16 | 0;
    $29 = $list_2;
    $30 = HEAP32[$29 >> 2] | 0;
    $tobool_2 = ($30 | 0) == 0;
    if ($tobool_2) {
      label = 29;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $31 = HEAP32[$29 >> 2] | 0;
    $32 = HEAP32[$31 >> 2] | 0;
    $tobool123_2 = ($32 | 0) == 0;
    if ($tobool123_2) {
      label = 29;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $33 = HEAP32[$29 >> 2] | 0;
    $i_04_2 = 0;
    $34 = $32;
    label = 23;
    break;
   case 23:
    $head_2 = $34 + 12 | 0;
    $35 = HEAP32[$head_2 >> 2] | 0;
    $cmp14_2 = ($35 | 0) == ($n | 0);
    if ($cmp14_2) {
      label = 24;
      break;
    } else {
      $other_0_2 = $35;
      label = 25;
      break;
    }
   case 24:
    $tail_2 = $34 + 16 | 0;
    $36 = HEAP32[$tail_2 >> 2] | 0;
    $other_0_2 = $36;
    label = 25;
    break;
   case 25:
    $mark_2 = $other_0_2 + 163 | 0;
    $37 = HEAP8[$mark_2] | 0;
    $38 = HEAP8[167968] | 0;
    $cmp18_2 = $37 << 24 >> 24 == $38 << 24 >> 24;
    if ($cmp18_2) {
      label = 28;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $call_2 = _UF_find($other_0_2) | 0;
    $cmp20_2 = ($other_0_2 | 0) == ($call_2 | 0);
    if ($cmp20_2) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    _search_component($other_0_2);
    label = 28;
    break;
   case 28:
    $inc_2 = $i_04_2 + 1 | 0;
    $arrayidx11_2 = $33 + ($inc_2 << 2) | 0;
    $39 = HEAP32[$arrayidx11_2 >> 2] | 0;
    $tobool12_2 = ($39 | 0) == 0;
    if ($tobool12_2) {
      label = 29;
      break;
    } else {
      $i_04_2 = $inc_2;
      $34 = $39;
      label = 23;
      break;
    }
   case 29:
    $list_3 = $vec1 + 24 | 0;
    $40 = $list_3;
    $41 = HEAP32[$40 >> 2] | 0;
    $tobool_3 = ($41 | 0) == 0;
    if ($tobool_3) {
      label = 38;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $42 = HEAP32[$40 >> 2] | 0;
    $43 = HEAP32[$42 >> 2] | 0;
    $tobool123_3 = ($43 | 0) == 0;
    if ($tobool123_3) {
      label = 38;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $44 = HEAP32[$40 >> 2] | 0;
    $i_04_3 = 0;
    $45 = $43;
    label = 32;
    break;
   case 32:
    $head_3 = $45 + 12 | 0;
    $46 = HEAP32[$head_3 >> 2] | 0;
    $cmp14_3 = ($46 | 0) == ($n | 0);
    if ($cmp14_3) {
      label = 33;
      break;
    } else {
      $other_0_3 = $46;
      label = 34;
      break;
    }
   case 33:
    $tail_3 = $45 + 16 | 0;
    $47 = HEAP32[$tail_3 >> 2] | 0;
    $other_0_3 = $47;
    label = 34;
    break;
   case 34:
    $mark_3 = $other_0_3 + 163 | 0;
    $48 = HEAP8[$mark_3] | 0;
    $49 = HEAP8[167968] | 0;
    $cmp18_3 = $48 << 24 >> 24 == $49 << 24 >> 24;
    if ($cmp18_3) {
      label = 37;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $call_3 = _UF_find($other_0_3) | 0;
    $cmp20_3 = ($other_0_3 | 0) == ($call_3 | 0);
    if ($cmp20_3) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    _search_component($other_0_3);
    label = 37;
    break;
   case 37:
    $inc_3 = $i_04_3 + 1 | 0;
    $arrayidx11_3 = $44 + ($inc_3 << 2) | 0;
    $50 = HEAP32[$arrayidx11_3 >> 2] | 0;
    $tobool12_3 = ($50 | 0) == 0;
    if ($tobool12_3) {
      label = 38;
      break;
    } else {
      $i_04_3 = $inc_3;
      $45 = $50;
      label = 32;
      break;
    }
   case 38:
    STACKTOP = __stackBase__;
    return;
  }
}
function _mergevirtual($g, $r, $lpos, $rpos, $dir) {
  $g = $g | 0;
  $r = $r | 0;
  $lpos = $lpos | 0;
  $rpos = $rpos | 0;
  $dir = $dir | 0;
  var $rank = 0, $0 = 0, $v = 0, $1 = 0, $arrayidx1 = 0, $2 = 0, $add = 0, $cmp69 = 0, $cmp7 = 0, $3 = 0, $list41 = 0, $4 = 0, $list13 = 0, $5 = 0, $i_156 = 0, $6 = 0, $n57 = 0, $7 = 0, $cmp8358 = 0, $i_070 = 0, $8 = 0, $v5 = 0, $9 = 0, $arrayidx6 = 0, $10 = 0, $list = 0, $11 = 0, $12 = 0, $tobool68 = 0, $list26 = 0, $list34 = 0, $13 = 0, $14 = 0, $tobool3664 = 0, $list60 = 0, $15 = 0, $16 = 0, $head17 = 0, $k_0 = 0, $arrayidx14 = 0, $17 = 0, $cond = 0, $head = 0, $18 = 0, $19 = 0, $cmp18 = 0, $inc = 0, $head22 = 0, $20 = 0, $21 = 0, $22 = 0, $call = 0, $23 = 0, $f_0_ph = 0, $24 = 0, $25 = 0, $tobool2866 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $tobool28 = 0, $31 = 0, $32 = 0, $33 = 0, $tobool = 0, $34 = 0, $35 = 0, $tail45 = 0, $k_1 = 0, $arrayidx42 = 0, $36 = 0, $cond55 = 0, $tail = 0, $37 = 0, $38 = 0, $cmp46 = 0, $inc50 = 0, $tail54 = 0, $39 = 0, $40 = 0, $41 = 0, $call55 = 0, $42 = 0, $f_1_ph = 0, $43 = 0, $44 = 0, $tobool6263 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $tobool62 = 0, $50 = 0, $51 = 0, $52 = 0, $tobool36 = 0, $size = 0, $53 = 0, $size71 = 0, $54 = 0, $add72 = 0, $cmp73 = 0, $55 = 0, $inc75 = 0, $cmp = 0, $56 = 0, $i_160 = 0, $k_259 = 0, $v89 = 0, $57 = 0, $arrayidx90 = 0, $58 = 0, $arrayidx95 = 0, $order = 0, $inc97 = 0, $i_1 = 0, $59 = 0, $n = 0, $60 = 0, $cmp83 = 0, $n_lcssa = 0, $k_2_lcssa = 0, $61 = 0, $v107 = 0, $62 = 0, $arrayidx108 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $g + 224 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $v = $0 + ($r * 44 & -1) + 4 | 0;
    $1 = HEAP32[$v >> 2] | 0;
    $arrayidx1 = $1 + ($lpos << 2) | 0;
    $2 = HEAP32[$arrayidx1 >> 2] | 0;
    $add = $lpos + 1 | 0;
    $cmp69 = ($add | 0) > ($rpos | 0);
    if ($cmp69) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp7 = ($dir | 0) == 1;
    $3 = $g;
    $list41 = $2 + 176 | 0;
    $4 = $2;
    $list13 = $2 + 184 | 0;
    $5 = $2;
    $i_070 = $add;
    label = 5;
    break;
   case 4:
    $i_156 = $rpos + 1 | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $n57 = $6 + ($r * 44 & -1) | 0;
    $7 = HEAP32[$n57 >> 2] | 0;
    $cmp8358 = ($i_156 | 0) < ($7 | 0);
    if ($cmp8358) {
      $k_259 = $add;
      $i_160 = $i_156;
      $56 = $6;
      label = 29;
      break;
    } else {
      $k_2_lcssa = $add;
      $n_lcssa = $n57;
      label = 30;
      break;
    }
   case 5:
    $8 = HEAP32[$rank >> 2] | 0;
    $v5 = $8 + ($r * 44 & -1) + 4 | 0;
    $9 = HEAP32[$v5 >> 2] | 0;
    $arrayidx6 = $9 + ($i_070 << 2) | 0;
    $10 = HEAP32[$arrayidx6 >> 2] | 0;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $list = $10 + 184 | 0;
    $11 = HEAP32[$list >> 2] | 0;
    $12 = HEAP32[$11 >> 2] | 0;
    $tobool68 = ($12 | 0) == 0;
    if ($tobool68) {
      label = 26;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $list26 = $10 + 176 | 0;
    $15 = $12;
    label = 10;
    break;
   case 8:
    $list34 = $10 + 176 | 0;
    $13 = HEAP32[$list34 >> 2] | 0;
    $14 = HEAP32[$13 >> 2] | 0;
    $tobool3664 = ($14 | 0) == 0;
    if ($tobool3664) {
      label = 26;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $list60 = $10 + 184 | 0;
    $34 = $14;
    label = 18;
    break;
   case 10:
    $16 = HEAP32[$list13 >> 2] | 0;
    $head17 = $15 + 12 | 0;
    $k_0 = 0;
    label = 11;
    break;
   case 11:
    $arrayidx14 = $16 + ($k_0 << 2) | 0;
    $17 = HEAP32[$arrayidx14 >> 2] | 0;
    $cond = ($17 | 0) == 0;
    if ($cond) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $head = $17 + 12 | 0;
    $18 = HEAP32[$head >> 2] | 0;
    $19 = HEAP32[$head17 >> 2] | 0;
    $cmp18 = ($18 | 0) == ($19 | 0);
    $inc = $k_0 + 1 | 0;
    if ($cmp18) {
      $f_0_ph = $17;
      label = 14;
      break;
    } else {
      $k_0 = $inc;
      label = 11;
      break;
    }
   case 13:
    $head22 = $15 + 12 | 0;
    $20 = HEAP32[$head22 >> 2] | 0;
    $21 = $20;
    $22 = $15;
    $call = _virtual_edge($5, $21, $22) | 0;
    $23 = $call;
    $f_0_ph = $23;
    label = 14;
    break;
   case 14:
    $24 = HEAP32[$list26 >> 2] | 0;
    $25 = HEAP32[$24 >> 2] | 0;
    $tobool2866 = ($25 | 0) == 0;
    if ($tobool2866) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $26 = $f_0_ph;
    $27 = $25;
    label = 16;
    break;
   case 16:
    $28 = $27;
    _merge_oneway($28, $26);
    _delete_fast_edge($28);
    $29 = HEAP32[$list26 >> 2] | 0;
    $30 = HEAP32[$29 >> 2] | 0;
    $tobool28 = ($30 | 0) == 0;
    if ($tobool28) {
      label = 17;
      break;
    } else {
      $27 = $30;
      label = 16;
      break;
    }
   case 17:
    $31 = $15;
    _delete_fast_edge($31);
    $32 = HEAP32[$list >> 2] | 0;
    $33 = HEAP32[$32 >> 2] | 0;
    $tobool = ($33 | 0) == 0;
    if ($tobool) {
      label = 26;
      break;
    } else {
      $15 = $33;
      label = 10;
      break;
    }
   case 18:
    $35 = HEAP32[$list41 >> 2] | 0;
    $tail45 = $34 + 16 | 0;
    $k_1 = 0;
    label = 19;
    break;
   case 19:
    $arrayidx42 = $35 + ($k_1 << 2) | 0;
    $36 = HEAP32[$arrayidx42 >> 2] | 0;
    $cond55 = ($36 | 0) == 0;
    if ($cond55) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $tail = $36 + 16 | 0;
    $37 = HEAP32[$tail >> 2] | 0;
    $38 = HEAP32[$tail45 >> 2] | 0;
    $cmp46 = ($37 | 0) == ($38 | 0);
    $inc50 = $k_1 + 1 | 0;
    if ($cmp46) {
      $f_1_ph = $36;
      label = 22;
      break;
    } else {
      $k_1 = $inc50;
      label = 19;
      break;
    }
   case 21:
    $tail54 = $34 + 16 | 0;
    $39 = HEAP32[$tail54 >> 2] | 0;
    $40 = $39;
    $41 = $34;
    $call55 = _virtual_edge($40, $4, $41) | 0;
    $42 = $call55;
    $f_1_ph = $42;
    label = 22;
    break;
   case 22:
    $43 = HEAP32[$list60 >> 2] | 0;
    $44 = HEAP32[$43 >> 2] | 0;
    $tobool6263 = ($44 | 0) == 0;
    if ($tobool6263) {
      label = 25;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $45 = $f_1_ph;
    $46 = $44;
    label = 24;
    break;
   case 24:
    $47 = $46;
    _merge_oneway($47, $45);
    _delete_fast_edge($47);
    $48 = HEAP32[$list60 >> 2] | 0;
    $49 = HEAP32[$48 >> 2] | 0;
    $tobool62 = ($49 | 0) == 0;
    if ($tobool62) {
      label = 25;
      break;
    } else {
      $46 = $49;
      label = 24;
      break;
    }
   case 25:
    $50 = $34;
    _delete_fast_edge($50);
    $51 = HEAP32[$list34 >> 2] | 0;
    $52 = HEAP32[$51 >> 2] | 0;
    $tobool36 = ($52 | 0) == 0;
    if ($tobool36) {
      label = 26;
      break;
    } else {
      $34 = $52;
      label = 18;
      break;
    }
   case 26:
    $size = $10 + 180 | 0;
    $53 = HEAP32[$size >> 2] | 0;
    $size71 = $10 + 188 | 0;
    $54 = HEAP32[$size71 >> 2] | 0;
    $add72 = -$54 | 0;
    $cmp73 = ($53 | 0) == ($add72 | 0);
    if ($cmp73) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    ___assert_func(155744, 113, 164e3, 128048);
   case 28:
    $55 = $10;
    _delete_fast_node($3, $55);
    $inc75 = $i_070 + 1 | 0;
    $cmp = ($inc75 | 0) > ($rpos | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $i_070 = $inc75;
      label = 5;
      break;
    }
   case 29:
    $v89 = $56 + ($r * 44 & -1) + 4 | 0;
    $57 = HEAP32[$v89 >> 2] | 0;
    $arrayidx90 = $57 + ($i_160 << 2) | 0;
    $58 = HEAP32[$arrayidx90 >> 2] | 0;
    $arrayidx95 = $57 + ($k_259 << 2) | 0;
    HEAP32[$arrayidx95 >> 2] = $58;
    $order = $58 + 240 | 0;
    HEAP32[$order >> 2] = $k_259;
    $inc97 = $k_259 + 1 | 0;
    $i_1 = $i_160 + 1 | 0;
    $59 = HEAP32[$rank >> 2] | 0;
    $n = $59 + ($r * 44 & -1) | 0;
    $60 = HEAP32[$n >> 2] | 0;
    $cmp83 = ($i_1 | 0) < ($60 | 0);
    if ($cmp83) {
      $k_259 = $inc97;
      $i_160 = $i_1;
      $56 = $59;
      label = 29;
      break;
    } else {
      $k_2_lcssa = $inc97;
      $n_lcssa = $n;
      label = 30;
      break;
    }
   case 30:
    HEAP32[$n_lcssa >> 2] = $k_2_lcssa;
    $61 = HEAP32[$rank >> 2] | 0;
    $v107 = $61 + ($r * 44 & -1) + 4 | 0;
    $62 = HEAP32[$v107 >> 2] | 0;
    $arrayidx108 = $62 + ($k_2_lcssa << 2) | 0;
    HEAP32[$arrayidx108 >> 2] = 0;
    return;
  }
}
function _rebuild_vlists($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp85 = 0, $conv = 0, $rankleader = 0, $r_086 = 0, $2 = 0, $arrayidx = 0, $inc = 0, $3 = 0, $conv2 = 0, $cmp = 0, $4 = 0, $call = 0, $tobool82 = 0, $n_0_in83 = 0, $n_0 = 0, $call7 = 0, $tobool980 = 0, $e_0_in81 = 0, $e_0 = 0, $rep_0 = 0, $to_virt = 0, $5 = 0, $tobool13 = 0, $head75 = 0, $6 = 0, $rank76 = 0, $7 = 0, $head20 = 0, $8 = 0, $rank2277 = 0, $9 = 0, $10 = 0, $cmp2378 = 0, $11 = 0, $head79 = 0, $12 = 0, $list = 0, $13 = 0, $14 = 0, $head = 0, $15 = 0, $rank = 0, $16 = 0, $17 = 0, $rank22 = 0, $18 = 0, $19 = 0, $cmp23 = 0, $call30 = 0, $tobool9 = 0, $call33 = 0, $tobool = 0, $20 = 0, $21 = 0, $cmp4272 = 0, $conv37 = 0, $rankleader46 = 0, $root = 0, $rank66 = 0, $name = 0, $22 = 0, $23 = 0, $n_cluster = 0, $24 = 0, $cmp13663 = 0, $clust = 0, $r_173 = 0, $25 = 0, $arrayidx47 = 0, $26 = 0, $order = 0, $27 = 0, $28 = 0, $rank50 = 0, $29 = 0, $v = 0, $30 = 0, $arrayidx52 = 0, $31 = 0, $cmp53 = 0, $32 = 0, $v68 = 0, $33 = 0, $n7366 = 0, $34 = 0, $cmp7467 = 0, $35 = 0, $maxi_070 = 0, $i_068 = 0, $v80 = 0, $36 = 0, $arrayidx81 = 0, $37 = 0, $cmp82 = 0, $node_type = 0, $38 = 0, $cmp88 = 0, $39 = 0, $call91 = 0, $tobool92 = 0, $list98 = 0, $40 = 0, $41 = 0, $e96_0 = 0, $tobool101 = 0, $to_orig = 0, $42 = 0, $tobool103 = 0, $tail = 0, $43 = 0, $44 = 0, $call110 = 0, $tobool111 = 0, $head113 = 0, $45 = 0, $46 = 0, $call114 = 0, $tobool115 = 0, $maxi_0_i_0 = 0, $maxi_1 = 0, $inc120 = 0, $47 = 0, $n73 = 0, $48 = 0, $cmp74 = 0, $maxi_0_lcssa = 0, $cmp122 = 0, $49 = 0, $call125 = 0, $maxi_0_lcssa91 = 0, $add = 0, $50 = 0, $n130 = 0, $inc132 = 0, $51 = 0, $conv41 = 0, $cmp42 = 0, $c_064 = 0, $52 = 0, $arrayidx140 = 0, $53 = 0, $inc142 = 0, $54 = 0, $cmp136 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp85 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp85) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rankleader = $g + 280 | 0;
    $r_086 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx = $2 + ($r_086 << 2) | 0;
    HEAP32[$arrayidx >> 2] = 0;
    $inc = $r_086 + 1 | 0;
    $3 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $3 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $r_086 = $inc;
      label = 4;
      break;
    }
   case 5:
    _dot_scan_ranks($g);
    $4 = $g;
    $call = _agfstnode($4) | 0;
    $tobool82 = ($call | 0) == 0;
    if ($tobool82) {
      label = 13;
      break;
    } else {
      $n_0_in83 = $call;
      label = 6;
      break;
    }
   case 6:
    $n_0 = $n_0_in83;
    _infuse($g, $n_0);
    $call7 = _agfstout($4, $n_0_in83) | 0;
    $tobool980 = ($call7 | 0) == 0;
    if ($tobool980) {
      label = 12;
      break;
    } else {
      $e_0_in81 = $call7;
      label = 7;
      break;
    }
   case 7:
    $e_0 = $e_0_in81;
    $rep_0 = $e_0;
    label = 8;
    break;
   case 8:
    $to_virt = $rep_0 + 188 | 0;
    $5 = HEAP32[$to_virt >> 2] | 0;
    $tobool13 = ($5 | 0) == 0;
    if ($tobool13) {
      label = 9;
      break;
    } else {
      $rep_0 = $5;
      label = 8;
      break;
    }
   case 9:
    $head75 = $rep_0 + 12 | 0;
    $6 = HEAP32[$head75 >> 2] | 0;
    $rank76 = $6 + 236 | 0;
    $7 = HEAP32[$rank76 >> 2] | 0;
    $head20 = $e_0_in81 + 12 | 0;
    $8 = HEAP32[$head20 >> 2] | 0;
    $rank2277 = $8 + 236 | 0;
    $9 = $rank2277;
    $10 = HEAP32[$9 >> 2] | 0;
    $cmp2378 = ($7 | 0) < ($10 | 0);
    if ($cmp2378) {
      $head79 = $head75;
      $11 = $6;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _infuse($g, $11);
    $12 = HEAP32[$head79 >> 2] | 0;
    $list = $12 + 184 | 0;
    $13 = HEAP32[$list >> 2] | 0;
    $14 = HEAP32[$13 >> 2] | 0;
    $head = $14 + 12 | 0;
    $15 = HEAP32[$head >> 2] | 0;
    $rank = $15 + 236 | 0;
    $16 = HEAP32[$rank >> 2] | 0;
    $17 = HEAP32[$head20 >> 2] | 0;
    $rank22 = $17 + 236 | 0;
    $18 = $rank22;
    $19 = HEAP32[$18 >> 2] | 0;
    $cmp23 = ($16 | 0) < ($19 | 0);
    if ($cmp23) {
      $head79 = $head;
      $11 = $15;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call30 = _agnxtout($4, $e_0_in81) | 0;
    $tobool9 = ($call30 | 0) == 0;
    if ($tobool9) {
      label = 12;
      break;
    } else {
      $e_0_in81 = $call30;
      label = 7;
      break;
    }
   case 12:
    $call33 = _agnxtnode($4, $n_0_in83) | 0;
    $tobool = ($call33 | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      $n_0_in83 = $call33;
      label = 6;
      break;
    }
   case 13:
    $20 = HEAP16[$minrank >> 1] | 0;
    $21 = HEAP16[$maxrank >> 1] | 0;
    $cmp4272 = $20 << 16 >> 16 > $21 << 16 >> 16;
    if ($cmp4272) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $conv37 = $20 << 16 >> 16;
    $rankleader46 = $g + 280 | 0;
    $root = $g + 32 | 0;
    $rank66 = $g + 224 | 0;
    $name = $g + 12 | 0;
    $22 = $g;
    $23 = $g;
    $r_173 = $conv37;
    label = 17;
    break;
   case 15:
    $n_cluster = $g + 212 | 0;
    $24 = HEAP32[$n_cluster >> 2] | 0;
    $cmp13663 = ($24 | 0) < 1;
    if ($cmp13663) {
      label = 33;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $clust = $g + 216 | 0;
    $c_064 = 1;
    label = 32;
    break;
   case 17:
    $25 = HEAP32[$rankleader46 >> 2] | 0;
    $arrayidx47 = $25 + ($r_173 << 2) | 0;
    $26 = HEAP32[$arrayidx47 >> 2] | 0;
    $order = $26 + 240 | 0;
    $27 = HEAP32[$order >> 2] | 0;
    $28 = HEAP32[$root >> 2] | 0;
    $rank50 = $28 + 224 | 0;
    $29 = HEAP32[$rank50 >> 2] | 0;
    $v = $29 + ($r_173 * 44 & -1) + 4 | 0;
    $30 = HEAP32[$v >> 2] | 0;
    $arrayidx52 = $30 + ($27 << 2) | 0;
    $31 = HEAP32[$arrayidx52 >> 2] | 0;
    $cmp53 = ($31 | 0) == ($26 | 0);
    if ($cmp53) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    _abort();
   case 19:
    $32 = HEAP32[$rank66 >> 2] | 0;
    $v68 = $32 + ($r_173 * 44 & -1) + 4 | 0;
    HEAP32[$v68 >> 2] = $arrayidx52;
    $33 = HEAP32[$rank66 >> 2] | 0;
    $n7366 = $33 + ($r_173 * 44 & -1) | 0;
    $34 = HEAP32[$n7366 >> 2] | 0;
    $cmp7467 = ($34 | 0) > 0;
    if ($cmp7467) {
      $i_068 = 0;
      $maxi_070 = -1;
      $35 = $33;
      label = 20;
      break;
    } else {
      label = 30;
      break;
    }
   case 20:
    $v80 = $35 + ($r_173 * 44 & -1) + 4 | 0;
    $36 = HEAP32[$v80 >> 2] | 0;
    $arrayidx81 = $36 + ($i_068 << 2) | 0;
    $37 = HEAP32[$arrayidx81 >> 2] | 0;
    $cmp82 = ($37 | 0) == 0;
    if ($cmp82) {
      $maxi_0_lcssa = $maxi_070;
      label = 29;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $node_type = $37 + 162 | 0;
    $38 = HEAP8[$node_type] | 0;
    $cmp88 = $38 << 24 >> 24 == 0;
    if ($cmp88) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $39 = $37 | 0;
    $call91 = _agcontains($22, $39) | 0;
    $tobool92 = ($call91 | 0) == 0;
    if ($tobool92) {
      $maxi_0_lcssa = $maxi_070;
      label = 29;
      break;
    } else {
      $maxi_1 = $i_068;
      label = 28;
      break;
    }
   case 23:
    $list98 = $37 + 176 | 0;
    $40 = HEAP32[$list98 >> 2] | 0;
    $41 = HEAP32[$40 >> 2] | 0;
    $e96_0 = $41;
    label = 24;
    break;
   case 24:
    $tobool101 = ($e96_0 | 0) == 0;
    if ($tobool101) {
      $maxi_1 = $maxi_070;
      label = 28;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $to_orig = $e96_0 + 132 | 0;
    $42 = HEAP32[$to_orig >> 2] | 0;
    $tobool103 = ($42 | 0) == 0;
    if ($tobool103) {
      label = 26;
      break;
    } else {
      $e96_0 = $42;
      label = 24;
      break;
    }
   case 26:
    $tail = $e96_0 + 16 | 0;
    $43 = HEAP32[$tail >> 2] | 0;
    $44 = $43 | 0;
    $call110 = _agcontains($23, $44) | 0;
    $tobool111 = ($call110 | 0) == 0;
    if ($tobool111) {
      $maxi_1 = $maxi_070;
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $head113 = $e96_0 + 12 | 0;
    $45 = HEAP32[$head113 >> 2] | 0;
    $46 = $45 | 0;
    $call114 = _agcontains($23, $46) | 0;
    $tobool115 = ($call114 | 0) == 0;
    $maxi_0_i_0 = $tobool115 ? $maxi_070 : $i_068;
    $maxi_1 = $maxi_0_i_0;
    label = 28;
    break;
   case 28:
    $inc120 = $i_068 + 1 | 0;
    $47 = HEAP32[$rank66 >> 2] | 0;
    $n73 = $47 + ($r_173 * 44 & -1) | 0;
    $48 = HEAP32[$n73 >> 2] | 0;
    $cmp74 = ($inc120 | 0) < ($48 | 0);
    if ($cmp74) {
      $i_068 = $inc120;
      $maxi_070 = $maxi_1;
      $35 = $47;
      label = 20;
      break;
    } else {
      $maxi_0_lcssa = $maxi_1;
      label = 29;
      break;
    }
   case 29:
    $cmp122 = ($maxi_0_lcssa | 0) == -1;
    if ($cmp122) {
      label = 30;
      break;
    } else {
      $maxi_0_lcssa91 = $maxi_0_lcssa;
      label = 31;
      break;
    }
   case 30:
    $49 = HEAP32[$name >> 2] | 0;
    $call125 = _agerr(0, 131784, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $49, HEAP32[tempInt + 8 >> 2] = $r_173, tempInt) | 0) | 0;
    $maxi_0_lcssa91 = -1;
    label = 31;
    break;
   case 31:
    $add = $maxi_0_lcssa91 + 1 | 0;
    $50 = HEAP32[$rank66 >> 2] | 0;
    $n130 = $50 + ($r_173 * 44 & -1) | 0;
    HEAP32[$n130 >> 2] = $add;
    $inc132 = $r_173 + 1 | 0;
    $51 = HEAP16[$maxrank >> 1] | 0;
    $conv41 = $51 << 16 >> 16;
    $cmp42 = ($inc132 | 0) > ($conv41 | 0);
    if ($cmp42) {
      label = 15;
      break;
    } else {
      $r_173 = $inc132;
      label = 17;
      break;
    }
   case 32:
    $52 = HEAP32[$clust >> 2] | 0;
    $arrayidx140 = $52 + ($c_064 << 2) | 0;
    $53 = HEAP32[$arrayidx140 >> 2] | 0;
    _rebuild_vlists($53);
    $inc142 = $c_064 + 1 | 0;
    $54 = HEAP32[$n_cluster >> 2] | 0;
    $cmp136 = ($inc142 | 0) > ($54 | 0);
    if ($cmp136) {
      label = 33;
      break;
    } else {
      $c_064 = $inc142;
      label = 32;
      break;
    }
   case 33:
    STACKTOP = __stackBase__;
    return;
  }
}
function _add_to_component($n) {
  $n = $n | 0;
  var $0 = 0, $n_nodes = 0, $1 = 0, $inc = 0, $2 = 0, $mark = 0, $3 = 0, $tobool = 0, $prev5 = 0, $4 = 0, $next = 0, $5 = 0, $nlist = 0, $next8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41878] | 0;
    $n_nodes = $0 + 244 | 0;
    $1 = HEAP32[$n_nodes >> 2] | 0;
    $inc = $1 + 1 | 0;
    HEAP32[$n_nodes >> 2] = $inc;
    $2 = HEAP8[167968] | 0;
    $mark = $n + 163 | 0;
    HEAP8[$mark] = $2;
    $3 = HEAP32[41654] | 0;
    $tobool = ($3 | 0) == 0;
    $prev5 = $n + 172 | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    HEAP32[$prev5 >> 2] = $3;
    $4 = HEAP32[41654] | 0;
    $next = $4 + 168 | 0;
    HEAP32[$next >> 2] = $n;
    label = 5;
    break;
   case 4:
    HEAP32[$prev5 >> 2] = 0;
    $5 = HEAP32[41878] | 0;
    $nlist = $5 + 220 | 0;
    HEAP32[$nlist >> 2] = $n;
    label = 5;
    break;
   case 5:
    HEAP32[41654] = $n;
    $next8 = $n + 168 | 0;
    HEAP32[$next8 >> 2] = 0;
    return;
  }
}
function _portcmp($p0, $p1) {
  $p0 = $p0 | 0;
  $p1 = $p1 | 0;
  var $defined = 0, $0 = 0, $cmp = 0, $defined2 = 0, $1 = 0, $tobool = 0, $cond = 0, $cmp6 = 0, $x = 0, $2 = 0.0, $x11 = 0, $3 = 0.0, $sub = 0.0, $conv12 = 0, $cmp13 = 0, $y = 0, $4 = 0.0, $y18 = 0, $5 = 0.0, $sub19 = 0.0, $conv20 = 0, $retval_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p0;
  $p0 = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  _memcpy($p0, tempParam, 40);
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  _memcpy($p1, tempParam, 40);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $defined = $p1 + 28 | 0;
    $0 = HEAP8[$defined] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    $defined2 = $p0 + 28 | 0;
    $1 = HEAP8[$defined2] | 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $tobool = $1 << 24 >> 24 != 0;
    $cond = $tobool & 1;
    $retval_0 = $cond;
    label = 7;
    break;
   case 4:
    $cmp6 = $1 << 24 >> 24 == 0;
    if ($cmp6) {
      $retval_0 = -1;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $x = $p0 | 0;
    $2 = +HEAPF64[$x >> 3];
    $x11 = $p1 | 0;
    $3 = +HEAPF64[$x11 >> 3];
    $sub = $2 - $3;
    $conv12 = ~~$sub;
    $cmp13 = ($conv12 | 0) == 0;
    if ($cmp13) {
      label = 6;
      break;
    } else {
      $retval_0 = $conv12;
      label = 7;
      break;
    }
   case 6:
    $y = $p0 + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y18 = $p1 + 8 | 0;
    $5 = +HEAPF64[$y18 >> 3];
    $sub19 = $4 - $5;
    $conv20 = ~~$sub19;
    $retval_0 = $conv20;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _end_component() {
  var $0 = 0, $size = 0, $1 = 0, $inc = 0, $2 = 0, $list = 0, $3 = 0, $tobool = 0, $4 = 0, $size8 = 0, $5 = 0, $mul = 0, $call = 0, $size11 = 0, $6 = 0, $mul12 = 0, $call13 = 0, $call_sink = 0, $7 = 0, $8 = 0, $list16 = 0, $9 = 0, $nlist = 0, $10 = 0, $list20 = 0, $11 = 0, $arrayidx = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41878] | 0;
    $size = $0 + 232 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $inc = $1 + 1 | 0;
    HEAP32[$size >> 2] = $inc;
    $2 = HEAP32[41878] | 0;
    $list = $2 + 228 | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = $3;
    $size8 = $2 + 232 | 0;
    $5 = HEAP32[$size8 >> 2] | 0;
    $mul = $5 << 2;
    $call = _grealloc($4, $mul) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $size11 = $2 + 232 | 0;
    $6 = HEAP32[$size11 >> 2] | 0;
    $mul12 = $6 << 2;
    $call13 = _gmalloc($mul12) | 0;
    $call_sink = $call13;
    label = 5;
    break;
   case 5:
    $7 = $call_sink;
    $8 = HEAP32[41878] | 0;
    $list16 = $8 + 228 | 0;
    HEAP32[$list16 >> 2] = $7;
    $9 = HEAP32[41878] | 0;
    $nlist = $9 + 220 | 0;
    $10 = HEAP32[$nlist >> 2] | 0;
    $list20 = $9 + 228 | 0;
    $11 = HEAP32[$list20 >> 2] | 0;
    $arrayidx = $11 + ($1 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $10;
    return;
  }
}
function _dot_init_node_edge($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool17 = 0, $n_0_in18 = 0, $n_0 = 0, $call1 = 0, $tobool = 0, $call2 = 0, $tobool415 = 0, $n_1_in16 = 0, $call6 = 0, $tobool813 = 0, $e_0_in14 = 0, $e_0 = 0, $call11 = 0, $tobool8 = 0, $call14 = 0, $tobool4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool17 = ($call | 0) == 0;
    if ($tobool17) {
      label = 4;
      break;
    } else {
      $n_0_in18 = $call;
      label = 3;
      break;
    }
   case 3:
    $n_0 = $n_0_in18;
    _dot_init_node($n_0);
    $call1 = _agnxtnode($0, $n_0_in18) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_0_in18 = $call1;
      label = 3;
      break;
    }
   case 4:
    $call2 = _agfstnode($0) | 0;
    $tobool415 = ($call2 | 0) == 0;
    if ($tobool415) {
      label = 8;
      break;
    } else {
      $n_1_in16 = $call2;
      label = 5;
      break;
    }
   case 5:
    $call6 = _agfstout($0, $n_1_in16) | 0;
    $tobool813 = ($call6 | 0) == 0;
    if ($tobool813) {
      label = 7;
      break;
    } else {
      $e_0_in14 = $call6;
      label = 6;
      break;
    }
   case 6:
    $e_0 = $e_0_in14;
    _dot_init_edge($e_0);
    $call11 = _agnxtout($0, $e_0_in14) | 0;
    $tobool8 = ($call11 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      $e_0_in14 = $call11;
      label = 6;
      break;
    }
   case 7:
    $call14 = _agnxtnode($0, $n_1_in16) | 0;
    $tobool4 = ($call14 | 0) == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      $n_1_in16 = $call14;
      label = 5;
      break;
    }
   case 8:
    return;
  }
}
function _dot_init_node($n) {
  $n = $n | 0;
  var $0 = 0;
  $0 = $n;
  _common_init_node($0);
  _gv_nodesize($0, HEAP32[(HEAP32[$n + 20 >> 2] | 0) + 156 >> 2] & 1);
  HEAP32[$n + 180 >> 2] = 0;
  HEAP32[$n + 176 >> 2] = _zmalloc(20) | 0;
  HEAP32[$n + 188 >> 2] = 0;
  HEAP32[$n + 184 >> 2] = _zmalloc(20) | 0;
  HEAP32[$n + 204 >> 2] = 0;
  HEAP32[$n + 200 >> 2] = _zmalloc(12) | 0;
  HEAP32[$n + 196 >> 2] = 0;
  HEAP32[$n + 192 >> 2] = _zmalloc(12) | 0;
  HEAP32[$n + 212 >> 2] = 0;
  HEAP32[$n + 208 >> 2] = _zmalloc(12) | 0;
  HEAP32[$n + 220 >> 2] = 1;
  return;
}
function _dot_init_edge($e) {
  $e = $e | 0;
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $call1 = 0.0, $conv = 0.0, $weight = 0, $tail = 0, $3 = 0, $4 = 0, $5 = 0, $call2 = 0, $head = 0, $6 = 0, $7 = 0, $call3 = 0, $xpenalty = 0, $count = 0, $8 = 0, $tobool = 0, $cmp = 0, $or_cond = 0, $9 = 0.0, $mul = 0.0, $call12 = 0, $tobool13 = 0, $10 = 0, $call20 = 0, $conv21 = 0, $showboxes = 0, $11 = 0, $call23 = 0, $conv24 = 0, $minlen = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $e;
    $call = _common_init_edge($0) | 0;
    $1 = $e | 0;
    $2 = HEAP32[41894] | 0;
    $call1 = +_late_double($1, $2, 1.0, 0.0);
    $conv = $call1;
    $weight = $e + 172 | 0;
    HEAPF32[$weight >> 2] = $conv;
    $tail = $e + 16 | 0;
    $3 = HEAP32[$tail >> 2] | 0;
    $4 = $3 | 0;
    $5 = HEAP32[41594] | 0;
    $call2 = _late_string($4, $5, 107672) | 0;
    $head = $e + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $7 = $6 | 0;
    $call3 = _late_string($7, $5, 107672) | 0;
    $xpenalty = $e + 170 | 0;
    HEAP16[$xpenalty >> 1] = 1;
    $count = $e + 184 | 0;
    HEAP16[$count >> 1] = 1;
    $8 = HEAP8[$call2] | 0;
    $tobool = $8 << 24 >> 24 != 0;
    $cmp = ($call2 | 0) == ($call3 | 0);
    $or_cond = $tobool & $cmp;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP16[$xpenalty >> 1] = 1e3;
    $9 = +HEAPF32[$weight >> 2];
    $mul = $9 * 100.0;
    HEAPF32[$weight >> 2] = $mul;
    label = 4;
    break;
   case 4:
    $call12 = _nonconstraint_edge($0) | 0;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP16[$xpenalty >> 1] = 0;
    HEAPF32[$weight >> 2] = 0.0;
    label = 6;
    break;
   case 6:
    $10 = HEAP32[41906] | 0;
    $call20 = _late_int($1, $10, 0, 0) | 0;
    $conv21 = $call20 & 255;
    $showboxes = $e + 168 | 0;
    HEAP8[$showboxes] = $conv21;
    $11 = HEAP32[41918] | 0;
    $call23 = _late_int($1, $11, 1, 0) | 0;
    $conv24 = $call23 & 65535;
    $minlen = $e + 186 | 0;
    HEAP16[$minlen >> 1] = $conv24;
    return;
  }
}
function _dot_cleanup($g) {
  $g = $g | 0;
  var $nlist = 0, $0 = 0, $1 = 0, $call = 0, $tobool13 = 0, $n_015_in = 0, $n_015 = 0, $call1 = 0, $tobool310 = 0, $e_0_in11 = 0, $2 = 0, $call5 = 0, $tobool3 = 0, $call7 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $0 = HEAP32[$nlist >> 2] | 0;
    _free_virtual_node_list($0);
    $1 = $g;
    $call = _agfstnode($1) | 0;
    $tobool13 = ($call | 0) == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      $n_015_in = $call;
      label = 3;
      break;
    }
   case 3:
    $n_015 = $n_015_in;
    $call1 = _agfstout($1, $n_015_in) | 0;
    $tobool310 = ($call1 | 0) == 0;
    if ($tobool310) {
      label = 5;
      break;
    } else {
      $e_0_in11 = $call1;
      label = 4;
      break;
    }
   case 4:
    $2 = $e_0_in11;
    _gv_cleanup_edge($2);
    $call5 = _agnxtout($1, $e_0_in11) | 0;
    $tobool3 = ($call5 | 0) == 0;
    if ($tobool3) {
      label = 5;
      break;
    } else {
      $e_0_in11 = $call5;
      label = 4;
      break;
    }
   case 5:
    _dot_cleanup_node($n_015);
    $call7 = _agnxtnode($1, $n_015_in) | 0;
    $tobool = ($call7 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_015_in = $call7;
      label = 3;
      break;
    }
   case 6:
    _dot_cleanup_graph($g);
    return;
  }
}
function _free_virtual_node_list($vn) {
  $vn = $vn | 0;
  var $tobool9 = 0, $vn_addr_010 = 0, $next = 0, $0 = 0, $node_type = 0, $1 = 0, $cmp = 0, $list = 0, $2 = 0, $tobool4 = 0, $3 = 0, $list11 = 0, $4 = 0, $tobool12 = 0, $5 = 0, $6 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool9 = ($vn | 0) == 0;
    if ($tobool9) {
      label = 10;
      break;
    } else {
      $vn_addr_010 = $vn;
      label = 3;
      break;
    }
   case 3:
    $next = $vn_addr_010 + 168 | 0;
    $0 = HEAP32[$next >> 2] | 0;
    _free_virtual_edge_list($vn_addr_010);
    $node_type = $vn_addr_010 + 162 | 0;
    $1 = HEAP8[$node_type] | 0;
    $cmp = $1 << 24 >> 24 == 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 9;
      break;
    }
   case 4:
    $list = $vn_addr_010 + 184 | 0;
    $2 = HEAP32[$list >> 2] | 0;
    $tobool4 = ($2 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = $2;
    _free($3);
    label = 6;
    break;
   case 6:
    $list11 = $vn_addr_010 + 176 | 0;
    $4 = HEAP32[$list11 >> 2] | 0;
    $tobool12 = ($4 | 0) == 0;
    if ($tobool12) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $5 = $4;
    _free($5);
    label = 8;
    break;
   case 8:
    $6 = $vn_addr_010 | 0;
    _free($6);
    label = 9;
    break;
   case 9:
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      $vn_addr_010 = $0;
      label = 3;
      break;
    }
   case 10:
    return;
  }
}
function _dot_cleanup_node($n) {
  $n = $n | 0;
  var $u = 0, $list = 0, $0 = 0, $tobool = 0, $1 = 0, $list6 = 0, $2 = 0, $tobool7 = 0, $3 = 0, $list16 = 0, $4 = 0, $tobool17 = 0, $5 = 0, $list26 = 0, $6 = 0, $tobool27 = 0, $7 = 0, $list36 = 0, $8 = 0, $tobool37 = 0, $9 = 0, $label = 0, $10 = 0, $shape = 0, $11 = 0, $tobool46 = 0, $fns = 0, $12 = 0, $freefn = 0, $13 = 0, $14 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = $n + 24 | 0;
    $list = $n + 176 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $0;
    _free($1);
    label = 4;
    break;
   case 4:
    $list6 = $n + 184 | 0;
    $2 = HEAP32[$list6 >> 2] | 0;
    $tobool7 = ($2 | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = $2;
    _free($3);
    label = 6;
    break;
   case 6:
    $list16 = $n + 192 | 0;
    $4 = HEAP32[$list16 >> 2] | 0;
    $tobool17 = ($4 | 0) == 0;
    if ($tobool17) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $5 = $4;
    _free($5);
    label = 8;
    break;
   case 8:
    $list26 = $n + 200 | 0;
    $6 = HEAP32[$list26 >> 2] | 0;
    $tobool27 = ($6 | 0) == 0;
    if ($tobool27) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $7 = $6;
    _free($7);
    label = 10;
    break;
   case 10:
    $list36 = $n + 208 | 0;
    $8 = HEAP32[$list36 >> 2] | 0;
    $tobool37 = ($8 | 0) == 0;
    if ($tobool37) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $9 = $8;
    _free($9);
    label = 12;
    break;
   case 12:
    $label = $n + 120 | 0;
    $10 = HEAP32[$label >> 2] | 0;
    _free_label($10);
    $shape = $u | 0;
    $11 = HEAP32[$shape >> 2] | 0;
    $tobool46 = ($11 | 0) == 0;
    if ($tobool46) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $fns = $11 + 4 | 0;
    $12 = HEAP32[$fns >> 2] | 0;
    $freefn = $12 + 4 | 0;
    $13 = HEAP32[$freefn >> 2] | 0;
    FUNCTION_TABLE_vi[$13 & 1023]($n);
    label = 14;
    break;
   case 14:
    $14 = $u;
    _memset($14 | 0, 0, 280);
    return;
  }
}
function _dot_cleanup_graph($g) {
  $g = $g | 0;
  var $u = 0, $n_cluster = 0, $0 = 0, $cmp25 = 0, $clust5 = 0, $1 = 0, $2 = 0, $c_026 = 0, $arrayidx = 0, $3 = 0, $cluster_was_collapsed = 0, $inc = 0, $4 = 0, $cmp = 0, $5 = 0, $_lcssa = 0, $tobool = 0, $6 = 0, $rankleader = 0, $7 = 0, $tobool9 = 0, $8 = 0, $list = 0, $9 = 0, $tobool15 = 0, $10 = 0, $rank = 0, $11 = 0, $tobool22 = 0, $minrank = 0, $12 = 0, $maxrank = 0, $13 = 0, $cmp2823 = 0, $conv = 0, $i_024 = 0, $14 = 0, $av = 0, $15 = 0, $16 = 0, $inc35 = 0, $17 = 0, $conv27 = 0, $cmp28 = 0, $_pr = 0, $18 = 0, $cmp40 = 0, $19 = 0, $add_ptr = 0, $20 = 0, $21 = 0, $root = 0, $22 = 0, $cmp49 = 0, $23 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $u = $g + 48 | 0;
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp25 = ($0 | 0) < 1;
    $clust5 = $g + 216 | 0;
    $1 = HEAP32[$clust5 >> 2] | 0;
    if ($cmp25) {
      $_lcssa = $1;
      label = 4;
      break;
    } else {
      $c_026 = 1;
      $2 = $1;
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $2 + ($c_026 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $cluster_was_collapsed = $3 + 254 | 0;
    HEAP8[$cluster_was_collapsed] = 0;
    _dot_cleanup($3);
    $inc = $c_026 + 1 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($4 | 0);
    $5 = HEAP32[$clust5 >> 2] | 0;
    if ($cmp) {
      $_lcssa = $5;
      label = 4;
      break;
    } else {
      $c_026 = $inc;
      $2 = $5;
      label = 3;
      break;
    }
   case 4:
    $tobool = ($_lcssa | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $6 = $_lcssa;
    _free($6);
    label = 6;
    break;
   case 6:
    $rankleader = $g + 280 | 0;
    $7 = HEAP32[$rankleader >> 2] | 0;
    $tobool9 = ($7 | 0) == 0;
    if ($tobool9) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $8 = $7;
    _free($8);
    label = 8;
    break;
   case 8:
    $list = $g + 228 | 0;
    $9 = HEAP32[$list >> 2] | 0;
    $tobool15 = ($9 | 0) == 0;
    if ($tobool15) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $10 = $9;
    _free($10);
    label = 10;
    break;
   case 10:
    $rank = $g + 224 | 0;
    $11 = HEAP32[$rank >> 2] | 0;
    $tobool22 = ($11 | 0) == 0;
    if ($tobool22) {
      label = 18;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $minrank = $g + 248 | 0;
    $12 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $13 = HEAP16[$maxrank >> 1] | 0;
    $cmp2823 = $12 << 16 >> 16 > $13 << 16 >> 16;
    if ($cmp2823) {
      $18 = $12;
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $conv = $12 << 16 >> 16;
    $i_024 = $conv;
    label = 13;
    break;
   case 13:
    $14 = HEAP32[$rank >> 2] | 0;
    $av = $14 + ($i_024 * 44 & -1) + 12 | 0;
    $15 = HEAP32[$av >> 2] | 0;
    $16 = $15;
    _free($16);
    $inc35 = $i_024 + 1 | 0;
    $17 = HEAP16[$maxrank >> 1] | 0;
    $conv27 = $17 << 16 >> 16;
    $cmp28 = ($inc35 | 0) > ($conv27 | 0);
    if ($cmp28) {
      label = 14;
      break;
    } else {
      $i_024 = $inc35;
      label = 13;
      break;
    }
   case 14:
    $_pr = HEAP16[$minrank >> 1] | 0;
    $18 = $_pr;
    label = 15;
    break;
   case 15:
    $cmp40 = $18 << 16 >> 16 == -1;
    $19 = HEAP32[$rank >> 2] | 0;
    if ($cmp40) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $add_ptr = $19 - 44 | 0;
    $20 = $add_ptr;
    _free($20);
    label = 18;
    break;
   case 17:
    $21 = $19;
    _free($21);
    label = 18;
    break;
   case 18:
    $root = $g + 32 | 0;
    $22 = HEAP32[$root >> 2] | 0;
    $cmp49 = ($22 | 0) == ($g | 0);
    if ($cmp49) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $23 = $u;
    _memset($23 | 0, 0, 248);
    label = 20;
    break;
   case 20:
    return;
  }
}
function _dot_layout($g) {
  $g = $g | 0;
  var $aspect = 0, $0 = 0, $call = 0, $1 = 0, $badGraph = 0, $nPasses = 0, $nextIter2 = 0, $nextIter = 0, $asp_0 = 0, $2 = 0, $tobool = 0, $call1 = 0, $asp_1 = 0, $cmp = 0, $conv = 0, $3 = 0, $dec = 0, $4 = 0, $tobool3 = 0, $tobool5 = 0, $or_cond = 0, $5 = 0, $call6 = 0, $call7 = 0, $tobool8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $aspect = __stackBase__ | 0;
    $0 = $g;
    _setEdgeType($0, 8);
    $call = _setAspect($g, $aspect) | 0;
    _dot_init_node_edge($g);
    $1 = $g;
    $badGraph = $aspect + 32 | 0;
    $nPasses = $aspect + 28 | 0;
    $nextIter2 = $aspect + 24 | 0;
    $nextIter = $aspect + 24 | 0;
    $asp_0 = $call;
    label = 3;
    break;
   case 3:
    _dot_rank($1, $asp_0);
    $2 = HEAP32[$badGraph >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      $asp_1 = $asp_0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call1 = _agerr(0, 125216, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    HEAP32[$nextIter >> 2] = 0;
    $asp_1 = 0;
    label = 5;
    break;
   case 5:
    $cmp = ($asp_1 | 0) != 0;
    $conv = $cmp & 1;
    _dot_mincross($0, $conv);
    _dot_position($0, $asp_1);
    $3 = HEAP32[$nPasses >> 2] | 0;
    $dec = $3 - 1 | 0;
    HEAP32[$nPasses >> 2] = $dec;
    $4 = HEAP32[$nextIter2 >> 2] | 0;
    $tobool3 = ($4 | 0) == 0;
    $tobool5 = ($dec | 0) == 0;
    $or_cond = $tobool3 | $tobool5;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      $asp_0 = $asp_1;
      label = 3;
      break;
    }
   case 6:
    _dot_sameports($g);
    _dot_splines($g);
    $5 = $g | 0;
    $call6 = _agget($5, 154768) | 0;
    $call7 = _mapbool($call6) | 0;
    $tobool8 = $call7 << 24 >> 24 == 0;
    if ($tobool8) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _dot_compoundEdges($g);
    label = 8;
    break;
   case 8:
    _dotneato_postprocess($0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _setAspect($g, $adata) {
  $g = $g | 0;
  $adata = $adata | 0;
  var $rv = 0, $passes = 0, $0 = 0, $call = 0, $tobool = 0, $call1 = 0, $cmp = 0, $nextIter = 0, $badGraph = 0, $1 = 0.0, $cmp2 = 0, $cmp4 = 0, $2 = 0.0, $targetAR = 0, $nextIter8 = 0, $3 = 0, $nPasses = 0, $badGraph9 = 0, $4 = 0, $tobool10 = 0, $5 = 0, $6 = 0.0, $call13 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rv = __stackBase__ | 0;
    $passes = __stackBase__ + 8 | 0;
    HEAP32[$passes >> 2] = 5;
    $0 = $g | 0;
    $call = _agget($0, 127136) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _sscanf($call | 0, 117384, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $rv, HEAP32[tempInt + 8 >> 2] = $passes, tempInt) | 0) | 0;
    $cmp = ($call1 | 0) < 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $nextIter = $adata + 24 | 0;
    HEAP32[$nextIter >> 2] = 0;
    $badGraph = $adata + 32 | 0;
    HEAP32[$badGraph >> 2] = 0;
    $retval_0 = 0;
    label = 11;
    break;
   case 5:
    $1 = +HEAPF64[$rv >> 3];
    $cmp2 = $1 < 1.0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAPF64[$rv >> 3] = 1.0;
    label = 9;
    break;
   case 7:
    $cmp4 = $1 > 20.0;
    if ($cmp4) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAPF64[$rv >> 3] = 20.0;
    label = 9;
    break;
   case 9:
    $2 = +HEAPF64[$rv >> 3];
    $targetAR = $adata | 0;
    HEAPF64[$targetAR >> 3] = $2;
    $nextIter8 = $adata + 24 | 0;
    HEAP32[$nextIter8 >> 2] = -1;
    $3 = HEAP32[$passes >> 2] | 0;
    $nPasses = $adata + 28 | 0;
    HEAP32[$nPasses >> 2] = $3;
    $badGraph9 = $adata + 32 | 0;
    HEAP32[$badGraph9 >> 2] = 0;
    $4 = HEAP8[164912] | 0;
    $tobool10 = $4 << 24 >> 24 == 0;
    if ($tobool10) {
      $retval_0 = $adata;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $5 = HEAP32[_stderr >> 2] | 0;
    $6 = +HEAPF64[$targetAR >> 3];
    $call13 = _fprintf($5 | 0, 112080, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $6, tempInt) | 0) | 0;
    $retval_0 = $adata;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _free_virtual_edge_list($n) {
  $n = $n | 0;
  var $size = 0, $0 = 0, $cmp16 = 0, $list = 0, $i_017_in = 0, $i_017 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $3 = 0, $4 = 0, $cmp = 0, $size4 = 0, $5 = 0, $cmp713 = 0, $list11 = 0, $i_114_in = 0, $i_114 = 0, $6 = 0, $arrayidx12 = 0, $7 = 0, $8 = 0, $9 = 0, $cmp7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $n + 180 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp16 = ($0 | 0) > 0;
    if ($cmp16) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $list = $n + 176 | 0;
    $i_017_in = $0;
    label = 4;
    break;
   case 4:
    $i_017 = $i_017_in - 1 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_017 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $3 = $2;
    _delete_fast_edge($3);
    $4 = $2 | 0;
    _free($4);
    $cmp = ($i_017 | 0) > 0;
    if ($cmp) {
      $i_017_in = $i_017;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $size4 = $n + 188 | 0;
    $5 = HEAP32[$size4 >> 2] | 0;
    $cmp713 = ($5 | 0) > 0;
    if ($cmp713) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $list11 = $n + 184 | 0;
    $i_114_in = $5;
    label = 7;
    break;
   case 7:
    $i_114 = $i_114_in - 1 | 0;
    $6 = HEAP32[$list11 >> 2] | 0;
    $arrayidx12 = $6 + ($i_114 << 2) | 0;
    $7 = HEAP32[$arrayidx12 >> 2] | 0;
    $8 = $7;
    _delete_fast_edge($8);
    $9 = $7 | 0;
    _free($9);
    $cmp7 = ($i_114 | 0) > 0;
    if ($cmp7) {
      $i_114_in = $i_114;
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    return;
  }
}
function _dot_splines($g) {
  $g = $g | 0;
  __dot_splines($g, 1);
  return;
}
function _setflags($e, $hint1, $hint2, $f3) {
  $e = $e | 0;
  $hint1 = $hint1 | 0;
  $hint2 = $hint2 | 0;
  $f3 = $f3 | 0;
  var $cmp = 0, $tail = 0, $0 = 0, $head = 0, $1 = 0, $cmp1 = 0, $defined = 0, $2 = 0, $tobool = 0, $defined4 = 0, $3 = 0, $tobool6 = 0, $_14 = 0, $rank = 0, $4 = 0, $rank14 = 0, $5 = 0, $cmp15 = 0, $_ = 0, $f1_0 = 0, $cmp22 = 0, $tail29 = 0, $6 = 0, $rank31 = 0, $7 = 0, $head32 = 0, $8 = 0, $rank34 = 0, $9 = 0, $cmp35 = 0, $cond = 0, $tail41 = 0, $10 = 0, $order = 0, $11 = 0, $head43 = 0, $12 = 0, $order45 = 0, $13 = 0, $cmp46 = 0, $cond48 = 0, $f2_0 = 0, $or = 0, $or53 = 0, $tree_index = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($hint1 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $f1_0 = $hint1;
      label = 7;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $cmp1 = ($0 | 0) == ($1 | 0);
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $defined = $e + 60 | 0;
    $2 = HEAP8[$defined] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $f1_0 = 4;
      label = 7;
      break;
    }
   case 5:
    $defined4 = $e + 100 | 0;
    $3 = HEAP8[$defined4] | 0;
    $tobool6 = $3 << 24 >> 24 == 0;
    $_14 = $tobool6 ? 8 : 4;
    $f1_0 = $_14;
    label = 7;
    break;
   case 6:
    $rank = $0 + 236 | 0;
    $4 = HEAP32[$rank >> 2] | 0;
    $rank14 = $1 + 236 | 0;
    $5 = HEAP32[$rank14 >> 2] | 0;
    $cmp15 = ($4 | 0) == ($5 | 0);
    $_ = $cmp15 ? 2 : 1;
    $f1_0 = $_;
    label = 7;
    break;
   case 7:
    $cmp22 = ($hint2 | 0) == 0;
    if ($cmp22) {
      label = 8;
      break;
    } else {
      $f2_0 = $hint2;
      label = 11;
      break;
    }
   case 8:
    if (($f1_0 | 0) == 1) {
      label = 9;
      break;
    } else if (($f1_0 | 0) == 2) {
      label = 10;
      break;
    } else {
      $f2_0 = 16;
      label = 11;
      break;
    }
   case 9:
    $tail29 = $e + 16 | 0;
    $6 = HEAP32[$tail29 >> 2] | 0;
    $rank31 = $6 + 236 | 0;
    $7 = HEAP32[$rank31 >> 2] | 0;
    $head32 = $e + 12 | 0;
    $8 = HEAP32[$head32 >> 2] | 0;
    $rank34 = $8 + 236 | 0;
    $9 = HEAP32[$rank34 >> 2] | 0;
    $cmp35 = ($7 | 0) < ($9 | 0);
    $cond = $cmp35 ? 16 : 32;
    $f2_0 = $cond;
    label = 11;
    break;
   case 10:
    $tail41 = $e + 16 | 0;
    $10 = HEAP32[$tail41 >> 2] | 0;
    $order = $10 + 240 | 0;
    $11 = HEAP32[$order >> 2] | 0;
    $head43 = $e + 12 | 0;
    $12 = HEAP32[$head43 >> 2] | 0;
    $order45 = $12 + 240 | 0;
    $13 = HEAP32[$order45 >> 2] | 0;
    $cmp46 = ($11 | 0) < ($13 | 0);
    $cond48 = $cmp46 ? 16 : 32;
    $f2_0 = $cond48;
    label = 11;
    break;
   case 11:
    $or = $f1_0 | $f3;
    $or53 = $or | $f2_0;
    $tree_index = $e + 180 | 0;
    HEAP32[$tree_index >> 2] = $or53;
    return;
  }
}
function __dot_splines($g, $normalize) {
  $g = $g | 0;
  $normalize = $normalize | 0;
  var $fwdedgea = 0, $fwdedgeb = 0, $sd = 0, $flags = 0, $0 = 0, $conv = 0, $and = 0, $cmp = 0, $1 = 0, $call = 0, $2 = 0, $nodesep = 0, $3 = 0, $div = 0, $Splinesep = 0, $4 = 0, $Multisep = 0, $call5 = 0, $5 = 0, $RightBound = 0, $LeftBound = 0, $minrank = 0, $6 = 0, $conv7 = 0, $maxrank = 0, $7 = 0, $cmp10272 = 0, $rank = 0, $i_0276 = 0, $n_nodes_0275 = 0, $n_edges_0274 = 0, $edges_0273 = 0, $8 = 0, $n13 = 0, $9 = 0, $add = 0, $v = 0, $10 = 0, $11 = 0, $tobool = 0, $12 = 0, $conv20 = 0.0, $x = 0, $13 = 0.0, $lw = 0, $14 = 0.0, $sub = 0.0, $cmp23 = 0, $conv20_sub = 0.0, $conv33 = 0, $15 = 0, $n39 = 0, $16 = 0, $tobool40 = 0, $sub45 = 0, $v49 = 0, $17 = 0, $arrayidx50 = 0, $18 = 0, $tobool51 = 0, $19 = 0, $conv54 = 0.0, $x57 = 0, $20 = 0.0, $rw = 0, $21 = 0.0, $add59 = 0.0, $cmp60 = 0, $conv54_add59 = 0.0, $conv74 = 0, $22 = 0, $sub78 = 0, $23 = 0, $add80 = 0, $24 = 0, $n85259 = 0, $25 = 0, $cmp86260 = 0, $26 = 0, $j_0263 = 0, $n_edges_1262 = 0, $edges_1261 = 0, $v92 = 0, $27 = 0, $arrayidx93 = 0, $28 = 0, $alg = 0, $29 = 0, $tobool95 = 0, $label = 0, $30 = 0, $31 = 0, $tobool100 = 0, $pos = 0, $coord107 = 0, $32 = 0, $33 = 0, $34 = 0, $set = 0, $node_type = 0, $35 = 0, $cmp113 = 0, $36 = 0, $call116 = 0, $cmp118 = 0, $list = 0, $37 = 0, $38 = 0, $tobool125237 = 0, $39 = 0, $k_0240 = 0, $n_edges_2239 = 0, $edges_2238 = 0, $edge_type = 0, $40 = 0, $inc = 0, $arrayidx138 = 0, $rem213 = 0, $cmp139 = 0, $tobool142 = 0, $41 = 0, $add144 = 0, $mul = 0, $call145 = 0, $add147 = 0, $mul148 = 0, $call149 = 0, $call145_sink = 0, $42 = 0, $edges_3 = 0, $n_edges_3 = 0, $inc153 = 0, $43 = 0, $arrayidx124 = 0, $44 = 0, $tobool125 = 0, $n_edges_2_lcssa = 0, $edges_2_lcssa = 0, $list155 = 0, $45 = 0, $tobool156 = 0, $46 = 0, $47 = 0, $tobool163244 = 0, $48 = 0, $k_1247 = 0, $n_edges_4246 = 0, $edges_4245 = 0, $inc165 = 0, $arrayidx166 = 0, $rem167212 = 0, $cmp168 = 0, $tobool171 = 0, $49 = 0, $add173 = 0, $mul174 = 0, $call175 = 0, $add177 = 0, $mul178 = 0, $call179 = 0, $call175_sink = 0, $50 = 0, $edges_5 = 0, $inc184 = 0, $51 = 0, $arrayidx162 = 0, $52 = 0, $tobool163 = 0, $edges_6 = 0, $n_edges_5 = 0, $list188 = 0, $53 = 0, $tobool189 = 0, $54 = 0, $cmp194 = 0, $rw198 = 0, $55 = 0.0, $mval = 0, $56 = 0, $conv200 = 0.0, $conv203 = 0, $57 = 0, $58 = 0, $tobool212251 = 0, $59 = 0, $k_2254 = 0, $n_edges_6253 = 0, $edges_7252 = 0, $inc214 = 0, $arrayidx215 = 0, $rem216211 = 0, $cmp217 = 0, $tobool220 = 0, $60 = 0, $add222 = 0, $mul223 = 0, $call224 = 0, $add226 = 0, $mul227 = 0, $call228 = 0, $call224_sink = 0, $61 = 0, $edges_8 = 0, $inc233 = 0, $62 = 0, $arrayidx211 = 0, $63 = 0, $tobool212 = 0, $edges_9 = 0, $n_edges_7 = 0, $inc237 = 0, $64 = 0, $n85 = 0, $65 = 0, $cmp86 = 0, $n_edges_1_lcssa = 0, $edges_1_lcssa = 0, $inc240 = 0, $66 = 0, $conv9 = 0, $cmp10 = 0, $phitmp = 0, $phitmp283 = 0, $i_0_lcssa = 0, $n_nodes_0_lcssa = 0, $n_edges_0_lcssa = 0, $edges_0_lcssa = 0, $67 = 0, $call245 = 0, $68 = 0, $boxes = 0, $69 = 0, $mul246 = 0, $call247 = 0, $70 = 0, $Rank_box = 0, $cmp248 = 0, $cmp271231 = 0, $rank424 = 0, $71 = 0, $72 = 0, $rank450 = 0, $rank463 = 0, $73 = 0, $tail345 = 0, $head347 = 0, $tail_port349 = 0, $74 = 0, $head_port353 = 0, $75 = 0, $edge_type357 = 0, $to_orig359 = 0, $76 = 0, $tail = 0, $head295 = 0, $tail_port297 = 0, $77 = 0, $head_port301 = 0, $78 = 0, $edge_type305 = 0, $to_orig = 0, $nlist = 0, $n_0233 = 0, $tobool253234 = 0, $n_0235 = 0, $node_type256 = 0, $79 = 0, $cmp258 = 0, $label262 = 0, $80 = 0, $tobool263 = 0, $next = 0, $n_0 = 0, $tobool253 = 0, $i_1232 = 0, $arrayidx275 = 0, $81 = 0, $call276 = 0, $defined = 0, $82 = 0, $tobool279 = 0, $defined282 = 0, $83 = 0, $tobool284 = 0, $call276_ = 0, $cond288 = 0, $tree_index = 0, $84 = 0, $and290 = 0, $tobool291 = 0, $85 = 0, $head = 0, $86 = 0, $tail294 = 0, $87 = 0, $head_port299 = 0, $88 = 0, $tail_port303 = 0, $89 = 0, $ea_0 = 0, $head_port370 = 0, $label384 = 0, $i_2223 = 0, $cmp309224 = 0, $adjacent = 0, $tail_port362 = 0, $tree_index378 = 0, $i_2227 = 0, $cnt_0225 = 0, $arrayidx312 = 0, $90 = 0, $call313 = 0, $cmp314 = 0, $91 = 0, $tobool319 = 0, $defined324 = 0, $92 = 0, $tobool326 = 0, $defined330 = 0, $93 = 0, $tobool332 = 0, $call313_ = 0, $cond336 = 0, $tree_index338 = 0, $94 = 0, $and339 = 0, $tobool340 = 0, $95 = 0, $head344 = 0, $96 = 0, $tail346 = 0, $97 = 0, $head_port351 = 0, $98 = 0, $tail_port355 = 0, $99 = 0, $eb_0 = 0, $tail_port364 = 0, $call365 = 0, $tobool366 = 0, $head_port372 = 0, $call373 = 0, $tobool374 = 0, $100 = 0, $and379 = 0, $cmp380 = 0, $101 = 0, $label386 = 0, $102 = 0, $cmp387 = 0, $103 = 0, $tree_index393 = 0, $104 = 0, $and394 = 0, $tobool395 = 0, $inc399 = 0, $i_2 = 0, $cmp309 = 0, $i_2_lcssa = 0, $cnt_0_lcssa = 0, $tail402 = 0, $105 = 0, $head403 = 0, $106 = 0, $cmp404 = 0, $rank412 = 0, $107 = 0, $108 = 0, $conv415 = 0, $cmp416 = 0, $cmp419 = 0, $sub422 = 0, $109 = 0, $v426 = 0, $110 = 0, $111 = 0, $y = 0, $112 = 0.0, $y432 = 0, $113 = 0.0, $sub433 = 0.0, $conv434 = 0, $ht = 0, $114 = 0.0, $conv436 = 0, $115 = 0, $conv441 = 0, $cmp442 = 0, $y447 = 0, $116 = 0.0, $add448 = 0, $117 = 0, $v452 = 0, $118 = 0, $119 = 0, $y456 = 0, $120 = 0.0, $sub457 = 0.0, $conv458 = 0, $sub461 = 0, $121 = 0, $v465 = 0, $122 = 0, $123 = 0, $y469 = 0, $124 = 0.0, $y472 = 0, $125 = 0.0, $sub473 = 0.0, $conv474 = 0, $add479 = 0, $v483 = 0, $126 = 0, $127 = 0, $y487 = 0, $128 = 0.0, $sub488 = 0.0, $conv489 = 0, $cmp490 = 0, $cond495 = 0, $sizey_0 = 0, $129 = 0, $conv499 = 0.0, $div500 = 0, $conv501 = 0.0, $cmp503229 = 0, $b_0230 = 0, $add506 = 0, $arrayidx507 = 0, $130 = 0, $label509 = 0, $131 = 0, $tobool510 = 0, $inc516 = 0, $cmp503 = 0, $rank524 = 0, $132 = 0, $cmp525 = 0, $cmp271 = 0, $nlist533 = 0, $n_1220 = 0, $tobool535221 = 0, $133 = 0, $n_1222 = 0, $node_type538 = 0, $134 = 0, $cmp540 = 0, $label544 = 0, $135 = 0, $tobool545 = 0, $136 = 0, $next552 = 0, $n_1 = 0, $tobool535 = 0, $tobool554 = 0, $137 = 0, $tobool557 = 0, $138 = 0, $tobool559 = 0, $or_cond = 0, $139 = 0, $call561 = 0, $tobool563218 = 0, $140 = 0, $141 = 0, $n_2_in219 = 0, $142 = 0, $tobool565 = 0, $call567 = 0, $tobool569214 = 0, $e_0_in215 = 0, $head_label = 0, $143 = 0, $tobool572 = 0, $144 = 0, $145 = 0, $146 = 0, $call578 = 0, $tobool569 = 0, $147 = 0, $tobool581 = 0, $call583 = 0, $tobool585216 = 0, $e_1_in217 = 0, $tail_label = 0, $148 = 0, $tobool588 = 0, $149 = 0, $150 = 0, $151 = 0, $call594 = 0, $tobool585 = 0, $call598 = 0, $tobool563 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 408 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fwdedgea = __stackBase__ | 0;
    $fwdedgeb = __stackBase__ + 192 | 0;
    $sd = __stackBase__ + 384 | 0;
    $flags = $g + 168 | 0;
    $0 = HEAP16[$flags >> 1] | 0;
    $conv = $0 & 65535;
    $and = $conv & 14;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      label = 111;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $g;
    _mark_lowclusters($1);
    _routesplinesinit();
    $call = _zmalloc(96) | 0;
    $2 = $call;
    $nodesep = $g + 260 | 0;
    $3 = HEAP32[$nodesep >> 2] | 0;
    $div = ($3 | 0) / 4 & -1;
    $Splinesep = $sd + 8 | 0;
    HEAP32[$Splinesep >> 2] = $div;
    $4 = HEAP32[$nodesep >> 2] | 0;
    $Multisep = $sd + 12 | 0;
    HEAP32[$Multisep >> 2] = $4;
    $call5 = _zmalloc(512) | 0;
    $5 = $call5;
    $RightBound = $sd + 4 | 0;
    HEAP32[$RightBound >> 2] = 0;
    $LeftBound = $sd | 0;
    HEAP32[$LeftBound >> 2] = 0;
    $minrank = $g + 248 | 0;
    $6 = HEAP16[$minrank >> 1] | 0;
    $conv7 = $6 << 16 >> 16;
    $maxrank = $g + 250 | 0;
    $7 = HEAP16[$maxrank >> 1] | 0;
    $cmp10272 = $6 << 16 >> 16 > $7 << 16 >> 16;
    if ($cmp10272) {
      $edges_0_lcssa = $5;
      $n_edges_0_lcssa = 0;
      $n_nodes_0_lcssa = 11520;
      $i_0_lcssa = $conv7;
      label = 46;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $rank = $g + 224 | 0;
    $edges_0273 = $5;
    $n_edges_0274 = 0;
    $n_nodes_0275 = 0;
    $i_0276 = $conv7;
    label = 5;
    break;
   case 5:
    $8 = HEAP32[$rank >> 2] | 0;
    $n13 = $8 + ($i_0276 * 44 & -1) | 0;
    $9 = HEAP32[$n13 >> 2] | 0;
    $add = $9 + $n_nodes_0275 | 0;
    $v = $8 + ($i_0276 * 44 & -1) + 4 | 0;
    $10 = HEAP32[$v >> 2] | 0;
    $11 = HEAP32[$10 >> 2] | 0;
    $tobool = ($11 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $12 = HEAP32[$LeftBound >> 2] | 0;
    $conv20 = +($12 | 0);
    $x = $11 + 32 | 0;
    $13 = +HEAPF64[$x >> 3];
    $lw = $11 + 104 | 0;
    $14 = +HEAPF64[$lw >> 3];
    $sub = $13 - $14;
    $cmp23 = $conv20 < $sub;
    $conv20_sub = $cmp23 ? $conv20 : $sub;
    $conv33 = ~~$conv20_sub;
    HEAP32[$LeftBound >> 2] = $conv33;
    label = 7;
    break;
   case 7:
    $15 = HEAP32[$rank >> 2] | 0;
    $n39 = $15 + ($i_0276 * 44 & -1) | 0;
    $16 = HEAP32[$n39 >> 2] | 0;
    $tobool40 = ($16 | 0) == 0;
    if ($tobool40) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $sub45 = $16 - 1 | 0;
    $v49 = $15 + ($i_0276 * 44 & -1) + 4 | 0;
    $17 = HEAP32[$v49 >> 2] | 0;
    $arrayidx50 = $17 + ($sub45 << 2) | 0;
    $18 = HEAP32[$arrayidx50 >> 2] | 0;
    $tobool51 = ($18 | 0) == 0;
    if ($tobool51) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $19 = HEAP32[$RightBound >> 2] | 0;
    $conv54 = +($19 | 0);
    $x57 = $18 + 32 | 0;
    $20 = +HEAPF64[$x57 >> 3];
    $rw = $18 + 112 | 0;
    $21 = +HEAPF64[$rw >> 3];
    $add59 = $20 + $21;
    $cmp60 = $conv54 > $add59;
    $conv54_add59 = $cmp60 ? $conv54 : $add59;
    $conv74 = ~~$conv54_add59;
    HEAP32[$RightBound >> 2] = $conv74;
    label = 10;
    break;
   case 10:
    $22 = HEAP32[$LeftBound >> 2] | 0;
    $sub78 = $22 - 16 | 0;
    HEAP32[$LeftBound >> 2] = $sub78;
    $23 = HEAP32[$RightBound >> 2] | 0;
    $add80 = $23 + 16 | 0;
    HEAP32[$RightBound >> 2] = $add80;
    $24 = HEAP32[$rank >> 2] | 0;
    $n85259 = $24 + ($i_0276 * 44 & -1) | 0;
    $25 = HEAP32[$n85259 >> 2] | 0;
    $cmp86260 = ($25 | 0) > 0;
    if ($cmp86260) {
      $edges_1261 = $edges_0273;
      $n_edges_1262 = $n_edges_0274;
      $j_0263 = 0;
      $26 = $24;
      label = 11;
      break;
    } else {
      $edges_1_lcssa = $edges_0273;
      $n_edges_1_lcssa = $n_edges_0274;
      label = 44;
      break;
    }
   case 11:
    $v92 = $26 + ($i_0276 * 44 & -1) + 4 | 0;
    $27 = HEAP32[$v92 >> 2] | 0;
    $arrayidx93 = $27 + ($j_0263 << 2) | 0;
    $28 = HEAP32[$arrayidx93 >> 2] | 0;
    $alg = $28 + 128 | 0;
    $29 = HEAP32[$alg >> 2] | 0;
    $tobool95 = ($29 | 0) == 0;
    if ($tobool95) {
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $label = $29 + 112 | 0;
    $30 = $label;
    $31 = HEAP32[$30 >> 2] | 0;
    $tobool100 = ($31 | 0) == 0;
    if ($tobool100) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    ___assert_func(119288, 318, 164664, 152792);
   case 14:
    $pos = $31 + 56 | 0;
    $coord107 = $28 + 32 | 0;
    $32 = $pos;
    $33 = $coord107;
    HEAP32[$32 >> 2] = HEAP32[$33 >> 2] | 0;
    HEAP32[$32 + 4 >> 2] = HEAP32[$33 + 4 >> 2] | 0;
    HEAP32[$32 + 8 >> 2] = HEAP32[$33 + 8 >> 2] | 0;
    HEAP32[$32 + 12 >> 2] = HEAP32[$33 + 12 >> 2] | 0;
    $34 = HEAP32[$30 >> 2] | 0;
    $set = $34 + 81 | 0;
    HEAP8[$set] = 1;
    label = 15;
    break;
   case 15:
    $node_type = $28 + 162 | 0;
    $35 = HEAP8[$node_type] | 0;
    $cmp113 = $35 << 24 >> 24 == 0;
    if ($cmp113) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $36 = HEAP32[1055] | 0;
    $call116 = FUNCTION_TABLE_ii[$36 & 1023]($28) | 0;
    $cmp118 = $call116 << 24 >> 24 == 0;
    if ($cmp118) {
      $n_edges_7 = $n_edges_1262;
      $edges_9 = $edges_1261;
      label = 43;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $list = $28 + 184 | 0;
    $37 = HEAP32[$list >> 2] | 0;
    $38 = HEAP32[$37 >> 2] | 0;
    $tobool125237 = ($38 | 0) == 0;
    if ($tobool125237) {
      $edges_2_lcssa = $edges_1261;
      $n_edges_2_lcssa = $n_edges_1262;
      label = 25;
      break;
    } else {
      $edges_2238 = $edges_1261;
      $n_edges_2239 = $n_edges_1262;
      $k_0240 = 0;
      $39 = $38;
      label = 18;
      break;
    }
   case 18:
    $edge_type = $39 + 128 | 0;
    $40 = HEAP8[$edge_type] | 0;
    if (($40 << 24 >> 24 | 0) == 4 | ($40 << 24 >> 24 | 0) == 6) {
      $n_edges_3 = $n_edges_2239;
      $edges_3 = $edges_2238;
      label = 24;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _setflags($39, 1, 16, 64);
    $inc = $n_edges_2239 + 1 | 0;
    $arrayidx138 = $edges_2238 + ($n_edges_2239 << 2) | 0;
    HEAP32[$arrayidx138 >> 2] = $39;
    $rem213 = $inc & 127;
    $cmp139 = ($rem213 | 0) == 0;
    if ($cmp139) {
      label = 20;
      break;
    } else {
      $n_edges_3 = $inc;
      $edges_3 = $edges_2238;
      label = 24;
      break;
    }
   case 20:
    $tobool142 = ($edges_2238 | 0) == 0;
    if ($tobool142) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $41 = $edges_2238;
    $add144 = $n_edges_2239 << 2;
    $mul = $add144 + 516 | 0;
    $call145 = _grealloc($41, $mul) | 0;
    $call145_sink = $call145;
    label = 23;
    break;
   case 22:
    $add147 = $n_edges_2239 << 2;
    $mul148 = $add147 + 516 | 0;
    $call149 = _gmalloc($mul148) | 0;
    $call145_sink = $call149;
    label = 23;
    break;
   case 23:
    $42 = $call145_sink;
    $n_edges_3 = $inc;
    $edges_3 = $42;
    label = 24;
    break;
   case 24:
    $inc153 = $k_0240 + 1 | 0;
    $43 = HEAP32[$list >> 2] | 0;
    $arrayidx124 = $43 + ($inc153 << 2) | 0;
    $44 = HEAP32[$arrayidx124 >> 2] | 0;
    $tobool125 = ($44 | 0) == 0;
    if ($tobool125) {
      $edges_2_lcssa = $edges_3;
      $n_edges_2_lcssa = $n_edges_3;
      label = 25;
      break;
    } else {
      $edges_2238 = $edges_3;
      $n_edges_2239 = $n_edges_3;
      $k_0240 = $inc153;
      $39 = $44;
      label = 18;
      break;
    }
   case 25:
    $list155 = $28 + 192 | 0;
    $45 = HEAP32[$list155 >> 2] | 0;
    $tobool156 = ($45 | 0) == 0;
    if ($tobool156) {
      $n_edges_5 = $n_edges_2_lcssa;
      $edges_6 = $edges_2_lcssa;
      label = 33;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $46 = HEAP32[$list155 >> 2] | 0;
    $47 = HEAP32[$46 >> 2] | 0;
    $tobool163244 = ($47 | 0) == 0;
    if ($tobool163244) {
      $n_edges_5 = $n_edges_2_lcssa;
      $edges_6 = $edges_2_lcssa;
      label = 33;
      break;
    } else {
      $edges_4245 = $edges_2_lcssa;
      $n_edges_4246 = $n_edges_2_lcssa;
      $k_1247 = 0;
      $48 = $47;
      label = 27;
      break;
    }
   case 27:
    _setflags($48, 2, 0, 128);
    $inc165 = $n_edges_4246 + 1 | 0;
    $arrayidx166 = $edges_4245 + ($n_edges_4246 << 2) | 0;
    HEAP32[$arrayidx166 >> 2] = $48;
    $rem167212 = $inc165 & 127;
    $cmp168 = ($rem167212 | 0) == 0;
    if ($cmp168) {
      label = 28;
      break;
    } else {
      $edges_5 = $edges_4245;
      label = 32;
      break;
    }
   case 28:
    $tobool171 = ($edges_4245 | 0) == 0;
    if ($tobool171) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $49 = $edges_4245;
    $add173 = $n_edges_4246 << 2;
    $mul174 = $add173 + 516 | 0;
    $call175 = _grealloc($49, $mul174) | 0;
    $call175_sink = $call175;
    label = 31;
    break;
   case 30:
    $add177 = $n_edges_4246 << 2;
    $mul178 = $add177 + 516 | 0;
    $call179 = _gmalloc($mul178) | 0;
    $call175_sink = $call179;
    label = 31;
    break;
   case 31:
    $50 = $call175_sink;
    $edges_5 = $50;
    label = 32;
    break;
   case 32:
    $inc184 = $k_1247 + 1 | 0;
    $51 = HEAP32[$list155 >> 2] | 0;
    $arrayidx162 = $51 + ($inc184 << 2) | 0;
    $52 = HEAP32[$arrayidx162 >> 2] | 0;
    $tobool163 = ($52 | 0) == 0;
    if ($tobool163) {
      $n_edges_5 = $inc165;
      $edges_6 = $edges_5;
      label = 33;
      break;
    } else {
      $edges_4245 = $edges_5;
      $n_edges_4246 = $inc165;
      $k_1247 = $inc184;
      $48 = $52;
      label = 27;
      break;
    }
   case 33:
    $list188 = $28 + 208 | 0;
    $53 = HEAP32[$list188 >> 2] | 0;
    $tobool189 = ($53 | 0) == 0;
    if ($tobool189) {
      $n_edges_7 = $n_edges_5;
      $edges_9 = $edges_6;
      label = 43;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $54 = HEAP8[$node_type] | 0;
    $cmp194 = $54 << 24 >> 24 == 0;
    if ($cmp194) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $rw198 = $28 + 112 | 0;
    $55 = +HEAPF64[$rw198 >> 3];
    $mval = $28 + 244 | 0;
    $56 = HEAP32[$mval >> 2] | 0;
    $conv200 = +($56 | 0);
    HEAPF64[$rw198 >> 3] = $conv200;
    $conv203 = ~~$55;
    HEAP32[$mval >> 2] = $conv203;
    label = 36;
    break;
   case 36:
    $57 = HEAP32[$list188 >> 2] | 0;
    $58 = HEAP32[$57 >> 2] | 0;
    $tobool212251 = ($58 | 0) == 0;
    if ($tobool212251) {
      $n_edges_7 = $n_edges_5;
      $edges_9 = $edges_6;
      label = 43;
      break;
    } else {
      $edges_7252 = $edges_6;
      $n_edges_6253 = $n_edges_5;
      $k_2254 = 0;
      $59 = $58;
      label = 37;
      break;
    }
   case 37:
    _setflags($59, 0, 0, 128);
    $inc214 = $n_edges_6253 + 1 | 0;
    $arrayidx215 = $edges_7252 + ($n_edges_6253 << 2) | 0;
    HEAP32[$arrayidx215 >> 2] = $59;
    $rem216211 = $inc214 & 127;
    $cmp217 = ($rem216211 | 0) == 0;
    if ($cmp217) {
      label = 38;
      break;
    } else {
      $edges_8 = $edges_7252;
      label = 42;
      break;
    }
   case 38:
    $tobool220 = ($edges_7252 | 0) == 0;
    if ($tobool220) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $60 = $edges_7252;
    $add222 = $n_edges_6253 << 2;
    $mul223 = $add222 + 516 | 0;
    $call224 = _grealloc($60, $mul223) | 0;
    $call224_sink = $call224;
    label = 41;
    break;
   case 40:
    $add226 = $n_edges_6253 << 2;
    $mul227 = $add226 + 516 | 0;
    $call228 = _gmalloc($mul227) | 0;
    $call224_sink = $call228;
    label = 41;
    break;
   case 41:
    $61 = $call224_sink;
    $edges_8 = $61;
    label = 42;
    break;
   case 42:
    $inc233 = $k_2254 + 1 | 0;
    $62 = HEAP32[$list188 >> 2] | 0;
    $arrayidx211 = $62 + ($inc233 << 2) | 0;
    $63 = HEAP32[$arrayidx211 >> 2] | 0;
    $tobool212 = ($63 | 0) == 0;
    if ($tobool212) {
      $n_edges_7 = $inc214;
      $edges_9 = $edges_8;
      label = 43;
      break;
    } else {
      $edges_7252 = $edges_8;
      $n_edges_6253 = $inc214;
      $k_2254 = $inc233;
      $59 = $63;
      label = 37;
      break;
    }
   case 43:
    $inc237 = $j_0263 + 1 | 0;
    $64 = HEAP32[$rank >> 2] | 0;
    $n85 = $64 + ($i_0276 * 44 & -1) | 0;
    $65 = HEAP32[$n85 >> 2] | 0;
    $cmp86 = ($inc237 | 0) < ($65 | 0);
    if ($cmp86) {
      $edges_1261 = $edges_9;
      $n_edges_1262 = $n_edges_7;
      $j_0263 = $inc237;
      $26 = $64;
      label = 11;
      break;
    } else {
      $edges_1_lcssa = $edges_9;
      $n_edges_1_lcssa = $n_edges_7;
      label = 44;
      break;
    }
   case 44:
    $inc240 = $i_0276 + 1 | 0;
    $66 = HEAP16[$maxrank >> 1] | 0;
    $conv9 = $66 << 16 >> 16;
    $cmp10 = ($inc240 | 0) > ($conv9 | 0);
    if ($cmp10) {
      label = 45;
      break;
    } else {
      $edges_0273 = $edges_1_lcssa;
      $n_edges_0274 = $n_edges_1_lcssa;
      $n_nodes_0275 = $add;
      $i_0276 = $inc240;
      label = 5;
      break;
    }
   case 45:
    $phitmp = $add << 5;
    $phitmp283 = $phitmp + 11520 | 0;
    $edges_0_lcssa = $edges_1_lcssa;
    $n_edges_0_lcssa = $n_edges_1_lcssa;
    $n_nodes_0_lcssa = $phitmp283;
    $i_0_lcssa = $inc240;
    label = 46;
    break;
   case 46:
    $67 = $edges_0_lcssa;
    _qsort($67 | 0, $n_edges_0_lcssa | 0, 4, 576);
    $call245 = _zmalloc($n_nodes_0_lcssa) | 0;
    $68 = $call245;
    $boxes = $call + 84 | 0;
    $69 = $boxes;
    HEAP32[$69 >> 2] = $68;
    $mul246 = $i_0_lcssa << 5;
    $call247 = _zmalloc($mul246) | 0;
    $70 = $call247;
    $Rank_box = $sd + 16 | 0;
    HEAP32[$Rank_box >> 2] = $70;
    $cmp248 = ($and | 0) == 2;
    if ($cmp248) {
      label = 49;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $cmp271231 = ($n_edges_0_lcssa | 0) > 0;
    if ($cmp271231) {
      label = 48;
      break;
    } else {
      label = 88;
      break;
    }
   case 48:
    $rank424 = $g + 224 | 0;
    $71 = $edges_0_lcssa;
    $72 = $g;
    $rank450 = $g + 224 | 0;
    $rank463 = $g + 224 | 0;
    $73 = $fwdedgeb | 0;
    $tail345 = $fwdedgeb + 16 | 0;
    $head347 = $fwdedgeb + 12 | 0;
    $tail_port349 = $fwdedgeb + 32 | 0;
    $74 = $tail_port349;
    $head_port353 = $fwdedgeb + 72 | 0;
    $75 = $head_port353;
    $edge_type357 = $fwdedgeb + 128 | 0;
    $to_orig359 = $fwdedgeb + 132 | 0;
    $76 = $fwdedgea | 0;
    $tail = $fwdedgea + 16 | 0;
    $head295 = $fwdedgea + 12 | 0;
    $tail_port297 = $fwdedgea + 32 | 0;
    $77 = $tail_port297;
    $head_port301 = $fwdedgea + 72 | 0;
    $78 = $head_port301;
    $edge_type305 = $fwdedgea + 128 | 0;
    $to_orig = $fwdedgea + 132 | 0;
    $i_1232 = 0;
    label = 54;
    break;
   case 49:
    $nlist = $g + 220 | 0;
    $n_0233 = HEAP32[$nlist >> 2] | 0;
    $tobool253234 = ($n_0233 | 0) == 0;
    if ($tobool253234) {
      label = 47;
      break;
    } else {
      $n_0235 = $n_0233;
      label = 50;
      break;
    }
   case 50:
    $node_type256 = $n_0235 + 162 | 0;
    $79 = HEAP8[$node_type256] | 0;
    $cmp258 = $79 << 24 >> 24 == 1;
    if ($cmp258) {
      label = 51;
      break;
    } else {
      label = 53;
      break;
    }
   case 51:
    $label262 = $n_0235 + 120 | 0;
    $80 = HEAP32[$label262 >> 2] | 0;
    $tobool263 = ($80 | 0) == 0;
    if ($tobool263) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    _place_vnlabel($n_0235);
    label = 53;
    break;
   case 53:
    $next = $n_0235 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool253 = ($n_0 | 0) == 0;
    if ($tobool253) {
      label = 47;
      break;
    } else {
      $n_0235 = $n_0;
      label = 50;
      break;
    }
   case 54:
    $arrayidx275 = $edges_0_lcssa + ($i_1232 << 2) | 0;
    $81 = HEAP32[$arrayidx275 >> 2] | 0;
    $call276 = _getmainedge($81) | 0;
    $defined = $81 + 60 | 0;
    $82 = HEAP8[$defined] | 0;
    $tobool279 = $82 << 24 >> 24 == 0;
    if ($tobool279) {
      label = 55;
      break;
    } else {
      $cond288 = $81;
      label = 56;
      break;
    }
   case 55:
    $defined282 = $81 + 100 | 0;
    $83 = HEAP8[$defined282] | 0;
    $tobool284 = $83 << 24 >> 24 == 0;
    $call276_ = $tobool284 ? $call276 : $81;
    $cond288 = $call276_;
    label = 56;
    break;
   case 56:
    $tree_index = $cond288 + 180 | 0;
    $84 = HEAP32[$tree_index >> 2] | 0;
    $and290 = $84 & 32;
    $tobool291 = ($and290 | 0) == 0;
    if ($tobool291) {
      $ea_0 = $cond288;
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $85 = $cond288 | 0;
    _memcpy($76 | 0, $85 | 0, 192);
    $head = $cond288 + 12 | 0;
    $86 = HEAP32[$head >> 2] | 0;
    HEAP32[$tail >> 2] = $86;
    $tail294 = $cond288 + 16 | 0;
    $87 = HEAP32[$tail294 >> 2] | 0;
    HEAP32[$head295 >> 2] = $87;
    $head_port299 = $cond288 + 72 | 0;
    $88 = $head_port299;
    HEAP32[$77 >> 2] = HEAP32[$88 >> 2] | 0;
    HEAP32[$77 + 4 >> 2] = HEAP32[$88 + 4 >> 2] | 0;
    HEAP32[$77 + 8 >> 2] = HEAP32[$88 + 8 >> 2] | 0;
    HEAP32[$77 + 12 >> 2] = HEAP32[$88 + 12 >> 2] | 0;
    HEAP32[$77 + 16 >> 2] = HEAP32[$88 + 16 >> 2] | 0;
    HEAP32[$77 + 20 >> 2] = HEAP32[$88 + 20 >> 2] | 0;
    HEAP32[$77 + 24 >> 2] = HEAP32[$88 + 24 >> 2] | 0;
    HEAP32[$77 + 28 >> 2] = HEAP32[$88 + 28 >> 2] | 0;
    HEAP32[$77 + 32 >> 2] = HEAP32[$88 + 32 >> 2] | 0;
    HEAP32[$77 + 36 >> 2] = HEAP32[$88 + 36 >> 2] | 0;
    $tail_port303 = $cond288 + 32 | 0;
    $89 = $tail_port303;
    HEAP32[$78 >> 2] = HEAP32[$89 >> 2] | 0;
    HEAP32[$78 + 4 >> 2] = HEAP32[$89 + 4 >> 2] | 0;
    HEAP32[$78 + 8 >> 2] = HEAP32[$89 + 8 >> 2] | 0;
    HEAP32[$78 + 12 >> 2] = HEAP32[$89 + 12 >> 2] | 0;
    HEAP32[$78 + 16 >> 2] = HEAP32[$89 + 16 >> 2] | 0;
    HEAP32[$78 + 20 >> 2] = HEAP32[$89 + 20 >> 2] | 0;
    HEAP32[$78 + 24 >> 2] = HEAP32[$89 + 24 >> 2] | 0;
    HEAP32[$78 + 28 >> 2] = HEAP32[$89 + 28 >> 2] | 0;
    HEAP32[$78 + 32 >> 2] = HEAP32[$89 + 32 >> 2] | 0;
    HEAP32[$78 + 36 >> 2] = HEAP32[$89 + 36 >> 2] | 0;
    HEAP8[$edge_type305] = 1;
    HEAP32[$to_orig >> 2] = $cond288;
    $ea_0 = $fwdedgea;
    label = 58;
    break;
   case 58:
    $head_port370 = $ea_0 + 72 | 0;
    $label384 = $81 + 112 | 0;
    $i_2223 = $i_1232 + 1 | 0;
    $cmp309224 = ($i_2223 | 0) < ($n_edges_0_lcssa | 0);
    if ($cmp309224) {
      label = 59;
      break;
    } else {
      $cnt_0_lcssa = 1;
      $i_2_lcssa = $i_2223;
      label = 72;
      break;
    }
   case 59:
    $adjacent = $81 + 129 | 0;
    $tail_port362 = $ea_0 + 32 | 0;
    $tree_index378 = $81 + 180 | 0;
    $cnt_0225 = 1;
    $i_2227 = $i_2223;
    label = 60;
    break;
   case 60:
    $arrayidx312 = $edges_0_lcssa + ($i_2227 << 2) | 0;
    $90 = HEAP32[$arrayidx312 >> 2] | 0;
    $call313 = _getmainedge($90) | 0;
    $cmp314 = ($call276 | 0) == ($call313 | 0);
    if ($cmp314) {
      label = 61;
      break;
    } else {
      $cnt_0_lcssa = $cnt_0225;
      $i_2_lcssa = $i_2227;
      label = 72;
      break;
    }
   case 61:
    $91 = HEAP8[$adjacent] | 0;
    $tobool319 = $91 << 24 >> 24 == 0;
    if ($tobool319) {
      label = 62;
      break;
    } else {
      label = 71;
      break;
    }
   case 62:
    $defined324 = $90 + 60 | 0;
    $92 = HEAP8[$defined324] | 0;
    $tobool326 = $92 << 24 >> 24 == 0;
    if ($tobool326) {
      label = 63;
      break;
    } else {
      $cond336 = $90;
      label = 64;
      break;
    }
   case 63:
    $defined330 = $90 + 100 | 0;
    $93 = HEAP8[$defined330] | 0;
    $tobool332 = $93 << 24 >> 24 == 0;
    $call313_ = $tobool332 ? $call313 : $90;
    $cond336 = $call313_;
    label = 64;
    break;
   case 64:
    $tree_index338 = $cond336 + 180 | 0;
    $94 = HEAP32[$tree_index338 >> 2] | 0;
    $and339 = $94 & 32;
    $tobool340 = ($and339 | 0) == 0;
    if ($tobool340) {
      $eb_0 = $cond336;
      label = 66;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $95 = $cond336 | 0;
    _memcpy($73 | 0, $95 | 0, 192);
    $head344 = $cond336 + 12 | 0;
    $96 = HEAP32[$head344 >> 2] | 0;
    HEAP32[$tail345 >> 2] = $96;
    $tail346 = $cond336 + 16 | 0;
    $97 = HEAP32[$tail346 >> 2] | 0;
    HEAP32[$head347 >> 2] = $97;
    $head_port351 = $cond336 + 72 | 0;
    $98 = $head_port351;
    HEAP32[$74 >> 2] = HEAP32[$98 >> 2] | 0;
    HEAP32[$74 + 4 >> 2] = HEAP32[$98 + 4 >> 2] | 0;
    HEAP32[$74 + 8 >> 2] = HEAP32[$98 + 8 >> 2] | 0;
    HEAP32[$74 + 12 >> 2] = HEAP32[$98 + 12 >> 2] | 0;
    HEAP32[$74 + 16 >> 2] = HEAP32[$98 + 16 >> 2] | 0;
    HEAP32[$74 + 20 >> 2] = HEAP32[$98 + 20 >> 2] | 0;
    HEAP32[$74 + 24 >> 2] = HEAP32[$98 + 24 >> 2] | 0;
    HEAP32[$74 + 28 >> 2] = HEAP32[$98 + 28 >> 2] | 0;
    HEAP32[$74 + 32 >> 2] = HEAP32[$98 + 32 >> 2] | 0;
    HEAP32[$74 + 36 >> 2] = HEAP32[$98 + 36 >> 2] | 0;
    $tail_port355 = $cond336 + 32 | 0;
    $99 = $tail_port355;
    HEAP32[$75 >> 2] = HEAP32[$99 >> 2] | 0;
    HEAP32[$75 + 4 >> 2] = HEAP32[$99 + 4 >> 2] | 0;
    HEAP32[$75 + 8 >> 2] = HEAP32[$99 + 8 >> 2] | 0;
    HEAP32[$75 + 12 >> 2] = HEAP32[$99 + 12 >> 2] | 0;
    HEAP32[$75 + 16 >> 2] = HEAP32[$99 + 16 >> 2] | 0;
    HEAP32[$75 + 20 >> 2] = HEAP32[$99 + 20 >> 2] | 0;
    HEAP32[$75 + 24 >> 2] = HEAP32[$99 + 24 >> 2] | 0;
    HEAP32[$75 + 28 >> 2] = HEAP32[$99 + 28 >> 2] | 0;
    HEAP32[$75 + 32 >> 2] = HEAP32[$99 + 32 >> 2] | 0;
    HEAP32[$75 + 36 >> 2] = HEAP32[$99 + 36 >> 2] | 0;
    HEAP8[$edge_type357] = 1;
    HEAP32[$to_orig359 >> 2] = $cond336;
    $eb_0 = $fwdedgeb;
    label = 66;
    break;
   case 66:
    $tail_port364 = $eb_0 + 32 | 0;
    $call365 = _portcmp($tail_port362, $tail_port364) | 0;
    $tobool366 = ($call365 | 0) == 0;
    if ($tobool366) {
      label = 67;
      break;
    } else {
      $cnt_0_lcssa = $cnt_0225;
      $i_2_lcssa = $i_2227;
      label = 72;
      break;
    }
   case 67:
    $head_port372 = $eb_0 + 72 | 0;
    $call373 = _portcmp($head_port370, $head_port372) | 0;
    $tobool374 = ($call373 | 0) == 0;
    if ($tobool374) {
      label = 68;
      break;
    } else {
      $cnt_0_lcssa = $cnt_0225;
      $i_2_lcssa = $i_2227;
      label = 72;
      break;
    }
   case 68:
    $100 = HEAP32[$tree_index378 >> 2] | 0;
    $and379 = $100 & 15;
    $cmp380 = ($and379 | 0) == 2;
    if ($cmp380) {
      label = 69;
      break;
    } else {
      label = 70;
      break;
    }
   case 69:
    $101 = HEAP32[$label384 >> 2] | 0;
    $label386 = $90 + 112 | 0;
    $102 = HEAP32[$label386 >> 2] | 0;
    $cmp387 = ($101 | 0) == ($102 | 0);
    if ($cmp387) {
      label = 70;
      break;
    } else {
      $cnt_0_lcssa = $cnt_0225;
      $i_2_lcssa = $i_2227;
      label = 72;
      break;
    }
   case 70:
    $103 = HEAP32[$arrayidx312 >> 2] | 0;
    $tree_index393 = $103 + 180 | 0;
    $104 = HEAP32[$tree_index393 >> 2] | 0;
    $and394 = $104 & 64;
    $tobool395 = ($and394 | 0) == 0;
    if ($tobool395) {
      label = 71;
      break;
    } else {
      $cnt_0_lcssa = $cnt_0225;
      $i_2_lcssa = $i_2227;
      label = 72;
      break;
    }
   case 71:
    $inc399 = $cnt_0225 + 1 | 0;
    $i_2 = $i_2227 + 1 | 0;
    $cmp309 = ($i_2 | 0) < ($n_edges_0_lcssa | 0);
    if ($cmp309) {
      $cnt_0225 = $inc399;
      $i_2227 = $i_2;
      label = 60;
      break;
    } else {
      $cnt_0_lcssa = $inc399;
      $i_2_lcssa = $i_2;
      label = 72;
      break;
    }
   case 72:
    $tail402 = $81 + 16 | 0;
    $105 = HEAP32[$tail402 >> 2] | 0;
    $head403 = $81 + 12 | 0;
    $106 = HEAP32[$head403 >> 2] | 0;
    $cmp404 = ($105 | 0) == ($106 | 0);
    $rank412 = $105 + 236 | 0;
    $107 = HEAP32[$rank412 >> 2] | 0;
    if ($cmp404) {
      label = 73;
      break;
    } else {
      label = 84;
      break;
    }
   case 73:
    $108 = HEAP16[$maxrank >> 1] | 0;
    $conv415 = $108 << 16 >> 16;
    $cmp416 = ($107 | 0) == ($conv415 | 0);
    if ($cmp416) {
      label = 74;
      break;
    } else {
      label = 77;
      break;
    }
   case 74:
    $cmp419 = ($107 | 0) > 0;
    if ($cmp419) {
      label = 75;
      break;
    } else {
      label = 76;
      break;
    }
   case 75:
    $sub422 = $107 - 1 | 0;
    $109 = HEAP32[$rank424 >> 2] | 0;
    $v426 = $109 + ($sub422 * 44 & -1) + 4 | 0;
    $110 = HEAP32[$v426 >> 2] | 0;
    $111 = HEAP32[$110 >> 2] | 0;
    $y = $111 + 40 | 0;
    $112 = +HEAPF64[$y >> 3];
    $y432 = $105 + 40 | 0;
    $113 = +HEAPF64[$y432 >> 3];
    $sub433 = $112 - $113;
    $conv434 = ~~$sub433;
    $sizey_0 = $conv434;
    label = 80;
    break;
   case 76:
    $ht = $105 + 96 | 0;
    $114 = +HEAPF64[$ht >> 3];
    $conv436 = ~~$114;
    $sizey_0 = $conv436;
    label = 80;
    break;
   case 77:
    $115 = HEAP16[$minrank >> 1] | 0;
    $conv441 = $115 << 16 >> 16;
    $cmp442 = ($107 | 0) == ($conv441 | 0);
    if ($cmp442) {
      label = 78;
      break;
    } else {
      label = 79;
      break;
    }
   case 78:
    $y447 = $105 + 40 | 0;
    $116 = +HEAPF64[$y447 >> 3];
    $add448 = $107 + 1 | 0;
    $117 = HEAP32[$rank450 >> 2] | 0;
    $v452 = $117 + ($add448 * 44 & -1) + 4 | 0;
    $118 = HEAP32[$v452 >> 2] | 0;
    $119 = HEAP32[$118 >> 2] | 0;
    $y456 = $119 + 40 | 0;
    $120 = +HEAPF64[$y456 >> 3];
    $sub457 = $116 - $120;
    $conv458 = ~~$sub457;
    $sizey_0 = $conv458;
    label = 80;
    break;
   case 79:
    $sub461 = $107 - 1 | 0;
    $121 = HEAP32[$rank463 >> 2] | 0;
    $v465 = $121 + ($sub461 * 44 & -1) + 4 | 0;
    $122 = HEAP32[$v465 >> 2] | 0;
    $123 = HEAP32[$122 >> 2] | 0;
    $y469 = $123 + 40 | 0;
    $124 = +HEAPF64[$y469 >> 3];
    $y472 = $105 + 40 | 0;
    $125 = +HEAPF64[$y472 >> 3];
    $sub473 = $124 - $125;
    $conv474 = ~~$sub473;
    $add479 = $107 + 1 | 0;
    $v483 = $121 + ($add479 * 44 & -1) + 4 | 0;
    $126 = HEAP32[$v483 >> 2] | 0;
    $127 = HEAP32[$126 >> 2] | 0;
    $y487 = $127 + 40 | 0;
    $128 = +HEAPF64[$y487 >> 3];
    $sub488 = $125 - $128;
    $conv489 = ~~$sub488;
    $cmp490 = ($conv474 | 0) < ($conv489 | 0);
    $cond495 = $cmp490 ? $conv474 : $conv489;
    $sizey_0 = $cond495;
    label = 80;
    break;
   case 80:
    $129 = HEAP32[$Multisep >> 2] | 0;
    $conv499 = +($129 | 0);
    $div500 = ($sizey_0 | 0) / 2 & -1;
    $conv501 = +($div500 | 0);
    _makeSelfEdge($2, $71, $i_1232, $cnt_0_lcssa, $conv499, $conv501, 4216);
    $cmp503229 = ($cnt_0_lcssa | 0) > 0;
    if ($cmp503229) {
      $b_0230 = 0;
      label = 81;
      break;
    } else {
      label = 86;
      break;
    }
   case 81:
    $add506 = $b_0230 + $i_1232 | 0;
    $arrayidx507 = $edges_0_lcssa + ($add506 << 2) | 0;
    $130 = HEAP32[$arrayidx507 >> 2] | 0;
    $label509 = $130 + 112 | 0;
    $131 = HEAP32[$label509 >> 2] | 0;
    $tobool510 = ($131 | 0) == 0;
    if ($tobool510) {
      label = 83;
      break;
    } else {
      label = 82;
      break;
    }
   case 82:
    _updateBB($72, $131);
    label = 83;
    break;
   case 83:
    $inc516 = $b_0230 + 1 | 0;
    $cmp503 = ($inc516 | 0) < ($cnt_0_lcssa | 0);
    if ($cmp503) {
      $b_0230 = $inc516;
      label = 81;
      break;
    } else {
      label = 86;
      break;
    }
   case 84:
    $rank524 = $106 + 236 | 0;
    $132 = HEAP32[$rank524 >> 2] | 0;
    $cmp525 = ($107 | 0) == ($132 | 0);
    if ($cmp525) {
      label = 85;
      break;
    } else {
      label = 87;
      break;
    }
   case 85:
    _make_flat_edge($sd, $2, $edges_0_lcssa, $i_1232, $cnt_0_lcssa, $and);
    label = 86;
    break;
   case 86:
    $cmp271 = ($i_2_lcssa | 0) < ($n_edges_0_lcssa | 0);
    if ($cmp271) {
      $i_1232 = $i_2_lcssa;
      label = 54;
      break;
    } else {
      label = 88;
      break;
    }
   case 87:
    _make_regular_edge($sd, $2, $edges_0_lcssa, $i_1232, $cnt_0_lcssa, $and);
    label = 86;
    break;
   case 88:
    $nlist533 = $g + 220 | 0;
    $n_1220 = HEAP32[$nlist533 >> 2] | 0;
    $tobool535221 = ($n_1220 | 0) == 0;
    if ($tobool535221) {
      label = 94;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $133 = $g;
    $n_1222 = $n_1220;
    label = 90;
    break;
   case 90:
    $node_type538 = $n_1222 + 162 | 0;
    $134 = HEAP8[$node_type538] | 0;
    $cmp540 = $134 << 24 >> 24 == 1;
    if ($cmp540) {
      label = 91;
      break;
    } else {
      label = 93;
      break;
    }
   case 91:
    $label544 = $n_1222 + 120 | 0;
    $135 = HEAP32[$label544 >> 2] | 0;
    $tobool545 = ($135 | 0) == 0;
    if ($tobool545) {
      label = 93;
      break;
    } else {
      label = 92;
      break;
    }
   case 92:
    _place_vnlabel($n_1222);
    $136 = HEAP32[$label544 >> 2] | 0;
    _updateBB($133, $136);
    label = 93;
    break;
   case 93:
    $next552 = $n_1222 + 168 | 0;
    $n_1 = HEAP32[$next552 >> 2] | 0;
    $tobool535 = ($n_1 | 0) == 0;
    if ($tobool535) {
      label = 94;
      break;
    } else {
      $n_1222 = $n_1;
      label = 90;
      break;
    }
   case 94:
    $tobool554 = ($normalize | 0) == 0;
    if ($tobool554) {
      label = 96;
      break;
    } else {
      label = 95;
      break;
    }
   case 95:
    _edge_normalize($g);
    label = 96;
    break;
   case 96:
    $137 = HEAP32[41936] | 0;
    $tobool557 = ($137 | 0) != 0;
    $138 = HEAP32[41900] | 0;
    $tobool559 = ($138 | 0) != 0;
    $or_cond = $tobool557 | $tobool559;
    if ($or_cond) {
      label = 97;
      break;
    } else {
      label = 110;
      break;
    }
   case 97:
    $139 = $g;
    $call561 = _agfstnode($139) | 0;
    $tobool563218 = ($call561 | 0) == 0;
    if ($tobool563218) {
      label = 110;
      break;
    } else {
      label = 98;
      break;
    }
   case 98:
    $140 = $g;
    $141 = $g;
    $n_2_in219 = $call561;
    label = 99;
    break;
   case 99:
    $142 = HEAP32[41936] | 0;
    $tobool565 = ($142 | 0) == 0;
    if ($tobool565) {
      label = 104;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $call567 = _agfstin($139, $n_2_in219) | 0;
    $tobool569214 = ($call567 | 0) == 0;
    if ($tobool569214) {
      label = 104;
      break;
    } else {
      $e_0_in215 = $call567;
      label = 101;
      break;
    }
   case 101:
    $head_label = $e_0_in215 + 116 | 0;
    $143 = HEAP32[$head_label >> 2] | 0;
    $tobool572 = ($143 | 0) == 0;
    if ($tobool572) {
      label = 103;
      break;
    } else {
      label = 102;
      break;
    }
   case 102:
    $144 = $e_0_in215;
    _place_portlabel($144, 1);
    $145 = HEAP32[$head_label >> 2] | 0;
    $146 = $145;
    _updateBB($141, $146);
    label = 103;
    break;
   case 103:
    $call578 = _agnxtin($139, $e_0_in215) | 0;
    $tobool569 = ($call578 | 0) == 0;
    if ($tobool569) {
      label = 104;
      break;
    } else {
      $e_0_in215 = $call578;
      label = 101;
      break;
    }
   case 104:
    $147 = HEAP32[41900] | 0;
    $tobool581 = ($147 | 0) == 0;
    if ($tobool581) {
      label = 109;
      break;
    } else {
      label = 105;
      break;
    }
   case 105:
    $call583 = _agfstout($139, $n_2_in219) | 0;
    $tobool585216 = ($call583 | 0) == 0;
    if ($tobool585216) {
      label = 109;
      break;
    } else {
      $e_1_in217 = $call583;
      label = 106;
      break;
    }
   case 106:
    $tail_label = $e_1_in217 + 120 | 0;
    $148 = HEAP32[$tail_label >> 2] | 0;
    $tobool588 = ($148 | 0) == 0;
    if ($tobool588) {
      label = 108;
      break;
    } else {
      label = 107;
      break;
    }
   case 107:
    $149 = $e_1_in217;
    _place_portlabel($149, 0);
    $150 = HEAP32[$tail_label >> 2] | 0;
    $151 = $150;
    _updateBB($140, $151);
    label = 108;
    break;
   case 108:
    $call594 = _agnxtout($139, $e_1_in217) | 0;
    $tobool585 = ($call594 | 0) == 0;
    if ($tobool585) {
      label = 109;
      break;
    } else {
      $e_1_in217 = $call594;
      label = 106;
      break;
    }
   case 109:
    $call598 = _agnxtnode($139, $n_2_in219) | 0;
    $tobool563 = ($call598 | 0) == 0;
    if ($tobool563) {
      label = 110;
      break;
    } else {
      $n_2_in219 = $call598;
      label = 99;
      break;
    }
   case 110:
    _free($67);
    $152 = HEAP32[$69 >> 2] | 0;
    $153 = $152;
    _free($153);
    _free($call);
    $154 = HEAP32[$Rank_box >> 2] | 0;
    $155 = $154;
    _free($155);
    _routesplinesterm();
    HEAP32[41356] = 1;
    label = 111;
    break;
   case 111:
    STACKTOP = __stackBase__;
    return;
  }
}
function _place_vnlabel($n) {
  $n = $n | 0;
  var $size = 0, $0 = 0, $cmp = 0, $list = 0, $1 = 0, $e_0_in = 0, $e_0 = 0, $edge_type = 0, $2 = 0, $cmp3 = 0, $to_orig = 0, $label = 0, $3 = 0, $graph = 0, $4 = 0, $rankdir = 0, $5 = 0, $and9 = 0, $tobool = 0, $dimen_sroa_1_8__idx5 = 0, $dimen_sroa_0_0__idx = 0, $cond_in = 0, $cond = 0.0, $x11 = 0, $6 = 0.0, $div = 0.0, $add = 0.0, $x14 = 0, $y17 = 0, $7 = 0.0, $8 = 0, $y21 = 0, $9 = 0, $set = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $n + 180 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $list = $n + 184 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $e_0_in = $1;
    label = 4;
    break;
   case 4:
    $e_0 = HEAP32[$e_0_in >> 2] | 0;
    $edge_type = $e_0 + 128 | 0;
    $2 = HEAP8[$edge_type] | 0;
    $cmp3 = $2 << 24 >> 24 == 0;
    $to_orig = $e_0 + 132 | 0;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $e_0_in = $to_orig;
      label = 4;
      break;
    }
   case 5:
    $label = $e_0 + 112 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $graph = $n + 20 | 0;
    $4 = HEAP32[$graph >> 2] | 0;
    $rankdir = $4 + 156 | 0;
    $5 = HEAP32[$rankdir >> 2] | 0;
    $and9 = $5 & 1;
    $tobool = ($and9 | 0) == 0;
    $dimen_sroa_1_8__idx5 = $3 + 32 | 0;
    $dimen_sroa_0_0__idx = $3 + 24 | 0;
    $cond_in = $tobool ? $dimen_sroa_0_0__idx : $dimen_sroa_1_8__idx5;
    $cond = +HEAPF64[$cond_in >> 3];
    $x11 = $n + 32 | 0;
    $6 = +HEAPF64[$x11 >> 3];
    $div = $cond * .5;
    $add = $6 + $div;
    $x14 = $3 + 56 | 0;
    HEAPF64[$x14 >> 3] = $add;
    $y17 = $n + 40 | 0;
    $7 = +HEAPF64[$y17 >> 3];
    $8 = HEAP32[$label >> 2] | 0;
    $y21 = $8 + 64 | 0;
    HEAPF64[$y21 >> 3] = $7;
    $9 = HEAP32[$label >> 2] | 0;
    $set = $9 + 81 | 0;
    HEAP8[$set] = 1;
    label = 6;
    break;
   case 6:
    return;
  }
}
function _getmainedge($e) {
  $e = $e | 0;
  var $le_0 = 0, $to_virt = 0, $0 = 0, $tobool = 0, $le_1 = 0, $to_orig = 0, $1 = 0, $tobool5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $le_0 = $e;
    label = 3;
    break;
   case 3:
    $to_virt = $le_0 + 188 | 0;
    $0 = HEAP32[$to_virt >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $le_1 = $le_0;
      label = 4;
      break;
    } else {
      $le_0 = $0;
      label = 3;
      break;
    }
   case 4:
    $to_orig = $le_1 + 132 | 0;
    $1 = HEAP32[$to_orig >> 2] | 0;
    $tobool5 = ($1 | 0) == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      $le_1 = $1;
      label = 4;
      break;
    }
   case 5:
    return $le_1 | 0;
  }
  return 0;
}
function _edgecmp($ptr0, $ptr1) {
  $ptr0 = $ptr0 | 0;
  $ptr1 = $ptr1 | 0;
  var $fwdedgea = 0, $fwdedgeb = 0, $0 = 0, $1 = 0, $tree_index = 0, $2 = 0, $and = 0, $tree_index2 = 0, $3 = 0, $and3 = 0, $cmp = 0, $sub = 0, $call = 0, $call4 = 0, $tail = 0, $4 = 0, $rank = 0, $5 = 0, $head = 0, $6 = 0, $rank7 = 0, $7 = 0, $sub8 = 0, $tail9 = 0, $8 = 0, $rank11 = 0, $9 = 0, $head12 = 0, $10 = 0, $rank14 = 0, $11 = 0, $sub15 = 0, $cmp18 = 0, $sub22 = 0, $cond = 0, $cmp24 = 0, $sub30 = 0, $cond32 = 0, $cmp33 = 0, $sub36 = 0, $x = 0, $12 = 0.0, $x43 = 0, $13 = 0.0, $sub44 = 0.0, $x48 = 0, $14 = 0.0, $x52 = 0, $15 = 0.0, $sub53 = 0.0, $conv54 = 0, $cmp55 = 0, $sub61 = 0, $cond63 = 0, $conv64 = 0, $cmp65 = 0, $sub71 = 0, $cond73 = 0, $cmp74 = 0, $sub77 = 0, $id = 0, $16 = 0, $id79 = 0, $17 = 0, $cmp80 = 0, $sub85 = 0, $defined = 0, $18 = 0, $tobool = 0, $defined90 = 0, $19 = 0, $tobool92 = 0, $call_ = 0, $cond96 = 0, $tree_index98 = 0, $20 = 0, $and99 = 0, $tobool100 = 0, $21 = 0, $22 = 0, $head102 = 0, $23 = 0, $tail103 = 0, $tail104 = 0, $24 = 0, $head105 = 0, $tail_port107 = 0, $head_port109 = 0, $25 = 0, $26 = 0, $head_port111 = 0, $tail_port113 = 0, $27 = 0, $28 = 0, $edge_type = 0, $to_orig = 0, $ea_0 = 0, $defined119 = 0, $29 = 0, $tobool121 = 0, $defined125 = 0, $30 = 0, $tobool127 = 0, $call4_ = 0, $cond131 = 0, $tree_index133 = 0, $31 = 0, $and134 = 0, $tobool135 = 0, $32 = 0, $33 = 0, $head138 = 0, $34 = 0, $tail139 = 0, $tail140 = 0, $35 = 0, $head141 = 0, $tail_port143 = 0, $head_port145 = 0, $36 = 0, $37 = 0, $head_port147 = 0, $tail_port149 = 0, $38 = 0, $39 = 0, $edge_type151 = 0, $to_orig153 = 0, $eb_0 = 0, $tail_port156 = 0, $tail_port158 = 0, $call159 = 0, $tobool160 = 0, $head_port164 = 0, $head_port166 = 0, $call167 = 0, $tobool168 = 0, $40 = 0, $and173 = 0, $41 = 0, $and176 = 0, $cmp177 = 0, $sub180 = 0, $id195 = 0, $42 = 0, $id196 = 0, $43 = 0, $sub197 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 384 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fwdedgea = __stackBase__ | 0;
    $fwdedgeb = __stackBase__ + 192 | 0;
    $0 = HEAP32[$ptr0 >> 2] | 0;
    $1 = HEAP32[$ptr1 >> 2] | 0;
    $tree_index = $0 + 180 | 0;
    $2 = HEAP32[$tree_index >> 2] | 0;
    $and = $2 & 15;
    $tree_index2 = $1 + 180 | 0;
    $3 = HEAP32[$tree_index2 >> 2] | 0;
    $and3 = $3 & 15;
    $cmp = ($and | 0) == ($and3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub = $and3 - $and | 0;
    $retval_0 = $sub;
    label = 23;
    break;
   case 4:
    $call = _getmainedge($0) | 0;
    $call4 = _getmainedge($1) | 0;
    $tail = $call + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $rank = $4 + 236 | 0;
    $5 = HEAP32[$rank >> 2] | 0;
    $head = $call + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $rank7 = $6 + 236 | 0;
    $7 = HEAP32[$rank7 >> 2] | 0;
    $sub8 = $5 - $7 | 0;
    $tail9 = $call4 + 16 | 0;
    $8 = HEAP32[$tail9 >> 2] | 0;
    $rank11 = $8 + 236 | 0;
    $9 = HEAP32[$rank11 >> 2] | 0;
    $head12 = $call4 + 12 | 0;
    $10 = HEAP32[$head12 >> 2] | 0;
    $rank14 = $10 + 236 | 0;
    $11 = HEAP32[$rank14 >> 2] | 0;
    $sub15 = $9 - $11 | 0;
    $cmp18 = ($sub8 | 0) > -1;
    $sub22 = -$sub8 | 0;
    $cond = $cmp18 ? $sub8 : $sub22;
    $cmp24 = ($sub15 | 0) > -1;
    $sub30 = -$sub15 | 0;
    $cond32 = $cmp24 ? $sub15 : $sub30;
    $cmp33 = ($cond | 0) == ($cond32 | 0);
    if ($cmp33) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $sub36 = $cond - $cond32 | 0;
    $retval_0 = $sub36;
    label = 23;
    break;
   case 6:
    $x = $4 + 32 | 0;
    $12 = +HEAPF64[$x >> 3];
    $x43 = $6 + 32 | 0;
    $13 = +HEAPF64[$x43 >> 3];
    $sub44 = $12 - $13;
    $x48 = $8 + 32 | 0;
    $14 = +HEAPF64[$x48 >> 3];
    $x52 = $10 + 32 | 0;
    $15 = +HEAPF64[$x52 >> 3];
    $sub53 = $14 - $15;
    $conv54 = ~~$sub44;
    $cmp55 = ($conv54 | 0) > -1;
    $sub61 = -$conv54 | 0;
    $cond63 = $cmp55 ? $conv54 : $sub61;
    $conv64 = ~~$sub53;
    $cmp65 = ($conv64 | 0) > -1;
    $sub71 = -$conv64 | 0;
    $cond73 = $cmp65 ? $conv64 : $sub71;
    $cmp74 = ($cond63 | 0) == ($cond73 | 0);
    if ($cmp74) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub77 = $cond63 - $cond73 | 0;
    $retval_0 = $sub77;
    label = 23;
    break;
   case 8:
    $id = $call + 20 | 0;
    $16 = HEAP32[$id >> 2] | 0;
    $id79 = $call4 + 20 | 0;
    $17 = HEAP32[$id79 >> 2] | 0;
    $cmp80 = ($16 | 0) == ($17 | 0);
    if ($cmp80) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $sub85 = $16 - $17 | 0;
    $retval_0 = $sub85;
    label = 23;
    break;
   case 10:
    $defined = $0 + 60 | 0;
    $18 = HEAP8[$defined] | 0;
    $tobool = $18 << 24 >> 24 == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      $cond96 = $0;
      label = 12;
      break;
    }
   case 11:
    $defined90 = $0 + 100 | 0;
    $19 = HEAP8[$defined90] | 0;
    $tobool92 = $19 << 24 >> 24 == 0;
    $call_ = $tobool92 ? $call : $0;
    $cond96 = $call_;
    label = 12;
    break;
   case 12:
    $tree_index98 = $cond96 + 180 | 0;
    $20 = HEAP32[$tree_index98 >> 2] | 0;
    $and99 = $20 & 32;
    $tobool100 = ($and99 | 0) == 0;
    if ($tobool100) {
      $ea_0 = $cond96;
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $21 = $fwdedgea | 0;
    $22 = $cond96 | 0;
    _memcpy($21 | 0, $22 | 0, 192);
    $head102 = $cond96 + 12 | 0;
    $23 = HEAP32[$head102 >> 2] | 0;
    $tail103 = $fwdedgea + 16 | 0;
    HEAP32[$tail103 >> 2] = $23;
    $tail104 = $cond96 + 16 | 0;
    $24 = HEAP32[$tail104 >> 2] | 0;
    $head105 = $fwdedgea + 12 | 0;
    HEAP32[$head105 >> 2] = $24;
    $tail_port107 = $fwdedgea + 32 | 0;
    $head_port109 = $cond96 + 72 | 0;
    $25 = $tail_port107;
    $26 = $head_port109;
    HEAP32[$25 >> 2] = HEAP32[$26 >> 2] | 0;
    HEAP32[$25 + 4 >> 2] = HEAP32[$26 + 4 >> 2] | 0;
    HEAP32[$25 + 8 >> 2] = HEAP32[$26 + 8 >> 2] | 0;
    HEAP32[$25 + 12 >> 2] = HEAP32[$26 + 12 >> 2] | 0;
    HEAP32[$25 + 16 >> 2] = HEAP32[$26 + 16 >> 2] | 0;
    HEAP32[$25 + 20 >> 2] = HEAP32[$26 + 20 >> 2] | 0;
    HEAP32[$25 + 24 >> 2] = HEAP32[$26 + 24 >> 2] | 0;
    HEAP32[$25 + 28 >> 2] = HEAP32[$26 + 28 >> 2] | 0;
    HEAP32[$25 + 32 >> 2] = HEAP32[$26 + 32 >> 2] | 0;
    HEAP32[$25 + 36 >> 2] = HEAP32[$26 + 36 >> 2] | 0;
    $head_port111 = $fwdedgea + 72 | 0;
    $tail_port113 = $cond96 + 32 | 0;
    $27 = $head_port111;
    $28 = $tail_port113;
    HEAP32[$27 >> 2] = HEAP32[$28 >> 2] | 0;
    HEAP32[$27 + 4 >> 2] = HEAP32[$28 + 4 >> 2] | 0;
    HEAP32[$27 + 8 >> 2] = HEAP32[$28 + 8 >> 2] | 0;
    HEAP32[$27 + 12 >> 2] = HEAP32[$28 + 12 >> 2] | 0;
    HEAP32[$27 + 16 >> 2] = HEAP32[$28 + 16 >> 2] | 0;
    HEAP32[$27 + 20 >> 2] = HEAP32[$28 + 20 >> 2] | 0;
    HEAP32[$27 + 24 >> 2] = HEAP32[$28 + 24 >> 2] | 0;
    HEAP32[$27 + 28 >> 2] = HEAP32[$28 + 28 >> 2] | 0;
    HEAP32[$27 + 32 >> 2] = HEAP32[$28 + 32 >> 2] | 0;
    HEAP32[$27 + 36 >> 2] = HEAP32[$28 + 36 >> 2] | 0;
    $edge_type = $fwdedgea + 128 | 0;
    HEAP8[$edge_type] = 1;
    $to_orig = $fwdedgea + 132 | 0;
    HEAP32[$to_orig >> 2] = $cond96;
    $ea_0 = $fwdedgea;
    label = 14;
    break;
   case 14:
    $defined119 = $1 + 60 | 0;
    $29 = HEAP8[$defined119] | 0;
    $tobool121 = $29 << 24 >> 24 == 0;
    if ($tobool121) {
      label = 15;
      break;
    } else {
      $cond131 = $1;
      label = 16;
      break;
    }
   case 15:
    $defined125 = $1 + 100 | 0;
    $30 = HEAP8[$defined125] | 0;
    $tobool127 = $30 << 24 >> 24 == 0;
    $call4_ = $tobool127 ? $call4 : $1;
    $cond131 = $call4_;
    label = 16;
    break;
   case 16:
    $tree_index133 = $cond131 + 180 | 0;
    $31 = HEAP32[$tree_index133 >> 2] | 0;
    $and134 = $31 & 32;
    $tobool135 = ($and134 | 0) == 0;
    if ($tobool135) {
      $eb_0 = $cond131;
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $32 = $fwdedgeb | 0;
    $33 = $cond131 | 0;
    _memcpy($32 | 0, $33 | 0, 192);
    $head138 = $cond131 + 12 | 0;
    $34 = HEAP32[$head138 >> 2] | 0;
    $tail139 = $fwdedgeb + 16 | 0;
    HEAP32[$tail139 >> 2] = $34;
    $tail140 = $cond131 + 16 | 0;
    $35 = HEAP32[$tail140 >> 2] | 0;
    $head141 = $fwdedgeb + 12 | 0;
    HEAP32[$head141 >> 2] = $35;
    $tail_port143 = $fwdedgeb + 32 | 0;
    $head_port145 = $cond131 + 72 | 0;
    $36 = $tail_port143;
    $37 = $head_port145;
    HEAP32[$36 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$36 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$36 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$36 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    HEAP32[$36 + 16 >> 2] = HEAP32[$37 + 16 >> 2] | 0;
    HEAP32[$36 + 20 >> 2] = HEAP32[$37 + 20 >> 2] | 0;
    HEAP32[$36 + 24 >> 2] = HEAP32[$37 + 24 >> 2] | 0;
    HEAP32[$36 + 28 >> 2] = HEAP32[$37 + 28 >> 2] | 0;
    HEAP32[$36 + 32 >> 2] = HEAP32[$37 + 32 >> 2] | 0;
    HEAP32[$36 + 36 >> 2] = HEAP32[$37 + 36 >> 2] | 0;
    $head_port147 = $fwdedgeb + 72 | 0;
    $tail_port149 = $cond131 + 32 | 0;
    $38 = $head_port147;
    $39 = $tail_port149;
    HEAP32[$38 >> 2] = HEAP32[$39 >> 2] | 0;
    HEAP32[$38 + 4 >> 2] = HEAP32[$39 + 4 >> 2] | 0;
    HEAP32[$38 + 8 >> 2] = HEAP32[$39 + 8 >> 2] | 0;
    HEAP32[$38 + 12 >> 2] = HEAP32[$39 + 12 >> 2] | 0;
    HEAP32[$38 + 16 >> 2] = HEAP32[$39 + 16 >> 2] | 0;
    HEAP32[$38 + 20 >> 2] = HEAP32[$39 + 20 >> 2] | 0;
    HEAP32[$38 + 24 >> 2] = HEAP32[$39 + 24 >> 2] | 0;
    HEAP32[$38 + 28 >> 2] = HEAP32[$39 + 28 >> 2] | 0;
    HEAP32[$38 + 32 >> 2] = HEAP32[$39 + 32 >> 2] | 0;
    HEAP32[$38 + 36 >> 2] = HEAP32[$39 + 36 >> 2] | 0;
    $edge_type151 = $fwdedgeb + 128 | 0;
    HEAP8[$edge_type151] = 1;
    $to_orig153 = $fwdedgeb + 132 | 0;
    HEAP32[$to_orig153 >> 2] = $cond131;
    $eb_0 = $fwdedgeb;
    label = 18;
    break;
   case 18:
    $tail_port156 = $ea_0 + 32 | 0;
    $tail_port158 = $eb_0 + 32 | 0;
    $call159 = _portcmp($tail_port156, $tail_port158) | 0;
    $tobool160 = ($call159 | 0) == 0;
    if ($tobool160) {
      label = 19;
      break;
    } else {
      $retval_0 = $call159;
      label = 23;
      break;
    }
   case 19:
    $head_port164 = $ea_0 + 72 | 0;
    $head_port166 = $eb_0 + 72 | 0;
    $call167 = _portcmp($head_port164, $head_port166) | 0;
    $tobool168 = ($call167 | 0) == 0;
    if ($tobool168) {
      label = 20;
      break;
    } else {
      $retval_0 = $call167;
      label = 23;
      break;
    }
   case 20:
    $40 = HEAP32[$tree_index >> 2] | 0;
    $and173 = $40 & 192;
    $41 = HEAP32[$tree_index2 >> 2] | 0;
    $and176 = $41 & 192;
    $cmp177 = ($and173 | 0) == ($and176 | 0);
    if ($cmp177) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $sub180 = $and173 - $and176 | 0;
    $retval_0 = $sub180;
    label = 23;
    break;
   case 22:
    $id195 = $0 + 20 | 0;
    $42 = HEAP32[$id195 >> 2] | 0;
    $id196 = $1 + 20 | 0;
    $43 = HEAP32[$id196 >> 2] | 0;
    $sub197 = $42 - $43 | 0;
    $retval_0 = $sub197;
    label = 23;
    break;
   case 23:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _make_flat_edge($sp, $P, $edges, $ind, $cnt, $et) {
  $sp = $sp | 0;
  $P = $P | 0;
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $et = $et | 0;
  var $fwdedge = 0, $pn = 0, $tend = 0, $hend = 0, $arrayidx = 0, $0 = 0, $tree_index = 0, $1 = 0, $and = 0, $tobool = 0, $2 = 0, $3 = 0, $head = 0, $4 = 0, $tail = 0, $tail1 = 0, $5 = 0, $head2 = 0, $tail_port = 0, $head_port = 0, $6 = 0, $7 = 0, $head_port6 = 0, $tail_port8 = 0, $8 = 0, $9 = 0, $edge_type = 0, $to_orig = 0, $e_0 = 0, $10 = 0, $adjacent = 0, $11 = 0, $tobool13 = 0, $label = 0, $12 = 0, $tobool17 = 0, $cmp = 0, $tail21 = 0, $13 = 0, $head22 = 0, $14 = 0, $side = 0, $15 = 0, $side28 = 0, $16 = 0, $cmp30 = 0, $cmp32 = 0, $or_cond = 0, $cmp34 = 0, $cmp37 = 0, $or_cond117 = 0, $cmp40 = 0, $conv41 = 0, $tail43 = 0, $17 = 0, $head44 = 0, $18 = 0, $graph = 0, $19 = 0, $rank = 0, $20 = 0, $cmp46 = 0, $has_labels = 0, $21 = 0, $and51 = 0, $tobool52 = 0, $rank55 = 0, $22 = 0, $sub_pn_v = 0, $sub_pn = 0, $v = 0, $23 = 0, $24 = 0, $y = 0, $25 = 0.0, $ht1 = 0, $26 = 0, $conv63 = 0.0, $sub64 = 0.0, $y67 = 0, $27 = 0.0, $sub68 = 0.0, $ht2 = 0, $28 = 0, $conv72 = 0.0, $sub73 = 0.0, $ranksep = 0, $29 = 0, $conv76 = 0.0, $vspace_0 = 0.0, $Multisep = 0, $30 = 0, $conv78 = 0.0, $add = 0, $conv79 = 0.0, $div = 0.0, $div82 = 0.0, $cmp83124 = 0, $boxn87 = 0, $boxn130 = 0, $cmp204 = 0, $nbox = 0, $i_0125 = 0, $add85 = 0, $arrayidx86 = 0, $31 = 0, $32 = 0, $sub88 = 0, $b_sroa_0_0__idx1 = 0, $b_sroa_0_0_copyload2 = 0.0, $b_sroa_2_16__idx8 = 0, $b_sroa_2_16_copyload9 = 0.0, $b_sroa_3_24__idx12 = 0, $b_sroa_3_24_copyload13 = 0.0, $add99 = 0, $conv100 = 0.0, $mul = 0.0, $add101 = 0.0, $mul109 = 0.0, $add110 = 0.0, $33 = 0, $sub115 = 0, $x119 = 0, $34 = 0.0, $35 = 0.0, $36 = 0, $sub131 = 0, $x135 = 0, $37 = 0.0, $38 = 0.0, $add142 = 0.0, $39 = 0, $sub148 = 0, $b_sroa_0_0__idx = 0, $b_sroa_0_0_copyload = 0.0, $b_sroa_2_16__idx7 = 0, $b_sroa_2_16_copyload = 0.0, $b_sroa_3_24__idx11 = 0, $b_sroa_3_24_copyload = 0.0, $sub166 = 0.0, $40 = 0.0, $41 = 0, $cmp180118 = 0, $j_0119 = 0, $arrayidx184 = 0, $inc185 = 0, $42 = 0, $cmp180 = 0, $43 = 0, $cmp197122 = 0, $j_2123_in = 0, $j_2123 = 0, $arrayidx201 = 0, $cmp197 = 0, $call = 0, $call208 = 0, $ps_0 = 0, $44 = 0, $cmp210 = 0, $head214 = 0, $45 = 0, $46 = 0, $47 = 0, $cmp83 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1592 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $fwdedge = __stackBase__ | 0;
    $pn = __stackBase__ + 192 | 0;
    $tend = __stackBase__ + 200 | 0;
    $hend = __stackBase__ + 896 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $tree_index = $0 + 180 | 0;
    $1 = HEAP32[$tree_index >> 2] | 0;
    $and = $1 & 32;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $e_0 = $0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $fwdedge | 0;
    $3 = $0 | 0;
    _memcpy($2 | 0, $3 | 0, 192);
    $head = $0 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $tail = $fwdedge + 16 | 0;
    HEAP32[$tail >> 2] = $4;
    $tail1 = $0 + 16 | 0;
    $5 = HEAP32[$tail1 >> 2] | 0;
    $head2 = $fwdedge + 12 | 0;
    HEAP32[$head2 >> 2] = $5;
    $tail_port = $fwdedge + 32 | 0;
    $head_port = $0 + 72 | 0;
    $6 = $tail_port;
    $7 = $head_port;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    HEAP32[$6 + 16 >> 2] = HEAP32[$7 + 16 >> 2] | 0;
    HEAP32[$6 + 20 >> 2] = HEAP32[$7 + 20 >> 2] | 0;
    HEAP32[$6 + 24 >> 2] = HEAP32[$7 + 24 >> 2] | 0;
    HEAP32[$6 + 28 >> 2] = HEAP32[$7 + 28 >> 2] | 0;
    HEAP32[$6 + 32 >> 2] = HEAP32[$7 + 32 >> 2] | 0;
    HEAP32[$6 + 36 >> 2] = HEAP32[$7 + 36 >> 2] | 0;
    $head_port6 = $fwdedge + 72 | 0;
    $tail_port8 = $0 + 32 | 0;
    $8 = $head_port6;
    $9 = $tail_port8;
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    HEAP32[$8 + 16 >> 2] = HEAP32[$9 + 16 >> 2] | 0;
    HEAP32[$8 + 20 >> 2] = HEAP32[$9 + 20 >> 2] | 0;
    HEAP32[$8 + 24 >> 2] = HEAP32[$9 + 24 >> 2] | 0;
    HEAP32[$8 + 28 >> 2] = HEAP32[$9 + 28 >> 2] | 0;
    HEAP32[$8 + 32 >> 2] = HEAP32[$9 + 32 >> 2] | 0;
    HEAP32[$8 + 36 >> 2] = HEAP32[$9 + 36 >> 2] | 0;
    $edge_type = $fwdedge + 128 | 0;
    HEAP8[$edge_type] = 1;
    $to_orig = $fwdedge + 132 | 0;
    HEAP32[$to_orig >> 2] = $0;
    $e_0 = $fwdedge;
    label = 4;
    break;
   case 4:
    $10 = HEAP32[$arrayidx >> 2] | 0;
    $adjacent = $10 + 129 | 0;
    $11 = HEAP8[$adjacent] | 0;
    $tobool13 = $11 << 24 >> 24 == 0;
    if ($tobool13) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _make_flat_adj_edges($edges, $ind, $cnt, $e_0, $et);
    label = 27;
    break;
   case 6:
    $label = $e_0 + 112 | 0;
    $12 = HEAP32[$label >> 2] | 0;
    $tobool17 = ($12 | 0) == 0;
    if ($tobool17) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _make_flat_labeled_edge($sp, $P, $e_0, $et);
    label = 27;
    break;
   case 8:
    $cmp = ($et | 0) == 2;
    if ($cmp) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $tail21 = $e_0 + 16 | 0;
    $13 = HEAP32[$tail21 >> 2] | 0;
    $head22 = $e_0 + 12 | 0;
    $14 = HEAP32[$head22 >> 2] | 0;
    _makeSimpleFlat($13, $14, $edges, $ind, $cnt, $et);
    label = 27;
    break;
   case 10:
    $side = $e_0 + 65 | 0;
    $15 = HEAP8[$side] | 0;
    $side28 = $e_0 + 105 | 0;
    $16 = HEAP8[$side28] | 0;
    $cmp30 = $15 << 24 >> 24 != 1;
    $cmp32 = $16 << 24 >> 24 == 4;
    $or_cond = $cmp30 | $cmp32;
    if ($or_cond) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $cmp34 = $16 << 24 >> 24 != 1;
    $cmp37 = $15 << 24 >> 24 == 4;
    $or_cond117 = $cmp34 | $cmp37;
    if ($or_cond117) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $cmp40 = ($et | 0) == 8;
    $conv41 = $cmp40 & 1;
    _make_flat_bottom_edges($sp, $P, $edges, $ind, $cnt, $e_0, $conv41);
    label = 27;
    break;
   case 13:
    $tail43 = $e_0 + 16 | 0;
    $17 = HEAP32[$tail43 >> 2] | 0;
    $head44 = $e_0 + 12 | 0;
    $18 = HEAP32[$head44 >> 2] | 0;
    $graph = $17 + 20 | 0;
    $19 = HEAP32[$graph >> 2] | 0;
    $rank = $17 + 236 | 0;
    $20 = HEAP32[$rank >> 2] | 0;
    $cmp46 = ($20 | 0) > 0;
    if ($cmp46) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $has_labels = $19 + 153 | 0;
    $21 = HEAP8[$has_labels] | 0;
    $and51 = $21 & 1;
    $tobool52 = $and51 << 24 >> 24 == 0;
    $rank55 = $19 + 224 | 0;
    $22 = HEAP32[$rank55 >> 2] | 0;
    $sub_pn_v = $tobool52 ? -1 : -2;
    $sub_pn = $sub_pn_v + $20 | 0;
    $v = $22 + ($sub_pn * 44 & -1) + 4 | 0;
    $23 = HEAP32[$v >> 2] | 0;
    $24 = HEAP32[$23 >> 2] | 0;
    $y = $24 + 40 | 0;
    $25 = +HEAPF64[$y >> 3];
    $ht1 = $22 + ($sub_pn * 44 & -1) + 16 | 0;
    $26 = HEAP32[$ht1 >> 2] | 0;
    $conv63 = +($26 | 0);
    $sub64 = $25 - $conv63;
    $y67 = $17 + 40 | 0;
    $27 = +HEAPF64[$y67 >> 3];
    $sub68 = $sub64 - $27;
    $ht2 = $22 + ($20 * 44 & -1) + 20 | 0;
    $28 = HEAP32[$ht2 >> 2] | 0;
    $conv72 = +($28 | 0);
    $sub73 = $sub68 - $conv72;
    $vspace_0 = $sub73;
    label = 16;
    break;
   case 15:
    $ranksep = $19 + 264 | 0;
    $29 = HEAP32[$ranksep >> 2] | 0;
    $conv76 = +($29 | 0);
    $vspace_0 = $conv76;
    label = 16;
    break;
   case 16:
    $Multisep = $sp + 12 | 0;
    $30 = HEAP32[$Multisep >> 2] | 0;
    $conv78 = +($30 | 0);
    $add = $cnt + 1 | 0;
    $conv79 = +($add | 0);
    $div = $conv78 / $conv79;
    $div82 = $vspace_0 / $conv79;
    _makeFlatEnd($sp, $P, $17, $e_0, $tend, 1);
    _makeFlatEnd($sp, $P, $18, $e_0, $hend, 0);
    $cmp83124 = ($cnt | 0) > 0;
    if ($cmp83124) {
      label = 17;
      break;
    } else {
      label = 27;
      break;
    }
   case 17:
    $boxn87 = $tend + 52 | 0;
    $boxn130 = $hend + 52 | 0;
    $cmp204 = ($et | 0) == 8;
    $nbox = $P + 80 | 0;
    $i_0125 = 0;
    label = 18;
    break;
   case 18:
    $add85 = $i_0125 + $ind | 0;
    $arrayidx86 = $edges + ($add85 << 2) | 0;
    $31 = HEAP32[$arrayidx86 >> 2] | 0;
    $32 = HEAP32[$boxn87 >> 2] | 0;
    $sub88 = $32 - 1 | 0;
    $b_sroa_0_0__idx1 = $tend + 56 + ($sub88 << 5) | 0;
    $b_sroa_0_0_copyload2 = +HEAPF64[$b_sroa_0_0__idx1 >> 3];
    $b_sroa_2_16__idx8 = $tend + 56 + ($sub88 << 5) + 16 | 0;
    $b_sroa_2_16_copyload9 = +HEAPF64[$b_sroa_2_16__idx8 >> 3];
    $b_sroa_3_24__idx12 = $tend + 56 + ($sub88 << 5) + 24 | 0;
    $b_sroa_3_24_copyload13 = +HEAPF64[$b_sroa_3_24__idx12 >> 3];
    HEAPF64[6678] = $b_sroa_0_0_copyload2;
    HEAPF64[6679] = $b_sroa_3_24_copyload13;
    $add99 = $i_0125 + 1 | 0;
    $conv100 = +($add99 | 0);
    $mul = $div * $conv100;
    $add101 = $mul + $b_sroa_2_16_copyload9;
    HEAPF64[6680] = $add101;
    $mul109 = $div82 * $conv100;
    $add110 = $mul109 + $b_sroa_3_24_copyload13;
    HEAPF64[6681] = $add110;
    $33 = HEAP32[$boxn87 >> 2] | 0;
    $sub115 = $33 - 1 | 0;
    $x119 = $tend + 56 + ($sub115 << 5) | 0;
    $34 = +HEAPF64[$x119 >> 3];
    HEAPF64[6682] = $34;
    $35 = +HEAPF64[6681];
    HEAPF64[6683] = $35;
    $36 = HEAP32[$boxn130 >> 2] | 0;
    $sub131 = $36 - 1 | 0;
    $x135 = $hend + 56 + ($sub131 << 5) + 16 | 0;
    $37 = +HEAPF64[$x135 >> 3];
    HEAPF64[6684] = $37;
    $38 = +HEAPF64[6683];
    $add142 = $div82 + $38;
    HEAPF64[6685] = $add142;
    $39 = HEAP32[$boxn130 >> 2] | 0;
    $sub148 = $39 - 1 | 0;
    $b_sroa_0_0__idx = $hend + 56 + ($sub148 << 5) | 0;
    $b_sroa_0_0_copyload = +HEAPF64[$b_sroa_0_0__idx >> 3];
    $b_sroa_2_16__idx7 = $hend + 56 + ($sub148 << 5) + 16 | 0;
    $b_sroa_2_16_copyload = +HEAPF64[$b_sroa_2_16__idx7 >> 3];
    $b_sroa_3_24__idx11 = $hend + 56 + ($sub148 << 5) + 24 | 0;
    $b_sroa_3_24_copyload = +HEAPF64[$b_sroa_3_24__idx11 >> 3];
    HEAPF64[6688] = $b_sroa_2_16_copyload;
    HEAPF64[6687] = $b_sroa_3_24_copyload;
    $sub166 = $b_sroa_0_0_copyload - $mul;
    HEAPF64[6686] = $sub166;
    $40 = +HEAPF64[6683];
    HEAPF64[6689] = $40;
    $41 = HEAP32[$boxn87 >> 2] | 0;
    $cmp180118 = ($41 | 0) > 0;
    if ($cmp180118) {
      $j_0119 = 0;
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $arrayidx184 = $tend + 56 + ($j_0119 << 5) | 0;
    _add_box($P, $arrayidx184);
    $inc185 = $j_0119 + 1 | 0;
    $42 = HEAP32[$boxn87 >> 2] | 0;
    $cmp180 = ($inc185 | 0) < ($42 | 0);
    if ($cmp180) {
      $j_0119 = $inc185;
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    _add_box($P, 53424);
    _add_box($P, 53456);
    _add_box($P, 53488);
    $43 = HEAP32[$boxn130 >> 2] | 0;
    $cmp197122 = ($43 | 0) > 0;
    if ($cmp197122) {
      $j_2123_in = $43;
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $j_2123 = $j_2123_in - 1 | 0;
    $arrayidx201 = $hend + 56 + ($j_2123 << 5) | 0;
    _add_box($P, $arrayidx201);
    $cmp197 = ($j_2123 | 0) > 0;
    if ($cmp197) {
      $j_2123_in = $j_2123;
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    if ($cmp204) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $call = _routesplines($P, $pn) | 0;
    $ps_0 = $call;
    label = 25;
    break;
   case 24:
    $call208 = _routepolylines($P, $pn) | 0;
    $ps_0 = $call208;
    label = 25;
    break;
   case 25:
    $44 = HEAP32[$pn >> 2] | 0;
    $cmp210 = ($44 | 0) == 0;
    if ($cmp210) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $head214 = $31 + 12 | 0;
    $45 = HEAP32[$head214 >> 2] | 0;
    $46 = $31;
    $47 = $45;
    _clip_and_install($46, $47, $ps_0, $44, 4216);
    HEAP32[$nbox >> 2] = 0;
    $cmp83 = ($add99 | 0) < ($cnt | 0);
    if ($cmp83) {
      $i_0125 = $add99;
      label = 18;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    STACKTOP = __stackBase__;
    return;
  }
}
function _make_regular_edge($sp, $P, $edges, $ind, $cnt, $et) {
  $sp = $sp | 0;
  $P = $P | 0;
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $et = $et | 0;
  var $hn = 0, $fwdedgea = 0, $fwdedgeb = 0, $fwdedge = 0, $tend = 0, $hend = 0, $b = 0, $pn = 0, $pointn = 0, $tmp = 0, $tmp122 = 0, $tmp153 = 0, $tmp175 = 0, $tmp188 = 0, $tmp275 = 0, $tmp322 = 0, $tmp324 = 0, $tmp361 = 0, $0 = 0, $tobool = 0, $call = 0, $1 = 0, $call1 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $tail = 0, $4 = 0, $graph = 0, $5 = 0, $rank = 0, $6 = 0, $head = 0, $7 = 0, $rank4 = 0, $8 = 0, $sub = 0, $cmp = 0, $sub19 = 0, $cond = 0, $cmp20 = 0, $9 = 0, $10 = 0, $tree_index = 0, $11 = 0, $and = 0, $tobool23 = 0, $12 = 0, $13 = 0, $tail26 = 0, $14 = 0, $head28 = 0, $tail_port = 0, $head_port = 0, $15 = 0, $16 = 0, $head_port32 = 0, $tail_port34 = 0, $17 = 0, $18 = 0, $edge_type = 0, $to_orig = 0, $19 = 0, $tail38 = 0, $tail_port40 = 0, $20 = 0, $21 = 0, $tail44 = 0, $call46 = 0, $le_0 = 0, $to_virt = 0, $22 = 0, $tobool48 = 0, $head51 = 0, $23 = 0, $head52 = 0, $defined = 0, $edge_type56 = 0, $x = 0, $to_orig63 = 0, $24 = 0, $tree_index66 = 0, $25 = 0, $and67 = 0, $tobool68 = 0, $26 = 0, $27 = 0, $28 = 0, $tail72 = 0, $29 = 0, $head74 = 0, $tail_port76 = 0, $head_port78 = 0, $30 = 0, $31 = 0, $head_port80 = 0, $tail_port82 = 0, $32 = 0, $33 = 0, $edge_type84 = 0, $to_orig86 = 0, $hackflag_0 = 0, $e_0 = 0, $cmp89 = 0, $34 = 0, $call90 = 0, $tobool91 = 0, $cmp94 = 0, $tail95 = 0, $35 = 0, $head96 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $call97 = 0, $40 = 0, $boxn98 = 0, $41 = 0, $sub99 = 0, $y101 = 0, $42 = 0.0, $y103 = 0, $43 = 0, $sub105 = 0, $y108 = 0, $44 = 0.0, $y110 = 0, $y112 = 0, $45 = 0.0, $rank114 = 0, $46 = 0, $graph115 = 0, $47 = 0, $rank117 = 0, $48 = 0, $ht1 = 0, $49 = 0, $conv119 = 0.0, $sub120 = 0.0, $conv121 = 0, $50 = 0, $x124 = 0, $51 = 0.0, $x126 = 0, $52 = 0.0, $cmp127 = 0, $53 = 0.0, $54 = 0.0, $cmp134 = 0, $55 = 0, $inc = 0, $arrayidx139 = 0, $56 = 0, $57 = 0, $node_type194215 = 0, $58 = 0, $cmp144195216 = 0, $59 = 0, $has_labels = 0, $60 = 0, $61 = 0, $62 = 0, $boxn191 = 0, $theta = 0, $constrained = 0, $63 = 0, $theta314 = 0, $constrained316 = 0, $64 = 0, $tn_0_ph221 = 0, $e_1_ph220 = 0, $si_0_ph218 = 0, $sl_0_ph217 = 0, $65 = 0, $tn_0201 = 0, $e_1200 = 0, $smode_0199 = 0, $si_0198 = 0, $sl_0197 = 0, $boxn_0196 = 0, $66 = 0, $call146 = 0, $lnot = 0, $inc149225 = 0, $arrayidx150 = 0, $rank152 = 0, $67 = 0, $68 = 0, $tobool154 = 0, $69 = 0, $call156 = 0, $70 = 0, $and159 = 0, $tobool160 = 0, $cond161 = 0, $cmp162 = 0, $sub165 = 0, $call156_sub165 = 0, $si_0_ = 0, $smode_0_ = 0, $sl_1 = 0, $si_1 = 0, $smode_1 = 0, $tobool167 = 0, $cmp168 = 0, $or_cond = 0, $dec = 0, $inc171 = 0, $arrayidx172 = 0, $71 = 0, $list = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $list178 = 0, $76 = 0, $77 = 0, $tail180 = 0, $78 = 0, $head181 = 0, $79 = 0, $node_type = 0, $80 = 0, $cmp144 = 0, $81 = 0, $list186 = 0, $82 = 0, $83 = 0, $head189 = 0, $84 = 0, $call190 = 0, $85 = 0, $86 = 0, $sub192 = 0, $arrayidx194 = 0, $87 = 0, $y197 = 0, $88 = 0.0, $rank199 = 0, $89 = 0, $graph200 = 0, $90 = 0, $rank202 = 0, $91 = 0, $ht2 = 0, $92 = 0, $conv204 = 0.0, $add = 0.0, $conv205 = 0, $93 = 0.0, $94 = 0.0, $cmp211 = 0, $95 = 0.0, $96 = 0.0, $cmp218 = 0, $97 = 0, $inc222 = 0, $arrayidx224 = 0, $98 = 0, $call229 = 0, $call231 = 0, $99 = 0, $cmp235 = 0, $arrayidx238 = 0, $100 = 0, $101 = 0, $arrayidx240 = 0, $arrayidx241 = 0, $102 = 0, $sub242 = 0, $arrayidx243 = 0, $103 = 0, $104 = 0, $105 = 0, $ps_0_ph = 0, $_pr = 0, $106 = 0, $ps_0 = 0, $cmp246 = 0, $ps_0165 = 0, $107 = 0, $108 = 0, $add250 = 0, $109 = 0, $cmp251 = 0, $mul = 0, $110 = 0, $111 = 0, $mul255 = 0, $call256 = 0, $112 = 0, $113 = 0, $cmp258186 = 0, $114 = 0, $115 = 0, $pointn_promoted188 = 0, $116 = 0, $smax236 = 0, $inc260189 = 0, $i_0187 = 0, $inc260 = 0, $arrayidx261 = 0, $arrayidx262 = 0, $117 = 0, $118 = 0, $inc263 = 0, $cmp258 = 0, $119 = 0, $120 = 0, $list266 = 0, $121 = 0, $122 = 0, $123 = 0, $call268 = 0, $tail269 = 0, $124 = 0, $head270 = 0, $125 = 0, $list273 = 0, $126 = 0, $127 = 0, $call276 = 0, $128 = 0, $129 = 0, $sub278 = 0, $arrayidx280 = 0, $y283 = 0, $130 = 0.0, $rank285 = 0, $131 = 0, $graph286 = 0, $132 = 0, $rank288 = 0, $133 = 0, $ht1290 = 0, $134 = 0, $conv291 = 0.0, $sub292 = 0.0, $conv293 = 0, $135 = 0.0, $136 = 0.0, $cmp299 = 0, $137 = 0.0, $138 = 0.0, $cmp306 = 0, $139 = 0, $inc310 = 0, $arrayidx312 = 0, $140 = 0, $141 = 0, $node_type194 = 0, $142 = 0, $cmp144195 = 0, $segfirst_0_ph208 = 0, $tn_0_lcssa = 0, $e_1_lcssa = 0, $boxn_0_lcssa = 0, $inc318 = 0, $arrayidx319 = 0, $rank321 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $tobool325 = 0, $cond329 = 0, $head330 = 0, $149 = 0, $call331 = 0, $150 = 0, $boxn332 = 0, $151 = 0, $sub333 = 0, $y337 = 0, $152 = 0.0, $153 = 0, $sub341 = 0, $y345 = 0, $154 = 0.0, $155 = 0, $y350 = 0, $156 = 0.0, $rank352 = 0, $157 = 0, $graph353 = 0, $158 = 0, $rank355 = 0, $159 = 0, $ht2357 = 0, $160 = 0, $conv358 = 0.0, $add359 = 0.0, $conv360 = 0, $161 = 0, $162 = 0.0, $163 = 0.0, $cmp366 = 0, $164 = 0.0, $165 = 0.0, $cmp373 = 0, $166 = 0, $inc377 = 0, $arrayidx379 = 0, $167 = 0, $call383 = 0, $call385 = 0, $ps_1 = 0, $168 = 0, $cmp390 = 0, $or_cond168 = 0, $arrayidx393 = 0, $169 = 0, $170 = 0, $arrayidx395 = 0, $arrayidx396 = 0, $171 = 0, $sub397 = 0, $arrayidx398 = 0, $172 = 0, $173 = 0, $174 = 0, $cmp400 = 0, $175 = 0, $176 = 0, $add404 = 0, $177 = 0, $cmp405 = 0, $mul409 = 0, $178 = 0, $179 = 0, $mul410 = 0, $call411 = 0, $180 = 0, $181 = 0, $cmp414183 = 0, $182 = 0, $183 = 0, $pointn_promoted = 0, $184 = 0, $smax = 0, $inc417185 = 0, $i_1184 = 0, $inc417 = 0, $arrayidx418 = 0, $arrayidx419 = 0, $185 = 0, $186 = 0, $inc421 = 0, $cmp414 = 0, $187 = 0, $head425 = 0, $188 = 0, $189 = 0, $cond429 = 0, $cmp431 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $Multisep = 0, $195 = 0, $sub438180 = 0, $cmp439181 = 0, $sub435 = 0, $196 = 0, $mul436 = 0, $div = 0, $conv442 = 0.0, $197 = 0, $198 = 0, $sub438 = 0, $i_2182 = 0, $x444 = 0, $199 = 0.0, $sub445 = 0.0, $inc447 = 0, $cmp439 = 0, $200 = 0, $201 = 0, $cmp449 = 0, $202 = 0, $203 = 0, $mul452 = 0, $call453 = 0, $204 = 0, $205 = 0, $cmp456177 = 0, $206 = 0, $207 = 0, $208 = 0, $i_3178 = 0, $arrayidx459 = 0, $arrayidx460 = 0, $209 = 0, $210 = 0, $inc462 = 0, $cmp456 = 0, $_lcssa176 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $cmp465174 = 0, $215 = 0, $sub495169 = 0, $cmp496170 = 0, $cmp508172 = 0, $sub495 = 0, $216 = 0, $tail478 = 0, $head480 = 0, $tail_port482 = 0, $217 = 0, $head_port486 = 0, $218 = 0, $edge_type490 = 0, $to_orig492 = 0, $j_0175 = 0, $add468 = 0, $arrayidx469 = 0, $219 = 0, $tree_index471 = 0, $220 = 0, $and472 = 0, $tobool473 = 0, $221 = 0, $head477 = 0, $222 = 0, $tail479 = 0, $223 = 0, $head_port484 = 0, $224 = 0, $tail_port488 = 0, $225 = 0, $e_2 = 0, $i_4171 = 0, $226 = 0, $conv500 = 0.0, $227 = 0, $x502 = 0, $228 = 0.0, $add503 = 0.0, $inc505 = 0, $cmp496 = 0, $229 = 0, $230 = 0, $i_5173 = 0, $arrayidx511 = 0, $arrayidx512 = 0, $231 = 0, $232 = 0, $inc514 = 0, $cmp508 = 0, $head516 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $inc518 = 0, $cmp465 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 2312 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $hn = __stackBase__ | 0;
    $fwdedgea = __stackBase__ + 8 | 0;
    $fwdedgeb = __stackBase__ + 200 | 0;
    $fwdedge = __stackBase__ + 392 | 0;
    $tend = __stackBase__ + 584 | 0;
    $hend = __stackBase__ + 1280 | 0;
    $b = __stackBase__ + 1976 | 0;
    $pn = __stackBase__ + 2008 | 0;
    $pointn = __stackBase__ + 2016 | 0;
    $tmp = __stackBase__ + 2024 | 0;
    $tmp122 = __stackBase__ + 2056 | 0;
    $tmp153 = __stackBase__ + 2088 | 0;
    $tmp175 = __stackBase__ + 2120 | 0;
    $tmp188 = __stackBase__ + 2152 | 0;
    $tmp275 = __stackBase__ + 2184 | 0;
    $tmp322 = __stackBase__ + 2216 | 0;
    $tmp324 = __stackBase__ + 2248 | 0;
    $tmp361 = __stackBase__ + 2280 | 0;
    $0 = HEAP32[2854] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _gmalloc(32e3) | 0;
    $1 = $call;
    HEAP32[2854] = $1;
    $call1 = _gmalloc(32e3) | 0;
    $2 = $call1;
    HEAP32[2852] = $2;
    HEAP32[2858] = 2e3;
    HEAP32[2856] = 2e3;
    label = 4;
    break;
   case 4:
    $arrayidx = $edges + ($ind << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $tail = $3 + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $graph = $4 + 20 | 0;
    $5 = HEAP32[$graph >> 2] | 0;
    $rank = $4 + 236 | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $head = $3 + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    $rank4 = $7 + 236 | 0;
    $8 = HEAP32[$rank4 >> 2] | 0;
    $sub = $6 - $8 | 0;
    $cmp = ($sub | 0) > -1;
    $sub19 = -$sub | 0;
    $cond = $cmp ? $sub : $sub19;
    $cmp20 = ($cond | 0) > 1;
    if ($cmp20) {
      label = 5;
      break;
    } else {
      label = 11;
      break;
    }
   case 5:
    $9 = $fwdedgea | 0;
    $10 = $3 | 0;
    _memcpy($9 | 0, $10 | 0, 192);
    $tree_index = $3 + 180 | 0;
    $11 = HEAP32[$tree_index >> 2] | 0;
    $and = $11 & 32;
    $tobool23 = ($and | 0) == 0;
    $12 = $fwdedgeb | 0;
    _memcpy($12 | 0, $10 | 0, 192);
    if ($tobool23) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $13 = HEAP32[$head >> 2] | 0;
    $tail26 = $fwdedgeb + 16 | 0;
    HEAP32[$tail26 >> 2] = $13;
    $14 = HEAP32[$tail >> 2] | 0;
    $head28 = $fwdedgeb + 12 | 0;
    HEAP32[$head28 >> 2] = $14;
    $tail_port = $fwdedgeb + 32 | 0;
    $head_port = $3 + 72 | 0;
    $15 = $tail_port;
    $16 = $head_port;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    HEAP32[$15 + 16 >> 2] = HEAP32[$16 + 16 >> 2] | 0;
    HEAP32[$15 + 20 >> 2] = HEAP32[$16 + 20 >> 2] | 0;
    HEAP32[$15 + 24 >> 2] = HEAP32[$16 + 24 >> 2] | 0;
    HEAP32[$15 + 28 >> 2] = HEAP32[$16 + 28 >> 2] | 0;
    HEAP32[$15 + 32 >> 2] = HEAP32[$16 + 32 >> 2] | 0;
    HEAP32[$15 + 36 >> 2] = HEAP32[$16 + 36 >> 2] | 0;
    $head_port32 = $fwdedgeb + 72 | 0;
    $tail_port34 = $3 + 32 | 0;
    $17 = $head_port32;
    $18 = $tail_port34;
    HEAP32[$17 >> 2] = HEAP32[$18 >> 2] | 0;
    HEAP32[$17 + 4 >> 2] = HEAP32[$18 + 4 >> 2] | 0;
    HEAP32[$17 + 8 >> 2] = HEAP32[$18 + 8 >> 2] | 0;
    HEAP32[$17 + 12 >> 2] = HEAP32[$18 + 12 >> 2] | 0;
    HEAP32[$17 + 16 >> 2] = HEAP32[$18 + 16 >> 2] | 0;
    HEAP32[$17 + 20 >> 2] = HEAP32[$18 + 20 >> 2] | 0;
    HEAP32[$17 + 24 >> 2] = HEAP32[$18 + 24 >> 2] | 0;
    HEAP32[$17 + 28 >> 2] = HEAP32[$18 + 28 >> 2] | 0;
    HEAP32[$17 + 32 >> 2] = HEAP32[$18 + 32 >> 2] | 0;
    HEAP32[$17 + 36 >> 2] = HEAP32[$18 + 36 >> 2] | 0;
    $edge_type = $fwdedgeb + 128 | 0;
    HEAP8[$edge_type] = 1;
    $to_orig = $fwdedgeb + 132 | 0;
    HEAP32[$to_orig >> 2] = $3;
    $19 = HEAP32[$head >> 2] | 0;
    $tail38 = $fwdedgea + 16 | 0;
    HEAP32[$tail38 >> 2] = $19;
    $tail_port40 = $fwdedgea + 32 | 0;
    $20 = $tail_port40;
    HEAP32[$20 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$20 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$20 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$20 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    HEAP32[$20 + 16 >> 2] = HEAP32[$16 + 16 >> 2] | 0;
    HEAP32[$20 + 20 >> 2] = HEAP32[$16 + 20 >> 2] | 0;
    HEAP32[$20 + 24 >> 2] = HEAP32[$16 + 24 >> 2] | 0;
    HEAP32[$20 + 28 >> 2] = HEAP32[$16 + 28 >> 2] | 0;
    HEAP32[$20 + 32 >> 2] = HEAP32[$16 + 32 >> 2] | 0;
    HEAP32[$20 + 36 >> 2] = HEAP32[$16 + 36 >> 2] | 0;
    label = 8;
    break;
   case 7:
    $21 = HEAP32[$tail >> 2] | 0;
    $tail44 = $fwdedgea + 16 | 0;
    HEAP32[$tail44 >> 2] = $21;
    label = 8;
    break;
   case 8:
    $call46 = _getmainedge($3) | 0;
    $le_0 = $call46;
    label = 9;
    break;
   case 9:
    $to_virt = $le_0 + 188 | 0;
    $22 = HEAP32[$to_virt >> 2] | 0;
    $tobool48 = ($22 | 0) == 0;
    if ($tobool48) {
      label = 10;
      break;
    } else {
      $le_0 = $22;
      label = 9;
      break;
    }
   case 10:
    $head51 = $le_0 + 12 | 0;
    $23 = HEAP32[$head51 >> 2] | 0;
    $head52 = $fwdedgea + 12 | 0;
    HEAP32[$head52 >> 2] = $23;
    $defined = $fwdedgea + 100 | 0;
    HEAP8[$defined] = 0;
    $edge_type56 = $fwdedgea + 128 | 0;
    HEAP8[$edge_type56] = 1;
    $x = $fwdedgea + 72 | 0;
    $to_orig63 = $fwdedgea + 132 | 0;
    $24 = $x;
    _memset($24 | 0, 0, 16);
    HEAP32[$to_orig63 >> 2] = $3;
    $e_0 = $fwdedgea;
    $hackflag_0 = 1;
    label = 13;
    break;
   case 11:
    $tree_index66 = $3 + 180 | 0;
    $25 = HEAP32[$tree_index66 >> 2] | 0;
    $and67 = $25 & 32;
    $tobool68 = ($and67 | 0) == 0;
    if ($tobool68) {
      $e_0 = $3;
      $hackflag_0 = 0;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $26 = $fwdedgea | 0;
    $27 = $3 | 0;
    _memcpy($26 | 0, $27 | 0, 192);
    $28 = HEAP32[$head >> 2] | 0;
    $tail72 = $fwdedgea + 16 | 0;
    HEAP32[$tail72 >> 2] = $28;
    $29 = HEAP32[$tail >> 2] | 0;
    $head74 = $fwdedgea + 12 | 0;
    HEAP32[$head74 >> 2] = $29;
    $tail_port76 = $fwdedgea + 32 | 0;
    $head_port78 = $3 + 72 | 0;
    $30 = $tail_port76;
    $31 = $head_port78;
    HEAP32[$30 >> 2] = HEAP32[$31 >> 2] | 0;
    HEAP32[$30 + 4 >> 2] = HEAP32[$31 + 4 >> 2] | 0;
    HEAP32[$30 + 8 >> 2] = HEAP32[$31 + 8 >> 2] | 0;
    HEAP32[$30 + 12 >> 2] = HEAP32[$31 + 12 >> 2] | 0;
    HEAP32[$30 + 16 >> 2] = HEAP32[$31 + 16 >> 2] | 0;
    HEAP32[$30 + 20 >> 2] = HEAP32[$31 + 20 >> 2] | 0;
    HEAP32[$30 + 24 >> 2] = HEAP32[$31 + 24 >> 2] | 0;
    HEAP32[$30 + 28 >> 2] = HEAP32[$31 + 28 >> 2] | 0;
    HEAP32[$30 + 32 >> 2] = HEAP32[$31 + 32 >> 2] | 0;
    HEAP32[$30 + 36 >> 2] = HEAP32[$31 + 36 >> 2] | 0;
    $head_port80 = $fwdedgea + 72 | 0;
    $tail_port82 = $3 + 32 | 0;
    $32 = $head_port80;
    $33 = $tail_port82;
    HEAP32[$32 >> 2] = HEAP32[$33 >> 2] | 0;
    HEAP32[$32 + 4 >> 2] = HEAP32[$33 + 4 >> 2] | 0;
    HEAP32[$32 + 8 >> 2] = HEAP32[$33 + 8 >> 2] | 0;
    HEAP32[$32 + 12 >> 2] = HEAP32[$33 + 12 >> 2] | 0;
    HEAP32[$32 + 16 >> 2] = HEAP32[$33 + 16 >> 2] | 0;
    HEAP32[$32 + 20 >> 2] = HEAP32[$33 + 20 >> 2] | 0;
    HEAP32[$32 + 24 >> 2] = HEAP32[$33 + 24 >> 2] | 0;
    HEAP32[$32 + 28 >> 2] = HEAP32[$33 + 28 >> 2] | 0;
    HEAP32[$32 + 32 >> 2] = HEAP32[$33 + 32 >> 2] | 0;
    HEAP32[$32 + 36 >> 2] = HEAP32[$33 + 36 >> 2] | 0;
    $edge_type84 = $fwdedgea + 128 | 0;
    HEAP8[$edge_type84] = 1;
    $to_orig86 = $fwdedgea + 132 | 0;
    HEAP32[$to_orig86 >> 2] = $3;
    $e_0 = $fwdedgea;
    $hackflag_0 = 0;
    label = 13;
    break;
   case 13:
    $cmp89 = ($et | 0) == 2;
    if ($cmp89) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $34 = HEAP32[2854] | 0;
    $call90 = _makeLineEdge($e_0, $34, $hn) | 0;
    HEAP32[$pointn >> 2] = $call90;
    $tobool91 = ($call90 | 0) == 0;
    if ($tobool91) {
      label = 15;
      break;
    } else {
      label = 65;
      break;
    }
   case 15:
    $cmp94 = ($et | 0) == 8;
    HEAP32[$pointn >> 2] = 0;
    $tail95 = $e_0 + 16 | 0;
    $35 = HEAP32[$tail95 >> 2] | 0;
    $head96 = $e_0 + 12 | 0;
    $36 = HEAP32[$head96 >> 2] | 0;
    HEAP32[$hn >> 2] = $36;
    _maximal_bbox($tmp, $sp, $35, 0, $e_0);
    $37 = $tend;
    $38 = $tmp;
    HEAP32[$37 >> 2] = HEAP32[$38 >> 2] | 0;
    HEAP32[$37 + 4 >> 2] = HEAP32[$38 + 4 >> 2] | 0;
    HEAP32[$37 + 8 >> 2] = HEAP32[$38 + 8 >> 2] | 0;
    HEAP32[$37 + 12 >> 2] = HEAP32[$38 + 12 >> 2] | 0;
    HEAP32[$37 + 16 >> 2] = HEAP32[$38 + 16 >> 2] | 0;
    HEAP32[$37 + 20 >> 2] = HEAP32[$38 + 20 >> 2] | 0;
    HEAP32[$37 + 24 >> 2] = HEAP32[$38 + 24 >> 2] | 0;
    HEAP32[$37 + 28 >> 2] = HEAP32[$38 + 28 >> 2] | 0;
    $39 = $b;
    HEAP32[$39 >> 2] = HEAP32[$38 >> 2] | 0;
    HEAP32[$39 + 4 >> 2] = HEAP32[$38 + 4 >> 2] | 0;
    HEAP32[$39 + 8 >> 2] = HEAP32[$38 + 8 >> 2] | 0;
    HEAP32[$39 + 12 >> 2] = HEAP32[$38 + 12 >> 2] | 0;
    HEAP32[$39 + 16 >> 2] = HEAP32[$38 + 16 >> 2] | 0;
    HEAP32[$39 + 20 >> 2] = HEAP32[$38 + 20 >> 2] | 0;
    $call97 = _spline_merge($35) | 0;
    $40 = $e_0;
    _beginpath($P, $40, 1, $tend, $call97);
    $boxn98 = $tend + 52 | 0;
    $41 = HEAP32[$boxn98 >> 2] | 0;
    $sub99 = $41 - 1 | 0;
    $y101 = $tend + 56 + ($sub99 << 5) + 24 | 0;
    $42 = +HEAPF64[$y101 >> 3];
    $y103 = $b + 24 | 0;
    HEAPF64[$y103 >> 3] = $42;
    $43 = HEAP32[$boxn98 >> 2] | 0;
    $sub105 = $43 - 1 | 0;
    $y108 = $tend + 56 + ($sub105 << 5) + 8 | 0;
    $44 = +HEAPF64[$y108 >> 3];
    $y110 = $b + 8 | 0;
    HEAPF64[$y110 >> 3] = $44;
    $y112 = $35 + 40 | 0;
    $45 = +HEAPF64[$y112 >> 3];
    $rank114 = $35 + 236 | 0;
    $46 = HEAP32[$rank114 >> 2] | 0;
    $graph115 = $35 + 20 | 0;
    $47 = HEAP32[$graph115 >> 2] | 0;
    $rank117 = $47 + 224 | 0;
    $48 = HEAP32[$rank117 >> 2] | 0;
    $ht1 = $48 + ($46 * 44 & -1) + 16 | 0;
    $49 = HEAP32[$ht1 >> 2] | 0;
    $conv119 = +($49 | 0);
    $sub120 = $45 - $conv119;
    $conv121 = ~~$sub120;
    _makeregularend($tmp122, $b, 1, $conv121);
    $50 = $tmp122;
    HEAP32[$39 >> 2] = HEAP32[$50 >> 2] | 0;
    HEAP32[$39 + 4 >> 2] = HEAP32[$50 + 4 >> 2] | 0;
    HEAP32[$39 + 8 >> 2] = HEAP32[$50 + 8 >> 2] | 0;
    HEAP32[$39 + 12 >> 2] = HEAP32[$50 + 12 >> 2] | 0;
    HEAP32[$39 + 16 >> 2] = HEAP32[$50 + 16 >> 2] | 0;
    HEAP32[$39 + 20 >> 2] = HEAP32[$50 + 20 >> 2] | 0;
    HEAP32[$39 + 24 >> 2] = HEAP32[$50 + 24 >> 2] | 0;
    HEAP32[$39 + 28 >> 2] = HEAP32[$50 + 28 >> 2] | 0;
    $x124 = $b | 0;
    $51 = +HEAPF64[$x124 >> 3];
    $x126 = $b + 16 | 0;
    $52 = +HEAPF64[$x126 >> 3];
    $cmp127 = $51 < $52;
    if ($cmp127) {
      label = 16;
      break;
    } else {
      label = 18;
      break;
    }
   case 16:
    $53 = +HEAPF64[$y110 >> 3];
    $54 = +HEAPF64[$y103 >> 3];
    $cmp134 = $53 < $54;
    if ($cmp134) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $55 = HEAP32[$boxn98 >> 2] | 0;
    $inc = $55 + 1 | 0;
    HEAP32[$boxn98 >> 2] = $inc;
    $arrayidx139 = $tend + 56 + ($55 << 5) | 0;
    $56 = $arrayidx139;
    HEAP32[$56 >> 2] = HEAP32[$39 >> 2] | 0;
    HEAP32[$56 + 4 >> 2] = HEAP32[$39 + 4 >> 2] | 0;
    HEAP32[$56 + 8 >> 2] = HEAP32[$39 + 8 >> 2] | 0;
    HEAP32[$56 + 12 >> 2] = HEAP32[$39 + 12 >> 2] | 0;
    HEAP32[$56 + 16 >> 2] = HEAP32[$39 + 16 >> 2] | 0;
    HEAP32[$56 + 20 >> 2] = HEAP32[$39 + 20 >> 2] | 0;
    HEAP32[$56 + 24 >> 2] = HEAP32[$39 + 24 >> 2] | 0;
    HEAP32[$56 + 28 >> 2] = HEAP32[$39 + 28 >> 2] | 0;
    label = 18;
    break;
   case 18:
    $57 = HEAP32[$hn >> 2] | 0;
    $node_type194215 = $57 + 162 | 0;
    $58 = HEAP8[$node_type194215] | 0;
    $cmp144195216 = $58 << 24 >> 24 == 1;
    if ($cmp144195216) {
      label = 19;
      break;
    } else {
      $boxn_0_lcssa = 0;
      $e_1_lcssa = $e_0;
      $tn_0_lcssa = $35;
      $segfirst_0_ph208 = $e_0;
      label = 46;
      break;
    }
   case 19:
    $59 = $tmp153;
    $has_labels = $5 + 153 | 0;
    $60 = $tmp175;
    $61 = $hend;
    $62 = $tmp188;
    $boxn191 = $hend + 52 | 0;
    $theta = $P + 56 | 0;
    $constrained = $P + 69 | 0;
    $63 = $tmp275;
    $theta314 = $P + 16 | 0;
    $constrained316 = $P + 29 | 0;
    $sl_0_ph217 = 0;
    $si_0_ph218 = -1;
    $e_1_ph220 = $e_0;
    $tn_0_ph221 = $35;
    $64 = $57;
    label = 20;
    break;
   case 20:
    $boxn_0196 = 0;
    $sl_0197 = $sl_0_ph217;
    $si_0198 = $si_0_ph218;
    $smode_0199 = 0;
    $e_1200 = $e_1_ph220;
    $tn_0201 = $tn_0_ph221;
    $65 = $64;
    label = 21;
    break;
   case 21:
    $66 = HEAP32[1055] | 0;
    $call146 = FUNCTION_TABLE_ii[$66 & 1023]($65) | 0;
    $lnot = $call146 << 24 >> 24 == 0;
    if ($lnot) {
      label = 22;
      break;
    } else {
      $boxn_0_lcssa = $boxn_0196;
      $e_1_lcssa = $e_1200;
      $tn_0_lcssa = $tn_0201;
      $segfirst_0_ph208 = $e_1_ph220;
      label = 46;
      break;
    }
   case 22:
    $inc149225 = $boxn_0196 | 1;
    $arrayidx150 = 53424 + ($boxn_0196 << 5) | 0;
    $rank152 = $tn_0201 + 236 | 0;
    $67 = HEAP32[$rank152 >> 2] | 0;
    _rank_box($tmp153, $sp, $5, $67);
    $68 = $arrayidx150;
    HEAP32[$68 >> 2] = HEAP32[$59 >> 2] | 0;
    HEAP32[$68 + 4 >> 2] = HEAP32[$59 + 4 >> 2] | 0;
    HEAP32[$68 + 8 >> 2] = HEAP32[$59 + 8 >> 2] | 0;
    HEAP32[$68 + 12 >> 2] = HEAP32[$59 + 12 >> 2] | 0;
    HEAP32[$68 + 16 >> 2] = HEAP32[$59 + 16 >> 2] | 0;
    HEAP32[$68 + 20 >> 2] = HEAP32[$59 + 20 >> 2] | 0;
    HEAP32[$68 + 24 >> 2] = HEAP32[$59 + 24 >> 2] | 0;
    HEAP32[$68 + 28 >> 2] = HEAP32[$59 + 28 >> 2] | 0;
    $tobool154 = ($smode_0199 | 0) == 0;
    if ($tobool154) {
      label = 23;
      break;
    } else {
      $smode_1 = $smode_0199;
      $si_1 = $si_0198;
      $sl_1 = $sl_0197;
      label = 24;
      break;
    }
   case 23:
    $69 = HEAP32[$hn >> 2] | 0;
    $call156 = _straight_len($69) | 0;
    $70 = HEAP8[$has_labels] | 0;
    $and159 = $70 & 1;
    $tobool160 = $and159 << 24 >> 24 != 0;
    $cond161 = $tobool160 ? 5 : 3;
    $cmp162 = ($call156 | 0) < ($cond161 | 0);
    $sub165 = $call156 - 2 | 0;
    $call156_sub165 = $cmp162 ? $call156 : $sub165;
    $si_0_ = $cmp162 ? $si_0198 : 1;
    $smode_0_ = $cmp162 ? $smode_0199 : 1;
    $smode_1 = $smode_0_;
    $si_1 = $si_0_;
    $sl_1 = $call156_sub165;
    label = 24;
    break;
   case 24:
    $tobool167 = ($smode_1 | 0) == 0;
    $cmp168 = ($si_1 | 0) > 0;
    $or_cond = $tobool167 | $cmp168;
    if ($or_cond) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $dec = $si_1 - 1 | 0;
    $inc171 = $boxn_0196 + 2 | 0;
    $arrayidx172 = 53424 + ($inc149225 << 5) | 0;
    $71 = HEAP32[$hn >> 2] | 0;
    $list = $71 + 184 | 0;
    $72 = HEAP32[$list >> 2] | 0;
    $73 = HEAP32[$72 >> 2] | 0;
    _maximal_bbox($tmp175, $sp, $71, $e_1200, $73);
    $74 = $arrayidx172;
    HEAP32[$74 >> 2] = HEAP32[$60 >> 2] | 0;
    HEAP32[$74 + 4 >> 2] = HEAP32[$60 + 4 >> 2] | 0;
    HEAP32[$74 + 8 >> 2] = HEAP32[$60 + 8 >> 2] | 0;
    HEAP32[$74 + 12 >> 2] = HEAP32[$60 + 12 >> 2] | 0;
    HEAP32[$74 + 16 >> 2] = HEAP32[$60 + 16 >> 2] | 0;
    HEAP32[$74 + 20 >> 2] = HEAP32[$60 + 20 >> 2] | 0;
    HEAP32[$74 + 24 >> 2] = HEAP32[$60 + 24 >> 2] | 0;
    HEAP32[$74 + 28 >> 2] = HEAP32[$60 + 28 >> 2] | 0;
    $75 = HEAP32[$hn >> 2] | 0;
    $list178 = $75 + 184 | 0;
    $76 = HEAP32[$list178 >> 2] | 0;
    $77 = HEAP32[$76 >> 2] | 0;
    $tail180 = $77 + 16 | 0;
    $78 = HEAP32[$tail180 >> 2] | 0;
    $head181 = $77 + 12 | 0;
    $79 = HEAP32[$head181 >> 2] | 0;
    HEAP32[$hn >> 2] = $79;
    $node_type = $79 + 162 | 0;
    $80 = HEAP8[$node_type] | 0;
    $cmp144 = $80 << 24 >> 24 == 1;
    if ($cmp144) {
      $boxn_0196 = $inc171;
      $sl_0197 = $sl_1;
      $si_0198 = $dec;
      $smode_0199 = $smode_1;
      $e_1200 = $77;
      $tn_0201 = $78;
      $65 = $79;
      label = 21;
      break;
    } else {
      $boxn_0_lcssa = $inc171;
      $e_1_lcssa = $77;
      $tn_0_lcssa = $78;
      $segfirst_0_ph208 = $e_1_ph220;
      label = 46;
      break;
    }
   case 26:
    $81 = HEAP32[$hn >> 2] | 0;
    $list186 = $81 + 184 | 0;
    $82 = HEAP32[$list186 >> 2] | 0;
    $83 = HEAP32[$82 >> 2] | 0;
    _maximal_bbox($tmp188, $sp, $81, $e_1200, $83);
    HEAP32[$61 >> 2] = HEAP32[$62 >> 2] | 0;
    HEAP32[$61 + 4 >> 2] = HEAP32[$62 + 4 >> 2] | 0;
    HEAP32[$61 + 8 >> 2] = HEAP32[$62 + 8 >> 2] | 0;
    HEAP32[$61 + 12 >> 2] = HEAP32[$62 + 12 >> 2] | 0;
    HEAP32[$61 + 16 >> 2] = HEAP32[$62 + 16 >> 2] | 0;
    HEAP32[$61 + 20 >> 2] = HEAP32[$62 + 20 >> 2] | 0;
    HEAP32[$61 + 24 >> 2] = HEAP32[$62 + 24 >> 2] | 0;
    HEAP32[$61 + 28 >> 2] = HEAP32[$62 + 28 >> 2] | 0;
    $head189 = $e_1200 + 12 | 0;
    $84 = HEAP32[$head189 >> 2] | 0;
    $call190 = _spline_merge($84) | 0;
    $85 = $e_1200;
    _endpath($P, $85, 1, $hend, $call190);
    $86 = HEAP32[$boxn191 >> 2] | 0;
    $sub192 = $86 - 1 | 0;
    $arrayidx194 = $hend + 56 + ($sub192 << 5) | 0;
    $87 = HEAP32[$hn >> 2] | 0;
    $y197 = $87 + 40 | 0;
    $88 = +HEAPF64[$y197 >> 3];
    $rank199 = $87 + 236 | 0;
    $89 = HEAP32[$rank199 >> 2] | 0;
    $graph200 = $87 + 20 | 0;
    $90 = HEAP32[$graph200 >> 2] | 0;
    $rank202 = $90 + 224 | 0;
    $91 = HEAP32[$rank202 >> 2] | 0;
    $ht2 = $91 + ($89 * 44 & -1) + 20 | 0;
    $92 = HEAP32[$ht2 >> 2] | 0;
    $conv204 = +($92 | 0);
    $add = $88 + $conv204;
    $conv205 = ~~$add;
    _makeregularend($b, $arrayidx194, 4, $conv205);
    $93 = +HEAPF64[$x124 >> 3];
    $94 = +HEAPF64[$x126 >> 3];
    $cmp211 = $93 < $94;
    if ($cmp211) {
      label = 27;
      break;
    } else {
      label = 29;
      break;
    }
   case 27:
    $95 = +HEAPF64[$y110 >> 3];
    $96 = +HEAPF64[$y103 >> 3];
    $cmp218 = $95 < $96;
    if ($cmp218) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $97 = HEAP32[$boxn191 >> 2] | 0;
    $inc222 = $97 + 1 | 0;
    HEAP32[$boxn191 >> 2] = $inc222;
    $arrayidx224 = $hend + 56 + ($97 << 5) | 0;
    $98 = $arrayidx224;
    HEAP32[$98 >> 2] = HEAP32[$39 >> 2] | 0;
    HEAP32[$98 + 4 >> 2] = HEAP32[$39 + 4 >> 2] | 0;
    HEAP32[$98 + 8 >> 2] = HEAP32[$39 + 8 >> 2] | 0;
    HEAP32[$98 + 12 >> 2] = HEAP32[$39 + 12 >> 2] | 0;
    HEAP32[$98 + 16 >> 2] = HEAP32[$39 + 16 >> 2] | 0;
    HEAP32[$98 + 20 >> 2] = HEAP32[$39 + 20 >> 2] | 0;
    HEAP32[$98 + 24 >> 2] = HEAP32[$39 + 24 >> 2] | 0;
    HEAP32[$98 + 28 >> 2] = HEAP32[$39 + 28 >> 2] | 0;
    label = 29;
    break;
   case 29:
    HEAPF64[$theta >> 3] = 1.5707963267948966;
    HEAP8[$constrained] = 1;
    _completeregularpath($P, $e_1_ph220, $e_1200, $tend, $hend, $inc149225);
    if ($cmp94) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $call229 = _routesplines($P, $pn) | 0;
    $ps_0_ph = $call229;
    label = 34;
    break;
   case 31:
    $call231 = _routepolylines($P, $pn) | 0;
    if ($cmp89) {
      label = 32;
      break;
    } else {
      $ps_0_ph = $call231;
      label = 34;
      break;
    }
   case 32:
    $99 = HEAP32[$pn >> 2] | 0;
    $cmp235 = ($99 | 0) > 4;
    if ($cmp235) {
      label = 33;
      break;
    } else {
      $ps_0 = $call231;
      $106 = $99;
      label = 35;
      break;
    }
   case 33:
    $arrayidx238 = $call231 + 16 | 0;
    $100 = $arrayidx238;
    $101 = $call231;
    HEAP32[$100 >> 2] = HEAP32[$101 >> 2] | 0;
    HEAP32[$100 + 4 >> 2] = HEAP32[$101 + 4 >> 2] | 0;
    HEAP32[$100 + 8 >> 2] = HEAP32[$101 + 8 >> 2] | 0;
    HEAP32[$100 + 12 >> 2] = HEAP32[$101 + 12 >> 2] | 0;
    $arrayidx240 = $call231 + 48 | 0;
    $arrayidx241 = $call231 + 32 | 0;
    $102 = HEAP32[$pn >> 2] | 0;
    $sub242 = $102 - 1 | 0;
    $arrayidx243 = $call231 + ($sub242 << 4) | 0;
    $103 = $arrayidx241;
    $104 = $arrayidx243;
    HEAP32[$103 >> 2] = HEAP32[$104 >> 2] | 0;
    HEAP32[$103 + 4 >> 2] = HEAP32[$104 + 4 >> 2] | 0;
    HEAP32[$103 + 8 >> 2] = HEAP32[$104 + 8 >> 2] | 0;
    HEAP32[$103 + 12 >> 2] = HEAP32[$104 + 12 >> 2] | 0;
    $105 = $arrayidx240;
    _memmove($105 | 0, $104 | 0, 16);
    HEAP32[$pn >> 2] = 4;
    $107 = 4;
    $ps_0165 = $call231;
    label = 36;
    break;
   case 34:
    $_pr = HEAP32[$pn >> 2] | 0;
    $ps_0 = $ps_0_ph;
    $106 = $_pr;
    label = 35;
    break;
   case 35:
    $cmp246 = ($106 | 0) == 0;
    if ($cmp246) {
      label = 85;
      break;
    } else {
      $107 = $106;
      $ps_0165 = $ps_0;
      label = 36;
      break;
    }
   case 36:
    $108 = HEAP32[$pointn >> 2] | 0;
    $add250 = $108 + $107 | 0;
    $109 = HEAP32[2858] | 0;
    $cmp251 = ($add250 | 0) > ($109 | 0);
    if ($cmp251) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $mul = $add250 << 1;
    HEAP32[2858] = $mul;
    $110 = HEAP32[2854] | 0;
    $111 = $110;
    $mul255 = $add250 << 5;
    $call256 = _grealloc($111, $mul255) | 0;
    $112 = $call256;
    HEAP32[2854] = $112;
    label = 38;
    break;
   case 38:
    $113 = HEAP32[$pn >> 2] | 0;
    $cmp258186 = ($113 | 0) > 0;
    if ($cmp258186) {
      label = 39;
      break;
    } else {
      label = 42;
      break;
    }
   case 39:
    $114 = HEAP32[2854] | 0;
    $115 = HEAP32[$pn >> 2] | 0;
    $pointn_promoted188 = HEAP32[$pointn >> 2] | 0;
    $116 = ($115 | 0) > 1;
    $smax236 = $116 ? $115 : 1;
    $i_0187 = 0;
    $inc260189 = $pointn_promoted188;
    label = 40;
    break;
   case 40:
    $inc260 = $inc260189 + 1 | 0;
    $arrayidx261 = $114 + ($inc260189 << 4) | 0;
    $arrayidx262 = $ps_0165 + ($i_0187 << 4) | 0;
    $117 = $arrayidx261;
    $118 = $arrayidx262;
    HEAP32[$117 >> 2] = HEAP32[$118 >> 2] | 0;
    HEAP32[$117 + 4 >> 2] = HEAP32[$118 + 4 >> 2] | 0;
    HEAP32[$117 + 8 >> 2] = HEAP32[$118 + 8 >> 2] | 0;
    HEAP32[$117 + 12 >> 2] = HEAP32[$118 + 12 >> 2] | 0;
    $inc263 = $i_0187 + 1 | 0;
    $cmp258 = ($inc263 | 0) < ($115 | 0);
    if ($cmp258) {
      $i_0187 = $inc263;
      $inc260189 = $inc260;
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $119 = $pointn_promoted188 + $smax236 | 0;
    HEAP32[$pointn >> 2] = $119;
    label = 42;
    break;
   case 42:
    $120 = HEAP32[$hn >> 2] | 0;
    $list266 = $120 + 184 | 0;
    $121 = HEAP32[$list266 >> 2] | 0;
    $122 = HEAP32[$121 >> 2] | 0;
    $123 = HEAP32[2854] | 0;
    $call268 = _straight_path($122, $sl_1, $123, $pointn) | 0;
    _recover_slack($e_1_ph220, $P);
    $tail269 = $call268 + 16 | 0;
    $124 = HEAP32[$tail269 >> 2] | 0;
    $head270 = $call268 + 12 | 0;
    $125 = HEAP32[$head270 >> 2] | 0;
    HEAP32[$hn >> 2] = $125;
    $list273 = $124 + 176 | 0;
    $126 = HEAP32[$list273 >> 2] | 0;
    $127 = HEAP32[$126 >> 2] | 0;
    _maximal_bbox($tmp275, $sp, $124, $127, $call268);
    HEAP32[$37 >> 2] = HEAP32[$63 >> 2] | 0;
    HEAP32[$37 + 4 >> 2] = HEAP32[$63 + 4 >> 2] | 0;
    HEAP32[$37 + 8 >> 2] = HEAP32[$63 + 8 >> 2] | 0;
    HEAP32[$37 + 12 >> 2] = HEAP32[$63 + 12 >> 2] | 0;
    HEAP32[$37 + 16 >> 2] = HEAP32[$63 + 16 >> 2] | 0;
    HEAP32[$37 + 20 >> 2] = HEAP32[$63 + 20 >> 2] | 0;
    HEAP32[$37 + 24 >> 2] = HEAP32[$63 + 24 >> 2] | 0;
    HEAP32[$37 + 28 >> 2] = HEAP32[$63 + 28 >> 2] | 0;
    $call276 = _spline_merge($124) | 0;
    $128 = $call268;
    _beginpath($P, $128, 1, $tend, $call276);
    $129 = HEAP32[$boxn98 >> 2] | 0;
    $sub278 = $129 - 1 | 0;
    $arrayidx280 = $tend + 56 + ($sub278 << 5) | 0;
    $y283 = $124 + 40 | 0;
    $130 = +HEAPF64[$y283 >> 3];
    $rank285 = $124 + 236 | 0;
    $131 = HEAP32[$rank285 >> 2] | 0;
    $graph286 = $124 + 20 | 0;
    $132 = HEAP32[$graph286 >> 2] | 0;
    $rank288 = $132 + 224 | 0;
    $133 = HEAP32[$rank288 >> 2] | 0;
    $ht1290 = $133 + ($131 * 44 & -1) + 16 | 0;
    $134 = HEAP32[$ht1290 >> 2] | 0;
    $conv291 = +($134 | 0);
    $sub292 = $130 - $conv291;
    $conv293 = ~~$sub292;
    _makeregularend($b, $arrayidx280, 1, $conv293);
    $135 = +HEAPF64[$x124 >> 3];
    $136 = +HEAPF64[$x126 >> 3];
    $cmp299 = $135 < $136;
    if ($cmp299) {
      label = 43;
      break;
    } else {
      label = 45;
      break;
    }
   case 43:
    $137 = +HEAPF64[$y110 >> 3];
    $138 = +HEAPF64[$y103 >> 3];
    $cmp306 = $137 < $138;
    if ($cmp306) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    $139 = HEAP32[$boxn98 >> 2] | 0;
    $inc310 = $139 + 1 | 0;
    HEAP32[$boxn98 >> 2] = $inc310;
    $arrayidx312 = $tend + 56 + ($139 << 5) | 0;
    $140 = $arrayidx312;
    HEAP32[$140 >> 2] = HEAP32[$39 >> 2] | 0;
    HEAP32[$140 + 4 >> 2] = HEAP32[$39 + 4 >> 2] | 0;
    HEAP32[$140 + 8 >> 2] = HEAP32[$39 + 8 >> 2] | 0;
    HEAP32[$140 + 12 >> 2] = HEAP32[$39 + 12 >> 2] | 0;
    HEAP32[$140 + 16 >> 2] = HEAP32[$39 + 16 >> 2] | 0;
    HEAP32[$140 + 20 >> 2] = HEAP32[$39 + 20 >> 2] | 0;
    HEAP32[$140 + 24 >> 2] = HEAP32[$39 + 24 >> 2] | 0;
    HEAP32[$140 + 28 >> 2] = HEAP32[$39 + 28 >> 2] | 0;
    label = 45;
    break;
   case 45:
    HEAPF64[$theta314 >> 3] = -1.5707963267948966;
    HEAP8[$constrained316] = 1;
    $141 = HEAP32[$hn >> 2] | 0;
    $node_type194 = $141 + 162 | 0;
    $142 = HEAP8[$node_type194] | 0;
    $cmp144195 = $142 << 24 >> 24 == 1;
    if ($cmp144195) {
      $sl_0_ph217 = $sl_1;
      $si_0_ph218 = $si_1;
      $e_1_ph220 = $call268;
      $tn_0_ph221 = $124;
      $64 = $141;
      label = 20;
      break;
    } else {
      $boxn_0_lcssa = 0;
      $e_1_lcssa = $call268;
      $tn_0_lcssa = $124;
      $segfirst_0_ph208 = $call268;
      label = 46;
      break;
    }
   case 46:
    $inc318 = $boxn_0_lcssa + 1 | 0;
    $arrayidx319 = 53424 + ($boxn_0_lcssa << 5) | 0;
    $rank321 = $tn_0_lcssa + 236 | 0;
    $143 = HEAP32[$rank321 >> 2] | 0;
    _rank_box($tmp322, $sp, $5, $143);
    $144 = $arrayidx319;
    $145 = $tmp322;
    HEAP32[$144 >> 2] = HEAP32[$145 >> 2] | 0;
    HEAP32[$144 + 4 >> 2] = HEAP32[$145 + 4 >> 2] | 0;
    HEAP32[$144 + 8 >> 2] = HEAP32[$145 + 8 >> 2] | 0;
    HEAP32[$144 + 12 >> 2] = HEAP32[$145 + 12 >> 2] | 0;
    HEAP32[$144 + 16 >> 2] = HEAP32[$145 + 16 >> 2] | 0;
    HEAP32[$144 + 20 >> 2] = HEAP32[$145 + 20 >> 2] | 0;
    HEAP32[$144 + 24 >> 2] = HEAP32[$145 + 24 >> 2] | 0;
    HEAP32[$144 + 28 >> 2] = HEAP32[$145 + 28 >> 2] | 0;
    $146 = HEAP32[$hn >> 2] | 0;
    _maximal_bbox($tmp324, $sp, $146, $e_1_lcssa, 0);
    $147 = $hend;
    $148 = $tmp324;
    HEAP32[$147 >> 2] = HEAP32[$148 >> 2] | 0;
    HEAP32[$147 + 4 >> 2] = HEAP32[$148 + 4 >> 2] | 0;
    HEAP32[$147 + 8 >> 2] = HEAP32[$148 + 8 >> 2] | 0;
    HEAP32[$147 + 12 >> 2] = HEAP32[$148 + 12 >> 2] | 0;
    HEAP32[$147 + 16 >> 2] = HEAP32[$148 + 16 >> 2] | 0;
    HEAP32[$147 + 20 >> 2] = HEAP32[$148 + 20 >> 2] | 0;
    HEAP32[$147 + 24 >> 2] = HEAP32[$148 + 24 >> 2] | 0;
    HEAP32[$147 + 28 >> 2] = HEAP32[$148 + 28 >> 2] | 0;
    HEAP32[$39 >> 2] = HEAP32[$148 >> 2] | 0;
    HEAP32[$39 + 4 >> 2] = HEAP32[$148 + 4 >> 2] | 0;
    HEAP32[$39 + 8 >> 2] = HEAP32[$148 + 8 >> 2] | 0;
    HEAP32[$39 + 12 >> 2] = HEAP32[$148 + 12 >> 2] | 0;
    HEAP32[$39 + 16 >> 2] = HEAP32[$148 + 16 >> 2] | 0;
    HEAP32[$39 + 20 >> 2] = HEAP32[$148 + 20 >> 2] | 0;
    HEAP32[$39 + 24 >> 2] = HEAP32[$148 + 24 >> 2] | 0;
    HEAP32[$39 + 28 >> 2] = HEAP32[$148 + 28 >> 2] | 0;
    $tobool325 = ($hackflag_0 | 0) != 0;
    $cond329 = $tobool325 ? $fwdedgeb : $e_1_lcssa;
    $head330 = $e_1_lcssa + 12 | 0;
    $149 = HEAP32[$head330 >> 2] | 0;
    $call331 = _spline_merge($149) | 0;
    $150 = $cond329;
    _endpath($P, $150, 1, $hend, $call331);
    $boxn332 = $hend + 52 | 0;
    $151 = HEAP32[$boxn332 >> 2] | 0;
    $sub333 = $151 - 1 | 0;
    $y337 = $hend + 56 + ($sub333 << 5) + 24 | 0;
    $152 = +HEAPF64[$y337 >> 3];
    HEAPF64[$y103 >> 3] = $152;
    $153 = HEAP32[$boxn332 >> 2] | 0;
    $sub341 = $153 - 1 | 0;
    $y345 = $hend + 56 + ($sub341 << 5) + 8 | 0;
    $154 = +HEAPF64[$y345 >> 3];
    HEAPF64[$y110 >> 3] = $154;
    $155 = HEAP32[$hn >> 2] | 0;
    $y350 = $155 + 40 | 0;
    $156 = +HEAPF64[$y350 >> 3];
    $rank352 = $155 + 236 | 0;
    $157 = HEAP32[$rank352 >> 2] | 0;
    $graph353 = $155 + 20 | 0;
    $158 = HEAP32[$graph353 >> 2] | 0;
    $rank355 = $158 + 224 | 0;
    $159 = HEAP32[$rank355 >> 2] | 0;
    $ht2357 = $159 + ($157 * 44 & -1) + 20 | 0;
    $160 = HEAP32[$ht2357 >> 2] | 0;
    $conv358 = +($160 | 0);
    $add359 = $156 + $conv358;
    $conv360 = ~~$add359;
    _makeregularend($tmp361, $b, 4, $conv360);
    $161 = $tmp361;
    HEAP32[$39 >> 2] = HEAP32[$161 >> 2] | 0;
    HEAP32[$39 + 4 >> 2] = HEAP32[$161 + 4 >> 2] | 0;
    HEAP32[$39 + 8 >> 2] = HEAP32[$161 + 8 >> 2] | 0;
    HEAP32[$39 + 12 >> 2] = HEAP32[$161 + 12 >> 2] | 0;
    HEAP32[$39 + 16 >> 2] = HEAP32[$161 + 16 >> 2] | 0;
    HEAP32[$39 + 20 >> 2] = HEAP32[$161 + 20 >> 2] | 0;
    HEAP32[$39 + 24 >> 2] = HEAP32[$161 + 24 >> 2] | 0;
    HEAP32[$39 + 28 >> 2] = HEAP32[$161 + 28 >> 2] | 0;
    $162 = +HEAPF64[$x124 >> 3];
    $163 = +HEAPF64[$x126 >> 3];
    $cmp366 = $162 < $163;
    if ($cmp366) {
      label = 47;
      break;
    } else {
      label = 49;
      break;
    }
   case 47:
    $164 = +HEAPF64[$y110 >> 3];
    $165 = +HEAPF64[$y103 >> 3];
    $cmp373 = $164 < $165;
    if ($cmp373) {
      label = 48;
      break;
    } else {
      label = 49;
      break;
    }
   case 48:
    $166 = HEAP32[$boxn332 >> 2] | 0;
    $inc377 = $166 + 1 | 0;
    HEAP32[$boxn332 >> 2] = $inc377;
    $arrayidx379 = $hend + 56 + ($166 << 5) | 0;
    $167 = $arrayidx379;
    HEAP32[$167 >> 2] = HEAP32[$39 >> 2] | 0;
    HEAP32[$167 + 4 >> 2] = HEAP32[$39 + 4 >> 2] | 0;
    HEAP32[$167 + 8 >> 2] = HEAP32[$39 + 8 >> 2] | 0;
    HEAP32[$167 + 12 >> 2] = HEAP32[$39 + 12 >> 2] | 0;
    HEAP32[$167 + 16 >> 2] = HEAP32[$39 + 16 >> 2] | 0;
    HEAP32[$167 + 20 >> 2] = HEAP32[$39 + 20 >> 2] | 0;
    HEAP32[$167 + 24 >> 2] = HEAP32[$39 + 24 >> 2] | 0;
    HEAP32[$167 + 28 >> 2] = HEAP32[$39 + 28 >> 2] | 0;
    label = 49;
    break;
   case 49:
    _completeregularpath($P, $segfirst_0_ph208, $e_1_lcssa, $tend, $hend, $inc318);
    if ($cmp94) {
      label = 50;
      break;
    } else {
      label = 51;
      break;
    }
   case 50:
    $call383 = _routesplines($P, $pn) | 0;
    $ps_1 = $call383;
    label = 52;
    break;
   case 51:
    $call385 = _routepolylines($P, $pn) | 0;
    $ps_1 = $call385;
    label = 52;
    break;
   case 52:
    $168 = HEAP32[$pn >> 2] | 0;
    $cmp390 = ($168 | 0) > 4;
    $or_cond168 = $cmp89 & $cmp390;
    if ($or_cond168) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    $arrayidx393 = $ps_1 + 16 | 0;
    $169 = $arrayidx393;
    $170 = $ps_1;
    HEAP32[$169 >> 2] = HEAP32[$170 >> 2] | 0;
    HEAP32[$169 + 4 >> 2] = HEAP32[$170 + 4 >> 2] | 0;
    HEAP32[$169 + 8 >> 2] = HEAP32[$170 + 8 >> 2] | 0;
    HEAP32[$169 + 12 >> 2] = HEAP32[$170 + 12 >> 2] | 0;
    $arrayidx395 = $ps_1 + 48 | 0;
    $arrayidx396 = $ps_1 + 32 | 0;
    $171 = HEAP32[$pn >> 2] | 0;
    $sub397 = $171 - 1 | 0;
    $arrayidx398 = $ps_1 + ($sub397 << 4) | 0;
    $172 = $arrayidx396;
    $173 = $arrayidx398;
    HEAP32[$172 >> 2] = HEAP32[$173 >> 2] | 0;
    HEAP32[$172 + 4 >> 2] = HEAP32[$173 + 4 >> 2] | 0;
    HEAP32[$172 + 8 >> 2] = HEAP32[$173 + 8 >> 2] | 0;
    HEAP32[$172 + 12 >> 2] = HEAP32[$173 + 12 >> 2] | 0;
    $174 = $arrayidx395;
    _memmove($174 | 0, $173 | 0, 16);
    HEAP32[$pn >> 2] = 4;
    $175 = 4;
    label = 55;
    break;
   case 54:
    $cmp400 = ($168 | 0) == 0;
    if ($cmp400) {
      label = 85;
      break;
    } else {
      $175 = $168;
      label = 55;
      break;
    }
   case 55:
    $176 = HEAP32[$pointn >> 2] | 0;
    $add404 = $176 + $175 | 0;
    $177 = HEAP32[2858] | 0;
    $cmp405 = ($add404 | 0) > ($177 | 0);
    if ($cmp405) {
      label = 56;
      break;
    } else {
      label = 57;
      break;
    }
   case 56:
    $mul409 = $add404 << 1;
    HEAP32[2858] = $mul409;
    $178 = HEAP32[2854] | 0;
    $179 = $178;
    $mul410 = $add404 << 5;
    $call411 = _grealloc($179, $mul410) | 0;
    $180 = $call411;
    HEAP32[2854] = $180;
    label = 57;
    break;
   case 57:
    $181 = HEAP32[$pn >> 2] | 0;
    $cmp414183 = ($181 | 0) > 0;
    if ($cmp414183) {
      label = 58;
      break;
    } else {
      label = 61;
      break;
    }
   case 58:
    $182 = HEAP32[2854] | 0;
    $183 = HEAP32[$pn >> 2] | 0;
    $pointn_promoted = HEAP32[$pointn >> 2] | 0;
    $184 = ($183 | 0) > 1;
    $smax = $184 ? $183 : 1;
    $i_1184 = 0;
    $inc417185 = $pointn_promoted;
    label = 59;
    break;
   case 59:
    $inc417 = $inc417185 + 1 | 0;
    $arrayidx418 = $182 + ($inc417185 << 4) | 0;
    $arrayidx419 = $ps_1 + ($i_1184 << 4) | 0;
    $185 = $arrayidx418;
    $186 = $arrayidx419;
    HEAP32[$185 >> 2] = HEAP32[$186 >> 2] | 0;
    HEAP32[$185 + 4 >> 2] = HEAP32[$186 + 4 >> 2] | 0;
    HEAP32[$185 + 8 >> 2] = HEAP32[$186 + 8 >> 2] | 0;
    HEAP32[$185 + 12 >> 2] = HEAP32[$186 + 12 >> 2] | 0;
    $inc421 = $i_1184 + 1 | 0;
    $cmp414 = ($inc421 | 0) < ($183 | 0);
    if ($cmp414) {
      $i_1184 = $inc421;
      $inc417185 = $inc417;
      label = 59;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $187 = $pointn_promoted + $smax | 0;
    HEAP32[$pointn >> 2] = $187;
    label = 61;
    break;
   case 61:
    _recover_slack($segfirst_0_ph208, $P);
    if ($tobool325) {
      label = 62;
      break;
    } else {
      label = 63;
      break;
    }
   case 62:
    $head425 = $fwdedgeb + 12 | 0;
    $188 = HEAP32[$head425 >> 2] | 0;
    $cond429 = $188;
    label = 64;
    break;
   case 63:
    $189 = HEAP32[$head330 >> 2] | 0;
    $cond429 = $189;
    label = 64;
    break;
   case 64:
    HEAP32[$hn >> 2] = $cond429;
    label = 65;
    break;
   case 65:
    $cmp431 = ($cnt | 0) == 1;
    if ($cmp431) {
      label = 66;
      break;
    } else {
      label = 67;
      break;
    }
   case 66:
    $190 = HEAP32[$hn >> 2] | 0;
    $191 = HEAP32[2854] | 0;
    $192 = HEAP32[$pointn >> 2] | 0;
    $193 = $e_0;
    $194 = $190;
    _clip_and_install($193, $194, $191, $192, 4216);
    label = 85;
    break;
   case 67:
    $Multisep = $sp + 12 | 0;
    $195 = HEAP32[$pointn >> 2] | 0;
    $sub438180 = $195 - 1 | 0;
    $cmp439181 = ($sub438180 | 0) > 1;
    if ($cmp439181) {
      label = 68;
      break;
    } else {
      label = 70;
      break;
    }
   case 68:
    $sub435 = $cnt - 1 | 0;
    $196 = HEAP32[$Multisep >> 2] | 0;
    $mul436 = Math_imul($196, $sub435);
    $div = ($mul436 | 0) / 2 & -1;
    $conv442 = +($div | 0);
    $197 = HEAP32[2854] | 0;
    $198 = HEAP32[$pointn >> 2] | 0;
    $sub438 = $198 - 1 | 0;
    $i_2182 = 1;
    label = 69;
    break;
   case 69:
    $x444 = $197 + ($i_2182 << 4) | 0;
    $199 = +HEAPF64[$x444 >> 3];
    $sub445 = $199 - $conv442;
    HEAPF64[$x444 >> 3] = $sub445;
    $inc447 = $i_2182 + 1 | 0;
    $cmp439 = ($inc447 | 0) < ($sub438 | 0);
    if ($cmp439) {
      $i_2182 = $inc447;
      label = 69;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $200 = HEAP32[2858] | 0;
    $201 = HEAP32[2856] | 0;
    $cmp449 = ($200 | 0) > ($201 | 0);
    if ($cmp449) {
      label = 71;
      break;
    } else {
      label = 72;
      break;
    }
   case 71:
    HEAP32[2856] = $200;
    $202 = HEAP32[2852] | 0;
    $203 = $202;
    $mul452 = $200 << 4;
    $call453 = _grealloc($203, $mul452) | 0;
    $204 = $call453;
    HEAP32[2852] = $204;
    label = 72;
    break;
   case 72:
    $205 = HEAP32[$pointn >> 2] | 0;
    $cmp456177 = ($205 | 0) > 0;
    if ($cmp456177) {
      label = 73;
      break;
    } else {
      $_lcssa176 = $205;
      label = 75;
      break;
    }
   case 73:
    $206 = HEAP32[2852] | 0;
    $207 = HEAP32[2854] | 0;
    $208 = HEAP32[$pointn >> 2] | 0;
    $i_3178 = 0;
    label = 74;
    break;
   case 74:
    $arrayidx459 = $206 + ($i_3178 << 4) | 0;
    $arrayidx460 = $207 + ($i_3178 << 4) | 0;
    $209 = $arrayidx459;
    $210 = $arrayidx460;
    HEAP32[$209 >> 2] = HEAP32[$210 >> 2] | 0;
    HEAP32[$209 + 4 >> 2] = HEAP32[$210 + 4 >> 2] | 0;
    HEAP32[$209 + 8 >> 2] = HEAP32[$210 + 8 >> 2] | 0;
    HEAP32[$209 + 12 >> 2] = HEAP32[$210 + 12 >> 2] | 0;
    $inc462 = $i_3178 + 1 | 0;
    $cmp456 = ($inc462 | 0) < ($208 | 0);
    if ($cmp456) {
      $i_3178 = $inc462;
      label = 74;
      break;
    } else {
      $_lcssa176 = $208;
      label = 75;
      break;
    }
   case 75:
    $211 = HEAP32[$hn >> 2] | 0;
    $212 = HEAP32[2852] | 0;
    $213 = $e_0;
    $214 = $211;
    _clip_and_install($213, $214, $212, $_lcssa176, 4216);
    $cmp465174 = ($cnt | 0) > 1;
    if ($cmp465174) {
      label = 76;
      break;
    } else {
      label = 85;
      break;
    }
   case 76:
    $215 = HEAP32[$pointn >> 2] | 0;
    $sub495169 = $215 - 1 | 0;
    $cmp496170 = ($sub495169 | 0) > 1;
    $cmp508172 = ($215 | 0) > 0;
    $sub495 = $215 - 1 | 0;
    $216 = $fwdedge | 0;
    $tail478 = $fwdedge + 16 | 0;
    $head480 = $fwdedge + 12 | 0;
    $tail_port482 = $fwdedge + 32 | 0;
    $217 = $tail_port482;
    $head_port486 = $fwdedge + 72 | 0;
    $218 = $head_port486;
    $edge_type490 = $fwdedge + 128 | 0;
    $to_orig492 = $fwdedge + 132 | 0;
    $j_0175 = 1;
    label = 77;
    break;
   case 77:
    $add468 = $j_0175 + $ind | 0;
    $arrayidx469 = $edges + ($add468 << 2) | 0;
    $219 = HEAP32[$arrayidx469 >> 2] | 0;
    $tree_index471 = $219 + 180 | 0;
    $220 = HEAP32[$tree_index471 >> 2] | 0;
    $and472 = $220 & 32;
    $tobool473 = ($and472 | 0) == 0;
    if ($tobool473) {
      $e_2 = $219;
      label = 79;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $221 = $219 | 0;
    _memcpy($216 | 0, $221 | 0, 192);
    $head477 = $219 + 12 | 0;
    $222 = HEAP32[$head477 >> 2] | 0;
    HEAP32[$tail478 >> 2] = $222;
    $tail479 = $219 + 16 | 0;
    $223 = HEAP32[$tail479 >> 2] | 0;
    HEAP32[$head480 >> 2] = $223;
    $head_port484 = $219 + 72 | 0;
    $224 = $head_port484;
    HEAP32[$217 >> 2] = HEAP32[$224 >> 2] | 0;
    HEAP32[$217 + 4 >> 2] = HEAP32[$224 + 4 >> 2] | 0;
    HEAP32[$217 + 8 >> 2] = HEAP32[$224 + 8 >> 2] | 0;
    HEAP32[$217 + 12 >> 2] = HEAP32[$224 + 12 >> 2] | 0;
    HEAP32[$217 + 16 >> 2] = HEAP32[$224 + 16 >> 2] | 0;
    HEAP32[$217 + 20 >> 2] = HEAP32[$224 + 20 >> 2] | 0;
    HEAP32[$217 + 24 >> 2] = HEAP32[$224 + 24 >> 2] | 0;
    HEAP32[$217 + 28 >> 2] = HEAP32[$224 + 28 >> 2] | 0;
    HEAP32[$217 + 32 >> 2] = HEAP32[$224 + 32 >> 2] | 0;
    HEAP32[$217 + 36 >> 2] = HEAP32[$224 + 36 >> 2] | 0;
    $tail_port488 = $219 + 32 | 0;
    $225 = $tail_port488;
    HEAP32[$218 >> 2] = HEAP32[$225 >> 2] | 0;
    HEAP32[$218 + 4 >> 2] = HEAP32[$225 + 4 >> 2] | 0;
    HEAP32[$218 + 8 >> 2] = HEAP32[$225 + 8 >> 2] | 0;
    HEAP32[$218 + 12 >> 2] = HEAP32[$225 + 12 >> 2] | 0;
    HEAP32[$218 + 16 >> 2] = HEAP32[$225 + 16 >> 2] | 0;
    HEAP32[$218 + 20 >> 2] = HEAP32[$225 + 20 >> 2] | 0;
    HEAP32[$218 + 24 >> 2] = HEAP32[$225 + 24 >> 2] | 0;
    HEAP32[$218 + 28 >> 2] = HEAP32[$225 + 28 >> 2] | 0;
    HEAP32[$218 + 32 >> 2] = HEAP32[$225 + 32 >> 2] | 0;
    HEAP32[$218 + 36 >> 2] = HEAP32[$225 + 36 >> 2] | 0;
    HEAP8[$edge_type490] = 1;
    HEAP32[$to_orig492 >> 2] = $219;
    $e_2 = $fwdedge;
    label = 79;
    break;
   case 79:
    if ($cmp496170) {
      $i_4171 = 1;
      label = 80;
      break;
    } else {
      label = 81;
      break;
    }
   case 80:
    $226 = HEAP32[$Multisep >> 2] | 0;
    $conv500 = +($226 | 0);
    $227 = HEAP32[2854] | 0;
    $x502 = $227 + ($i_4171 << 4) | 0;
    $228 = +HEAPF64[$x502 >> 3];
    $add503 = $conv500 + $228;
    HEAPF64[$x502 >> 3] = $add503;
    $inc505 = $i_4171 + 1 | 0;
    $cmp496 = ($inc505 | 0) < ($sub495 | 0);
    if ($cmp496) {
      $i_4171 = $inc505;
      label = 80;
      break;
    } else {
      label = 81;
      break;
    }
   case 81:
    if ($cmp508172) {
      label = 82;
      break;
    } else {
      label = 84;
      break;
    }
   case 82:
    $229 = HEAP32[2852] | 0;
    $230 = HEAP32[2854] | 0;
    $i_5173 = 0;
    label = 83;
    break;
   case 83:
    $arrayidx511 = $229 + ($i_5173 << 4) | 0;
    $arrayidx512 = $230 + ($i_5173 << 4) | 0;
    $231 = $arrayidx511;
    $232 = $arrayidx512;
    HEAP32[$231 >> 2] = HEAP32[$232 >> 2] | 0;
    HEAP32[$231 + 4 >> 2] = HEAP32[$232 + 4 >> 2] | 0;
    HEAP32[$231 + 8 >> 2] = HEAP32[$232 + 8 >> 2] | 0;
    HEAP32[$231 + 12 >> 2] = HEAP32[$232 + 12 >> 2] | 0;
    $inc514 = $i_5173 + 1 | 0;
    $cmp508 = ($inc514 | 0) < ($215 | 0);
    if ($cmp508) {
      $i_5173 = $inc514;
      label = 83;
      break;
    } else {
      label = 84;
      break;
    }
   case 84:
    $head516 = $e_2 + 12 | 0;
    $233 = HEAP32[$head516 >> 2] | 0;
    $234 = HEAP32[2852] | 0;
    $235 = $e_2;
    $236 = $233;
    _clip_and_install($235, $236, $234, $215, 4216);
    $inc518 = $j_0175 + 1 | 0;
    $cmp465 = ($inc518 | 0) < ($cnt | 0);
    if ($cmp465) {
      $j_0175 = $inc518;
      label = 77;
      break;
    } else {
      label = 85;
      break;
    }
   case 85:
    STACKTOP = __stackBase__;
    return;
  }
}
function _edge_normalize($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool12 = 0, $n_0_in13 = 0, $call1 = 0, $tobool310 = 0, $e_0_in11 = 0, $e_0 = 0, $1 = 0, $call5 = 0, $tobool6 = 0, $u = 0, $spl = 0, $2 = 0, $tobool7 = 0, $call10 = 0, $tobool3 = 0, $call12 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool12 = ($call | 0) == 0;
    if ($tobool12) {
      label = 9;
      break;
    } else {
      $n_0_in13 = $call;
      label = 3;
      break;
    }
   case 3:
    $call1 = _agfstout($0, $n_0_in13) | 0;
    $tobool310 = ($call1 | 0) == 0;
    if ($tobool310) {
      label = 8;
      break;
    } else {
      $e_0_in11 = $call1;
      label = 4;
      break;
    }
   case 4:
    $e_0 = $e_0_in11;
    $1 = HEAP32[1054] | 0;
    $call5 = FUNCTION_TABLE_ii[$1 & 1023]($e_0) | 0;
    $tobool6 = $call5 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $u = $e_0_in11 + 24 | 0;
    $spl = $u;
    $2 = HEAP32[$spl >> 2] | 0;
    $tobool7 = ($2 | 0) == 0;
    if ($tobool7) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _swap_spline($2);
    label = 7;
    break;
   case 7:
    $call10 = _agnxtout($0, $e_0_in11) | 0;
    $tobool3 = ($call10 | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      $e_0_in11 = $call10;
      label = 4;
      break;
    }
   case 8:
    $call12 = _agnxtnode($0, $n_0_in13) | 0;
    $tobool = ($call12 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $n_0_in13 = $call12;
      label = 3;
      break;
    }
   case 9:
    return;
  }
}
function _spline_merge($n) {
  $n = $n | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $size = 0, $1 = 0, $cmp3 = 0, $size6 = 0, $2 = 0, $cmp7 = 0, $phitmp = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $n + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $3 = 0;
      label = 5;
      break;
    }
   case 3:
    $size = $n + 180 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $cmp3 = ($1 | 0) > 1;
    if ($cmp3) {
      $3 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $size6 = $n + 188 | 0;
    $2 = HEAP32[$size6 >> 2] | 0;
    $cmp7 = ($2 | 0) > 1;
    $phitmp = $cmp7 & 1;
    $3 = $phitmp;
    label = 5;
    break;
   case 5:
    return $3 | 0;
  }
  return 0;
}
function _rank_box($agg_result, $sp, $g, $r) {
  $agg_result = $agg_result | 0;
  $sp = $sp | 0;
  $g = $g | 0;
  $r = $r | 0;
  var $Rank_box = 0, $0 = 0, $b_sroa_0_0__idx3 = 0, $b_sroa_0_0_copyload4 = 0.0, $b_sroa_1_8__idx8 = 0, $b_sroa_1_8_copyload9 = 0.0, $b_sroa_2_16__idx13 = 0, $b_sroa_2_16_copyload14 = 0.0, $b_sroa_3_24__idx18 = 0, $b_sroa_3_24_copyload19 = 0.0, $cmp = 0, $rank = 0, $1 = 0, $v = 0, $2 = 0, $3 = 0, $add = 0, $v7 = 0, $4 = 0, $5 = 0, $LeftBound = 0, $6 = 0, $conv = 0.0, $y = 0, $7 = 0.0, $ht2 = 0, $8 = 0, $conv16 = 0.0, $add17 = 0.0, $RightBound = 0, $9 = 0, $conv20 = 0.0, $y25 = 0, $10 = 0.0, $ht1 = 0, $11 = 0, $conv29 = 0.0, $sub = 0.0, $b_sroa_1_0 = 0.0, $b_sroa_0_0 = 0.0, $b_sroa_2_0 = 0.0, $b_sroa_3_0 = 0.0, $b_sroa_0_0__idx = 0, $b_sroa_1_8__idx5 = 0, $b_sroa_2_16__idx10 = 0, $b_sroa_3_24__idx15 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $Rank_box = $sp + 16 | 0;
    $0 = HEAP32[$Rank_box >> 2] | 0;
    $b_sroa_0_0__idx3 = $0 + ($r << 5) | 0;
    $b_sroa_0_0_copyload4 = +HEAPF64[$b_sroa_0_0__idx3 >> 3];
    $b_sroa_1_8__idx8 = $0 + ($r << 5) + 8 | 0;
    $b_sroa_1_8_copyload9 = +HEAPF64[$b_sroa_1_8__idx8 >> 3];
    $b_sroa_2_16__idx13 = $0 + ($r << 5) + 16 | 0;
    $b_sroa_2_16_copyload14 = +HEAPF64[$b_sroa_2_16__idx13 >> 3];
    $b_sroa_3_24__idx18 = $0 + ($r << 5) + 24 | 0;
    $b_sroa_3_24_copyload19 = +HEAPF64[$b_sroa_3_24__idx18 >> 3];
    $cmp = $b_sroa_0_0_copyload4 == $b_sroa_2_16_copyload14;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $b_sroa_3_0 = $b_sroa_3_24_copyload19;
      $b_sroa_2_0 = $b_sroa_2_16_copyload14;
      $b_sroa_0_0 = $b_sroa_0_0_copyload4;
      $b_sroa_1_0 = $b_sroa_1_8_copyload9;
      label = 4;
      break;
    }
   case 3:
    $rank = $g + 224 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $v = $1 + ($r * 44 & -1) + 4 | 0;
    $2 = HEAP32[$v >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $add = $r + 1 | 0;
    $v7 = $1 + ($add * 44 & -1) + 4 | 0;
    $4 = HEAP32[$v7 >> 2] | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $LeftBound = $sp | 0;
    $6 = HEAP32[$LeftBound >> 2] | 0;
    $conv = +($6 | 0);
    $y = $5 + 40 | 0;
    $7 = +HEAPF64[$y >> 3];
    $ht2 = $1 + ($add * 44 & -1) + 20 | 0;
    $8 = HEAP32[$ht2 >> 2] | 0;
    $conv16 = +($8 | 0);
    $add17 = $7 + $conv16;
    $RightBound = $sp + 4 | 0;
    $9 = HEAP32[$RightBound >> 2] | 0;
    $conv20 = +($9 | 0);
    $y25 = $3 + 40 | 0;
    $10 = +HEAPF64[$y25 >> 3];
    $ht1 = $1 + ($r * 44 & -1) + 16 | 0;
    $11 = HEAP32[$ht1 >> 2] | 0;
    $conv29 = +($11 | 0);
    $sub = $10 - $conv29;
    HEAPF64[$b_sroa_0_0__idx3 >> 3] = $conv;
    HEAPF64[$b_sroa_1_8__idx8 >> 3] = $add17;
    HEAPF64[$b_sroa_2_16__idx13 >> 3] = $conv20;
    HEAPF64[$b_sroa_3_24__idx18 >> 3] = $sub;
    $b_sroa_3_0 = $sub;
    $b_sroa_2_0 = $conv20;
    $b_sroa_0_0 = $conv;
    $b_sroa_1_0 = $add17;
    label = 4;
    break;
   case 4:
    $b_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$b_sroa_0_0__idx >> 3] = $b_sroa_0_0;
    $b_sroa_1_8__idx5 = $agg_result + 8 | 0;
    HEAPF64[$b_sroa_1_8__idx5 >> 3] = $b_sroa_1_0;
    $b_sroa_2_16__idx10 = $agg_result + 16 | 0;
    HEAPF64[$b_sroa_2_16__idx10 >> 3] = $b_sroa_2_0;
    $b_sroa_3_24__idx15 = $agg_result + 24 | 0;
    HEAPF64[$b_sroa_3_24__idx15 >> 3] = $b_sroa_3_0;
    return;
  }
}
function _straight_len($n) {
  $n = $n | 0;
  var $x16 = 0, $cnt_0 = 0, $v_0 = 0, $list = 0, $0 = 0, $1 = 0, $head = 0, $2 = 0, $node_type = 0, $3 = 0, $cmp = 0, $size = 0, $4 = 0, $cmp5 = 0, $size8 = 0, $5 = 0, $cmp9 = 0, $x = 0, $6 = 0.0, $7 = 0.0, $cmp17 = 0, $inc = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x16 = $n + 32 | 0;
    $v_0 = $n;
    $cnt_0 = 0;
    label = 3;
    break;
   case 3:
    $list = $v_0 + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $head = $1 + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $node_type = $2 + 162 | 0;
    $3 = HEAP8[$node_type] | 0;
    $cmp = $3 << 24 >> 24 == 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $size = $2 + 188 | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $cmp5 = ($4 | 0) == 1;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $size8 = $2 + 180 | 0;
    $5 = HEAP32[$size8 >> 2] | 0;
    $cmp9 = ($5 | 0) == 1;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $x = $2 + 32 | 0;
    $6 = +HEAPF64[$x >> 3];
    $7 = +HEAPF64[$x16 >> 3];
    $cmp17 = $6 != $7;
    $inc = $cnt_0 + 1 | 0;
    if ($cmp17) {
      label = 7;
      break;
    } else {
      $v_0 = $2;
      $cnt_0 = $inc;
      label = 3;
      break;
    }
   case 7:
    return $cnt_0 | 0;
  }
  return 0;
}
function _resize_vn($vn, $lx, $cx, $rx) {
  $vn = $vn | 0;
  $lx = $lx | 0;
  $cx = $cx | 0;
  $rx = $rx | 0;
  HEAPF64[$vn + 32 >> 3] = +($cx | 0);
  HEAPF64[$vn + 104 >> 3] = +($cx - $lx | 0);
  HEAPF64[$vn + 112 >> 3] = +($rx - $cx | 0);
  return;
}
function _swap_spline($s) {
  $s = $s | 0;
  var $size = 0, $0 = 0, $mul = 0, $call = 0, $1 = 0, $list1 = 0, $cmp15 = 0, $2 = 0, $sub = 0, $3 = 0, $add_ptr = 0, $cmp413 = 0, $4 = 0, $lp_018 = 0, $i_017 = 0, $olp_016 = 0, $incdec_ptr = 0, $incdec_ptr2 = 0, $inc = 0, $cmp = 0, $5 = 0, $i_114 = 0, $list7 = 0, $6 = 0, $7 = 0, $inc9 = 0, $cmp4 = 0, $8 = 0, $_lcssa = 0, $9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $s + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $mul = $0 * 48 & -1;
    $call = _gmalloc($mul) | 0;
    $1 = $call;
    $list1 = $s | 0;
    $cmp15 = ($0 | 0) > 0;
    if ($cmp15) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$list1 >> 2] | 0;
    $_lcssa = $2;
    label = 8;
    break;
   case 4:
    $sub = $0 - 1 | 0;
    $3 = HEAP32[$list1 >> 2] | 0;
    $add_ptr = $3 + ($sub * 48 & -1) | 0;
    $olp_016 = $add_ptr;
    $i_017 = 0;
    $lp_018 = $1;
    label = 6;
    break;
   case 5:
    $cmp413 = ($0 | 0) > 0;
    $4 = HEAP32[$list1 >> 2] | 0;
    if ($cmp413) {
      $i_114 = 0;
      $5 = $4;
      label = 7;
      break;
    } else {
      $_lcssa = $4;
      label = 8;
      break;
    }
   case 6:
    $incdec_ptr = $olp_016 - 48 | 0;
    $incdec_ptr2 = $lp_018 + 48 | 0;
    _swap_bezier($olp_016, $lp_018);
    $inc = $i_017 + 1 | 0;
    $cmp = ($inc | 0) < ($0 | 0);
    if ($cmp) {
      $olp_016 = $incdec_ptr;
      $i_017 = $inc;
      $lp_018 = $incdec_ptr2;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 7:
    $list7 = $5 + ($i_114 * 48 & -1) | 0;
    $6 = HEAP32[$list7 >> 2] | 0;
    $7 = $6;
    _free($7);
    $inc9 = $i_114 + 1 | 0;
    $cmp4 = ($inc9 | 0) < ($0 | 0);
    $8 = HEAP32[$list1 >> 2] | 0;
    if ($cmp4) {
      $i_114 = $inc9;
      $5 = $8;
      label = 7;
      break;
    } else {
      $_lcssa = $8;
      label = 8;
      break;
    }
   case 8:
    $9 = $_lcssa;
    _free($9);
    HEAP32[$list1 >> 2] = $1;
    return;
  }
}
function _swap_bezier($old, $new) {
  $old = $old | 0;
  $new = $new | 0;
  var $size = 0, $0 = 0, $mul = 0, $call = 0, $1 = 0, $cmp16 = 0, $list1 = 0, $sub = 0, $2 = 0, $add_ptr = 0, $lp_019 = 0, $i_018 = 0, $olp_017 = 0, $incdec_ptr = 0, $incdec_ptr2 = 0, $3 = 0, $4 = 0, $inc = 0, $cmp = 0, $list3 = 0, $size4 = 0, $eflag = 0, $5 = 0, $sflag = 0, $sflag5 = 0, $6 = 0, $eflag6 = 0, $sp = 0, $ep = 0, $7 = 0, $8 = 0, $ep7 = 0, $sp8 = 0, $9 = 0, $10 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $old + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $mul = $0 << 4;
    $call = _gmalloc($mul) | 0;
    $1 = $call;
    $cmp16 = ($0 | 0) > 0;
    if ($cmp16) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $list1 = $old | 0;
    $sub = $0 - 1 | 0;
    $2 = HEAP32[$list1 >> 2] | 0;
    $add_ptr = $2 + ($sub << 4) | 0;
    $olp_017 = $add_ptr;
    $i_018 = 0;
    $lp_019 = $1;
    label = 4;
    break;
   case 4:
    $incdec_ptr = $lp_019 + 16 | 0;
    $incdec_ptr2 = $olp_017 - 16 | 0;
    $3 = $lp_019;
    $4 = $olp_017;
    HEAP32[$3 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $inc = $i_018 + 1 | 0;
    $cmp = ($inc | 0) < ($0 | 0);
    if ($cmp) {
      $olp_017 = $incdec_ptr2;
      $i_018 = $inc;
      $lp_019 = $incdec_ptr;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $list3 = $new | 0;
    HEAP32[$list3 >> 2] = $1;
    $size4 = $new + 4 | 0;
    HEAP32[$size4 >> 2] = $0;
    $eflag = $old + 12 | 0;
    $5 = HEAP32[$eflag >> 2] | 0;
    $sflag = $new + 8 | 0;
    HEAP32[$sflag >> 2] = $5;
    $sflag5 = $old + 8 | 0;
    $6 = HEAP32[$sflag5 >> 2] | 0;
    $eflag6 = $new + 12 | 0;
    HEAP32[$eflag6 >> 2] = $6;
    $sp = $new + 16 | 0;
    $ep = $old + 32 | 0;
    $7 = $sp;
    $8 = $ep;
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $ep7 = $new + 32 | 0;
    $sp8 = $old + 16 | 0;
    $9 = $ep7;
    $10 = $sp8;
    HEAP32[$9 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    return;
  }
}
function _makeLineEdge($fe, $points, $hp) {
  $fe = $fe | 0;
  $points = $points | 0;
  $hp = $hp | 0;
  var $startp = 0, $endp = 0, $lp = 0, $tmp = 0, $tmp36 = 0, $tmp42 = 0, $tmp48 = 0, $edge_type38 = 0, $0 = 0, $cmp39 = 0, $e_040 = 0, $to_orig = 0, $1 = 0, $edge_type = 0, $2 = 0, $cmp = 0, $e_0_lcssa = 0, $head = 0, $3 = 0, $tail = 0, $4 = 0, $rank = 0, $5 = 0, $rank5 = 0, $6 = 0, $sub = 0, $cmp6 = 0, $sub18 = 0, $cond = 0, $graph = 0, $7 = 0, $has_labels = 0, $8 = 0, $and = 0, $tobool = 0, $tail25 = 0, $9 = 0, $10 = 0, $cmp27 = 0, $coord = 0, $p = 0, $11 = 0, $12 = 0, $coord33 = 0, $p35 = 0, $13 = 0, $14 = 0, $coord38 = 0, $p41 = 0, $15 = 0, $16 = 0, $coord44 = 0, $p47 = 0, $17 = 0, $18 = 0, $label = 0, $19 = 0, $tobool51 = 0, $dimen_sroa_0_0__idx = 0, $dimen_sroa_0_0_copyload = 0.0, $dimen_sroa_1_8__idx4 = 0, $dimen_sroa_1_8_copyload = 0.0, $graph56 = 0, $20 = 0, $rankdir = 0, $21 = 0, $and59 = 0, $tobool60 = 0, $dimen_sroa_0_0_copyload_dimen_sroa_1_8_copyload = 0.0, $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload = 0.0, $pos = 0, $22 = 0, $23 = 0, $call = 0, $tobool68 = 0, $div = 0.0, $x70 = 0, $24 = 0.0, $add = 0.0, $div71 = 0.0, $y72 = 0, $25 = 0.0, $sub73 = 0.0, $sub77 = 0.0, $div78 = 0.0, $y79 = 0, $26 = 0.0, $add80 = 0.0, $arrayidx = 0, $27 = 0, $28 = 0, $29 = 0, $arrayidx83 = 0, $arrayidx84 = 0, $arrayidx85 = 0, $30 = 0, $31 = 0, $32 = 0, $arrayidx86 = 0, $arrayidx87 = 0, $33 = 0, $34 = 0, $35 = 0, $arrayidx89 = 0, $36 = 0, $37 = 0, $38 = 0, $arrayidx91 = 0, $arrayidx92 = 0, $39 = 0, $40 = 0, $41 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 112 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $startp = __stackBase__ | 0;
    $endp = __stackBase__ + 16 | 0;
    $lp = __stackBase__ + 32 | 0;
    $tmp = __stackBase__ + 48 | 0;
    $tmp36 = __stackBase__ + 64 | 0;
    $tmp42 = __stackBase__ + 80 | 0;
    $tmp48 = __stackBase__ + 96 | 0;
    $edge_type38 = $fe + 128 | 0;
    $0 = HEAP8[$edge_type38] | 0;
    $cmp39 = $0 << 24 >> 24 == 0;
    if ($cmp39) {
      $e_0_lcssa = $fe;
      label = 4;
      break;
    } else {
      $e_040 = $fe;
      label = 3;
      break;
    }
   case 3:
    $to_orig = $e_040 + 132 | 0;
    $1 = HEAP32[$to_orig >> 2] | 0;
    $edge_type = $1 + 128 | 0;
    $2 = HEAP8[$edge_type] | 0;
    $cmp = $2 << 24 >> 24 == 0;
    if ($cmp) {
      $e_0_lcssa = $1;
      label = 4;
      break;
    } else {
      $e_040 = $1;
      label = 3;
      break;
    }
   case 4:
    $head = $e_0_lcssa + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $tail = $e_0_lcssa + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $rank = $3 + 236 | 0;
    $5 = HEAP32[$rank >> 2] | 0;
    $rank5 = $4 + 236 | 0;
    $6 = HEAP32[$rank5 >> 2] | 0;
    $sub = $5 - $6 | 0;
    $cmp6 = ($sub | 0) > -1;
    $sub18 = -$sub | 0;
    $cond = $cmp6 ? $sub : $sub18;
    if (($cond | 0) == 2) {
      label = 5;
      break;
    } else if (($cond | 0) == 1) {
      $retval_0 = 0;
      label = 15;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $graph = $3 + 20 | 0;
    $7 = HEAP32[$graph >> 2] | 0;
    $has_labels = $7 + 153 | 0;
    $8 = HEAP8[$has_labels] | 0;
    $and = $8 & 1;
    $tobool = $and << 24 >> 24 == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 15;
      break;
    }
   case 6:
    $tail25 = $fe + 16 | 0;
    $9 = HEAP32[$tail25 >> 2] | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $cmp27 = ($9 | 0) == ($10 | 0);
    if ($cmp27) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$hp >> 2] = $3;
    $coord = $4 + 32 | 0;
    $p = $e_0_lcssa + 32 | 0;
    _add_pointf3016($tmp, $coord, $p);
    $11 = $startp;
    $12 = $tmp;
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    $coord33 = $3 + 32 | 0;
    $p35 = $e_0_lcssa + 72 | 0;
    _add_pointf3016($tmp36, $coord33, $p35);
    $13 = $endp;
    $14 = $tmp36;
    HEAP32[$13 >> 2] = HEAP32[$14 >> 2] | 0;
    HEAP32[$13 + 4 >> 2] = HEAP32[$14 + 4 >> 2] | 0;
    HEAP32[$13 + 8 >> 2] = HEAP32[$14 + 8 >> 2] | 0;
    HEAP32[$13 + 12 >> 2] = HEAP32[$14 + 12 >> 2] | 0;
    label = 9;
    break;
   case 8:
    HEAP32[$hp >> 2] = $4;
    $coord38 = $3 + 32 | 0;
    $p41 = $e_0_lcssa + 72 | 0;
    _add_pointf3016($tmp42, $coord38, $p41);
    $15 = $startp;
    $16 = $tmp42;
    HEAP32[$15 >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    $coord44 = $4 + 32 | 0;
    $p47 = $e_0_lcssa + 32 | 0;
    _add_pointf3016($tmp48, $coord44, $p47);
    $17 = $endp;
    $18 = $tmp48;
    HEAP32[$17 >> 2] = HEAP32[$18 >> 2] | 0;
    HEAP32[$17 + 4 >> 2] = HEAP32[$18 + 4 >> 2] | 0;
    HEAP32[$17 + 8 >> 2] = HEAP32[$18 + 8 >> 2] | 0;
    HEAP32[$17 + 12 >> 2] = HEAP32[$18 + 12 >> 2] | 0;
    label = 9;
    break;
   case 9:
    $label = $e_0_lcssa + 112 | 0;
    $19 = HEAP32[$label >> 2] | 0;
    $tobool51 = ($19 | 0) == 0;
    if ($tobool51) {
      label = 14;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $dimen_sroa_0_0__idx = $19 + 24 | 0;
    $dimen_sroa_0_0_copyload = +HEAPF64[$dimen_sroa_0_0__idx >> 3];
    $dimen_sroa_1_8__idx4 = $19 + 32 | 0;
    $dimen_sroa_1_8_copyload = +HEAPF64[$dimen_sroa_1_8__idx4 >> 3];
    $graph56 = $3 + 20 | 0;
    $20 = HEAP32[$graph56 >> 2] | 0;
    $rankdir = $20 + 156 | 0;
    $21 = HEAP32[$rankdir >> 2] | 0;
    $and59 = $21 & 1;
    $tobool60 = ($and59 | 0) == 0;
    $dimen_sroa_0_0_copyload_dimen_sroa_1_8_copyload = $tobool60 ? $dimen_sroa_0_0_copyload : $dimen_sroa_1_8_copyload;
    $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload = $tobool60 ? $dimen_sroa_1_8_copyload : $dimen_sroa_0_0_copyload;
    $pos = $19 + 56 | 0;
    $22 = $lp;
    $23 = $pos;
    HEAP32[$22 >> 2] = HEAP32[$23 >> 2] | 0;
    HEAP32[$22 + 4 >> 2] = HEAP32[$23 + 4 >> 2] | 0;
    HEAP32[$22 + 8 >> 2] = HEAP32[$23 + 8 >> 2] | 0;
    HEAP32[$22 + 12 >> 2] = HEAP32[$23 + 12 >> 2] | 0;
    $call = _leftOf($endp, $startp, $lp) | 0;
    $tobool68 = ($call | 0) == 0;
    $div = $dimen_sroa_0_0_copyload_dimen_sroa_1_8_copyload * .5;
    $x70 = $lp | 0;
    $24 = +HEAPF64[$x70 >> 3];
    if ($tobool68) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $add = $24 + $div;
    HEAPF64[$x70 >> 3] = $add;
    $div71 = $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload * .5;
    $y72 = $lp + 8 | 0;
    $25 = +HEAPF64[$y72 >> 3];
    $sub73 = $25 - $div71;
    HEAPF64[$y72 >> 3] = $sub73;
    label = 13;
    break;
   case 12:
    $sub77 = $24 - $div;
    HEAPF64[$x70 >> 3] = $sub77;
    $div78 = $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload * .5;
    $y79 = $lp + 8 | 0;
    $26 = +HEAPF64[$y79 >> 3];
    $add80 = $div78 + $26;
    HEAPF64[$y79 >> 3] = $add80;
    label = 13;
    break;
   case 13:
    $arrayidx = $points + 16 | 0;
    $27 = $points;
    $28 = $startp;
    HEAP32[$27 >> 2] = HEAP32[$28 >> 2] | 0;
    HEAP32[$27 + 4 >> 2] = HEAP32[$28 + 4 >> 2] | 0;
    HEAP32[$27 + 8 >> 2] = HEAP32[$28 + 8 >> 2] | 0;
    HEAP32[$27 + 12 >> 2] = HEAP32[$28 + 12 >> 2] | 0;
    $29 = $arrayidx;
    HEAP32[$29 >> 2] = HEAP32[$28 >> 2] | 0;
    HEAP32[$29 + 4 >> 2] = HEAP32[$28 + 4 >> 2] | 0;
    HEAP32[$29 + 8 >> 2] = HEAP32[$28 + 8 >> 2] | 0;
    HEAP32[$29 + 12 >> 2] = HEAP32[$28 + 12 >> 2] | 0;
    $arrayidx83 = $points + 32 | 0;
    $arrayidx84 = $points + 48 | 0;
    $arrayidx85 = $points + 64 | 0;
    $30 = $arrayidx85;
    HEAP32[$30 >> 2] = HEAP32[$22 >> 2] | 0;
    HEAP32[$30 + 4 >> 2] = HEAP32[$22 + 4 >> 2] | 0;
    HEAP32[$30 + 8 >> 2] = HEAP32[$22 + 8 >> 2] | 0;
    HEAP32[$30 + 12 >> 2] = HEAP32[$22 + 12 >> 2] | 0;
    $31 = $arrayidx84;
    HEAP32[$31 >> 2] = HEAP32[$22 >> 2] | 0;
    HEAP32[$31 + 4 >> 2] = HEAP32[$22 + 4 >> 2] | 0;
    HEAP32[$31 + 8 >> 2] = HEAP32[$22 + 8 >> 2] | 0;
    HEAP32[$31 + 12 >> 2] = HEAP32[$22 + 12 >> 2] | 0;
    $32 = $arrayidx83;
    HEAP32[$32 >> 2] = HEAP32[$22 >> 2] | 0;
    HEAP32[$32 + 4 >> 2] = HEAP32[$22 + 4 >> 2] | 0;
    HEAP32[$32 + 8 >> 2] = HEAP32[$22 + 8 >> 2] | 0;
    HEAP32[$32 + 12 >> 2] = HEAP32[$22 + 12 >> 2] | 0;
    $arrayidx86 = $points + 80 | 0;
    $arrayidx87 = $points + 96 | 0;
    $33 = $arrayidx87;
    $34 = $endp;
    HEAP32[$33 >> 2] = HEAP32[$34 >> 2] | 0;
    HEAP32[$33 + 4 >> 2] = HEAP32[$34 + 4 >> 2] | 0;
    HEAP32[$33 + 8 >> 2] = HEAP32[$34 + 8 >> 2] | 0;
    HEAP32[$33 + 12 >> 2] = HEAP32[$34 + 12 >> 2] | 0;
    $35 = $arrayidx86;
    HEAP32[$35 >> 2] = HEAP32[$34 >> 2] | 0;
    HEAP32[$35 + 4 >> 2] = HEAP32[$34 + 4 >> 2] | 0;
    HEAP32[$35 + 8 >> 2] = HEAP32[$34 + 8 >> 2] | 0;
    HEAP32[$35 + 12 >> 2] = HEAP32[$34 + 12 >> 2] | 0;
    $retval_0 = 7;
    label = 15;
    break;
   case 14:
    $arrayidx89 = $points + 16 | 0;
    $36 = $points;
    $37 = $startp;
    HEAP32[$36 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$36 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$36 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$36 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    $38 = $arrayidx89;
    HEAP32[$38 >> 2] = HEAP32[$37 >> 2] | 0;
    HEAP32[$38 + 4 >> 2] = HEAP32[$37 + 4 >> 2] | 0;
    HEAP32[$38 + 8 >> 2] = HEAP32[$37 + 8 >> 2] | 0;
    HEAP32[$38 + 12 >> 2] = HEAP32[$37 + 12 >> 2] | 0;
    $arrayidx91 = $points + 48 | 0;
    $arrayidx92 = $points + 32 | 0;
    $39 = $arrayidx92;
    $40 = $endp;
    HEAP32[$39 >> 2] = HEAP32[$40 >> 2] | 0;
    HEAP32[$39 + 4 >> 2] = HEAP32[$40 + 4 >> 2] | 0;
    HEAP32[$39 + 8 >> 2] = HEAP32[$40 + 8 >> 2] | 0;
    HEAP32[$39 + 12 >> 2] = HEAP32[$40 + 12 >> 2] | 0;
    $41 = $arrayidx91;
    HEAP32[$41 >> 2] = HEAP32[$40 >> 2] | 0;
    HEAP32[$41 + 4 >> 2] = HEAP32[$40 + 4 >> 2] | 0;
    HEAP32[$41 + 8 >> 2] = HEAP32[$40 + 8 >> 2] | 0;
    HEAP32[$41 + 12 >> 2] = HEAP32[$40 + 12 >> 2] | 0;
    $retval_0 = 4;
    label = 15;
    break;
   case 15:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _maximal_bbox($agg_result, $sp, $vn, $ie, $oe) {
  $agg_result = $agg_result | 0;
  $sp = $sp | 0;
  $vn = $vn | 0;
  $ie = $ie | 0;
  $oe = $oe | 0;
  var $graph = 0, $0 = 0, $x = 0, $1 = 0.0, $lw = 0, $2 = 0.0, $sub = 0.0, $sub2 = 0.0, $call = 0, $tobool = 0, $call3 = 0, $tobool4 = 0, $x7 = 0, $3 = 0.0, $Splinesep = 0, $4 = 0, $conv = 0.0, $add = 0.0, $x10 = 0, $5 = 0.0, $mval = 0, $6 = 0, $conv12 = 0.0, $add13 = 0.0, $node_type = 0, $7 = 0, $cmp = 0, $nodesep = 0, $8 = 0, $conv19 = 0.0, $div = 0.0, $add20 = 0.0, $Splinesep22 = 0, $9 = 0, $conv23 = 0.0, $add24 = 0.0, $nb_0 = 0.0, $cmp26 = 0, $b_0 = 0.0, $cmp30 = 0, $add32 = 0.0, $sub34 = 0.0, $add32_sink = 0.0, $conv33 = 0, $cmp39 = 0, $add42 = 0.0, $sub45 = 0.0, $add42_sink = 0.0, $conv43 = 0, $LeftBound = 0, $10 = 0, $cmp49 = 0, $add55 = 0.0, $sub58 = 0.0, $add55_sink = 0.0, $conv56 = 0, $rv_sroa_0_0_in = 0, $rv_sroa_0_0 = 0.0, $node_type71 = 0, $11 = 0, $cmp73 = 0, $label = 0, $12 = 0, $tobool76 = 0, $13 = 0.0, $add81 = 0.0, $14 = 0.0, $rw = 0, $15 = 0.0, $add87 = 0.0, $add88 = 0.0, $b_1 = 0.0, $call90 = 0, $tobool91 = 0, $call93 = 0, $tobool94 = 0, $x99 = 0, $16 = 0.0, $Splinesep100 = 0, $17 = 0, $conv101 = 0.0, $sub102 = 0.0, $x106 = 0, $18 = 0.0, $lw108 = 0, $19 = 0.0, $sub109 = 0.0, $node_type111 = 0, $20 = 0, $cmp113 = 0, $nodesep117 = 0, $21 = 0, $conv118 = 0.0, $div119 = 0.0, $sub120 = 0.0, $Splinesep122 = 0, $22 = 0, $conv123 = 0.0, $sub124 = 0.0, $nb_1 = 0.0, $cmp127 = 0, $b_2 = 0.0, $cmp131 = 0, $add134 = 0.0, $sub137 = 0.0, $add134_sink = 0.0, $conv135 = 0, $cmp145 = 0, $add148 = 0.0, $sub151 = 0.0, $add148_sink = 0.0, $conv149 = 0, $RightBound = 0, $23 = 0, $cmp155 = 0, $add161 = 0.0, $sub164 = 0.0, $add161_sink = 0.0, $conv162 = 0, $rv_sroa_2_0_in = 0, $rv_sroa_2_0 = 0.0, $24 = 0, $cmp179 = 0, $label183 = 0, $25 = 0, $tobool184 = 0, $rw187 = 0, $26 = 0.0, $sub190 = 0.0, $rv_sroa_2_1 = 0.0, $y = 0, $27 = 0.0, $rank = 0, $28 = 0, $rank196 = 0, $29 = 0, $ht1 = 0, $30 = 0, $conv197 = 0.0, $sub198 = 0.0, $ht2 = 0, $31 = 0, $conv209 = 0.0, $add210 = 0.0, $rv_sroa_0_0__idx = 0, $rv_sroa_1_8__idx1 = 0, $rv_sroa_2_16__idx2 = 0, $rv_sroa_3_24__idx3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $graph = $vn + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $x = $vn + 32 | 0;
    $1 = +HEAPF64[$x >> 3];
    $lw = $vn + 104 | 0;
    $2 = +HEAPF64[$lw >> 3];
    $sub = $1 - $2;
    $sub2 = $sub + -4.0;
    $call = _neighbor($vn, $ie, $oe, -1) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call3 = _cl_bound($vn, $call) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $x7 = $call3 + 72 | 0;
    $3 = +HEAPF64[$x7 >> 3];
    $Splinesep = $sp + 8 | 0;
    $4 = HEAP32[$Splinesep >> 2] | 0;
    $conv = +($4 | 0);
    $add = $3 + $conv;
    $nb_0 = $add;
    label = 8;
    break;
   case 5:
    $x10 = $call + 32 | 0;
    $5 = +HEAPF64[$x10 >> 3];
    $mval = $call + 244 | 0;
    $6 = HEAP32[$mval >> 2] | 0;
    $conv12 = +($6 | 0);
    $add13 = $5 + $conv12;
    $node_type = $call + 162 | 0;
    $7 = HEAP8[$node_type] | 0;
    $cmp = $7 << 24 >> 24 == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $nodesep = $0 + 260 | 0;
    $8 = HEAP32[$nodesep >> 2] | 0;
    $conv19 = +($8 | 0);
    $div = $conv19 * .5;
    $add20 = $add13 + $div;
    $nb_0 = $add20;
    label = 8;
    break;
   case 7:
    $Splinesep22 = $sp + 8 | 0;
    $9 = HEAP32[$Splinesep22 >> 2] | 0;
    $conv23 = +($9 | 0);
    $add24 = $add13 + $conv23;
    $nb_0 = $add24;
    label = 8;
    break;
   case 8:
    $cmp26 = $nb_0 < $sub2;
    $b_0 = $cmp26 ? $nb_0 : $sub2;
    $cmp30 = $b_0 < 0.0;
    if ($cmp30) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add32 = $b_0 + .5;
    $add32_sink = $add32;
    label = 11;
    break;
   case 10:
    $sub34 = $b_0 + -.5;
    $add32_sink = $sub34;
    label = 11;
    break;
   case 11:
    $conv33 = ~~$add32_sink;
    $rv_sroa_0_0_in = $conv33;
    label = 20;
    break;
   case 12:
    $cmp39 = $sub2 >= 0.0;
    if ($cmp39) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add42 = $sub2 + .5;
    $add42_sink = $add42;
    label = 15;
    break;
   case 14:
    $sub45 = $sub2 + -.5;
    $add42_sink = $sub45;
    label = 15;
    break;
   case 15:
    $conv43 = ~~$add42_sink;
    $LeftBound = $sp | 0;
    $10 = HEAP32[$LeftBound >> 2] | 0;
    $cmp49 = ($conv43 | 0) < ($10 | 0);
    if ($cmp49) {
      label = 16;
      break;
    } else {
      $rv_sroa_0_0_in = $10;
      label = 20;
      break;
    }
   case 16:
    if ($cmp39) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add55 = $sub2 + .5;
    $add55_sink = $add55;
    label = 19;
    break;
   case 18:
    $sub58 = $sub2 + -.5;
    $add55_sink = $sub58;
    label = 19;
    break;
   case 19:
    $conv56 = ~~$add55_sink;
    $rv_sroa_0_0_in = $conv56;
    label = 20;
    break;
   case 20:
    $rv_sroa_0_0 = +($rv_sroa_0_0_in | 0);
    $node_type71 = $vn + 162 | 0;
    $11 = HEAP8[$node_type71] | 0;
    $cmp73 = $11 << 24 >> 24 == 1;
    if ($cmp73) {
      label = 21;
      break;
    } else {
      label = 23;
      break;
    }
   case 21:
    $label = $vn + 120 | 0;
    $12 = HEAP32[$label >> 2] | 0;
    $tobool76 = ($12 | 0) == 0;
    if ($tobool76) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $13 = +HEAPF64[$x >> 3];
    $add81 = $13 + 10.0;
    $b_1 = $add81;
    label = 24;
    break;
   case 23:
    $14 = +HEAPF64[$x >> 3];
    $rw = $vn + 112 | 0;
    $15 = +HEAPF64[$rw >> 3];
    $add87 = $14 + $15;
    $add88 = $add87 + 4.0;
    $b_1 = $add88;
    label = 24;
    break;
   case 24:
    $call90 = _neighbor($vn, $ie, $oe, 1) | 0;
    $tobool91 = ($call90 | 0) == 0;
    if ($tobool91) {
      label = 34;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $call93 = _cl_bound($vn, $call90) | 0;
    $tobool94 = ($call93 | 0) == 0;
    if ($tobool94) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $x99 = $call93 + 56 | 0;
    $16 = +HEAPF64[$x99 >> 3];
    $Splinesep100 = $sp + 8 | 0;
    $17 = HEAP32[$Splinesep100 >> 2] | 0;
    $conv101 = +($17 | 0);
    $sub102 = $16 - $conv101;
    $nb_1 = $sub102;
    label = 30;
    break;
   case 27:
    $x106 = $call90 + 32 | 0;
    $18 = +HEAPF64[$x106 >> 3];
    $lw108 = $call90 + 104 | 0;
    $19 = +HEAPF64[$lw108 >> 3];
    $sub109 = $18 - $19;
    $node_type111 = $call90 + 162 | 0;
    $20 = HEAP8[$node_type111] | 0;
    $cmp113 = $20 << 24 >> 24 == 0;
    if ($cmp113) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $nodesep117 = $0 + 260 | 0;
    $21 = HEAP32[$nodesep117 >> 2] | 0;
    $conv118 = +($21 | 0);
    $div119 = $conv118 * .5;
    $sub120 = $sub109 - $div119;
    $nb_1 = $sub120;
    label = 30;
    break;
   case 29:
    $Splinesep122 = $sp + 8 | 0;
    $22 = HEAP32[$Splinesep122 >> 2] | 0;
    $conv123 = +($22 | 0);
    $sub124 = $sub109 - $conv123;
    $nb_1 = $sub124;
    label = 30;
    break;
   case 30:
    $cmp127 = $nb_1 > $b_1;
    $b_2 = $cmp127 ? $nb_1 : $b_1;
    $cmp131 = $b_2 < 0.0;
    if ($cmp131) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $add134 = $b_2 + .5;
    $add134_sink = $add134;
    label = 33;
    break;
   case 32:
    $sub137 = $b_2 + -.5;
    $add134_sink = $sub137;
    label = 33;
    break;
   case 33:
    $conv135 = ~~$add134_sink;
    $rv_sroa_2_0_in = $conv135;
    label = 42;
    break;
   case 34:
    $cmp145 = $b_1 >= 0.0;
    if ($cmp145) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $add148 = $b_1 + .5;
    $add148_sink = $add148;
    label = 37;
    break;
   case 36:
    $sub151 = $b_1 + -.5;
    $add148_sink = $sub151;
    label = 37;
    break;
   case 37:
    $conv149 = ~~$add148_sink;
    $RightBound = $sp + 4 | 0;
    $23 = HEAP32[$RightBound >> 2] | 0;
    $cmp155 = ($conv149 | 0) > ($23 | 0);
    if ($cmp155) {
      label = 38;
      break;
    } else {
      $rv_sroa_2_0_in = $23;
      label = 42;
      break;
    }
   case 38:
    if ($cmp145) {
      label = 39;
      break;
    } else {
      label = 40;
      break;
    }
   case 39:
    $add161 = $b_1 + .5;
    $add161_sink = $add161;
    label = 41;
    break;
   case 40:
    $sub164 = $b_1 + -.5;
    $add161_sink = $sub164;
    label = 41;
    break;
   case 41:
    $conv162 = ~~$add161_sink;
    $rv_sroa_2_0_in = $conv162;
    label = 42;
    break;
   case 42:
    $rv_sroa_2_0 = +($rv_sroa_2_0_in | 0);
    $24 = HEAP8[$node_type71] | 0;
    $cmp179 = $24 << 24 >> 24 == 1;
    if ($cmp179) {
      label = 43;
      break;
    } else {
      $rv_sroa_2_1 = $rv_sroa_2_0;
      label = 45;
      break;
    }
   case 43:
    $label183 = $vn + 120 | 0;
    $25 = HEAP32[$label183 >> 2] | 0;
    $tobool184 = ($25 | 0) == 0;
    if ($tobool184) {
      $rv_sroa_2_1 = $rv_sroa_2_0;
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $rw187 = $vn + 112 | 0;
    $26 = +HEAPF64[$rw187 >> 3];
    $sub190 = $rv_sroa_2_0 - $26;
    $rv_sroa_2_1 = $sub190;
    label = 45;
    break;
   case 45:
    $y = $vn + 40 | 0;
    $27 = +HEAPF64[$y >> 3];
    $rank = $vn + 236 | 0;
    $28 = HEAP32[$rank >> 2] | 0;
    $rank196 = $0 + 224 | 0;
    $29 = HEAP32[$rank196 >> 2] | 0;
    $ht1 = $29 + ($28 * 44 & -1) + 16 | 0;
    $30 = HEAP32[$ht1 >> 2] | 0;
    $conv197 = +($30 | 0);
    $sub198 = $27 - $conv197;
    $ht2 = $29 + ($28 * 44 & -1) + 20 | 0;
    $31 = HEAP32[$ht2 >> 2] | 0;
    $conv209 = +($31 | 0);
    $add210 = $27 + $conv209;
    $rv_sroa_0_0__idx = $agg_result | 0;
    HEAPF64[$rv_sroa_0_0__idx >> 3] = $rv_sroa_0_0;
    $rv_sroa_1_8__idx1 = $agg_result + 8 | 0;
    HEAPF64[$rv_sroa_1_8__idx1 >> 3] = $sub198;
    $rv_sroa_2_16__idx2 = $agg_result + 16 | 0;
    HEAPF64[$rv_sroa_2_16__idx2 >> 3] = $rv_sroa_2_1;
    $rv_sroa_3_24__idx3 = $agg_result + 24 | 0;
    HEAPF64[$rv_sroa_3_24__idx3 >> 3] = $add210;
    return;
  }
}
function _makeregularend($agg_result, $b, $side, $y) {
  $agg_result = $agg_result | 0;
  $b = $b | 0;
  $side = $side | 0;
  $y = $y | 0;
  var $newb = 0, $x = 0, $0 = 0.0, $conv = 0.0, $x1 = 0, $1 = 0.0, $y3 = 0, $2 = 0.0, $x6 = 0, $3 = 0.0, $y8 = 0, $4 = 0.0, $x10 = 0, $5 = 0.0, $conv11 = 0.0, $6 = 0, $7 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $newb = __stackBase__ | 0;
    if (($side | 0) == 1) {
      label = 3;
      break;
    } else if (($side | 0) == 4) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $x = $b | 0;
    $0 = +HEAPF64[$x >> 3];
    $conv = +($y | 0);
    $x1 = $b + 16 | 0;
    $1 = +HEAPF64[$x1 >> 3];
    $y3 = $b + 8 | 0;
    $2 = +HEAPF64[$y3 >> 3];
    _boxfof3015($newb, $0, $conv, $1, $2);
    label = 5;
    break;
   case 4:
    $x6 = $b | 0;
    $3 = +HEAPF64[$x6 >> 3];
    $y8 = $b + 24 | 0;
    $4 = +HEAPF64[$y8 >> 3];
    $x10 = $b + 16 | 0;
    $5 = +HEAPF64[$x10 >> 3];
    $conv11 = +($y | 0);
    _boxfof3015($newb, $3, $4, $5, $conv11);
    label = 5;
    break;
   case 5:
    $6 = $agg_result;
    $7 = $newb;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    HEAP32[$6 + 16 >> 2] = HEAP32[$7 + 16 >> 2] | 0;
    HEAP32[$6 + 20 >> 2] = HEAP32[$7 + 20 >> 2] | 0;
    HEAP32[$6 + 24 >> 2] = HEAP32[$7 + 24 >> 2] | 0;
    HEAP32[$6 + 28 >> 2] = HEAP32[$7 + 28 >> 2] | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _completeregularpath($P, $first, $last, $tendp, $hendp, $boxn) {
  $P = $P | 0;
  $first = $first | 0;
  $last = $last | 0;
  $tendp = $tendp | 0;
  $hendp = $hendp | 0;
  $boxn = $boxn | 0;
  var $call = 0, $call1 = 0, $tobool = 0, $0 = 0, $call2 = 0, $tobool6 = 0, $1 = 0, $call8 = 0, $call16 = 0, $call17 = 0, $tobool18 = 0, $2 = 0, $call20 = 0, $tobool31 = 0, $3 = 0, $call33 = 0, $boxn45 = 0, $4 = 0, $cmp6 = 0, $i_07 = 0, $arrayidx47 = 0, $inc = 0, $5 = 0, $cmp = 0, $nbox = 0, $6 = 0, $add = 0, $add48 = 0, $sub49 = 0, $cmp514 = 0, $i_15 = 0, $arrayidx53 = 0, $inc55 = 0, $cmp51 = 0, $boxn57 = 0, $7 = 0, $cmp602 = 0, $i_23_in = 0, $i_23 = 0, $arrayidx63 = 0, $cmp60 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _top_bound($first, -1) | 0;
    $call1 = _top_bound($first, 1) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = $call;
    $call2 = _getsplinepoints($0) | 0;
    label = 4;
    break;
   case 4:
    $tobool6 = ($call1 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $1 = $call1;
    $call8 = _getsplinepoints($1) | 0;
    label = 6;
    break;
   case 6:
    $call16 = _bot_bound($last, -1) | 0;
    $call17 = _bot_bound($last, 1) | 0;
    $tobool18 = ($call16 | 0) == 0;
    if ($tobool18) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $2 = $call16;
    $call20 = _getsplinepoints($2) | 0;
    label = 8;
    break;
   case 8:
    $tobool31 = ($call17 | 0) == 0;
    if ($tobool31) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $3 = $call17;
    $call33 = _getsplinepoints($3) | 0;
    label = 10;
    break;
   case 10:
    $boxn45 = $tendp + 52 | 0;
    $4 = HEAP32[$boxn45 >> 2] | 0;
    $cmp6 = ($4 | 0) > 0;
    if ($cmp6) {
      $i_07 = 0;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $arrayidx47 = $tendp + 56 + ($i_07 << 5) | 0;
    _add_box($P, $arrayidx47);
    $inc = $i_07 + 1 | 0;
    $5 = HEAP32[$boxn45 >> 2] | 0;
    $cmp = ($inc | 0) < ($5 | 0);
    if ($cmp) {
      $i_07 = $inc;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $nbox = $P + 80 | 0;
    $6 = HEAP32[$nbox >> 2] | 0;
    $add = $6 + 1 | 0;
    $add48 = $boxn - 3 | 0;
    $sub49 = $add48 + $add | 0;
    $cmp514 = ($boxn | 0) > 0;
    if ($cmp514) {
      $i_15 = 0;
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $arrayidx53 = 53424 + ($i_15 << 5) | 0;
    _add_box($P, $arrayidx53);
    $inc55 = $i_15 + 1 | 0;
    $cmp51 = ($inc55 | 0) < ($boxn | 0);
    if ($cmp51) {
      $i_15 = $inc55;
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $boxn57 = $hendp + 52 | 0;
    $7 = HEAP32[$boxn57 >> 2] | 0;
    $cmp602 = ($7 | 0) > 0;
    if ($cmp602) {
      $i_23_in = $7;
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $i_23 = $i_23_in - 1 | 0;
    $arrayidx63 = $hendp + 56 + ($i_23 << 5) | 0;
    _add_box($P, $arrayidx63);
    $cmp60 = ($i_23 | 0) > 0;
    if ($cmp60) {
      $i_23_in = $i_23;
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _adjustregularpath($P, $add, $sub49);
    return;
  }
}
function _straight_path($e, $cnt, $plist, $np) {
  $e = $e | 0;
  $cnt = $cnt | 0;
  $plist = $plist | 0;
  $np = $np | 0;
  var $0 = 0, $tobool11 = 0, $f_013 = 0, $cnt_addr_012 = 0, $dec = 0, $head = 0, $1 = 0, $list = 0, $2 = 0, $3 = 0, $tobool = 0, $f_0_lcssa = 0, $4 = 0, $inc = 0, $arrayidx1 = 0, $sub = 0, $arrayidx2 = 0, $5 = 0, $6 = 0, $7 = 0, $inc3 = 0, $arrayidx4 = 0, $8 = 0, $9 = 0, $arrayidx7 = 0, $tail = 0, $10 = 0, $coord = 0, $11 = 0, $12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$np >> 2] | 0;
    $tobool11 = ($cnt | 0) == 0;
    if ($tobool11) {
      $f_0_lcssa = $e;
      label = 4;
      break;
    } else {
      $cnt_addr_012 = $cnt;
      $f_013 = $e;
      label = 3;
      break;
    }
   case 3:
    $dec = $cnt_addr_012 - 1 | 0;
    $head = $f_013 + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $list = $1 + 184 | 0;
    $2 = HEAP32[$list >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool = ($dec | 0) == 0;
    if ($tobool) {
      $f_0_lcssa = $3;
      label = 4;
      break;
    } else {
      $cnt_addr_012 = $dec;
      $f_013 = $3;
      label = 3;
      break;
    }
   case 4:
    $4 = HEAP32[$np >> 2] | 0;
    $inc = $4 + 1 | 0;
    HEAP32[$np >> 2] = $inc;
    $arrayidx1 = $plist + ($4 << 4) | 0;
    $sub = $0 - 1 | 0;
    $arrayidx2 = $plist + ($sub << 4) | 0;
    $5 = $arrayidx1;
    $6 = $arrayidx2;
    HEAP32[$5 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$5 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$5 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$5 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    $7 = HEAP32[$np >> 2] | 0;
    $inc3 = $7 + 1 | 0;
    HEAP32[$np >> 2] = $inc3;
    $arrayidx4 = $plist + ($7 << 4) | 0;
    $8 = $arrayidx4;
    HEAP32[$8 >> 2] = HEAP32[$6 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$6 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$6 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$6 + 12 >> 2] | 0;
    $9 = HEAP32[$np >> 2] | 0;
    $arrayidx7 = $plist + ($9 << 4) | 0;
    $tail = $f_0_lcssa + 16 | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $coord = $10 + 32 | 0;
    $11 = $arrayidx7;
    $12 = $coord;
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    return $f_0_lcssa | 0;
  }
  return 0;
}
function _recover_slack($e, $p) {
  $e = $e | 0;
  $p = $p | 0;
  var $vn_0_in24 = 0, $vn_025 = 0, $node_type26 = 0, $0 = 0, $cmp27 = 0, $boxes = 0, $nbox = 0, $boxes13 = 0, $vn_029 = 0, $b_028 = 0, $1 = 0, $call = 0, $lnot = 0, $2 = 0, $y6 = 0, $b_1 = 0, $cmp2 = 0, $3 = 0, $y = 0, $4 = 0.0, $5 = 0.0, $cmp7 = 0, $inc = 0, $6 = 0, $cmp11 = 0, $7 = 0, $y15 = 0, $8 = 0.0, $y18 = 0, $9 = 0.0, $cmp19 = 0, $label = 0, $10 = 0, $tobool24 = 0, $x = 0, $11 = 0.0, $conv29 = 0, $x53 = 0, $12 = 0.0, $conv34 = 0, $rw = 0, $13 = 0.0, $add = 0.0, $conv40 = 0, $add54 = 0.0, $div = 0.0, $conv55 = 0, $conv60 = 0, $list = 0, $14 = 0, $15 = 0, $vn_0_in = 0, $vn_0 = 0, $node_type = 0, $16 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $vn_0_in24 = $e + 12 | 0;
    $vn_025 = HEAP32[$vn_0_in24 >> 2] | 0;
    $node_type26 = $vn_025 + 162 | 0;
    $0 = HEAP8[$node_type26] | 0;
    $cmp27 = $0 << 24 >> 24 == 1;
    if ($cmp27) {
      label = 3;
      break;
    } else {
      label = 14;
      break;
    }
   case 3:
    $boxes = $p + 84 | 0;
    $nbox = $p + 80 | 0;
    $boxes13 = $p + 84 | 0;
    $b_028 = 0;
    $vn_029 = $vn_025;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[1055] | 0;
    $call = FUNCTION_TABLE_ii[$1 & 1023]($vn_029) | 0;
    $lnot = $call << 24 >> 24 == 0;
    if ($lnot) {
      label = 5;
      break;
    } else {
      label = 14;
      break;
    }
   case 5:
    $2 = HEAP32[$nbox >> 2] | 0;
    $y6 = $vn_029 + 40 | 0;
    $b_1 = $b_028;
    label = 6;
    break;
   case 6:
    $cmp2 = ($b_1 | 0) < ($2 | 0);
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $3 = HEAP32[$boxes >> 2] | 0;
    $y = $3 + ($b_1 << 5) + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $5 = +HEAPF64[$y6 >> 3];
    $cmp7 = $4 > $5;
    $inc = $b_1 + 1 | 0;
    if ($cmp7) {
      $b_1 = $inc;
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $6 = HEAP32[$nbox >> 2] | 0;
    $cmp11 = ($b_1 | 0) < ($6 | 0);
    if ($cmp11) {
      label = 9;
      break;
    } else {
      label = 14;
      break;
    }
   case 9:
    $7 = HEAP32[$boxes13 >> 2] | 0;
    $y15 = $7 + ($b_1 << 5) + 24 | 0;
    $8 = +HEAPF64[$y15 >> 3];
    $y18 = $vn_029 + 40 | 0;
    $9 = +HEAPF64[$y18 >> 3];
    $cmp19 = $8 < $9;
    if ($cmp19) {
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $label = $vn_029 + 120 | 0;
    $10 = HEAP32[$label >> 2] | 0;
    $tobool24 = ($10 | 0) == 0;
    $x = $7 + ($b_1 << 5) | 0;
    $11 = +HEAPF64[$x >> 3];
    $conv29 = ~~$11;
    $x53 = $7 + ($b_1 << 5) + 16 | 0;
    $12 = +HEAPF64[$x53 >> 3];
    if ($tobool24) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $conv34 = ~~$12;
    $rw = $vn_029 + 112 | 0;
    $13 = +HEAPF64[$rw >> 3];
    $add = $12 + $13;
    $conv40 = ~~$add;
    _resize_vn($vn_029, $conv29, $conv34, $conv40);
    label = 13;
    break;
   case 12:
    $add54 = $11 + $12;
    $div = $add54 * .5;
    $conv55 = ~~$div;
    $conv60 = ~~$12;
    _resize_vn($vn_029, $conv29, $conv55, $conv60);
    label = 13;
    break;
   case 13:
    $list = $vn_029 + 184 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $15 = HEAP32[$14 >> 2] | 0;
    $vn_0_in = $15 + 12 | 0;
    $vn_0 = HEAP32[$vn_0_in >> 2] | 0;
    $node_type = $vn_0 + 162 | 0;
    $16 = HEAP8[$node_type] | 0;
    $cmp = $16 << 24 >> 24 == 1;
    if ($cmp) {
      $b_028 = $b_1;
      $vn_029 = $vn_0;
      label = 4;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    return;
  }
}
function _top_bound($e, $side) {
  $e = $e | 0;
  $side = $side | 0;
  var $tail = 0, $0 = 0, $list11 = 0, $1 = 0, $2 = 0, $tobool12 = 0, $head2 = 0, $3 = 0, $order4 = 0, $4 = 0, $5 = 0, $list = 0, $6 = 0, $7 = 0, $i_014 = 0, $ans_013 = 0, $head = 0, $8 = 0, $order = 0, $9 = 0, $sub = 0, $mul = 0, $cmp = 0, $spl = 0, $10 = 0, $cmp6 = 0, $to_orig = 0, $11 = 0, $cmp8 = 0, $spl12 = 0, $12 = 0, $cmp13 = 0, $cmp16 = 0, $head18 = 0, $13 = 0, $order20 = 0, $14 = 0, $15 = 0, $order23 = 0, $16 = 0, $sub24 = 0, $mul25 = 0, $cmp26 = 0, $ans_1 = 0, $inc = 0, $arrayidx = 0, $17 = 0, $tobool = 0, $ans_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $list11 = $0 + 184 | 0;
    $1 = HEAP32[$list11 >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool12 = ($2 | 0) == 0;
    if ($tobool12) {
      $ans_0_lcssa = 0;
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $head2 = $e + 12 | 0;
    $3 = HEAP32[$head2 >> 2] | 0;
    $order4 = $3 + 240 | 0;
    $4 = HEAP32[$order4 >> 2] | 0;
    $5 = HEAP32[$tail >> 2] | 0;
    $list = $5 + 184 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $ans_013 = 0;
    $i_014 = 0;
    $7 = $2;
    label = 4;
    break;
   case 4:
    $head = $7 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $order = $8 + 240 | 0;
    $9 = HEAP32[$order >> 2] | 0;
    $sub = $9 - $4 | 0;
    $mul = Math_imul($sub, $side);
    $cmp = ($mul | 0) < 1;
    if ($cmp) {
      $ans_1 = $ans_013;
      label = 11;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $spl = $7 + 24 | 0;
    $10 = HEAP32[$spl >> 2] | 0;
    $cmp6 = ($10 | 0) == 0;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $to_orig = $7 + 132 | 0;
    $11 = HEAP32[$to_orig >> 2] | 0;
    $cmp8 = ($11 | 0) == 0;
    if ($cmp8) {
      $ans_1 = $ans_013;
      label = 11;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $spl12 = $11 + 24 | 0;
    $12 = HEAP32[$spl12 >> 2] | 0;
    $cmp13 = ($12 | 0) == 0;
    if ($cmp13) {
      $ans_1 = $ans_013;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $cmp16 = ($ans_013 | 0) == 0;
    if ($cmp16) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $head18 = $ans_013 + 12 | 0;
    $13 = HEAP32[$head18 >> 2] | 0;
    $order20 = $13 + 240 | 0;
    $14 = HEAP32[$order20 >> 2] | 0;
    $15 = HEAP32[$head >> 2] | 0;
    $order23 = $15 + 240 | 0;
    $16 = HEAP32[$order23 >> 2] | 0;
    $sub24 = $14 - $16 | 0;
    $mul25 = Math_imul($sub24, $side);
    $cmp26 = ($mul25 | 0) > 0;
    if ($cmp26) {
      label = 10;
      break;
    } else {
      $ans_1 = $ans_013;
      label = 11;
      break;
    }
   case 10:
    $ans_1 = $7;
    label = 11;
    break;
   case 11:
    $inc = $i_014 + 1 | 0;
    $arrayidx = $6 + ($inc << 2) | 0;
    $17 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($17 | 0) == 0;
    if ($tobool) {
      $ans_0_lcssa = $ans_1;
      label = 12;
      break;
    } else {
      $ans_013 = $ans_1;
      $i_014 = $inc;
      $7 = $17;
      label = 4;
      break;
    }
   case 12:
    return $ans_0_lcssa | 0;
  }
  return 0;
}
function _bot_bound($e, $side) {
  $e = $e | 0;
  $side = $side | 0;
  var $head = 0, $0 = 0, $list11 = 0, $1 = 0, $2 = 0, $tobool12 = 0, $tail2 = 0, $3 = 0, $order4 = 0, $4 = 0, $5 = 0, $list = 0, $6 = 0, $7 = 0, $i_014 = 0, $ans_013 = 0, $tail = 0, $8 = 0, $order = 0, $9 = 0, $sub = 0, $mul = 0, $cmp = 0, $spl = 0, $10 = 0, $cmp6 = 0, $to_orig = 0, $11 = 0, $cmp8 = 0, $spl12 = 0, $12 = 0, $cmp13 = 0, $cmp16 = 0, $tail18 = 0, $13 = 0, $order20 = 0, $14 = 0, $15 = 0, $order23 = 0, $16 = 0, $sub24 = 0, $mul25 = 0, $cmp26 = 0, $ans_1 = 0, $inc = 0, $arrayidx = 0, $17 = 0, $tobool = 0, $ans_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $head = $e + 12 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $list11 = $0 + 176 | 0;
    $1 = HEAP32[$list11 >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool12 = ($2 | 0) == 0;
    if ($tobool12) {
      $ans_0_lcssa = 0;
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail2 = $e + 16 | 0;
    $3 = HEAP32[$tail2 >> 2] | 0;
    $order4 = $3 + 240 | 0;
    $4 = HEAP32[$order4 >> 2] | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $list = $5 + 176 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $ans_013 = 0;
    $i_014 = 0;
    $7 = $2;
    label = 4;
    break;
   case 4:
    $tail = $7 + 16 | 0;
    $8 = HEAP32[$tail >> 2] | 0;
    $order = $8 + 240 | 0;
    $9 = HEAP32[$order >> 2] | 0;
    $sub = $9 - $4 | 0;
    $mul = Math_imul($sub, $side);
    $cmp = ($mul | 0) < 1;
    if ($cmp) {
      $ans_1 = $ans_013;
      label = 11;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $spl = $7 + 24 | 0;
    $10 = HEAP32[$spl >> 2] | 0;
    $cmp6 = ($10 | 0) == 0;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $to_orig = $7 + 132 | 0;
    $11 = HEAP32[$to_orig >> 2] | 0;
    $cmp8 = ($11 | 0) == 0;
    if ($cmp8) {
      $ans_1 = $ans_013;
      label = 11;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $spl12 = $11 + 24 | 0;
    $12 = HEAP32[$spl12 >> 2] | 0;
    $cmp13 = ($12 | 0) == 0;
    if ($cmp13) {
      $ans_1 = $ans_013;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $cmp16 = ($ans_013 | 0) == 0;
    if ($cmp16) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $tail18 = $ans_013 + 16 | 0;
    $13 = HEAP32[$tail18 >> 2] | 0;
    $order20 = $13 + 240 | 0;
    $14 = HEAP32[$order20 >> 2] | 0;
    $15 = HEAP32[$tail >> 2] | 0;
    $order23 = $15 + 240 | 0;
    $16 = HEAP32[$order23 >> 2] | 0;
    $sub24 = $14 - $16 | 0;
    $mul25 = Math_imul($sub24, $side);
    $cmp26 = ($mul25 | 0) > 0;
    if ($cmp26) {
      label = 10;
      break;
    } else {
      $ans_1 = $ans_013;
      label = 11;
      break;
    }
   case 10:
    $ans_1 = $7;
    label = 11;
    break;
   case 11:
    $inc = $i_014 + 1 | 0;
    $arrayidx = $6 + ($inc << 2) | 0;
    $17 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($17 | 0) == 0;
    if ($tobool) {
      $ans_0_lcssa = $ans_1;
      label = 12;
      break;
    } else {
      $ans_013 = $ans_1;
      $i_014 = $inc;
      $7 = $17;
      label = 4;
      break;
    }
   case 12:
    return $ans_0_lcssa | 0;
  }
  return 0;
}
function _adjustregularpath($P, $fb, $lb) {
  $P = $P | 0;
  $fb = $fb | 0;
  $lb = $lb | 0;
  var $sub = 0, $add = 0, $cmp59 = 0, $boxes = 0, $nbox = 0, $0 = 0, $sub4656 = 0, $cmp4757 = 0, $boxes50 = 0, $i_060 = 0, $1 = 0, $sub1 = 0, $rem54 = 0, $cmp2 = 0, $x3 = 0, $2 = 0.0, $x4 = 0, $3 = 0.0, $cmp5 = 0, $add11 = 0.0, $div = 0.0, $conv = 0, $sub12 = 0, $conv13 = 0.0, $add16 = 0, $conv17 = 0.0, $add22 = 0.0, $x24 = 0, $4 = 0.0, $cmp25 = 0, $add32 = 0.0, $div33 = 0.0, $conv34 = 0, $sub35 = 0, $conv36 = 0.0, $add39 = 0, $conv40 = 0.0, $inc = 0, $cmp = 0, $i_158 = 0, $5 = 0, $arrayidx51 = 0, $add52 = 0, $arrayidx54 = 0, $cmp55 = 0, $cmp57 = 0, $or_cond = 0, $sub60 = 0, $rem6153 = 0, $cmp62 = 0, $x66 = 0, $6 = 0.0, $add67 = 0.0, $x69 = 0, $7 = 0.0, $cmp70 = 0, $x80 = 0, $8 = 0.0, $sub81 = 0.0, $x83 = 0, $9 = 0.0, $cmp84 = 0, $cmp95 = 0, $cmp98 = 0, $or_cond55 = 0, $10 = 0, $sub46 = 0, $cmp47 = 0, $sub102 = 0, $rem10352 = 0, $cmp104 = 0, $x108 = 0, $11 = 0.0, $add109 = 0.0, $x111 = 0, $12 = 0.0, $cmp112 = 0, $sub117 = 0.0, $x122 = 0, $13 = 0.0, $sub123 = 0.0, $x125 = 0, $14 = 0.0, $cmp126 = 0, $add131 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub = $fb - 1 | 0;
    $add = $lb + 1 | 0;
    $cmp59 = ($sub | 0) < ($add | 0);
    if ($cmp59) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $boxes = $P + 84 | 0;
    $i_060 = $sub;
    label = 6;
    break;
   case 4:
    $nbox = $P + 80 | 0;
    $0 = HEAP32[$nbox >> 2] | 0;
    $sub4656 = $0 - 1 | 0;
    $cmp4757 = ($sub4656 | 0) > 0;
    if ($cmp4757) {
      label = 5;
      break;
    } else {
      label = 25;
      break;
    }
   case 5:
    $boxes50 = $P + 84 | 0;
    $i_158 = 0;
    label = 12;
    break;
   case 6:
    $1 = HEAP32[$boxes >> 2] | 0;
    $sub1 = $i_060 - $fb | 0;
    $rem54 = $sub1 & 1;
    $cmp2 = ($rem54 | 0) == 0;
    $x3 = $1 + ($i_060 << 5) | 0;
    $2 = +HEAPF64[$x3 >> 3];
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $x4 = $1 + ($i_060 << 5) + 16 | 0;
    $3 = +HEAPF64[$x4 >> 3];
    $cmp5 = $2 < $3;
    if ($cmp5) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add11 = $2 + $3;
    $div = $add11 * .5;
    $conv = ~~$div;
    $sub12 = $conv - 8 | 0;
    $conv13 = +($sub12 | 0);
    HEAPF64[$x3 >> 3] = $conv13;
    $add16 = $conv + 8 | 0;
    $conv17 = +($add16 | 0);
    HEAPF64[$x4 >> 3] = $conv17;
    label = 11;
    break;
   case 9:
    $add22 = $2 + 16.0;
    $x24 = $1 + ($i_060 << 5) + 16 | 0;
    $4 = +HEAPF64[$x24 >> 3];
    $cmp25 = $add22 > $4;
    if ($cmp25) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $add32 = $2 + $4;
    $div33 = $add32 * .5;
    $conv34 = ~~$div33;
    $sub35 = $conv34 - 8 | 0;
    $conv36 = +($sub35 | 0);
    HEAPF64[$x3 >> 3] = $conv36;
    $add39 = $conv34 + 8 | 0;
    $conv40 = +($add39 | 0);
    HEAPF64[$x24 >> 3] = $conv40;
    label = 11;
    break;
   case 11:
    $inc = $i_060 + 1 | 0;
    $cmp = ($inc | 0) < ($add | 0);
    if ($cmp) {
      $i_060 = $inc;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 12:
    $5 = HEAP32[$boxes50 >> 2] | 0;
    $arrayidx51 = $5 + ($i_158 << 5) | 0;
    $add52 = $i_158 + 1 | 0;
    $arrayidx54 = $5 + ($add52 << 5) | 0;
    $cmp55 = ($i_158 | 0) < ($fb | 0);
    $cmp57 = ($i_158 | 0) > ($lb | 0);
    $or_cond = $cmp55 | $cmp57;
    if ($or_cond) {
      label = 18;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $sub60 = $i_158 - $fb | 0;
    $rem6153 = $sub60 & 1;
    $cmp62 = ($rem6153 | 0) == 0;
    if ($cmp62) {
      label = 14;
      break;
    } else {
      label = 18;
      break;
    }
   case 14:
    $x66 = $arrayidx51 | 0;
    $6 = +HEAPF64[$x66 >> 3];
    $add67 = $6 + 16.0;
    $x69 = $5 + ($add52 << 5) + 16 | 0;
    $7 = +HEAPF64[$x69 >> 3];
    $cmp70 = $add67 > $7;
    if ($cmp70) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    HEAPF64[$x69 >> 3] = $add67;
    label = 16;
    break;
   case 16:
    $x80 = $5 + ($i_158 << 5) + 16 | 0;
    $8 = +HEAPF64[$x80 >> 3];
    $sub81 = $8 + -16.0;
    $x83 = $arrayidx54 | 0;
    $9 = +HEAPF64[$x83 >> 3];
    $cmp84 = $sub81 < $9;
    if ($cmp84) {
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 17:
    HEAPF64[$x83 >> 3] = $sub81;
    label = 19;
    break;
   case 18:
    $cmp95 = ($add52 | 0) >= ($fb | 0);
    $cmp98 = ($i_158 | 0) < ($lb | 0);
    $or_cond55 = $cmp95 & $cmp98;
    if ($or_cond55) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $10 = HEAP32[$nbox >> 2] | 0;
    $sub46 = $10 - 1 | 0;
    $cmp47 = ($add52 | 0) < ($sub46 | 0);
    if ($cmp47) {
      $i_158 = $add52;
      label = 12;
      break;
    } else {
      label = 25;
      break;
    }
   case 20:
    $sub102 = $add52 - $fb | 0;
    $rem10352 = $sub102 & 1;
    $cmp104 = ($rem10352 | 0) == 0;
    if ($cmp104) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 21:
    $x108 = $arrayidx51 | 0;
    $11 = +HEAPF64[$x108 >> 3];
    $add109 = $11 + 16.0;
    $x111 = $5 + ($add52 << 5) + 16 | 0;
    $12 = +HEAPF64[$x111 >> 3];
    $cmp112 = $add109 > $12;
    if ($cmp112) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $sub117 = $12 + -16.0;
    HEAPF64[$x108 >> 3] = $sub117;
    label = 23;
    break;
   case 23:
    $x122 = $5 + ($i_158 << 5) + 16 | 0;
    $13 = +HEAPF64[$x122 >> 3];
    $sub123 = $13 + -16.0;
    $x125 = $arrayidx54 | 0;
    $14 = +HEAPF64[$x125 >> 3];
    $cmp126 = $sub123 < $14;
    if ($cmp126) {
      label = 24;
      break;
    } else {
      label = 19;
      break;
    }
   case 24:
    $add131 = $14 + 16.0;
    HEAPF64[$x122 >> 3] = $add131;
    label = 19;
    break;
   case 25:
    return;
  }
}
function _boxfof3015($agg_result, $llx, $lly, $urx, $ury) {
  $agg_result = $agg_result | 0;
  $llx = +$llx;
  $lly = +$lly;
  $urx = +$urx;
  $ury = +$ury;
  HEAPF64[$agg_result >> 3] = $llx;
  HEAPF64[$agg_result + 8 >> 3] = $lly;
  HEAPF64[$agg_result + 16 >> 3] = $urx;
  HEAPF64[$agg_result + 24 >> 3] = $ury;
  return;
}
function _cl_vninside($cl, $n) {
  $cl = $cl | 0;
  $n = $n | 0;
  var $x = 0, $0 = 0.0, $x2 = 0, $1 = 0.0, $cmp = 0, $x8 = 0, $2 = 0.0, $cmp9 = 0, $y = 0, $3 = 0.0, $y15 = 0, $4 = 0.0, $cmp16 = 0, $y24 = 0, $5 = 0.0, $cmp25 = 0, $phitmp = 0, $6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $cl + 56 | 0;
    $0 = +HEAPF64[$x >> 3];
    $x2 = $n + 32 | 0;
    $1 = +HEAPF64[$x2 >> 3];
    $cmp = $0 > $1;
    if ($cmp) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x8 = $cl + 72 | 0;
    $2 = +HEAPF64[$x8 >> 3];
    $cmp9 = $1 > $2;
    if ($cmp9) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $cl + 64 | 0;
    $3 = +HEAPF64[$y >> 3];
    $y15 = $n + 40 | 0;
    $4 = +HEAPF64[$y15 >> 3];
    $cmp16 = $3 > $4;
    if ($cmp16) {
      $6 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y24 = $cl + 80 | 0;
    $5 = +HEAPF64[$y24 >> 3];
    $cmp25 = $4 <= $5;
    $phitmp = $cmp25 & 1;
    $6 = $phitmp;
    label = 6;
    break;
   case 6:
    return $6 | 0;
  }
  return 0;
}
function _pathscross($n0, $n1, $ie1, $oe1) {
  $n0 = $n0 | 0;
  $n1 = $n1 | 0;
  $ie1 = $ie1 | 0;
  $oe1 = $oe1 | 0;
  var $order1 = 0, $0 = 0, $order3 = 0, $1 = 0, $cmp = 0, $size = 0, $2 = 0, $cmp5 = 0, $tobool = 0, $or_cond = 0, $list = 0, $3 = 0, $4 = 0, $head = 0, $5 = 0, $head23 = 0, $6 = 0, $cmp24 = 0, $order29 = 0, $7 = 0, $order31 = 0, $8 = 0, $cmp32 = 0, $cmp34 = 0, $size40 = 0, $9 = 0, $cmp41 = 0, $node_type = 0, $10 = 0, $cmp45 = 0, $list51 = 0, $11 = 0, $12 = 0, $size55 = 0, $13 = 0, $cmp56 = 0, $node_type60 = 0, $14 = 0, $cmp62 = 0, $list68 = 0, $15 = 0, $16 = 0, $head_1 = 0, $17 = 0, $head23_1 = 0, $18 = 0, $cmp24_1 = 0, $size72 = 0, $19 = 0, $cmp73 = 0, $tobool76 = 0, $or_cond29 = 0, $list80 = 0, $20 = 0, $21 = 0, $tail = 0, $22 = 0, $tail86 = 0, $23 = 0, $cmp87 = 0, $order92 = 0, $24 = 0, $order94 = 0, $25 = 0, $cmp95 = 0, $cmp97 = 0, $size103 = 0, $26 = 0, $cmp104 = 0, $node_type108 = 0, $27 = 0, $cmp110 = 0, $list116 = 0, $28 = 0, $29 = 0, $size120 = 0, $30 = 0, $cmp121 = 0, $node_type125 = 0, $31 = 0, $cmp127 = 0, $list133 = 0, $32 = 0, $33 = 0, $tail_1 = 0, $34 = 0, $tail86_1 = 0, $35 = 0, $cmp87_1 = 0, $retval_0 = 0, $order92_1 = 0, $36 = 0, $order94_1 = 0, $37 = 0, $cmp95_1 = 0, $cmp97_1 = 0, $retval = 0, $order29_1 = 0, $38 = 0, $order31_1 = 0, $39 = 0, $cmp32_1 = 0, $cmp34_1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $order1 = $n0 + 240 | 0;
    $0 = HEAP32[$order1 >> 2] | 0;
    $order3 = $n1 + 240 | 0;
    $1 = HEAP32[$order3 >> 2] | 0;
    $cmp = ($0 | 0) > ($1 | 0);
    $size = $n0 + 188 | 0;
    $2 = HEAP32[$size >> 2] | 0;
    $cmp5 = ($2 | 0) != 1;
    if ($cmp5) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool = ($oe1 | 0) == 0;
    $or_cond = $cmp5 | $tobool;
    if ($or_cond) {
      label = 11;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $list = $n0 + 184 | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $head = $4 + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $head23 = $oe1 + 12 | 0;
    $6 = HEAP32[$head23 >> 2] | 0;
    $cmp24 = ($5 | 0) == ($6 | 0);
    if ($cmp24) {
      label = 11;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $order29 = $5 + 240 | 0;
    $7 = HEAP32[$order29 >> 2] | 0;
    $order31 = $6 + 240 | 0;
    $8 = HEAP32[$order31 >> 2] | 0;
    $cmp32 = ($7 | 0) > ($8 | 0);
    $cmp34 = $cmp ^ $cmp32;
    if ($cmp34) {
      $retval_0 = 1;
      label = 19;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $size40 = $5 + 188 | 0;
    $9 = HEAP32[$size40 >> 2] | 0;
    $cmp41 = ($9 | 0) == 1;
    if ($cmp41) {
      label = 7;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $node_type = $5 + 162 | 0;
    $10 = HEAP8[$node_type] | 0;
    $cmp45 = $10 << 24 >> 24 == 0;
    if ($cmp45) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $list51 = $5 + 184 | 0;
    $11 = HEAP32[$list51 >> 2] | 0;
    $12 = HEAP32[$11 >> 2] | 0;
    $size55 = $6 + 188 | 0;
    $13 = HEAP32[$size55 >> 2] | 0;
    $cmp56 = ($13 | 0) == 1;
    if ($cmp56) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $node_type60 = $6 + 162 | 0;
    $14 = HEAP8[$node_type60] | 0;
    $cmp62 = $14 << 24 >> 24 == 0;
    if ($cmp62) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $list68 = $6 + 184 | 0;
    $15 = HEAP32[$list68 >> 2] | 0;
    $16 = HEAP32[$15 >> 2] | 0;
    $head_1 = $12 + 12 | 0;
    $17 = HEAP32[$head_1 >> 2] | 0;
    $head23_1 = $16 + 12 | 0;
    $18 = HEAP32[$head23_1 >> 2] | 0;
    $cmp24_1 = ($17 | 0) == ($18 | 0);
    if ($cmp24_1) {
      label = 11;
      break;
    } else {
      label = 21;
      break;
    }
   case 11:
    $size72 = $n0 + 180 | 0;
    $19 = HEAP32[$size72 >> 2] | 0;
    $cmp73 = ($19 | 0) != 1;
    $tobool76 = ($ie1 | 0) == 0;
    $or_cond29 = $cmp73 | $tobool76;
    if ($or_cond29) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $list80 = $n0 + 176 | 0;
    $20 = HEAP32[$list80 >> 2] | 0;
    $21 = HEAP32[$20 >> 2] | 0;
    $tail = $21 + 16 | 0;
    $22 = HEAP32[$tail >> 2] | 0;
    $tail86 = $ie1 + 16 | 0;
    $23 = HEAP32[$tail86 >> 2] | 0;
    $cmp87 = ($22 | 0) == ($23 | 0);
    if ($cmp87) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $order92 = $22 + 240 | 0;
    $24 = HEAP32[$order92 >> 2] | 0;
    $order94 = $23 + 240 | 0;
    $25 = HEAP32[$order94 >> 2] | 0;
    $cmp95 = ($24 | 0) > ($25 | 0);
    $cmp97 = $cmp ^ $cmp95;
    if ($cmp97) {
      $retval_0 = 1;
      label = 19;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $size103 = $22 + 180 | 0;
    $26 = HEAP32[$size103 >> 2] | 0;
    $cmp104 = ($26 | 0) == 1;
    if ($cmp104) {
      label = 15;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 15:
    $node_type108 = $22 + 162 | 0;
    $27 = HEAP8[$node_type108] | 0;
    $cmp110 = $27 << 24 >> 24 == 0;
    if ($cmp110) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $list116 = $22 + 176 | 0;
    $28 = HEAP32[$list116 >> 2] | 0;
    $29 = HEAP32[$28 >> 2] | 0;
    $size120 = $23 + 180 | 0;
    $30 = HEAP32[$size120 >> 2] | 0;
    $cmp121 = ($30 | 0) == 1;
    if ($cmp121) {
      label = 17;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 17:
    $node_type125 = $23 + 162 | 0;
    $31 = HEAP8[$node_type125] | 0;
    $cmp127 = $31 << 24 >> 24 == 0;
    if ($cmp127) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $list133 = $23 + 176 | 0;
    $32 = HEAP32[$list133 >> 2] | 0;
    $33 = HEAP32[$32 >> 2] | 0;
    $tail_1 = $29 + 16 | 0;
    $34 = HEAP32[$tail_1 >> 2] | 0;
    $tail86_1 = $33 + 16 | 0;
    $35 = HEAP32[$tail86_1 >> 2] | 0;
    $cmp87_1 = ($34 | 0) == ($35 | 0);
    if ($cmp87_1) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    return $retval_0 | 0;
   case 20:
    $order92_1 = $34 + 240 | 0;
    $36 = HEAP32[$order92_1 >> 2] | 0;
    $order94_1 = $35 + 240 | 0;
    $37 = HEAP32[$order94_1 >> 2] | 0;
    $cmp95_1 = ($36 | 0) > ($37 | 0);
    $cmp97_1 = $cmp ^ $cmp95_1;
    $retval = $cmp97_1 & 1;
    return $retval | 0;
   case 21:
    $order29_1 = $17 + 240 | 0;
    $38 = HEAP32[$order29_1 >> 2] | 0;
    $order31_1 = $18 + 240 | 0;
    $39 = HEAP32[$order31_1 >> 2] | 0;
    $cmp32_1 = ($38 | 0) > ($39 | 0);
    $cmp34_1 = $cmp ^ $cmp32_1;
    if ($cmp34_1) {
      $retval_0 = 1;
      label = 19;
      break;
    } else {
      label = 11;
      break;
    }
  }
  return 0;
}
function _add_pointf3016($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $add4 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $add4 = +HEAPF64[$p + 8 >> 3] + +HEAPF64[$q + 8 >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p >> 3] + +HEAPF64[$q >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $add4;
  STACKTOP = __stackBase__;
  return;
}
function _leftOf($p1, $p2, $p3) {
  $p1 = $p1 | 0;
  $p2 = $p2 | 0;
  $p3 = $p3 | 0;
  var $1 = 0.0, $3 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p1;
  $p1 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p1 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p1 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p1 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p1 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p2;
  $p2 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p2 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p2 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p2 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p2 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $p3;
  $p3 = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p3 >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p3 + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p3 + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p3 + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $1 = +HEAPF64[$p2 + 8 >> 3];
  $3 = +HEAPF64[$p2 >> 3];
  STACKTOP = __stackBase__;
  return (~~((+HEAPF64[$p1 + 8 >> 3] - $1) * (+HEAPF64[$p3 >> 3] - $3) - (+HEAPF64[$p3 + 8 >> 3] - $1) * (+HEAPF64[$p1 >> 3] - $3)) | 0) > 0 & 1 | 0;
}
function _neighbor($vn, $ie, $oe, $dir) {
  $vn = $vn | 0;
  $ie = $ie | 0;
  $oe = $oe | 0;
  $dir = $dir | 0;
  var $rank1 = 0, $0 = 0, $graph = 0, $1 = 0, $rank3 = 0, $2 = 0, $order = 0, $3 = 0, $n5 = 0, $v = 0, $_pn = 0, $i_0 = 0, $cmp = 0, $4 = 0, $cmp6 = 0, $5 = 0, $arrayidx7 = 0, $6 = 0, $node_type = 0, $7 = 0, $cmp9 = 0, $label = 0, $8 = 0, $tobool = 0, $_pr = 0, $9 = 0, $cmp15 = 0, $call = 0, $cmp20 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank1 = $vn + 236 | 0;
    $0 = HEAP32[$rank1 >> 2] | 0;
    $graph = $vn + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $rank3 = $1 + 224 | 0;
    $2 = HEAP32[$rank3 >> 2] | 0;
    $order = $vn + 240 | 0;
    $3 = HEAP32[$order >> 2] | 0;
    $n5 = $2 + ($0 * 44 & -1) | 0;
    $v = $2 + ($0 * 44 & -1) + 4 | 0;
    $_pn = $3;
    label = 3;
    break;
   case 3:
    $i_0 = $_pn + $dir | 0;
    $cmp = ($i_0 | 0) > -1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $rv_0 = 0;
      label = 10;
      break;
    }
   case 4:
    $4 = HEAP32[$n5 >> 2] | 0;
    $cmp6 = ($i_0 | 0) < ($4 | 0);
    if ($cmp6) {
      label = 5;
      break;
    } else {
      $rv_0 = 0;
      label = 10;
      break;
    }
   case 5:
    $5 = HEAP32[$v >> 2] | 0;
    $arrayidx7 = $5 + ($i_0 << 2) | 0;
    $6 = HEAP32[$arrayidx7 >> 2] | 0;
    $node_type = $6 + 162 | 0;
    $7 = HEAP8[$node_type] | 0;
    $cmp9 = $7 << 24 >> 24 == 1;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      $9 = $7;
      label = 8;
      break;
    }
   case 6:
    $label = $6 + 120 | 0;
    $8 = HEAP32[$label >> 2] | 0;
    $tobool = ($8 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $rv_0 = $6;
      label = 10;
      break;
    }
   case 7:
    $_pr = HEAP8[$node_type] | 0;
    $9 = $_pr;
    label = 8;
    break;
   case 8:
    $cmp15 = $9 << 24 >> 24 == 0;
    if ($cmp15) {
      $rv_0 = $6;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call = _pathscross($6, $vn, $ie, $oe) | 0;
    $cmp20 = $call << 24 >> 24 == 0;
    if ($cmp20) {
      $rv_0 = $6;
      label = 10;
      break;
    } else {
      $_pn = $i_0;
      label = 3;
      break;
    }
   case 10:
    return $rv_0 | 0;
  }
  return 0;
}
function _cl_bound($n, $adj) {
  $n = $n | 0;
  $adj = $adj | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $clust = 0, $1 = 0, $list = 0, $2 = 0, $3 = 0, $to_orig = 0, $4 = 0, $tail = 0, $5 = 0, $clust6 = 0, $6 = 0, $head = 0, $7 = 0, $clust8 = 0, $8 = 0, $tcl_0 = 0, $hcl_0 = 0, $node_type10 = 0, $9 = 0, $cmp12 = 0, $clust16 = 0, $10 = 0, $tobool = 0, $cmp17 = 0, $or_cond = 0, $cmp20 = 0, $or_cond25 = 0, $_30 = 0, $list27 = 0, $11 = 0, $12 = 0, $to_orig30 = 0, $13 = 0, $tail31 = 0, $14 = 0, $clust33 = 0, $15 = 0, $tobool34 = 0, $cmp36 = 0, $or_cond26 = 0, $cmp39 = 0, $or_cond27 = 0, $call = 0, $tobool42 = 0, $head45 = 0, $16 = 0, $clust47 = 0, $17 = 0, $tobool48 = 0, $cmp50 = 0, $or_cond28 = 0, $cmp53 = 0, $or_cond29 = 0, $call56 = 0, $tobool57 = 0, $_ = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $n + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $clust = $n + 216 | 0;
    $1 = HEAP32[$clust >> 2] | 0;
    $hcl_0 = $1;
    $tcl_0 = $1;
    label = 5;
    break;
   case 4:
    $list = $n + 184 | 0;
    $2 = HEAP32[$list >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $to_orig = $3 + 132 | 0;
    $4 = HEAP32[$to_orig >> 2] | 0;
    $tail = $4 + 16 | 0;
    $5 = HEAP32[$tail >> 2] | 0;
    $clust6 = $5 + 216 | 0;
    $6 = HEAP32[$clust6 >> 2] | 0;
    $head = $4 + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    $clust8 = $7 + 216 | 0;
    $8 = HEAP32[$clust8 >> 2] | 0;
    $hcl_0 = $8;
    $tcl_0 = $6;
    label = 5;
    break;
   case 5:
    $node_type10 = $adj + 162 | 0;
    $9 = HEAP8[$node_type10] | 0;
    $cmp12 = $9 << 24 >> 24 == 0;
    if ($cmp12) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $clust16 = $adj + 216 | 0;
    $10 = HEAP32[$clust16 >> 2] | 0;
    $tobool = ($10 | 0) == 0;
    $cmp17 = ($10 | 0) == ($tcl_0 | 0);
    $or_cond = $tobool | $cmp17;
    $cmp20 = ($10 | 0) == ($hcl_0 | 0);
    $or_cond25 = $or_cond | $cmp20;
    $_30 = $or_cond25 ? 0 : $10;
    return $_30 | 0;
   case 7:
    $list27 = $adj + 184 | 0;
    $11 = HEAP32[$list27 >> 2] | 0;
    $12 = HEAP32[$11 >> 2] | 0;
    $to_orig30 = $12 + 132 | 0;
    $13 = HEAP32[$to_orig30 >> 2] | 0;
    $tail31 = $13 + 16 | 0;
    $14 = HEAP32[$tail31 >> 2] | 0;
    $clust33 = $14 + 216 | 0;
    $15 = HEAP32[$clust33 >> 2] | 0;
    $tobool34 = ($15 | 0) == 0;
    $cmp36 = ($15 | 0) == ($tcl_0 | 0);
    $or_cond26 = $tobool34 | $cmp36;
    $cmp39 = ($15 | 0) == ($hcl_0 | 0);
    $or_cond27 = $or_cond26 | $cmp39;
    if ($or_cond27) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call = _cl_vninside($15, $adj) | 0;
    $tobool42 = ($call | 0) == 0;
    if ($tobool42) {
      label = 9;
      break;
    } else {
      $rv_0 = $15;
      label = 11;
      break;
    }
   case 9:
    $head45 = $13 + 12 | 0;
    $16 = HEAP32[$head45 >> 2] | 0;
    $clust47 = $16 + 216 | 0;
    $17 = HEAP32[$clust47 >> 2] | 0;
    $tobool48 = ($17 | 0) == 0;
    $cmp50 = ($17 | 0) == ($tcl_0 | 0);
    $or_cond28 = $tobool48 | $cmp50;
    $cmp53 = ($17 | 0) == ($hcl_0 | 0);
    $or_cond29 = $or_cond28 | $cmp53;
    if ($or_cond29) {
      $rv_0 = 0;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call56 = _cl_vninside($17, $adj) | 0;
    $tobool57 = ($call56 | 0) == 0;
    $_ = $tobool57 ? 0 : $17;
    return $_ | 0;
   case 11:
    return $rv_0 | 0;
  }
  return 0;
}
function _make_flat_adj_edges($edges, $ind, $cnt, $e0, $et) {
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $e0 = $e0 | 0;
  $et = $et | 0;
  var $del = 0, $tmp = 0, $tmp230 = 0, $cp = 0, $tmp246 = 0, $tmp262 = 0, $tmp273 = 0, $tmp282 = 0, $tmp298 = 0, $tail = 0, $0 = 0, $graph = 0, $1 = 0, $head = 0, $2 = 0, $cmp13 = 0, $labels_016 = 0, $ports_015 = 0, $i_014 = 0, $add = 0, $arrayidx = 0, $3 = 0, $label = 0, $4 = 0, $not_tobool = 0, $inc = 0, $labels_0_inc = 0, $defined = 0, $5 = 0, $tobool3 = 0, $defined5 = 0, $6 = 0, $tobool7 = 0, $ports_1 = 0, $inc10 = 0, $cmp = 0, $cmp11 = 0, $cmp14 = 0, $call = 0, $7 = 0, $call19 = 0, $8 = 0, $9 = 0, $call20 = 0, $x = 0, $10 = 0.0, $conv22 = 0, $x25 = 0, $11 = 0.0, $conv26 = 0, $rankdir = 0, $12 = 0, $and28 = 0, $tobool29 = 0, $_ = 0, $_2 = 0, $call37 = 0, $call42 = 0, $cmp4410 = 0, $hvye_012 = 0, $i_111 = 0, $add47 = 0, $arrayidx48 = 0, $e_0_in = 0, $e_0 = 0, $edge_type = 0, $13 = 0, $cmp52 = 0, $to_orig = 0, $tail58 = 0, $14 = 0, $cmp59 = 0, $call62 = 0, $call64 = 0, $auxe_0 = 0, $15 = 0, $alg = 0, $tobool67 = 0, $defined70 = 0, $16 = 0, $tobool71 = 0, $defined75 = 0, $17 = 0, $tobool76 = 0, $18 = 0, $alg79 = 0, $hvye_1 = 0, $inc82 = 0, $cmp44 = 0, $tobool84 = 0, $19 = 0, $20 = 0, $21 = 0, $call86 = 0, $22 = 0, $hvye_2 = 0, $23 = 0, $24 = 0, $index = 0, $25 = 0, $call88 = 0, $gvc = 0, $26 = 0, $gvc91 = 0, $27 = 0, $28 = 0, $x94 = 0, $x105 = 0, $29 = 0.0, $x108 = 0, $30 = 0.0, $add109 = 0.0, $div110 = 0.0, $conv111 = 0, $nlist = 0, $n_07 = 0, $tobool1148 = 0, $rw = 0, $x98 = 0, $31 = 0.0, $32 = 0.0, $lw = 0, $33 = 0.0, $sub = 0.0, $34 = 0.0, $add99 = 0.0, $add101 = 0.0, $div = 0.0, $conv102 = 0, $conv119 = 0.0, $conv122 = 0.0, $conv130 = 0.0, $conv134 = 0.0, $conv139 = 0.0, $n_09 = 0, $cmp116 = 0, $y = 0, $x125 = 0, $cmp127 = 0, $y133 = 0, $x137 = 0, $next = 0, $n_0 = 0, $tobool114 = 0, $35 = 0, $and151 = 0, $tobool152 = 0, $36 = 0.0, $y159 = 0, $37 = 0.0, $sub160 = 0.0, $x161 = 0, $y164 = 0, $38 = 0.0, $39 = 0.0, $add168 = 0.0, $y169 = 0, $40 = 0.0, $sub177 = 0.0, $x178 = 0, $y181 = 0, $41 = 0.0, $y184 = 0, $42 = 0.0, $sub185 = 0.0, $y186 = 0, $cmp1895 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $arrayidx237 = 0, $arrayidx253 = 0, $49 = 0, $50 = 0, $arrayidx264 = 0, $51 = 0, $52 = 0, $arrayidx275 = 0, $53 = 0, $54 = 0, $bb = 0, $i_26 = 0, $add192 = 0, $arrayidx193 = 0, $e_1_in = 0, $e_1 = 0, $edge_type196 = 0, $55 = 0, $cmp198 = 0, $to_orig203 = 0, $alg206 = 0, $56 = 0, $57 = 0, $cmp207 = 0, $alg210 = 0, $58 = 0, $59 = 0, $lnot = 0, $and2121 = 0, $u209 = 0, $spl = 0, $60 = 0, $list = 0, $61 = 0, $size = 0, $62 = 0, $63 = 0, $call217 = 0, $sflag = 0, $64 = 0, $sflag218 = 0, $sp = 0, $sp219 = 0, $65 = 0, $and223 = 0, $66 = 0, $eflag = 0, $67 = 0, $eflag224 = 0, $ep = 0, $ep225 = 0, $68 = 0, $and229 = 0, $69 = 0, $list238 = 0, $70 = 0, $cmp2333 = 0, $list240 = 0, $j_04 = 0, $71 = 0, $arrayidx239 = 0, $72 = 0, $arrayidx241 = 0, $73 = 0, $and245 = 0, $74 = 0, $inc247 = 0, $75 = 0, $cmp249 = 0, $76 = 0, $arrayidx255 = 0, $77 = 0, $arrayidx257 = 0, $78 = 0, $and261 = 0, $79 = 0, $inc263 = 0, $80 = 0, $arrayidx266 = 0, $81 = 0, $arrayidx268 = 0, $82 = 0, $and272 = 0, $83 = 0, $inc274 = 0, $84 = 0, $arrayidx277 = 0, $85 = 0, $and281 = 0, $86 = 0, $cmp233 = 0, $label286 = 0, $87 = 0, $tobool287 = 0, $pos = 0, $label292 = 0, $88 = 0, $89 = 0, $pos293 = 0, $90 = 0, $and297 = 0, $91 = 0, $92 = 0, $set = 0, $93 = 0, $inc305 = 0, $cmp189 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 192 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $del = __stackBase__ | 0;
    $tmp = __stackBase__ + 16 | 0;
    $tmp230 = __stackBase__ + 32 | 0;
    $cp = __stackBase__ + 48 | 0;
    $tmp246 = __stackBase__ + 112 | 0;
    $tmp262 = __stackBase__ + 128 | 0;
    $tmp273 = __stackBase__ + 144 | 0;
    $tmp282 = __stackBase__ + 160 | 0;
    $tmp298 = __stackBase__ + 176 | 0;
    $tail = $e0 + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $head = $e0 + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $cmp13 = ($cnt | 0) > 0;
    if ($cmp13) {
      $i_014 = 0;
      $ports_015 = 0;
      $labels_016 = 0;
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $add = $i_014 + $ind | 0;
    $arrayidx = $edges + ($add << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $label = $3 + 112 | 0;
    $4 = HEAP32[$label >> 2] | 0;
    $not_tobool = ($4 | 0) != 0;
    $inc = $not_tobool & 1;
    $labels_0_inc = $inc + $labels_016 | 0;
    $defined = $3 + 60 | 0;
    $5 = HEAP8[$defined] | 0;
    $tobool3 = $5 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $defined5 = $3 + 100 | 0;
    $6 = HEAP8[$defined5] | 0;
    $tobool7 = $6 << 24 >> 24 == 0;
    if ($tobool7) {
      $ports_1 = $ports_015;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $ports_1 = 1;
    label = 6;
    break;
   case 6:
    $inc10 = $i_014 + 1 | 0;
    $cmp = ($inc10 | 0) < ($cnt | 0);
    if ($cmp) {
      $i_014 = $inc10;
      $ports_015 = $ports_1;
      $labels_016 = $labels_0_inc;
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp11 = ($ports_1 | 0) == 0;
    if ($cmp11) {
      label = 8;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    $cmp14 = ($labels_0_inc | 0) == 0;
    if ($cmp14) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    _makeSimpleFlat($0, $2, $edges, $ind, $cnt, $et);
    label = 48;
    break;
   case 10:
    _makeSimpleFlatLabels($0, $2, $edges, $ind, $cnt, $et, $labels_0_inc);
    label = 48;
    break;
   case 11:
    $call = _cloneGraph($1) | 0;
    $7 = $call;
    $call19 = _agsubg($7, 125768) | 0;
    $8 = $call19;
    $9 = $call19 | 0;
    $call20 = _agset($9, 117048, 111736) | 0;
    $x = $2 + 32 | 0;
    $10 = +HEAPF64[$x >> 3];
    $conv22 = ~~$10;
    $x25 = $0 + 32 | 0;
    $11 = +HEAPF64[$x25 >> 3];
    $conv26 = ~~$11;
    $rankdir = $1 + 156 | 0;
    $12 = HEAP32[$rankdir >> 2] | 0;
    $and28 = $12 & 1;
    $tobool29 = ($and28 | 0) == 0;
    $_ = $tobool29 ? $2 : $0;
    $_2 = $tobool29 ? $0 : $2;
    $call37 = _cloneNode($8, $_2) | 0;
    $call42 = _cloneNode($call, $_) | 0;
    $cmp4410 = ($cnt | 0) > 0;
    if ($cmp4410) {
      $i_111 = 0;
      $hvye_012 = 0;
      label = 12;
      break;
    } else {
      label = 23;
      break;
    }
   case 12:
    $add47 = $i_111 + $ind | 0;
    $arrayidx48 = $edges + ($add47 << 2) | 0;
    $e_0_in = $arrayidx48;
    label = 13;
    break;
   case 13:
    $e_0 = HEAP32[$e_0_in >> 2] | 0;
    $edge_type = $e_0 + 128 | 0;
    $13 = HEAP8[$edge_type] | 0;
    $cmp52 = $13 << 24 >> 24 == 0;
    $to_orig = $e_0 + 132 | 0;
    if ($cmp52) {
      label = 14;
      break;
    } else {
      $e_0_in = $to_orig;
      label = 13;
      break;
    }
   case 14:
    $tail58 = $e_0 + 16 | 0;
    $14 = HEAP32[$tail58 >> 2] | 0;
    $cmp59 = ($14 | 0) == ($_2 | 0);
    if ($cmp59) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $call62 = _cloneEdge3018($call, $call37, $call42, $e_0) | 0;
    $auxe_0 = $call62;
    label = 17;
    break;
   case 16:
    $call64 = _cloneEdge3018($call, $call42, $call37, $e_0) | 0;
    $auxe_0 = $call64;
    label = 17;
    break;
   case 17:
    $15 = $auxe_0 | 0;
    $alg = $e_0 + 136 | 0;
    HEAP32[$alg >> 2] = $15;
    $tobool67 = ($hvye_012 | 0) == 0;
    if ($tobool67) {
      label = 18;
      break;
    } else {
      $hvye_1 = $hvye_012;
      label = 21;
      break;
    }
   case 18:
    $defined70 = $e_0 + 60 | 0;
    $16 = HEAP8[$defined70] | 0;
    $tobool71 = $16 << 24 >> 24 == 0;
    if ($tobool71) {
      label = 19;
      break;
    } else {
      $hvye_1 = 0;
      label = 21;
      break;
    }
   case 19:
    $defined75 = $e_0 + 100 | 0;
    $17 = HEAP8[$defined75] | 0;
    $tobool76 = $17 << 24 >> 24 == 0;
    if ($tobool76) {
      label = 20;
      break;
    } else {
      $hvye_1 = $hvye_012;
      label = 21;
      break;
    }
   case 20:
    $18 = $e_0 | 0;
    $alg79 = $auxe_0 + 136 | 0;
    HEAP32[$alg79 >> 2] = $18;
    $hvye_1 = $auxe_0;
    label = 21;
    break;
   case 21:
    $inc82 = $i_111 + 1 | 0;
    $cmp44 = ($inc82 | 0) < ($cnt | 0);
    if ($cmp44) {
      $i_111 = $inc82;
      $hvye_012 = $hvye_1;
      label = 12;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $tobool84 = ($hvye_1 | 0) == 0;
    if ($tobool84) {
      label = 23;
      break;
    } else {
      $hvye_2 = $hvye_1;
      label = 24;
      break;
    }
   case 23:
    $19 = $call;
    $20 = $call37;
    $21 = $call42;
    $call86 = _agedge($19, $20, $21) | 0;
    $22 = $call86;
    $hvye_2 = $22;
    label = 24;
    break;
   case 24:
    $23 = $hvye_2 | 0;
    $24 = HEAP32[41894] | 0;
    $index = $24 + 8 | 0;
    $25 = HEAP32[$index >> 2] | 0;
    $call88 = _agxset($23, $25, 107384) | 0;
    $gvc = $1 + 176 | 0;
    $26 = HEAP32[$gvc >> 2] | 0;
    $gvc91 = $call + 176 | 0;
    HEAP32[$gvc91 >> 2] = $26;
    $27 = $call;
    _setEdgeType($27, $et);
    _dot_init_node_edge($call);
    $28 = $call;
    _dot_rank($28, 0);
    _dot_mincross($27, 0);
    _dot_position($27, 0);
    $x94 = $_2 + 32 | 0;
    $x105 = $call37 + 32 | 0;
    $29 = +HEAPF64[$x105 >> 3];
    $x108 = $call42 + 32 | 0;
    $30 = +HEAPF64[$x108 >> 3];
    $add109 = $29 + $30;
    $div110 = $add109 * .5;
    $conv111 = ~~$div110;
    $nlist = $call + 220 | 0;
    $n_07 = HEAP32[$nlist >> 2] | 0;
    $tobool1148 = ($n_07 | 0) == 0;
    if ($tobool1148) {
      label = 32;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $rw = $_2 + 112 | 0;
    $x98 = $_ + 32 | 0;
    $31 = +HEAPF64[$rw >> 3];
    $32 = +HEAPF64[$x94 >> 3];
    $lw = $_ + 104 | 0;
    $33 = +HEAPF64[$x98 >> 3];
    $sub = $32 - $31;
    $34 = +HEAPF64[$lw >> 3];
    $add99 = $sub + $33;
    $add101 = $add99 + $34;
    $div = $add101 * .5;
    $conv102 = ~~$div;
    $conv119 = +($conv22 | 0);
    $conv122 = +($conv111 | 0);
    $conv130 = +($conv26 | 0);
    $conv134 = +($conv111 | 0);
    $conv139 = +($conv102 | 0);
    $n_09 = $n_07;
    label = 26;
    break;
   case 26:
    $cmp116 = ($n_09 | 0) == ($call37 | 0);
    if ($cmp116) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $y = $n_09 + 40 | 0;
    HEAPF64[$y >> 3] = $conv119;
    $x125 = $n_09 + 32 | 0;
    HEAPF64[$x125 >> 3] = $conv122;
    label = 31;
    break;
   case 28:
    $cmp127 = ($n_09 | 0) == ($call42 | 0);
    $y133 = $n_09 + 40 | 0;
    if ($cmp127) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    HEAPF64[$y133 >> 3] = $conv130;
    $x137 = $n_09 + 32 | 0;
    HEAPF64[$x137 >> 3] = $conv134;
    label = 31;
    break;
   case 30:
    HEAPF64[$y133 >> 3] = $conv139;
    label = 31;
    break;
   case 31:
    $next = $n_09 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool114 = ($n_0 | 0) == 0;
    if ($tobool114) {
      label = 32;
      break;
    } else {
      $n_09 = $n_0;
      label = 26;
      break;
    }
   case 32:
    _dot_sameports($call);
    __dot_splines($call, 0);
    _dotneato_postprocess($27);
    $35 = HEAP32[$rankdir >> 2] | 0;
    $and151 = $35 & 1;
    $tobool152 = ($and151 | 0) == 0;
    $36 = +HEAPF64[$x94 >> 3];
    if ($tobool152) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $y159 = $call37 + 40 | 0;
    $37 = +HEAPF64[$y159 >> 3];
    $sub160 = $36 - $37;
    $x161 = $del | 0;
    HEAPF64[$x161 >> 3] = $sub160;
    $y164 = $_2 + 40 | 0;
    $38 = +HEAPF64[$y164 >> 3];
    $39 = +HEAPF64[$x105 >> 3];
    $add168 = $38 + $39;
    $y169 = $del + 8 | 0;
    HEAPF64[$y169 >> 3] = $add168;
    label = 35;
    break;
   case 34:
    $40 = +HEAPF64[$x105 >> 3];
    $sub177 = $36 - $40;
    $x178 = $del | 0;
    HEAPF64[$x178 >> 3] = $sub177;
    $y181 = $_2 + 40 | 0;
    $41 = +HEAPF64[$y181 >> 3];
    $y184 = $call37 + 40 | 0;
    $42 = +HEAPF64[$y184 >> 3];
    $sub185 = $41 - $42;
    $y186 = $del + 8 | 0;
    HEAPF64[$y186 >> 3] = $sub185;
    label = 35;
    break;
   case 35:
    $cmp1895 = ($cnt | 0) > 0;
    if ($cmp1895) {
      label = 36;
      break;
    } else {
      label = 47;
      break;
    }
   case 36:
    $43 = $tmp;
    $44 = $tmp230;
    $45 = $tmp298;
    $46 = $1;
    $47 = $tmp246;
    $48 = $cp;
    $arrayidx237 = $cp | 0;
    $arrayidx253 = $cp + 16 | 0;
    $49 = $tmp262;
    $50 = $arrayidx253;
    $arrayidx264 = $cp + 32 | 0;
    $51 = $tmp273;
    $52 = $arrayidx264;
    $arrayidx275 = $cp + 48 | 0;
    $53 = $arrayidx275;
    $54 = $tmp282;
    $bb = $1 + 56 | 0;
    $i_26 = 0;
    label = 37;
    break;
   case 37:
    $add192 = $i_26 + $ind | 0;
    $arrayidx193 = $edges + ($add192 << 2) | 0;
    $e_1_in = $arrayidx193;
    label = 38;
    break;
   case 38:
    $e_1 = HEAP32[$e_1_in >> 2] | 0;
    $edge_type196 = $e_1 + 128 | 0;
    $55 = HEAP8[$edge_type196] | 0;
    $cmp198 = $55 << 24 >> 24 == 0;
    $to_orig203 = $e_1 + 132 | 0;
    if ($cmp198) {
      label = 39;
      break;
    } else {
      $e_1_in = $to_orig203;
      label = 38;
      break;
    }
   case 39:
    $alg206 = $e_1 + 136 | 0;
    $56 = HEAP32[$alg206 >> 2] | 0;
    $57 = $56;
    $cmp207 = ($57 | 0) == ($hvye_2 | 0);
    $alg210 = $56 + 136 | 0;
    $58 = $alg210;
    $59 = HEAP32[$58 >> 2] | 0;
    $lnot = ($59 | 0) == 0;
    $and2121 = $cmp207 & $lnot;
    if ($and2121) {
      label = 46;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $u209 = $56 + 24 | 0;
    $spl = $u209;
    $60 = HEAP32[$spl >> 2] | 0;
    $list = $60 | 0;
    $61 = HEAP32[$list >> 2] | 0;
    $size = $61 + 4 | 0;
    $62 = HEAP32[$size >> 2] | 0;
    $63 = $e_1;
    $call217 = _new_spline($63, $62) | 0;
    $sflag = $61 + 8 | 0;
    $64 = HEAP32[$sflag >> 2] | 0;
    $sflag218 = $call217 + 8 | 0;
    HEAP32[$sflag218 >> 2] = $64;
    $sp = $call217 + 16 | 0;
    $sp219 = $61 + 16 | 0;
    $65 = HEAP32[$rankdir >> 2] | 0;
    $and223 = $65 & 1;
    _transformf($tmp, $sp219, $del, $and223);
    $66 = $sp;
    HEAP32[$66 >> 2] = HEAP32[$43 >> 2] | 0;
    HEAP32[$66 + 4 >> 2] = HEAP32[$43 + 4 >> 2] | 0;
    HEAP32[$66 + 8 >> 2] = HEAP32[$43 + 8 >> 2] | 0;
    HEAP32[$66 + 12 >> 2] = HEAP32[$43 + 12 >> 2] | 0;
    $eflag = $61 + 12 | 0;
    $67 = HEAP32[$eflag >> 2] | 0;
    $eflag224 = $call217 + 12 | 0;
    HEAP32[$eflag224 >> 2] = $67;
    $ep = $call217 + 32 | 0;
    $ep225 = $61 + 32 | 0;
    $68 = HEAP32[$rankdir >> 2] | 0;
    $and229 = $68 & 1;
    _transformf($tmp230, $ep225, $del, $and229);
    $69 = $ep;
    HEAP32[$69 >> 2] = HEAP32[$44 >> 2] | 0;
    HEAP32[$69 + 4 >> 2] = HEAP32[$44 + 4 >> 2] | 0;
    HEAP32[$69 + 8 >> 2] = HEAP32[$44 + 8 >> 2] | 0;
    HEAP32[$69 + 12 >> 2] = HEAP32[$44 + 12 >> 2] | 0;
    $list238 = $call217 | 0;
    $70 = HEAP32[$size >> 2] | 0;
    $cmp2333 = ($70 | 0) > 0;
    if ($cmp2333) {
      label = 41;
      break;
    } else {
      label = 44;
      break;
    }
   case 41:
    $list240 = $61 | 0;
    $j_04 = 0;
    label = 42;
    break;
   case 42:
    $71 = HEAP32[$list238 >> 2] | 0;
    $arrayidx239 = $71 + ($j_04 << 4) | 0;
    $72 = HEAP32[$list240 >> 2] | 0;
    $arrayidx241 = $72 + ($j_04 << 4) | 0;
    $73 = HEAP32[$rankdir >> 2] | 0;
    $and245 = $73 & 1;
    _transformf($tmp246, $arrayidx241, $del, $and245);
    $74 = $arrayidx239;
    HEAP32[$74 >> 2] = HEAP32[$47 >> 2] | 0;
    HEAP32[$74 + 4 >> 2] = HEAP32[$47 + 4 >> 2] | 0;
    HEAP32[$74 + 8 >> 2] = HEAP32[$47 + 8 >> 2] | 0;
    HEAP32[$74 + 12 >> 2] = HEAP32[$47 + 12 >> 2] | 0;
    HEAP32[$48 >> 2] = HEAP32[$47 >> 2] | 0;
    HEAP32[$48 + 4 >> 2] = HEAP32[$47 + 4 >> 2] | 0;
    HEAP32[$48 + 8 >> 2] = HEAP32[$47 + 8 >> 2] | 0;
    HEAP32[$48 + 12 >> 2] = HEAP32[$47 + 12 >> 2] | 0;
    $inc247 = $j_04 + 1 | 0;
    $75 = HEAP32[$size >> 2] | 0;
    $cmp249 = ($inc247 | 0) < ($75 | 0);
    if ($cmp249) {
      label = 43;
      break;
    } else {
      label = 44;
      break;
    }
   case 43:
    $76 = HEAP32[$list238 >> 2] | 0;
    $arrayidx255 = $76 + ($inc247 << 4) | 0;
    $77 = HEAP32[$list240 >> 2] | 0;
    $arrayidx257 = $77 + ($inc247 << 4) | 0;
    $78 = HEAP32[$rankdir >> 2] | 0;
    $and261 = $78 & 1;
    _transformf($tmp262, $arrayidx257, $del, $and261);
    $79 = $arrayidx255;
    HEAP32[$79 >> 2] = HEAP32[$49 >> 2] | 0;
    HEAP32[$79 + 4 >> 2] = HEAP32[$49 + 4 >> 2] | 0;
    HEAP32[$79 + 8 >> 2] = HEAP32[$49 + 8 >> 2] | 0;
    HEAP32[$79 + 12 >> 2] = HEAP32[$49 + 12 >> 2] | 0;
    HEAP32[$50 >> 2] = HEAP32[$49 >> 2] | 0;
    HEAP32[$50 + 4 >> 2] = HEAP32[$49 + 4 >> 2] | 0;
    HEAP32[$50 + 8 >> 2] = HEAP32[$49 + 8 >> 2] | 0;
    HEAP32[$50 + 12 >> 2] = HEAP32[$49 + 12 >> 2] | 0;
    $inc263 = $j_04 + 2 | 0;
    $80 = HEAP32[$list238 >> 2] | 0;
    $arrayidx266 = $80 + ($inc263 << 4) | 0;
    $81 = HEAP32[$list240 >> 2] | 0;
    $arrayidx268 = $81 + ($inc263 << 4) | 0;
    $82 = HEAP32[$rankdir >> 2] | 0;
    $and272 = $82 & 1;
    _transformf($tmp273, $arrayidx268, $del, $and272);
    $83 = $arrayidx266;
    HEAP32[$83 >> 2] = HEAP32[$51 >> 2] | 0;
    HEAP32[$83 + 4 >> 2] = HEAP32[$51 + 4 >> 2] | 0;
    HEAP32[$83 + 8 >> 2] = HEAP32[$51 + 8 >> 2] | 0;
    HEAP32[$83 + 12 >> 2] = HEAP32[$51 + 12 >> 2] | 0;
    HEAP32[$52 >> 2] = HEAP32[$51 >> 2] | 0;
    HEAP32[$52 + 4 >> 2] = HEAP32[$51 + 4 >> 2] | 0;
    HEAP32[$52 + 8 >> 2] = HEAP32[$51 + 8 >> 2] | 0;
    HEAP32[$52 + 12 >> 2] = HEAP32[$51 + 12 >> 2] | 0;
    $inc274 = $j_04 + 3 | 0;
    $84 = HEAP32[$list240 >> 2] | 0;
    $arrayidx277 = $84 + ($inc274 << 4) | 0;
    $85 = HEAP32[$rankdir >> 2] | 0;
    $and281 = $85 & 1;
    _transformf($tmp282, $arrayidx277, $del, $and281);
    HEAP32[$53 >> 2] = HEAP32[$54 >> 2] | 0;
    HEAP32[$53 + 4 >> 2] = HEAP32[$54 + 4 >> 2] | 0;
    HEAP32[$53 + 8 >> 2] = HEAP32[$54 + 8 >> 2] | 0;
    HEAP32[$53 + 12 >> 2] = HEAP32[$54 + 12 >> 2] | 0;
    _update_bb_bz($bb, $arrayidx237);
    $86 = HEAP32[$size >> 2] | 0;
    $cmp233 = ($inc274 | 0) < ($86 | 0);
    if ($cmp233) {
      $j_04 = $inc274;
      label = 42;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $label286 = $e_1 + 112 | 0;
    $87 = HEAP32[$label286 >> 2] | 0;
    $tobool287 = ($87 | 0) == 0;
    if ($tobool287) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $pos = $87 + 56 | 0;
    $label292 = $56 + 112 | 0;
    $88 = $label292;
    $89 = HEAP32[$88 >> 2] | 0;
    $pos293 = $89 + 56 | 0;
    $90 = HEAP32[$rankdir >> 2] | 0;
    $and297 = $90 & 1;
    _transformf($tmp298, $pos293, $del, $and297);
    $91 = $pos;
    HEAP32[$91 >> 2] = HEAP32[$45 >> 2] | 0;
    HEAP32[$91 + 4 >> 2] = HEAP32[$45 + 4 >> 2] | 0;
    HEAP32[$91 + 8 >> 2] = HEAP32[$45 + 8 >> 2] | 0;
    HEAP32[$91 + 12 >> 2] = HEAP32[$45 + 12 >> 2] | 0;
    $92 = HEAP32[$label286 >> 2] | 0;
    $set = $92 + 81 | 0;
    HEAP8[$set] = 1;
    $93 = HEAP32[$label286 >> 2] | 0;
    _updateBB($46, $93);
    label = 46;
    break;
   case 46:
    $inc305 = $i_26 + 1 | 0;
    $cmp189 = ($inc305 | 0) < ($cnt | 0);
    if ($cmp189) {
      $i_26 = $inc305;
      label = 37;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    _cleanupCloneGraph($call);
    label = 48;
    break;
   case 48:
    STACKTOP = __stackBase__;
    return;
  }
}
function _make_flat_labeled_edge($sp, $P, $e, $et) {
  $sp = $sp | 0;
  $P = $P | 0;
  $e = $e | 0;
  $et = $et | 0;
  var $tend = 0, $hend = 0, $pn = 0, $points = 0, $startp = 0, $endp = 0, $tail = 0, $0 = 0, $head = 0, $1 = 0, $graph = 0, $2 = 0, $to_virt = 0, $3 = 0, $f_0 = 0, $to_virt2 = 0, $4 = 0, $tobool = 0, $tail5 = 0, $5 = 0, $label = 0, $6 = 0, $pos = 0, $coord = 0, $7 = 0, $8 = 0, $9 = 0, $set = 0, $cmp = 0, $coord11 = 0, $p = 0, $10 = 0, $coord14 = 0, $p16 = 0, $11 = 0, $12 = 0, $lp_sroa_0_0__idx1 = 0, $lp_sroa_0_0_copyload2 = 0.0, $lp_sroa_1_8__idx4 = 0, $lp_sroa_1_8_copyload5 = 0.0, $y = 0, $13 = 0.0, $div = 0.0, $sub = 0.0, $arrayidx = 0, $arrayidx24 = 0, $14 = 0, $15 = 0, $arrayidx25 = 0, $arrayidx26 = 0, $arrayidx27 = 0, $lp_sroa_0_0__idx = 0, $lp_sroa_1_8__idx3 = 0, $16 = 0, $17 = 0, $18 = 0, $arrayidx28 = 0, $arrayidx29 = 0, $19 = 0, $20 = 0, $x = 0, $21 = 0.0, $lw = 0, $22 = 0.0, $sub33 = 0.0, $rw = 0, $23 = 0.0, $add = 0.0, $y42 = 0, $24 = 0.0, $ht = 0, $25 = 0.0, $div44 = 0.0, $add45 = 0.0, $rank = 0, $26 = 0, $rank53 = 0, $27 = 0, $ht1 = 0, $28 = 0, $conv = 0.0, $sub55 = 0.0, $y58 = 0, $29 = 0.0, $sub59 = 0.0, $ht2 = 0, $30 = 0, $conv65 = 0.0, $add66 = 0.0, $conv67 = 0, $conv68 = 0.0, $div69 = 0.0, $conv70 = 0, $cmp74 = 0, $conv73 = 0.0, $cond = 0.0, $sub77 = 0.0, $boxn80 = 0, $31 = 0, $sub81 = 0, $x84 = 0, $32 = 0.0, $33 = 0, $sub89 = 0, $y93 = 0, $34 = 0.0, $35 = 0, $sub108 = 0, $x112 = 0, $36 = 0.0, $boxn121 = 0, $37 = 0, $sub122 = 0, $x126 = 0, $38 = 0.0, $39 = 0, $sub147 = 0, $y151 = 0, $40 = 0.0, $41 = 0, $sub156 = 0, $x160 = 0, $42 = 0.0, $43 = 0, $cmp16772 = 0, $i_073 = 0, $arrayidx171 = 0, $inc173 = 0, $44 = 0, $cmp167 = 0, $45 = 0, $cmp18669 = 0, $i_270_in = 0, $i_270 = 0, $arrayidx190 = 0, $cmp186 = 0, $cmp193 = 0, $call = 0, $call197 = 0, $ps_0 = 0, $46 = 0, $cmp198 = 0, $ps_1 = 0, $47 = 0, $48 = 0, $49 = 0, $50 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1544 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tend = __stackBase__ | 0;
    $hend = __stackBase__ + 696 | 0;
    $pn = __stackBase__ + 1392 | 0;
    $points = __stackBase__ + 1400 | 0;
    $startp = __stackBase__ + 1512 | 0;
    $endp = __stackBase__ + 1528 | 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $graph = $0 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $to_virt = $e + 188 | 0;
    $3 = HEAP32[$to_virt >> 2] | 0;
    $f_0 = $3;
    label = 3;
    break;
   case 3:
    $to_virt2 = $f_0 + 188 | 0;
    $4 = HEAP32[$to_virt2 >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $f_0 = $4;
      label = 3;
      break;
    }
   case 4:
    $tail5 = $f_0 + 16 | 0;
    $5 = HEAP32[$tail5 >> 2] | 0;
    $label = $e + 112 | 0;
    $6 = HEAP32[$label >> 2] | 0;
    $pos = $6 + 56 | 0;
    $coord = $5 + 32 | 0;
    $7 = $pos;
    $8 = $coord;
    HEAP32[$7 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$7 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$7 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$7 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    $9 = HEAP32[$label >> 2] | 0;
    $set = $9 + 81 | 0;
    HEAP8[$set] = 1;
    $cmp = ($et | 0) == 2;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $coord11 = $0 + 32 | 0;
    $p = $e + 32 | 0;
    _add_pointf3016($startp, $coord11, $p);
    $10 = $startp;
    $coord14 = $1 + 32 | 0;
    $p16 = $e + 72 | 0;
    _add_pointf3016($endp, $coord14, $p16);
    $11 = $endp;
    $12 = HEAP32[$label >> 2] | 0;
    $lp_sroa_0_0__idx1 = $12 + 56 | 0;
    $lp_sroa_0_0_copyload2 = +HEAPF64[$lp_sroa_0_0__idx1 >> 3];
    $lp_sroa_1_8__idx4 = $12 + 64 | 0;
    $lp_sroa_1_8_copyload5 = +HEAPF64[$lp_sroa_1_8__idx4 >> 3];
    $y = $12 + 32 | 0;
    $13 = +HEAPF64[$y >> 3];
    $div = $13 * .5;
    $sub = $lp_sroa_1_8_copyload5 - $div;
    $arrayidx = $points + 16 | 0;
    $arrayidx24 = $points | 0;
    $14 = $points;
    HEAP32[$14 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $15 = $arrayidx;
    HEAP32[$15 >> 2] = HEAP32[$10 >> 2] | 0;
    HEAP32[$15 + 4 >> 2] = HEAP32[$10 + 4 >> 2] | 0;
    HEAP32[$15 + 8 >> 2] = HEAP32[$10 + 8 >> 2] | 0;
    HEAP32[$15 + 12 >> 2] = HEAP32[$10 + 12 >> 2] | 0;
    $arrayidx25 = $points + 32 | 0;
    $arrayidx26 = $points + 48 | 0;
    $arrayidx27 = $points + 64 | 0;
    $lp_sroa_0_0__idx = $points + 64 | 0;
    HEAPF64[$lp_sroa_0_0__idx >> 3] = $lp_sroa_0_0_copyload2;
    $lp_sroa_1_8__idx3 = $points + 72 | 0;
    HEAPF64[$lp_sroa_1_8__idx3 >> 3] = $sub;
    $16 = $arrayidx26;
    $17 = $arrayidx27;
    HEAP32[$16 >> 2] = HEAP32[$17 >> 2] | 0;
    HEAP32[$16 + 4 >> 2] = HEAP32[$17 + 4 >> 2] | 0;
    HEAP32[$16 + 8 >> 2] = HEAP32[$17 + 8 >> 2] | 0;
    HEAP32[$16 + 12 >> 2] = HEAP32[$17 + 12 >> 2] | 0;
    $18 = $arrayidx25;
    HEAP32[$18 >> 2] = HEAP32[$17 >> 2] | 0;
    HEAP32[$18 + 4 >> 2] = HEAP32[$17 + 4 >> 2] | 0;
    HEAP32[$18 + 8 >> 2] = HEAP32[$17 + 8 >> 2] | 0;
    HEAP32[$18 + 12 >> 2] = HEAP32[$17 + 12 >> 2] | 0;
    $arrayidx28 = $points + 80 | 0;
    $arrayidx29 = $points + 96 | 0;
    $19 = $arrayidx29;
    HEAP32[$19 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$19 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$19 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$19 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    $20 = $arrayidx28;
    HEAP32[$20 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$20 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$20 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$20 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    HEAP32[$pn >> 2] = 7;
    $ps_1 = $arrayidx24;
    label = 16;
    break;
   case 6:
    $x = $coord | 0;
    $21 = +HEAPF64[$x >> 3];
    $lw = $5 + 104 | 0;
    $22 = +HEAPF64[$lw >> 3];
    $sub33 = $21 - $22;
    $rw = $5 + 112 | 0;
    $23 = +HEAPF64[$rw >> 3];
    $add = $21 + $23;
    $y42 = $5 + 40 | 0;
    $24 = +HEAPF64[$y42 >> 3];
    $ht = $5 + 96 | 0;
    $25 = +HEAPF64[$ht >> 3];
    $div44 = $25 * .5;
    $add45 = $24 + $div44;
    $rank = $0 + 236 | 0;
    $26 = HEAP32[$rank >> 2] | 0;
    $rank53 = $2 + 224 | 0;
    $27 = HEAP32[$rank53 >> 2] | 0;
    $ht1 = $27 + ($26 * 44 & -1) + 16 | 0;
    $28 = HEAP32[$ht1 >> 2] | 0;
    $conv = +($28 | 0);
    $sub55 = $24 - $conv;
    $y58 = $0 + 40 | 0;
    $29 = +HEAPF64[$y58 >> 3];
    $sub59 = $sub55 - $29;
    $ht2 = $27 + ($26 * 44 & -1) + 20 | 0;
    $30 = HEAP32[$ht2 >> 2] | 0;
    $conv65 = +($30 | 0);
    $add66 = $sub59 + $conv65;
    $conv67 = ~~$add66;
    $conv68 = +($conv67 | 0);
    $div69 = $conv68 / 6.0;
    $conv70 = ~~$div69;
    $cmp74 = ($conv70 | 0) < 5;
    if ($cmp74) {
      $cond = 5.0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $conv73 = +($conv70 | 0);
    $cond = $conv73;
    label = 8;
    break;
   case 8:
    $sub77 = $add45 - $cond;
    _makeFlatEnd($sp, $P, $0, $e, $tend, 1);
    _makeFlatEnd($sp, $P, $1, $e, $hend, 0);
    $boxn80 = $tend + 52 | 0;
    $31 = HEAP32[$boxn80 >> 2] | 0;
    $sub81 = $31 - 1 | 0;
    $x84 = $tend + 56 + ($sub81 << 5) | 0;
    $32 = +HEAPF64[$x84 >> 3];
    HEAPF64[6678] = $32;
    $33 = HEAP32[$boxn80 >> 2] | 0;
    $sub89 = $33 - 1 | 0;
    $y93 = $tend + 56 + ($sub89 << 5) + 24 | 0;
    $34 = +HEAPF64[$y93 >> 3];
    HEAPF64[6679] = $34;
    HEAPF64[6680] = $sub33;
    HEAPF64[6681] = $sub77;
    $35 = HEAP32[$boxn80 >> 2] | 0;
    $sub108 = $35 - 1 | 0;
    $x112 = $tend + 56 + ($sub108 << 5) | 0;
    $36 = +HEAPF64[$x112 >> 3];
    HEAPF64[6682] = $36;
    HEAPF64[6683] = $sub77;
    $boxn121 = $hend + 52 | 0;
    $37 = HEAP32[$boxn121 >> 2] | 0;
    $sub122 = $37 - 1 | 0;
    $x126 = $hend + 56 + ($sub122 << 5) + 16 | 0;
    $38 = +HEAPF64[$x126 >> 3];
    HEAPF64[6684] = $38;
    HEAPF64[6685] = $add45;
    HEAPF64[6686] = $add;
    HEAPF64[6689] = $sub77;
    $39 = HEAP32[$boxn121 >> 2] | 0;
    $sub147 = $39 - 1 | 0;
    $y151 = $hend + 56 + ($sub147 << 5) + 24 | 0;
    $40 = +HEAPF64[$y151 >> 3];
    HEAPF64[6687] = $40;
    $41 = HEAP32[$boxn121 >> 2] | 0;
    $sub156 = $41 - 1 | 0;
    $x160 = $hend + 56 + ($sub156 << 5) + 16 | 0;
    $42 = +HEAPF64[$x160 >> 3];
    HEAPF64[6688] = $42;
    $43 = HEAP32[$boxn80 >> 2] | 0;
    $cmp16772 = ($43 | 0) > 0;
    if ($cmp16772) {
      $i_073 = 0;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $arrayidx171 = $tend + 56 + ($i_073 << 5) | 0;
    _add_box($P, $arrayidx171);
    $inc173 = $i_073 + 1 | 0;
    $44 = HEAP32[$boxn80 >> 2] | 0;
    $cmp167 = ($inc173 | 0) < ($44 | 0);
    if ($cmp167) {
      $i_073 = $inc173;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _add_box($P, 53424);
    _add_box($P, 53456);
    _add_box($P, 53488);
    $45 = HEAP32[$boxn121 >> 2] | 0;
    $cmp18669 = ($45 | 0) > 0;
    if ($cmp18669) {
      $i_270_in = $45;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $i_270 = $i_270_in - 1 | 0;
    $arrayidx190 = $hend + 56 + ($i_270 << 5) | 0;
    _add_box($P, $arrayidx190);
    $cmp186 = ($i_270 | 0) > 0;
    if ($cmp186) {
      $i_270_in = $i_270;
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $cmp193 = ($et | 0) == 8;
    if ($cmp193) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $call = _routesplines($P, $pn) | 0;
    $ps_0 = $call;
    label = 15;
    break;
   case 14:
    $call197 = _routepolylines($P, $pn) | 0;
    $ps_0 = $call197;
    label = 15;
    break;
   case 15:
    $46 = HEAP32[$pn >> 2] | 0;
    $cmp198 = ($46 | 0) == 0;
    if ($cmp198) {
      label = 17;
      break;
    } else {
      $ps_1 = $ps_0;
      label = 16;
      break;
    }
   case 16:
    $47 = HEAP32[$head >> 2] | 0;
    $48 = HEAP32[$pn >> 2] | 0;
    $49 = $e;
    $50 = $47;
    _clip_and_install($49, $50, $ps_1, $48, 4216);
    label = 17;
    break;
   case 17:
    STACKTOP = __stackBase__;
    return;
  }
}
function _makeSimpleFlat($tn, $hn, $edges, $ind, $cnt, $et) {
  $tn = $tn | 0;
  $hn = $hn | 0;
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $et = $et | 0;
  var $points = 0, $tmp = 0, $tmp6 = 0, $tmp31 = 0, $tmp39 = 0, $tmp53 = 0, $tmp61 = 0, $tmp69 = 0, $tmp77 = 0, $tmp85 = 0, $tmp93 = 0, $arrayidx = 0, $0 = 0, $coord = 0, $p = 0, $tp_sroa_0_0__idx52 = 0, $tp_sroa_0_0_copyload53 = 0.0, $tp_sroa_1_8__idx57 = 0, $tp_sroa_1_8_copyload58 = 0.0, $coord3 = 0, $p5 = 0, $hp_sroa_0_0__idx34 = 0, $hp_sroa_0_0_copyload35 = 0.0, $hp_sroa_1_8__idx41 = 0, $hp_sroa_1_8_copyload42 = 0.0, $cmp = 0, $ht = 0, $1 = 0.0, $sub = 0, $conv = 0.0, $div = 0.0, $div13 = 0.0, $cmp1872 = 0, $cond1677 = 0.0, $cond7076 = 0.0, $sub17 = 0.0, $arrayidx25 = 0, $tp_sroa_0_0__idx50 = 0, $tp_sroa_1_8__idx55 = 0, $arrayidx27 = 0, $tp_sroa_0_0__idx = 0, $tp_sroa_1_8__idx54 = 0, $arrayidx47 = 0, $mul49 = 0.0, $add51 = 0.0, $div52 = 0.0, $2 = 0, $3 = 0, $arrayidx55 = 0, $4 = 0, $5 = 0, $arrayidx63 = 0, $6 = 0, $7 = 0, $arrayidx71 = 0, $mul73 = 0.0, $add75 = 0.0, $div76 = 0.0, $8 = 0, $9 = 0, $arrayidx79 = 0, $10 = 0, $11 = 0, $arrayidx87 = 0, $12 = 0, $13 = 0, $hp_sroa_0_0__idx23 = 0, $hp_sroa_1_8__idx37 = 0, $hp_sroa_0_0__idx = 0, $hp_sroa_1_8__idx36 = 0, $mul = 0.0, $add29 = 0.0, $div30 = 0.0, $14 = 0, $15 = 0, $arrayidx33 = 0, $mul35 = 0.0, $add37 = 0.0, $div38 = 0.0, $16 = 0, $17 = 0, $hp_sroa_0_0__idx30 = 0, $hp_sroa_1_8__idx39 = 0, $dy_074 = 0.0, $i_073 = 0, $add = 0, $arrayidx20 = 0, $18 = 0, $pointn_0 = 0, $add98 = 0.0, $head = 0, $19 = 0, $20 = 0, $21 = 0, $inc99 = 0, $cmp18 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 320 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $points = __stackBase__ | 0;
    $tmp = __stackBase__ + 160 | 0;
    $tmp6 = __stackBase__ + 176 | 0;
    $tmp31 = __stackBase__ + 192 | 0;
    $tmp39 = __stackBase__ + 208 | 0;
    $tmp53 = __stackBase__ + 224 | 0;
    $tmp61 = __stackBase__ + 240 | 0;
    $tmp69 = __stackBase__ + 256 | 0;
    $tmp77 = __stackBase__ + 272 | 0;
    $tmp85 = __stackBase__ + 288 | 0;
    $tmp93 = __stackBase__ + 304 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $coord = $tn + 32 | 0;
    $p = $0 + 32 | 0;
    _add_pointf3016($tmp, $coord, $p);
    $tp_sroa_0_0__idx52 = $tmp | 0;
    $tp_sroa_0_0_copyload53 = +HEAPF64[$tp_sroa_0_0__idx52 >> 3];
    $tp_sroa_1_8__idx57 = $tmp + 8 | 0;
    $tp_sroa_1_8_copyload58 = +HEAPF64[$tp_sroa_1_8__idx57 >> 3];
    $coord3 = $hn + 32 | 0;
    $p5 = $0 + 72 | 0;
    _add_pointf3016($tmp6, $coord3, $p5);
    $hp_sroa_0_0__idx34 = $tmp6 | 0;
    $hp_sroa_0_0_copyload35 = +HEAPF64[$hp_sroa_0_0__idx34 >> 3];
    $hp_sroa_1_8__idx41 = $tmp6 + 8 | 0;
    $hp_sroa_1_8_copyload42 = +HEAPF64[$hp_sroa_1_8__idx41 >> 3];
    $cmp = ($cnt | 0) > 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $ht = $tn + 96 | 0;
    $1 = +HEAPF64[$ht >> 3];
    $sub = $cnt - 1 | 0;
    $conv = +($sub | 0);
    $div = $1 / $conv;
    $div13 = $1 * .5;
    $cond7076 = $div;
    $cond1677 = $div13;
    label = 5;
    break;
   case 4:
    $cmp1872 = ($cnt | 0) > 0;
    if ($cmp1872) {
      $cond7076 = 0.0;
      $cond1677 = 0.0;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $sub17 = $tp_sroa_1_8_copyload58 - $cond1677;
    $arrayidx25 = $points | 0;
    $tp_sroa_0_0__idx50 = $points | 0;
    $tp_sroa_1_8__idx55 = $points + 8 | 0;
    $arrayidx27 = $points + 16 | 0;
    $tp_sroa_0_0__idx = $arrayidx27 | 0;
    $tp_sroa_1_8__idx54 = $points + 24 | 0;
    $arrayidx47 = $points + 32 | 0;
    $mul49 = $tp_sroa_0_0_copyload53 * 2.0;
    $add51 = $mul49 + $hp_sroa_0_0_copyload35;
    $div52 = $add51 / 3.0;
    $2 = $arrayidx47;
    $3 = $tmp53;
    $arrayidx55 = $points + 48 | 0;
    $4 = $arrayidx55;
    $5 = $tmp61;
    $arrayidx63 = $points + 64 | 0;
    $6 = $arrayidx63;
    $7 = $tmp69;
    $arrayidx71 = $points + 80 | 0;
    $mul73 = $hp_sroa_0_0_copyload35 * 2.0;
    $add75 = $tp_sroa_0_0_copyload53 + $mul73;
    $div76 = $add75 / 3.0;
    $8 = $arrayidx71;
    $9 = $tmp77;
    $arrayidx79 = $points + 96 | 0;
    $10 = $arrayidx79;
    $11 = $tmp85;
    $arrayidx87 = $points + 112 | 0;
    $12 = $arrayidx87;
    $13 = $tmp93;
    $hp_sroa_0_0__idx23 = $points + 128 | 0;
    $hp_sroa_1_8__idx37 = $points + 136 | 0;
    $hp_sroa_0_0__idx = $points + 144 | 0;
    $hp_sroa_1_8__idx36 = $points + 152 | 0;
    $mul = $tp_sroa_0_0_copyload53 * 2.0;
    $add29 = $mul + $hp_sroa_0_0_copyload35;
    $div30 = $add29 / 3.0;
    $14 = $arrayidx27;
    $15 = $tmp31;
    $arrayidx33 = $points + 32 | 0;
    $mul35 = $hp_sroa_0_0_copyload35 * 2.0;
    $add37 = $tp_sroa_0_0_copyload53 + $mul35;
    $div38 = $add37 / 3.0;
    $16 = $arrayidx33;
    $17 = $tmp39;
    $hp_sroa_0_0__idx30 = $points + 48 | 0;
    $hp_sroa_1_8__idx39 = $points + 56 | 0;
    $i_073 = 0;
    $dy_074 = $sub17;
    label = 6;
    break;
   case 6:
    $add = $i_073 + $ind | 0;
    $arrayidx20 = $edges + ($add << 2) | 0;
    $18 = HEAP32[$arrayidx20 >> 2] | 0;
    HEAPF64[$tp_sroa_0_0__idx50 >> 3] = $tp_sroa_0_0_copyload53;
    HEAPF64[$tp_sroa_1_8__idx55 >> 3] = $tp_sroa_1_8_copyload58;
    if (($et | 0) == 8 | ($et | 0) == 2) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    _pointfof3017($tmp31, $div30, $dy_074);
    HEAP32[$14 >> 2] = HEAP32[$15 >> 2] | 0;
    HEAP32[$14 + 4 >> 2] = HEAP32[$15 + 4 >> 2] | 0;
    HEAP32[$14 + 8 >> 2] = HEAP32[$15 + 8 >> 2] | 0;
    HEAP32[$14 + 12 >> 2] = HEAP32[$15 + 12 >> 2] | 0;
    _pointfof3017($tmp39, $div38, $dy_074);
    HEAP32[$16 >> 2] = HEAP32[$17 >> 2] | 0;
    HEAP32[$16 + 4 >> 2] = HEAP32[$17 + 4 >> 2] | 0;
    HEAP32[$16 + 8 >> 2] = HEAP32[$17 + 8 >> 2] | 0;
    HEAP32[$16 + 12 >> 2] = HEAP32[$17 + 12 >> 2] | 0;
    HEAPF64[$hp_sroa_0_0__idx30 >> 3] = $hp_sroa_0_0_copyload35;
    HEAPF64[$hp_sroa_1_8__idx39 >> 3] = $hp_sroa_1_8_copyload42;
    $pointn_0 = 4;
    label = 9;
    break;
   case 8:
    HEAPF64[$tp_sroa_0_0__idx >> 3] = $tp_sroa_0_0_copyload53;
    HEAPF64[$tp_sroa_1_8__idx54 >> 3] = $tp_sroa_1_8_copyload58;
    _pointfof3017($tmp53, $div52, $dy_074);
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    _pointfof3017($tmp61, $div52, $dy_074);
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    _pointfof3017($tmp69, $div52, $dy_074);
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    _pointfof3017($tmp77, $div76, $dy_074);
    HEAP32[$8 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$8 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$8 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$8 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    _pointfof3017($tmp85, $div76, $dy_074);
    HEAP32[$10 >> 2] = HEAP32[$11 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$11 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$11 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$11 + 12 >> 2] | 0;
    _pointfof3017($tmp93, $div76, $dy_074);
    HEAP32[$12 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    HEAPF64[$hp_sroa_0_0__idx23 >> 3] = $hp_sroa_0_0_copyload35;
    HEAPF64[$hp_sroa_1_8__idx37 >> 3] = $hp_sroa_1_8_copyload42;
    HEAPF64[$hp_sroa_0_0__idx >> 3] = $hp_sroa_0_0_copyload35;
    HEAPF64[$hp_sroa_1_8__idx36 >> 3] = $hp_sroa_1_8_copyload42;
    $pointn_0 = 10;
    label = 9;
    break;
   case 9:
    $add98 = $cond7076 + $dy_074;
    $head = $18 + 12 | 0;
    $19 = HEAP32[$head >> 2] | 0;
    $20 = $18;
    $21 = $19;
    _clip_and_install($20, $21, $arrayidx25, $pointn_0, 4216);
    $inc99 = $i_073 + 1 | 0;
    $cmp18 = ($inc99 | 0) < ($cnt | 0);
    if ($cmp18) {
      $i_073 = $inc99;
      $dy_074 = $add98;
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    STACKTOP = __stackBase__;
    return;
  }
}
function _pointfof3017($agg_result, $x, $y) {
  $agg_result = $agg_result | 0;
  $x = +$x;
  $y = +$y;
  HEAPF64[$agg_result >> 3] = $x;
  HEAPF64[$agg_result + 8 >> 3] = $y;
  return;
}
function _make_flat_bottom_edges($sp, $P, $edges, $ind, $cnt, $e, $splines) {
  $sp = $sp | 0;
  $P = $P | 0;
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $e = $e | 0;
  $splines = $splines | 0;
  var $pn = 0, $tend = 0, $hend = 0, $tail = 0, $0 = 0, $head = 0, $1 = 0, $graph = 0, $2 = 0, $rank = 0, $3 = 0, $maxrank = 0, $4 = 0, $conv = 0, $cmp = 0, $rank4 = 0, $5 = 0, $add = 0, $y = 0, $6 = 0.0, $pht1 = 0, $7 = 0, $conv8 = 0.0, $sub = 0.0, $v = 0, $8 = 0, $9 = 0, $y12 = 0, $10 = 0.0, $pht2 = 0, $11 = 0, $conv13 = 0.0, $add14 = 0.0, $sub15 = 0.0, $ranksep = 0, $12 = 0, $conv17 = 0.0, $vspace_0 = 0.0, $Multisep = 0, $13 = 0, $conv18 = 0.0, $add19 = 0, $conv20 = 0.0, $div = 0.0, $div23 = 0.0, $cmp2478 = 0, $boxn28 = 0, $boxn71 = 0, $tobool = 0, $nbox = 0, $i_079 = 0, $add26 = 0, $arrayidx27 = 0, $14 = 0, $15 = 0, $sub29 = 0, $b_sroa_0_0__idx1 = 0, $b_sroa_0_0_copyload2 = 0.0, $b_sroa_1_8__idx5 = 0, $b_sroa_1_8_copyload6 = 0.0, $b_sroa_2_16__idx10 = 0, $b_sroa_2_16_copyload11 = 0.0, $add40 = 0, $conv41 = 0.0, $mul = 0.0, $add42 = 0.0, $mul50 = 0.0, $sub51 = 0.0, $16 = 0, $sub56 = 0, $x60 = 0, $17 = 0.0, $18 = 0.0, $19 = 0, $sub72 = 0, $x76 = 0, $20 = 0.0, $21 = 0.0, $sub83 = 0.0, $22 = 0, $sub89 = 0, $b_sroa_0_0__idx = 0, $b_sroa_0_0_copyload = 0.0, $b_sroa_1_8__idx4 = 0, $b_sroa_1_8_copyload = 0.0, $b_sroa_2_16__idx9 = 0, $b_sroa_2_16_copyload = 0.0, $sub107 = 0.0, $23 = 0.0, $24 = 0, $cmp12172 = 0, $j_073 = 0, $arrayidx125 = 0, $inc126 = 0, $25 = 0, $cmp121 = 0, $26 = 0, $cmp13876 = 0, $j_277_in = 0, $j_277 = 0, $arrayidx142 = 0, $cmp138 = 0, $call = 0, $call147 = 0, $ps_0 = 0, $27 = 0, $cmp149 = 0, $head153 = 0, $28 = 0, $29 = 0, $30 = 0, $cmp24 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1400 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pn = __stackBase__ | 0;
    $tend = __stackBase__ + 8 | 0;
    $hend = __stackBase__ + 704 | 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $graph = $0 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $rank = $0 + 236 | 0;
    $3 = HEAP32[$rank >> 2] | 0;
    $maxrank = $2 + 250 | 0;
    $4 = HEAP16[$maxrank >> 1] | 0;
    $conv = $4 << 16 >> 16;
    $cmp = ($3 | 0) < ($conv | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $rank4 = $2 + 224 | 0;
    $5 = HEAP32[$rank4 >> 2] | 0;
    $add = $3 + 1 | 0;
    $y = $0 + 40 | 0;
    $6 = +HEAPF64[$y >> 3];
    $pht1 = $5 + ($3 * 44 & -1) + 24 | 0;
    $7 = HEAP32[$pht1 >> 2] | 0;
    $conv8 = +($7 | 0);
    $sub = $6 - $conv8;
    $v = $5 + ($add * 44 & -1) + 4 | 0;
    $8 = HEAP32[$v >> 2] | 0;
    $9 = HEAP32[$8 >> 2] | 0;
    $y12 = $9 + 40 | 0;
    $10 = +HEAPF64[$y12 >> 3];
    $pht2 = $5 + ($add * 44 & -1) + 28 | 0;
    $11 = HEAP32[$pht2 >> 2] | 0;
    $conv13 = +($11 | 0);
    $add14 = $10 + $conv13;
    $sub15 = $sub - $add14;
    $vspace_0 = $sub15;
    label = 5;
    break;
   case 4:
    $ranksep = $2 + 264 | 0;
    $12 = HEAP32[$ranksep >> 2] | 0;
    $conv17 = +($12 | 0);
    $vspace_0 = $conv17;
    label = 5;
    break;
   case 5:
    $Multisep = $sp + 12 | 0;
    $13 = HEAP32[$Multisep >> 2] | 0;
    $conv18 = +($13 | 0);
    $add19 = $cnt + 1 | 0;
    $conv20 = +($add19 | 0);
    $div = $conv18 / $conv20;
    $div23 = $vspace_0 / $conv20;
    _makeBottomFlatEnd($sp, $P, $0, $e, $tend, 1);
    _makeBottomFlatEnd($sp, $P, $1, $e, $hend, 0);
    $cmp2478 = ($cnt | 0) > 0;
    if ($cmp2478) {
      label = 6;
      break;
    } else {
      label = 16;
      break;
    }
   case 6:
    $boxn28 = $tend + 52 | 0;
    $boxn71 = $hend + 52 | 0;
    $tobool = ($splines | 0) == 0;
    $nbox = $P + 80 | 0;
    $i_079 = 0;
    label = 7;
    break;
   case 7:
    $add26 = $i_079 + $ind | 0;
    $arrayidx27 = $edges + ($add26 << 2) | 0;
    $14 = HEAP32[$arrayidx27 >> 2] | 0;
    $15 = HEAP32[$boxn28 >> 2] | 0;
    $sub29 = $15 - 1 | 0;
    $b_sroa_0_0__idx1 = $tend + 56 + ($sub29 << 5) | 0;
    $b_sroa_0_0_copyload2 = +HEAPF64[$b_sroa_0_0__idx1 >> 3];
    $b_sroa_1_8__idx5 = $tend + 56 + ($sub29 << 5) + 8 | 0;
    $b_sroa_1_8_copyload6 = +HEAPF64[$b_sroa_1_8__idx5 >> 3];
    $b_sroa_2_16__idx10 = $tend + 56 + ($sub29 << 5) + 16 | 0;
    $b_sroa_2_16_copyload11 = +HEAPF64[$b_sroa_2_16__idx10 >> 3];
    HEAPF64[6678] = $b_sroa_0_0_copyload2;
    HEAPF64[6681] = $b_sroa_1_8_copyload6;
    $add40 = $i_079 + 1 | 0;
    $conv41 = +($add40 | 0);
    $mul = $div * $conv41;
    $add42 = $mul + $b_sroa_2_16_copyload11;
    HEAPF64[6680] = $add42;
    $mul50 = $div23 * $conv41;
    $sub51 = $b_sroa_1_8_copyload6 - $mul50;
    HEAPF64[6679] = $sub51;
    $16 = HEAP32[$boxn28 >> 2] | 0;
    $sub56 = $16 - 1 | 0;
    $x60 = $tend + 56 + ($sub56 << 5) | 0;
    $17 = +HEAPF64[$x60 >> 3];
    HEAPF64[6682] = $17;
    $18 = +HEAPF64[6679];
    HEAPF64[6685] = $18;
    $19 = HEAP32[$boxn71 >> 2] | 0;
    $sub72 = $19 - 1 | 0;
    $x76 = $hend + 56 + ($sub72 << 5) + 16 | 0;
    $20 = +HEAPF64[$x76 >> 3];
    HEAPF64[6684] = $20;
    $21 = +HEAPF64[6685];
    $sub83 = $21 - $div23;
    HEAPF64[6683] = $sub83;
    $22 = HEAP32[$boxn71 >> 2] | 0;
    $sub89 = $22 - 1 | 0;
    $b_sroa_0_0__idx = $hend + 56 + ($sub89 << 5) | 0;
    $b_sroa_0_0_copyload = +HEAPF64[$b_sroa_0_0__idx >> 3];
    $b_sroa_1_8__idx4 = $hend + 56 + ($sub89 << 5) + 8 | 0;
    $b_sroa_1_8_copyload = +HEAPF64[$b_sroa_1_8__idx4 >> 3];
    $b_sroa_2_16__idx9 = $hend + 56 + ($sub89 << 5) + 16 | 0;
    $b_sroa_2_16_copyload = +HEAPF64[$b_sroa_2_16__idx9 >> 3];
    HEAPF64[6688] = $b_sroa_2_16_copyload;
    HEAPF64[6689] = $b_sroa_1_8_copyload;
    $sub107 = $b_sroa_0_0_copyload - $mul;
    HEAPF64[6686] = $sub107;
    $23 = +HEAPF64[6685];
    HEAPF64[6687] = $23;
    $24 = HEAP32[$boxn28 >> 2] | 0;
    $cmp12172 = ($24 | 0) > 0;
    if ($cmp12172) {
      $j_073 = 0;
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $arrayidx125 = $tend + 56 + ($j_073 << 5) | 0;
    _add_box($P, $arrayidx125);
    $inc126 = $j_073 + 1 | 0;
    $25 = HEAP32[$boxn28 >> 2] | 0;
    $cmp121 = ($inc126 | 0) < ($25 | 0);
    if ($cmp121) {
      $j_073 = $inc126;
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    _add_box($P, 53424);
    _add_box($P, 53456);
    _add_box($P, 53488);
    $26 = HEAP32[$boxn71 >> 2] | 0;
    $cmp13876 = ($26 | 0) > 0;
    if ($cmp13876) {
      $j_277_in = $26;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $j_277 = $j_277_in - 1 | 0;
    $arrayidx142 = $hend + 56 + ($j_277 << 5) | 0;
    _add_box($P, $arrayidx142);
    $cmp138 = ($j_277 | 0) > 0;
    if ($cmp138) {
      $j_277_in = $j_277;
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    if ($tobool) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call = _routesplines($P, $pn) | 0;
    $ps_0 = $call;
    label = 14;
    break;
   case 13:
    $call147 = _routepolylines($P, $pn) | 0;
    $ps_0 = $call147;
    label = 14;
    break;
   case 14:
    $27 = HEAP32[$pn >> 2] | 0;
    $cmp149 = ($27 | 0) == 0;
    if ($cmp149) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $head153 = $14 + 12 | 0;
    $28 = HEAP32[$head153 >> 2] | 0;
    $29 = $14;
    $30 = $28;
    _clip_and_install($29, $30, $ps_0, $27, 4216);
    HEAP32[$nbox >> 2] = 0;
    $cmp24 = ($add40 | 0) < ($cnt | 0);
    if ($cmp24) {
      $i_079 = $add40;
      label = 7;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    STACKTOP = __stackBase__;
    return;
  }
}
function _makeFlatEnd($sp, $P, $n, $e, $endp, $isBegin) {
  $sp = $sp | 0;
  $P = $P | 0;
  $n = $n | 0;
  $e = $e | 0;
  $endp = $endp | 0;
  $isBegin = $isBegin | 0;
  var $b = 0, $tmp = 0, $tmp16 = 0, $graph = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $sidemask = 0, $tobool = 0, $4 = 0, $boxn = 0, $5 = 0, $sub = 0, $y = 0, $6 = 0.0, $y2 = 0, $7 = 0, $sub4 = 0, $y7 = 0, $8 = 0.0, $y9 = 0, $y10 = 0, $9 = 0.0, $rank = 0, $10 = 0, $rank13 = 0, $11 = 0, $ht2 = 0, $12 = 0, $conv = 0.0, $add = 0.0, $conv15 = 0, $13 = 0, $x = 0, $14 = 0.0, $x19 = 0, $15 = 0.0, $cmp = 0, $16 = 0.0, $17 = 0.0, $cmp25 = 0, $18 = 0, $inc = 0, $arrayidx30 = 0, $19 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $b = __stackBase__ | 0;
    $tmp = __stackBase__ + 32 | 0;
    $tmp16 = __stackBase__ + 64 | 0;
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    _maximal_bbox($tmp, $sp, $n, 0, $e);
    $1 = $endp;
    $2 = $tmp;
    HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    HEAP32[$1 + 16 >> 2] = HEAP32[$2 + 16 >> 2] | 0;
    HEAP32[$1 + 20 >> 2] = HEAP32[$2 + 20 >> 2] | 0;
    HEAP32[$1 + 24 >> 2] = HEAP32[$2 + 24 >> 2] | 0;
    HEAP32[$1 + 28 >> 2] = HEAP32[$2 + 28 >> 2] | 0;
    $3 = $b;
    HEAP32[$3 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    HEAP32[$3 + 16 >> 2] = HEAP32[$2 + 16 >> 2] | 0;
    HEAP32[$3 + 20 >> 2] = HEAP32[$2 + 20 >> 2] | 0;
    HEAP32[$3 + 24 >> 2] = HEAP32[$2 + 24 >> 2] | 0;
    HEAP32[$3 + 28 >> 2] = HEAP32[$2 + 28 >> 2] | 0;
    $sidemask = $endp + 48 | 0;
    HEAP32[$sidemask >> 2] = 4;
    $tobool = $isBegin << 24 >> 24 == 0;
    $4 = $e;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _beginpath($P, $4, 2, $endp, 0);
    label = 5;
    break;
   case 4:
    _endpath($P, $4, 2, $endp, 0);
    label = 5;
    break;
   case 5:
    $boxn = $endp + 52 | 0;
    $5 = HEAP32[$boxn >> 2] | 0;
    $sub = $5 - 1 | 0;
    $y = $endp + 56 + ($sub << 5) + 24 | 0;
    $6 = +HEAPF64[$y >> 3];
    $y2 = $b + 24 | 0;
    HEAPF64[$y2 >> 3] = $6;
    $7 = HEAP32[$boxn >> 2] | 0;
    $sub4 = $7 - 1 | 0;
    $y7 = $endp + 56 + ($sub4 << 5) + 8 | 0;
    $8 = +HEAPF64[$y7 >> 3];
    $y9 = $b + 8 | 0;
    HEAPF64[$y9 >> 3] = $8;
    $y10 = $n + 40 | 0;
    $9 = +HEAPF64[$y10 >> 3];
    $rank = $n + 236 | 0;
    $10 = HEAP32[$rank >> 2] | 0;
    $rank13 = $0 + 224 | 0;
    $11 = HEAP32[$rank13 >> 2] | 0;
    $ht2 = $11 + ($10 * 44 & -1) + 20 | 0;
    $12 = HEAP32[$ht2 >> 2] | 0;
    $conv = +($12 | 0);
    $add = $9 + $conv;
    $conv15 = ~~$add;
    _makeregularend($tmp16, $b, 4, $conv15);
    $13 = $tmp16;
    HEAP32[$3 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    HEAP32[$3 + 16 >> 2] = HEAP32[$13 + 16 >> 2] | 0;
    HEAP32[$3 + 20 >> 2] = HEAP32[$13 + 20 >> 2] | 0;
    HEAP32[$3 + 24 >> 2] = HEAP32[$13 + 24 >> 2] | 0;
    HEAP32[$3 + 28 >> 2] = HEAP32[$13 + 28 >> 2] | 0;
    $x = $b | 0;
    $14 = +HEAPF64[$x >> 3];
    $x19 = $b + 16 | 0;
    $15 = +HEAPF64[$x19 >> 3];
    $cmp = $14 < $15;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $16 = +HEAPF64[$y9 >> 3];
    $17 = +HEAPF64[$y2 >> 3];
    $cmp25 = $16 < $17;
    if ($cmp25) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $18 = HEAP32[$boxn >> 2] | 0;
    $inc = $18 + 1 | 0;
    HEAP32[$boxn >> 2] = $inc;
    $arrayidx30 = $endp + 56 + ($18 << 5) | 0;
    $19 = $arrayidx30;
    HEAP32[$19 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$19 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$19 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$19 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    HEAP32[$19 + 16 >> 2] = HEAP32[$3 + 16 >> 2] | 0;
    HEAP32[$19 + 20 >> 2] = HEAP32[$3 + 20 >> 2] | 0;
    HEAP32[$19 + 24 >> 2] = HEAP32[$3 + 24 >> 2] | 0;
    HEAP32[$19 + 28 >> 2] = HEAP32[$3 + 28 >> 2] | 0;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _makeBottomFlatEnd($sp, $P, $n, $e, $endp, $isBegin) {
  $sp = $sp | 0;
  $P = $P | 0;
  $n = $n | 0;
  $e = $e | 0;
  $endp = $endp | 0;
  $isBegin = $isBegin | 0;
  var $b = 0, $tmp = 0, $tmp17 = 0, $graph = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $sidemask = 0, $tobool = 0, $4 = 0, $boxn = 0, $5 = 0, $sub = 0, $y = 0, $6 = 0.0, $y2 = 0, $7 = 0, $sub4 = 0, $y7 = 0, $8 = 0.0, $y9 = 0, $y10 = 0, $9 = 0.0, $rank = 0, $10 = 0, $rank13 = 0, $11 = 0, $ht2 = 0, $12 = 0, $conv = 0.0, $sub15 = 0.0, $conv16 = 0, $13 = 0, $x = 0, $14 = 0.0, $x20 = 0, $15 = 0.0, $cmp = 0, $16 = 0.0, $17 = 0.0, $cmp26 = 0, $18 = 0, $inc = 0, $arrayidx31 = 0, $19 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $b = __stackBase__ | 0;
    $tmp = __stackBase__ + 32 | 0;
    $tmp17 = __stackBase__ + 64 | 0;
    $graph = $n + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    _maximal_bbox($tmp, $sp, $n, 0, $e);
    $1 = $endp;
    $2 = $tmp;
    HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    HEAP32[$1 + 16 >> 2] = HEAP32[$2 + 16 >> 2] | 0;
    HEAP32[$1 + 20 >> 2] = HEAP32[$2 + 20 >> 2] | 0;
    HEAP32[$1 + 24 >> 2] = HEAP32[$2 + 24 >> 2] | 0;
    HEAP32[$1 + 28 >> 2] = HEAP32[$2 + 28 >> 2] | 0;
    $3 = $b;
    HEAP32[$3 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    HEAP32[$3 + 16 >> 2] = HEAP32[$2 + 16 >> 2] | 0;
    HEAP32[$3 + 20 >> 2] = HEAP32[$2 + 20 >> 2] | 0;
    HEAP32[$3 + 24 >> 2] = HEAP32[$2 + 24 >> 2] | 0;
    HEAP32[$3 + 28 >> 2] = HEAP32[$2 + 28 >> 2] | 0;
    $sidemask = $endp + 48 | 0;
    HEAP32[$sidemask >> 2] = 1;
    $tobool = $isBegin << 24 >> 24 == 0;
    $4 = $e;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _beginpath($P, $4, 2, $endp, 0);
    label = 5;
    break;
   case 4:
    _endpath($P, $4, 2, $endp, 0);
    label = 5;
    break;
   case 5:
    $boxn = $endp + 52 | 0;
    $5 = HEAP32[$boxn >> 2] | 0;
    $sub = $5 - 1 | 0;
    $y = $endp + 56 + ($sub << 5) + 24 | 0;
    $6 = +HEAPF64[$y >> 3];
    $y2 = $b + 24 | 0;
    HEAPF64[$y2 >> 3] = $6;
    $7 = HEAP32[$boxn >> 2] | 0;
    $sub4 = $7 - 1 | 0;
    $y7 = $endp + 56 + ($sub4 << 5) + 8 | 0;
    $8 = +HEAPF64[$y7 >> 3];
    $y9 = $b + 8 | 0;
    HEAPF64[$y9 >> 3] = $8;
    $y10 = $n + 40 | 0;
    $9 = +HEAPF64[$y10 >> 3];
    $rank = $n + 236 | 0;
    $10 = HEAP32[$rank >> 2] | 0;
    $rank13 = $0 + 224 | 0;
    $11 = HEAP32[$rank13 >> 2] | 0;
    $ht2 = $11 + ($10 * 44 & -1) + 20 | 0;
    $12 = HEAP32[$ht2 >> 2] | 0;
    $conv = +($12 | 0);
    $sub15 = $9 - $conv;
    $conv16 = ~~$sub15;
    _makeregularend($tmp17, $b, 1, $conv16);
    $13 = $tmp17;
    HEAP32[$3 >> 2] = HEAP32[$13 >> 2] | 0;
    HEAP32[$3 + 4 >> 2] = HEAP32[$13 + 4 >> 2] | 0;
    HEAP32[$3 + 8 >> 2] = HEAP32[$13 + 8 >> 2] | 0;
    HEAP32[$3 + 12 >> 2] = HEAP32[$13 + 12 >> 2] | 0;
    HEAP32[$3 + 16 >> 2] = HEAP32[$13 + 16 >> 2] | 0;
    HEAP32[$3 + 20 >> 2] = HEAP32[$13 + 20 >> 2] | 0;
    HEAP32[$3 + 24 >> 2] = HEAP32[$13 + 24 >> 2] | 0;
    HEAP32[$3 + 28 >> 2] = HEAP32[$13 + 28 >> 2] | 0;
    $x = $b | 0;
    $14 = +HEAPF64[$x >> 3];
    $x20 = $b + 16 | 0;
    $15 = +HEAPF64[$x20 >> 3];
    $cmp = $14 < $15;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $16 = +HEAPF64[$y9 >> 3];
    $17 = +HEAPF64[$y2 >> 3];
    $cmp26 = $16 < $17;
    if ($cmp26) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $18 = HEAP32[$boxn >> 2] | 0;
    $inc = $18 + 1 | 0;
    HEAP32[$boxn >> 2] = $inc;
    $arrayidx31 = $endp + 56 + ($18 << 5) | 0;
    $19 = $arrayidx31;
    HEAP32[$19 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$19 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$19 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$19 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    HEAP32[$19 + 16 >> 2] = HEAP32[$3 + 16 >> 2] | 0;
    HEAP32[$19 + 20 >> 2] = HEAP32[$3 + 20 >> 2] | 0;
    HEAP32[$19 + 24 >> 2] = HEAP32[$3 + 24 >> 2] | 0;
    HEAP32[$19 + 28 >> 2] = HEAP32[$3 + 28 >> 2] | 0;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _makeSimpleFlatLabels($tn, $hn, $edges, $ind, $cnt, $et, $n_lbls) {
  $tn = $tn | 0;
  $hn = $hn | 0;
  $edges = $edges | 0;
  $ind = $ind | 0;
  $cnt = $cnt | 0;
  $et = $et | 0;
  $n_lbls = $n_lbls | 0;
  var $poly = 0, $pn = 0, $points = 0, $tp = 0, $hp = 0, $arrayidx = 0, $0 = 0, $mul = 0, $call = 0, $1 = 0, $cmp120 = 0, $i_0121 = 0, $add = 0, $arrayidx1 = 0, $2 = 0, $arrayidx2 = 0, $inc = 0, $cmp = 0, $coord = 0, $p = 0, $3 = 0, $coord5 = 0, $p7 = 0, $4 = 0, $x = 0, $5 = 0.0, $rw = 0, $6 = 0.0, $add10 = 0.0, $x11 = 0, $7 = 0.0, $lw = 0, $8 = 0.0, $sub = 0.0, $add13 = 0.0, $div = 0.0, $arrayidx15 = 0, $9 = 0, $arrayidx17 = 0, $10 = 0, $arrayidx19 = 0, $11 = 0, $arrayidx21 = 0, $12 = 0, $head = 0, $13 = 0, $14 = 0, $15 = 0, $label = 0, $16 = 0, $x23 = 0, $y = 0, $17 = 0.0, $18 = 0, $y26 = 0, $19 = 0.0, $add27 = 0.0, $div28 = 0.0, $add29 = 0.0, $y33 = 0, $20 = 0, $set = 0, $21 = 0.0, $add37 = 0.0, $22 = 0, $y41 = 0, $23 = 0.0, $add42 = 0.0, $x46 = 0, $24 = 0.0, $div47 = 0.0, $sub48 = 0.0, $add54 = 0.0, $cmp56110 = 0, $x121 = 0, $y124 = 0, $x126 = 0, $y128 = 0, $x130 = 0, $y132 = 0, $x134 = 0, $y135 = 0, $y137 = 0, $x140 = 0, $y143 = 0, $x146 = 0, $y149 = 0, $x152 = 0, $y155 = 0, $pn170 = 0, $ps172 = 0, $cmp173 = 0, $conv = 0, $x83 = 0, $y86 = 0, $x89 = 0, $y93 = 0, $x96 = 0, $y97 = 0, $y99 = 0, $x101 = 0, $y103 = 0, $x105 = 0, $y107 = 0, $x109 = 0, $y112 = 0, $lmaxx_0_lcssa = 0.0, $lminx_0_lcssa = 0.0, $i_1_lcssa = 0, $maxy_0_lcssa = 0.0, $miny_0_lcssa = 0.0, $cmp19598 = 0, $x250 = 0, $y253 = 0, $x255 = 0, $y257 = 0, $x259 = 0, $y261 = 0, $x263 = 0, $y264 = 0, $y266 = 0, $x269 = 0, $y272 = 0, $x275 = 0, $y278 = 0, $x281 = 0, $y284 = 0, $pn287 = 0, $ps289 = 0, $cmp290 = 0, $conv291 = 0, $mul206 = 0.0, $add207 = 0.0, $div208 = 0.0, $mul209 = 0.0, $add210 = 0.0, $div211 = 0.0, $x217 = 0, $y220 = 0, $x223 = 0, $y227 = 0, $x230 = 0, $y231 = 0, $y233 = 0, $x235 = 0, $y237 = 0, $x239 = 0, $y241 = 0, $x243 = 0, $y246 = 0, $lmaxx_0115 = 0.0, $lminx_0114 = 0.0, $i_1113 = 0, $maxy_0112 = 0.0, $miny_0111 = 0.0, $add58 = 0, $arrayidx59 = 0, $25 = 0, $rem97 = 0, $tobool = 0, $cmp60 = 0, $label63 = 0, $26 = 0, $x65 = 0, $27 = 0.0, $div66 = 0.0, $sub67 = 0.0, $add73 = 0.0, $lminx_1 = 0.0, $lmaxx_1 = 0.0, $label75 = 0, $28 = 0, $y77 = 0, $29 = 0.0, $add78 = 0.0, $sub79 = 0.0, $30 = 0.0, $sub84 = 0.0, $31 = 0.0, $32 = 0.0, $33 = 0.0, $34 = 0.0, $35 = 0, $y116 = 0, $36 = 0.0, $div117 = 0.0, $add118 = 0.0, $37 = 0.0, $38 = 0.0, $39 = 0.0, $40 = 0.0, $41 = 0.0, $add147 = 0.0, $42 = 0.0, $label157 = 0, $43 = 0, $y159 = 0, $44 = 0.0, $div160 = 0.0, $add161 = 0.0, $add162 = 0.0, $add167 = 0.0, $add168 = 0.0, $ctry_0 = 0.0, $miny_1 = 0.0, $maxy_1 = 0.0, $lminx_2 = 0.0, $lmaxx_2 = 0.0, $call174 = 0, $45 = 0, $cmp175 = 0, $label180 = 0, $46 = 0, $x182 = 0, $47 = 0, $y186 = 0, $48 = 0, $set189 = 0, $head190 = 0, $49 = 0, $50 = 0, $51 = 0, $52 = 0, $inc192 = 0, $cmp56 = 0, $lmaxx_3103 = 0.0, $lminx_3102 = 0.0, $i_2101 = 0, $maxy_2100 = 0.0, $miny_299 = 0.0, $add198 = 0, $arrayidx199 = 0, $53 = 0, $rem20096 = 0, $tobool201 = 0, $cmp203 = 0, $div208_lminx_3102 = 0.0, $div211_lmaxx_3103 = 0.0, $sub213 = 0.0, $54 = 0.0, $sub218 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0.0, $60 = 0.0, $61 = 0.0, $62 = 0.0, $63 = 0.0, $add276 = 0.0, $64 = 0.0, $miny_3 = 0.0, $maxy_3 = 0.0, $lminx_5 = 0.0, $lmaxx_5 = 0.0, $call292 = 0, $65 = 0, $cmp293 = 0, $head297 = 0, $66 = 0, $67 = 0, $68 = 0, $inc299 = 0, $cmp195 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 208 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $poly = __stackBase__ | 0;
    $pn = __stackBase__ + 8 | 0;
    $points = __stackBase__ + 16 | 0;
    $tp = __stackBase__ + 176 | 0;
    $hp = __stackBase__ + 192 | 0;
    $arrayidx = $edges + ($ind << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $mul = $cnt << 2;
    $call = _zmalloc($mul) | 0;
    $1 = $call;
    $cmp120 = ($cnt | 0) > 0;
    if ($cmp120) {
      $i_0121 = 0;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $add = $i_0121 + $ind | 0;
    $arrayidx1 = $edges + ($add << 2) | 0;
    $2 = HEAP32[$arrayidx1 >> 2] | 0;
    $arrayidx2 = $1 + ($i_0121 << 2) | 0;
    HEAP32[$arrayidx2 >> 2] = $2;
    $inc = $i_0121 + 1 | 0;
    $cmp = ($inc | 0) < ($cnt | 0);
    if ($cmp) {
      $i_0121 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _qsort($call | 0, $cnt | 0, 4, 56);
    $coord = $tn + 32 | 0;
    $p = $0 + 32 | 0;
    _add_pointf3016($tp, $coord, $p);
    $3 = $tp;
    $coord5 = $hn + 32 | 0;
    $p7 = $0 + 72 | 0;
    _add_pointf3016($hp, $coord5, $p7);
    $4 = $hp;
    $x = $tp | 0;
    $5 = +HEAPF64[$x >> 3];
    $rw = $tn + 112 | 0;
    $6 = +HEAPF64[$rw >> 3];
    $add10 = $5 + $6;
    $x11 = $hp | 0;
    $7 = +HEAPF64[$x11 >> 3];
    $lw = $hn + 104 | 0;
    $8 = +HEAPF64[$lw >> 3];
    $sub = $7 - $8;
    $add13 = $add10 + $sub;
    $div = $add13 * .5;
    $arrayidx15 = $points | 0;
    $9 = $points;
    HEAP32[$9 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $arrayidx17 = $points + 16 | 0;
    $10 = $arrayidx17;
    HEAP32[$10 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$10 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$10 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$10 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $arrayidx19 = $points + 32 | 0;
    $11 = $arrayidx19;
    HEAP32[$11 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $arrayidx21 = $points + 48 | 0;
    $12 = $arrayidx21;
    HEAP32[$12 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    $head = $0 + 12 | 0;
    $13 = HEAP32[$head >> 2] | 0;
    $14 = $0;
    $15 = $13;
    _clip_and_install($14, $15, $arrayidx15, 4, 4216);
    $label = $0 + 112 | 0;
    $16 = HEAP32[$label >> 2] | 0;
    $x23 = $16 + 56 | 0;
    HEAPF64[$x23 >> 3] = $div;
    $y = $tp + 8 | 0;
    $17 = +HEAPF64[$y >> 3];
    $18 = HEAP32[$label >> 2] | 0;
    $y26 = $18 + 32 | 0;
    $19 = +HEAPF64[$y26 >> 3];
    $add27 = $19 + 6.0;
    $div28 = $add27 * .5;
    $add29 = $17 + $div28;
    $y33 = $18 + 64 | 0;
    HEAPF64[$y33 >> 3] = $add29;
    $20 = HEAP32[$label >> 2] | 0;
    $set = $20 + 81 | 0;
    HEAP8[$set] = 1;
    $21 = +HEAPF64[$y >> 3];
    $add37 = $21 + 3.0;
    $22 = HEAP32[$label >> 2] | 0;
    $y41 = $22 + 32 | 0;
    $23 = +HEAPF64[$y41 >> 3];
    $add42 = $add37 + $23;
    $x46 = $22 + 24 | 0;
    $24 = +HEAPF64[$x46 >> 3];
    $div47 = $24 * .5;
    $sub48 = $div - $div47;
    $add54 = $div + $div47;
    $cmp56110 = ($n_lbls | 0) > 1;
    if ($cmp56110) {
      label = 5;
      break;
    } else {
      $miny_0_lcssa = $add37;
      $maxy_0_lcssa = $add42;
      $i_1_lcssa = 1;
      $lminx_0_lcssa = 0.0;
      $lmaxx_0_lcssa = 0.0;
      label = 6;
      break;
    }
   case 5:
    $x121 = $arrayidx17 | 0;
    $y124 = $points + 24 | 0;
    $x126 = $arrayidx19 | 0;
    $y128 = $points + 40 | 0;
    $x130 = $arrayidx21 | 0;
    $y132 = $points + 56 | 0;
    $x134 = $points + 64 | 0;
    $y135 = $hp + 8 | 0;
    $y137 = $points + 72 | 0;
    $x140 = $points + 80 | 0;
    $y143 = $points + 88 | 0;
    $x146 = $points + 96 | 0;
    $y149 = $points + 104 | 0;
    $x152 = $points + 112 | 0;
    $y155 = $points + 120 | 0;
    $pn170 = $poly + 4 | 0;
    $ps172 = $poly | 0;
    $cmp173 = ($et | 0) == 4;
    $conv = $cmp173 & 1;
    $x83 = $arrayidx17 | 0;
    $y86 = $points + 24 | 0;
    $x89 = $arrayidx19 | 0;
    $y93 = $points + 40 | 0;
    $x96 = $points + 64 | 0;
    $y97 = $hp + 8 | 0;
    $y99 = $points + 72 | 0;
    $x101 = $points + 80 | 0;
    $y103 = $points + 88 | 0;
    $x105 = $points + 96 | 0;
    $y107 = $points + 104 | 0;
    $x109 = $points + 112 | 0;
    $y112 = $points + 120 | 0;
    $miny_0111 = $add37;
    $maxy_0112 = $add42;
    $i_1113 = 1;
    $lminx_0114 = 0.0;
    $lmaxx_0115 = 0.0;
    label = 8;
    break;
   case 6:
    $cmp19598 = ($i_1_lcssa | 0) < ($cnt | 0);
    if ($cmp19598) {
      label = 7;
      break;
    } else {
      label = 20;
      break;
    }
   case 7:
    $x250 = $arrayidx17 | 0;
    $y253 = $points + 24 | 0;
    $x255 = $arrayidx19 | 0;
    $y257 = $points + 40 | 0;
    $x259 = $arrayidx21 | 0;
    $y261 = $points + 56 | 0;
    $x263 = $points + 64 | 0;
    $y264 = $hp + 8 | 0;
    $y266 = $points + 72 | 0;
    $x269 = $points + 80 | 0;
    $y272 = $points + 88 | 0;
    $x275 = $points + 96 | 0;
    $y278 = $points + 104 | 0;
    $x281 = $points + 112 | 0;
    $y284 = $points + 120 | 0;
    $pn287 = $poly + 4 | 0;
    $ps289 = $poly | 0;
    $cmp290 = ($et | 0) == 4;
    $conv291 = $cmp290 & 1;
    $mul206 = $add10 * 2.0;
    $add207 = $mul206 + $sub;
    $div208 = $add207 / 3.0;
    $mul209 = $sub * 2.0;
    $add210 = $add10 + $mul209;
    $div211 = $add210 / 3.0;
    $x217 = $arrayidx17 | 0;
    $y220 = $points + 24 | 0;
    $x223 = $arrayidx19 | 0;
    $y227 = $points + 40 | 0;
    $x230 = $points + 64 | 0;
    $y231 = $hp + 8 | 0;
    $y233 = $points + 72 | 0;
    $x235 = $points + 80 | 0;
    $y237 = $points + 88 | 0;
    $x239 = $points + 96 | 0;
    $y241 = $points + 104 | 0;
    $x243 = $points + 112 | 0;
    $y246 = $points + 120 | 0;
    $miny_299 = $miny_0_lcssa;
    $maxy_2100 = $maxy_0_lcssa;
    $i_2101 = $i_1_lcssa;
    $lminx_3102 = $lminx_0_lcssa;
    $lmaxx_3103 = $lmaxx_0_lcssa;
    label = 15;
    break;
   case 8:
    $add58 = $i_1113 + $ind | 0;
    $arrayidx59 = $edges + ($add58 << 2) | 0;
    $25 = HEAP32[$arrayidx59 >> 2] | 0;
    $rem97 = $i_1113 & 1;
    $tobool = ($rem97 | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp60 = ($i_1113 | 0) == 1;
    if ($cmp60) {
      label = 10;
      break;
    } else {
      $lmaxx_1 = $lmaxx_0115;
      $lminx_1 = $lminx_0114;
      label = 11;
      break;
    }
   case 10:
    $label63 = $25 + 112 | 0;
    $26 = HEAP32[$label63 >> 2] | 0;
    $x65 = $26 + 24 | 0;
    $27 = +HEAPF64[$x65 >> 3];
    $div66 = $27 * .5;
    $sub67 = $div - $div66;
    $add73 = $div + $div66;
    $lmaxx_1 = $add73;
    $lminx_1 = $sub67;
    label = 11;
    break;
   case 11:
    $label75 = $25 + 112 | 0;
    $28 = HEAP32[$label75 >> 2] | 0;
    $y77 = $28 + 32 | 0;
    $29 = +HEAPF64[$y77 >> 3];
    $add78 = $29 + 6.0;
    $sub79 = $miny_0111 - $add78;
    HEAP32[$9 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $30 = +HEAPF64[$x >> 3];
    HEAPF64[$x83 >> 3] = $30;
    $sub84 = $sub79 + -6.0;
    HEAPF64[$y86 >> 3] = $sub84;
    $31 = +HEAPF64[$x11 >> 3];
    HEAPF64[$x89 >> 3] = $31;
    $32 = +HEAPF64[$y86 >> 3];
    HEAPF64[$y93 >> 3] = $32;
    HEAP32[$12 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    HEAPF64[$x96 >> 3] = $lmaxx_1;
    $33 = +HEAPF64[$y97 >> 3];
    HEAPF64[$y99 >> 3] = $33;
    HEAPF64[$x101 >> 3] = $lmaxx_1;
    HEAPF64[$y103 >> 3] = $sub79;
    HEAPF64[$x105 >> 3] = $lminx_1;
    HEAPF64[$y107 >> 3] = $sub79;
    HEAPF64[$x109 >> 3] = $lminx_1;
    $34 = +HEAPF64[$y >> 3];
    HEAPF64[$y112 >> 3] = $34;
    $35 = HEAP32[$label75 >> 2] | 0;
    $y116 = $35 + 32 | 0;
    $36 = +HEAPF64[$y116 >> 3];
    $div117 = $36 * .5;
    $add118 = $sub79 + $div117;
    $lmaxx_2 = $lmaxx_1;
    $lminx_2 = $lminx_1;
    $maxy_1 = $maxy_0112;
    $miny_1 = $sub79;
    $ctry_0 = $add118;
    label = 13;
    break;
   case 12:
    HEAP32[$9 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    HEAPF64[$x121 >> 3] = $sub48;
    $37 = +HEAPF64[$y >> 3];
    HEAPF64[$y124 >> 3] = $37;
    HEAPF64[$x126 >> 3] = $sub48;
    HEAPF64[$y128 >> 3] = $maxy_0112;
    HEAPF64[$x130 >> 3] = $add54;
    HEAPF64[$y132 >> 3] = $maxy_0112;
    HEAPF64[$x134 >> 3] = $add54;
    $38 = +HEAPF64[$y135 >> 3];
    HEAPF64[$y137 >> 3] = $38;
    $39 = +HEAPF64[$x11 >> 3];
    HEAPF64[$x140 >> 3] = $39;
    $40 = +HEAPF64[$y135 >> 3];
    HEAPF64[$y143 >> 3] = $40;
    $41 = +HEAPF64[$x11 >> 3];
    HEAPF64[$x146 >> 3] = $41;
    $add147 = $maxy_0112 + 6.0;
    HEAPF64[$y149 >> 3] = $add147;
    $42 = +HEAPF64[$x >> 3];
    HEAPF64[$x152 >> 3] = $42;
    HEAPF64[$y155 >> 3] = $add147;
    $label157 = $25 + 112 | 0;
    $43 = HEAP32[$label157 >> 2] | 0;
    $y159 = $43 + 32 | 0;
    $44 = +HEAPF64[$y159 >> 3];
    $div160 = $44 * .5;
    $add161 = $maxy_0112 + $div160;
    $add162 = $add161 + 6.0;
    $add167 = $44 + 6.0;
    $add168 = $maxy_0112 + $add167;
    $lmaxx_2 = $lmaxx_0115;
    $lminx_2 = $lminx_0114;
    $maxy_1 = $add168;
    $miny_1 = $miny_0111;
    $ctry_0 = $add162;
    label = 13;
    break;
   case 13:
    HEAP32[$pn170 >> 2] = 8;
    HEAP32[$ps172 >> 2] = $arrayidx15;
    $call174 = _simpleSplineRoute($tp, $hp, $poly, $pn, $conv) | 0;
    $45 = HEAP32[$pn >> 2] | 0;
    $cmp175 = ($45 | 0) == 0;
    if ($cmp175) {
      label = 21;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $label180 = $25 + 112 | 0;
    $46 = HEAP32[$label180 >> 2] | 0;
    $x182 = $46 + 56 | 0;
    HEAPF64[$x182 >> 3] = $div;
    $47 = HEAP32[$label180 >> 2] | 0;
    $y186 = $47 + 64 | 0;
    HEAPF64[$y186 >> 3] = $ctry_0;
    $48 = HEAP32[$label180 >> 2] | 0;
    $set189 = $48 + 81 | 0;
    HEAP8[$set189] = 1;
    $head190 = $25 + 12 | 0;
    $49 = HEAP32[$head190 >> 2] | 0;
    $50 = HEAP32[$pn >> 2] | 0;
    $51 = $25;
    $52 = $49;
    _clip_and_install($51, $52, $call174, $50, 4216);
    $inc192 = $i_1113 + 1 | 0;
    $cmp56 = ($inc192 | 0) < ($n_lbls | 0);
    if ($cmp56) {
      $miny_0111 = $miny_1;
      $maxy_0112 = $maxy_1;
      $i_1113 = $inc192;
      $lminx_0114 = $lminx_2;
      $lmaxx_0115 = $lmaxx_2;
      label = 8;
      break;
    } else {
      $miny_0_lcssa = $miny_1;
      $maxy_0_lcssa = $maxy_1;
      $i_1_lcssa = $inc192;
      $lminx_0_lcssa = $lminx_2;
      $lmaxx_0_lcssa = $lmaxx_2;
      label = 6;
      break;
    }
   case 15:
    $add198 = $i_2101 + $ind | 0;
    $arrayidx199 = $edges + ($add198 << 2) | 0;
    $53 = HEAP32[$arrayidx199 >> 2] | 0;
    $rem20096 = $i_2101 & 1;
    $tobool201 = ($rem20096 | 0) == 0;
    if ($tobool201) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $cmp203 = ($i_2101 | 0) == 1;
    $div208_lminx_3102 = $cmp203 ? $div208 : $lminx_3102;
    $div211_lmaxx_3103 = $cmp203 ? $div211 : $lmaxx_3103;
    $sub213 = $miny_299 + -6.0;
    HEAP32[$9 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $54 = +HEAPF64[$x >> 3];
    HEAPF64[$x217 >> 3] = $54;
    $sub218 = $sub213 + -6.0;
    HEAPF64[$y220 >> 3] = $sub218;
    $55 = +HEAPF64[$x11 >> 3];
    HEAPF64[$x223 >> 3] = $55;
    $56 = +HEAPF64[$y220 >> 3];
    HEAPF64[$y227 >> 3] = $56;
    HEAP32[$12 >> 2] = HEAP32[$4 >> 2] | 0;
    HEAP32[$12 + 4 >> 2] = HEAP32[$4 + 4 >> 2] | 0;
    HEAP32[$12 + 8 >> 2] = HEAP32[$4 + 8 >> 2] | 0;
    HEAP32[$12 + 12 >> 2] = HEAP32[$4 + 12 >> 2] | 0;
    HEAPF64[$x230 >> 3] = $div211_lmaxx_3103;
    $57 = +HEAPF64[$y231 >> 3];
    HEAPF64[$y233 >> 3] = $57;
    HEAPF64[$x235 >> 3] = $div211_lmaxx_3103;
    HEAPF64[$y237 >> 3] = $sub213;
    HEAPF64[$x239 >> 3] = $div208_lminx_3102;
    HEAPF64[$y241 >> 3] = $sub213;
    HEAPF64[$x243 >> 3] = $div208_lminx_3102;
    $58 = +HEAPF64[$y >> 3];
    HEAPF64[$y246 >> 3] = $58;
    $lmaxx_5 = $div211_lmaxx_3103;
    $lminx_5 = $div208_lminx_3102;
    $maxy_3 = $maxy_2100;
    $miny_3 = $sub213;
    label = 18;
    break;
   case 17:
    HEAP32[$9 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$9 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$9 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$9 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    HEAPF64[$x250 >> 3] = $sub48;
    $59 = +HEAPF64[$y >> 3];
    HEAPF64[$y253 >> 3] = $59;
    HEAPF64[$x255 >> 3] = $sub48;
    HEAPF64[$y257 >> 3] = $maxy_2100;
    HEAPF64[$x259 >> 3] = $add54;
    HEAPF64[$y261 >> 3] = $maxy_2100;
    HEAPF64[$x263 >> 3] = $add54;
    $60 = +HEAPF64[$y264 >> 3];
    HEAPF64[$y266 >> 3] = $60;
    $61 = +HEAPF64[$x11 >> 3];
    HEAPF64[$x269 >> 3] = $61;
    $62 = +HEAPF64[$y264 >> 3];
    HEAPF64[$y272 >> 3] = $62;
    $63 = +HEAPF64[$x11 >> 3];
    HEAPF64[$x275 >> 3] = $63;
    $add276 = $maxy_2100 + 6.0;
    HEAPF64[$y278 >> 3] = $add276;
    $64 = +HEAPF64[$x >> 3];
    HEAPF64[$x281 >> 3] = $64;
    HEAPF64[$y284 >> 3] = $add276;
    $lmaxx_5 = $lmaxx_3103;
    $lminx_5 = $lminx_3102;
    $maxy_3 = $add276;
    $miny_3 = $miny_299;
    label = 18;
    break;
   case 18:
    HEAP32[$pn287 >> 2] = 8;
    HEAP32[$ps289 >> 2] = $arrayidx15;
    $call292 = _simpleSplineRoute($tp, $hp, $poly, $pn, $conv291) | 0;
    $65 = HEAP32[$pn >> 2] | 0;
    $cmp293 = ($65 | 0) == 0;
    if ($cmp293) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $head297 = $53 + 12 | 0;
    $66 = HEAP32[$head297 >> 2] | 0;
    $67 = $53;
    $68 = $66;
    _clip_and_install($67, $68, $call292, $65, 4216);
    $inc299 = $i_2101 + 1 | 0;
    $cmp195 = ($inc299 | 0) < ($cnt | 0);
    if ($cmp195) {
      $miny_299 = $miny_3;
      $maxy_2100 = $maxy_3;
      $i_2101 = $inc299;
      $lminx_3102 = $lminx_5;
      $lmaxx_3103 = $lmaxx_5;
      label = 15;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    _free($call);
    label = 21;
    break;
   case 21:
    STACKTOP = __stackBase__;
    return;
  }
}
function _cloneGraph($g) {
  $g = $g | 0;
  var $0 = 0, $1 = 0, $2 = 0, $and = 0, $call = 0, $3 = 0, $4 = 0, $call1 = 0, $call2 = 0, $5 = 0, $u = 0, $6 = 0, $drawing = 0, $drawing4 = 0, $7 = 0, $quantum = 0, $8 = 0.0, $quantum7 = 0, $9 = 0, $dpi = 0, $10 = 0.0, $11 = 0, $dpi12 = 0, $charset = 0, $12 = 0, $charset15 = 0, $rankdir = 0, $13 = 0, $and18 = 0, $tobool19 = 0, $rankdir21 = 0, $_ = 0, $nodesep = 0, $14 = 0, $nodesep26 = 0, $_c = 0, $ranksep = 0, $15 = 0, $ranksep29 = 0, $_c31 = 0, $root = 0, $16 = 0, $univ = 0, $17 = 0, $nodeattr = 0, $18 = 0, $list30 = 0, $19 = 0, $20 = 0, $tobool3134 = 0, $21 = 0, $list_035 = 0, $incdec_ptr = 0, $name = 0, $22 = 0, $value = 0, $23 = 0, $call32 = 0, $24 = 0, $tobool31 = 0, $25 = 0, $univ34 = 0, $26 = 0, $edgeattr = 0, $27 = 0, $list35 = 0, $28 = 0, $29 = 0, $tobool3832 = 0, $30 = 0, $list_133 = 0, $incdec_ptr37 = 0, $name40 = 0, $31 = 0, $value41 = 0, $32 = 0, $call42 = 0, $33 = 0, $tobool38 = 0, $proto = 0, $34 = 0, $e = 0, $35 = 0, $36 = 0, $call44 = 0, $tobool45 = 0, $call47 = 0, $37 = 0, $e50 = 0, $38 = 0, $39 = 0, $call51 = 0, $tobool52 = 0, $call54 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $e57 = 0, $48 = 0, $49 = 0, $call58 = 0, $50 = 0, $e60 = 0, $51 = 0, $52 = 0, $call61 = 0, $53 = 0, $e63 = 0, $54 = 0, $55 = 0, $call64 = 0, $tobool65 = 0, $call67 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $1 = HEAP32[$0 >> 2] | 0;
    $2 = $1 >>> 4;
    $and = $2 & 1;
    $call = _agopen(95224, $and) | 0;
    $3 = $call;
    $4 = $call;
    $call1 = _agraphattr($4, 117048, 91664) | 0;
    $call2 = _zmalloc(96) | 0;
    $5 = $call2;
    $u = $call + 48 | 0;
    $6 = $u;
    $drawing = $u;
    HEAP32[$drawing >> 2] = $5;
    $drawing4 = $g + 48 | 0;
    $7 = HEAP32[$drawing4 >> 2] | 0;
    $quantum = $7 | 0;
    $8 = +HEAPF64[$quantum >> 3];
    $quantum7 = $call2;
    HEAPF64[$quantum7 >> 3] = $8;
    $9 = HEAP32[$drawing4 >> 2] | 0;
    $dpi = $9 + 24 | 0;
    $10 = +HEAPF64[$dpi >> 3];
    $11 = HEAP32[$drawing >> 2] | 0;
    $dpi12 = $11 + 24 | 0;
    HEAPF64[$dpi12 >> 3] = $10;
    $charset = $g + 155 | 0;
    $12 = HEAP8[$charset] | 0;
    $charset15 = $6 + 107 | 0;
    HEAP8[$charset15] = $12;
    $rankdir = $g + 156 | 0;
    $13 = HEAP32[$rankdir >> 2] | 0;
    $and18 = $13 & 1;
    $tobool19 = ($and18 | 0) == 0;
    $rankdir21 = $call + 156 | 0;
    $_ = $tobool19 ? 1 : 0;
    HEAP32[$rankdir21 >> 2] = $_;
    $nodesep = $g + 260 | 0;
    $14 = HEAP32[$nodesep >> 2] | 0;
    $nodesep26 = $call + 260 | 0;
    $_c = $14;
    HEAP32[$nodesep26 >> 2] = $_c;
    $ranksep = $g + 264 | 0;
    $15 = HEAP32[$ranksep >> 2] | 0;
    $ranksep29 = $call + 264 | 0;
    $_c31 = $15;
    HEAP32[$ranksep29 >> 2] = $_c31;
    $root = $g + 32 | 0;
    $16 = HEAP32[$root >> 2] | 0;
    $univ = $16 + 16 | 0;
    $17 = HEAP32[$univ >> 2] | 0;
    $nodeattr = $17 + 4 | 0;
    $18 = HEAP32[$nodeattr >> 2] | 0;
    $list30 = $18 + 8 | 0;
    $19 = HEAP32[$list30 >> 2] | 0;
    $20 = HEAP32[$19 >> 2] | 0;
    $tobool3134 = ($20 | 0) == 0;
    if ($tobool3134) {
      label = 4;
      break;
    } else {
      $list_035 = $19;
      $21 = $20;
      label = 3;
      break;
    }
   case 3:
    $incdec_ptr = $list_035 + 4 | 0;
    $name = $21 | 0;
    $22 = HEAP32[$name >> 2] | 0;
    $value = $21 + 4 | 0;
    $23 = HEAP32[$value >> 2] | 0;
    $call32 = _agnodeattr($4, $22, $23) | 0;
    $24 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool31 = ($24 | 0) == 0;
    if ($tobool31) {
      label = 4;
      break;
    } else {
      $list_035 = $incdec_ptr;
      $21 = $24;
      label = 3;
      break;
    }
   case 4:
    $25 = HEAP32[$root >> 2] | 0;
    $univ34 = $25 + 16 | 0;
    $26 = HEAP32[$univ34 >> 2] | 0;
    $edgeattr = $26 + 8 | 0;
    $27 = HEAP32[$edgeattr >> 2] | 0;
    $list35 = $27 + 8 | 0;
    $28 = HEAP32[$list35 >> 2] | 0;
    $29 = HEAP32[$28 >> 2] | 0;
    $tobool3832 = ($29 | 0) == 0;
    if ($tobool3832) {
      label = 6;
      break;
    } else {
      $list_133 = $28;
      $30 = $29;
      label = 5;
      break;
    }
   case 5:
    $incdec_ptr37 = $list_133 + 4 | 0;
    $name40 = $30 | 0;
    $31 = HEAP32[$name40 >> 2] | 0;
    $value41 = $30 + 4 | 0;
    $32 = HEAP32[$value41 >> 2] | 0;
    $call42 = _agedgeattr($4, $31, $32) | 0;
    $33 = HEAP32[$incdec_ptr37 >> 2] | 0;
    $tobool38 = ($33 | 0) == 0;
    if ($tobool38) {
      label = 6;
      break;
    } else {
      $list_133 = $incdec_ptr37;
      $30 = $33;
      label = 5;
      break;
    }
   case 6:
    $proto = $call + 40 | 0;
    $34 = HEAP32[$proto >> 2] | 0;
    $e = $34 + 4 | 0;
    $35 = HEAP32[$e >> 2] | 0;
    $36 = $35 | 0;
    $call44 = _agfindattr($36, 161800) | 0;
    $tobool45 = ($call44 | 0) == 0;
    if ($tobool45) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call47 = _agedgeattr($4, 161800, 91664) | 0;
    label = 8;
    break;
   case 8:
    $37 = HEAP32[$proto >> 2] | 0;
    $e50 = $37 + 4 | 0;
    $38 = HEAP32[$e50 >> 2] | 0;
    $39 = $38 | 0;
    $call51 = _agfindattr($39, 158248) | 0;
    $tobool52 = ($call51 | 0) == 0;
    if ($tobool52) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $call54 = _agedgeattr($4, 158248, 91664) | 0;
    label = 10;
    break;
   case 10:
    $40 = HEAP32[41954] | 0;
    HEAP32[21464] = $40;
    $41 = HEAP32[41914] | 0;
    HEAP32[21462] = $41;
    $42 = HEAP32[41912] | 0;
    HEAP32[21460] = $42;
    $43 = HEAP32[41894] | 0;
    HEAP32[21458] = $43;
    $44 = HEAP32[41918] | 0;
    HEAP32[21456] = $44;
    $45 = HEAP32[41594] | 0;
    HEAP32[21454] = $45;
    $46 = HEAP32[41356] | 0;
    HEAP32[21452] = $46;
    HEAP32[41954] = 0;
    $47 = HEAP32[$proto >> 2] | 0;
    $e57 = $47 + 4 | 0;
    $48 = HEAP32[$e57 >> 2] | 0;
    $49 = $48 | 0;
    $call58 = _agfindattr($49, 154824) | 0;
    HEAP32[41914] = $call58;
    $50 = HEAP32[$proto >> 2] | 0;
    $e60 = $50 + 4 | 0;
    $51 = HEAP32[$e60 >> 2] | 0;
    $52 = $51 | 0;
    $call61 = _agfindattr($52, 151264) | 0;
    HEAP32[41912] = $call61;
    $53 = HEAP32[$proto >> 2] | 0;
    $e63 = $53 + 4 | 0;
    $54 = HEAP32[$e63 >> 2] | 0;
    $55 = $54 | 0;
    $call64 = _agfindattr($55, 148464) | 0;
    HEAP32[41894] = $call64;
    $tobool65 = ($call64 | 0) == 0;
    if ($tobool65) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $call67 = _agedgeattr($4, 148464, 91664) | 0;
    HEAP32[41894] = $call67;
    label = 12;
    break;
   case 12:
    HEAP32[41918] = 0;
    HEAP32[41594] = 0;
    return $3 | 0;
  }
  return 0;
}
function _cloneNode($g, $orign) {
  $g = $g | 0;
  $orign = $orign | 0;
  var $name = 0, $0 = 0, $1 = 0, $call = 0, $2 = 0, $3 = 0, $4 = 0, $call1 = 0, $5 = 0, $call2 = 0, $cmp = 0, $label = 0, $6 = 0, $text = 0, $7 = 0, $call3 = 0, $add = 0, $call4 = 0, $8 = 0, $text7 = 0, $9 = 0, $call8 = 0, $call9 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $name = $orign + 12 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $1 = $g;
    $call = _agnode($1, $0) | 0;
    $2 = $call;
    $3 = $orign | 0;
    $4 = $call | 0;
    $call1 = _agcopyattr($3, $4) | 0;
    $5 = $orign;
    $call2 = _shapeOf($5) | 0;
    $cmp = ($call2 | 0) == 2;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $label = $orign + 120 | 0;
    $6 = HEAP32[$label >> 2] | 0;
    $text = $6 | 0;
    $7 = HEAP32[$text >> 2] | 0;
    $call3 = _strlen($7 | 0) | 0;
    $add = $call3 + 3 | 0;
    $call4 = _gmalloc($add) | 0;
    $8 = HEAP32[$label >> 2] | 0;
    $text7 = $8 | 0;
    $9 = HEAP32[$text7 >> 2] | 0;
    $call8 = _sprintf($call4 | 0, 103472, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $9, tempInt) | 0) | 0;
    $call9 = _agset($4, 99240, $call4) | 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $2 | 0;
  }
  return 0;
}
function _cloneEdge3018($g, $tn, $hn, $orig) {
  $g = $g | 0;
  $tn = $tn | 0;
  $hn = $hn | 0;
  $orig = $orig | 0;
  var $call = 0;
  $call = _agedge($g, $tn, $hn) | 0;
  _agcopyattr($orig | 0, $call | 0);
  return $call | 0;
}
function _transformf($agg_result, $p, $del, $flip) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $del = $del | 0;
  $flip = $flip | 0;
  var $tobool = 0, $x = 0, $0 = 0.0, $y = 0, $1 = 0.0, $sub = 0.0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $del;
  $del = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$del >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$del + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$del + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$del + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($flip | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x = $p | 0;
    $0 = +HEAPF64[$x >> 3];
    $y = $p + 8 | 0;
    $1 = +HEAPF64[$y >> 3];
    HEAPF64[$x >> 3] = $1;
    $sub = -0.0 - $0;
    HEAPF64[$y >> 3] = $sub;
    label = 4;
    break;
   case 4:
    _add_pointf3016($agg_result, $p, $del);
    STACKTOP = __stackBase__;
    return;
  }
}
function _edgelblcmpfn($ptr0, $ptr1) {
  $ptr0 = $ptr0 | 0;
  $ptr1 = $ptr1 | 0;
  var $0 = 0, $1 = 0, $label = 0, $2 = 0, $tobool = 0, $label2 = 0, $3 = 0, $tobool3 = 0, $sz0_sroa_0_0__idx = 0, $sz0_sroa_0_0_copyload = 0.0, $sz0_sroa_1_8__idx6 = 0, $sz0_sroa_1_8_copyload = 0.0, $sz1_sroa_0_0__idx = 0, $sz1_sroa_0_0_copyload = 0.0, $sz1_sroa_1_8__idx3 = 0, $sz1_sroa_1_8_copyload = 0.0, $cmp = 0, $cmp14 = 0, $cmp18 = 0, $cmp23 = 0, $_ = 0, $_9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$ptr0 >> 2] | 0;
    $1 = HEAP32[$ptr1 >> 2] | 0;
    $label = $0 + 112 | 0;
    $2 = HEAP32[$label >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    $label2 = $1 + 112 | 0;
    $3 = HEAP32[$label2 >> 2] | 0;
    $tobool3 = ($3 | 0) != 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    if ($tobool3) {
      label = 4;
      break;
    } else {
      $retval_0 = -1;
      label = 9;
      break;
    }
   case 4:
    $sz0_sroa_0_0__idx = $2 + 24 | 0;
    $sz0_sroa_0_0_copyload = +HEAPF64[$sz0_sroa_0_0__idx >> 3];
    $sz0_sroa_1_8__idx6 = $2 + 32 | 0;
    $sz0_sroa_1_8_copyload = +HEAPF64[$sz0_sroa_1_8__idx6 >> 3];
    $sz1_sroa_0_0__idx = $3 + 24 | 0;
    $sz1_sroa_0_0_copyload = +HEAPF64[$sz1_sroa_0_0__idx >> 3];
    $sz1_sroa_1_8__idx3 = $3 + 32 | 0;
    $sz1_sroa_1_8_copyload = +HEAPF64[$sz1_sroa_1_8__idx3 >> 3];
    $cmp = $sz0_sroa_0_0_copyload > $sz1_sroa_0_0_copyload;
    if ($cmp) {
      $retval_0 = -1;
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp14 = $sz0_sroa_0_0_copyload < $sz1_sroa_0_0_copyload;
    if ($cmp14) {
      $retval_0 = 1;
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp18 = $sz0_sroa_1_8_copyload > $sz1_sroa_1_8_copyload;
    if ($cmp18) {
      $retval_0 = -1;
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp23 = $sz0_sroa_1_8_copyload < $sz1_sroa_1_8_copyload;
    $_ = $cmp23 & 1;
    $retval_0 = $_;
    label = 9;
    break;
   case 8:
    $_9 = $tobool3 & 1;
    $retval_0 = $_9;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _swap_ends_p($e) {
  $e = $e | 0;
  var $e_addr_0 = 0, $to_orig = 0, $0 = 0, $tobool = 0, $head = 0, $1 = 0, $rank = 0, $2 = 0, $tail = 0, $3 = 0, $rank5 = 0, $4 = 0, $cmp = 0, $cmp12 = 0, $order = 0, $5 = 0, $order19 = 0, $6 = 0, $cmp20 = 0, $_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $e_addr_0 = $e;
    label = 3;
    break;
   case 3:
    $to_orig = $e_addr_0 + 132 | 0;
    $0 = HEAP32[$to_orig >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $e_addr_0 = $0;
      label = 3;
      break;
    }
   case 4:
    $head = $e_addr_0 + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $rank = $1 + 236 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $tail = $e_addr_0 + 16 | 0;
    $3 = HEAP32[$tail >> 2] | 0;
    $rank5 = $3 + 236 | 0;
    $4 = HEAP32[$rank5 >> 2] | 0;
    $cmp = ($2 | 0) > ($4 | 0);
    if ($cmp) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp12 = ($2 | 0) < ($4 | 0);
    if ($cmp12) {
      $retval_0 = 1;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $order = $1 + 240 | 0;
    $5 = HEAP32[$order >> 2] | 0;
    $order19 = $3 + 240 | 0;
    $6 = HEAP32[$order19 >> 2] | 0;
    $cmp20 = ($5 | 0) < ($6 | 0);
    $_ = $cmp20 & 1;
    $retval_0 = $_;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _ffe($u, $uL, $v, $vL) {
  $u = $u | 0;
  $uL = $uL | 0;
  $v = $v | 0;
  $vL = $vL | 0;
  var $size = 0, $0 = 0, $cmp = 0, $size1 = 0, $1 = 0, $cmp2 = 0, $cmp5 = 0, $list10 = 0, $2 = 0, $list = 0, $3 = 0, $i_0 = 0, $arrayidx = 0, $4 = 0, $tobool = 0, $head = 0, $5 = 0, $cmp7 = 0, $inc = 0, $i_1 = 0, $arrayidx11 = 0, $6 = 0, $tobool12 = 0, $tail = 0, $7 = 0, $cmp14 = 0, $inc18 = 0, $e_0 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $uL;
  $uL = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$uL >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$uL + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  tempParam = $vL;
  $vL = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$vL >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$vL + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $uL + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $e_0 = 0;
      label = 11;
      break;
    }
   case 3:
    $size1 = $vL + 4 | 0;
    $1 = HEAP32[$size1 >> 2] | 0;
    $cmp2 = ($1 | 0) > 0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      $e_0 = 0;
      label = 11;
      break;
    }
   case 4:
    $cmp5 = ($0 | 0) < ($1 | 0);
    if ($cmp5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $list10 = $vL | 0;
    $2 = HEAP32[$list10 >> 2] | 0;
    $i_1 = 0;
    label = 9;
    break;
   case 6:
    $list = $uL | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $i_0 = 0;
    label = 7;
    break;
   case 7:
    $arrayidx = $3 + ($i_0 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      $e_0 = 0;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $head = $4 + 12 | 0;
    $5 = HEAP32[$head >> 2] | 0;
    $cmp7 = ($5 | 0) == ($v | 0);
    $inc = $i_0 + 1 | 0;
    if ($cmp7) {
      $e_0 = $4;
      label = 11;
      break;
    } else {
      $i_0 = $inc;
      label = 7;
      break;
    }
   case 9:
    $arrayidx11 = $2 + ($i_1 << 2) | 0;
    $6 = HEAP32[$arrayidx11 >> 2] | 0;
    $tobool12 = ($6 | 0) == 0;
    if ($tobool12) {
      $e_0 = 0;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $tail = $6 + 16 | 0;
    $7 = HEAP32[$tail >> 2] | 0;
    $cmp14 = ($7 | 0) == ($u | 0);
    $inc18 = $i_1 + 1 | 0;
    if ($cmp14) {
      $e_0 = $6;
      label = 11;
      break;
    } else {
      $i_1 = $inc18;
      label = 9;
      break;
    }
   case 11:
    STACKTOP = __stackBase__;
    return $e_0 | 0;
  }
  return 0;
}
function _zapinlist($L, $e) {
  $L = $L | 0;
  $e = $e | 0;
  var $size = 0, $0 = 0, $list = 0, $i_0 = 0, $cmp = 0, $1 = 0, $arrayidx = 0, $2 = 0, $cmp1 = 0, $inc = 0, $dec = 0, $3 = 0, $arrayidx5 = 0, $4 = 0, $arrayidx7 = 0, $5 = 0, $6 = 0, $arrayidx10 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $L + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $list = $L | 0;
    $i_0 = 0;
    label = 3;
    break;
   case 3:
    $cmp = ($i_0 | 0) < ($0 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_0 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $cmp1 = ($2 | 0) == ($e | 0);
    $inc = $i_0 + 1 | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $i_0 = $inc;
      label = 3;
      break;
    }
   case 5:
    $dec = $0 - 1 | 0;
    HEAP32[$size >> 2] = $dec;
    $3 = HEAP32[$list >> 2] | 0;
    $arrayidx5 = $3 + ($dec << 2) | 0;
    $4 = HEAP32[$arrayidx5 >> 2] | 0;
    $arrayidx7 = $3 + ($i_0 << 2) | 0;
    HEAP32[$arrayidx7 >> 2] = $4;
    $5 = HEAP32[$size >> 2] | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $arrayidx10 = $6 + ($5 << 2) | 0;
    HEAP32[$arrayidx10 >> 2] = 0;
    label = 6;
    break;
   case 6:
    return;
  }
}
function _find_fast_node($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $nlist = 0, $v_0_in = 0, $v_0 = 0, $tobool = 0, $cmp = 0, $or_cond = 0, $next = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $v_0_in = $nlist;
    label = 3;
    break;
   case 3:
    $v_0 = HEAP32[$v_0_in >> 2] | 0;
    $tobool = ($v_0 | 0) == 0;
    $cmp = ($v_0 | 0) == ($n | 0);
    $or_cond = $tobool | $cmp;
    $next = $v_0 + 168 | 0;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      $v_0_in = $next;
      label = 3;
      break;
    }
   case 4:
    return $v_0 | 0;
  }
  return 0;
}
function _basic_merge($e, $rep) {
  $e = $e | 0;
  $rep = $rep | 0;
  var $minlen = 0, $0 = 0, $minlen2 = 0, $1 = 0, $cmp = 0, $count = 0, $xpenalty = 0, $weight = 0, $rep_addr_016 = 0, $2 = 0, $count12 = 0, $3 = 0, $add = 0, $4 = 0, $xpenalty18 = 0, $5 = 0, $add20 = 0, $6 = 0.0, $weight24 = 0, $7 = 0.0, $add25 = 0.0, $to_virt = 0, $8 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minlen = $rep + 186 | 0;
    $0 = HEAP16[$minlen >> 1] | 0;
    $minlen2 = $e + 186 | 0;
    $1 = HEAP16[$minlen2 >> 1] | 0;
    $cmp = ($0 & 65535) < ($1 & 65535);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP16[$minlen >> 1] = $1;
    label = 4;
    break;
   case 4:
    $count = $e + 184 | 0;
    $xpenalty = $e + 170 | 0;
    $weight = $e + 172 | 0;
    $rep_addr_016 = $rep;
    label = 5;
    break;
   case 5:
    $2 = HEAP16[$count >> 1] | 0;
    $count12 = $rep_addr_016 + 184 | 0;
    $3 = HEAP16[$count12 >> 1] | 0;
    $add = $3 + $2 & 65535;
    HEAP16[$count12 >> 1] = $add;
    $4 = HEAP16[$xpenalty >> 1] | 0;
    $xpenalty18 = $rep_addr_016 + 170 | 0;
    $5 = HEAP16[$xpenalty18 >> 1] | 0;
    $add20 = $5 + $4 & 65535;
    HEAP16[$xpenalty18 >> 1] = $add20;
    $6 = +HEAPF32[$weight >> 2];
    $weight24 = $rep_addr_016 + 172 | 0;
    $7 = +HEAPF32[$weight24 >> 2];
    $add25 = $6 + $7;
    HEAPF32[$weight24 >> 2] = $add25;
    $to_virt = $rep_addr_016 + 188 | 0;
    $8 = HEAP32[$to_virt >> 2] | 0;
    $tobool = ($8 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $rep_addr_016 = $8;
      label = 5;
      break;
    }
   case 6:
    return;
  }
}
function _cleanupCloneGraph($g) {
  $g = $g | 0;
  HEAP32[41954] = HEAP32[21464] | 0;
  HEAP32[41914] = HEAP32[21462] | 0;
  HEAP32[41912] = HEAP32[21460] | 0;
  HEAP32[41894] = HEAP32[21458] | 0;
  HEAP32[41918] = HEAP32[21456] | 0;
  HEAP32[41594] = HEAP32[21454] | 0;
  HEAP32[41356] = HEAP32[21452] | 0;
  _dot_cleanup($g);
  _agclose($g);
  return;
}
function _find_fast_edge($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  return _ffe($u, $u + 184 | 0, $v, $v + 176 | 0) | 0;
}
function _find_flat_edge($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  return _ffe($u, $u + 192 | 0, $v, $v + 200 | 0) | 0;
}
function _fast_edge($e) {
  $e = $e | 0;
  var $tail = 0, $0 = 0, $list = 0, $1 = 0, $tobool = 0, $2 = 0, $size = 0, $3 = 0, $add = 0, $mul = 0, $call = 0, $size11 = 0, $4 = 0, $add12 = 0, $mul13 = 0, $call14 = 0, $call_sink = 0, $5 = 0, $6 = 0, $list18 = 0, $7 = 0, $size22 = 0, $8 = 0, $inc = 0, $9 = 0, $list26 = 0, $10 = 0, $arrayidx = 0, $11 = 0, $size30 = 0, $12 = 0, $list34 = 0, $13 = 0, $arrayidx35 = 0, $head = 0, $14 = 0, $list38 = 0, $15 = 0, $tobool39 = 0, $16 = 0, $size48 = 0, $17 = 0, $add49 = 0, $mul50 = 0, $call51 = 0, $size56 = 0, $18 = 0, $add57 = 0, $mul58 = 0, $call59 = 0, $call51_sink = 0, $19 = 0, $20 = 0, $list65 = 0, $21 = 0, $size69 = 0, $22 = 0, $inc70 = 0, $23 = 0, $list74 = 0, $24 = 0, $arrayidx75 = 0, $25 = 0, $size79 = 0, $26 = 0, $list83 = 0, $27 = 0, $arrayidx84 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $list = $0 + 184 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $1;
    $size = $0 + 188 | 0;
    $3 = HEAP32[$size >> 2] | 0;
    $add = $3 << 2;
    $mul = $add + 8 | 0;
    $call = _grealloc($2, $mul) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $size11 = $0 + 188 | 0;
    $4 = HEAP32[$size11 >> 2] | 0;
    $add12 = $4 << 2;
    $mul13 = $add12 + 8 | 0;
    $call14 = _gmalloc($mul13) | 0;
    $call_sink = $call14;
    label = 5;
    break;
   case 5:
    $5 = $call_sink;
    $6 = HEAP32[$tail >> 2] | 0;
    $list18 = $6 + 184 | 0;
    HEAP32[$list18 >> 2] = $5;
    $7 = HEAP32[$tail >> 2] | 0;
    $size22 = $7 + 188 | 0;
    $8 = HEAP32[$size22 >> 2] | 0;
    $inc = $8 + 1 | 0;
    HEAP32[$size22 >> 2] = $inc;
    $9 = HEAP32[$tail >> 2] | 0;
    $list26 = $9 + 184 | 0;
    $10 = HEAP32[$list26 >> 2] | 0;
    $arrayidx = $10 + ($8 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $e;
    $11 = HEAP32[$tail >> 2] | 0;
    $size30 = $11 + 188 | 0;
    $12 = HEAP32[$size30 >> 2] | 0;
    $list34 = $11 + 184 | 0;
    $13 = HEAP32[$list34 >> 2] | 0;
    $arrayidx35 = $13 + ($12 << 2) | 0;
    HEAP32[$arrayidx35 >> 2] = 0;
    $head = $e + 12 | 0;
    $14 = HEAP32[$head >> 2] | 0;
    $list38 = $14 + 176 | 0;
    $15 = HEAP32[$list38 >> 2] | 0;
    $tobool39 = ($15 | 0) == 0;
    if ($tobool39) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $16 = $15;
    $size48 = $14 + 180 | 0;
    $17 = HEAP32[$size48 >> 2] | 0;
    $add49 = $17 << 2;
    $mul50 = $add49 + 8 | 0;
    $call51 = _grealloc($16, $mul50) | 0;
    $call51_sink = $call51;
    label = 8;
    break;
   case 7:
    $size56 = $14 + 180 | 0;
    $18 = HEAP32[$size56 >> 2] | 0;
    $add57 = $18 << 2;
    $mul58 = $add57 + 8 | 0;
    $call59 = _gmalloc($mul58) | 0;
    $call51_sink = $call59;
    label = 8;
    break;
   case 8:
    $19 = $call51_sink;
    $20 = HEAP32[$head >> 2] | 0;
    $list65 = $20 + 176 | 0;
    HEAP32[$list65 >> 2] = $19;
    $21 = HEAP32[$head >> 2] | 0;
    $size69 = $21 + 180 | 0;
    $22 = HEAP32[$size69 >> 2] | 0;
    $inc70 = $22 + 1 | 0;
    HEAP32[$size69 >> 2] = $inc70;
    $23 = HEAP32[$head >> 2] | 0;
    $list74 = $23 + 176 | 0;
    $24 = HEAP32[$list74 >> 2] | 0;
    $arrayidx75 = $24 + ($22 << 2) | 0;
    HEAP32[$arrayidx75 >> 2] = $e;
    $25 = HEAP32[$head >> 2] | 0;
    $size79 = $25 + 180 | 0;
    $26 = HEAP32[$size79 >> 2] | 0;
    $list83 = $25 + 176 | 0;
    $27 = HEAP32[$list83 >> 2] | 0;
    $arrayidx84 = $27 + ($26 << 2) | 0;
    HEAP32[$arrayidx84 >> 2] = 0;
    return $e | 0;
  }
  return 0;
}
function _other_edge($e) {
  $e = $e | 0;
  var $tail = 0, $0 = 0, $list = 0, $1 = 0, $tobool = 0, $2 = 0, $size = 0, $3 = 0, $add = 0, $mul = 0, $call = 0, $size11 = 0, $4 = 0, $add12 = 0, $mul13 = 0, $call14 = 0, $call_sink = 0, $5 = 0, $6 = 0, $list18 = 0, $7 = 0, $size22 = 0, $8 = 0, $inc = 0, $9 = 0, $list26 = 0, $10 = 0, $arrayidx = 0, $11 = 0, $size30 = 0, $12 = 0, $list34 = 0, $13 = 0, $arrayidx35 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $list = $0 + 208 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $1;
    $size = $0 + 212 | 0;
    $3 = HEAP32[$size >> 2] | 0;
    $add = $3 << 2;
    $mul = $add + 8 | 0;
    $call = _grealloc($2, $mul) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $size11 = $0 + 212 | 0;
    $4 = HEAP32[$size11 >> 2] | 0;
    $add12 = $4 << 2;
    $mul13 = $add12 + 8 | 0;
    $call14 = _gmalloc($mul13) | 0;
    $call_sink = $call14;
    label = 5;
    break;
   case 5:
    $5 = $call_sink;
    $6 = HEAP32[$tail >> 2] | 0;
    $list18 = $6 + 208 | 0;
    HEAP32[$list18 >> 2] = $5;
    $7 = HEAP32[$tail >> 2] | 0;
    $size22 = $7 + 212 | 0;
    $8 = HEAP32[$size22 >> 2] | 0;
    $inc = $8 + 1 | 0;
    HEAP32[$size22 >> 2] = $inc;
    $9 = HEAP32[$tail >> 2] | 0;
    $list26 = $9 + 208 | 0;
    $10 = HEAP32[$list26 >> 2] | 0;
    $arrayidx = $10 + ($8 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $e;
    $11 = HEAP32[$tail >> 2] | 0;
    $size30 = $11 + 212 | 0;
    $12 = HEAP32[$size30 >> 2] | 0;
    $list34 = $11 + 208 | 0;
    $13 = HEAP32[$list34 >> 2] | 0;
    $arrayidx35 = $13 + ($12 << 2) | 0;
    HEAP32[$arrayidx35 >> 2] = 0;
    return;
  }
}
function _safe_other_edge($e) {
  $e = $e | 0;
  _safe_list_append($e, (HEAP32[$e + 16 >> 2] | 0) + 208 | 0);
  return;
}
function _safe_list_append($e, $L) {
  $e = $e | 0;
  $L = $L | 0;
  var $size = 0, $0 = 0, $list = 0, $1 = 0, $i_0 = 0, $cmp = 0, $arrayidx = 0, $2 = 0, $cmp1 = 0, $inc = 0, $tobool = 0, $3 = 0, $add = 0, $mul = 0, $call = 0, $add6 = 0, $mul7 = 0, $call8 = 0, $call_sink = 0, $4 = 0, $5 = 0, $inc11 = 0, $6 = 0, $arrayidx13 = 0, $7 = 0, $8 = 0, $arrayidx16 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $L + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $list = $L | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $i_0 = 0;
    label = 3;
    break;
   case 3:
    $cmp = ($i_0 | 0) < ($0 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $arrayidx = $1 + ($i_0 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $cmp1 = ($2 | 0) == ($e | 0);
    $inc = $i_0 + 1 | 0;
    if ($cmp1) {
      label = 9;
      break;
    } else {
      $i_0 = $inc;
      label = 3;
      break;
    }
   case 5:
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = $1;
    $add = $0 << 2;
    $mul = $add + 8 | 0;
    $call = _grealloc($3, $mul) | 0;
    $call_sink = $call;
    label = 8;
    break;
   case 7:
    $add6 = $0 << 2;
    $mul7 = $add6 + 8 | 0;
    $call8 = _gmalloc($mul7) | 0;
    $call_sink = $call8;
    label = 8;
    break;
   case 8:
    $4 = $call_sink;
    HEAP32[$list >> 2] = $4;
    $5 = HEAP32[$size >> 2] | 0;
    $inc11 = $5 + 1 | 0;
    HEAP32[$size >> 2] = $inc11;
    $6 = HEAP32[$list >> 2] | 0;
    $arrayidx13 = $6 + ($5 << 2) | 0;
    HEAP32[$arrayidx13 >> 2] = $e;
    $7 = HEAP32[$size >> 2] | 0;
    $8 = HEAP32[$list >> 2] | 0;
    $arrayidx16 = $8 + ($7 << 2) | 0;
    HEAP32[$arrayidx16 >> 2] = 0;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _new_virtual_edge($u, $v, $orig) {
  $u = $u | 0;
  $v = $v | 0;
  $orig = $orig | 0;
  var $call = 0, $0 = 0, $tail = 0, $1 = 0, $head = 0, $2 = 0, $3 = 0, $tobool = 0, $id = 0, $4 = 0, $id2 = 0, $5 = 0, $count = 0, $6 = 0, $count5 = 0, $7 = 0, $xpenalty = 0, $8 = 0, $xpenalty8 = 0, $9 = 0, $weight = 0, $10 = 0.0, $weight11 = 0, $11 = 0, $minlen = 0, $12 = 0, $minlen14 = 0, $13 = 0, $14 = 0, $tail16 = 0, $15 = 0, $cmp = 0, $tail_port = 0, $tail_port20 = 0, $16 = 0, $head22 = 0, $17 = 0, $cmp23 = 0, $tail_port26 = 0, $head_port = 0, $18 = 0, $19 = 0, $head30 = 0, $20 = 0, $cmp31 = 0, $head_port34 = 0, $head_port36 = 0, $21 = 0, $22 = 0, $cmp40 = 0, $head_port43 = 0, $tail_port45 = 0, $23 = 0, $to_virt = 0, $24 = 0, $cmp49 = 0, $to_orig = 0, $25 = 0, $weight57 = 0, $26 = 0, $xpenalty59 = 0, $27 = 0, $count61 = 0, $28 = 0, $minlen63 = 0, $29 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(192) | 0;
    $0 = $call;
    $tail = $call + 16 | 0;
    $1 = $tail;
    HEAP32[$1 >> 2] = $u;
    $head = $call + 12 | 0;
    $2 = $head;
    HEAP32[$2 >> 2] = $v;
    $3 = $call + 128 | 0;
    HEAP8[$3] = 1;
    $tobool = ($orig | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $id = $orig + 20 | 0;
    $4 = HEAP32[$id >> 2] | 0;
    $id2 = $call + 20 | 0;
    $5 = $id2;
    HEAP32[$5 >> 2] = $4;
    $count = $orig + 184 | 0;
    $6 = HEAP16[$count >> 1] | 0;
    $count5 = $call + 184 | 0;
    $7 = $count5;
    HEAP16[$7 >> 1] = $6;
    $xpenalty = $orig + 170 | 0;
    $8 = HEAP16[$xpenalty >> 1] | 0;
    $xpenalty8 = $call + 170 | 0;
    $9 = $xpenalty8;
    HEAP16[$9 >> 1] = $8;
    $weight = $orig + 172 | 0;
    $10 = +HEAPF32[$weight >> 2];
    $weight11 = $call + 172 | 0;
    $11 = $weight11;
    HEAPF32[$11 >> 2] = $10;
    $minlen = $orig + 186 | 0;
    $12 = HEAP16[$minlen >> 1] | 0;
    $minlen14 = $call + 186 | 0;
    $13 = $minlen14;
    HEAP16[$13 >> 1] = $12;
    $14 = HEAP32[$1 >> 2] | 0;
    $tail16 = $orig + 16 | 0;
    $15 = HEAP32[$tail16 >> 2] | 0;
    $cmp = ($14 | 0) == ($15 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $tail_port = $call + 32 | 0;
    $tail_port20 = $orig + 32 | 0;
    $16 = $tail_port20;
    HEAP32[$tail_port >> 2] = HEAP32[$16 >> 2] | 0;
    HEAP32[$tail_port + 4 >> 2] = HEAP32[$16 + 4 >> 2] | 0;
    HEAP32[$tail_port + 8 >> 2] = HEAP32[$16 + 8 >> 2] | 0;
    HEAP32[$tail_port + 12 >> 2] = HEAP32[$16 + 12 >> 2] | 0;
    HEAP32[$tail_port + 16 >> 2] = HEAP32[$16 + 16 >> 2] | 0;
    HEAP32[$tail_port + 20 >> 2] = HEAP32[$16 + 20 >> 2] | 0;
    HEAP32[$tail_port + 24 >> 2] = HEAP32[$16 + 24 >> 2] | 0;
    HEAP32[$tail_port + 28 >> 2] = HEAP32[$16 + 28 >> 2] | 0;
    HEAP32[$tail_port + 32 >> 2] = HEAP32[$16 + 32 >> 2] | 0;
    HEAP32[$tail_port + 36 >> 2] = HEAP32[$16 + 36 >> 2] | 0;
    label = 7;
    break;
   case 5:
    $head22 = $orig + 12 | 0;
    $17 = HEAP32[$head22 >> 2] | 0;
    $cmp23 = ($14 | 0) == ($17 | 0);
    if ($cmp23) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $tail_port26 = $call + 32 | 0;
    $head_port = $orig + 72 | 0;
    $18 = $head_port;
    HEAP32[$tail_port26 >> 2] = HEAP32[$18 >> 2] | 0;
    HEAP32[$tail_port26 + 4 >> 2] = HEAP32[$18 + 4 >> 2] | 0;
    HEAP32[$tail_port26 + 8 >> 2] = HEAP32[$18 + 8 >> 2] | 0;
    HEAP32[$tail_port26 + 12 >> 2] = HEAP32[$18 + 12 >> 2] | 0;
    HEAP32[$tail_port26 + 16 >> 2] = HEAP32[$18 + 16 >> 2] | 0;
    HEAP32[$tail_port26 + 20 >> 2] = HEAP32[$18 + 20 >> 2] | 0;
    HEAP32[$tail_port26 + 24 >> 2] = HEAP32[$18 + 24 >> 2] | 0;
    HEAP32[$tail_port26 + 28 >> 2] = HEAP32[$18 + 28 >> 2] | 0;
    HEAP32[$tail_port26 + 32 >> 2] = HEAP32[$18 + 32 >> 2] | 0;
    HEAP32[$tail_port26 + 36 >> 2] = HEAP32[$18 + 36 >> 2] | 0;
    label = 7;
    break;
   case 7:
    $19 = HEAP32[$2 >> 2] | 0;
    $head30 = $orig + 12 | 0;
    $20 = HEAP32[$head30 >> 2] | 0;
    $cmp31 = ($19 | 0) == ($20 | 0);
    if ($cmp31) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $head_port34 = $call + 72 | 0;
    $head_port36 = $orig + 72 | 0;
    $21 = $head_port36;
    HEAP32[$head_port34 >> 2] = HEAP32[$21 >> 2] | 0;
    HEAP32[$head_port34 + 4 >> 2] = HEAP32[$21 + 4 >> 2] | 0;
    HEAP32[$head_port34 + 8 >> 2] = HEAP32[$21 + 8 >> 2] | 0;
    HEAP32[$head_port34 + 12 >> 2] = HEAP32[$21 + 12 >> 2] | 0;
    HEAP32[$head_port34 + 16 >> 2] = HEAP32[$21 + 16 >> 2] | 0;
    HEAP32[$head_port34 + 20 >> 2] = HEAP32[$21 + 20 >> 2] | 0;
    HEAP32[$head_port34 + 24 >> 2] = HEAP32[$21 + 24 >> 2] | 0;
    HEAP32[$head_port34 + 28 >> 2] = HEAP32[$21 + 28 >> 2] | 0;
    HEAP32[$head_port34 + 32 >> 2] = HEAP32[$21 + 32 >> 2] | 0;
    HEAP32[$head_port34 + 36 >> 2] = HEAP32[$21 + 36 >> 2] | 0;
    label = 11;
    break;
   case 9:
    $22 = HEAP32[$tail16 >> 2] | 0;
    $cmp40 = ($19 | 0) == ($22 | 0);
    if ($cmp40) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $head_port43 = $call + 72 | 0;
    $tail_port45 = $orig + 32 | 0;
    $23 = $tail_port45;
    HEAP32[$head_port43 >> 2] = HEAP32[$23 >> 2] | 0;
    HEAP32[$head_port43 + 4 >> 2] = HEAP32[$23 + 4 >> 2] | 0;
    HEAP32[$head_port43 + 8 >> 2] = HEAP32[$23 + 8 >> 2] | 0;
    HEAP32[$head_port43 + 12 >> 2] = HEAP32[$23 + 12 >> 2] | 0;
    HEAP32[$head_port43 + 16 >> 2] = HEAP32[$23 + 16 >> 2] | 0;
    HEAP32[$head_port43 + 20 >> 2] = HEAP32[$23 + 20 >> 2] | 0;
    HEAP32[$head_port43 + 24 >> 2] = HEAP32[$23 + 24 >> 2] | 0;
    HEAP32[$head_port43 + 28 >> 2] = HEAP32[$23 + 28 >> 2] | 0;
    HEAP32[$head_port43 + 32 >> 2] = HEAP32[$23 + 32 >> 2] | 0;
    HEAP32[$head_port43 + 36 >> 2] = HEAP32[$23 + 36 >> 2] | 0;
    label = 11;
    break;
   case 11:
    $to_virt = $orig + 188 | 0;
    $24 = HEAP32[$to_virt >> 2] | 0;
    $cmp49 = ($24 | 0) == 0;
    if ($cmp49) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAP32[$to_virt >> 2] = $0;
    label = 13;
    break;
   case 13:
    $to_orig = $call + 132 | 0;
    $25 = $to_orig;
    HEAP32[$25 >> 2] = $orig;
    label = 15;
    break;
   case 14:
    $weight57 = $call + 172 | 0;
    $26 = $weight57;
    HEAPF32[$26 >> 2] = 1.0;
    $xpenalty59 = $call + 170 | 0;
    $27 = $xpenalty59;
    HEAP16[$27 >> 1] = 1;
    $count61 = $call + 184 | 0;
    $28 = $count61;
    HEAP16[$28 >> 1] = 1;
    $minlen63 = $call + 186 | 0;
    $29 = $minlen63;
    HEAP16[$29 >> 1] = 1;
    label = 15;
    break;
   case 15:
    return $0 | 0;
  }
  return 0;
}
function _virtual_edge($u, $v, $orig) {
  $u = $u | 0;
  $v = $v | 0;
  $orig = $orig | 0;
  return _fast_edge(_new_virtual_edge($u, $v, $orig) | 0) | 0;
}
function _virtual_node($g) {
  $g = $g | 0;
  var $call = 0, $0 = 0, $n_nodes = 0;
  $call = _zmalloc(304) | 0;
  $0 = $call;
  HEAP32[$call + 12 >> 2] = 102808;
  HEAP32[$call + 20 >> 2] = $g;
  HEAP8[$call + 162 | 0] = 1;
  HEAPF64[$call + 112 >> 3] = 1.0;
  HEAPF64[$call + 104 >> 3] = 1.0;
  HEAPF64[$call + 96 >> 3] = 1.0;
  HEAP32[$call + 220 >> 2] = 1;
  HEAP32[$call + 180 >> 2] = 0;
  HEAP32[$call + 176 >> 2] = _zmalloc(20) | 0;
  HEAP32[$call + 188 >> 2] = 0;
  HEAP32[$call + 184 >> 2] = _zmalloc(20) | 0;
  _fast_node($g, $0);
  $n_nodes = $g + 244 | 0;
  HEAP32[$n_nodes >> 2] = (HEAP32[$n_nodes >> 2] | 0) + 1 | 0;
  return $0 | 0;
}
function _flat_edge($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $tail = 0, $0 = 0, $list = 0, $1 = 0, $tobool = 0, $2 = 0, $size = 0, $3 = 0, $add = 0, $mul = 0, $call = 0, $size11 = 0, $4 = 0, $add12 = 0, $mul13 = 0, $call14 = 0, $call_sink = 0, $5 = 0, $6 = 0, $list18 = 0, $7 = 0, $size22 = 0, $8 = 0, $inc = 0, $9 = 0, $list26 = 0, $10 = 0, $arrayidx = 0, $11 = 0, $size30 = 0, $12 = 0, $list34 = 0, $13 = 0, $arrayidx35 = 0, $head = 0, $14 = 0, $list38 = 0, $15 = 0, $tobool39 = 0, $16 = 0, $size48 = 0, $17 = 0, $add49 = 0, $mul50 = 0, $call51 = 0, $size56 = 0, $18 = 0, $add57 = 0, $mul58 = 0, $call59 = 0, $call51_sink = 0, $19 = 0, $20 = 0, $list65 = 0, $21 = 0, $size69 = 0, $22 = 0, $inc70 = 0, $23 = 0, $list74 = 0, $24 = 0, $arrayidx75 = 0, $25 = 0, $size79 = 0, $26 = 0, $list83 = 0, $27 = 0, $arrayidx84 = 0, $has_flat_edges = 0, $root = 0, $28 = 0, $has_flat_edges88 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $list = $0 + 192 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $1;
    $size = $0 + 196 | 0;
    $3 = HEAP32[$size >> 2] | 0;
    $add = $3 << 2;
    $mul = $add + 8 | 0;
    $call = _grealloc($2, $mul) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $size11 = $0 + 196 | 0;
    $4 = HEAP32[$size11 >> 2] | 0;
    $add12 = $4 << 2;
    $mul13 = $add12 + 8 | 0;
    $call14 = _gmalloc($mul13) | 0;
    $call_sink = $call14;
    label = 5;
    break;
   case 5:
    $5 = $call_sink;
    $6 = HEAP32[$tail >> 2] | 0;
    $list18 = $6 + 192 | 0;
    HEAP32[$list18 >> 2] = $5;
    $7 = HEAP32[$tail >> 2] | 0;
    $size22 = $7 + 196 | 0;
    $8 = HEAP32[$size22 >> 2] | 0;
    $inc = $8 + 1 | 0;
    HEAP32[$size22 >> 2] = $inc;
    $9 = HEAP32[$tail >> 2] | 0;
    $list26 = $9 + 192 | 0;
    $10 = HEAP32[$list26 >> 2] | 0;
    $arrayidx = $10 + ($8 << 2) | 0;
    HEAP32[$arrayidx >> 2] = $e;
    $11 = HEAP32[$tail >> 2] | 0;
    $size30 = $11 + 196 | 0;
    $12 = HEAP32[$size30 >> 2] | 0;
    $list34 = $11 + 192 | 0;
    $13 = HEAP32[$list34 >> 2] | 0;
    $arrayidx35 = $13 + ($12 << 2) | 0;
    HEAP32[$arrayidx35 >> 2] = 0;
    $head = $e + 12 | 0;
    $14 = HEAP32[$head >> 2] | 0;
    $list38 = $14 + 200 | 0;
    $15 = HEAP32[$list38 >> 2] | 0;
    $tobool39 = ($15 | 0) == 0;
    if ($tobool39) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $16 = $15;
    $size48 = $14 + 204 | 0;
    $17 = HEAP32[$size48 >> 2] | 0;
    $add49 = $17 << 2;
    $mul50 = $add49 + 8 | 0;
    $call51 = _grealloc($16, $mul50) | 0;
    $call51_sink = $call51;
    label = 8;
    break;
   case 7:
    $size56 = $14 + 204 | 0;
    $18 = HEAP32[$size56 >> 2] | 0;
    $add57 = $18 << 2;
    $mul58 = $add57 + 8 | 0;
    $call59 = _gmalloc($mul58) | 0;
    $call51_sink = $call59;
    label = 8;
    break;
   case 8:
    $19 = $call51_sink;
    $20 = HEAP32[$head >> 2] | 0;
    $list65 = $20 + 200 | 0;
    HEAP32[$list65 >> 2] = $19;
    $21 = HEAP32[$head >> 2] | 0;
    $size69 = $21 + 204 | 0;
    $22 = HEAP32[$size69 >> 2] | 0;
    $inc70 = $22 + 1 | 0;
    HEAP32[$size69 >> 2] = $inc70;
    $23 = HEAP32[$head >> 2] | 0;
    $list74 = $23 + 200 | 0;
    $24 = HEAP32[$list74 >> 2] | 0;
    $arrayidx75 = $24 + ($22 << 2) | 0;
    HEAP32[$arrayidx75 >> 2] = $e;
    $25 = HEAP32[$head >> 2] | 0;
    $size79 = $25 + 204 | 0;
    $26 = HEAP32[$size79 >> 2] | 0;
    $list83 = $25 + 200 | 0;
    $27 = HEAP32[$list83 >> 2] | 0;
    $arrayidx84 = $27 + ($26 << 2) | 0;
    HEAP32[$arrayidx84 >> 2] = 0;
    $has_flat_edges = $g + 252 | 0;
    HEAP8[$has_flat_edges] = 1;
    $root = $g + 32 | 0;
    $28 = HEAP32[$root >> 2] | 0;
    $has_flat_edges88 = $28 + 252 | 0;
    HEAP8[$has_flat_edges88] = 1;
    return;
  }
}
function _delete_fast_edge($e) {
  $e = $e | 0;
  var $cmp = 0, $tail = 0, $0 = 0, $out = 0, $head = 0, $1 = 0, $in = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($e | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(110136, 117, 164416, 147040);
   case 4:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $out = $0 + 184 | 0;
    _zapinlist($out, $e);
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $in = $1 + 176 | 0;
    _zapinlist($in, $e);
    return;
  }
}
function _fast_node($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $nlist = 0, $0 = 0, $next = 0, $tobool = 0, $prev = 0, $prev10 = 0, $1 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $0 = HEAP32[$nlist >> 2] | 0;
    $next = $n + 168 | 0;
    HEAP32[$next >> 2] = $0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $prev = $0 + 172 | 0;
    HEAP32[$prev >> 2] = $n;
    label = 4;
    break;
   case 4:
    HEAP32[$nlist >> 2] = $n;
    $prev10 = $n + 172 | 0;
    HEAP32[$prev10 >> 2] = 0;
    $1 = HEAP32[$next >> 2] | 0;
    $cmp = ($1 | 0) == ($n | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(110136, 215, 164312, 122080);
   case 6:
    return;
  }
}
function _fast_nodeapp($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  var $cmp = 0, $next = 0, $0 = 0, $cmp2 = 0, $next7 = 0, $1 = 0, $2 = 0, $tobool = 0, $prev = 0, $prev16 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($u | 0) == ($v | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(110136, 220, 164296, 116120);
   case 4:
    $next = $v + 168 | 0;
    $0 = HEAP32[$next >> 2] | 0;
    $cmp2 = ($0 | 0) == 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    ___assert_func(110136, 221, 164296, 111008);
   case 6:
    $next7 = $u + 168 | 0;
    $1 = HEAP32[$next7 >> 2] | 0;
    HEAP32[$next >> 2] = $1;
    $2 = HEAP32[$next7 >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $prev = $2 + 172 | 0;
    HEAP32[$prev >> 2] = $v;
    label = 8;
    break;
   case 8:
    $prev16 = $v + 172 | 0;
    HEAP32[$prev16 >> 2] = $u;
    HEAP32[$next7 >> 2] = $v;
    return;
  }
}
function _delete_fast_node($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $call = 0, $tobool = 0, $next = 0, $0 = 0, $tobool1 = 0, $prev = 0, $1 = 0, $prev6 = 0, $prev8 = 0, $2 = 0, $tobool9 = 0, $3 = 0, $next16 = 0, $nlist = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _find_fast_node($g, $n) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(110136, 231, 164392, 106800);
   case 4:
    $next = $n + 168 | 0;
    $0 = HEAP32[$next >> 2] | 0;
    $tobool1 = ($0 | 0) == 0;
    if ($tobool1) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $prev = $n + 172 | 0;
    $1 = HEAP32[$prev >> 2] | 0;
    $prev6 = $0 + 172 | 0;
    HEAP32[$prev6 >> 2] = $1;
    label = 6;
    break;
   case 6:
    $prev8 = $n + 172 | 0;
    $2 = HEAP32[$prev8 >> 2] | 0;
    $tobool9 = ($2 | 0) == 0;
    $3 = HEAP32[$next >> 2] | 0;
    if ($tobool9) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $next16 = $2 + 168 | 0;
    HEAP32[$next16 >> 2] = $3;
    label = 9;
    break;
   case 8:
    $nlist = $g + 220 | 0;
    HEAP32[$nlist >> 2] = $3;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _delete_flat_edge($e) {
  $e = $e | 0;
  var $cmp = 0, $to_orig = 0, $0 = 0, $tobool = 0, $to_virt = 0, $1 = 0, $cmp4 = 0, $tail = 0, $2 = 0, $flat_out = 0, $head = 0, $3 = 0, $flat_in = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($e | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(110136, 272, 164368, 147040);
   case 4:
    $to_orig = $e + 132 | 0;
    $0 = HEAP32[$to_orig >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $to_virt = $0 + 188 | 0;
    $1 = HEAP32[$to_virt >> 2] | 0;
    $cmp4 = ($1 | 0) == ($e | 0);
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP32[$to_virt >> 2] = 0;
    label = 7;
    break;
   case 7:
    $tail = $e + 16 | 0;
    $2 = HEAP32[$tail >> 2] | 0;
    $flat_out = $2 + 192 | 0;
    _zapinlist($flat_out, $e);
    $head = $e + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $flat_in = $3 + 200 | 0;
    _zapinlist($flat_in, $e);
    return;
  }
}
function _merge_oneway($e, $rep) {
  $e = $e | 0;
  $rep = $rep | 0;
  var $to_virt = 0, $0 = 0, $cmp = 0, $call = 0, $cmp3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $to_virt = $e + 188 | 0;
    $0 = HEAP32[$to_virt >> 2] | 0;
    $cmp = ($0 | 0) == ($rep | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _agerr(0, 98512, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    label = 7;
    break;
   case 4:
    $cmp3 = ($0 | 0) == 0;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    ___assert_func(110136, 343, 164016, 94648);
   case 6:
    HEAP32[$to_virt >> 2] = $rep;
    _basic_merge($e, $rep);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _unrep($rep, $e) {
  $rep = $rep | 0;
  $e = $e | 0;
  var $count2 = 0, $xpenalty8 = 0, $weight14 = 0;
  $count2 = $rep + 184 | 0;
  HEAP16[$count2 >> 1] = (HEAP16[$count2 >> 1] | 0) - (HEAP16[$e + 184 >> 1] | 0) & 65535;
  $xpenalty8 = $rep + 170 | 0;
  HEAP16[$xpenalty8 >> 1] = (HEAP16[$xpenalty8 >> 1] | 0) - (HEAP16[$e + 170 >> 1] | 0) & 65535;
  $weight14 = $rep + 172 | 0;
  HEAPF32[$weight14 >> 2] = +HEAPF32[$weight14 >> 2] - +HEAPF32[$e + 172 >> 2];
  return;
}
function _flatAdjacent($e) {
  $e = $e | 0;
  var $tail = 0, $0 = 0, $head = 0, $1 = 0, $order = 0, $2 = 0, $order2 = 0, $3 = 0, $cmp = 0, $_ = 0, $_14 = 0, $rank12 = 0, $4 = 0, $graph = 0, $5 = 0, $rank14 = 0, $6 = 0, $v = 0, $i_0_in = 0, $i_0 = 0, $cmp15 = 0, $7 = 0, $arrayidx16 = 0, $8 = 0, $node_type = 0, $9 = 0, $cmp18 = 0, $label = 0, $10 = 0, $tobool = 0, $_pr = 0, $11 = 0, $cmp24 = 0, $cmp28 = 0, $conv29 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $head = $e + 12 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $order = $0 + 240 | 0;
    $2 = HEAP32[$order >> 2] | 0;
    $order2 = $1 + 240 | 0;
    $3 = HEAP32[$order2 >> 2] | 0;
    $cmp = ($2 | 0) < ($3 | 0);
    $_ = $cmp ? $3 : $2;
    $_14 = $cmp ? $2 : $3;
    $rank12 = $0 + 236 | 0;
    $4 = HEAP32[$rank12 >> 2] | 0;
    $graph = $0 + 20 | 0;
    $5 = HEAP32[$graph >> 2] | 0;
    $rank14 = $5 + 224 | 0;
    $6 = HEAP32[$rank14 >> 2] | 0;
    $v = $6 + ($4 * 44 & -1) + 4 | 0;
    $i_0_in = $_14;
    label = 3;
    break;
   case 3:
    $i_0 = $i_0_in + 1 | 0;
    $cmp15 = ($i_0 | 0) < ($_ | 0);
    if ($cmp15) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $7 = HEAP32[$v >> 2] | 0;
    $arrayidx16 = $7 + ($i_0 << 2) | 0;
    $8 = HEAP32[$arrayidx16 >> 2] | 0;
    $node_type = $8 + 162 | 0;
    $9 = HEAP8[$node_type] | 0;
    $cmp18 = $9 << 24 >> 24 == 1;
    if ($cmp18) {
      label = 5;
      break;
    } else {
      $11 = $9;
      label = 7;
      break;
    }
   case 5:
    $label = $8 + 120 | 0;
    $10 = HEAP32[$label >> 2] | 0;
    $tobool = ($10 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $_pr = HEAP8[$node_type] | 0;
    $11 = $_pr;
    label = 7;
    break;
   case 7:
    $cmp24 = $11 << 24 >> 24 == 0;
    if ($cmp24) {
      label = 8;
      break;
    } else {
      $i_0_in = $i_0;
      label = 3;
      break;
    }
   case 8:
    $cmp28 = ($i_0 | 0) == ($_ | 0);
    $conv29 = $cmp28 & 1;
    return $conv29 | 0;
  }
  return 0;
}
function _findlr($u, $v, $lp, $rp) {
  $u = $u | 0;
  $v = $v | 0;
  $lp = $lp | 0;
  $rp = $rp | 0;
  var $0 = 0, $1 = 0, $cmp = 0;
  $0 = HEAP32[$u + 240 >> 2] | 0;
  $1 = HEAP32[$v + 240 >> 2] | 0;
  $cmp = ($0 | 0) > ($1 | 0);
  HEAP32[$lp >> 2] = $cmp ? $1 : $0;
  HEAP32[$rp >> 2] = $cmp ? $0 : $1;
  return;
}
function _unmerge_oneway($e) {
  $e = $e | 0;
  var $to_virt = 0, $0 = 0, $tobool17 = 0, $tobool = 0, $rep_018 = 0, $to_virt2 = 0, $1 = 0, $count = 0, $2 = 0, $cmp = 0, $edge_type14 = 0, $3 = 0, $cmp715 = 0, $rep_116 = 0, $head = 0, $4 = 0, $node_type = 0, $5 = 0, $cmp11 = 0, $size = 0, $6 = 0, $cmp15 = 0, $list = 0, $7 = 0, $8 = 0, $edge_type = 0, $9 = 0, $cmp7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $to_virt = $e + 188 | 0;
    $0 = HEAP32[$to_virt >> 2] | 0;
    $tobool17 = ($0 | 0) == 0;
    if ($tobool17) {
      label = 10;
      break;
    } else {
      $rep_018 = $0;
      label = 4;
      break;
    }
   case 3:
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      $rep_018 = $1;
      label = 4;
      break;
    }
   case 4:
    _unrep($rep_018, $e);
    $to_virt2 = $rep_018 + 188 | 0;
    $1 = HEAP32[$to_virt2 >> 2] | 0;
    $count = $rep_018 + 184 | 0;
    $2 = HEAP16[$count >> 1] | 0;
    $cmp = $2 << 16 >> 16 == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _safe_delete_fast_edge($rep_018);
    label = 6;
    break;
   case 6:
    $edge_type14 = $rep_018 + 128 | 0;
    $3 = HEAP8[$edge_type14] | 0;
    $cmp715 = $3 << 24 >> 24 == 1;
    if ($cmp715) {
      $rep_116 = $rep_018;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 7:
    $head = $rep_116 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $node_type = $4 + 162 | 0;
    $5 = HEAP8[$node_type] | 0;
    $cmp11 = $5 << 24 >> 24 == 1;
    if ($cmp11) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 8:
    $size = $4 + 188 | 0;
    $6 = HEAP32[$size >> 2] | 0;
    $cmp15 = ($6 | 0) == 1;
    if ($cmp15) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 9:
    $list = $4 + 184 | 0;
    $7 = HEAP32[$list >> 2] | 0;
    $8 = HEAP32[$7 >> 2] | 0;
    _unrep($8, $e);
    $edge_type = $8 + 128 | 0;
    $9 = HEAP8[$edge_type] | 0;
    $cmp7 = $9 << 24 >> 24 == 1;
    if ($cmp7) {
      $rep_116 = $8;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 10:
    HEAP32[$to_virt >> 2] = 0;
    return;
  }
}
function _flat_edges($g) {
  $g = $g | 0;
  var $nlist = 0, $n_078 = 0, $tobool79 = 0, $n_080 = 0, $list = 0, $0 = 0, $tobool2 = 0, $1 = 0, $2 = 0, $tobool776 = 0, $3 = 0, $j_077 = 0, $call = 0, $tobool9 = 0, $adjacent = 0, $inc = 0, $4 = 0, $arrayidx = 0, $5 = 0, $tobool7 = 0, $next = 0, $n_0 = 0, $tobool = 0, $rank = 0, $6 = 0, $flat = 0, $7 = 0, $tobool18 = 0, $n_cluster = 0, $8 = 0, $cmp = 0, $9 = 0, $v72 = 0, $10 = 0, $11 = 0, $tobool2673 = 0, $12 = 0, $i_074 = 0, $list30 = 0, $13 = 0, $14 = 0, $tobool3270 = 0, $15 = 0, $j_171 = 0, $label = 0, $16 = 0, $tobool35 = 0, $adjacent37 = 0, $17 = 0, $tobool38 = 0, $inc42 = 0, $18 = 0, $arrayidx31 = 0, $19 = 0, $tobool32 = 0, $inc48 = 0, $20 = 0, $v = 0, $21 = 0, $arrayidx25 = 0, $22 = 0, $tobool26 = 0, $n_163 = 0, $tobool5464 = 0, $rankdir132 = 0, $rankdir = 0, $n_166 = 0, $reset_065 = 0, $list58 = 0, $23 = 0, $tobool59 = 0, $24 = 0, $25 = 0, $tobool6656 = 0, $26 = 0, $reset_158 = 0, $i_157 = 0, $label69 = 0, $27 = 0, $tobool70 = 0, $adjacent73 = 0, $28 = 0, $tobool74 = 0, $29 = 0, $and77 = 0, $tobool78 = 0, $y = 0, $30 = 0.0, $dist = 0, $x = 0, $31 = 0.0, $dist87 = 0, $reset_2 = 0, $inc93 = 0, $32 = 0, $arrayidx65 = 0, $33 = 0, $tobool66 = 0, $reset_1_lcssa = 0, $size = 0, $34 = 0, $cmp9759 = 0, $list101 = 0, $reset_361 = 0, $j_260 = 0, $35 = 0, $arrayidx102 = 0, $36 = 0, $tail = 0, $37 = 0, $rank104 = 0, $38 = 0, $head = 0, $39 = 0, $rank106 = 0, $40 = 0, $cmp107 = 0, $cmp112 = 0, $or_cond = 0, $le_0 = 0, $to_virt = 0, $41 = 0, $tobool116 = 0, $adjacent120 = 0, $42 = 0, $adjacent122 = 0, $label124 = 0, $43 = 0, $tobool125 = 0, $tobool129 = 0, $44 = 0, $and134 = 0, $tobool135 = 0, $y140 = 0, $x145 = 0, $lw_0_in = 0, $lw_0 = 0.0, $dist148 = 0, $45 = 0.0, $cmp149 = 0, $lw_0_ = 0.0, $reset_4 = 0, $inc158 = 0, $46 = 0, $cmp97 = 0, $reset_5 = 0, $next163 = 0, $n_1 = 0, $tobool54 = 0, $tobool165 = 0, $reset_0_lcssa82 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_078 = HEAP32[$nlist >> 2] | 0;
    $tobool79 = ($n_078 | 0) == 0;
    if ($tobool79) {
      label = 9;
      break;
    } else {
      $n_080 = $n_078;
      label = 3;
      break;
    }
   case 3:
    $list = $n_080 + 192 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool776 = ($2 | 0) == 0;
    if ($tobool776) {
      label = 8;
      break;
    } else {
      $j_077 = 0;
      $3 = $2;
      label = 5;
      break;
    }
   case 5:
    $call = _flatAdjacent($3) | 0;
    $tobool9 = ($call | 0) == 0;
    if ($tobool9) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $adjacent = $3 + 129 | 0;
    HEAP8[$adjacent] = 1;
    label = 7;
    break;
   case 7:
    $inc = $j_077 + 1 | 0;
    $4 = HEAP32[$list >> 2] | 0;
    $arrayidx = $4 + ($inc << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $tobool7 = ($5 | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      $j_077 = $inc;
      $3 = $5;
      label = 5;
      break;
    }
   case 8:
    $next = $n_080 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $n_080 = $n_0;
      label = 3;
      break;
    }
   case 9:
    $rank = $g + 224 | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $flat = $6 + 40 | 0;
    $7 = HEAP32[$flat >> 2] | 0;
    $tobool18 = ($7 | 0) == 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $n_cluster = $g + 212 | 0;
    $8 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($8 | 0) > 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 18;
      break;
    }
   case 11:
    $9 = HEAP32[$rank >> 2] | 0;
    $v72 = $9 + 4 | 0;
    $10 = HEAP32[$v72 >> 2] | 0;
    $11 = HEAP32[$10 >> 2] | 0;
    $tobool2673 = ($11 | 0) == 0;
    if ($tobool2673) {
      label = 18;
      break;
    } else {
      $i_074 = 0;
      $12 = $11;
      label = 12;
      break;
    }
   case 12:
    $list30 = $12 + 200 | 0;
    $13 = HEAP32[$list30 >> 2] | 0;
    $14 = HEAP32[$13 >> 2] | 0;
    $tobool3270 = ($14 | 0) == 0;
    if ($tobool3270) {
      label = 17;
      break;
    } else {
      $j_171 = 0;
      $15 = $14;
      label = 13;
      break;
    }
   case 13:
    $label = $15 + 112 | 0;
    $16 = HEAP32[$label >> 2] | 0;
    $tobool35 = ($16 | 0) == 0;
    if ($tobool35) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $adjacent37 = $15 + 129 | 0;
    $17 = HEAP8[$adjacent37] | 0;
    $tobool38 = $17 << 24 >> 24 == 0;
    if ($tobool38) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    _abomination($g);
    label = 18;
    break;
   case 16:
    $inc42 = $j_171 + 1 | 0;
    $18 = HEAP32[$list30 >> 2] | 0;
    $arrayidx31 = $18 + ($inc42 << 2) | 0;
    $19 = HEAP32[$arrayidx31 >> 2] | 0;
    $tobool32 = ($19 | 0) == 0;
    if ($tobool32) {
      label = 17;
      break;
    } else {
      $j_171 = $inc42;
      $15 = $19;
      label = 13;
      break;
    }
   case 17:
    $inc48 = $i_074 + 1 | 0;
    $20 = HEAP32[$rank >> 2] | 0;
    $v = $20 + 4 | 0;
    $21 = HEAP32[$v >> 2] | 0;
    $arrayidx25 = $21 + ($inc48 << 2) | 0;
    $22 = HEAP32[$arrayidx25 >> 2] | 0;
    $tobool26 = ($22 | 0) == 0;
    if ($tobool26) {
      label = 18;
      break;
    } else {
      $i_074 = $inc48;
      $12 = $22;
      label = 12;
      break;
    }
   case 18:
    _rec_save_vlists($g);
    $n_163 = HEAP32[$nlist >> 2] | 0;
    $tobool5464 = ($n_163 | 0) == 0;
    if ($tobool5464) {
      $reset_0_lcssa82 = 0;
      label = 41;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $rankdir132 = $g + 156 | 0;
    $rankdir = $g + 156 | 0;
    $reset_065 = 0;
    $n_166 = $n_163;
    label = 20;
    break;
   case 20:
    $list58 = $n_166 + 192 | 0;
    $23 = HEAP32[$list58 >> 2] | 0;
    $tobool59 = ($23 | 0) == 0;
    if ($tobool59) {
      $reset_5 = $reset_065;
      label = 38;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $24 = HEAP32[$list58 >> 2] | 0;
    $25 = HEAP32[$24 >> 2] | 0;
    $tobool6656 = ($25 | 0) == 0;
    if ($tobool6656) {
      $reset_1_lcssa = $reset_065;
      label = 29;
      break;
    } else {
      $i_157 = 0;
      $reset_158 = $reset_065;
      $26 = $25;
      label = 22;
      break;
    }
   case 22:
    $label69 = $26 + 112 | 0;
    $27 = HEAP32[$label69 >> 2] | 0;
    $tobool70 = ($27 | 0) == 0;
    if ($tobool70) {
      $reset_2 = $reset_158;
      label = 28;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $adjacent73 = $26 + 129 | 0;
    $28 = HEAP8[$adjacent73] | 0;
    $tobool74 = $28 << 24 >> 24 == 0;
    if ($tobool74) {
      label = 27;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $29 = HEAP32[$rankdir >> 2] | 0;
    $and77 = $29 & 1;
    $tobool78 = ($and77 | 0) == 0;
    if ($tobool78) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $y = $27 + 32 | 0;
    $30 = +HEAPF64[$y >> 3];
    $dist = $26 + 152 | 0;
    HEAPF64[$dist >> 3] = $30;
    $reset_2 = $reset_158;
    label = 28;
    break;
   case 26:
    $x = $27 + 24 | 0;
    $31 = +HEAPF64[$x >> 3];
    $dist87 = $26 + 152 | 0;
    HEAPF64[$dist87 >> 3] = $31;
    $reset_2 = $reset_158;
    label = 28;
    break;
   case 27:
    _flat_node($26);
    $reset_2 = 1;
    label = 28;
    break;
   case 28:
    $inc93 = $i_157 + 1 | 0;
    $32 = HEAP32[$list58 >> 2] | 0;
    $arrayidx65 = $32 + ($inc93 << 2) | 0;
    $33 = HEAP32[$arrayidx65 >> 2] | 0;
    $tobool66 = ($33 | 0) == 0;
    if ($tobool66) {
      $reset_1_lcssa = $reset_2;
      label = 29;
      break;
    } else {
      $i_157 = $inc93;
      $reset_158 = $reset_2;
      $26 = $33;
      label = 22;
      break;
    }
   case 29:
    $size = $n_166 + 212 | 0;
    $34 = HEAP32[$size >> 2] | 0;
    $cmp9759 = ($34 | 0) > 0;
    if ($cmp9759) {
      label = 30;
      break;
    } else {
      $reset_5 = $reset_1_lcssa;
      label = 38;
      break;
    }
   case 30:
    $list101 = $n_166 + 208 | 0;
    $j_260 = 0;
    $reset_361 = $reset_1_lcssa;
    label = 31;
    break;
   case 31:
    $35 = HEAP32[$list101 >> 2] | 0;
    $arrayidx102 = $35 + ($j_260 << 2) | 0;
    $36 = HEAP32[$arrayidx102 >> 2] | 0;
    $tail = $36 + 16 | 0;
    $37 = HEAP32[$tail >> 2] | 0;
    $rank104 = $37 + 236 | 0;
    $38 = HEAP32[$rank104 >> 2] | 0;
    $head = $36 + 12 | 0;
    $39 = HEAP32[$head >> 2] | 0;
    $rank106 = $39 + 236 | 0;
    $40 = HEAP32[$rank106 >> 2] | 0;
    $cmp107 = ($38 | 0) != ($40 | 0);
    $cmp112 = ($37 | 0) == ($39 | 0);
    $or_cond = $cmp107 | $cmp112;
    if ($or_cond) {
      $reset_4 = $reset_361;
      label = 37;
      break;
    } else {
      $le_0 = $36;
      label = 32;
      break;
    }
   case 32:
    $to_virt = $le_0 + 188 | 0;
    $41 = HEAP32[$to_virt >> 2] | 0;
    $tobool116 = ($41 | 0) == 0;
    if ($tobool116) {
      label = 33;
      break;
    } else {
      $le_0 = $41;
      label = 32;
      break;
    }
   case 33:
    $adjacent120 = $le_0 + 129 | 0;
    $42 = HEAP8[$adjacent120] | 0;
    $adjacent122 = $36 + 129 | 0;
    HEAP8[$adjacent122] = $42;
    $label124 = $36 + 112 | 0;
    $43 = HEAP32[$label124 >> 2] | 0;
    $tobool125 = ($43 | 0) == 0;
    if ($tobool125) {
      $reset_4 = $reset_361;
      label = 37;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $tobool129 = $42 << 24 >> 24 == 0;
    if ($tobool129) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $44 = HEAP32[$rankdir132 >> 2] | 0;
    $and134 = $44 & 1;
    $tobool135 = ($and134 | 0) == 0;
    $y140 = $43 + 32 | 0;
    $x145 = $43 + 24 | 0;
    $lw_0_in = $tobool135 ? $x145 : $y140;
    $lw_0 = +HEAPF64[$lw_0_in >> 3];
    $dist148 = $le_0 + 152 | 0;
    $45 = +HEAPF64[$dist148 >> 3];
    $cmp149 = $lw_0 > $45;
    $lw_0_ = $cmp149 ? $lw_0 : $45;
    HEAPF64[$dist148 >> 3] = $lw_0_;
    $reset_4 = $reset_361;
    label = 37;
    break;
   case 36:
    _flat_node($36);
    $reset_4 = 1;
    label = 37;
    break;
   case 37:
    $inc158 = $j_260 + 1 | 0;
    $46 = HEAP32[$size >> 2] | 0;
    $cmp97 = ($inc158 | 0) < ($46 | 0);
    if ($cmp97) {
      $j_260 = $inc158;
      $reset_361 = $reset_4;
      label = 31;
      break;
    } else {
      $reset_5 = $reset_4;
      label = 38;
      break;
    }
   case 38:
    $next163 = $n_166 + 168 | 0;
    $n_1 = HEAP32[$next163 >> 2] | 0;
    $tobool54 = ($n_1 | 0) == 0;
    if ($tobool54) {
      label = 39;
      break;
    } else {
      $reset_065 = $reset_5;
      $n_166 = $n_1;
      label = 20;
      break;
    }
   case 39:
    $tobool165 = ($reset_5 | 0) == 0;
    if ($tobool165) {
      $reset_0_lcssa82 = 0;
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    _rec_reset_vlists($g);
    $reset_0_lcssa82 = $reset_5;
    label = 41;
    break;
   case 41:
    return $reset_0_lcssa82 | 0;
  }
  return 0;
}
function _flat_node($e) {
  $e = $e | 0;
  var $label = 0, $0 = 0, $cmp = 0, $tail = 0, $1 = 0, $graph = 0, $2 = 0, $rank = 0, $3 = 0, $call = 0, $sub = 0, $rank4 = 0, $4 = 0, $v = 0, $5 = 0, $6 = 0, $tobool = 0, $y = 0, $7 = 0.0, $ht1 = 0, $8 = 0, $conv = 0.0, $sub12 = 0.0, $v17 = 0, $9 = 0, $10 = 0, $y21 = 0, $11 = 0.0, $ht2 = 0, $12 = 0, $conv25 = 0.0, $add = 0.0, $ranksep = 0, $13 = 0, $conv27 = 0.0, $add28 = 0.0, $ypos_0_in = 0.0, $ypos_0 = 0, $call32 = 0, $14 = 0, $dimen_sroa_0_0__idx = 0, $dimen_sroa_0_0_copyload = 0.0, $dimen_sroa_1_8__idx3 = 0, $dimen_sroa_1_8_copyload = 0.0, $rankdir = 0, $15 = 0, $and37 = 0, $tobool38 = 0, $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload = 0.0, $dimen_sroa_0_0_copyload_dimen_sroa_1_8_copyload = 0.0, $ht = 0, $div = 0.0, $conv48 = 0, $div50 = 0.0, $rw = 0, $lw = 0, $16 = 0, $label56 = 0, $add57 = 0, $conv58 = 0.0, $y61 = 0, $17 = 0, $call63 = 0, $18 = 0.0, $sub66 = 0.0, $x68 = 0, $19 = 0, $rw71 = 0, $20 = 0.0, $x74 = 0, $edge_type = 0, $head = 0, $21 = 0, $call76 = 0, $22 = 0.0, $x82 = 0, $23 = 0, $lw85 = 0, $24 = 0.0, $x89 = 0, $edge_type91 = 0, $25 = 0, $ht196 = 0, $26 = 0, $cmp97 = 0, $27 = 0, $ht2110 = 0, $28 = 0, $cmp111 = 0, $29 = 0, $alg = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $label = $e + 112 | 0;
    $0 = HEAP32[$label >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $graph = $1 + 20 | 0;
    $2 = HEAP32[$graph >> 2] | 0;
    $rank = $1 + 236 | 0;
    $3 = HEAP32[$rank >> 2] | 0;
    $call = _flat_limits($2, $e) | 0;
    $sub = $3 - 1 | 0;
    $rank4 = $2 + 224 | 0;
    $4 = HEAP32[$rank4 >> 2] | 0;
    $v = $4 + ($sub * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v >> 2] | 0;
    $6 = HEAP32[$5 >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $y = $6 + 40 | 0;
    $7 = +HEAPF64[$y >> 3];
    $ht1 = $4 + ($sub * 44 & -1) + 16 | 0;
    $8 = HEAP32[$ht1 >> 2] | 0;
    $conv = +($8 | 0);
    $sub12 = $7 - $conv;
    $ypos_0_in = $sub12;
    label = 6;
    break;
   case 5:
    $v17 = $4 + ($3 * 44 & -1) + 4 | 0;
    $9 = HEAP32[$v17 >> 2] | 0;
    $10 = HEAP32[$9 >> 2] | 0;
    $y21 = $10 + 40 | 0;
    $11 = +HEAPF64[$y21 >> 3];
    $ht2 = $4 + ($3 * 44 & -1) + 20 | 0;
    $12 = HEAP32[$ht2 >> 2] | 0;
    $conv25 = +($12 | 0);
    $add = $11 + $conv25;
    $ranksep = $2 + 264 | 0;
    $13 = HEAP32[$ranksep >> 2] | 0;
    $conv27 = +($13 | 0);
    $add28 = $add + $conv27;
    $ypos_0_in = $add28;
    label = 6;
    break;
   case 6:
    $ypos_0 = ~~$ypos_0_in;
    $call32 = _make_vn_slot($2, $sub, $call) | 0;
    $14 = HEAP32[$label >> 2] | 0;
    $dimen_sroa_0_0__idx = $14 + 24 | 0;
    $dimen_sroa_0_0_copyload = +HEAPF64[$dimen_sroa_0_0__idx >> 3];
    $dimen_sroa_1_8__idx3 = $14 + 32 | 0;
    $dimen_sroa_1_8_copyload = +HEAPF64[$dimen_sroa_1_8__idx3 >> 3];
    $rankdir = $2 + 156 | 0;
    $15 = HEAP32[$rankdir >> 2] | 0;
    $and37 = $15 & 1;
    $tobool38 = ($and37 | 0) == 0;
    $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload = $tobool38 ? $dimen_sroa_1_8_copyload : $dimen_sroa_0_0_copyload;
    $dimen_sroa_0_0_copyload_dimen_sroa_1_8_copyload = $tobool38 ? $dimen_sroa_0_0_copyload : $dimen_sroa_1_8_copyload;
    $ht = $call32 + 96 | 0;
    HEAPF64[$ht >> 3] = $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload;
    $div = $dimen_sroa_1_8_copyload_dimen_sroa_0_0_copyload * .5;
    $conv48 = ~~$div;
    $div50 = $dimen_sroa_0_0_copyload_dimen_sroa_1_8_copyload * .5;
    $rw = $call32 + 112 | 0;
    HEAPF64[$rw >> 3] = $div50;
    $lw = $call32 + 104 | 0;
    HEAPF64[$lw >> 3] = $div50;
    $16 = HEAP32[$label >> 2] | 0;
    $label56 = $call32 + 120 | 0;
    HEAP32[$label56 >> 2] = $16;
    $add57 = $conv48 + $ypos_0 | 0;
    $conv58 = +($add57 | 0);
    $y61 = $call32 + 40 | 0;
    HEAPF64[$y61 >> 3] = $conv58;
    $17 = HEAP32[$tail >> 2] | 0;
    $call63 = _virtual_edge($call32, $17, $e) | 0;
    $18 = +HEAPF64[$lw >> 3];
    $sub66 = -0.0 - $18;
    $x68 = $call63 + 32 | 0;
    HEAPF64[$x68 >> 3] = $sub66;
    $19 = HEAP32[$tail >> 2] | 0;
    $rw71 = $19 + 112 | 0;
    $20 = +HEAPF64[$rw71 >> 3];
    $x74 = $call63 + 72 | 0;
    HEAPF64[$x74 >> 3] = $20;
    $edge_type = $call63 + 128 | 0;
    HEAP8[$edge_type] = 4;
    $head = $e + 12 | 0;
    $21 = HEAP32[$head >> 2] | 0;
    $call76 = _virtual_edge($call32, $21, $e) | 0;
    $22 = +HEAPF64[$rw >> 3];
    $x82 = $call76 + 32 | 0;
    HEAPF64[$x82 >> 3] = $22;
    $23 = HEAP32[$head >> 2] | 0;
    $lw85 = $23 + 104 | 0;
    $24 = +HEAPF64[$lw85 >> 3];
    $x89 = $call76 + 72 | 0;
    HEAPF64[$x89 >> 3] = $24;
    $edge_type91 = $call76 + 128 | 0;
    HEAP8[$edge_type91] = 4;
    $25 = HEAP32[$rank4 >> 2] | 0;
    $ht196 = $25 + ($sub * 44 & -1) + 16 | 0;
    $26 = HEAP32[$ht196 >> 2] | 0;
    $cmp97 = ($26 | 0) < ($conv48 | 0);
    if ($cmp97) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$ht196 >> 2] = $conv48;
    label = 8;
    break;
   case 8:
    $27 = HEAP32[$rank4 >> 2] | 0;
    $ht2110 = $27 + ($sub * 44 & -1) + 20 | 0;
    $28 = HEAP32[$ht2110 >> 2] | 0;
    $cmp111 = ($28 | 0) < ($conv48 | 0);
    if ($cmp111) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    HEAP32[$ht2110 >> 2] = $conv48;
    label = 10;
    break;
   case 10:
    $29 = $e | 0;
    $alg = $call32 + 128 | 0;
    HEAP32[$alg >> 2] = $29;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _flat_limits($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $bounds = 0, $lpos = 0, $rpos = 0, $tail = 0, $0 = 0, $rank1 = 0, $1 = 0, $sub = 0, $rank3 = 0, $2 = 0, $v = 0, $3 = 0, $n = 0, $4 = 0, $arrayidx9 = 0, $arrayidx10 = 0, $arrayidx11 = 0, $arrayidx12 = 0, $5 = 0, $head = 0, $6 = 0, $7 = 0, $8 = 0, $rnode_0_in = 0, $lnode_0 = 0, $rnode_0 = 0, $cmp = 0, $arrayidx14 = 0, $9 = 0, $cmp15 = 0, $arrayidx16 = 0, $10 = 0, $inc = 0, $11 = 0, $12 = 0, $sub20 = 0, $cmp21 = 0, $13 = 0, $14 = 0, $cmp26 = 0, $add30 = 0, $15 = 0, $16 = 0, $add34 = 0, $pos_0_in_in = 0, $pos_0_in = 0, $pos_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $bounds = __stackBase__ | 0;
    $lpos = __stackBase__ + 16 | 0;
    $rpos = __stackBase__ + 24 | 0;
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $rank1 = $0 + 236 | 0;
    $1 = HEAP32[$rank1 >> 2] | 0;
    $sub = $1 - 1 | 0;
    $rank3 = $g + 224 | 0;
    $2 = HEAP32[$rank3 >> 2] | 0;
    $v = $2 + ($sub * 44 & -1) + 4 | 0;
    $3 = HEAP32[$v >> 2] | 0;
    $n = $2 + ($sub * 44 & -1) | 0;
    $4 = HEAP32[$n >> 2] | 0;
    $arrayidx9 = $bounds + 8 | 0;
    HEAP32[$arrayidx9 >> 2] = -1;
    $arrayidx10 = $bounds | 0;
    HEAP32[$arrayidx10 >> 2] = -1;
    $arrayidx11 = $bounds + 12 | 0;
    HEAP32[$arrayidx11 >> 2] = $4;
    $arrayidx12 = $bounds + 4 | 0;
    HEAP32[$arrayidx12 >> 2] = $4;
    $5 = HEAP32[$tail >> 2] | 0;
    $head = $e + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    _findlr($5, $6, $lpos, $rpos);
    $7 = HEAP32[$lpos >> 2] | 0;
    $8 = HEAP32[$rpos >> 2] | 0;
    $lnode_0 = 0;
    $rnode_0_in = $4;
    label = 3;
    break;
   case 3:
    $rnode_0 = $rnode_0_in - 1 | 0;
    $cmp = ($lnode_0 | 0) > ($rnode_0 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $arrayidx14 = $3 + ($lnode_0 << 2) | 0;
    $9 = HEAP32[$arrayidx14 >> 2] | 0;
    _setbounds($9, $arrayidx10, $7, $8);
    $cmp15 = ($lnode_0 | 0) == ($rnode_0 | 0);
    if ($cmp15) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $arrayidx16 = $3 + ($rnode_0 << 2) | 0;
    $10 = HEAP32[$arrayidx16 >> 2] | 0;
    _setbounds($10, $arrayidx10, $7, $8);
    label = 6;
    break;
   case 6:
    $inc = $lnode_0 + 1 | 0;
    $11 = HEAP32[$arrayidx12 >> 2] | 0;
    $12 = HEAP32[$arrayidx10 >> 2] | 0;
    $sub20 = $11 - $12 | 0;
    $cmp21 = ($sub20 | 0) < 2;
    if ($cmp21) {
      label = 7;
      break;
    } else {
      $lnode_0 = $inc;
      $rnode_0_in = $rnode_0;
      label = 3;
      break;
    }
   case 7:
    $13 = HEAP32[$arrayidx10 >> 2] | 0;
    $14 = HEAP32[$arrayidx12 >> 2] | 0;
    $cmp26 = ($13 | 0) > ($14 | 0);
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add30 = $14 + $13 | 0;
    $pos_0_in_in = $add30;
    label = 10;
    break;
   case 9:
    $15 = HEAP32[$arrayidx9 >> 2] | 0;
    $16 = HEAP32[$arrayidx11 >> 2] | 0;
    $add34 = $16 + $15 | 0;
    $pos_0_in_in = $add34;
    label = 10;
    break;
   case 10:
    $pos_0_in = $pos_0_in_in + 1 | 0;
    $pos_0 = ($pos_0_in | 0) / 2 & -1;
    STACKTOP = __stackBase__;
    return $pos_0 | 0;
  }
  return 0;
}
function _make_vn_slot($g, $r, $pos) {
  $g = $g | 0;
  $r = $r | 0;
  $pos = $pos | 0;
  var $rank = 0, $0 = 0, $arrayidx = 0, $v1 = 0, $1 = 0, $tobool = 0, $2 = 0, $n9 = 0, $3 = 0, $add = 0, $mul = 0, $call = 0, $n13 = 0, $4 = 0, $add14 = 0, $mul15 = 0, $call16 = 0, $call_sink = 0, $5 = 0, $6 = 0, $v20 = 0, $7 = 0, $n24 = 0, $8 = 0, $cmp26 = 0, $i_027 = 0, $sub = 0, $arrayidx25 = 0, $9 = 0, $arrayidx26 = 0, $order = 0, $10 = 0, $inc = 0, $cmp = 0, $call29 = 0, $arrayidx30 = 0, $order32 = 0, $rank34 = 0, $11 = 0, $n38 = 0, $12 = 0, $inc39 = 0, $arrayidx40 = 0, $13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $g + 224 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $arrayidx = $0 + ($r * 44 & -1) | 0;
    $v1 = $0 + ($r * 44 & -1) + 4 | 0;
    $1 = HEAP32[$v1 >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $1;
    $n9 = $arrayidx | 0;
    $3 = HEAP32[$n9 >> 2] | 0;
    $add = $3 << 2;
    $mul = $add + 8 | 0;
    $call = _grealloc($2, $mul) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $n13 = $arrayidx | 0;
    $4 = HEAP32[$n13 >> 2] | 0;
    $add14 = $4 << 2;
    $mul15 = $add14 + 8 | 0;
    $call16 = _gmalloc($mul15) | 0;
    $call_sink = $call16;
    label = 5;
    break;
   case 5:
    $5 = $call_sink;
    $6 = HEAP32[$rank >> 2] | 0;
    $v20 = $6 + ($r * 44 & -1) + 4 | 0;
    HEAP32[$v20 >> 2] = $5;
    $7 = HEAP32[$rank >> 2] | 0;
    $n24 = $7 + ($r * 44 & -1) | 0;
    $8 = HEAP32[$n24 >> 2] | 0;
    $cmp26 = ($8 | 0) > ($pos | 0);
    if ($cmp26) {
      $i_027 = $8;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $sub = $i_027 - 1 | 0;
    $arrayidx25 = $5 + ($sub << 2) | 0;
    $9 = HEAP32[$arrayidx25 >> 2] | 0;
    $arrayidx26 = $5 + ($i_027 << 2) | 0;
    HEAP32[$arrayidx26 >> 2] = $9;
    $order = $9 + 240 | 0;
    $10 = HEAP32[$order >> 2] | 0;
    $inc = $10 + 1 | 0;
    HEAP32[$order >> 2] = $inc;
    $cmp = ($sub | 0) > ($pos | 0);
    if ($cmp) {
      $i_027 = $sub;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call29 = _virtual_node($g) | 0;
    $arrayidx30 = $5 + ($pos << 2) | 0;
    HEAP32[$arrayidx30 >> 2] = $call29;
    $order32 = $call29 + 240 | 0;
    HEAP32[$order32 >> 2] = $pos;
    $rank34 = $call29 + 236 | 0;
    HEAP32[$rank34 >> 2] = $r;
    $11 = HEAP32[$rank >> 2] | 0;
    $n38 = $11 + ($r * 44 & -1) | 0;
    $12 = HEAP32[$n38 >> 2] | 0;
    $inc39 = $12 + 1 | 0;
    HEAP32[$n38 >> 2] = $inc39;
    $arrayidx40 = $5 + ($inc39 << 2) | 0;
    HEAP32[$arrayidx40 >> 2] = 0;
    $13 = HEAP32[$arrayidx30 >> 2] | 0;
    return $13 | 0;
  }
  return 0;
}
function _safe_delete_fast_edge($e) {
  $e = $e | 0;
  var $cmp = 0, $tail = 0, $0 = 0, $out18 = 0, $list19 = 0, $1 = 0, $2 = 0, $tobool20 = 0, $head = 0, $3 = 0, $in13 = 0, $list714 = 0, $4 = 0, $5 = 0, $tobool915 = 0, $6 = 0, $out22 = 0, $i_021 = 0, $cmp1 = 0, $inc = 0, $7 = 0, $out = 0, $list = 0, $8 = 0, $arrayidx = 0, $9 = 0, $tobool = 0, $10 = 0, $in17 = 0, $i_116 = 0, $cmp11 = 0, $inc18 = 0, $11 = 0, $in = 0, $list7 = 0, $12 = 0, $arrayidx8 = 0, $13 = 0, $tobool9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($e | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tail = $e + 16 | 0;
    $0 = HEAP32[$tail >> 2] | 0;
    $out18 = $0 + 184 | 0;
    $list19 = $out18 | 0;
    $1 = HEAP32[$list19 >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool20 = ($2 | 0) == 0;
    if ($tobool20) {
      label = 5;
      break;
    } else {
      $i_021 = 0;
      $out22 = $out18;
      $6 = $2;
      label = 6;
      break;
    }
   case 4:
    ___assert_func(110136, 128, 163880, 147040);
   case 5:
    $head = $e + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $in13 = $3 + 176 | 0;
    $list714 = $in13 | 0;
    $4 = HEAP32[$list714 >> 2] | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $tobool915 = ($5 | 0) == 0;
    if ($tobool915) {
      label = 12;
      break;
    } else {
      $i_116 = 0;
      $in17 = $in13;
      $10 = $5;
      label = 9;
      break;
    }
   case 6:
    $cmp1 = ($6 | 0) == ($e | 0);
    if ($cmp1) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    _zapinlist($out22, $e);
    label = 8;
    break;
   case 8:
    $inc = $i_021 + 1 | 0;
    $7 = HEAP32[$tail >> 2] | 0;
    $out = $7 + 184 | 0;
    $list = $out | 0;
    $8 = HEAP32[$list >> 2] | 0;
    $arrayidx = $8 + ($inc << 2) | 0;
    $9 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $i_021 = $inc;
      $out22 = $out;
      $6 = $9;
      label = 6;
      break;
    }
   case 9:
    $cmp11 = ($10 | 0) == ($e | 0);
    if ($cmp11) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _zapinlist($in17, $e);
    label = 11;
    break;
   case 11:
    $inc18 = $i_116 + 1 | 0;
    $11 = HEAP32[$head >> 2] | 0;
    $in = $11 + 176 | 0;
    $list7 = $in | 0;
    $12 = HEAP32[$list7 >> 2] | 0;
    $arrayidx8 = $12 + ($inc18 << 2) | 0;
    $13 = HEAP32[$arrayidx8 >> 2] | 0;
    $tobool9 = ($13 | 0) == 0;
    if ($tobool9) {
      label = 12;
      break;
    } else {
      $i_116 = $inc18;
      $in17 = $in;
      $10 = $13;
      label = 9;
      break;
    }
   case 12:
    return;
  }
}
function _abomination($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $cmp = 0, $maxrank = 0, $1 = 0, $conv3 = 0, $add = 0, $rank = 0, $2 = 0, $tobool = 0, $3 = 0, $mul = 0, $call = 0, $mul9 = 0, $call10 = 0, $call_sink = 0, $add_ptr = 0, $4 = 0, $5 = 0, $conv16 = 0, $cmp1730 = 0, $6 = 0, $r_031 = 0, $arrayidx = 0, $sub = 0, $arrayidx23 = 0, $7 = 0, $8 = 0, $cmp17 = 0, $9 = 0, $_lcssa = 0, $r_0_lcssa = 0, $an = 0, $10 = 0, $n = 0, $call30 = 0, $11 = 0, $12 = 0, $av = 0, $13 = 0, $v = 0, $14 = 0, $flat = 0, $15 = 0, $ht2 = 0, $16 = 0, $ht1 = 0, $17 = 0, $pht2 = 0, $18 = 0, $pht1 = 0, $19 = 0, $dec54 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $cmp = $0 << 16 >> 16 == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(97320, 190, 164648, 120008);
   case 4:
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $conv3 = $1 << 16 >> 16;
    $add = $conv3 + 3 | 0;
    $rank = $g + 224 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = $2;
    $mul = $add * 44 & -1;
    $call = _grealloc($3, $mul) | 0;
    $call_sink = $call;
    label = 7;
    break;
   case 6:
    $mul9 = $add * 44 & -1;
    $call10 = _gmalloc($mul9) | 0;
    $call_sink = $call10;
    label = 7;
    break;
   case 7:
    $add_ptr = $call_sink + 44 | 0;
    $4 = $add_ptr;
    HEAP32[$rank >> 2] = $4;
    $5 = HEAP16[$maxrank >> 1] | 0;
    $conv16 = $5 << 16 >> 16;
    $cmp1730 = $5 << 16 >> 16 > -1;
    if ($cmp1730) {
      label = 8;
      break;
    } else {
      $r_0_lcssa = $conv16;
      $_lcssa = $4;
      label = 11;
      break;
    }
   case 8:
    $r_031 = $conv16;
    $6 = $4;
    label = 9;
    break;
   case 9:
    $arrayidx = $6 + ($r_031 * 44 & -1) | 0;
    $sub = $r_031 - 1 | 0;
    $arrayidx23 = $6 + ($sub * 44 & -1) | 0;
    $7 = $arrayidx;
    $8 = $arrayidx23;
    _memcpy($7 | 0, $8 | 0, 44);
    $cmp17 = ($r_031 | 0) > 0;
    $9 = HEAP32[$rank >> 2] | 0;
    if ($cmp17) {
      $r_031 = $sub;
      $6 = $9;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $r_0_lcssa = -1;
    $_lcssa = $9;
    label = 11;
    break;
   case 11:
    $an = $_lcssa + ($r_0_lcssa * 44 & -1) + 8 | 0;
    HEAP32[$an >> 2] = 0;
    $10 = HEAP32[$rank >> 2] | 0;
    $n = $10 + ($r_0_lcssa * 44 & -1) | 0;
    HEAP32[$n >> 2] = 0;
    $call30 = _zmalloc(8) | 0;
    $11 = $call30;
    $12 = HEAP32[$rank >> 2] | 0;
    $av = $12 + ($r_0_lcssa * 44 & -1) + 12 | 0;
    HEAP32[$av >> 2] = $11;
    $13 = HEAP32[$rank >> 2] | 0;
    $v = $13 + ($r_0_lcssa * 44 & -1) + 4 | 0;
    HEAP32[$v >> 2] = $11;
    $14 = HEAP32[$rank >> 2] | 0;
    $flat = $14 + ($r_0_lcssa * 44 & -1) + 40 | 0;
    HEAP32[$flat >> 2] = 0;
    $15 = HEAP32[$rank >> 2] | 0;
    $ht2 = $15 + ($r_0_lcssa * 44 & -1) + 20 | 0;
    HEAP32[$ht2 >> 2] = 1;
    $16 = HEAP32[$rank >> 2] | 0;
    $ht1 = $16 + ($r_0_lcssa * 44 & -1) + 16 | 0;
    HEAP32[$ht1 >> 2] = 1;
    $17 = HEAP32[$rank >> 2] | 0;
    $pht2 = $17 + ($r_0_lcssa * 44 & -1) + 28 | 0;
    HEAP32[$pht2 >> 2] = 1;
    $18 = HEAP32[$rank >> 2] | 0;
    $pht1 = $18 + ($r_0_lcssa * 44 & -1) + 24 | 0;
    HEAP32[$pht1 >> 2] = 1;
    $19 = HEAP16[$minrank >> 1] | 0;
    $dec54 = $19 - 1 & 65535;
    HEAP16[$minrank >> 1] = $dec54;
    return;
  }
}
function _init_mccomp($g, $c) {
  $g = $g | 0;
  $c = $c | 0;
  var $list = 0, $0 = 0, $arrayidx = 0, $1 = 0, $nlist = 0, $cmp = 0, $minrank = 0, $2 = 0, $maxrank = 0, $3 = 0, $cmp515 = 0, $conv = 0, $rank = 0, $r_016 = 0, $4 = 0, $v = 0, $5 = 0, $n = 0, $6 = 0, $add_ptr = 0, $7 = 0, $n19 = 0, $inc = 0, $8 = 0, $conv4 = 0, $cmp5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $g + 228 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $arrayidx = $0 + ($c << 2) | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $nlist = $g + 220 | 0;
    HEAP32[$nlist >> 2] = $1;
    $cmp = ($c | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $minrank = $g + 248 | 0;
    $2 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $3 = HEAP16[$maxrank >> 1] | 0;
    $cmp515 = $2 << 16 >> 16 > $3 << 16 >> 16;
    if ($cmp515) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $2 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_016 = $conv;
    label = 5;
    break;
   case 5:
    $4 = HEAP32[$rank >> 2] | 0;
    $v = $4 + ($r_016 * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v >> 2] | 0;
    $n = $4 + ($r_016 * 44 & -1) | 0;
    $6 = HEAP32[$n >> 2] | 0;
    $add_ptr = $5 + ($6 << 2) | 0;
    HEAP32[$v >> 2] = $add_ptr;
    $7 = HEAP32[$rank >> 2] | 0;
    $n19 = $7 + ($r_016 * 44 & -1) | 0;
    HEAP32[$n19 >> 2] = 0;
    $inc = $r_016 + 1 | 0;
    $8 = HEAP16[$maxrank >> 1] | 0;
    $conv4 = $8 << 16 >> 16;
    $cmp5 = ($inc | 0) > ($conv4 | 0);
    if ($cmp5) {
      label = 6;
      break;
    } else {
      $r_016 = $inc;
      label = 5;
      break;
    }
   case 6:
    return;
  }
}
function _save_vlist($g) {
  $g = $g | 0;
  var $rankleader = 0, $0 = 0, $tobool = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp9 = 0, $conv = 0, $rank = 0, $r_010 = 0, $3 = 0, $v = 0, $4 = 0, $5 = 0, $6 = 0, $arrayidx9 = 0, $inc = 0, $7 = 0, $conv3 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rankleader = $g + 280 | 0;
    $0 = HEAP32[$rankleader >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp9 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $1 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_010 = $conv;
    label = 5;
    break;
   case 5:
    $3 = HEAP32[$rank >> 2] | 0;
    $v = $3 + ($r_010 * 44 & -1) + 4 | 0;
    $4 = HEAP32[$v >> 2] | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $6 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx9 = $6 + ($r_010 << 2) | 0;
    HEAP32[$arrayidx9 >> 2] = $5;
    $inc = $r_010 + 1 | 0;
    $7 = HEAP16[$maxrank >> 1] | 0;
    $conv3 = $7 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv3 | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      $r_010 = $inc;
      label = 5;
      break;
    }
   case 6:
    return;
  }
}
function _dot_mincross($g, $doBalance) {
  $g = $g | 0;
  $doBalance = $doBalance | 0;
  var $size = 0, $0 = 0, $cmp24 = 0, $c_026 = 0, $nc_025 = 0, $call = 0, $add = 0, $inc = 0, $1 = 0, $cmp = 0, $nc_0_lcssa = 0, $n_cluster = 0, $2 = 0, $cmp320 = 0, $clust = 0, $c_122 = 0, $nc_121 = 0, $3 = 0, $arrayidx = 0, $4 = 0, $call6 = 0, $add7 = 0, $inc9 = 0, $5 = 0, $cmp3 = 0, $cmp13 = 0, $6 = 0, $call14 = 0, $tobool = 0, $call15 = 0, $tobool16 = 0, $7 = 0, $call17 = 0, $nc_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _init_mincross($g);
    $size = $g + 232 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp24 = ($0 | 0) > 0;
    if ($cmp24) {
      $nc_025 = 0;
      $c_026 = 0;
      label = 3;
      break;
    } else {
      $nc_0_lcssa = 0;
      label = 4;
      break;
    }
   case 3:
    _init_mccomp($g, $c_026);
    $call = _mincross($g, 0, $doBalance) | 0;
    $add = $call + $nc_025 | 0;
    $inc = $c_026 + 1 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $cmp = ($inc | 0) < ($1 | 0);
    if ($cmp) {
      $nc_025 = $add;
      $c_026 = $inc;
      label = 3;
      break;
    } else {
      $nc_0_lcssa = $add;
      label = 4;
      break;
    }
   case 4:
    _merge2($g);
    $n_cluster = $g + 212 | 0;
    $2 = HEAP32[$n_cluster >> 2] | 0;
    $cmp320 = ($2 | 0) < 1;
    if ($cmp320) {
      $nc_2 = $nc_0_lcssa;
      label = 11;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $clust = $g + 216 | 0;
    $nc_121 = $nc_0_lcssa;
    $c_122 = 1;
    label = 6;
    break;
   case 6:
    $3 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $3 + ($c_122 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $call6 = _mincross_clust($4, $doBalance) | 0;
    $add7 = $call6 + $nc_121 | 0;
    $inc9 = $c_122 + 1 | 0;
    $5 = HEAP32[$n_cluster >> 2] | 0;
    $cmp3 = ($inc9 | 0) > ($5 | 0);
    if ($cmp3) {
      label = 7;
      break;
    } else {
      $nc_121 = $add7;
      $c_122 = $inc9;
      label = 6;
      break;
    }
   case 7:
    $cmp13 = ($5 | 0) > 0;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      $nc_2 = $add7;
      label = 11;
      break;
    }
   case 8:
    $6 = $g | 0;
    $call14 = _agget($6, 96048) | 0;
    $tobool = ($call14 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call15 = _mapbool($call14) | 0;
    $tobool16 = $call15 << 24 >> 24 == 0;
    if ($tobool16) {
      $nc_2 = $add7;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $7 = $g;
    _mark_lowclusters($7);
    HEAP8[166152] = 1;
    $call17 = _mincross($g, 2, $doBalance) | 0;
    $nc_2 = $call17;
    label = 11;
    break;
   case 11:
    _cleanup2($g, $nc_2);
    return;
  }
}
function _init_mincross($g) {
  $g = $g | 0;
  var $0 = 0, $tobool = 0, $root = 0, $1 = 0, $2 = 0, $call = 0, $add = 0, $mul = 0, $call1 = 0, $3 = 0, $call3 = 0, $4 = 0, $minrank = 0, $5 = 0, $conv = 0, $maxrank = 0, $6 = 0, $conv5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[164912] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _start_timer();
    label = 4;
    break;
   case 4:
    HEAP8[166152] = 0;
    HEAP32[41526] = $g;
    $root = $g + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $2 = $1;
    $call = _agnedges($2) | 0;
    $add = $call << 2;
    $mul = $add + 4 | 0;
    $call1 = _zmalloc($mul) | 0;
    $3 = $call1;
    HEAP32[41348] = $3;
    $call3 = _zmalloc($mul) | 0;
    $4 = $call3;
    HEAP32[41344] = $4;
    _mincross_options($g);
    _class2($g);
    _decompose($g, 1);
    _allocate_ranks($g);
    _ordered_edges($g);
    $minrank = $g + 248 | 0;
    $5 = HEAP16[$minrank >> 1] | 0;
    $conv = $5 << 16 >> 16;
    HEAP32[41854] = $conv;
    $maxrank = $g + 250 | 0;
    $6 = HEAP16[$maxrank >> 1] | 0;
    $conv5 = $6 << 16 >> 16;
    HEAP32[41856] = $conv5;
    return;
  }
}
function _mincross($g, $startpass, $doBalance) {
  $g = $g | 0;
  $startpass = $startpass | 0;
  $doBalance = $doBalance | 0;
  var $cmp = 0, $call = 0, $cur_cross_1_ph = 0, $root = 0, $maxthispass_0 = 0, $pass_0 = 0, $cur_cross_1 = 0, $best_cross_1 = 0, $cmp1 = 0, $cmp2 = 0, $0 = 0, $cmp4 = 0, $cond = 0, $1 = 0, $cmp5 = 0, $cmp8 = 0, $call11 = 0, $cmp12 = 0, $cmp16 = 0, $maxthispass_1 = 0, $cur_cross_2 = 0, $best_cross_3 = 0, $cmp213 = 0, $best_cross_47 = 0, $cur_cross_36 = 0, $trying_05 = 0, $iter_04 = 0, $2 = 0, $tobool = 0, $3 = 0, $call24 = 0, $inc = 0, $4 = 0, $cmp26 = 0, $cmp29 = 0, $or_cond = 0, $call32 = 0, $cmp33 = 0, $conv = 0.0, $5 = 0.0, $conv35 = 0.0, $mul = 0.0, $cmp36 = 0, $trying_1 = 0, $trying_2 = 0, $best_cross_5 = 0, $inc41 = 0, $cmp21 = 0, $best_cross_4_lcssa = 0, $cur_cross_3_lcssa = 0, $cmp42 = 0, $inc47 = 0, $maxthispass_2 = 0, $cur_cross_4 = 0, $best_cross_6 = 0, $cmp49 = 0, $cmp53 = 0, $call56 = 0, $best_cross_7 = 0, $tobool58 = 0, $cmp611 = 0, $or_cond11 = 0, $iter_12 = 0, $inc66 = 0, $cmp61 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($startpass | 0) > 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $cur_cross_1_ph = 2147483647;
      label = 4;
      break;
    }
   case 3:
    $call = _ncross(0) | 0;
    _save_best($g);
    $cur_cross_1_ph = $call;
    label = 4;
    break;
   case 4:
    $root = $g + 32 | 0;
    $best_cross_1 = $cur_cross_1_ph;
    $cur_cross_1 = $cur_cross_1_ph;
    $pass_0 = $startpass;
    $maxthispass_0 = 0;
    label = 5;
    break;
   case 5:
    $cmp1 = ($pass_0 | 0) < 3;
    if ($cmp1) {
      label = 6;
      break;
    } else {
      $best_cross_6 = $best_cross_1;
      $cur_cross_4 = $cur_cross_1;
      $maxthispass_2 = $maxthispass_0;
      label = 23;
      break;
    }
   case 6:
    $cmp2 = ($pass_0 | 0) < 2;
    $0 = HEAP32[41634] | 0;
    if ($cmp2) {
      label = 7;
      break;
    } else {
      label = 13;
      break;
    }
   case 7:
    $cmp4 = ($0 | 0) > 4;
    $cond = $cmp4 ? 4 : $0;
    $1 = HEAP32[$root >> 2] | 0;
    $cmp5 = ($1 | 0) == ($g | 0);
    if ($cmp5) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    _build_ranks($g, $pass_0);
    label = 9;
    break;
   case 9:
    $cmp8 = ($pass_0 | 0) == 0;
    if ($cmp8) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _flat_breakcycles($g);
    label = 11;
    break;
   case 11:
    _flat_reorder($g);
    $call11 = _ncross(0) | 0;
    $cmp12 = ($call11 | 0) > ($best_cross_1 | 0);
    if ($cmp12) {
      $best_cross_3 = $best_cross_1;
      $cur_cross_2 = $call11;
      $maxthispass_1 = $cond;
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _save_best($g);
    $best_cross_3 = $call11;
    $cur_cross_2 = $call11;
    $maxthispass_1 = $cond;
    label = 15;
    break;
   case 13:
    $cmp16 = ($cur_cross_1 | 0) > ($best_cross_1 | 0);
    if ($cmp16) {
      label = 14;
      break;
    } else {
      $best_cross_3 = $best_cross_1;
      $cur_cross_2 = $best_cross_1;
      $maxthispass_1 = $0;
      label = 15;
      break;
    }
   case 14:
    _restore_best($g);
    $best_cross_3 = $best_cross_1;
    $cur_cross_2 = $best_cross_1;
    $maxthispass_1 = $0;
    label = 15;
    break;
   case 15:
    $cmp213 = ($maxthispass_1 | 0) > 0;
    if ($cmp213) {
      $iter_04 = 0;
      $trying_05 = 0;
      $cur_cross_36 = $cur_cross_2;
      $best_cross_47 = $best_cross_3;
      label = 16;
      break;
    } else {
      $cur_cross_3_lcssa = $cur_cross_2;
      $best_cross_4_lcssa = $best_cross_3;
      label = 22;
      break;
    }
   case 16:
    $2 = HEAP8[164912] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $3 = HEAP32[_stderr >> 2] | 0;
    $call24 = _fprintf($3 | 0, 149432, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = $pass_0, HEAP32[tempInt + 8 >> 2] = $iter_04, HEAP32[tempInt + 16 >> 2] = $trying_05, HEAP32[tempInt + 24 >> 2] = $cur_cross_36, HEAP32[tempInt + 32 >> 2] = $best_cross_47, tempInt) | 0) | 0;
    label = 18;
    break;
   case 18:
    $inc = $trying_05 + 1 | 0;
    $4 = HEAP32[41630] | 0;
    $cmp26 = ($trying_05 | 0) >= ($4 | 0);
    $cmp29 = ($cur_cross_36 | 0) == 0;
    $or_cond = $cmp26 | $cmp29;
    if ($or_cond) {
      $cur_cross_3_lcssa = $cur_cross_36;
      $best_cross_4_lcssa = $best_cross_47;
      label = 22;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _mincross_step($g, $iter_04);
    $call32 = _ncross(0) | 0;
    $cmp33 = ($call32 | 0) > ($best_cross_47 | 0);
    if ($cmp33) {
      $best_cross_5 = $best_cross_47;
      $trying_2 = $inc;
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    _save_best($g);
    $conv = +($call32 | 0);
    $5 = +HEAPF64[20993];
    $conv35 = +($best_cross_47 | 0);
    $mul = $conv35 * $5;
    $cmp36 = $conv < $mul;
    $trying_1 = $cmp36 ? 0 : $inc;
    $best_cross_5 = $call32;
    $trying_2 = $trying_1;
    label = 21;
    break;
   case 21:
    $inc41 = $iter_04 + 1 | 0;
    $cmp21 = ($inc41 | 0) < ($maxthispass_1 | 0);
    if ($cmp21) {
      $iter_04 = $inc41;
      $trying_05 = $trying_2;
      $cur_cross_36 = $call32;
      $best_cross_47 = $best_cross_5;
      label = 16;
      break;
    } else {
      $cur_cross_3_lcssa = $call32;
      $best_cross_4_lcssa = $best_cross_5;
      label = 22;
      break;
    }
   case 22:
    $cmp42 = ($cur_cross_3_lcssa | 0) == 0;
    $inc47 = $pass_0 + 1 | 0;
    if ($cmp42) {
      $best_cross_6 = $best_cross_4_lcssa;
      $cur_cross_4 = 0;
      $maxthispass_2 = $maxthispass_1;
      label = 23;
      break;
    } else {
      $best_cross_1 = $best_cross_4_lcssa;
      $cur_cross_1 = $cur_cross_3_lcssa;
      $pass_0 = $inc47;
      $maxthispass_0 = $maxthispass_1;
      label = 5;
      break;
    }
   case 23:
    $cmp49 = ($cur_cross_4 | 0) > ($best_cross_6 | 0);
    if ($cmp49) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    _restore_best($g);
    label = 25;
    break;
   case 25:
    $cmp53 = ($best_cross_6 | 0) > 0;
    if ($cmp53) {
      label = 26;
      break;
    } else {
      $best_cross_7 = $best_cross_6;
      label = 27;
      break;
    }
   case 26:
    _transpose($g, 0);
    $call56 = _ncross(0) | 0;
    $best_cross_7 = $call56;
    label = 27;
    break;
   case 27:
    $tobool58 = ($doBalance | 0) != 0;
    $cmp611 = ($maxthispass_2 | 0) > 0;
    $or_cond11 = $tobool58 & $cmp611;
    if ($or_cond11) {
      $iter_12 = 0;
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    _balance($g);
    $inc66 = $iter_12 + 1 | 0;
    $cmp61 = ($inc66 | 0) < ($maxthispass_2 | 0);
    if ($cmp61) {
      $iter_12 = $inc66;
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    STACKTOP = __stackBase__;
    return $best_cross_7 | 0;
  }
  return 0;
}
function _merge2($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp34 = 0, $conv = 0, $rank = 0, $name = 0, $r_035 = 0, $2 = 0, $an = 0, $3 = 0, $n = 0, $4 = 0, $av = 0, $5 = 0, $v14 = 0, $6 = 0, $n1930 = 0, $7 = 0, $cmp2031 = 0, $8 = 0, $9 = 0, $i_032 = 0, $v26 = 0, $10 = 0, $arrayidx27 = 0, $11 = 0, $cmp28 = 0, $12 = 0, $tobool = 0, $13 = 0, $14 = 0, $call = 0, $15 = 0, $n38 = 0, $order = 0, $inc = 0, $16 = 0, $n19 = 0, $17 = 0, $cmp20 = 0, $inc42 = 0, $18 = 0, $conv2 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _merge_components($g);
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp34 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp34) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $name = $g + 12 | 0;
    $r_035 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rank >> 2] | 0;
    $an = $2 + ($r_035 * 44 & -1) + 8 | 0;
    $3 = HEAP32[$an >> 2] | 0;
    $n = $2 + ($r_035 * 44 & -1) | 0;
    HEAP32[$n >> 2] = $3;
    $4 = HEAP32[$rank >> 2] | 0;
    $av = $4 + ($r_035 * 44 & -1) + 12 | 0;
    $5 = HEAP32[$av >> 2] | 0;
    $v14 = $4 + ($r_035 * 44 & -1) + 4 | 0;
    HEAP32[$v14 >> 2] = $5;
    $6 = HEAP32[$rank >> 2] | 0;
    $n1930 = $6 + ($r_035 * 44 & -1) | 0;
    $7 = HEAP32[$n1930 >> 2] | 0;
    $cmp2031 = ($7 | 0) > 0;
    if ($cmp2031) {
      $i_032 = 0;
      $9 = $6;
      $8 = $7;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $v26 = $9 + ($r_035 * 44 & -1) + 4 | 0;
    $10 = HEAP32[$v26 >> 2] | 0;
    $arrayidx27 = $10 + ($i_032 << 2) | 0;
    $11 = HEAP32[$arrayidx27 >> 2] | 0;
    $cmp28 = ($11 | 0) == 0;
    if ($cmp28) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $12 = HEAP8[164912] | 0;
    $tobool = $12 << 24 >> 24 == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $13 = HEAP32[_stderr >> 2] | 0;
    $14 = HEAP32[$name >> 2] | 0;
    $call = _fprintf($13 | 0, 153024, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $14, HEAP32[tempInt + 8 >> 2] = $r_035, HEAP32[tempInt + 16 >> 2] = $i_032, HEAP32[tempInt + 24 >> 2] = $8, tempInt) | 0) | 0;
    label = 8;
    break;
   case 8:
    $15 = HEAP32[$rank >> 2] | 0;
    $n38 = $15 + ($r_035 * 44 & -1) | 0;
    HEAP32[$n38 >> 2] = $i_032;
    label = 10;
    break;
   case 9:
    $order = $11 + 240 | 0;
    HEAP32[$order >> 2] = $i_032;
    $inc = $i_032 + 1 | 0;
    $16 = HEAP32[$rank >> 2] | 0;
    $n19 = $16 + ($r_035 * 44 & -1) | 0;
    $17 = HEAP32[$n19 >> 2] | 0;
    $cmp20 = ($inc | 0) < ($17 | 0);
    if ($cmp20) {
      $i_032 = $inc;
      $9 = $16;
      $8 = $17;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $inc42 = $r_035 + 1 | 0;
    $18 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $18 << 16 >> 16;
    $cmp = ($inc42 | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 11;
      break;
    } else {
      $r_035 = $inc42;
      label = 4;
      break;
    }
   case 11:
    STACKTOP = __stackBase__;
    return;
  }
}
function _mincross_clust($g, $doBalance) {
  $g = $g | 0;
  $doBalance = $doBalance | 0;
  var $0 = 0, $call = 0, $n_cluster = 0, $1 = 0, $cmp1 = 0, $clust = 0, $nc_03 = 0, $c_02 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $call2 = 0, $add = 0, $inc = 0, $4 = 0, $cmp = 0, $nc_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    _expand_cluster($0);
    _ordered_edges($g);
    _flat_breakcycles($g);
    _flat_reorder($g);
    $call = _mincross($g, 2, $doBalance) | 0;
    $n_cluster = $g + 212 | 0;
    $1 = HEAP32[$n_cluster >> 2] | 0;
    $cmp1 = ($1 | 0) < 1;
    if ($cmp1) {
      $nc_0_lcssa = $call;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_02 = 1;
    $nc_03 = $call;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $2 + ($c_02 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $call2 = _mincross_clust($3, $doBalance) | 0;
    $add = $call2 + $nc_03 | 0;
    $inc = $c_02 + 1 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($4 | 0);
    if ($cmp) {
      $nc_0_lcssa = $add;
      label = 5;
      break;
    } else {
      $c_02 = $inc;
      $nc_03 = $add;
      label = 4;
      break;
    }
   case 5:
    _save_vlist($g);
    return $nc_0_lcssa | 0;
  }
  return 0;
}
function _cleanup2($g, $nc) {
  $g = $g | 0;
  $nc = $nc | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $2 = 0, $tobool1 = 0, $3 = 0, $n_cluster = 0, $4 = 0, $cmp33 = 0, $clust = 0, $c_034 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $inc = 0, $7 = 0, $cmp = 0, $minrank = 0, $8 = 0, $maxrank = 0, $9 = 0, $cmp930 = 0, $conv = 0, $rank = 0, $r_031 = 0, $10 = 0, $n26 = 0, $11 = 0, $cmp1527 = 0, $12 = 0, $i_028 = 0, $v21 = 0, $13 = 0, $arrayidx22 = 0, $14 = 0, $order = 0, $list = 0, $15 = 0, $tobool25 = 0, $16 = 0, $17 = 0, $tobool3224 = 0, $18 = 0, $j_025 = 0, $edge_type = 0, $19 = 0, $cmp36 = 0, $20 = 0, $dec = 0, $j_1 = 0, $inc41 = 0, $21 = 0, $arrayidx31 = 0, $22 = 0, $tobool32 = 0, $inc45 = 0, $23 = 0, $n = 0, $24 = 0, $cmp15 = 0, $_lcssa = 0, $flat = 0, $25 = 0, $inc51 = 0, $26 = 0, $conv8 = 0, $cmp9 = 0, $27 = 0, $tobool53 = 0, $28 = 0, $name = 0, $29 = 0, $call = 0.0, $call55 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41344] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $0;
    _free($1);
    HEAP32[41344] = 0;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[41348] | 0;
    $tobool1 = ($2 | 0) == 0;
    if ($tobool1) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = $2;
    _free($3);
    HEAP32[41348] = 0;
    label = 6;
    break;
   case 6:
    $n_cluster = $g + 212 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp33 = ($4 | 0) < 1;
    if ($cmp33) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $clust = $g + 216 | 0;
    $c_034 = 1;
    label = 8;
    break;
   case 8:
    $5 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $5 + ($c_034 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    _rec_reset_vlists($6);
    $inc = $c_034 + 1 | 0;
    $7 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($7 | 0);
    if ($cmp) {
      label = 9;
      break;
    } else {
      $c_034 = $inc;
      label = 8;
      break;
    }
   case 9:
    $minrank = $g + 248 | 0;
    $8 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $9 = HEAP16[$maxrank >> 1] | 0;
    $cmp930 = $8 << 16 >> 16 > $9 << 16 >> 16;
    if ($cmp930) {
      label = 19;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $conv = $8 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_031 = $conv;
    label = 11;
    break;
   case 11:
    $10 = HEAP32[$rank >> 2] | 0;
    $n26 = $10 + ($r_031 * 44 & -1) | 0;
    $11 = HEAP32[$n26 >> 2] | 0;
    $cmp1527 = ($11 | 0) > 0;
    if ($cmp1527) {
      $i_028 = 0;
      $12 = $10;
      label = 12;
      break;
    } else {
      $_lcssa = $10;
      label = 18;
      break;
    }
   case 12:
    $v21 = $12 + ($r_031 * 44 & -1) + 4 | 0;
    $13 = HEAP32[$v21 >> 2] | 0;
    $arrayidx22 = $13 + ($i_028 << 2) | 0;
    $14 = HEAP32[$arrayidx22 >> 2] | 0;
    $order = $14 + 240 | 0;
    HEAP32[$order >> 2] = $i_028;
    $list = $14 + 192 | 0;
    $15 = HEAP32[$list >> 2] | 0;
    $tobool25 = ($15 | 0) == 0;
    if ($tobool25) {
      label = 17;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $16 = HEAP32[$list >> 2] | 0;
    $17 = HEAP32[$16 >> 2] | 0;
    $tobool3224 = ($17 | 0) == 0;
    if ($tobool3224) {
      label = 17;
      break;
    } else {
      $j_025 = 0;
      $18 = $17;
      label = 14;
      break;
    }
   case 14:
    $edge_type = $18 + 128 | 0;
    $19 = HEAP8[$edge_type] | 0;
    $cmp36 = $19 << 24 >> 24 == 4;
    if ($cmp36) {
      label = 15;
      break;
    } else {
      $j_1 = $j_025;
      label = 16;
      break;
    }
   case 15:
    _delete_flat_edge($18);
    $20 = $18 | 0;
    _free($20);
    $dec = $j_025 - 1 | 0;
    $j_1 = $dec;
    label = 16;
    break;
   case 16:
    $inc41 = $j_1 + 1 | 0;
    $21 = HEAP32[$list >> 2] | 0;
    $arrayidx31 = $21 + ($inc41 << 2) | 0;
    $22 = HEAP32[$arrayidx31 >> 2] | 0;
    $tobool32 = ($22 | 0) == 0;
    if ($tobool32) {
      label = 17;
      break;
    } else {
      $j_025 = $inc41;
      $18 = $22;
      label = 14;
      break;
    }
   case 17:
    $inc45 = $i_028 + 1 | 0;
    $23 = HEAP32[$rank >> 2] | 0;
    $n = $23 + ($r_031 * 44 & -1) | 0;
    $24 = HEAP32[$n >> 2] | 0;
    $cmp15 = ($inc45 | 0) < ($24 | 0);
    if ($cmp15) {
      $i_028 = $inc45;
      $12 = $23;
      label = 12;
      break;
    } else {
      $_lcssa = $23;
      label = 18;
      break;
    }
   case 18:
    $flat = $_lcssa + ($r_031 * 44 & -1) + 40 | 0;
    $25 = HEAP32[$flat >> 2] | 0;
    _free_matrix($25);
    $inc51 = $r_031 + 1 | 0;
    $26 = HEAP16[$maxrank >> 1] | 0;
    $conv8 = $26 << 16 >> 16;
    $cmp9 = ($inc51 | 0) > ($conv8 | 0);
    if ($cmp9) {
      label = 19;
      break;
    } else {
      $r_031 = $inc51;
      label = 11;
      break;
    }
   case 19:
    $27 = HEAP8[164912] | 0;
    $tobool53 = $27 << 24 >> 24 == 0;
    if ($tobool53) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $28 = HEAP32[_stderr >> 2] | 0;
    $name = $g + 12 | 0;
    $29 = HEAP32[$name >> 2] | 0;
    $call = +_elapsed_sec();
    $call55 = _fprintf($28 | 0, 156488, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $29, HEAP32[tempInt + 8 >> 2] = $nc, HEAPF64[tempInt + 16 >> 3] = $call, tempInt) | 0) | 0;
    label = 21;
    break;
   case 21:
    STACKTOP = __stackBase__;
    return;
  }
}
function _rec_save_vlists($g) {
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp5 = 0, $clust = 0, $c_06 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _save_vlist($g);
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp5 = ($0 | 0) < 1;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_06 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($c_06 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _rec_save_vlists($2);
    $inc = $c_06 + 1 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_06 = $inc;
      label = 4;
      break;
    }
   case 5:
    return;
  }
}
function _rec_reset_vlists($g) {
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp26 = 0, $clust = 0, $c_027 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, $rankleader = 0, $4 = 0, $tobool = 0, $minrank = 0, $5 = 0, $maxrank = 0, $6 = 0, $cmp824 = 0, $conv = 0, $root = 0, $rank23 = 0, $r_025 = 0, $7 = 0, $arrayidx13 = 0, $8 = 0, $call = 0, $call14 = 0, $9 = 0, $arrayidx17 = 0, $10 = 0, $rank = 0, $11 = 0, $v20 = 0, $12 = 0, $order = 0, $13 = 0, $add_ptr = 0, $14 = 0, $v25 = 0, $order27 = 0, $15 = 0, $16 = 0, $sub = 0, $add = 0, $17 = 0, $n = 0, $inc34 = 0, $18 = 0, $conv7 = 0, $cmp8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp26 = ($0 | 0) < 1;
    if ($cmp26) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_027 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($c_027 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _rec_reset_vlists($2);
    $inc = $c_027 + 1 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_027 = $inc;
      label = 4;
      break;
    }
   case 5:
    $rankleader = $g + 280 | 0;
    $4 = HEAP32[$rankleader >> 2] | 0;
    $tobool = ($4 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $minrank = $g + 248 | 0;
    $5 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $6 = HEAP16[$maxrank >> 1] | 0;
    $cmp824 = $5 << 16 >> 16 > $6 << 16 >> 16;
    if ($cmp824) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $conv = $5 << 16 >> 16;
    $root = $g + 32 | 0;
    $rank23 = $g + 224 | 0;
    $r_025 = $conv;
    label = 8;
    break;
   case 8:
    $7 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx13 = $7 + ($r_025 << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $call = _furthestnode($g, $8, -1) | 0;
    $call14 = _furthestnode($g, $8, 1) | 0;
    $9 = HEAP32[$rankleader >> 2] | 0;
    $arrayidx17 = $9 + ($r_025 << 2) | 0;
    HEAP32[$arrayidx17 >> 2] = $call;
    $10 = HEAP32[$root >> 2] | 0;
    $rank = $10 + 224 | 0;
    $11 = HEAP32[$rank >> 2] | 0;
    $v20 = $11 + ($r_025 * 44 & -1) + 4 | 0;
    $12 = HEAP32[$v20 >> 2] | 0;
    $order = $call + 240 | 0;
    $13 = HEAP32[$order >> 2] | 0;
    $add_ptr = $12 + ($13 << 2) | 0;
    $14 = HEAP32[$rank23 >> 2] | 0;
    $v25 = $14 + ($r_025 * 44 & -1) + 4 | 0;
    HEAP32[$v25 >> 2] = $add_ptr;
    $order27 = $call14 + 240 | 0;
    $15 = HEAP32[$order27 >> 2] | 0;
    $16 = HEAP32[$order >> 2] | 0;
    $sub = $15 + 1 | 0;
    $add = $sub - $16 | 0;
    $17 = HEAP32[$rank23 >> 2] | 0;
    $n = $17 + ($r_025 * 44 & -1) | 0;
    HEAP32[$n >> 2] = $add;
    $inc34 = $r_025 + 1 | 0;
    $18 = HEAP16[$maxrank >> 1] | 0;
    $conv7 = $18 << 16 >> 16;
    $cmp8 = ($inc34 | 0) > ($conv7 | 0);
    if ($cmp8) {
      label = 9;
      break;
    } else {
      $r_025 = $inc34;
      label = 8;
      break;
    }
   case 9:
    return;
  }
}
function _furthestnode($g, $v, $dir) {
  $g = $g | 0;
  $v = $v | 0;
  $dir = $dir | 0;
  var $call6 = 0, $tobool7 = 0, $call9 = 0, $rv_08 = 0, $call1 = 0, $tobool2 = 0, $rv_0_be = 0, $call = 0, $tobool = 0, $call3 = 0, $tobool4 = 0, $rv_0_call = 0, $rv_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call6 = _neighbor113($v, $dir) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      $rv_0_lcssa = $v;
      label = 6;
      break;
    } else {
      $rv_08 = $v;
      $call9 = $call6;
      label = 3;
      break;
    }
   case 3:
    $call1 = _is_a_normal_node_of($g, $call9) | 0;
    $tobool2 = ($call1 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      $rv_0_be = $call9;
      label = 4;
      break;
    }
   case 4:
    $call = _neighbor113($call9, $dir) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $rv_0_lcssa = $rv_0_be;
      label = 6;
      break;
    } else {
      $rv_08 = $rv_0_be;
      $call9 = $call;
      label = 3;
      break;
    }
   case 5:
    $call3 = _is_a_vnode_of_an_edge_of($g, $call9) | 0;
    $tobool4 = ($call3 | 0) == 0;
    $rv_0_call = $tobool4 ? $rv_08 : $call9;
    $rv_0_be = $rv_0_call;
    label = 4;
    break;
   case 6:
    return $rv_0_lcssa | 0;
  }
  return 0;
}
function _setbounds($v, $bounds, $lpos, $rpos) {
  $v = $v | 0;
  $bounds = $bounds | 0;
  $lpos = $lpos | 0;
  $rpos = $rpos | 0;
  var $l = 0, $r = 0, $node_type = 0, $0 = 0, $cmp = 0, $order = 0, $1 = 0, $size = 0, $2 = 0, $cmp4 = 0, $list61 = 0, $3 = 0, $4 = 0, $tobool36 = 0, $5 = 0, $size8 = 0, $6 = 0, $cmp9 = 0, $list = 0, $7 = 0, $8 = 0, $head = 0, $9 = 0, $arrayidx16 = 0, $10 = 0, $head17 = 0, $11 = 0, $12 = 0, $cmp18 = 0, $arrayidx22 = 0, $13 = 0, $cmp23 = 0, $arrayidx26 = 0, $arrayidx27 = 0, $cmp29 = 0, $cmp31 = 0, $or_cond = 0, $cmp37 = 0, $cmp40 = 0, $or_cond35 = 0, $arrayidx43 = 0, $14 = 0, $cmp44 = 0, $cmp47 = 0, $15 = 0, $cmp50 = 0, $arrayidx53 = 0, $16 = 0, $onright_039 = 0, $onleft_038 = 0, $i_037 = 0, $head63 = 0, $17 = 0, $order65 = 0, $18 = 0, $cmp66 = 0, $cmp73 = 0, $onright_0_ = 0, $onleft_1 = 0, $onright_1 = 0, $inc = 0, $arrayidx62 = 0, $19 = 0, $tobool = 0, $tobool78 = 0, $cmp81 = 0, $or_cond33 = 0, $add = 0, $tobool87 = 0, $cmp90 = 0, $or_cond34 = 0, $sub = 0, $arrayidx93 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $l = __stackBase__ | 0;
    $r = __stackBase__ + 8 | 0;
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 27;
      break;
    }
   case 3:
    $order = $v + 240 | 0;
    $1 = HEAP32[$order >> 2] | 0;
    $size = $v + 180 | 0;
    $2 = HEAP32[$size >> 2] | 0;
    $cmp4 = ($2 | 0) == 0;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $list61 = $v + 184 | 0;
    $3 = HEAP32[$list61 >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $tobool36 = ($4 | 0) == 0;
    if ($tobool36) {
      label = 27;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP32[$list61 >> 2] | 0;
    $i_037 = 0;
    $onleft_038 = 0;
    $onright_039 = 0;
    $16 = $4;
    label = 20;
    break;
   case 6:
    $size8 = $v + 188 | 0;
    $6 = HEAP32[$size8 >> 2] | 0;
    $cmp9 = ($6 | 0) == 2;
    if ($cmp9) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    ___assert_func(97320, 63, 163864, 137424);
   case 8:
    $list = $v + 184 | 0;
    $7 = HEAP32[$list >> 2] | 0;
    $8 = HEAP32[$7 >> 2] | 0;
    $head = $8 + 12 | 0;
    $9 = HEAP32[$head >> 2] | 0;
    $arrayidx16 = $7 + 4 | 0;
    $10 = HEAP32[$arrayidx16 >> 2] | 0;
    $head17 = $10 + 12 | 0;
    $11 = HEAP32[$head17 >> 2] | 0;
    _findlr($9, $11, $l, $r);
    $12 = HEAP32[$r >> 2] | 0;
    $cmp18 = ($12 | 0) > ($lpos | 0);
    if ($cmp18) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAP32[$bounds >> 2] = $1;
    $arrayidx22 = $bounds + 8 | 0;
    HEAP32[$arrayidx22 >> 2] = $1;
    label = 27;
    break;
   case 10:
    $13 = HEAP32[$l >> 2] | 0;
    $cmp23 = ($13 | 0) < ($rpos | 0);
    if ($cmp23) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $arrayidx26 = $bounds + 4 | 0;
    HEAP32[$arrayidx26 >> 2] = $1;
    $arrayidx27 = $bounds + 12 | 0;
    HEAP32[$arrayidx27 >> 2] = $1;
    label = 27;
    break;
   case 12:
    $cmp29 = ($13 | 0) < ($lpos | 0);
    $cmp31 = ($12 | 0) > ($rpos | 0);
    $or_cond = $cmp29 & $cmp31;
    if ($or_cond) {
      label = 27;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    if ($cmp29) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $cmp37 = ($13 | 0) == ($lpos | 0);
    $cmp40 = ($12 | 0) < ($rpos | 0);
    $or_cond35 = $cmp37 & $cmp40;
    if ($or_cond35) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $arrayidx43 = $bounds + 8 | 0;
    HEAP32[$arrayidx43 >> 2] = $1;
    label = 16;
    break;
   case 16:
    $14 = HEAP32[$r >> 2] | 0;
    $cmp44 = ($14 | 0) > ($rpos | 0);
    if ($cmp44) {
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $cmp47 = ($14 | 0) == ($rpos | 0);
    if ($cmp47) {
      label = 18;
      break;
    } else {
      label = 27;
      break;
    }
   case 18:
    $15 = HEAP32[$l >> 2] | 0;
    $cmp50 = ($15 | 0) > ($lpos | 0);
    if ($cmp50) {
      label = 19;
      break;
    } else {
      label = 27;
      break;
    }
   case 19:
    $arrayidx53 = $bounds + 12 | 0;
    HEAP32[$arrayidx53 >> 2] = $1;
    label = 27;
    break;
   case 20:
    $head63 = $16 + 12 | 0;
    $17 = HEAP32[$head63 >> 2] | 0;
    $order65 = $17 + 240 | 0;
    $18 = HEAP32[$order65 >> 2] | 0;
    $cmp66 = ($18 | 0) > ($lpos | 0);
    if ($cmp66) {
      label = 21;
      break;
    } else {
      $onright_1 = $onright_039;
      $onleft_1 = 1;
      label = 22;
      break;
    }
   case 21:
    $cmp73 = ($18 | 0) < ($rpos | 0);
    $onright_0_ = $cmp73 ? $onright_039 : 1;
    $onright_1 = $onright_0_;
    $onleft_1 = $onleft_038;
    label = 22;
    break;
   case 22:
    $inc = $i_037 + 1 | 0;
    $arrayidx62 = $5 + ($inc << 2) | 0;
    $19 = HEAP32[$arrayidx62 >> 2] | 0;
    $tobool = ($19 | 0) == 0;
    if ($tobool) {
      label = 23;
      break;
    } else {
      $i_037 = $inc;
      $onleft_038 = $onleft_1;
      $onright_039 = $onright_1;
      $16 = $19;
      label = 20;
      break;
    }
   case 23:
    $tobool78 = $onleft_1 << 24 >> 24 != 0;
    $cmp81 = $onright_1 << 24 >> 24 == 0;
    $or_cond33 = $tobool78 & $cmp81;
    if ($or_cond33) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $add = $1 + 1 | 0;
    HEAP32[$bounds >> 2] = $add;
    label = 25;
    break;
   case 25:
    $tobool87 = $onright_1 << 24 >> 24 != 0;
    $cmp90 = $onleft_1 << 24 >> 24 == 0;
    $or_cond34 = $tobool87 & $cmp90;
    if ($or_cond34) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $sub = $1 - 1 | 0;
    $arrayidx93 = $bounds + 4 | 0;
    HEAP32[$arrayidx93 >> 2] = $sub;
    label = 27;
    break;
   case 27:
    STACKTOP = __stackBase__;
    return;
  }
}
function _exchange($v, $w) {
  $v = $v | 0;
  $w = $w | 0;
  var $0 = 0, $order = 0, $1 = 0, $order3 = 0, $2 = 0;
  $0 = HEAP32[$v + 236 >> 2] | 0;
  $order = $v + 240 | 0;
  $1 = HEAP32[$order >> 2] | 0;
  $order3 = $w + 240 | 0;
  $2 = HEAP32[$order3 >> 2] | 0;
  HEAP32[$order >> 2] = $2;
  HEAP32[(HEAP32[(HEAP32[(HEAP32[41526] | 0) + 224 >> 2] | 0) + ($0 * 44 & -1) + 4 >> 2] | 0) + ($2 << 2) >> 2] = $v;
  HEAP32[$order3 >> 2] = $1;
  HEAP32[(HEAP32[(HEAP32[(HEAP32[41526] | 0) + 224 >> 2] | 0) + ($0 * 44 & -1) + 4 >> 2] | 0) + ($1 << 2) >> 2] = $w;
  return;
}
function _flat_rev($g, $e) {
  $g = $g | 0;
  $e = $e | 0;
  var $head = 0, $0 = 0, $list = 0, $1 = 0, $tobool = 0, $2 = 0, $list4 = 0, $3 = 0, $tail = 0, $j_0 = 0, $arrayidx = 0, $4 = 0, $tobool5 = 0, $head6 = 0, $5 = 0, $6 = 0, $cmp = 0, $inc = 0, $to_virt = 0, $7 = 0, $cmp12 = 0, $edge_type = 0, $8 = 0, $cmp18 = 0, $to_orig = 0, $9 = 0, $cmp21 = 0, $tail27 = 0, $10 = 0, $list29 = 0, $11 = 0, $tobool30 = 0, $12 = 0, $size = 0, $13 = 0, $add = 0, $mul = 0, $call = 0, $size41 = 0, $14 = 0, $add42 = 0, $mul43 = 0, $call44 = 0, $call_sink = 0, $15 = 0, $16 = 0, $list48 = 0, $17 = 0, $size52 = 0, $18 = 0, $inc53 = 0, $19 = 0, $list57 = 0, $20 = 0, $arrayidx58 = 0, $21 = 0, $size62 = 0, $22 = 0, $list66 = 0, $23 = 0, $arrayidx67 = 0, $24 = 0, $tail70 = 0, $25 = 0, $call71 = 0, $edge_type73 = 0, $26 = 0, $cmp75 = 0, $edge_type79 = 0, $_ = 0, $label = 0, $27 = 0, $label86 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $head = $e + 12 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $list = $0 + 192 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$head >> 2] | 0;
    $list4 = $2 + 192 | 0;
    $3 = HEAP32[$list4 >> 2] | 0;
    $tail = $e + 16 | 0;
    $j_0 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx = $3 + ($j_0 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $tobool5 = ($4 | 0) == 0;
    if ($tobool5) {
      label = 15;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $head6 = $4 + 12 | 0;
    $5 = HEAP32[$head6 >> 2] | 0;
    $6 = HEAP32[$tail >> 2] | 0;
    $cmp = ($5 | 0) == ($6 | 0);
    $inc = $j_0 + 1 | 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      $j_0 = $inc;
      label = 4;
      break;
    }
   case 6:
    _merge_oneway($e, $4);
    $to_virt = $e + 188 | 0;
    $7 = HEAP32[$to_virt >> 2] | 0;
    $cmp12 = ($7 | 0) == 0;
    if ($cmp12) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$to_virt >> 2] = $4;
    label = 8;
    break;
   case 8:
    $edge_type = $4 + 128 | 0;
    $8 = HEAP8[$edge_type] | 0;
    $cmp18 = $8 << 24 >> 24 == 4;
    if ($cmp18) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $to_orig = $4 + 132 | 0;
    $9 = HEAP32[$to_orig >> 2] | 0;
    $cmp21 = ($9 | 0) == 0;
    if ($cmp21) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$to_orig >> 2] = $e;
    label = 11;
    break;
   case 11:
    $tail27 = $e + 16 | 0;
    $10 = HEAP32[$tail27 >> 2] | 0;
    $list29 = $10 + 208 | 0;
    $11 = HEAP32[$list29 >> 2] | 0;
    $tobool30 = ($11 | 0) == 0;
    if ($tobool30) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $12 = $11;
    $size = $10 + 212 | 0;
    $13 = HEAP32[$size >> 2] | 0;
    $add = $13 << 2;
    $mul = $add + 8 | 0;
    $call = _grealloc($12, $mul) | 0;
    $call_sink = $call;
    label = 14;
    break;
   case 13:
    $size41 = $10 + 212 | 0;
    $14 = HEAP32[$size41 >> 2] | 0;
    $add42 = $14 << 2;
    $mul43 = $add42 + 8 | 0;
    $call44 = _gmalloc($mul43) | 0;
    $call_sink = $call44;
    label = 14;
    break;
   case 14:
    $15 = $call_sink;
    $16 = HEAP32[$tail27 >> 2] | 0;
    $list48 = $16 + 208 | 0;
    HEAP32[$list48 >> 2] = $15;
    $17 = HEAP32[$tail27 >> 2] | 0;
    $size52 = $17 + 212 | 0;
    $18 = HEAP32[$size52 >> 2] | 0;
    $inc53 = $18 + 1 | 0;
    HEAP32[$size52 >> 2] = $inc53;
    $19 = HEAP32[$tail27 >> 2] | 0;
    $list57 = $19 + 208 | 0;
    $20 = HEAP32[$list57 >> 2] | 0;
    $arrayidx58 = $20 + ($18 << 2) | 0;
    HEAP32[$arrayidx58 >> 2] = $e;
    $21 = HEAP32[$tail27 >> 2] | 0;
    $size62 = $21 + 212 | 0;
    $22 = HEAP32[$size62 >> 2] | 0;
    $list66 = $21 + 208 | 0;
    $23 = HEAP32[$list66 >> 2] | 0;
    $arrayidx67 = $23 + ($22 << 2) | 0;
    HEAP32[$arrayidx67 >> 2] = 0;
    label = 16;
    break;
   case 15:
    $24 = HEAP32[$head >> 2] | 0;
    $tail70 = $e + 16 | 0;
    $25 = HEAP32[$tail70 >> 2] | 0;
    $call71 = _new_virtual_edge($24, $25, $e) | 0;
    $edge_type73 = $e + 128 | 0;
    $26 = HEAP8[$edge_type73] | 0;
    $cmp75 = $26 << 24 >> 24 == 4;
    $edge_type79 = $call71 + 128 | 0;
    $_ = $cmp75 ? 4 : 3;
    HEAP8[$edge_type79] = $_;
    $label = $e + 112 | 0;
    $27 = HEAP32[$label >> 2] | 0;
    $label86 = $call71 + 112 | 0;
    HEAP32[$label86 >> 2] = $27;
    _flat_edge($g, $call71);
    label = 16;
    break;
   case 16:
    return;
  }
}
function _allocate_ranks($g) {
  $g = $g | 0;
  var $maxrank = 0, $0 = 0, $conv = 0, $add = 0, $mul = 0, $call = 0, $1 = 0, $2 = 0, $call1 = 0, $tobool46 = 0, $n_0_in47 = 0, $rank = 0, $3 = 0, $4 = 0, $arrayidx = 0, $5 = 0, $inc = 0, $call3 = 0, $tobool544 = 0, $e_0_in45 = 0, $tail = 0, $6 = 0, $rank8 = 0, $7 = 0, $8 = 0, $head = 0, $9 = 0, $rank10 = 0, $10 = 0, $11 = 0, $cmp = 0, $_ = 0, $_37 = 0, $r_041 = 0, $cmp1442 = 0, $r_043 = 0, $arrayidx17 = 0, $12 = 0, $inc18 = 0, $r_0 = 0, $cmp14 = 0, $call21 = 0, $tobool5 = 0, $call24 = 0, $tobool = 0, $13 = 0, $conv28 = 0, $14 = 0, $mul30 = 0, $call31 = 0, $15 = 0, $rank33 = 0, $minrank = 0, $16 = 0, $17 = 0, $cmp4039 = 0, $conv35 = 0, $r_140 = 0, $arrayidx43 = 0, $18 = 0, $19 = 0, $n47 = 0, $20 = 0, $an = 0, $21 = 0, $add52 = 0, $mul53 = 0, $call54 = 0, $22 = 0, $23 = 0, $v = 0, $24 = 0, $av = 0, $inc62 = 0, $25 = 0, $conv39 = 0, $cmp40 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $maxrank = $g + 250 | 0;
    $0 = HEAP16[$maxrank >> 1] | 0;
    $conv = $0 << 16 >> 16;
    $add = $conv << 2;
    $mul = $add + 8 | 0;
    $call = _zmalloc($mul) | 0;
    $1 = $call;
    $2 = $g;
    $call1 = _agfstnode($2) | 0;
    $tobool46 = ($call1 | 0) == 0;
    if ($tobool46) {
      label = 8;
      break;
    } else {
      $n_0_in47 = $call1;
      label = 3;
      break;
    }
   case 3:
    $rank = $n_0_in47 + 236 | 0;
    $3 = $rank;
    $4 = HEAP32[$3 >> 2] | 0;
    $arrayidx = $1 + ($4 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $inc = $5 + 1 | 0;
    HEAP32[$arrayidx >> 2] = $inc;
    $call3 = _agfstout($2, $n_0_in47) | 0;
    $tobool544 = ($call3 | 0) == 0;
    if ($tobool544) {
      label = 7;
      break;
    } else {
      $e_0_in45 = $call3;
      label = 4;
      break;
    }
   case 4:
    $tail = $e_0_in45 + 16 | 0;
    $6 = HEAP32[$tail >> 2] | 0;
    $rank8 = $6 + 236 | 0;
    $7 = $rank8;
    $8 = HEAP32[$7 >> 2] | 0;
    $head = $e_0_in45 + 12 | 0;
    $9 = HEAP32[$head >> 2] | 0;
    $rank10 = $9 + 236 | 0;
    $10 = $rank10;
    $11 = HEAP32[$10 >> 2] | 0;
    $cmp = ($8 | 0) > ($11 | 0);
    $_ = $cmp ? $8 : $11;
    $_37 = $cmp ? $11 : $8;
    $r_041 = $_37 + 1 | 0;
    $cmp1442 = ($r_041 | 0) < ($_ | 0);
    if ($cmp1442) {
      $r_043 = $r_041;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $arrayidx17 = $1 + ($r_043 << 2) | 0;
    $12 = HEAP32[$arrayidx17 >> 2] | 0;
    $inc18 = $12 + 1 | 0;
    HEAP32[$arrayidx17 >> 2] = $inc18;
    $r_0 = $r_043 + 1 | 0;
    $cmp14 = ($r_0 | 0) < ($_ | 0);
    if ($cmp14) {
      $r_043 = $r_0;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call21 = _agnxtout($2, $e_0_in45) | 0;
    $tobool5 = ($call21 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      $e_0_in45 = $call21;
      label = 4;
      break;
    }
   case 7:
    $call24 = _agnxtnode($2, $n_0_in47) | 0;
    $tobool = ($call24 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $n_0_in47 = $call24;
      label = 3;
      break;
    }
   case 8:
    $13 = HEAP16[$maxrank >> 1] | 0;
    $conv28 = $13 << 16 >> 16;
    $14 = $conv28 * 44 & -1;
    $mul30 = $14 + 88 | 0;
    $call31 = _zmalloc($mul30) | 0;
    $15 = $call31;
    $rank33 = $g + 224 | 0;
    HEAP32[$rank33 >> 2] = $15;
    $minrank = $g + 248 | 0;
    $16 = HEAP16[$minrank >> 1] | 0;
    $17 = HEAP16[$maxrank >> 1] | 0;
    $cmp4039 = $16 << 16 >> 16 > $17 << 16 >> 16;
    if ($cmp4039) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $conv35 = $16 << 16 >> 16;
    $r_140 = $conv35;
    label = 10;
    break;
   case 10:
    $arrayidx43 = $1 + ($r_140 << 2) | 0;
    $18 = HEAP32[$arrayidx43 >> 2] | 0;
    $19 = HEAP32[$rank33 >> 2] | 0;
    $n47 = $19 + ($r_140 * 44 & -1) | 0;
    HEAP32[$n47 >> 2] = $18;
    $20 = HEAP32[$rank33 >> 2] | 0;
    $an = $20 + ($r_140 * 44 & -1) + 8 | 0;
    HEAP32[$an >> 2] = $18;
    $21 = HEAP32[$arrayidx43 >> 2] | 0;
    $add52 = $21 << 2;
    $mul53 = $add52 + 4 | 0;
    $call54 = _zmalloc($mul53) | 0;
    $22 = $call54;
    $23 = HEAP32[$rank33 >> 2] | 0;
    $v = $23 + ($r_140 * 44 & -1) + 4 | 0;
    HEAP32[$v >> 2] = $22;
    $24 = HEAP32[$rank33 >> 2] | 0;
    $av = $24 + ($r_140 * 44 & -1) + 12 | 0;
    HEAP32[$av >> 2] = $22;
    $inc62 = $r_140 + 1 | 0;
    $25 = HEAP16[$maxrank >> 1] | 0;
    $conv39 = $25 << 16 >> 16;
    $cmp40 = ($inc62 | 0) > ($conv39 | 0);
    if ($cmp40) {
      label = 11;
      break;
    } else {
      $r_140 = $inc62;
      label = 10;
      break;
    }
   case 11:
    _free($call);
    return;
  }
}
function _build_ranks($g, $pass) {
  $g = $g | 0;
  $pass = $pass | 0;
  var $n_nodes = 0, $0 = 0, $call = 0, $nlist = 0, $n_061 = 0, $tobool62 = 0, $n_063 = 0, $mark = 0, $next = 0, $n_0 = 0, $tobool = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp59 = 0, $conv = 0, $rank = 0, $n_155 = 0, $tobool1756 = 0, $cmp19 = 0, $3 = 0, $4 = 0, $i_060 = 0, $5 = 0, $n11 = 0, $inc = 0, $6 = 0, $conv7 = 0, $cmp = 0, $n_157 = 0, $list = 0, $list23 = 0, $cond_in = 0, $cond = 0, $7 = 0, $cmp25 = 0, $mark28 = 0, $8 = 0, $cmp30 = 0, $call3552 = 0, $tobool3653 = 0, $call3554 = 0, $ranktype = 0, $9 = 0, $cmp39 = 0, $10 = 0, $call35 = 0, $tobool36 = 0, $next46 = 0, $n_1 = 0, $tobool17 = 0, $call48 = 0, $tobool49 = 0, $call51 = 0, $11 = 0, $12 = 0, $cmp6050 = 0, $conv55 = 0, $rankdir = 0, $rank70 = 0, $i_151 = 0, $13 = 0, $rank64 = 0, $14 = 0, $valid = 0, $15 = 0, $and67 = 0, $tobool68 = 0, $16 = 0, $n72 = 0, $17 = 0, $cmp73 = 0, $v = 0, $18 = 0, $sub = 0, $div = 0, $j_048 = 0, $arrayidx88 = 0, $19 = 0, $sub89 = 0, $arrayidx90 = 0, $20 = 0, $inc92 = 0, $cmp85 = 0, $inc96 = 0, $21 = 0, $conv59 = 0, $cmp60 = 0, $root = 0, $22 = 0, $cmp98 = 0, $call101 = 0, $cmp102 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_nodes = $g + 244 | 0;
    $0 = HEAP32[$n_nodes >> 2] | 0;
    $call = _new_queue($0) | 0;
    $nlist = $g + 220 | 0;
    $n_061 = HEAP32[$nlist >> 2] | 0;
    $tobool62 = ($n_061 | 0) == 0;
    if ($tobool62) {
      label = 4;
      break;
    } else {
      $n_063 = $n_061;
      label = 3;
      break;
    }
   case 3:
    $mark = $n_063 + 163 | 0;
    HEAP8[$mark] = 0;
    $next = $n_063 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_063 = $n_0;
      label = 3;
      break;
    }
   case 4:
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp59 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp59) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $conv = $1 << 16 >> 16;
    $rank = $g + 224 | 0;
    $i_060 = $conv;
    label = 8;
    break;
   case 6:
    $n_155 = HEAP32[$nlist >> 2] | 0;
    $tobool1756 = ($n_155 | 0) == 0;
    if ($tobool1756) {
      label = 17;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp19 = ($pass | 0) == 0;
    $3 = $g;
    $4 = $call;
    $n_157 = $n_155;
    label = 9;
    break;
   case 8:
    $5 = HEAP32[$rank >> 2] | 0;
    $n11 = $5 + ($i_060 * 44 & -1) | 0;
    HEAP32[$n11 >> 2] = 0;
    $inc = $i_060 + 1 | 0;
    $6 = HEAP16[$maxrank >> 1] | 0;
    $conv7 = $6 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv7 | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      $i_060 = $inc;
      label = 8;
      break;
    }
   case 9:
    $list = $n_157 + 176 | 0;
    $list23 = $n_157 + 184 | 0;
    $cond_in = $cmp19 ? $list : $list23;
    $cond = HEAP32[$cond_in >> 2] | 0;
    $7 = HEAP32[$cond >> 2] | 0;
    $cmp25 = ($7 | 0) == 0;
    if ($cmp25) {
      label = 10;
      break;
    } else {
      label = 16;
      break;
    }
   case 10:
    $mark28 = $n_157 + 163 | 0;
    $8 = HEAP8[$mark28] | 0;
    $cmp30 = $8 << 24 >> 24 == 0;
    if ($cmp30) {
      label = 11;
      break;
    } else {
      label = 16;
      break;
    }
   case 11:
    HEAP8[$mark28] = 1;
    _enqueue($call, $n_157);
    $call3552 = _dequeue($call) | 0;
    $tobool3653 = ($call3552 | 0) == 0;
    if ($tobool3653) {
      label = 16;
      break;
    } else {
      $call3554 = $call3552;
      label = 12;
      break;
    }
   case 12:
    $ranktype = $call3554 + 165 | 0;
    $9 = HEAP8[$ranktype] | 0;
    $cmp39 = $9 << 24 >> 24 == 7;
    if ($cmp39) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _install_in_rank($g, $call3554);
    _enqueue_neighbors($call, $call3554, $pass);
    label = 15;
    break;
   case 14:
    $10 = $call3554;
    _install_cluster($3, $10, $pass, $4);
    label = 15;
    break;
   case 15:
    $call35 = _dequeue($call) | 0;
    $tobool36 = ($call35 | 0) == 0;
    if ($tobool36) {
      label = 16;
      break;
    } else {
      $call3554 = $call35;
      label = 12;
      break;
    }
   case 16:
    $next46 = $n_157 + 168 | 0;
    $n_1 = HEAP32[$next46 >> 2] | 0;
    $tobool17 = ($n_1 | 0) == 0;
    if ($tobool17) {
      label = 17;
      break;
    } else {
      $n_157 = $n_1;
      label = 9;
      break;
    }
   case 17:
    $call48 = _dequeue($call) | 0;
    $tobool49 = ($call48 | 0) == 0;
    if ($tobool49) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call51 = _agerr(1, 109616, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0) | 0;
    label = 19;
    break;
   case 19:
    $11 = HEAP16[$minrank >> 1] | 0;
    $12 = HEAP16[$maxrank >> 1] | 0;
    $cmp6050 = $11 << 16 >> 16 > $12 << 16 >> 16;
    if ($cmp6050) {
      label = 26;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $conv55 = $11 << 16 >> 16;
    $rankdir = $g + 156 | 0;
    $rank70 = $g + 224 | 0;
    $i_151 = $conv55;
    label = 21;
    break;
   case 21:
    $13 = HEAP32[41526] | 0;
    $rank64 = $13 + 224 | 0;
    $14 = HEAP32[$rank64 >> 2] | 0;
    $valid = $14 + ($i_151 * 44 & -1) + 33 | 0;
    HEAP8[$valid] = 0;
    $15 = HEAP32[$rankdir >> 2] | 0;
    $and67 = $15 & 1;
    $tobool68 = ($and67 | 0) == 0;
    if ($tobool68) {
      label = 25;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $16 = HEAP32[$rank70 >> 2] | 0;
    $n72 = $16 + ($i_151 * 44 & -1) | 0;
    $17 = HEAP32[$n72 >> 2] | 0;
    $cmp73 = ($17 | 0) > 0;
    if ($cmp73) {
      label = 23;
      break;
    } else {
      label = 25;
      break;
    }
   case 23:
    $v = $16 + ($i_151 * 44 & -1) + 4 | 0;
    $18 = HEAP32[$v >> 2] | 0;
    $sub = $17 - 1 | 0;
    $div = ($sub | 0) / 2 & -1;
    $j_048 = 0;
    label = 24;
    break;
   case 24:
    $arrayidx88 = $18 + ($j_048 << 2) | 0;
    $19 = HEAP32[$arrayidx88 >> 2] | 0;
    $sub89 = $sub - $j_048 | 0;
    $arrayidx90 = $18 + ($sub89 << 2) | 0;
    $20 = HEAP32[$arrayidx90 >> 2] | 0;
    _exchange($19, $20);
    $inc92 = $j_048 + 1 | 0;
    $cmp85 = ($inc92 | 0) > ($div | 0);
    if ($cmp85) {
      label = 25;
      break;
    } else {
      $j_048 = $inc92;
      label = 24;
      break;
    }
   case 25:
    $inc96 = $i_151 + 1 | 0;
    $21 = HEAP16[$maxrank >> 1] | 0;
    $conv59 = $21 << 16 >> 16;
    $cmp60 = ($inc96 | 0) > ($conv59 | 0);
    if ($cmp60) {
      label = 26;
      break;
    } else {
      $i_151 = $inc96;
      label = 21;
      break;
    }
   case 26:
    $root = $g + 32 | 0;
    $22 = HEAP32[$root >> 2] | 0;
    $cmp98 = ($22 | 0) == ($g | 0);
    if ($cmp98) {
      label = 27;
      break;
    } else {
      label = 29;
      break;
    }
   case 27:
    $call101 = _ncross(0) | 0;
    $cmp102 = ($call101 | 0) > 0;
    if ($cmp102) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    _transpose($g, 0);
    label = 29;
    break;
   case 29:
    _free_queue($call);
    STACKTOP = __stackBase__;
    return;
  }
}
function _enqueue_neighbors($q, $n0, $pass) {
  $q = $q | 0;
  $n0 = $n0 | 0;
  $pass = $pass | 0;
  var $cmp = 0, $size14 = 0, $0 = 0, $cmp1518 = 0, $list20 = 0, $size = 0, $1 = 0, $cmp115 = 0, $list = 0, $i_016 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $head = 0, $4 = 0, $mark = 0, $5 = 0, $cmp5 = 0, $6 = 0, $inc = 0, $7 = 0, $cmp1 = 0, $i_119 = 0, $8 = 0, $arrayidx21 = 0, $9 = 0, $tail = 0, $10 = 0, $mark23 = 0, $11 = 0, $cmp25 = 0, $12 = 0, $inc34 = 0, $13 = 0, $cmp15 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($pass | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $size14 = $n0 + 180 | 0;
    $0 = HEAP32[$size14 >> 2] | 0;
    $cmp1518 = ($0 | 0) > 0;
    if ($cmp1518) {
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 4:
    $list20 = $n0 + 176 | 0;
    $i_119 = 0;
    label = 10;
    break;
   case 5:
    $size = $n0 + 188 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $cmp115 = ($1 | 0) > 0;
    if ($cmp115) {
      label = 6;
      break;
    } else {
      label = 13;
      break;
    }
   case 6:
    $list = $n0 + 184 | 0;
    $i_016 = 0;
    label = 7;
    break;
   case 7:
    $2 = HEAP32[$list >> 2] | 0;
    $arrayidx = $2 + ($i_016 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $head = $3 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $mark = $4 + 163 | 0;
    $5 = HEAP8[$mark] | 0;
    $cmp5 = $5 << 24 >> 24 == 0;
    if ($cmp5) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAP8[$mark] = 1;
    $6 = HEAP32[$head >> 2] | 0;
    _enqueue($q, $6);
    label = 9;
    break;
   case 9:
    $inc = $i_016 + 1 | 0;
    $7 = HEAP32[$size >> 2] | 0;
    $cmp1 = ($inc | 0) < ($7 | 0);
    if ($cmp1) {
      $i_016 = $inc;
      label = 7;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    $8 = HEAP32[$list20 >> 2] | 0;
    $arrayidx21 = $8 + ($i_119 << 2) | 0;
    $9 = HEAP32[$arrayidx21 >> 2] | 0;
    $tail = $9 + 16 | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $mark23 = $10 + 163 | 0;
    $11 = HEAP8[$mark23] | 0;
    $cmp25 = $11 << 24 >> 24 == 0;
    if ($cmp25) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    HEAP8[$mark23] = 1;
    $12 = HEAP32[$tail >> 2] | 0;
    _enqueue($q, $12);
    label = 12;
    break;
   case 12:
    $inc34 = $i_119 + 1 | 0;
    $13 = HEAP32[$size14 >> 2] | 0;
    $cmp15 = ($inc34 | 0) < ($13 | 0);
    if ($cmp15) {
      $i_119 = $inc34;
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    return;
  }
}
function _ncross($g) {
  $g = $g | 0;
  var $0 = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp16 = 0, $conv = 0, $rank = 0, $count_018 = 0, $r_017 = 0, $3 = 0, $valid = 0, $4 = 0, $tobool = 0, $cache_nc = 0, $5 = 0, $call = 0, $6 = 0, $cache_nc11 = 0, $7 = 0, $valid16 = 0, $_pn = 0, $count_1 = 0, $inc = 0, $8 = 0, $conv2 = 0, $cmp = 0, $count_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41526] | 0;
    $minrank = $0 + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $0 + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp16 = $1 << 16 >> 16 < $2 << 16 >> 16;
    if ($cmp16) {
      label = 3;
      break;
    } else {
      $count_0_lcssa = 0;
      label = 8;
      break;
    }
   case 3:
    $conv = $1 << 16 >> 16;
    $rank = $0 + 224 | 0;
    $r_017 = $conv;
    $count_018 = 0;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$rank >> 2] | 0;
    $valid = $3 + ($r_017 * 44 & -1) + 33 | 0;
    $4 = HEAP8[$valid] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cache_nc = $3 + ($r_017 * 44 & -1) + 36 | 0;
    $5 = HEAP32[$cache_nc >> 2] | 0;
    $_pn = $5;
    label = 7;
    break;
   case 6:
    $call = _rcross($0, $r_017) | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $cache_nc11 = $6 + ($r_017 * 44 & -1) + 36 | 0;
    HEAP32[$cache_nc11 >> 2] = $call;
    $7 = HEAP32[$rank >> 2] | 0;
    $valid16 = $7 + ($r_017 * 44 & -1) + 33 | 0;
    HEAP8[$valid16] = 1;
    $_pn = $call;
    label = 7;
    break;
   case 7:
    $count_1 = $_pn + $count_018 | 0;
    $inc = $r_017 + 1 | 0;
    $8 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $8 << 16 >> 16;
    $cmp = ($inc | 0) < ($conv2 | 0);
    if ($cmp) {
      $r_017 = $inc;
      $count_018 = $count_1;
      label = 4;
      break;
    } else {
      $count_0_lcssa = $count_1;
      label = 8;
      break;
    }
   case 8:
    return $count_0_lcssa | 0;
  }
  return 0;
}
function _transpose($g, $reverse) {
  $g = $g | 0;
  $reverse = $reverse | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp19 = 0, $conv = 0, $rank = 0, $rank16 = 0, $r_020 = 0, $2 = 0, $candidate = 0, $inc = 0, $3 = 0, $conv2 = 0, $cmp = 0, $4 = 0, $5 = 0, $cmp1215 = 0, $conv7 = 0, $delta_017 = 0, $r_116 = 0, $6 = 0, $candidate18 = 0, $7 = 0, $tobool = 0, $call = 0, $add = 0, $delta_1 = 0, $inc20 = 0, $8 = 0, $conv11 = 0, $cmp12 = 0, $cmp22 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp19 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp19) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_020 = $conv;
    label = 5;
    break;
   case 4:
    $rank16 = $g + 224 | 0;
    label = 6;
    break;
   case 5:
    $2 = HEAP32[$rank >> 2] | 0;
    $candidate = $2 + ($r_020 * 44 & -1) + 32 | 0;
    HEAP8[$candidate] = 1;
    $inc = $r_020 + 1 | 0;
    $3 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $3 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $r_020 = $inc;
      label = 5;
      break;
    }
   case 6:
    $4 = HEAP16[$minrank >> 1] | 0;
    $5 = HEAP16[$maxrank >> 1] | 0;
    $cmp1215 = $4 << 16 >> 16 > $5 << 16 >> 16;
    if ($cmp1215) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $conv7 = $4 << 16 >> 16;
    $r_116 = $conv7;
    $delta_017 = 0;
    label = 8;
    break;
   case 8:
    $6 = HEAP32[$rank16 >> 2] | 0;
    $candidate18 = $6 + ($r_116 * 44 & -1) + 32 | 0;
    $7 = HEAP8[$candidate18] | 0;
    $tobool = $7 << 24 >> 24 == 0;
    if ($tobool) {
      $delta_1 = $delta_017;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $call = _transpose_step($g, $r_116, $reverse) | 0;
    $add = $call + $delta_017 | 0;
    $delta_1 = $add;
    label = 10;
    break;
   case 10:
    $inc20 = $r_116 + 1 | 0;
    $8 = HEAP16[$maxrank >> 1] | 0;
    $conv11 = $8 << 16 >> 16;
    $cmp12 = ($inc20 | 0) > ($conv11 | 0);
    if ($cmp12) {
      label = 11;
      break;
    } else {
      $r_116 = $inc20;
      $delta_017 = $delta_1;
      label = 8;
      break;
    }
   case 11:
    $cmp22 = ($delta_1 | 0) > 0;
    if ($cmp22) {
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    return;
  }
}
function _install_in_rank($g, $n) {
  $g = $g | 0;
  $n = $n | 0;
  var $rank = 0, $0 = 0, $rank2 = 0, $1 = 0, $n3 = 0, $2 = 0, $an = 0, $3 = 0, $cmp = 0, $name = 0, $4 = 0, $name7 = 0, $5 = 0, $call = 0, $v = 0, $6 = 0, $arrayidx11 = 0, $order = 0, $7 = 0, $n16 = 0, $8 = 0, $inc = 0, $9 = 0, $n20 = 0, $10 = 0, $an24 = 0, $11 = 0, $cmp25 = 0, $12 = 0, $13 = 0, $rank29 = 0, $14 = 0, $an31 = 0, $15 = 0, $cmp32 = 0, $minrank = 0, $16 = 0, $conv = 0, $cmp36 = 0, $maxrank = 0, $17 = 0, $conv39 = 0, $cmp40 = 0, $v47 = 0, $18 = 0, $add_ptr = 0, $av = 0, $19 = 0, $add_ptr57 = 0, $cmp58 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $n + 236 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $rank2 = $g + 224 | 0;
    $1 = HEAP32[$rank2 >> 2] | 0;
    $n3 = $1 + ($0 * 44 & -1) | 0;
    $2 = HEAP32[$n3 >> 2] | 0;
    $an = $1 + ($0 * 44 & -1) + 8 | 0;
    $3 = HEAP32[$an >> 2] | 0;
    $cmp = ($3 | 0) < 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $name = $g + 12 | 0;
    $4 = HEAP32[$name >> 2] | 0;
    $name7 = $n + 12 | 0;
    $5 = HEAP32[$name7 >> 2] | 0;
    $call = _agerr(1, 136624, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $4, HEAP32[tempInt + 8 >> 2] = $5, HEAP32[tempInt + 16 >> 2] = $0, HEAP32[tempInt + 24 >> 2] = $2, tempInt) | 0) | 0;
    _abort();
   case 4:
    $v = $1 + ($0 * 44 & -1) + 4 | 0;
    $6 = HEAP32[$v >> 2] | 0;
    $arrayidx11 = $6 + ($2 << 2) | 0;
    HEAP32[$arrayidx11 >> 2] = $n;
    $order = $n + 240 | 0;
    HEAP32[$order >> 2] = $2;
    $7 = HEAP32[$rank2 >> 2] | 0;
    $n16 = $7 + ($0 * 44 & -1) | 0;
    $8 = HEAP32[$n16 >> 2] | 0;
    $inc = $8 + 1 | 0;
    HEAP32[$n16 >> 2] = $inc;
    $9 = HEAP32[$rank2 >> 2] | 0;
    $n20 = $9 + ($0 * 44 & -1) | 0;
    $10 = HEAP32[$n20 >> 2] | 0;
    $an24 = $9 + ($0 * 44 & -1) + 8 | 0;
    $11 = HEAP32[$an24 >> 2] | 0;
    $cmp25 = ($10 | 0) > ($11 | 0);
    if ($cmp25) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(119784, 1028, 164184, 114216);
   case 6:
    $12 = HEAP32[$order >> 2] | 0;
    $13 = HEAP32[41526] | 0;
    $rank29 = $13 + 224 | 0;
    $14 = HEAP32[$rank29 >> 2] | 0;
    $an31 = $14 + ($0 * 44 & -1) + 8 | 0;
    $15 = HEAP32[$an31 >> 2] | 0;
    $cmp32 = ($12 | 0) > ($15 | 0);
    if ($cmp32) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    _abort();
   case 8:
    $minrank = $g + 248 | 0;
    $16 = HEAP16[$minrank >> 1] | 0;
    $conv = $16 << 16 >> 16;
    $cmp36 = ($0 | 0) < ($conv | 0);
    if ($cmp36) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $maxrank = $g + 250 | 0;
    $17 = HEAP16[$maxrank >> 1] | 0;
    $conv39 = $17 << 16 >> 16;
    $cmp40 = ($0 | 0) > ($conv39 | 0);
    if ($cmp40) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _abort();
   case 11:
    $v47 = $9 + ($0 * 44 & -1) + 4 | 0;
    $18 = HEAP32[$v47 >> 2] | 0;
    $add_ptr = $18 + ($12 << 2) | 0;
    $av = $9 + ($0 * 44 & -1) + 12 | 0;
    $19 = HEAP32[$av >> 2] | 0;
    $add_ptr57 = $19 + ($15 << 2) | 0;
    $cmp58 = $add_ptr >>> 0 > $add_ptr57 >>> 0;
    if ($cmp58) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    _abort();
   case 13:
    STACKTOP = __stackBase__;
    return;
  }
}
function _endpoint_class($n) {
  $n = $n | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $weight_class = 0, $1 = 0, $cmp4 = 0, $_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $n + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      $retval_0 = 2;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $weight_class = $n + 166 | 0;
    $1 = HEAP8[$weight_class] | 0;
    $cmp4 = $1 << 24 >> 24 < 2;
    $_ = $cmp4 & 1;
    $retval_0 = $_;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _local_cross($l, $dir) {
  $l = $l | 0;
  $dir = $dir | 0;
  var $cmp = 0, $list = 0, $0 = 0, $1 = 0, $tobool28 = 0, $2 = 0, $cross_0_be = 0, $arrayidx = 0, $3 = 0, $tobool = 0, $4 = 0, $i_030 = 0, $cross_029 = 0, $add = 0, $arrayidx523 = 0, $5 = 0, $tobool624 = 0, $head8 = 0, $6 = 0, $order10 = 0, $7 = 0, $x15 = 0, $8 = 0.0, $xpenalty = 0, $tail37 = 0, $9 = 0, $order39 = 0, $10 = 0, $x48 = 0, $11 = 0.0, $xpenalty55 = 0, $12 = 0, $cross_126 = 0, $j_025 = 0, $head = 0, $13 = 0, $order = 0, $14 = 0, $sub = 0, $conv = 0.0, $x = 0, $15 = 0.0, $sub16 = 0.0, $mul = 0.0, $cmp17 = 0, $16 = 0, $conv21 = 0, $xpenalty23 = 0, $17 = 0, $conv24 = 0, $mul25 = 0, $add26 = 0, $cross_2 = 0, $inc = 0, $arrayidx5 = 0, $18 = 0, $tobool6 = 0, $19 = 0, $cross_321 = 0, $j_120 = 0, $tail = 0, $20 = 0, $order36 = 0, $21 = 0, $sub40 = 0, $conv41 = 0.0, $x44 = 0, $22 = 0.0, $sub49 = 0.0, $mul50 = 0.0, $cmp51 = 0, $23 = 0, $conv56 = 0, $xpenalty58 = 0, $24 = 0, $conv59 = 0, $mul60 = 0, $add61 = 0, $cross_4 = 0, $inc64 = 0, $arrayidx32 = 0, $25 = 0, $tobool33 = 0, $cross_0_lcssa = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $l;
  $l = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$l >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$l + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($dir | 0) > 0;
    $list = $l | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool28 = ($1 | 0) == 0;
    if ($tobool28) {
      $cross_0_lcssa = 0;
      label = 16;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$list >> 2] | 0;
    $cross_029 = 0;
    $i_030 = 0;
    $4 = $1;
    label = 5;
    break;
   case 4:
    $arrayidx = $2 + ($add << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      $cross_0_lcssa = $cross_0_be;
      label = 16;
      break;
    } else {
      $cross_029 = $cross_0_be;
      $i_030 = $add;
      $4 = $3;
      label = 5;
      break;
    }
   case 5:
    $add = $i_030 + 1 | 0;
    $arrayidx523 = $2 + ($add << 2) | 0;
    $5 = HEAP32[$arrayidx523 >> 2] | 0;
    $tobool624 = ($5 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    if ($tobool624) {
      $cross_0_be = $cross_029;
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $head8 = $4 + 12 | 0;
    $6 = HEAP32[$head8 >> 2] | 0;
    $order10 = $6 + 240 | 0;
    $7 = HEAP32[$order10 >> 2] | 0;
    $x15 = $4 + 32 | 0;
    $8 = +HEAPF64[$x15 >> 3];
    $xpenalty = $4 + 170 | 0;
    $j_025 = $add;
    $cross_126 = $cross_029;
    $12 = $5;
    label = 10;
    break;
   case 8:
    if ($tobool624) {
      $cross_0_be = $cross_029;
      label = 4;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $tail37 = $4 + 16 | 0;
    $9 = HEAP32[$tail37 >> 2] | 0;
    $order39 = $9 + 240 | 0;
    $10 = HEAP32[$order39 >> 2] | 0;
    $x48 = $4 + 72 | 0;
    $11 = +HEAPF64[$x48 >> 3];
    $xpenalty55 = $4 + 170 | 0;
    $j_120 = $add;
    $cross_321 = $cross_029;
    $19 = $5;
    label = 13;
    break;
   case 10:
    $head = $12 + 12 | 0;
    $13 = HEAP32[$head >> 2] | 0;
    $order = $13 + 240 | 0;
    $14 = HEAP32[$order >> 2] | 0;
    $sub = $14 - $7 | 0;
    $conv = +($sub | 0);
    $x = $12 + 32 | 0;
    $15 = +HEAPF64[$x >> 3];
    $sub16 = $15 - $8;
    $mul = $conv * $sub16;
    $cmp17 = $mul < 0.0;
    if ($cmp17) {
      label = 11;
      break;
    } else {
      $cross_2 = $cross_126;
      label = 12;
      break;
    }
   case 11:
    $16 = HEAP16[$xpenalty >> 1] | 0;
    $conv21 = $16 << 16 >> 16;
    $xpenalty23 = $12 + 170 | 0;
    $17 = HEAP16[$xpenalty23 >> 1] | 0;
    $conv24 = $17 << 16 >> 16;
    $mul25 = Math_imul($conv24, $conv21);
    $add26 = $mul25 + $cross_126 | 0;
    $cross_2 = $add26;
    label = 12;
    break;
   case 12:
    $inc = $j_025 + 1 | 0;
    $arrayidx5 = $2 + ($inc << 2) | 0;
    $18 = HEAP32[$arrayidx5 >> 2] | 0;
    $tobool6 = ($18 | 0) == 0;
    if ($tobool6) {
      $cross_0_be = $cross_2;
      label = 4;
      break;
    } else {
      $j_025 = $inc;
      $cross_126 = $cross_2;
      $12 = $18;
      label = 10;
      break;
    }
   case 13:
    $tail = $19 + 16 | 0;
    $20 = HEAP32[$tail >> 2] | 0;
    $order36 = $20 + 240 | 0;
    $21 = HEAP32[$order36 >> 2] | 0;
    $sub40 = $21 - $10 | 0;
    $conv41 = +($sub40 | 0);
    $x44 = $19 + 72 | 0;
    $22 = +HEAPF64[$x44 >> 3];
    $sub49 = $22 - $11;
    $mul50 = $conv41 * $sub49;
    $cmp51 = $mul50 < 0.0;
    if ($cmp51) {
      label = 14;
      break;
    } else {
      $cross_4 = $cross_321;
      label = 15;
      break;
    }
   case 14:
    $23 = HEAP16[$xpenalty55 >> 1] | 0;
    $conv56 = $23 << 16 >> 16;
    $xpenalty58 = $19 + 170 | 0;
    $24 = HEAP16[$xpenalty58 >> 1] | 0;
    $conv59 = $24 << 16 >> 16;
    $mul60 = Math_imul($conv59, $conv56);
    $add61 = $mul60 + $cross_321 | 0;
    $cross_4 = $add61;
    label = 15;
    break;
   case 15:
    $inc64 = $j_120 + 1 | 0;
    $arrayidx32 = $2 + ($inc64 << 2) | 0;
    $25 = HEAP32[$arrayidx32 >> 2] | 0;
    $tobool33 = ($25 | 0) == 0;
    if ($tobool33) {
      $cross_0_be = $cross_4;
      label = 4;
      break;
    } else {
      $j_120 = $inc64;
      $cross_321 = $cross_4;
      $19 = $25;
      label = 13;
      break;
    }
   case 16:
    STACKTOP = __stackBase__;
    return $cross_0_lcssa | 0;
  }
  return 0;
}
function _left2right($g, $v, $w) {
  $g = $g | 0;
  $v = $v | 0;
  $w = $w | 0;
  var $_b = 0, $clust = 0, $0 = 0, $clust3 = 0, $1 = 0, $cmp4 = 0, $cmp4_not = 0, $tobool = 0, $or_cond = 0, $tobool11 = 0, $or_cond15 = 0, $ranktype = 0, $2 = 0, $cmp15 = 0, $node_type = 0, $3 = 0, $cmp20 = 0, $ranktype24 = 0, $4 = 0, $cmp26 = 0, $node_type30 = 0, $5 = 0, $cmp32 = 0, $rank = 0, $6 = 0, $rank48 = 0, $7 = 0, $flat = 0, $8 = 0, $cmp49 = 0, $rankdir = 0, $9 = 0, $and54 = 0, $tobool55 = 0, $w_v = 0, $v_w = 0, $low = 0, $10 = 0, $ncols = 0, $11 = 0, $mul = 0, $low60 = 0, $12 = 0, $add = 0, $data = 0, $13 = 0, $arrayidx61 = 0, $14 = 0, $conv62 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $_b = HEAP8[166152] | 0;
    $clust = $v + 216 | 0;
    $0 = HEAP32[$clust >> 2] | 0;
    $clust3 = $w + 216 | 0;
    $1 = HEAP32[$clust3 >> 2] | 0;
    $cmp4 = ($0 | 0) != ($1 | 0);
    if ($_b) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp4_not = $cmp4 ^ 1;
    $tobool = ($0 | 0) == 0;
    $or_cond = $tobool | $cmp4_not;
    $tobool11 = ($1 | 0) == 0;
    $or_cond15 = $or_cond | $tobool11;
    if ($or_cond15) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $ranktype = $v + 165 | 0;
    $2 = HEAP8[$ranktype] | 0;
    $cmp15 = $2 << 24 >> 24 == 7;
    if ($cmp15) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $node_type = $v + 162 | 0;
    $3 = HEAP8[$node_type] | 0;
    $cmp20 = $3 << 24 >> 24 == 1;
    if ($cmp20) {
      $retval_0 = 0;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $ranktype24 = $w + 165 | 0;
    $4 = HEAP8[$ranktype24] | 0;
    $cmp26 = $4 << 24 >> 24 == 7;
    if ($cmp26) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $node_type30 = $w + 162 | 0;
    $5 = HEAP8[$node_type30] | 0;
    $cmp32 = $5 << 24 >> 24 == 1;
    if ($cmp32) {
      $retval_0 = 0;
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $retval_0 = 1;
    label = 12;
    break;
   case 9:
    if ($cmp4) {
      $retval_0 = 1;
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $rank = $v + 236 | 0;
    $6 = HEAP32[$rank >> 2] | 0;
    $rank48 = $g + 224 | 0;
    $7 = HEAP32[$rank48 >> 2] | 0;
    $flat = $7 + ($6 * 44 & -1) + 40 | 0;
    $8 = HEAP32[$flat >> 2] | 0;
    $cmp49 = ($8 | 0) == 0;
    if ($cmp49) {
      $retval_0 = 0;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $rankdir = $g + 156 | 0;
    $9 = HEAP32[$rankdir >> 2] | 0;
    $and54 = $9 & 1;
    $tobool55 = ($and54 | 0) == 0;
    $w_v = $tobool55 ? $w : $v;
    $v_w = $tobool55 ? $v : $w;
    $low = $v_w + 284 | 0;
    $10 = HEAP32[$low >> 2] | 0;
    $ncols = $8 + 4 | 0;
    $11 = HEAP32[$ncols >> 2] | 0;
    $mul = Math_imul($11, $10);
    $low60 = $w_v + 284 | 0;
    $12 = HEAP32[$low60 >> 2] | 0;
    $add = $mul + $12 | 0;
    $data = $8 + 8 | 0;
    $13 = HEAP32[$data >> 2] | 0;
    $arrayidx61 = $13 + $add | 0;
    $14 = HEAP8[$arrayidx61] | 0;
    $conv62 = $14 << 24 >> 24;
    $retval_0 = $conv62;
    label = 12;
    break;
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _in_cross($v, $w) {
  $v = $v | 0;
  $w = $w | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool14 = 0, $list5 = 0, $2 = 0, $3 = 0, $tobool711 = 0, $4 = 0, $e2_016 = 0, $cross_015 = 0, $xpenalty = 0, $5 = 0, $conv = 0, $tail = 0, $6 = 0, $order = 0, $7 = 0, $8 = 0, $e1_013 = 0, $cross_112 = 0, $tail9 = 0, $9 = 0, $order11 = 0, $10 = 0, $sub = 0, $cmp = 0, $cmp13 = 0, $x = 0, $11 = 0.0, $12 = 0, $x19 = 0, $13 = 0.0, $cmp20 = 0, $14 = 0, $xpenalty23 = 0, $15 = 0, $conv24 = 0, $mul = 0, $add = 0, $cross_2 = 0, $incdec_ptr = 0, $16 = 0, $tobool7 = 0, $cross_1_lcssa = 0, $incdec_ptr26 = 0, $17 = 0, $tobool = 0, $cross_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $w + 176 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool14 = ($1 | 0) == 0;
    if ($tobool14) {
      $cross_0_lcssa = 0;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $list5 = $v + 176 | 0;
    $2 = HEAP32[$list5 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool711 = ($3 | 0) == 0;
    $cross_015 = 0;
    $e2_016 = $0;
    $4 = $1;
    label = 4;
    break;
   case 4:
    $xpenalty = $4 + 170 | 0;
    $5 = HEAP16[$xpenalty >> 1] | 0;
    $conv = $5 << 16 >> 16;
    $tail = $4 + 16 | 0;
    $6 = HEAP32[$tail >> 2] | 0;
    $order = $6 + 240 | 0;
    $7 = HEAP32[$order >> 2] | 0;
    if ($tobool711) {
      $cross_1_lcssa = $cross_015;
      label = 10;
      break;
    } else {
      $cross_112 = $cross_015;
      $e1_013 = $2;
      $8 = $3;
      label = 5;
      break;
    }
   case 5:
    $tail9 = $8 + 16 | 0;
    $9 = HEAP32[$tail9 >> 2] | 0;
    $order11 = $9 + 240 | 0;
    $10 = HEAP32[$order11 >> 2] | 0;
    $sub = $10 - $7 | 0;
    $cmp = ($sub | 0) > 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp13 = ($10 | 0) == ($7 | 0);
    if ($cmp13) {
      label = 7;
      break;
    } else {
      $cross_2 = $cross_112;
      label = 9;
      break;
    }
   case 7:
    $x = $8 + 32 | 0;
    $11 = +HEAPF64[$x >> 3];
    $12 = HEAP32[$e2_016 >> 2] | 0;
    $x19 = $12 + 32 | 0;
    $13 = +HEAPF64[$x19 >> 3];
    $cmp20 = $11 > $13;
    if ($cmp20) {
      label = 8;
      break;
    } else {
      $cross_2 = $cross_112;
      label = 9;
      break;
    }
   case 8:
    $14 = HEAP32[$e1_013 >> 2] | 0;
    $xpenalty23 = $14 + 170 | 0;
    $15 = HEAP16[$xpenalty23 >> 1] | 0;
    $conv24 = $15 << 16 >> 16;
    $mul = Math_imul($conv24, $conv);
    $add = $mul + $cross_112 | 0;
    $cross_2 = $add;
    label = 9;
    break;
   case 9:
    $incdec_ptr = $e1_013 + 4 | 0;
    $16 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool7 = ($16 | 0) == 0;
    if ($tobool7) {
      $cross_1_lcssa = $cross_2;
      label = 10;
      break;
    } else {
      $cross_112 = $cross_2;
      $e1_013 = $incdec_ptr;
      $8 = $16;
      label = 5;
      break;
    }
   case 10:
    $incdec_ptr26 = $e2_016 + 4 | 0;
    $17 = HEAP32[$incdec_ptr26 >> 2] | 0;
    $tobool = ($17 | 0) == 0;
    if ($tobool) {
      $cross_0_lcssa = $cross_1_lcssa;
      label = 11;
      break;
    } else {
      $cross_015 = $cross_1_lcssa;
      $e2_016 = $incdec_ptr26;
      $4 = $17;
      label = 4;
      break;
    }
   case 11:
    return $cross_0_lcssa | 0;
  }
  return 0;
}
function _out_cross($v, $w) {
  $v = $v | 0;
  $w = $w | 0;
  var $list = 0, $0 = 0, $1 = 0, $tobool14 = 0, $list5 = 0, $2 = 0, $3 = 0, $tobool711 = 0, $4 = 0, $e2_016 = 0, $cross_015 = 0, $xpenalty = 0, $5 = 0, $conv = 0, $head = 0, $6 = 0, $order = 0, $7 = 0, $8 = 0, $e1_013 = 0, $cross_112 = 0, $head9 = 0, $9 = 0, $order11 = 0, $10 = 0, $sub = 0, $cmp = 0, $cmp13 = 0, $x = 0, $11 = 0.0, $12 = 0, $x19 = 0, $13 = 0.0, $cmp20 = 0, $14 = 0, $xpenalty23 = 0, $15 = 0, $conv24 = 0, $mul = 0, $add = 0, $cross_2 = 0, $incdec_ptr = 0, $16 = 0, $tobool7 = 0, $cross_1_lcssa = 0, $incdec_ptr26 = 0, $17 = 0, $tobool = 0, $cross_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $list = $w + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool14 = ($1 | 0) == 0;
    if ($tobool14) {
      $cross_0_lcssa = 0;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $list5 = $v + 184 | 0;
    $2 = HEAP32[$list5 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool711 = ($3 | 0) == 0;
    $cross_015 = 0;
    $e2_016 = $0;
    $4 = $1;
    label = 4;
    break;
   case 4:
    $xpenalty = $4 + 170 | 0;
    $5 = HEAP16[$xpenalty >> 1] | 0;
    $conv = $5 << 16 >> 16;
    $head = $4 + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $order = $6 + 240 | 0;
    $7 = HEAP32[$order >> 2] | 0;
    if ($tobool711) {
      $cross_1_lcssa = $cross_015;
      label = 10;
      break;
    } else {
      $cross_112 = $cross_015;
      $e1_013 = $2;
      $8 = $3;
      label = 5;
      break;
    }
   case 5:
    $head9 = $8 + 12 | 0;
    $9 = HEAP32[$head9 >> 2] | 0;
    $order11 = $9 + 240 | 0;
    $10 = HEAP32[$order11 >> 2] | 0;
    $sub = $10 - $7 | 0;
    $cmp = ($sub | 0) > 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp13 = ($10 | 0) == ($7 | 0);
    if ($cmp13) {
      label = 7;
      break;
    } else {
      $cross_2 = $cross_112;
      label = 9;
      break;
    }
   case 7:
    $x = $8 + 72 | 0;
    $11 = +HEAPF64[$x >> 3];
    $12 = HEAP32[$e2_016 >> 2] | 0;
    $x19 = $12 + 72 | 0;
    $13 = +HEAPF64[$x19 >> 3];
    $cmp20 = $11 > $13;
    if ($cmp20) {
      label = 8;
      break;
    } else {
      $cross_2 = $cross_112;
      label = 9;
      break;
    }
   case 8:
    $14 = HEAP32[$e1_013 >> 2] | 0;
    $xpenalty23 = $14 + 170 | 0;
    $15 = HEAP16[$xpenalty23 >> 1] | 0;
    $conv24 = $15 << 16 >> 16;
    $mul = Math_imul($conv24, $conv);
    $add = $mul + $cross_112 | 0;
    $cross_2 = $add;
    label = 9;
    break;
   case 9:
    $incdec_ptr = $e1_013 + 4 | 0;
    $16 = HEAP32[$incdec_ptr >> 2] | 0;
    $tobool7 = ($16 | 0) == 0;
    if ($tobool7) {
      $cross_1_lcssa = $cross_2;
      label = 10;
      break;
    } else {
      $cross_112 = $cross_2;
      $e1_013 = $incdec_ptr;
      $8 = $16;
      label = 5;
      break;
    }
   case 10:
    $incdec_ptr26 = $e2_016 + 4 | 0;
    $17 = HEAP32[$incdec_ptr26 >> 2] | 0;
    $tobool = ($17 | 0) == 0;
    if ($tobool) {
      $cross_0_lcssa = $cross_1_lcssa;
      label = 11;
      break;
    } else {
      $cross_015 = $cross_1_lcssa;
      $e2_016 = $incdec_ptr26;
      $4 = $17;
      label = 4;
      break;
    }
   case 11:
    return $cross_0_lcssa | 0;
  }
  return 0;
}
function _rcross($g, $r) {
  $g = $g | 0;
  $r = $r | 0;
  var $rank = 0, $0 = 0, $v1 = 0, $1 = 0, $2 = 0, $add = 0, $3 = 0, $rank3 = 0, $4 = 0, $n = 0, $5 = 0, $cmp = 0, $add10 = 0, $6 = 0, $tobool = 0, $7 = 0, $mul = 0, $call = 0, $mul11 = 0, $call12 = 0, $call_sink = 0, $8 = 0, $9 = 0, $n1777 = 0, $10 = 0, $cmp1878 = 0, $11 = 0, $n2471 = 0, $12 = 0, $cmp2572 = 0, $i_079 = 0, $13 = 0, $arrayidx19 = 0, $inc = 0, $14 = 0, $n17 = 0, $15 = 0, $cmp18 = 0, $cross_0_lcssa = 0, $16 = 0, $n8149 = 0, $17 = 0, $cmp8250 = 0, $18 = 0, $n81 = 0, $19 = 0, $top_075 = 0, $max_074 = 0, $cross_073 = 0, $cmp27 = 0, $arrayidx30 = 0, $20 = 0, $list59 = 0, $21 = 0, $22 = 0, $tobool3361 = 0, $23 = 0, $list = 0, $24 = 0, $25 = 0, $26 = 0, $i_163 = 0, $cross_162 = 0, $head = 0, $27 = 0, $order = 0, $28 = 0, $k_054 = 0, $cmp3855 = 0, $xpenalty = 0, $29 = 0, $conv = 0, $k_057 = 0, $cross_256 = 0, $arrayidx40 = 0, $30 = 0, $mul42 = 0, $add43 = 0, $k_0 = 0, $cmp38 = 0, $cross_2_lcssa = 0, $inc48 = 0, $arrayidx32 = 0, $31 = 0, $tobool33 = 0, $cross_3 = 0, $arrayidx52 = 0, $32 = 0, $list5565 = 0, $33 = 0, $34 = 0, $tobool5767 = 0, $35 = 0, $i_269 = 0, $max_168 = 0, $head59 = 0, $36 = 0, $order61 = 0, $37 = 0, $cmp62 = 0, $_max_1 = 0, $xpenalty67 = 0, $38 = 0, $conv68 = 0, $39 = 0, $arrayidx69 = 0, $40 = 0, $add70 = 0, $inc72 = 0, $41 = 0, $list55 = 0, $42 = 0, $arrayidx56 = 0, $43 = 0, $tobool57 = 0, $max_1_lcssa = 0, $inc75 = 0, $44 = 0, $n24 = 0, $45 = 0, $cmp25 = 0, $cross_4_lcssa = 0, $46 = 0, $n10645 = 0, $47 = 0, $cmp10746 = 0, $48 = 0, $n106 = 0, $49 = 0, $50 = 0, $top_152 = 0, $cross_451 = 0, $v88 = 0, $51 = 0, $arrayidx89 = 0, $52 = 0, $has_port = 0, $53 = 0, $tobool91 = 0, $out94 = 0, $call95 = 0, $add96 = 0, $cross_5 = 0, $inc99 = 0, $cmp82 = 0, $54 = 0, $bot_048 = 0, $cross_647 = 0, $v114 = 0, $55 = 0, $arrayidx115 = 0, $56 = 0, $has_port117 = 0, $57 = 0, $tobool118 = 0, $in = 0, $call121 = 0, $add122 = 0, $cross_7 = 0, $inc125 = 0, $cmp107 = 0, $cross_6_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $g + 224 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $v1 = $0 + ($r * 44 & -1) + 4 | 0;
    $1 = HEAP32[$v1 >> 2] | 0;
    $2 = HEAP32[1166] | 0;
    $add = $r + 1 | 0;
    $3 = HEAP32[41526] | 0;
    $rank3 = $3 + 224 | 0;
    $4 = HEAP32[$rank3 >> 2] | 0;
    $n = $4 + ($add * 44 & -1) | 0;
    $5 = HEAP32[$n >> 2] | 0;
    $cmp = ($2 | 0) > ($5 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add10 = $5 + 1 | 0;
    HEAP32[1166] = $add10;
    $6 = HEAP32[1164] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $7 = $6;
    $mul = $add10 << 2;
    $call = _grealloc($7, $mul) | 0;
    $call_sink = $call;
    label = 6;
    break;
   case 5:
    $mul11 = $add10 << 2;
    $call12 = _gmalloc($mul11) | 0;
    $call_sink = $call12;
    label = 6;
    break;
   case 6:
    $8 = $call_sink;
    HEAP32[1164] = $8;
    label = 7;
    break;
   case 7:
    $9 = HEAP32[$rank >> 2] | 0;
    $n1777 = $9 + ($add * 44 & -1) | 0;
    $10 = HEAP32[$n1777 >> 2] | 0;
    $cmp1878 = ($10 | 0) > 0;
    if ($cmp1878) {
      $i_079 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $11 = HEAP32[$rank >> 2] | 0;
    $n2471 = $11 + ($r * 44 & -1) | 0;
    $12 = HEAP32[$n2471 >> 2] | 0;
    $cmp2572 = ($12 | 0) > 0;
    if ($cmp2572) {
      $cross_073 = 0;
      $max_074 = 0;
      $top_075 = 0;
      label = 12;
      break;
    } else {
      $cross_0_lcssa = 0;
      label = 10;
      break;
    }
   case 9:
    $13 = HEAP32[1164] | 0;
    $arrayidx19 = $13 + ($i_079 << 2) | 0;
    HEAP32[$arrayidx19 >> 2] = 0;
    $inc = $i_079 + 1 | 0;
    $14 = HEAP32[$rank >> 2] | 0;
    $n17 = $14 + ($add * 44 & -1) | 0;
    $15 = HEAP32[$n17 >> 2] | 0;
    $cmp18 = ($inc | 0) < ($15 | 0);
    if ($cmp18) {
      $i_079 = $inc;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 10:
    $16 = HEAP32[$rank >> 2] | 0;
    $n8149 = $16 + ($r * 44 & -1) | 0;
    $17 = HEAP32[$n8149 >> 2] | 0;
    $cmp8250 = ($17 | 0) > 0;
    if ($cmp8250) {
      label = 11;
      break;
    } else {
      $cross_4_lcssa = $cross_0_lcssa;
      label = 22;
      break;
    }
   case 11:
    $18 = HEAP32[$rank >> 2] | 0;
    $n81 = $18 + ($r * 44 & -1) | 0;
    $19 = HEAP32[$n81 >> 2] | 0;
    $cross_451 = $cross_0_lcssa;
    $top_152 = 0;
    $50 = $16;
    label = 24;
    break;
   case 12:
    $cmp27 = ($max_074 | 0) > 0;
    if ($cmp27) {
      label = 13;
      break;
    } else {
      $cross_3 = $cross_073;
      label = 19;
      break;
    }
   case 13:
    $arrayidx30 = $1 + ($top_075 << 2) | 0;
    $20 = HEAP32[$arrayidx30 >> 2] | 0;
    $list59 = $20 + 184 | 0;
    $21 = HEAP32[$list59 >> 2] | 0;
    $22 = HEAP32[$21 >> 2] | 0;
    $tobool3361 = ($22 | 0) == 0;
    if ($tobool3361) {
      $cross_3 = $cross_073;
      label = 19;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $23 = HEAP32[$arrayidx30 >> 2] | 0;
    $list = $23 + 184 | 0;
    $24 = HEAP32[$list >> 2] | 0;
    $25 = HEAP32[1164] | 0;
    $cross_162 = $cross_073;
    $i_163 = 0;
    $26 = $22;
    label = 15;
    break;
   case 15:
    $head = $26 + 12 | 0;
    $27 = HEAP32[$head >> 2] | 0;
    $order = $27 + 240 | 0;
    $28 = HEAP32[$order >> 2] | 0;
    $k_054 = $28 + 1 | 0;
    $cmp3855 = ($k_054 | 0) > ($max_074 | 0);
    if ($cmp3855) {
      $cross_2_lcssa = $cross_162;
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $xpenalty = $26 + 170 | 0;
    $29 = HEAP16[$xpenalty >> 1] | 0;
    $conv = $29 << 16 >> 16;
    $cross_256 = $cross_162;
    $k_057 = $k_054;
    label = 17;
    break;
   case 17:
    $arrayidx40 = $25 + ($k_057 << 2) | 0;
    $30 = HEAP32[$arrayidx40 >> 2] | 0;
    $mul42 = Math_imul($conv, $30);
    $add43 = $mul42 + $cross_256 | 0;
    $k_0 = $k_057 + 1 | 0;
    $cmp38 = ($k_0 | 0) > ($max_074 | 0);
    if ($cmp38) {
      $cross_2_lcssa = $add43;
      label = 18;
      break;
    } else {
      $cross_256 = $add43;
      $k_057 = $k_0;
      label = 17;
      break;
    }
   case 18:
    $inc48 = $i_163 + 1 | 0;
    $arrayidx32 = $24 + ($inc48 << 2) | 0;
    $31 = HEAP32[$arrayidx32 >> 2] | 0;
    $tobool33 = ($31 | 0) == 0;
    if ($tobool33) {
      $cross_3 = $cross_2_lcssa;
      label = 19;
      break;
    } else {
      $cross_162 = $cross_2_lcssa;
      $i_163 = $inc48;
      $26 = $31;
      label = 15;
      break;
    }
   case 19:
    $arrayidx52 = $1 + ($top_075 << 2) | 0;
    $32 = HEAP32[$arrayidx52 >> 2] | 0;
    $list5565 = $32 + 184 | 0;
    $33 = HEAP32[$list5565 >> 2] | 0;
    $34 = HEAP32[$33 >> 2] | 0;
    $tobool5767 = ($34 | 0) == 0;
    if ($tobool5767) {
      $max_1_lcssa = $max_074;
      label = 21;
      break;
    } else {
      $max_168 = $max_074;
      $i_269 = 0;
      $35 = $34;
      label = 20;
      break;
    }
   case 20:
    $head59 = $35 + 12 | 0;
    $36 = HEAP32[$head59 >> 2] | 0;
    $order61 = $36 + 240 | 0;
    $37 = HEAP32[$order61 >> 2] | 0;
    $cmp62 = ($37 | 0) > ($max_168 | 0);
    $_max_1 = $cmp62 ? $37 : $max_168;
    $xpenalty67 = $35 + 170 | 0;
    $38 = HEAP16[$xpenalty67 >> 1] | 0;
    $conv68 = $38 << 16 >> 16;
    $39 = HEAP32[1164] | 0;
    $arrayidx69 = $39 + ($37 << 2) | 0;
    $40 = HEAP32[$arrayidx69 >> 2] | 0;
    $add70 = $40 + $conv68 | 0;
    HEAP32[$arrayidx69 >> 2] = $add70;
    $inc72 = $i_269 + 1 | 0;
    $41 = HEAP32[$arrayidx52 >> 2] | 0;
    $list55 = $41 + 184 | 0;
    $42 = HEAP32[$list55 >> 2] | 0;
    $arrayidx56 = $42 + ($inc72 << 2) | 0;
    $43 = HEAP32[$arrayidx56 >> 2] | 0;
    $tobool57 = ($43 | 0) == 0;
    if ($tobool57) {
      $max_1_lcssa = $_max_1;
      label = 21;
      break;
    } else {
      $max_168 = $_max_1;
      $i_269 = $inc72;
      $35 = $43;
      label = 20;
      break;
    }
   case 21:
    $inc75 = $top_075 + 1 | 0;
    $44 = HEAP32[$rank >> 2] | 0;
    $n24 = $44 + ($r * 44 & -1) | 0;
    $45 = HEAP32[$n24 >> 2] | 0;
    $cmp25 = ($inc75 | 0) < ($45 | 0);
    if ($cmp25) {
      $cross_073 = $cross_3;
      $max_074 = $max_1_lcssa;
      $top_075 = $inc75;
      label = 12;
      break;
    } else {
      $cross_0_lcssa = $cross_3;
      label = 10;
      break;
    }
   case 22:
    $46 = HEAP32[$rank >> 2] | 0;
    $n10645 = $46 + ($add * 44 & -1) | 0;
    $47 = HEAP32[$n10645 >> 2] | 0;
    $cmp10746 = ($47 | 0) > 0;
    if ($cmp10746) {
      label = 23;
      break;
    } else {
      $cross_6_lcssa = $cross_4_lcssa;
      label = 30;
      break;
    }
   case 23:
    $48 = HEAP32[$rank >> 2] | 0;
    $n106 = $48 + ($add * 44 & -1) | 0;
    $49 = HEAP32[$n106 >> 2] | 0;
    $cross_647 = $cross_4_lcssa;
    $bot_048 = 0;
    $54 = $46;
    label = 27;
    break;
   case 24:
    $v88 = $50 + ($r * 44 & -1) + 4 | 0;
    $51 = HEAP32[$v88 >> 2] | 0;
    $arrayidx89 = $51 + ($top_152 << 2) | 0;
    $52 = HEAP32[$arrayidx89 >> 2] | 0;
    $has_port = $52 + 161 | 0;
    $53 = HEAP8[$has_port] | 0;
    $tobool91 = $53 << 24 >> 24 == 0;
    if ($tobool91) {
      $cross_5 = $cross_451;
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $out94 = $52 + 184 | 0;
    $call95 = _local_cross($out94, 1) | 0;
    $add96 = $call95 + $cross_451 | 0;
    $cross_5 = $add96;
    label = 26;
    break;
   case 26:
    $inc99 = $top_152 + 1 | 0;
    $cmp82 = ($inc99 | 0) < ($19 | 0);
    if ($cmp82) {
      $cross_451 = $cross_5;
      $top_152 = $inc99;
      $50 = $18;
      label = 24;
      break;
    } else {
      $cross_4_lcssa = $cross_5;
      label = 22;
      break;
    }
   case 27:
    $v114 = $54 + ($add * 44 & -1) + 4 | 0;
    $55 = HEAP32[$v114 >> 2] | 0;
    $arrayidx115 = $55 + ($bot_048 << 2) | 0;
    $56 = HEAP32[$arrayidx115 >> 2] | 0;
    $has_port117 = $56 + 161 | 0;
    $57 = HEAP8[$has_port117] | 0;
    $tobool118 = $57 << 24 >> 24 == 0;
    if ($tobool118) {
      $cross_7 = $cross_647;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $in = $56 + 176 | 0;
    $call121 = _local_cross($in, -1) | 0;
    $add122 = $call121 + $cross_647 | 0;
    $cross_7 = $add122;
    label = 29;
    break;
   case 29:
    $inc125 = $bot_048 + 1 | 0;
    $cmp107 = ($inc125 | 0) < ($49 | 0);
    if ($cmp107) {
      $cross_647 = $cross_7;
      $bot_048 = $inc125;
      $54 = $48;
      label = 27;
      break;
    } else {
      $cross_6_lcssa = $cross_7;
      label = 30;
      break;
    }
   case 30:
    return $cross_6_lcssa | 0;
  }
  return 0;
}
function _virtual_weight($e) {
  $e = $e | 0;
  var $call = 0, $conv = 0.0, $weight = 0;
  $call = _endpoint_class(HEAP32[$e + 12 >> 2] | 0) | 0;
  $conv = +(HEAP32[3304 + ((_endpoint_class(HEAP32[$e + 16 >> 2] | 0) | 0) * 12 & -1) + ($call << 2) >> 2] | 0);
  $weight = $e + 172 | 0;
  HEAPF32[$weight >> 2] = +HEAPF32[$weight >> 2] * $conv;
  return;
}
function _mincross_options($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool = 0, $call1 = 0.0, $cmp = 0, $1 = 0, $conv = 0.0, $mul = 0.0, $cmp2 = 0, $phitmp = 0, $cond = 0, $2 = 0, $conv7 = 0.0, $mul8 = 0.0, $cmp9 = 0, $phitmp5 = 0, $cond16 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[41630] = 8;
    HEAP32[41634] = 24;
    HEAPF64[20993] = .995;
    $0 = $g | 0;
    $call = _agget($0, 160176) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = +_atof($call);
    $cmp = $call1 > 0.0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 9;
      break;
    }
   case 4:
    $1 = HEAP32[41630] | 0;
    $conv = +($1 | 0);
    $mul = $call1 * $conv;
    $cmp2 = $mul < 1.0;
    if ($cmp2) {
      $cond = 1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $phitmp = ~~$mul;
    $cond = $phitmp;
    label = 6;
    break;
   case 6:
    HEAP32[41630] = $cond;
    $2 = HEAP32[41634] | 0;
    $conv7 = +($2 | 0);
    $mul8 = $call1 * $conv7;
    $cmp9 = $mul8 < 1.0;
    if ($cmp9) {
      $cond16 = 1;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $phitmp5 = ~~$mul8;
    $cond16 = $phitmp5;
    label = 8;
    break;
   case 8:
    HEAP32[41634] = $cond16;
    label = 9;
    break;
   case 9:
    return;
  }
}
function _ordered_edges($g) {
  $g = $g | 0;
  var $0 = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $or_cond = 0, $2 = 0, $call = 0, $tobool2 = 0, $3 = 0, $cmp = 0, $call7 = 0, $tobool8 = 0, $_pr = 0, $4 = 0, $cmp12 = 0, $call15 = 0, $tobool16 = 0, $5 = 0, $tobool19 = 0, $call21 = 0, $meta_node = 0, $6 = 0, $graph = 0, $7 = 0, $8 = 0, $9 = 0, $call26 = 0, $tobool2715 = 0, $me_0_in16 = 0, $head = 0, $10 = 0, $11 = 0, $call28 = 0, $12 = 0, $call29 = 0, $tobool30 = 0, $13 = 0, $call33 = 0, $tobool27 = 0, $14 = 0, $tobool34 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41866] | 0;
    $tobool = ($0 | 0) != 0;
    $1 = HEAP32[41580] | 0;
    $tobool1 = ($1 | 0) != 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 19;
      break;
    }
   case 3:
    $2 = $g | 0;
    $call = _late_string($2, $0, 0) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 13;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP8[$call] | 0;
    $cmp = $3 << 24 >> 24 == 111;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $4 = $3;
      label = 8;
      break;
    }
   case 5:
    $call7 = _strcmp($call | 0, 101448) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    _do_ordering($g, 1);
    label = 19;
    break;
   case 7:
    $_pr = HEAP8[$call] | 0;
    $4 = $_pr;
    label = 8;
    break;
   case 8:
    $cmp12 = $4 << 24 >> 24 == 105;
    if ($cmp12) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $call15 = _strcmp($call | 0, 97144) | 0;
    $tobool16 = ($call15 | 0) == 0;
    if ($tobool16) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _do_ordering($g, 0);
    label = 19;
    break;
   case 11:
    $5 = HEAP8[$call] | 0;
    $tobool19 = $5 << 24 >> 24 == 0;
    if ($tobool19) {
      label = 19;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call21 = _agerr(1, 93496, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call, tempInt) | 0) | 0;
    label = 19;
    break;
   case 13:
    $meta_node = $g + 36 | 0;
    $6 = HEAP32[$meta_node >> 2] | 0;
    $graph = $6 + 20 | 0;
    $7 = HEAP32[$graph >> 2] | 0;
    $8 = $7;
    $9 = $6;
    $call26 = _agfstout($8, $9) | 0;
    $tobool2715 = ($call26 | 0) == 0;
    if ($tobool2715) {
      label = 17;
      break;
    } else {
      $me_0_in16 = $call26;
      label = 14;
      break;
    }
   case 14:
    $head = $me_0_in16 + 12 | 0;
    $10 = HEAP32[$head >> 2] | 0;
    $11 = $10;
    $call28 = _agusergraph($11) | 0;
    $12 = $call28;
    $call29 = _is_cluster($12) | 0;
    $tobool30 = ($call29 | 0) == 0;
    if ($tobool30) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $13 = $call28;
    _ordered_edges($13);
    label = 16;
    break;
   case 16:
    $call33 = _agnxtout($8, $me_0_in16) | 0;
    $tobool27 = ($call33 | 0) == 0;
    if ($tobool27) {
      label = 17;
      break;
    } else {
      $me_0_in16 = $call33;
      label = 14;
      break;
    }
   case 17:
    $14 = HEAP32[41580] | 0;
    $tobool34 = ($14 | 0) == 0;
    if ($tobool34) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    _do_ordering_for_nodes($g);
    label = 19;
    break;
   case 19:
    STACKTOP = __stackBase__;
    return;
  }
}
function _do_ordering($g, $outflag) {
  $g = $g | 0;
  $outflag = $outflag | 0;
  var $0 = 0, $call = 0, $tobool5 = 0, $n_0_in6 = 0, $n_0 = 0, $call1 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool5 = ($call | 0) == 0;
    if ($tobool5) {
      label = 4;
      break;
    } else {
      $n_0_in6 = $call;
      label = 3;
      break;
    }
   case 3:
    $n_0 = $n_0_in6;
    _do_ordering_node($g, $n_0, $outflag);
    $call1 = _agnxtnode($0, $n_0_in6) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_0_in6 = $call1;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _transpose_step($g, $r, $reverse) {
  $g = $g | 0;
  $r = $r | 0;
  $reverse = $reverse | 0;
  var $rank = 0, $0 = 0, $candidate = 0, $1 = 0, $n5360 = 0, $2 = 0, $sub5461 = 0, $cmp5562 = 0, $cmp18 = 0, $add25 = 0, $notrhs = 0, $minrank = 0, $sub56 = 0, $maxrank = 0, $3 = 0, $i_0_ph64 = 0, $rv_0_ph63 = 0, $4 = 0, $i_056 = 0, $v7 = 0, $5 = 0, $arrayidx8 = 0, $6 = 0, $add = 0, $arrayidx13 = 0, $7 = 0, $order = 0, $8 = 0, $order16 = 0, $9 = 0, $cmp17 = 0, $call = 0, $tobool = 0, $call20 = 0, $call22 = 0, $c1_0 = 0, $c0_0 = 0, $10 = 0, $n29 = 0, $11 = 0, $cmp30 = 0, $call32 = 0, $add33 = 0, $call34 = 0, $add35 = 0, $c1_1 = 0, $c0_1 = 0, $cmp37 = 0, $notlhs = 0, $or_cond_not = 0, $cmp41 = 0, $or_cond49 = 0, $12 = 0, $n = 0, $13 = 0, $sub = 0, $cmp = 0, $sub43 = 0, $add44 = 0, $14 = 0, $rank46 = 0, $15 = 0, $valid = 0, $16 = 0, $candidate51 = 0, $17 = 0, $conv = 0, $cmp53 = 0, $18 = 0, $rank58 = 0, $19 = 0, $valid60 = 0, $20 = 0, $candidate65 = 0, $21 = 0, $conv68 = 0, $cmp69 = 0, $22 = 0, $rank74 = 0, $23 = 0, $valid76 = 0, $24 = 0, $candidate81 = 0, $25 = 0, $n53 = 0, $26 = 0, $sub54 = 0, $cmp55 = 0, $rv_0_ph59 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $g + 224 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $candidate = $0 + ($r * 44 & -1) + 32 | 0;
    HEAP8[$candidate] = 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $n5360 = $1 + ($r * 44 & -1) | 0;
    $2 = HEAP32[$n5360 >> 2] | 0;
    $sub5461 = $2 - 1 | 0;
    $cmp5562 = ($sub5461 | 0) > 0;
    if ($cmp5562) {
      label = 3;
      break;
    } else {
      $rv_0_ph59 = 0;
      label = 20;
      break;
    }
   case 3:
    $cmp18 = ($r | 0) > 0;
    $add25 = $r + 1 | 0;
    $notrhs = ($reverse | 0) != 0;
    $minrank = $g + 248 | 0;
    $sub56 = $r - 1 | 0;
    $maxrank = $g + 250 | 0;
    $rv_0_ph63 = 0;
    $i_0_ph64 = 0;
    $3 = $1;
    label = 4;
    break;
   case 4:
    $i_056 = $i_0_ph64;
    $4 = $3;
    label = 5;
    break;
   case 5:
    $v7 = $4 + ($r * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v7 >> 2] | 0;
    $arrayidx8 = $5 + ($i_056 << 2) | 0;
    $6 = HEAP32[$arrayidx8 >> 2] | 0;
    $add = $i_056 + 1 | 0;
    $arrayidx13 = $5 + ($add << 2) | 0;
    $7 = HEAP32[$arrayidx13 >> 2] | 0;
    $order = $6 + 240 | 0;
    $8 = HEAP32[$order >> 2] | 0;
    $order16 = $7 + 240 | 0;
    $9 = HEAP32[$order16 >> 2] | 0;
    $cmp17 = ($8 | 0) < ($9 | 0);
    if ($cmp17) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    ___assert_func(119784, 523, 163768, 105480);
    return 0;
   case 7:
    $call = _left2right($g, $6, $7) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 14;
      break;
    }
   case 8:
    if ($cmp18) {
      label = 9;
      break;
    } else {
      $c0_0 = 0;
      $c1_0 = 0;
      label = 10;
      break;
    }
   case 9:
    $call20 = _in_cross($6, $7) | 0;
    $call22 = _in_cross($7, $6) | 0;
    $c0_0 = $call20;
    $c1_0 = $call22;
    label = 10;
    break;
   case 10:
    $10 = HEAP32[$rank >> 2] | 0;
    $n29 = $10 + ($add25 * 44 & -1) | 0;
    $11 = HEAP32[$n29 >> 2] | 0;
    $cmp30 = ($11 | 0) > 0;
    if ($cmp30) {
      label = 11;
      break;
    } else {
      $c0_1 = $c0_0;
      $c1_1 = $c1_0;
      label = 12;
      break;
    }
   case 11:
    $call32 = _out_cross($6, $7) | 0;
    $add33 = $call32 + $c0_0 | 0;
    $call34 = _out_cross($7, $6) | 0;
    $add35 = $call34 + $c1_0 | 0;
    $c0_1 = $add33;
    $c1_1 = $add35;
    label = 12;
    break;
   case 12:
    $cmp37 = ($c1_1 | 0) < ($c0_1 | 0);
    if ($cmp37) {
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $notlhs = ($c0_1 | 0) > 0;
    $or_cond_not = $notrhs & $notlhs;
    $cmp41 = ($c1_1 | 0) == ($c0_1 | 0);
    $or_cond49 = $or_cond_not & $cmp41;
    if ($or_cond49) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $12 = HEAP32[$rank >> 2] | 0;
    $n = $12 + ($r * 44 & -1) | 0;
    $13 = HEAP32[$n >> 2] | 0;
    $sub = $13 - 1 | 0;
    $cmp = ($add | 0) < ($sub | 0);
    if ($cmp) {
      $i_056 = $add;
      $4 = $12;
      label = 5;
      break;
    } else {
      $rv_0_ph59 = $rv_0_ph63;
      label = 20;
      break;
    }
   case 15:
    _exchange($6, $7);
    $sub43 = $c0_1 - $c1_1 | 0;
    $add44 = $sub43 + $rv_0_ph63 | 0;
    $14 = HEAP32[41526] | 0;
    $rank46 = $14 + 224 | 0;
    $15 = HEAP32[$rank46 >> 2] | 0;
    $valid = $15 + ($r * 44 & -1) + 33 | 0;
    HEAP8[$valid] = 0;
    $16 = HEAP32[$rank >> 2] | 0;
    $candidate51 = $16 + ($r * 44 & -1) + 32 | 0;
    HEAP8[$candidate51] = 1;
    $17 = HEAP16[$minrank >> 1] | 0;
    $conv = $17 << 16 >> 16;
    $cmp53 = ($conv | 0) < ($r | 0);
    if ($cmp53) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $18 = HEAP32[41526] | 0;
    $rank58 = $18 + 224 | 0;
    $19 = HEAP32[$rank58 >> 2] | 0;
    $valid60 = $19 + ($sub56 * 44 & -1) + 33 | 0;
    HEAP8[$valid60] = 0;
    $20 = HEAP32[$rank >> 2] | 0;
    $candidate65 = $20 + ($sub56 * 44 & -1) + 32 | 0;
    HEAP8[$candidate65] = 1;
    label = 17;
    break;
   case 17:
    $21 = HEAP16[$maxrank >> 1] | 0;
    $conv68 = $21 << 16 >> 16;
    $cmp69 = ($conv68 | 0) > ($r | 0);
    if ($cmp69) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $22 = HEAP32[41526] | 0;
    $rank74 = $22 + 224 | 0;
    $23 = HEAP32[$rank74 >> 2] | 0;
    $valid76 = $23 + ($add25 * 44 & -1) + 33 | 0;
    HEAP8[$valid76] = 0;
    $24 = HEAP32[$rank >> 2] | 0;
    $candidate81 = $24 + ($add25 * 44 & -1) + 32 | 0;
    HEAP8[$candidate81] = 1;
    label = 19;
    break;
   case 19:
    $25 = HEAP32[$rank >> 2] | 0;
    $n53 = $25 + ($r * 44 & -1) | 0;
    $26 = HEAP32[$n53 >> 2] | 0;
    $sub54 = $26 - 1 | 0;
    $cmp55 = ($add | 0) < ($sub54 | 0);
    if ($cmp55) {
      $rv_0_ph63 = $add44;
      $i_0_ph64 = $add;
      $3 = $25;
      label = 4;
      break;
    } else {
      $rv_0_ph59 = $add44;
      label = 20;
      break;
    }
   case 20:
    return $rv_0_ph59 | 0;
  }
  return 0;
}
function _betweenclust($e) {
  $e = $e | 0;
  var $e_addr_0 = 0, $to_orig = 0, $0 = 0, $tobool = 0, $tail = 0, $1 = 0, $clust = 0, $2 = 0, $head = 0, $3 = 0, $clust5 = 0, $4 = 0, $cmp = 0, $conv = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $e_addr_0 = $e;
    label = 3;
    break;
   case 3:
    $to_orig = $e_addr_0 + 132 | 0;
    $0 = HEAP32[$to_orig >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $e_addr_0 = $0;
      label = 3;
      break;
    }
   case 4:
    $tail = $e_addr_0 + 16 | 0;
    $1 = HEAP32[$tail >> 2] | 0;
    $clust = $1 + 216 | 0;
    $2 = HEAP32[$clust >> 2] | 0;
    $head = $e_addr_0 + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $clust5 = $3 + 216 | 0;
    $4 = HEAP32[$clust5 >> 2] | 0;
    $cmp = ($2 | 0) != ($4 | 0);
    $conv = $cmp & 1;
    return $conv | 0;
  }
  return 0;
}
function _edgeidcmpf($e0, $e1) {
  $e0 = $e0 | 0;
  $e1 = $e1 | 0;
  return (HEAP32[(HEAP32[$e0 >> 2] | 0) + 20 >> 2] | 0) - (HEAP32[(HEAP32[$e1 >> 2] | 0) + 20 >> 2] | 0) | 0;
}
function _neighbor113($v, $dir) {
  $v = $v | 0;
  $dir = $dir | 0;
  var $cmp = 0, $order = 0, $0 = 0, $cmp1 = 0, $sub = 0, $rank = 0, $1 = 0, $2 = 0, $rank7 = 0, $3 = 0, $v8 = 0, $4 = 0, $arrayidx9 = 0, $5 = 0, $add = 0, $rank13 = 0, $6 = 0, $7 = 0, $rank15 = 0, $8 = 0, $v17 = 0, $9 = 0, $arrayidx18 = 0, $10 = 0, $rv_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($dir | 0) < 0;
    $order = $v + 240 | 0;
    $0 = HEAP32[$order >> 2] | 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $cmp1 = ($0 | 0) > 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $rv_0 = 0;
      label = 6;
      break;
    }
   case 4:
    $sub = $0 - 1 | 0;
    $rank = $v + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $2 = HEAP32[41526] | 0;
    $rank7 = $2 + 224 | 0;
    $3 = HEAP32[$rank7 >> 2] | 0;
    $v8 = $3 + ($1 * 44 & -1) + 4 | 0;
    $4 = HEAP32[$v8 >> 2] | 0;
    $arrayidx9 = $4 + ($sub << 2) | 0;
    $5 = HEAP32[$arrayidx9 >> 2] | 0;
    $rv_0 = $5;
    label = 6;
    break;
   case 5:
    $add = $0 + 1 | 0;
    $rank13 = $v + 236 | 0;
    $6 = HEAP32[$rank13 >> 2] | 0;
    $7 = HEAP32[41526] | 0;
    $rank15 = $7 + 224 | 0;
    $8 = HEAP32[$rank15 >> 2] | 0;
    $v17 = $8 + ($6 * 44 & -1) + 4 | 0;
    $9 = HEAP32[$v17 >> 2] | 0;
    $arrayidx18 = $9 + ($add << 2) | 0;
    $10 = HEAP32[$arrayidx18 >> 2] | 0;
    $rv_0 = $10;
    label = 6;
    break;
   case 6:
    return $rv_0 | 0;
  }
  return 0;
}
function _merge_components($g) {
  $g = $g | 0;
  var $comp = 0, $size = 0, $0 = 0, $cmp = 0, $1 = 0, $cmp515 = 0, $list = 0, $u_017 = 0, $c_016 = 0, $2 = 0, $arrayidx = 0, $3 = 0, $tobool = 0, $next = 0, $prev = 0, $v_0 = 0, $next13 = 0, $4 = 0, $tobool14 = 0, $inc = 0, $5 = 0, $cmp5 = 0, $list22 = 0, $6 = 0, $7 = 0, $nlist = 0, $8 = 0, $conv = 0, $minrank = 0, $9 = 0, $conv26 = 0, $maxrank = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $comp = $g + 228 | 0;
    $size = $g + 232 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) < 2;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP32[$size >> 2] | 0;
    $cmp515 = ($1 | 0) > 0;
    if ($cmp515) {
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $list = $comp | 0;
    $c_016 = 0;
    $u_017 = 0;
    label = 5;
    break;
   case 5:
    $2 = HEAP32[$list >> 2] | 0;
    $arrayidx = $2 + ($c_016 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($u_017 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $next = $u_017 + 168 | 0;
    HEAP32[$next >> 2] = $3;
    label = 7;
    break;
   case 7:
    $prev = $3 + 172 | 0;
    HEAP32[$prev >> 2] = $u_017;
    $v_0 = $3;
    label = 8;
    break;
   case 8:
    $next13 = $v_0 + 168 | 0;
    $4 = HEAP32[$next13 >> 2] | 0;
    $tobool14 = ($4 | 0) == 0;
    if ($tobool14) {
      label = 9;
      break;
    } else {
      $v_0 = $4;
      label = 8;
      break;
    }
   case 9:
    $inc = $c_016 + 1 | 0;
    $5 = HEAP32[$size >> 2] | 0;
    $cmp5 = ($inc | 0) < ($5 | 0);
    if ($cmp5) {
      $c_016 = $inc;
      $u_017 = $v_0;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP32[$size >> 2] = 1;
    $list22 = $comp | 0;
    $6 = HEAP32[$list22 >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $nlist = $g + 220 | 0;
    HEAP32[$nlist >> 2] = $7;
    $8 = HEAP32[41854] | 0;
    $conv = $8 & 65535;
    $minrank = $g + 248 | 0;
    HEAP16[$minrank >> 1] = $conv;
    $9 = HEAP32[41856] | 0;
    $conv26 = $9 & 65535;
    $maxrank = $g + 250 | 0;
    HEAP16[$maxrank >> 1] = $conv26;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _save_best($g) {
  $g = $g | 0;
  var $nlist = 0, $n_04 = 0, $tobool5 = 0, $n_06 = 0, $order = 0, $0 = 0, $conv = 0.0, $x = 0, $next = 0, $n_0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_04 = HEAP32[$nlist >> 2] | 0;
    $tobool5 = ($n_04 | 0) == 0;
    if ($tobool5) {
      label = 4;
      break;
    } else {
      $n_06 = $n_04;
      label = 3;
      break;
    }
   case 3:
    $order = $n_06 + 240 | 0;
    $0 = HEAP32[$order >> 2] | 0;
    $conv = +($0 | 0);
    $x = $n_06 + 32 | 0;
    HEAPF64[$x >> 3] = $conv;
    $next = $n_06 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_06 = $n_0;
      label = 3;
      break;
    }
   case 4:
    return;
  }
}
function _do_ordering_for_nodes($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool15 = 0, $n_018_in = 0, $n_018 = 0, $1 = 0, $2 = 0, $call1 = 0, $tobool2 = 0, $3 = 0, $cmp = 0, $call5 = 0, $tobool6 = 0, $_pr = 0, $4 = 0, $cmp10 = 0, $call13 = 0, $tobool14 = 0, $5 = 0, $tobool17 = 0, $6 = 0, $7 = 0, $call19 = 0, $call23 = 0, $tobool = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool15 = ($call | 0) == 0;
    if ($tobool15) {
      label = 14;
      break;
    } else {
      $n_018_in = $call;
      label = 3;
      break;
    }
   case 3:
    $n_018 = $n_018_in;
    $1 = $n_018_in | 0;
    $2 = HEAP32[41580] | 0;
    $call1 = _late_string($1, $2, 0) | 0;
    $tobool2 = ($call1 | 0) == 0;
    if ($tobool2) {
      label = 13;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP8[$call1] | 0;
    $cmp = $3 << 24 >> 24 == 111;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $4 = $3;
      label = 8;
      break;
    }
   case 5:
    $call5 = _strcmp($call1 | 0, 101448) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    _do_ordering_node($g, $n_018, 1);
    label = 13;
    break;
   case 7:
    $_pr = HEAP8[$call1] | 0;
    $4 = $_pr;
    label = 8;
    break;
   case 8:
    $cmp10 = $4 << 24 >> 24 == 105;
    if ($cmp10) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $call13 = _strcmp($call1 | 0, 97144) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    _do_ordering_node($g, $n_018, 0);
    label = 13;
    break;
   case 11:
    $5 = HEAP8[$call1] | 0;
    $tobool17 = $5 << 24 >> 24 == 0;
    if ($tobool17) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $6 = $n_018_in + 12 | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $call19 = _agerr(1, 90016, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $call1, HEAP32[tempInt + 8 >> 2] = $7, tempInt) | 0) | 0;
    label = 13;
    break;
   case 13:
    $call23 = _agnxtnode($0, $n_018_in) | 0;
    $tobool = ($call23 | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      $n_018_in = $call23;
      label = 3;
      break;
    }
   case 14:
    STACKTOP = __stackBase__;
    return;
  }
}
function _do_ordering_node($g, $n, $outflag) {
  $g = $g | 0;
  $n = $n | 0;
  $outflag = $outflag | 0;
  var $0 = 0, $clust = 0, $1 = 0, $tobool = 0, $tobool2 = 0, $list13 = 0, $2 = 0, $3 = 0, $tobool1534 = 0, $list = 0, $4 = 0, $5 = 0, $tobool530 = 0, $6 = 0, $i_032 = 0, $ne_031 = 0, $call = 0, $tobool6 = 0, $inc = 0, $arrayidx8 = 0, $ne_1 = 0, $inc10 = 0, $7 = 0, $arrayidx = 0, $8 = 0, $tobool5 = 0, $9 = 0, $i_136 = 0, $ne_235 = 0, $call17 = 0, $tobool18 = 0, $inc20 = 0, $arrayidx21 = 0, $ne_3 = 0, $inc24 = 0, $10 = 0, $arrayidx14 = 0, $11 = 0, $tobool15 = 0, $ne_4 = 0, $cmp = 0, $arrayidx29 = 0, $12 = 0, $arrayidx3127 = 0, $13 = 0, $tobool3228 = 0, $14 = 0, $ne_529 = 0, $sub = 0, $arrayidx34 = 0, $15 = 0, $head = 0, $head37 = 0, $tail = 0, $tail39 = 0, $v_0_in = 0, $u_0_in = 0, $u_0 = 0, $v_0 = 0, $call41 = 0, $tobool42 = 0, $call45 = 0, $edge_type = 0, $inc48 = 0, $arrayidx31 = 0, $16 = 0, $tobool32 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41348] | 0;
    $clust = $n + 216 | 0;
    $1 = HEAP32[$clust >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 19;
      break;
    }
   case 3:
    $tobool2 = ($outflag | 0) != 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $list13 = $n + 176 | 0;
    $2 = HEAP32[$list13 >> 2] | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $tobool1534 = ($3 | 0) == 0;
    if ($tobool1534) {
      label = 19;
      break;
    } else {
      $ne_235 = 0;
      $i_136 = 0;
      $9 = $3;
      label = 9;
      break;
    }
   case 5:
    $list = $n + 184 | 0;
    $4 = HEAP32[$list >> 2] | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $tobool530 = ($5 | 0) == 0;
    if ($tobool530) {
      label = 19;
      break;
    } else {
      $ne_031 = 0;
      $i_032 = 0;
      $6 = $5;
      label = 6;
      break;
    }
   case 6:
    $call = _betweenclust($6) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      $ne_1 = $ne_031;
      label = 8;
      break;
    }
   case 7:
    $inc = $ne_031 + 1 | 0;
    $arrayidx8 = $0 + ($ne_031 << 2) | 0;
    HEAP32[$arrayidx8 >> 2] = $6;
    $ne_1 = $inc;
    label = 8;
    break;
   case 8:
    $inc10 = $i_032 + 1 | 0;
    $7 = HEAP32[$list >> 2] | 0;
    $arrayidx = $7 + ($inc10 << 2) | 0;
    $8 = HEAP32[$arrayidx >> 2] | 0;
    $tobool5 = ($8 | 0) == 0;
    if ($tobool5) {
      $ne_4 = $ne_1;
      label = 12;
      break;
    } else {
      $ne_031 = $ne_1;
      $i_032 = $inc10;
      $6 = $8;
      label = 6;
      break;
    }
   case 9:
    $call17 = _betweenclust($9) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      $ne_3 = $ne_235;
      label = 11;
      break;
    }
   case 10:
    $inc20 = $ne_235 + 1 | 0;
    $arrayidx21 = $0 + ($ne_235 << 2) | 0;
    HEAP32[$arrayidx21 >> 2] = $9;
    $ne_3 = $inc20;
    label = 11;
    break;
   case 11:
    $inc24 = $i_136 + 1 | 0;
    $10 = HEAP32[$list13 >> 2] | 0;
    $arrayidx14 = $10 + ($inc24 << 2) | 0;
    $11 = HEAP32[$arrayidx14 >> 2] | 0;
    $tobool15 = ($11 | 0) == 0;
    if ($tobool15) {
      $ne_4 = $ne_3;
      label = 12;
      break;
    } else {
      $ne_235 = $ne_3;
      $i_136 = $inc24;
      $9 = $11;
      label = 9;
      break;
    }
   case 12:
    $cmp = ($ne_4 | 0) < 2;
    if ($cmp) {
      label = 19;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $arrayidx29 = $0 + ($ne_4 << 2) | 0;
    HEAP32[$arrayidx29 >> 2] = 0;
    $12 = $0;
    _qsort($12 | 0, $ne_4 | 0, 4, 200);
    $arrayidx3127 = $0 + 4 | 0;
    $13 = HEAP32[$arrayidx3127 >> 2] | 0;
    $tobool3228 = ($13 | 0) == 0;
    if ($tobool3228) {
      label = 19;
      break;
    } else {
      $ne_529 = 1;
      $14 = $13;
      label = 14;
      break;
    }
   case 14:
    $sub = $ne_529 - 1 | 0;
    $arrayidx34 = $0 + ($sub << 2) | 0;
    $15 = HEAP32[$arrayidx34 >> 2] | 0;
    if ($tobool2) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $head = $15 + 12 | 0;
    $head37 = $14 + 12 | 0;
    $u_0_in = $head;
    $v_0_in = $head37;
    label = 17;
    break;
   case 16:
    $tail = $15 + 16 | 0;
    $tail39 = $14 + 16 | 0;
    $u_0_in = $tail;
    $v_0_in = $tail39;
    label = 17;
    break;
   case 17:
    $u_0 = HEAP32[$u_0_in >> 2] | 0;
    $v_0 = HEAP32[$v_0_in >> 2] | 0;
    $call41 = _find_flat_edge($u_0, $v_0) | 0;
    $tobool42 = ($call41 | 0) == 0;
    if ($tobool42) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $call45 = _new_virtual_edge($u_0, $v_0, 0) | 0;
    $edge_type = $call45 + 128 | 0;
    HEAP8[$edge_type] = 4;
    _flat_edge($g, $call45);
    $inc48 = $ne_529 + 1 | 0;
    $arrayidx31 = $0 + ($inc48 << 2) | 0;
    $16 = HEAP32[$arrayidx31 >> 2] | 0;
    $tobool32 = ($16 | 0) == 0;
    if ($tobool32) {
      label = 19;
      break;
    } else {
      $ne_529 = $inc48;
      $14 = $16;
      label = 14;
      break;
    }
   case 19:
    return;
  }
}
function _is_a_normal_node_of($g, $v) {
  $g = $g | 0;
  $v = $v | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $call = 0, $tobool = 0, $phitmp = 0, $3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $3 = 0;
      label = 4;
      break;
    }
   case 3:
    $1 = $v | 0;
    $2 = $g;
    $call = _agcontains($2, $1) | 0;
    $tobool = ($call | 0) != 0;
    $phitmp = $tobool & 1;
    $3 = $phitmp;
    label = 4;
    break;
   case 4:
    return $3 | 0;
  }
  return 0;
}
function _is_a_vnode_of_an_edge_of($g, $v) {
  $g = $g | 0;
  $v = $v | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $size = 0, $1 = 0, $cmp3 = 0, $size7 = 0, $2 = 0, $cmp8 = 0, $list = 0, $3 = 0, $e_0_in = 0, $e_0 = 0, $edge_type = 0, $4 = 0, $cmp14 = 0, $to_orig = 0, $5 = 0, $6 = 0, $call = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $size = $v + 180 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $cmp3 = ($1 | 0) == 1;
    if ($cmp3) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $size7 = $v + 188 | 0;
    $2 = HEAP32[$size7 >> 2] | 0;
    $cmp8 = ($2 | 0) == 1;
    if ($cmp8) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 5:
    $list = $v + 184 | 0;
    $3 = HEAP32[$list >> 2] | 0;
    $e_0_in = $3;
    label = 6;
    break;
   case 6:
    $e_0 = HEAP32[$e_0_in >> 2] | 0;
    $edge_type = $e_0 + 128 | 0;
    $4 = HEAP8[$edge_type] | 0;
    $cmp14 = $4 << 24 >> 24 == 0;
    $to_orig = $e_0 + 132 | 0;
    if ($cmp14) {
      label = 7;
      break;
    } else {
      $e_0_in = $to_orig;
      label = 6;
      break;
    }
   case 7:
    $5 = $e_0 | 0;
    $6 = $g;
    $call = _agcontains($6, $5) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $retval_0 = 1;
      label = 9;
      break;
    }
   case 8:
    $retval_0 = 0;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _free_matrix($p) {
  $p = $p | 0;
  var $tobool = 0, $data = 0, $0 = 0, $1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($p | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $data = $p + 8 | 0;
    $0 = HEAP32[$data >> 2] | 0;
    _free($0);
    $1 = $p;
    _free($1);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _flat_breakcycles($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp39 = 0, $conv = 0, $rank = 0, $r_040 = 0, $2 = 0, $n30 = 0, $3 = 0, $cmp631 = 0, $4 = 0, $flat_033 = 0, $i_032 = 0, $v12 = 0, $5 = 0, $arrayidx13 = 0, $6 = 0, $onstack = 0, $mark = 0, $low = 0, $size = 0, $7 = 0, $cmp18 = 0, $cmp20 = 0, $or_cond = 0, $8 = 0, $n25 = 0, $9 = 0, $call = 0, $10 = 0, $flat33 = 0, $flat_1 = 0, $inc = 0, $11 = 0, $n = 0, $12 = 0, $cmp6 = 0, $tobool = 0, $13 = 0, $n3935 = 0, $14 = 0, $cmp4036 = 0, $15 = 0, $i_137 = 0, $v46 = 0, $16 = 0, $arrayidx47 = 0, $17 = 0, $mark49 = 0, $18 = 0, $cmp51 = 0, $inc56 = 0, $19 = 0, $n39 = 0, $20 = 0, $cmp40 = 0, $inc60 = 0, $21 = 0, $conv2 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp39 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp39) {
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_040 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rank >> 2] | 0;
    $n30 = $2 + ($r_040 * 44 & -1) | 0;
    $3 = HEAP32[$n30 >> 2] | 0;
    $cmp631 = ($3 | 0) > 0;
    if ($cmp631) {
      $i_032 = 0;
      $flat_033 = 0;
      $4 = $2;
      label = 5;
      break;
    } else {
      label = 13;
      break;
    }
   case 5:
    $v12 = $4 + ($r_040 * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v12 >> 2] | 0;
    $arrayidx13 = $5 + ($i_032 << 2) | 0;
    $6 = HEAP32[$arrayidx13 >> 2] | 0;
    $onstack = $6 + 164 | 0;
    HEAP8[$onstack] = 0;
    $mark = $6 + 163 | 0;
    HEAP8[$mark] = 0;
    $low = $6 + 284 | 0;
    HEAP32[$low >> 2] = $i_032;
    $size = $6 + 196 | 0;
    $7 = HEAP32[$size >> 2] | 0;
    $cmp18 = ($7 | 0) > 0;
    $cmp20 = ($flat_033 | 0) == 0;
    $or_cond = $cmp18 & $cmp20;
    if ($or_cond) {
      label = 6;
      break;
    } else {
      $flat_1 = $flat_033;
      label = 7;
      break;
    }
   case 6:
    $8 = HEAP32[$rank >> 2] | 0;
    $n25 = $8 + ($r_040 * 44 & -1) | 0;
    $9 = HEAP32[$n25 >> 2] | 0;
    $call = _new_matrix($9, $9) | 0;
    $10 = HEAP32[$rank >> 2] | 0;
    $flat33 = $10 + ($r_040 * 44 & -1) + 40 | 0;
    HEAP32[$flat33 >> 2] = $call;
    $flat_1 = 1;
    label = 7;
    break;
   case 7:
    $inc = $i_032 + 1 | 0;
    $11 = HEAP32[$rank >> 2] | 0;
    $n = $11 + ($r_040 * 44 & -1) | 0;
    $12 = HEAP32[$n >> 2] | 0;
    $cmp6 = ($inc | 0) < ($12 | 0);
    if ($cmp6) {
      $i_032 = $inc;
      $flat_033 = $flat_1;
      $4 = $11;
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $tobool = ($flat_1 | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $13 = HEAP32[$rank >> 2] | 0;
    $n3935 = $13 + ($r_040 * 44 & -1) | 0;
    $14 = HEAP32[$n3935 >> 2] | 0;
    $cmp4036 = ($14 | 0) > 0;
    if ($cmp4036) {
      $i_137 = 0;
      $15 = $13;
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    $v46 = $15 + ($r_040 * 44 & -1) + 4 | 0;
    $16 = HEAP32[$v46 >> 2] | 0;
    $arrayidx47 = $16 + ($i_137 << 2) | 0;
    $17 = HEAP32[$arrayidx47 >> 2] | 0;
    $mark49 = $17 + 163 | 0;
    $18 = HEAP8[$mark49] | 0;
    $cmp51 = $18 << 24 >> 24 == 0;
    if ($cmp51) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    _flat_search($g, $17);
    label = 12;
    break;
   case 12:
    $inc56 = $i_137 + 1 | 0;
    $19 = HEAP32[$rank >> 2] | 0;
    $n39 = $19 + ($r_040 * 44 & -1) | 0;
    $20 = HEAP32[$n39 >> 2] | 0;
    $cmp40 = ($inc56 | 0) < ($20 | 0);
    if ($cmp40) {
      $i_137 = $inc56;
      $15 = $19;
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $inc60 = $r_040 + 1 | 0;
    $21 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $21 << 16 >> 16;
    $cmp = ($inc60 | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 14;
      break;
    } else {
      $r_040 = $inc60;
      label = 4;
      break;
    }
   case 14:
    return;
  }
}
function _flat_reorder($g) {
  $g = $g | 0;
  var $has_flat_edges = 0, $0 = 0, $cmp = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp6119 = 0, $conv3 = 0, $rank = 0, $rankdir = 0, $temprank_0123 = 0, $r_0120 = 0, $3 = 0, $n89 = 0, $4 = 0, $cmp1090 = 0, $5 = 0, $i_091 = 0, $v16 = 0, $6 = 0, $arrayidx17 = 0, $7 = 0, $mark = 0, $inc = 0, $8 = 0, $n = 0, $9 = 0, $cmp10 = 0, $phitmp = 0, $phitmp125 = 0, $i_0_lcssa = 0, $tobool = 0, $10 = 0, $call = 0, $call21 = 0, $call_sink = 0, $11 = 0, $12 = 0, $n26104 = 0, $13 = 0, $cmp27105 = 0, $14 = 0, $i_1107 = 0, $pos_0106 = 0, $v33 = 0, $15 = 0, $arrayidx34 = 0, $16 = 0, $size = 0, $17 = 0, $cmp3793 = 0, $list = 0, $j_095 = 0, $local_in_cnt_094 = 0, $18 = 0, $arrayidx42 = 0, $19 = 0, $weight = 0, $20 = 0.0, $cmp44 = 0, $tail = 0, $21 = 0, $call46 = 0, $not_tobool47 = 0, $inc49 = 0, $local_in_cnt_0_inc49 = 0, $local_in_cnt_1 = 0, $inc52 = 0, $22 = 0, $cmp37 = 0, $local_in_cnt_0_lcssa = 0, $size56 = 0, $23 = 0, $cmp5797 = 0, $list62 = 0, $j_199 = 0, $local_out_cnt_098 = 0, $24 = 0, $arrayidx63 = 0, $25 = 0, $weight65 = 0, $26 = 0.0, $cmp66 = 0, $head = 0, $27 = 0, $call69 = 0, $not_tobool70 = 0, $inc72 = 0, $local_out_cnt_0_inc72 = 0, $local_out_cnt_1 = 0, $inc75 = 0, $28 = 0, $cmp57 = 0, $local_out_cnt_0_lcssa = 0, $29 = 0, $30 = 0, $inc83 = 0, $arrayidx84 = 0, $mark86 = 0, $31 = 0, $cmp88_not = 0, $cmp77_not = 0, $brmerge = 0, $add_ptr = 0, $call94 = 0, $32 = 0, $and96 = 0, $cmp97 = 0, $add_ptr_sum = 0, $add_ptr100_sum = 0, $cmp102101 = 0, $add_ptr101 = 0, $right_0103 = 0, $left_0102 = 0, $33 = 0, $34 = 0, $incdec_ptr = 0, $incdec_ptr104 = 0, $cmp102 = 0, $add106 = 0, $pos_1 = 0, $inc110 = 0, $35 = 0, $n26 = 0, $36 = 0, $cmp27 = 0, $tobool112 = 0, $37 = 0, $n118109 = 0, $38 = 0, $cmp119110 = 0, $39 = 0, $i_2111 = 0, $arrayidx122 = 0, $40 = 0, $v126 = 0, $41 = 0, $arrayidx127 = 0, $42 = 0, $v131 = 0, $43 = 0, $44 = 0, $rank133 = 0, $45 = 0, $v135 = 0, $46 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $sub_ptr_div = 0, $add136 = 0, $order = 0, $inc139 = 0, $47 = 0, $n118 = 0, $48 = 0, $cmp119 = 0, $49 = 0, $n145115 = 0, $50 = 0, $cmp146116 = 0, $51 = 0, $i_3117 = 0, $v152 = 0, $52 = 0, $arrayidx153 = 0, $53 = 0, $list156 = 0, $54 = 0, $tobool157 = 0, $55 = 0, $56 = 0, $tobool164113 = 0, $57 = 0, $j_2114 = 0, $head166 = 0, $58 = 0, $order168 = 0, $59 = 0, $tail169 = 0, $60 = 0, $order171 = 0, $61 = 0, $cmp172 = 0, $dec = 0, $j_3 = 0, $inc177 = 0, $62 = 0, $arrayidx163 = 0, $63 = 0, $tobool164 = 0, $inc181 = 0, $64 = 0, $n145 = 0, $65 = 0, $cmp146 = 0, $66 = 0, $rank185 = 0, $67 = 0, $valid = 0, $inc188 = 0, $68 = 0, $conv5 = 0, $cmp6 = 0, $tobool190 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $has_flat_edges = $g + 252 | 0;
    $0 = HEAP8[$has_flat_edges] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 44;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp6119 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp6119) {
      label = 44;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv3 = $1 << 16 >> 16;
    $rank = $g + 224 | 0;
    $rankdir = $g + 156 | 0;
    $r_0120 = $conv3;
    $temprank_0123 = 0;
    label = 5;
    break;
   case 5:
    $3 = HEAP32[$rank >> 2] | 0;
    $n89 = $3 + ($r_0120 * 44 & -1) | 0;
    $4 = HEAP32[$n89 >> 2] | 0;
    $cmp1090 = ($4 | 0) > 0;
    if ($cmp1090) {
      $i_091 = 0;
      $5 = $3;
      label = 6;
      break;
    } else {
      $i_0_lcssa = 4;
      label = 8;
      break;
    }
   case 6:
    $v16 = $5 + ($r_0120 * 44 & -1) + 4 | 0;
    $6 = HEAP32[$v16 >> 2] | 0;
    $arrayidx17 = $6 + ($i_091 << 2) | 0;
    $7 = HEAP32[$arrayidx17 >> 2] | 0;
    $mark = $7 + 163 | 0;
    HEAP8[$mark] = 0;
    $inc = $i_091 + 1 | 0;
    $8 = HEAP32[$rank >> 2] | 0;
    $n = $8 + ($r_0120 * 44 & -1) | 0;
    $9 = HEAP32[$n >> 2] | 0;
    $cmp10 = ($inc | 0) < ($9 | 0);
    if ($cmp10) {
      $i_091 = $inc;
      $5 = $8;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $phitmp = $inc << 2;
    $phitmp125 = $phitmp + 4 | 0;
    $i_0_lcssa = $phitmp125;
    label = 8;
    break;
   case 8:
    $tobool = ($temprank_0123 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $10 = $temprank_0123;
    $call = _grealloc($10, $i_0_lcssa) | 0;
    $call_sink = $call;
    label = 11;
    break;
   case 10:
    $call21 = _gmalloc($i_0_lcssa) | 0;
    $call_sink = $call21;
    label = 11;
    break;
   case 11:
    $11 = $call_sink;
    $12 = HEAP32[$rank >> 2] | 0;
    $n26104 = $12 + ($r_0120 * 44 & -1) | 0;
    $13 = HEAP32[$n26104 >> 2] | 0;
    $cmp27105 = ($13 | 0) > 0;
    if ($cmp27105) {
      $pos_0106 = 0;
      $i_1107 = 0;
      $14 = $12;
      label = 12;
      break;
    } else {
      label = 41;
      break;
    }
   case 12:
    $v33 = $14 + ($r_0120 * 44 & -1) + 4 | 0;
    $15 = HEAP32[$v33 >> 2] | 0;
    $arrayidx34 = $15 + ($i_1107 << 2) | 0;
    $16 = HEAP32[$arrayidx34 >> 2] | 0;
    $size = $16 + 204 | 0;
    $17 = HEAP32[$size >> 2] | 0;
    $cmp3793 = ($17 | 0) > 0;
    if ($cmp3793) {
      label = 13;
      break;
    } else {
      $local_in_cnt_0_lcssa = 0;
      label = 17;
      break;
    }
   case 13:
    $list = $16 + 200 | 0;
    $local_in_cnt_094 = 0;
    $j_095 = 0;
    label = 14;
    break;
   case 14:
    $18 = HEAP32[$list >> 2] | 0;
    $arrayidx42 = $18 + ($j_095 << 2) | 0;
    $19 = HEAP32[$arrayidx42 >> 2] | 0;
    $weight = $19 + 172 | 0;
    $20 = +HEAPF32[$weight >> 2];
    $cmp44 = $20 > 0.0;
    if ($cmp44) {
      label = 15;
      break;
    } else {
      $local_in_cnt_1 = $local_in_cnt_094;
      label = 16;
      break;
    }
   case 15:
    $tail = $19 + 16 | 0;
    $21 = HEAP32[$tail >> 2] | 0;
    $call46 = _inside_cluster($g, $21) | 0;
    $not_tobool47 = ($call46 | 0) != 0;
    $inc49 = $not_tobool47 & 1;
    $local_in_cnt_0_inc49 = $inc49 + $local_in_cnt_094 | 0;
    $local_in_cnt_1 = $local_in_cnt_0_inc49;
    label = 16;
    break;
   case 16:
    $inc52 = $j_095 + 1 | 0;
    $22 = HEAP32[$size >> 2] | 0;
    $cmp37 = ($inc52 | 0) < ($22 | 0);
    if ($cmp37) {
      $local_in_cnt_094 = $local_in_cnt_1;
      $j_095 = $inc52;
      label = 14;
      break;
    } else {
      $local_in_cnt_0_lcssa = $local_in_cnt_1;
      label = 17;
      break;
    }
   case 17:
    $size56 = $16 + 196 | 0;
    $23 = HEAP32[$size56 >> 2] | 0;
    $cmp5797 = ($23 | 0) > 0;
    if ($cmp5797) {
      label = 18;
      break;
    } else {
      $local_out_cnt_0_lcssa = 0;
      label = 22;
      break;
    }
   case 18:
    $list62 = $16 + 192 | 0;
    $local_out_cnt_098 = 0;
    $j_199 = 0;
    label = 19;
    break;
   case 19:
    $24 = HEAP32[$list62 >> 2] | 0;
    $arrayidx63 = $24 + ($j_199 << 2) | 0;
    $25 = HEAP32[$arrayidx63 >> 2] | 0;
    $weight65 = $25 + 172 | 0;
    $26 = +HEAPF32[$weight65 >> 2];
    $cmp66 = $26 > 0.0;
    if ($cmp66) {
      label = 20;
      break;
    } else {
      $local_out_cnt_1 = $local_out_cnt_098;
      label = 21;
      break;
    }
   case 20:
    $head = $25 + 12 | 0;
    $27 = HEAP32[$head >> 2] | 0;
    $call69 = _inside_cluster($g, $27) | 0;
    $not_tobool70 = ($call69 | 0) != 0;
    $inc72 = $not_tobool70 & 1;
    $local_out_cnt_0_inc72 = $inc72 + $local_out_cnt_098 | 0;
    $local_out_cnt_1 = $local_out_cnt_0_inc72;
    label = 21;
    break;
   case 21:
    $inc75 = $j_199 + 1 | 0;
    $28 = HEAP32[$size56 >> 2] | 0;
    $cmp57 = ($inc75 | 0) < ($28 | 0);
    if ($cmp57) {
      $local_out_cnt_098 = $local_out_cnt_1;
      $j_199 = $inc75;
      label = 19;
      break;
    } else {
      $local_out_cnt_0_lcssa = $local_out_cnt_1;
      label = 22;
      break;
    }
   case 22:
    $29 = $local_out_cnt_0_lcssa | $local_in_cnt_0_lcssa;
    $30 = ($29 | 0) == 0;
    if ($30) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $inc83 = $pos_0106 + 1 | 0;
    $arrayidx84 = $11 + ($pos_0106 << 2) | 0;
    HEAP32[$arrayidx84 >> 2] = $16;
    $pos_1 = $inc83;
    label = 30;
    break;
   case 24:
    $mark86 = $16 + 163 | 0;
    $31 = HEAP8[$mark86] | 0;
    $cmp88_not = $31 << 24 >> 24 != 0;
    $cmp77_not = ($local_in_cnt_0_lcssa | 0) != 0;
    $brmerge = $cmp88_not | $cmp77_not;
    if ($brmerge) {
      $pos_1 = $pos_0106;
      label = 30;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $add_ptr = $11 + ($pos_0106 << 2) | 0;
    $call94 = _postorder($g, $16, $add_ptr, $r_0120) | 0;
    $32 = HEAP32[$rankdir >> 2] | 0;
    $and96 = $32 & 1;
    $cmp97 = ($and96 | 0) == 0;
    if ($cmp97) {
      label = 26;
      break;
    } else {
      label = 29;
      break;
    }
   case 26:
    $add_ptr_sum = $pos_0106 - 1 | 0;
    $add_ptr100_sum = $add_ptr_sum + $call94 | 0;
    $cmp102101 = ($pos_0106 | 0) < ($add_ptr100_sum | 0);
    if ($cmp102101) {
      label = 27;
      break;
    } else {
      label = 29;
      break;
    }
   case 27:
    $add_ptr101 = $11 + ($add_ptr100_sum << 2) | 0;
    $left_0102 = $add_ptr;
    $right_0103 = $add_ptr101;
    label = 28;
    break;
   case 28:
    $33 = HEAP32[$left_0102 >> 2] | 0;
    $34 = HEAP32[$right_0103 >> 2] | 0;
    HEAP32[$left_0102 >> 2] = $34;
    HEAP32[$right_0103 >> 2] = $33;
    $incdec_ptr = $left_0102 + 4 | 0;
    $incdec_ptr104 = $right_0103 - 4 | 0;
    $cmp102 = $incdec_ptr >>> 0 < $incdec_ptr104 >>> 0;
    if ($cmp102) {
      $left_0102 = $incdec_ptr;
      $right_0103 = $incdec_ptr104;
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $add106 = $call94 + $pos_0106 | 0;
    $pos_1 = $add106;
    label = 30;
    break;
   case 30:
    $inc110 = $i_1107 + 1 | 0;
    $35 = HEAP32[$rank >> 2] | 0;
    $n26 = $35 + ($r_0120 * 44 & -1) | 0;
    $36 = HEAP32[$n26 >> 2] | 0;
    $cmp27 = ($inc110 | 0) < ($36 | 0);
    if ($cmp27) {
      $pos_0106 = $pos_1;
      $i_1107 = $inc110;
      $14 = $35;
      label = 12;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $tobool112 = ($pos_1 | 0) == 0;
    if ($tobool112) {
      label = 41;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $37 = HEAP32[$rank >> 2] | 0;
    $n118109 = $37 + ($r_0120 * 44 & -1) | 0;
    $38 = HEAP32[$n118109 >> 2] | 0;
    $cmp119110 = ($38 | 0) > 0;
    if ($cmp119110) {
      $i_2111 = 0;
      $39 = $37;
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $arrayidx122 = $11 + ($i_2111 << 2) | 0;
    $40 = HEAP32[$arrayidx122 >> 2] | 0;
    $v126 = $39 + ($r_0120 * 44 & -1) + 4 | 0;
    $41 = HEAP32[$v126 >> 2] | 0;
    $arrayidx127 = $41 + ($i_2111 << 2) | 0;
    HEAP32[$arrayidx127 >> 2] = $40;
    $42 = HEAP32[$rank >> 2] | 0;
    $v131 = $42 + ($r_0120 * 44 & -1) + 4 | 0;
    $43 = HEAP32[$v131 >> 2] | 0;
    $44 = HEAP32[41526] | 0;
    $rank133 = $44 + 224 | 0;
    $45 = HEAP32[$rank133 >> 2] | 0;
    $v135 = $45 + ($r_0120 * 44 & -1) + 4 | 0;
    $46 = HEAP32[$v135 >> 2] | 0;
    $sub_ptr_lhs_cast = $43;
    $sub_ptr_rhs_cast = $46;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $sub_ptr_div = $sub_ptr_sub >> 2;
    $add136 = $sub_ptr_div + $i_2111 | 0;
    $order = $40 + 240 | 0;
    HEAP32[$order >> 2] = $add136;
    $inc139 = $i_2111 + 1 | 0;
    $47 = HEAP32[$rank >> 2] | 0;
    $n118 = $47 + ($r_0120 * 44 & -1) | 0;
    $48 = HEAP32[$n118 >> 2] | 0;
    $cmp119 = ($inc139 | 0) < ($48 | 0);
    if ($cmp119) {
      $i_2111 = $inc139;
      $39 = $47;
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $49 = HEAP32[$rank >> 2] | 0;
    $n145115 = $49 + ($r_0120 * 44 & -1) | 0;
    $50 = HEAP32[$n145115 >> 2] | 0;
    $cmp146116 = ($50 | 0) > 0;
    if ($cmp146116) {
      $i_3117 = 0;
      $51 = $49;
      label = 35;
      break;
    } else {
      label = 41;
      break;
    }
   case 35:
    $v152 = $51 + ($r_0120 * 44 & -1) + 4 | 0;
    $52 = HEAP32[$v152 >> 2] | 0;
    $arrayidx153 = $52 + ($i_3117 << 2) | 0;
    $53 = HEAP32[$arrayidx153 >> 2] | 0;
    $list156 = $53 + 192 | 0;
    $54 = HEAP32[$list156 >> 2] | 0;
    $tobool157 = ($54 | 0) == 0;
    if ($tobool157) {
      label = 40;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $55 = HEAP32[$list156 >> 2] | 0;
    $56 = HEAP32[$55 >> 2] | 0;
    $tobool164113 = ($56 | 0) == 0;
    if ($tobool164113) {
      label = 40;
      break;
    } else {
      $j_2114 = 0;
      $57 = $56;
      label = 37;
      break;
    }
   case 37:
    $head166 = $57 + 12 | 0;
    $58 = HEAP32[$head166 >> 2] | 0;
    $order168 = $58 + 240 | 0;
    $59 = HEAP32[$order168 >> 2] | 0;
    $tail169 = $57 + 16 | 0;
    $60 = HEAP32[$tail169 >> 2] | 0;
    $order171 = $60 + 240 | 0;
    $61 = HEAP32[$order171 >> 2] | 0;
    $cmp172 = ($59 | 0) < ($61 | 0);
    if ($cmp172) {
      label = 38;
      break;
    } else {
      $j_3 = $j_2114;
      label = 39;
      break;
    }
   case 38:
    _delete_flat_edge($57);
    $dec = $j_2114 - 1 | 0;
    _flat_rev($g, $57);
    $j_3 = $dec;
    label = 39;
    break;
   case 39:
    $inc177 = $j_3 + 1 | 0;
    $62 = HEAP32[$list156 >> 2] | 0;
    $arrayidx163 = $62 + ($inc177 << 2) | 0;
    $63 = HEAP32[$arrayidx163 >> 2] | 0;
    $tobool164 = ($63 | 0) == 0;
    if ($tobool164) {
      label = 40;
      break;
    } else {
      $j_2114 = $inc177;
      $57 = $63;
      label = 37;
      break;
    }
   case 40:
    $inc181 = $i_3117 + 1 | 0;
    $64 = HEAP32[$rank >> 2] | 0;
    $n145 = $64 + ($r_0120 * 44 & -1) | 0;
    $65 = HEAP32[$n145 >> 2] | 0;
    $cmp146 = ($inc181 | 0) < ($65 | 0);
    if ($cmp146) {
      $i_3117 = $inc181;
      $51 = $64;
      label = 35;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $66 = HEAP32[41526] | 0;
    $rank185 = $66 + 224 | 0;
    $67 = HEAP32[$rank185 >> 2] | 0;
    $valid = $67 + ($r_0120 * 44 & -1) + 33 | 0;
    HEAP8[$valid] = 0;
    $inc188 = $r_0120 + 1 | 0;
    $68 = HEAP16[$maxrank >> 1] | 0;
    $conv5 = $68 << 16 >> 16;
    $cmp6 = ($inc188 | 0) > ($conv5 | 0);
    if ($cmp6) {
      label = 42;
      break;
    } else {
      $r_0120 = $inc188;
      $temprank_0123 = $11;
      label = 5;
      break;
    }
   case 42:
    $tobool190 = ($call_sink | 0) == 0;
    if ($tobool190) {
      label = 44;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    _free($call_sink);
    label = 44;
    break;
   case 44:
    return;
  }
}
function _restore_best($g) {
  $g = $g | 0;
  var $nlist = 0, $n_015 = 0, $tobool16 = 0, $n_017 = 0, $x = 0, $0 = 0.0, $conv = 0, $order = 0, $next = 0, $n_0 = 0, $tobool = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp13 = 0, $conv5 = 0, $rank13 = 0, $r_014 = 0, $3 = 0, $rank = 0, $4 = 0, $valid = 0, $5 = 0, $v = 0, $6 = 0, $7 = 0, $n18 = 0, $8 = 0, $inc = 0, $9 = 0, $conv8 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_015 = HEAP32[$nlist >> 2] | 0;
    $tobool16 = ($n_015 | 0) == 0;
    if ($tobool16) {
      label = 4;
      break;
    } else {
      $n_017 = $n_015;
      label = 3;
      break;
    }
   case 3:
    $x = $n_017 + 32 | 0;
    $0 = +HEAPF64[$x >> 3];
    $conv = ~~$0;
    $order = $n_017 + 240 | 0;
    HEAP32[$order >> 2] = $conv;
    $next = $n_017 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $n_017 = $n_0;
      label = 3;
      break;
    }
   case 4:
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp13 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp13) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $conv5 = $1 << 16 >> 16;
    $rank13 = $g + 224 | 0;
    $r_014 = $conv5;
    label = 6;
    break;
   case 6:
    $3 = HEAP32[41526] | 0;
    $rank = $3 + 224 | 0;
    $4 = HEAP32[$rank >> 2] | 0;
    $valid = $4 + ($r_014 * 44 & -1) + 33 | 0;
    HEAP8[$valid] = 0;
    $5 = HEAP32[$rank13 >> 2] | 0;
    $v = $5 + ($r_014 * 44 & -1) + 4 | 0;
    $6 = HEAP32[$v >> 2] | 0;
    $7 = $6;
    $n18 = $5 + ($r_014 * 44 & -1) | 0;
    $8 = HEAP32[$n18 >> 2] | 0;
    _qsort($7 | 0, $8 | 0, 4, 406);
    $inc = $r_014 + 1 | 0;
    $9 = HEAP16[$maxrank >> 1] | 0;
    $conv8 = $9 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv8 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      $r_014 = $inc;
      label = 6;
      break;
    }
   case 7:
    return;
  }
}
function _ordercmpf($i0, $i1) {
  $i0 = $i0 | 0;
  $i1 = $i1 | 0;
  return (HEAP32[$i0 >> 2] | 0) - (HEAP32[$i1 >> 2] | 0) | 0;
}
function _flat_mval($n) {
  $n = $n | 0;
  var $size = 0, $0 = 0, $cmp = 0, $list = 0, $1 = 0, $2 = 0, $tail = 0, $3 = 0, $arrayidx319 = 0, $4 = 0, $tobool20 = 0, $5 = 0, $nn_022 = 0, $i_021 = 0, $tail4 = 0, $6 = 0, $order = 0, $7 = 0, $order7 = 0, $8 = 0, $cmp8 = 0, $_nn_0 = 0, $inc = 0, $arrayidx3 = 0, $9 = 0, $tobool = 0, $nn_0_lcssa = 0, $mval = 0, $10 = 0, $cmp12 = 0, $add = 0, $mval17 = 0, $size20 = 0, $11 = 0, $cmp21 = 0, $list25 = 0, $12 = 0, $13 = 0, $head = 0, $14 = 0, $arrayidx2823 = 0, $15 = 0, $tobool2924 = 0, $16 = 0, $nn_226 = 0, $i_125 = 0, $head31 = 0, $17 = 0, $order33 = 0, $18 = 0, $order35 = 0, $19 = 0, $cmp36 = 0, $_nn_2 = 0, $inc41 = 0, $arrayidx28 = 0, $20 = 0, $tobool29 = 0, $nn_2_lcssa = 0, $mval44 = 0, $21 = 0, $cmp45 = 0, $sub = 0, $mval50 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $n + 204 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $list = $n + 200 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tail = $2 + 16 | 0;
    $3 = HEAP32[$tail >> 2] | 0;
    $arrayidx319 = $1 + 4 | 0;
    $4 = HEAP32[$arrayidx319 >> 2] | 0;
    $tobool20 = ($4 | 0) == 0;
    if ($tobool20) {
      $nn_0_lcssa = $3;
      label = 5;
      break;
    } else {
      $i_021 = 1;
      $nn_022 = $3;
      $5 = $4;
      label = 4;
      break;
    }
   case 4:
    $tail4 = $5 + 16 | 0;
    $6 = HEAP32[$tail4 >> 2] | 0;
    $order = $6 + 240 | 0;
    $7 = HEAP32[$order >> 2] | 0;
    $order7 = $nn_022 + 240 | 0;
    $8 = HEAP32[$order7 >> 2] | 0;
    $cmp8 = ($7 | 0) > ($8 | 0);
    $_nn_0 = $cmp8 ? $6 : $nn_022;
    $inc = $i_021 + 1 | 0;
    $arrayidx3 = $1 + ($inc << 2) | 0;
    $9 = HEAP32[$arrayidx3 >> 2] | 0;
    $tobool = ($9 | 0) == 0;
    if ($tobool) {
      $nn_0_lcssa = $_nn_0;
      label = 5;
      break;
    } else {
      $i_021 = $inc;
      $nn_022 = $_nn_0;
      $5 = $9;
      label = 4;
      break;
    }
   case 5:
    $mval = $nn_0_lcssa + 244 | 0;
    $10 = HEAP32[$mval >> 2] | 0;
    $cmp12 = ($10 | 0) > -1;
    if ($cmp12) {
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 12;
      break;
    }
   case 6:
    $add = $10 + 1 | 0;
    $mval17 = $n + 244 | 0;
    HEAP32[$mval17 >> 2] = $add;
    $retval_0 = 0;
    label = 12;
    break;
   case 7:
    $size20 = $n + 196 | 0;
    $11 = HEAP32[$size20 >> 2] | 0;
    $cmp21 = ($11 | 0) > 0;
    if ($cmp21) {
      label = 8;
      break;
    } else {
      $retval_0 = 1;
      label = 12;
      break;
    }
   case 8:
    $list25 = $n + 192 | 0;
    $12 = HEAP32[$list25 >> 2] | 0;
    $13 = HEAP32[$12 >> 2] | 0;
    $head = $13 + 12 | 0;
    $14 = HEAP32[$head >> 2] | 0;
    $arrayidx2823 = $12 + 4 | 0;
    $15 = HEAP32[$arrayidx2823 >> 2] | 0;
    $tobool2924 = ($15 | 0) == 0;
    if ($tobool2924) {
      $nn_2_lcssa = $14;
      label = 10;
      break;
    } else {
      $i_125 = 1;
      $nn_226 = $14;
      $16 = $15;
      label = 9;
      break;
    }
   case 9:
    $head31 = $16 + 12 | 0;
    $17 = HEAP32[$head31 >> 2] | 0;
    $order33 = $17 + 240 | 0;
    $18 = HEAP32[$order33 >> 2] | 0;
    $order35 = $nn_226 + 240 | 0;
    $19 = HEAP32[$order35 >> 2] | 0;
    $cmp36 = ($18 | 0) < ($19 | 0);
    $_nn_2 = $cmp36 ? $17 : $nn_226;
    $inc41 = $i_125 + 1 | 0;
    $arrayidx28 = $12 + ($inc41 << 2) | 0;
    $20 = HEAP32[$arrayidx28 >> 2] | 0;
    $tobool29 = ($20 | 0) == 0;
    if ($tobool29) {
      $nn_2_lcssa = $_nn_2;
      label = 10;
      break;
    } else {
      $i_125 = $inc41;
      $nn_226 = $_nn_2;
      $16 = $20;
      label = 9;
      break;
    }
   case 10:
    $mval44 = $nn_2_lcssa + 244 | 0;
    $21 = HEAP32[$mval44 >> 2] | 0;
    $cmp45 = ($21 | 0) > 0;
    if ($cmp45) {
      label = 11;
      break;
    } else {
      $retval_0 = 1;
      label = 12;
      break;
    }
   case 11:
    $sub = $21 - 1 | 0;
    $mval50 = $n + 244 | 0;
    HEAP32[$mval50 >> 2] = $sub;
    $retval_0 = 0;
    label = 12;
    break;
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _nodeposcmpf($n0, $n1) {
  $n0 = $n0 | 0;
  $n1 = $n1 | 0;
  return (HEAP32[(HEAP32[$n0 >> 2] | 0) + 240 >> 2] | 0) - (HEAP32[(HEAP32[$n1 >> 2] | 0) + 240 >> 2] | 0) | 0;
}
function _mincross_step($g, $pass) {
  $g = $g | 0;
  $pass = $pass | 0;
  var $rem = 0, $cmp = 0, $_ = 0, $rem120 = 0, $cmp6 = 0, $minrank = 0, $0 = 0, $conv10 = 0, $1 = 0, $minrank15 = 0, $2 = 0, $not_cmp17 = 0, $add = 0, $conv10_add = 0, $maxrank22 = 0, $maxrank26 = 0, $3 = 0, $conv27 = 0, $minrank30 = 0, $4 = 0, $maxrank36 = 0, $5 = 0, $not_cmp38 = 0, $sub28 = 0, $conv27_sub28 = 0, $first_2 = 0, $last_0_in_in = 0, $dir_0 = 0, $last_0_in = 0, $last_0 = 0, $add43 = 0, $cmp4421 = 0, $r_022 = 0, $sub46 = 0, $call = 0, $conv47 = 0, $add48 = 0, $cmp44 = 0, $6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rem = ($pass | 0) % 4;
    $cmp = ($rem | 0) < 2;
    $_ = $cmp & 1;
    $rem120 = $pass & 1;
    $cmp6 = ($rem120 | 0) == 0;
    if ($cmp6) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $conv10 = $0 << 16 >> 16;
    $1 = HEAP32[41526] | 0;
    $minrank15 = $1 + 248 | 0;
    $2 = HEAP16[$minrank15 >> 1] | 0;
    $not_cmp17 = $0 << 16 >> 16 <= $2 << 16 >> 16;
    $add = $not_cmp17 & 1;
    $conv10_add = $add + $conv10 | 0;
    $maxrank22 = $g + 250 | 0;
    $dir_0 = 1;
    $last_0_in_in = $maxrank22;
    $first_2 = $conv10_add;
    label = 5;
    break;
   case 4:
    $maxrank26 = $g + 250 | 0;
    $3 = HEAP16[$maxrank26 >> 1] | 0;
    $conv27 = $3 << 16 >> 16;
    $minrank30 = $g + 248 | 0;
    $4 = HEAP32[41526] | 0;
    $maxrank36 = $4 + 250 | 0;
    $5 = HEAP16[$maxrank36 >> 1] | 0;
    $not_cmp38 = $3 << 16 >> 16 >= $5 << 16 >> 16;
    $sub28 = $not_cmp38 << 31 >> 31;
    $conv27_sub28 = $sub28 + $conv27 | 0;
    $dir_0 = -1;
    $last_0_in_in = $minrank30;
    $first_2 = $conv27_sub28;
    label = 5;
    break;
   case 5:
    $last_0_in = HEAP16[$last_0_in_in >> 1] | 0;
    $last_0 = $last_0_in << 16 >> 16;
    $add43 = $last_0 + $dir_0 | 0;
    $cmp4421 = ($first_2 | 0) == ($add43 | 0);
    if ($cmp4421) {
      label = 7;
      break;
    } else {
      $r_022 = $first_2;
      label = 6;
      break;
    }
   case 6:
    $sub46 = $r_022 - $dir_0 | 0;
    $call = _medians($g, $r_022, $sub46) | 0;
    $conv47 = $call & 255;
    _reorder($g, $r_022, $_, $conv47);
    $add48 = $r_022 + $dir_0 | 0;
    $cmp44 = ($add48 | 0) == ($add43 | 0);
    if ($cmp44) {
      label = 7;
      break;
    } else {
      $r_022 = $add48;
      label = 6;
      break;
    }
   case 7:
    $6 = $_ ^ 1;
    _transpose($g, $6);
    return;
  }
}
function _balanceNodes($g, $r, $v, $w) {
  $g = $g | 0;
  $r = $r | 0;
  $v = $v | 0;
  $w = $w | 0;
  var $node_type = 0, $0 = 0, $node_type2 = 0, $1 = 0, $cmp = 0, $rank = 0, $2 = 0, $n79 = 0, $3 = 0, $cmp680 = 0, $4 = 0, $cmp2888 = 0, $5 = 0, $n = 0, $6 = 0, $7 = 0, $i_083 = 0, $cntOri_082 = 0, $cntDummy_081 = 0, $v11 = 0, $8 = 0, $arrayidx12 = 0, $9 = 0, $node_type14 = 0, $10 = 0, $cmp16 = 0, $11 = 0, $inc19 = 0, $cntDummy_1 = 0, $inc = 0, $cntOri_1 = 0, $inc21 = 0, $cmp6 = 0, $cmp22 = 0, $12 = 0, $cmp28 = 0, $v_w = 0, $cmp2889 = 0, $w_v = 0, $s_0 = 0, $13 = 0, $n4774 = 0, $14 = 0, $cmp4875 = 0, $15 = 0, $n47 = 0, $16 = 0, $17 = 0, $i_177 = 0, $sepIndex_076 = 0, $v54 = 0, $18 = 0, $arrayidx55 = 0, $19 = 0, $cmp56 = 0, $i_1_sepIndex_0 = 0, $inc61 = 0, $cmp48 = 0, $sepIndex_0_lcssa = 0, $node_type64 = 0, $20 = 0, $cmp66 = 0, $cond = 0, $k_0 = 0, $i_2_in = 0, $i_2 = 0, $cmp69 = 0, $21 = 0, $n92 = 0, $22 = 0, $v99 = 0, $23 = 0, $v75 = 0, $24 = 0, $arrayidx76 = 0, $25 = 0, $node_type78 = 0, $26 = 0, $conv79 = 0, $cmp80 = 0, $inc83 = 0, $m_0 = 0, $i_3_in = 0, $i_3 = 0, $cmp93 = 0, $27 = 0, $arrayidx100 = 0, $28 = 0, $node_type102 = 0, $29 = 0, $conv103 = 0, $cmp104 = 0, $inc107 = 0, $30 = 0, $n11770 = 0, $31 = 0, $cmp11871 = 0, $32 = 0, $n117 = 0, $33 = 0, $sepIndex_2_lcssa = 0, $34 = 0, $i_473 = 0, $sepIndex_272 = 0, $v124 = 0, $35 = 0, $arrayidx125 = 0, $36 = 0, $cmp126 = 0, $i_4_sepIndex_2 = 0, $inc131 = 0, $cmp118 = 0, $k1_0 = 0, $i_5_in = 0, $i_5 = 0, $cmp135 = 0, $37 = 0, $n160 = 0, $38 = 0, $v167 = 0, $39 = 0, $v141 = 0, $40 = 0, $arrayidx142 = 0, $41 = 0, $node_type144 = 0, $42 = 0, $conv145 = 0, $cmp146 = 0, $inc149 = 0, $m1_0 = 0, $i_6_in = 0, $i_6 = 0, $cmp161 = 0, $43 = 0, $arrayidx168 = 0, $44 = 0, $node_type170 = 0, $45 = 0, $conv171 = 0, $cmp172 = 0, $inc175 = 0, $sub181 = 0, $ispos = 0, $neg = 0, $call = 0, $sub182 = 0, $ispos68 = 0, $neg69 = 0, $call183 = 0, $cmp184 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $node_type2 = $w + 162 | 0;
    $1 = HEAP8[$node_type2] | 0;
    $cmp = $0 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp) {
      label = 30;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $rank = $g + 224 | 0;
    $2 = HEAP32[$rank >> 2] | 0;
    $n79 = $2 + ($r * 44 & -1) | 0;
    $3 = HEAP32[$n79 >> 2] | 0;
    $cmp680 = ($3 | 0) > 0;
    if ($cmp680) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = HEAP8[$node_type] | 0;
    $cmp2888 = $4 << 24 >> 24 == 0;
    $cmp2889 = $cmp2888;
    label = 9;
    break;
   case 5:
    $5 = HEAP32[$rank >> 2] | 0;
    $n = $5 + ($r * 44 & -1) | 0;
    $6 = HEAP32[$n >> 2] | 0;
    $cntDummy_081 = 0;
    $cntOri_082 = 0;
    $i_083 = 0;
    $7 = $2;
    label = 6;
    break;
   case 6:
    $v11 = $7 + ($r * 44 & -1) + 4 | 0;
    $8 = HEAP32[$v11 >> 2] | 0;
    $arrayidx12 = $8 + ($i_083 << 2) | 0;
    $9 = HEAP32[$arrayidx12 >> 2] | 0;
    $node_type14 = $9 + 162 | 0;
    $10 = HEAP8[$node_type14] | 0;
    $cmp16 = $10 << 24 >> 24 == 0;
    $11 = $cmp16 & 1;
    $inc19 = $11 ^ 1;
    $cntDummy_1 = $inc19 + $cntDummy_081 | 0;
    $inc = $cmp16 & 1;
    $cntOri_1 = $inc + $cntOri_082 | 0;
    $inc21 = $i_083 + 1 | 0;
    $cmp6 = ($inc21 | 0) < ($6 | 0);
    if ($cmp6) {
      $cntDummy_081 = $cntDummy_1;
      $cntOri_082 = $cntOri_1;
      $i_083 = $inc21;
      $7 = $5;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $cmp22 = ($cntOri_1 | 0) < ($cntDummy_1 | 0);
    $12 = HEAP8[$node_type] | 0;
    $cmp28 = $12 << 24 >> 24 == 0;
    if ($cmp22) {
      label = 8;
      break;
    } else {
      $cmp2889 = $cmp28;
      label = 9;
      break;
    }
   case 8:
    $v_w = $cmp28 ? $v : $w;
    $s_0 = $v_w;
    label = 10;
    break;
   case 9:
    $w_v = $cmp2889 ? $w : $v;
    $s_0 = $w_v;
    label = 10;
    break;
   case 10:
    $13 = HEAP32[$rank >> 2] | 0;
    $n4774 = $13 + ($r * 44 & -1) | 0;
    $14 = HEAP32[$n4774 >> 2] | 0;
    $cmp4875 = ($14 | 0) > 0;
    if ($cmp4875) {
      label = 11;
      break;
    } else {
      $sepIndex_0_lcssa = 0;
      label = 13;
      break;
    }
   case 11:
    $15 = HEAP32[$rank >> 2] | 0;
    $n47 = $15 + ($r * 44 & -1) | 0;
    $16 = HEAP32[$n47 >> 2] | 0;
    $sepIndex_076 = 0;
    $i_177 = 0;
    $17 = $13;
    label = 12;
    break;
   case 12:
    $v54 = $17 + ($r * 44 & -1) + 4 | 0;
    $18 = HEAP32[$v54 >> 2] | 0;
    $arrayidx55 = $18 + ($i_177 << 2) | 0;
    $19 = HEAP32[$arrayidx55 >> 2] | 0;
    $cmp56 = ($19 | 0) == ($s_0 | 0);
    $i_1_sepIndex_0 = $cmp56 ? $i_177 : $sepIndex_076;
    $inc61 = $i_177 + 1 | 0;
    $cmp48 = ($inc61 | 0) < ($16 | 0);
    if ($cmp48) {
      $sepIndex_076 = $i_1_sepIndex_0;
      $i_177 = $inc61;
      $17 = $15;
      label = 12;
      break;
    } else {
      $sepIndex_0_lcssa = $i_1_sepIndex_0;
      label = 13;
      break;
    }
   case 13:
    $node_type64 = $s_0 + 162 | 0;
    $20 = HEAP8[$node_type64] | 0;
    $cmp66 = $20 << 24 >> 24 == 0;
    $cond = $cmp66 & 1;
    $i_2_in = $sepIndex_0_lcssa;
    $k_0 = 0;
    label = 14;
    break;
   case 14:
    $i_2 = $i_2_in - 1 | 0;
    $cmp69 = ($i_2_in | 0) > 0;
    if ($cmp69) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $21 = HEAP32[$rank >> 2] | 0;
    $n92 = $21 + ($r * 44 & -1) | 0;
    $22 = HEAP32[$n92 >> 2] | 0;
    $v99 = $21 + ($r * 44 & -1) + 4 | 0;
    $i_3_in = $sepIndex_0_lcssa;
    $m_0 = 0;
    label = 17;
    break;
   case 16:
    $23 = HEAP32[$rank >> 2] | 0;
    $v75 = $23 + ($r * 44 & -1) + 4 | 0;
    $24 = HEAP32[$v75 >> 2] | 0;
    $arrayidx76 = $24 + ($i_2 << 2) | 0;
    $25 = HEAP32[$arrayidx76 >> 2] | 0;
    $node_type78 = $25 + 162 | 0;
    $26 = HEAP8[$node_type78] | 0;
    $conv79 = $26 << 24 >> 24;
    $cmp80 = ($conv79 | 0) == ($cond | 0);
    $inc83 = $k_0 + 1 | 0;
    if ($cmp80) {
      $i_2_in = $i_2;
      $k_0 = $inc83;
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 17:
    $i_3 = $i_3_in + 1 | 0;
    $cmp93 = ($i_3 | 0) < ($22 | 0);
    if ($cmp93) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $27 = HEAP32[$v99 >> 2] | 0;
    $arrayidx100 = $27 + ($i_3 << 2) | 0;
    $28 = HEAP32[$arrayidx100 >> 2] | 0;
    $node_type102 = $28 + 162 | 0;
    $29 = HEAP8[$node_type102] | 0;
    $conv103 = $29 << 24 >> 24;
    $cmp104 = ($conv103 | 0) == ($cond | 0);
    $inc107 = $m_0 + 1 | 0;
    if ($cmp104) {
      $i_3_in = $i_3;
      $m_0 = $inc107;
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _exchange($v, $w);
    $30 = HEAP32[$rank >> 2] | 0;
    $n11770 = $30 + ($r * 44 & -1) | 0;
    $31 = HEAP32[$n11770 >> 2] | 0;
    $cmp11871 = ($31 | 0) > 0;
    if ($cmp11871) {
      label = 20;
      break;
    } else {
      $sepIndex_2_lcssa = $sepIndex_0_lcssa;
      label = 21;
      break;
    }
   case 20:
    $32 = HEAP32[$rank >> 2] | 0;
    $n117 = $32 + ($r * 44 & -1) | 0;
    $33 = HEAP32[$n117 >> 2] | 0;
    $sepIndex_272 = $sepIndex_0_lcssa;
    $i_473 = 0;
    $34 = $30;
    label = 22;
    break;
   case 21:
    $i_5_in = $sepIndex_2_lcssa;
    $k1_0 = 0;
    label = 23;
    break;
   case 22:
    $v124 = $34 + ($r * 44 & -1) + 4 | 0;
    $35 = HEAP32[$v124 >> 2] | 0;
    $arrayidx125 = $35 + ($i_473 << 2) | 0;
    $36 = HEAP32[$arrayidx125 >> 2] | 0;
    $cmp126 = ($36 | 0) == ($s_0 | 0);
    $i_4_sepIndex_2 = $cmp126 ? $i_473 : $sepIndex_272;
    $inc131 = $i_473 + 1 | 0;
    $cmp118 = ($inc131 | 0) < ($33 | 0);
    if ($cmp118) {
      $sepIndex_272 = $i_4_sepIndex_2;
      $i_473 = $inc131;
      $34 = $32;
      label = 22;
      break;
    } else {
      $sepIndex_2_lcssa = $i_4_sepIndex_2;
      label = 21;
      break;
    }
   case 23:
    $i_5 = $i_5_in - 1 | 0;
    $cmp135 = ($i_5_in | 0) > 0;
    if ($cmp135) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $37 = HEAP32[$rank >> 2] | 0;
    $n160 = $37 + ($r * 44 & -1) | 0;
    $38 = HEAP32[$n160 >> 2] | 0;
    $v167 = $37 + ($r * 44 & -1) + 4 | 0;
    $i_6_in = $sepIndex_2_lcssa;
    $m1_0 = 0;
    label = 26;
    break;
   case 25:
    $39 = HEAP32[$rank >> 2] | 0;
    $v141 = $39 + ($r * 44 & -1) + 4 | 0;
    $40 = HEAP32[$v141 >> 2] | 0;
    $arrayidx142 = $40 + ($i_5 << 2) | 0;
    $41 = HEAP32[$arrayidx142 >> 2] | 0;
    $node_type144 = $41 + 162 | 0;
    $42 = HEAP8[$node_type144] | 0;
    $conv145 = $42 << 24 >> 24;
    $cmp146 = ($conv145 | 0) == ($cond | 0);
    $inc149 = $k1_0 + 1 | 0;
    if ($cmp146) {
      $i_5_in = $i_5;
      $k1_0 = $inc149;
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 26:
    $i_6 = $i_6_in + 1 | 0;
    $cmp161 = ($i_6 | 0) < ($38 | 0);
    if ($cmp161) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $43 = HEAP32[$v167 >> 2] | 0;
    $arrayidx168 = $43 + ($i_6 << 2) | 0;
    $44 = HEAP32[$arrayidx168 >> 2] | 0;
    $node_type170 = $44 + 162 | 0;
    $45 = HEAP8[$node_type170] | 0;
    $conv171 = $45 << 24 >> 24;
    $cmp172 = ($conv171 | 0) == ($cond | 0);
    $inc175 = $m1_0 + 1 | 0;
    if ($cmp172) {
      $i_6_in = $i_6;
      $m1_0 = $inc175;
      label = 26;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $sub181 = $k1_0 - $m1_0 | 0;
    $ispos = ($sub181 | 0) > -1;
    $neg = -$sub181 | 0;
    $call = $ispos ? $sub181 : $neg;
    $sub182 = $k_0 - $m_0 | 0;
    $ispos68 = ($sub182 | 0) > -1;
    $neg69 = -$sub182 | 0;
    $call183 = $ispos68 ? $sub182 : $neg69;
    $cmp184 = ($call | 0) > ($call183 | 0);
    if ($cmp184) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    _exchange($v, $w);
    label = 30;
    break;
   case 30:
    return;
  }
}
function _medians($g, $r0, $r1) {
  $g = $g | 0;
  $r0 = $r0 | 0;
  $r1 = $r1 | 0;
  var $0 = 0, $rank = 0, $1 = 0, $v1 = 0, $2 = 0, $n574 = 0, $3 = 0, $cmp76 = 0, $cmp7 = 0, $4 = 0, $arrayidx56 = 0, $5 = 0, $n10359 = 0, $6 = 0, $cmp10460 = 0, $i_077 = 0, $arrayidx6 = 0, $7 = 0, $list10 = 0, $8 = 0, $9 = 0, $tobool70 = 0, $list25 = 0, $10 = 0, $11 = 0, $tobool2764 = 0, $12 = 0, $j_072 = 0, $j0_071 = 0, $xpenalty = 0, $13 = 0, $cmp14 = 0, $head = 0, $14 = 0, $order = 0, $15 = 0, $mul = 0, $order19 = 0, $16 = 0, $conv20 = 0, $add = 0, $inc = 0, $arrayidx21 = 0, $j_1 = 0, $inc22 = 0, $17 = 0, $arrayidx11 = 0, $18 = 0, $tobool = 0, $19 = 0, $j_266 = 0, $j0_165 = 0, $xpenalty30 = 0, $20 = 0, $cmp32 = 0, $tail = 0, $21 = 0, $order36 = 0, $22 = 0, $mul37 = 0, $order39 = 0, $23 = 0, $conv40 = 0, $add41 = 0, $inc42 = 0, $arrayidx43 = 0, $j_3 = 0, $inc46 = 0, $24 = 0, $arrayidx26 = 0, $25 = 0, $tobool27 = 0, $j_4 = 0, $mval = 0, $26 = 0, $mval53 = 0, $27 = 0, $28 = 0, $add57 = 0, $div = 0, $mval59 = 0, $rem58 = 0, $tobool60 = 0, $div62 = 0, $arrayidx63 = 0, $29 = 0, $mval65 = 0, $sub = 0, $sub68 = 0, $arrayidx69 = 0, $30 = 0, $arrayidx70 = 0, $31 = 0, $sub71 = 0, $arrayidx72 = 0, $32 = 0, $33 = 0, $sub74 = 0, $cmp75 = 0, $add80 = 0, $div81 = 0, $mval83 = 0, $mul86 = 0, $mul88 = 0, $add89 = 0, $add90 = 0, $div91 = 0, $mval93 = 0, $inc97 = 0, $34 = 0, $n5 = 0, $35 = 0, $cmp = 0, $i_162 = 0, $hasfixed_061 = 0, $arrayidx107 = 0, $36 = 0, $size = 0, $37 = 0, $cmp110 = 0, $size114 = 0, $38 = 0, $cmp115 = 0, $call = 0, $conv118 = 0, $or = 0, $conv119 = 0, $hasfixed_1 = 0, $inc122 = 0, $39 = 0, $n103 = 0, $40 = 0, $cmp104 = 0, $hasfixed_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[41344] | 0;
    $rank = $g + 224 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $v1 = $1 + ($r0 * 44 & -1) + 4 | 0;
    $2 = HEAP32[$v1 >> 2] | 0;
    $n574 = $1 + ($r0 * 44 & -1) | 0;
    $3 = HEAP32[$n574 >> 2] | 0;
    $cmp76 = ($3 | 0) > 0;
    if ($cmp76) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $cmp7 = ($r1 | 0) > ($r0 | 0);
    $4 = $0;
    $arrayidx56 = $0 + 4 | 0;
    $i_077 = 0;
    label = 5;
    break;
   case 4:
    $5 = HEAP32[$rank >> 2] | 0;
    $n10359 = $5 + ($r0 * 44 & -1) | 0;
    $6 = HEAP32[$n10359 >> 2] | 0;
    $cmp10460 = ($6 | 0) > 0;
    if ($cmp10460) {
      $hasfixed_061 = 0;
      $i_162 = 0;
      label = 24;
      break;
    } else {
      $hasfixed_0_lcssa = 0;
      label = 28;
      break;
    }
   case 5:
    $arrayidx6 = $2 + ($i_077 << 2) | 0;
    $7 = HEAP32[$arrayidx6 >> 2] | 0;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $list10 = $7 + 184 | 0;
    $8 = HEAP32[$list10 >> 2] | 0;
    $9 = HEAP32[$8 >> 2] | 0;
    $tobool70 = ($9 | 0) == 0;
    if ($tobool70) {
      label = 15;
      break;
    } else {
      $j0_071 = 0;
      $j_072 = 0;
      $12 = $9;
      label = 8;
      break;
    }
   case 7:
    $list25 = $7 + 176 | 0;
    $10 = HEAP32[$list25 >> 2] | 0;
    $11 = HEAP32[$10 >> 2] | 0;
    $tobool2764 = ($11 | 0) == 0;
    if ($tobool2764) {
      label = 15;
      break;
    } else {
      $j0_165 = 0;
      $j_266 = 0;
      $19 = $11;
      label = 11;
      break;
    }
   case 8:
    $xpenalty = $12 + 170 | 0;
    $13 = HEAP16[$xpenalty >> 1] | 0;
    $cmp14 = $13 << 16 >> 16 > 0;
    if ($cmp14) {
      label = 9;
      break;
    } else {
      $j_1 = $j_072;
      label = 10;
      break;
    }
   case 9:
    $head = $12 + 12 | 0;
    $14 = HEAP32[$head >> 2] | 0;
    $order = $14 + 240 | 0;
    $15 = HEAP32[$order >> 2] | 0;
    $mul = $15 << 8;
    $order19 = $12 + 104 | 0;
    $16 = HEAP8[$order19] | 0;
    $conv20 = $16 & 255;
    $add = $conv20 | $mul;
    $inc = $j_072 + 1 | 0;
    $arrayidx21 = $0 + ($j_072 << 2) | 0;
    HEAP32[$arrayidx21 >> 2] = $add;
    $j_1 = $inc;
    label = 10;
    break;
   case 10:
    $inc22 = $j0_071 + 1 | 0;
    $17 = HEAP32[$list10 >> 2] | 0;
    $arrayidx11 = $17 + ($inc22 << 2) | 0;
    $18 = HEAP32[$arrayidx11 >> 2] | 0;
    $tobool = ($18 | 0) == 0;
    if ($tobool) {
      $j_4 = $j_1;
      label = 14;
      break;
    } else {
      $j0_071 = $inc22;
      $j_072 = $j_1;
      $12 = $18;
      label = 8;
      break;
    }
   case 11:
    $xpenalty30 = $19 + 170 | 0;
    $20 = HEAP16[$xpenalty30 >> 1] | 0;
    $cmp32 = $20 << 16 >> 16 > 0;
    if ($cmp32) {
      label = 12;
      break;
    } else {
      $j_3 = $j_266;
      label = 13;
      break;
    }
   case 12:
    $tail = $19 + 16 | 0;
    $21 = HEAP32[$tail >> 2] | 0;
    $order36 = $21 + 240 | 0;
    $22 = HEAP32[$order36 >> 2] | 0;
    $mul37 = $22 << 8;
    $order39 = $19 + 64 | 0;
    $23 = HEAP8[$order39] | 0;
    $conv40 = $23 & 255;
    $add41 = $conv40 | $mul37;
    $inc42 = $j_266 + 1 | 0;
    $arrayidx43 = $0 + ($j_266 << 2) | 0;
    HEAP32[$arrayidx43 >> 2] = $add41;
    $j_3 = $inc42;
    label = 13;
    break;
   case 13:
    $inc46 = $j0_165 + 1 | 0;
    $24 = HEAP32[$list25 >> 2] | 0;
    $arrayidx26 = $24 + ($inc46 << 2) | 0;
    $25 = HEAP32[$arrayidx26 >> 2] | 0;
    $tobool27 = ($25 | 0) == 0;
    if ($tobool27) {
      $j_4 = $j_3;
      label = 14;
      break;
    } else {
      $j0_165 = $inc46;
      $j_266 = $j_3;
      $19 = $25;
      label = 11;
      break;
    }
   case 14:
    if (($j_4 | 0) == 0) {
      label = 15;
      break;
    } else if (($j_4 | 0) == 1) {
      label = 16;
      break;
    } else if (($j_4 | 0) == 2) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $mval = $7 + 244 | 0;
    HEAP32[$mval >> 2] = -1;
    label = 23;
    break;
   case 16:
    $26 = HEAP32[$0 >> 2] | 0;
    $mval53 = $7 + 244 | 0;
    HEAP32[$mval53 >> 2] = $26;
    label = 23;
    break;
   case 17:
    $27 = HEAP32[$0 >> 2] | 0;
    $28 = HEAP32[$arrayidx56 >> 2] | 0;
    $add57 = $28 + $27 | 0;
    $div = ($add57 | 0) / 2 & -1;
    $mval59 = $7 + 244 | 0;
    HEAP32[$mval59 >> 2] = $div;
    label = 23;
    break;
   case 18:
    _qsort($4 | 0, $j_4 | 0, 4, 136);
    $rem58 = $j_4 & 1;
    $tobool60 = ($rem58 | 0) == 0;
    $div62 = ($j_4 | 0) / 2 & -1;
    if ($tobool60) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $arrayidx63 = $0 + ($div62 << 2) | 0;
    $29 = HEAP32[$arrayidx63 >> 2] | 0;
    $mval65 = $7 + 244 | 0;
    HEAP32[$mval65 >> 2] = $29;
    label = 23;
    break;
   case 20:
    $sub = $div62 - 1 | 0;
    $sub68 = $j_4 - 1 | 0;
    $arrayidx69 = $0 + ($sub68 << 2) | 0;
    $30 = HEAP32[$arrayidx69 >> 2] | 0;
    $arrayidx70 = $0 + ($div62 << 2) | 0;
    $31 = HEAP32[$arrayidx70 >> 2] | 0;
    $sub71 = $30 - $31 | 0;
    $arrayidx72 = $0 + ($sub << 2) | 0;
    $32 = HEAP32[$arrayidx72 >> 2] | 0;
    $33 = HEAP32[$0 >> 2] | 0;
    $sub74 = $32 - $33 | 0;
    $cmp75 = ($sub74 | 0) == ($sub71 | 0);
    if ($cmp75) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $add80 = $32 + $31 | 0;
    $div81 = ($add80 | 0) / 2 & -1;
    $mval83 = $7 + 244 | 0;
    HEAP32[$mval83 >> 2] = $div81;
    label = 23;
    break;
   case 22:
    $mul86 = Math_imul($32, $sub71);
    $mul88 = Math_imul($sub74, $31);
    $add89 = $mul88 + $mul86 | 0;
    $add90 = $sub74 + $sub71 | 0;
    $div91 = ($add89 | 0) / ($add90 | 0) & -1;
    $mval93 = $7 + 244 | 0;
    HEAP32[$mval93 >> 2] = $div91;
    label = 23;
    break;
   case 23:
    $inc97 = $i_077 + 1 | 0;
    $34 = HEAP32[$rank >> 2] | 0;
    $n5 = $34 + ($r0 * 44 & -1) | 0;
    $35 = HEAP32[$n5 >> 2] | 0;
    $cmp = ($inc97 | 0) < ($35 | 0);
    if ($cmp) {
      $i_077 = $inc97;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 24:
    $arrayidx107 = $2 + ($i_162 << 2) | 0;
    $36 = HEAP32[$arrayidx107 >> 2] | 0;
    $size = $36 + 188 | 0;
    $37 = HEAP32[$size >> 2] | 0;
    $cmp110 = ($37 | 0) == 0;
    if ($cmp110) {
      label = 25;
      break;
    } else {
      $hasfixed_1 = $hasfixed_061;
      label = 27;
      break;
    }
   case 25:
    $size114 = $36 + 180 | 0;
    $38 = HEAP32[$size114 >> 2] | 0;
    $cmp115 = ($38 | 0) == 0;
    if ($cmp115) {
      label = 26;
      break;
    } else {
      $hasfixed_1 = $hasfixed_061;
      label = 27;
      break;
    }
   case 26:
    $call = _flat_mval($36) | 0;
    $conv118 = $hasfixed_061 & 255;
    $or = $call | $conv118;
    $conv119 = $or & 255;
    $hasfixed_1 = $conv119;
    label = 27;
    break;
   case 27:
    $inc122 = $i_162 + 1 | 0;
    $39 = HEAP32[$rank >> 2] | 0;
    $n103 = $39 + ($r0 * 44 & -1) | 0;
    $40 = HEAP32[$n103 >> 2] | 0;
    $cmp104 = ($inc122 | 0) < ($40 | 0);
    if ($cmp104) {
      $hasfixed_061 = $hasfixed_1;
      $i_162 = $inc122;
      label = 24;
      break;
    } else {
      $hasfixed_0_lcssa = $hasfixed_1;
      label = 28;
      break;
    }
   case 28:
    return $hasfixed_0_lcssa | 0;
  }
  return 0;
}
function _reorder($g, $r, $reverse, $hasfixed) {
  $g = $g | 0;
  $r = $r | 0;
  $reverse = $reverse | 0;
  $hasfixed = $hasfixed | 0;
  var $rank = 0, $0 = 0, $v = 0, $1 = 0, $n = 0, $2 = 0, $cmp56 = 0, $add_ptr = 0, $3 = 0, $4 = 0, $tobool55 = 0, $nelt_062_in = 0, $changed_061 = 0, $ep_057 = 0, $nelt_062 = 0, $cmp84452 = 0, $changed_1_ph54 = 0, $lp_0_ph53 = 0, $lp_1 = 0, $cmp10 = 0, $5 = 0, $mval = 0, $6 = 0, $cmp12 = 0, $incdec_ptr = 0, $sawclust_0_ph = 0, $lp_1_pn_ph = 0, $tobool = 0, $lp_1_pn = 0, $rp_0 = 0, $cmp17 = 0, $7 = 0, $clust = 0, $8 = 0, $tobool20 = 0, $9 = 0, $10 = 0, $call = 0, $tobool23 = 0, $mval27 = 0, $11 = 0, $cmp28 = 0, $clust33 = 0, $12 = 0, $tobool34 = 0, $sawclust_0_ = 0, $muststay_0 = 0, $cmp43 = 0, $13 = 0, $mval47 = 0, $14 = 0, $15 = 0, $mval49 = 0, $16 = 0, $cmp50 = 0, $cmp52 = 0, $or_cond = 0, $or_cond77 = 0, $cmp8 = 0, $17 = 0, $18 = 0, $inc = 0, $cmp844 = 0, $changed_1_ph50 = 0, $incdec_ptr66 = 0, $ep_1 = 0, $cmp = 0, $tobool70 = 0, $19 = 0, $rank73 = 0, $20 = 0, $valid = 0, $cmp75 = 0, $sub78 = 0, $21 = 0, $rank80 = 0, $22 = 0, $valid82 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $g + 224 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $v = $0 + ($r * 44 & -1) + 4 | 0;
    $1 = HEAP32[$v >> 2] | 0;
    $n = $0 + ($r * 44 & -1) | 0;
    $2 = HEAP32[$n >> 2] | 0;
    $cmp56 = ($2 | 0) > 0;
    if ($cmp56) {
      label = 3;
      break;
    } else {
      label = 24;
      break;
    }
   case 3:
    $add_ptr = $1 + ($2 << 2) | 0;
    $3 = $hasfixed | $reverse;
    $4 = ($3 | 0) == 0;
    $tobool55 = ($reverse | 0) == 0;
    $ep_057 = $add_ptr;
    $changed_061 = 0;
    $nelt_062_in = $2;
    label = 4;
    break;
   case 4:
    $nelt_062 = $nelt_062_in - 1 | 0;
    $cmp84452 = $1 >>> 0 < $ep_057 >>> 0;
    if ($cmp84452) {
      $lp_0_ph53 = $1;
      $changed_1_ph54 = $changed_061;
      label = 5;
      break;
    } else {
      $changed_1_ph50 = $changed_061;
      label = 20;
      break;
    }
   case 5:
    $lp_1 = $lp_0_ph53;
    label = 6;
    break;
   case 6:
    $cmp10 = $lp_1 >>> 0 < $ep_057 >>> 0;
    if ($cmp10) {
      label = 7;
      break;
    } else {
      $changed_1_ph50 = $changed_1_ph54;
      label = 20;
      break;
    }
   case 7:
    $5 = HEAP32[$lp_1 >> 2] | 0;
    $mval = $5 + 244 | 0;
    $6 = HEAP32[$mval >> 2] | 0;
    $cmp12 = ($6 | 0) < 0;
    $incdec_ptr = $lp_1 + 4 | 0;
    if ($cmp12) {
      $lp_1 = $incdec_ptr;
      label = 6;
      break;
    } else {
      $lp_1_pn_ph = $lp_1;
      $sawclust_0_ph = 0;
      label = 8;
      break;
    }
   case 8:
    $tobool = $sawclust_0_ph << 24 >> 24 == 0;
    $lp_1_pn = $lp_1_pn_ph;
    label = 9;
    break;
   case 9:
    $rp_0 = $lp_1_pn + 4 | 0;
    $cmp17 = $rp_0 >>> 0 < $ep_057 >>> 0;
    if ($cmp17) {
      label = 10;
      break;
    } else {
      $changed_1_ph50 = $changed_1_ph54;
      label = 20;
      break;
    }
   case 10:
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $7 = HEAP32[$rp_0 >> 2] | 0;
    $clust = $7 + 216 | 0;
    $8 = HEAP32[$clust >> 2] | 0;
    $tobool20 = ($8 | 0) == 0;
    if ($tobool20) {
      label = 12;
      break;
    } else {
      $lp_1_pn = $rp_0;
      label = 9;
      break;
    }
   case 12:
    $9 = HEAP32[$lp_1 >> 2] | 0;
    $10 = HEAP32[$rp_0 >> 2] | 0;
    $call = _left2right($g, $9, $10) | 0;
    $tobool23 = ($call | 0) == 0;
    if ($tobool23) {
      label = 13;
      break;
    } else {
      $muststay_0 = 1;
      label = 15;
      break;
    }
   case 13:
    $mval27 = $10 + 244 | 0;
    $11 = HEAP32[$mval27 >> 2] | 0;
    $cmp28 = ($11 | 0) > -1;
    if ($cmp28) {
      $muststay_0 = 0;
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $clust33 = $10 + 216 | 0;
    $12 = HEAP32[$clust33 >> 2] | 0;
    $tobool34 = ($12 | 0) == 0;
    $sawclust_0_ = $tobool34 ? $sawclust_0_ph : 1;
    $lp_1_pn_ph = $rp_0;
    $sawclust_0_ph = $sawclust_0_;
    label = 8;
    break;
   case 15:
    if ($cmp17) {
      label = 16;
      break;
    } else {
      $changed_1_ph50 = $changed_1_ph54;
      label = 20;
      break;
    }
   case 16:
    $cmp43 = ($muststay_0 | 0) == 0;
    if ($cmp43) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $13 = HEAP32[$lp_1 >> 2] | 0;
    $mval47 = $13 + 244 | 0;
    $14 = HEAP32[$mval47 >> 2] | 0;
    $15 = HEAP32[$rp_0 >> 2] | 0;
    $mval49 = $15 + 244 | 0;
    $16 = HEAP32[$mval49 >> 2] | 0;
    $cmp50 = ($14 | 0) <= ($16 | 0);
    $cmp52 = ($14 | 0) != ($16 | 0);
    $or_cond = $cmp52 | $tobool55;
    $or_cond77 = $cmp50 & $or_cond;
    if ($or_cond77) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $cmp8 = $rp_0 >>> 0 < $ep_057 >>> 0;
    if ($cmp8) {
      $lp_1 = $rp_0;
      label = 6;
      break;
    } else {
      $changed_1_ph50 = $changed_1_ph54;
      label = 20;
      break;
    }
   case 19:
    $17 = HEAP32[$lp_1 >> 2] | 0;
    $18 = HEAP32[$rp_0 >> 2] | 0;
    _exchange($17, $18);
    $inc = $changed_1_ph54 + 1 | 0;
    $cmp844 = $rp_0 >>> 0 < $ep_057 >>> 0;
    if ($cmp844) {
      $lp_0_ph53 = $rp_0;
      $changed_1_ph54 = $inc;
      label = 5;
      break;
    } else {
      $changed_1_ph50 = $inc;
      label = 20;
      break;
    }
   case 20:
    $incdec_ptr66 = $ep_057 - 4 | 0;
    $ep_1 = $4 ? $incdec_ptr66 : $ep_057;
    $cmp = ($nelt_062 | 0) > 0;
    if ($cmp) {
      $ep_057 = $ep_1;
      $changed_061 = $changed_1_ph50;
      $nelt_062_in = $nelt_062;
      label = 4;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $tobool70 = ($changed_1_ph50 | 0) == 0;
    if ($tobool70) {
      label = 24;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $19 = HEAP32[41526] | 0;
    $rank73 = $19 + 224 | 0;
    $20 = HEAP32[$rank73 >> 2] | 0;
    $valid = $20 + ($r * 44 & -1) + 33 | 0;
    HEAP8[$valid] = 0;
    $cmp75 = ($r | 0) > 0;
    if ($cmp75) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $sub78 = $r - 1 | 0;
    $21 = HEAP32[41526] | 0;
    $rank80 = $21 + 224 | 0;
    $22 = HEAP32[$rank80 >> 2] | 0;
    $valid82 = $22 + ($sub78 * 44 & -1) + 33 | 0;
    HEAP8[$valid82] = 0;
    label = 24;
    break;
   case 24:
    return;
  }
}
function _inside_cluster($g, $v) {
  $g = $g | 0;
  $v = $v | 0;
  var $call = 0;
  $call = _is_a_normal_node_of($g, $v) | 0;
  return _is_a_vnode_of_an_edge_of($g, $v) | $call | 0;
}
function _balance($g) {
  $g = $g | 0;
  var $maxrank = 0, $0 = 0, $minrank = 0, $1 = 0, $cmp6 = 0, $conv = 0, $rank = 0, $r_07 = 0, $2 = 0, $candidate = 0, $3 = 0, $n1 = 0, $4 = 0, $sub2 = 0, $cmp93 = 0, $cmp27 = 0, $add35 = 0, $5 = 0, $i_04 = 0, $v15 = 0, $6 = 0, $arrayidx16 = 0, $7 = 0, $add = 0, $arrayidx21 = 0, $8 = 0, $order = 0, $9 = 0, $order24 = 0, $10 = 0, $cmp25 = 0, $call = 0, $tobool = 0, $call30 = 0, $call32 = 0, $c1_0 = 0, $c0_0 = 0, $11 = 0, $n39 = 0, $12 = 0, $cmp40 = 0, $call43 = 0, $add44 = 0, $call45 = 0, $add46 = 0, $c1_1 = 0, $c0_1 = 0, $cmp48 = 0, $13 = 0, $n = 0, $14 = 0, $sub = 0, $cmp9 = 0, $dec = 0, $15 = 0, $conv2 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $maxrank = $g + 250 | 0;
    $0 = HEAP16[$maxrank >> 1] | 0;
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $cmp6 = $0 << 16 >> 16 < $1 << 16 >> 16;
    if ($cmp6) {
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_07 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rank >> 2] | 0;
    $candidate = $2 + ($r_07 * 44 & -1) + 32 | 0;
    HEAP8[$candidate] = 0;
    $3 = HEAP32[$rank >> 2] | 0;
    $n1 = $3 + ($r_07 * 44 & -1) | 0;
    $4 = HEAP32[$n1 >> 2] | 0;
    $sub2 = $4 - 1 | 0;
    $cmp93 = ($sub2 | 0) > 0;
    if ($cmp93) {
      label = 5;
      break;
    } else {
      label = 16;
      break;
    }
   case 5:
    $cmp27 = ($r_07 | 0) > 0;
    $add35 = $r_07 + 1 | 0;
    $i_04 = 0;
    $5 = $3;
    label = 6;
    break;
   case 6:
    $v15 = $5 + ($r_07 * 44 & -1) + 4 | 0;
    $6 = HEAP32[$v15 >> 2] | 0;
    $arrayidx16 = $6 + ($i_04 << 2) | 0;
    $7 = HEAP32[$arrayidx16 >> 2] | 0;
    $add = $i_04 + 1 | 0;
    $arrayidx21 = $6 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx21 >> 2] | 0;
    $order = $7 + 240 | 0;
    $9 = HEAP32[$order >> 2] | 0;
    $order24 = $8 + 240 | 0;
    $10 = HEAP32[$order24 >> 2] | 0;
    $cmp25 = ($9 | 0) < ($10 | 0);
    if ($cmp25) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    ___assert_func(119784, 474, 164640, 105480);
   case 8:
    $call = _left2right($g, $7, $8) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 14;
      break;
    }
   case 9:
    if ($cmp27) {
      label = 10;
      break;
    } else {
      $c0_0 = 0;
      $c1_0 = 0;
      label = 11;
      break;
    }
   case 10:
    $call30 = _in_cross($7, $8) | 0;
    $call32 = _in_cross($8, $7) | 0;
    $c0_0 = $call30;
    $c1_0 = $call32;
    label = 11;
    break;
   case 11:
    $11 = HEAP32[$rank >> 2] | 0;
    $n39 = $11 + ($add35 * 44 & -1) | 0;
    $12 = HEAP32[$n39 >> 2] | 0;
    $cmp40 = ($12 | 0) > 0;
    if ($cmp40) {
      label = 12;
      break;
    } else {
      $c0_1 = $c0_0;
      $c1_1 = $c1_0;
      label = 13;
      break;
    }
   case 12:
    $call43 = _out_cross($7, $8) | 0;
    $add44 = $call43 + $c0_0 | 0;
    $call45 = _out_cross($8, $7) | 0;
    $add46 = $call45 + $c1_0 | 0;
    $c0_1 = $add44;
    $c1_1 = $add46;
    label = 13;
    break;
   case 13:
    $cmp48 = ($c1_1 | 0) > ($c0_1 | 0);
    if ($cmp48) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $13 = HEAP32[$rank >> 2] | 0;
    $n = $13 + ($r_07 * 44 & -1) | 0;
    $14 = HEAP32[$n >> 2] | 0;
    $sub = $14 - 1 | 0;
    $cmp9 = ($add | 0) < ($sub | 0);
    if ($cmp9) {
      $i_04 = $add;
      $5 = $13;
      label = 6;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    _balanceNodes($g, $r_07, $7, $8);
    label = 14;
    break;
   case 16:
    $dec = $r_07 - 1 | 0;
    $15 = HEAP16[$minrank >> 1] | 0;
    $conv2 = $15 << 16 >> 16;
    $cmp = ($dec | 0) < ($conv2 | 0);
    if ($cmp) {
      label = 17;
      break;
    } else {
      $r_07 = $dec;
      label = 4;
      break;
    }
   case 17:
    return;
  }
}
function _set_xcoords($g) {
  $g = $g | 0;
  var $rank1 = 0, $0 = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp15 = 0, $conv = 0, $i_016 = 0, $n = 0, $3 = 0, $cmp712 = 0, $v11 = 0, $j_013 = 0, $4 = 0, $arrayidx12 = 0, $5 = 0, $rank14 = 0, $6 = 0, $conv15 = 0.0, $x = 0, $inc = 0, $7 = 0, $cmp7 = 0, $inc20 = 0, $8 = 0, $conv4 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank1 = $g + 224 | 0;
    $0 = HEAP32[$rank1 >> 2] | 0;
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp15 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp15) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $1 << 16 >> 16;
    $i_016 = $conv;
    label = 4;
    break;
   case 4:
    $n = $0 + ($i_016 * 44 & -1) | 0;
    $3 = HEAP32[$n >> 2] | 0;
    $cmp712 = ($3 | 0) > 0;
    if ($cmp712) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $v11 = $0 + ($i_016 * 44 & -1) + 4 | 0;
    $j_013 = 0;
    label = 6;
    break;
   case 6:
    $4 = HEAP32[$v11 >> 2] | 0;
    $arrayidx12 = $4 + ($j_013 << 2) | 0;
    $5 = HEAP32[$arrayidx12 >> 2] | 0;
    $rank14 = $5 + 236 | 0;
    $6 = HEAP32[$rank14 >> 2] | 0;
    $conv15 = +($6 | 0);
    $x = $5 + 32 | 0;
    HEAPF64[$x >> 3] = $conv15;
    HEAP32[$rank14 >> 2] = $i_016;
    $inc = $j_013 + 1 | 0;
    $7 = HEAP32[$n >> 2] | 0;
    $cmp7 = ($inc | 0) < ($7 | 0);
    if ($cmp7) {
      $j_013 = $inc;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $inc20 = $i_016 + 1 | 0;
    $8 = HEAP16[$maxrank >> 1] | 0;
    $conv4 = $8 << 16 >> 16;
    $cmp = ($inc20 | 0) > ($conv4 | 0);
    if ($cmp) {
      label = 8;
      break;
    } else {
      $i_016 = $inc20;
      label = 4;
      break;
    }
   case 8:
    return;
  }
}
function _new_matrix($i, $j) {
  $i = $i | 0;
  $j = $j | 0;
  var $call = 0;
  $call = _zmalloc(12) | 0;
  HEAP32[$call >> 2] = $i;
  HEAP32[$call + 4 >> 2] = $j;
  HEAP32[$call + 8 >> 2] = _zmalloc(Math_imul($j, $i)) | 0;
  return $call | 0;
}
function _set_ycoords($g) {
  $g = $g | 0;
  var $rank1 = 0, $0 = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp124 = 0, $conv = 0, $r_0125 = 0, $n7 = 0, $3 = 0, $cmp8121 = 0, $v = 0, $pht2 = 0, $ht261 = 0, $pht1 = 0, $ht1 = 0, $i_0122 = 0, $4 = 0, $arrayidx12 = 0, $5 = 0, $ht = 0, $6 = 0.0, $cmp14 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv18 = 0, $add22 = 0, $div = 0, $list = 0, $7 = 0, $tobool = 0, $8 = 0, $9 = 0, $tobool29117 = 0, $10 = 0, $11 = 0, $j_0119 = 0, $ht2_0118 = 0, $tail = 0, $12 = 0, $head = 0, $13 = 0, $cmp31 = 0, $label = 0, $14 = 0, $tobool35 = 0, $conv37 = 0.0, $y = 0, $15 = 0.0, $div40 = 0.0, $cmp41 = 0, $conv37_div40 = 0.0, $conv53 = 0, $ht2_1 = 0, $inc = 0, $arrayidx28 = 0, $16 = 0, $tobool29 = 0, $ht2_2 = 0, $17 = 0, $cmp57 = 0, $18 = 0, $cmp66 = 0, $clust74 = 0, $19 = 0, $tobool75 = 0, $cmp77 = 0, $cond79 = 0, $rank81 = 0, $20 = 0, $minrank83 = 0, $21 = 0, $conv84 = 0, $cmp85 = 0, $ht289 = 0, $22 = 0, $add90 = 0, $cmp91 = 0, $_add90 = 0, $23 = 0, $maxrank106 = 0, $24 = 0, $conv107 = 0, $cmp108 = 0, $ht1112 = 0, $25 = 0, $add113 = 0, $cmp114 = 0, $_add113 = 0, $inc128 = 0, $26 = 0, $cmp8 = 0, $inc131 = 0, $27 = 0, $conv4 = 0, $cmp = 0, $call = 0, $28 = 0, $conv135 = 0, $ht1137 = 0, $29 = 0, $conv138 = 0.0, $v140 = 0, $30 = 0, $31 = 0, $y143 = 0, $dec110 = 0, $32 = 0, $conv146111 = 0, $cmp147112 = 0, $ranksep = 0, $dec115 = 0, $r_1114 = 0, $maxht_0113 = 0, $pht2151 = 0, $33 = 0, $pht1153 = 0, $34 = 0, $add154 = 0, $35 = 0, $add156 = 0, $ht2159 = 0, $36 = 0, $ht1161 = 0, $37 = 0, $add162 = 0, $add163 = 0, $cmp164 = 0, $cond169 = 0, $n171 = 0, $38 = 0, $cmp172 = 0, $v177 = 0, $39 = 0, $40 = 0, $y181 = 0, $41 = 0.0, $conv182 = 0.0, $add183 = 0.0, $v185 = 0, $42 = 0, $43 = 0, $y189 = 0, $cmp191 = 0, $cond196 = 0, $dec = 0, $44 = 0, $conv146 = 0, $cmp147 = 0, $phitmp = 0.0, $maxht_0_lcssa = 0.0, $exact_ranksep = 0, $45 = 0, $tobool198 = 0, $46 = 0, $conv202 = 0, $r_2105 = 0, $47 = 0, $conv207106 = 0, $cmp208107 = 0, $r_2109 = 0, $r_2_in108 = 0, $n212 = 0, $48 = 0, $cmp213 = 0, $r_2 = 0, $49 = 0, $conv207 = 0, $cmp208 = 0, $v218 = 0, $50 = 0, $51 = 0, $y222 = 0, $52 = 0.0, $add224 = 0.0, $v226 = 0, $53 = 0, $54 = 0, $y230 = 0, $tobool236 = 0, $rankdir = 0, $55 = 0, $and238 = 0, $tobool239 = 0, $56 = 0, $conv243 = 0, $nlist = 0, $n_0102 = 0, $tobool247103 = 0, $n_0104 = 0, $rank250 = 0, $57 = 0, $v252 = 0, $58 = 0, $59 = 0, $y256 = 0, $60 = 0.0, $y259 = 0, $next = 0, $n_0 = 0, $tobool247 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank1 = $g + 224 | 0;
    $0 = HEAP32[$rank1 >> 2] | 0;
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp124 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp124) {
      label = 27;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $1 << 16 >> 16;
    $r_0125 = $conv;
    label = 4;
    break;
   case 4:
    $n7 = $0 + ($r_0125 * 44 & -1) | 0;
    $3 = HEAP32[$n7 >> 2] | 0;
    $cmp8121 = ($3 | 0) > 0;
    if ($cmp8121) {
      label = 5;
      break;
    } else {
      label = 26;
      break;
    }
   case 5:
    $v = $0 + ($r_0125 * 44 & -1) + 4 | 0;
    $pht2 = $0 + ($r_0125 * 44 & -1) + 28 | 0;
    $ht261 = $0 + ($r_0125 * 44 & -1) + 20 | 0;
    $pht1 = $0 + ($r_0125 * 44 & -1) + 24 | 0;
    $ht1 = $0 + ($r_0125 * 44 & -1) + 16 | 0;
    $i_0122 = 0;
    label = 6;
    break;
   case 6:
    $4 = HEAP32[$v >> 2] | 0;
    $arrayidx12 = $4 + ($i_0122 << 2) | 0;
    $5 = HEAP32[$arrayidx12 >> 2] | 0;
    $ht = $5 + 96 | 0;
    $6 = +HEAPF64[$ht >> 3];
    $cmp14 = $6 < 0.0;
    if ($cmp14) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add = $6 + .5;
    $add_sink = $add;
    label = 9;
    break;
   case 8:
    $sub = $6 + -.5;
    $add_sink = $sub;
    label = 9;
    break;
   case 9:
    $conv18 = ~~$add_sink;
    $add22 = $conv18 + 1 | 0;
    $div = ($add22 | 0) / 2 & -1;
    $list = $5 + 208 | 0;
    $7 = HEAP32[$list >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      $ht2_2 = $div;
      label = 16;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $8 = HEAP32[$list >> 2] | 0;
    $9 = HEAP32[$8 >> 2] | 0;
    $tobool29117 = ($9 | 0) == 0;
    if ($tobool29117) {
      $ht2_2 = $div;
      label = 16;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $10 = HEAP32[$list >> 2] | 0;
    $ht2_0118 = $div;
    $j_0119 = 0;
    $11 = $9;
    label = 12;
    break;
   case 12:
    $tail = $11 + 16 | 0;
    $12 = HEAP32[$tail >> 2] | 0;
    $head = $11 + 12 | 0;
    $13 = HEAP32[$head >> 2] | 0;
    $cmp31 = ($12 | 0) == ($13 | 0);
    if ($cmp31) {
      label = 13;
      break;
    } else {
      $ht2_1 = $ht2_0118;
      label = 15;
      break;
    }
   case 13:
    $label = $11 + 112 | 0;
    $14 = HEAP32[$label >> 2] | 0;
    $tobool35 = ($14 | 0) == 0;
    if ($tobool35) {
      $ht2_1 = $ht2_0118;
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $conv37 = +($ht2_0118 | 0);
    $y = $14 + 32 | 0;
    $15 = +HEAPF64[$y >> 3];
    $div40 = $15 * .5;
    $cmp41 = $conv37 > $div40;
    $conv37_div40 = $cmp41 ? $conv37 : $div40;
    $conv53 = ~~$conv37_div40;
    $ht2_1 = $conv53;
    label = 15;
    break;
   case 15:
    $inc = $j_0119 + 1 | 0;
    $arrayidx28 = $10 + ($inc << 2) | 0;
    $16 = HEAP32[$arrayidx28 >> 2] | 0;
    $tobool29 = ($16 | 0) == 0;
    if ($tobool29) {
      $ht2_2 = $ht2_1;
      label = 16;
      break;
    } else {
      $ht2_0118 = $ht2_1;
      $j_0119 = $inc;
      $11 = $16;
      label = 12;
      break;
    }
   case 16:
    $17 = HEAP32[$pht2 >> 2] | 0;
    $cmp57 = ($17 | 0) < ($ht2_2 | 0);
    if ($cmp57) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    HEAP32[$ht261 >> 2] = $ht2_2;
    HEAP32[$pht2 >> 2] = $ht2_2;
    label = 18;
    break;
   case 18:
    $18 = HEAP32[$pht1 >> 2] | 0;
    $cmp66 = ($18 | 0) < ($ht2_2 | 0);
    if ($cmp66) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    HEAP32[$ht1 >> 2] = $ht2_2;
    HEAP32[$pht1 >> 2] = $ht2_2;
    label = 20;
    break;
   case 20:
    $clust74 = $5 + 216 | 0;
    $19 = HEAP32[$clust74 >> 2] | 0;
    $tobool75 = ($19 | 0) == 0;
    if ($tobool75) {
      label = 25;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $cmp77 = ($19 | 0) == ($g | 0);
    $cond79 = $cmp77 ? 0 : 8;
    $rank81 = $5 + 236 | 0;
    $20 = HEAP32[$rank81 >> 2] | 0;
    $minrank83 = $19 + 248 | 0;
    $21 = HEAP16[$minrank83 >> 1] | 0;
    $conv84 = $21 << 16 >> 16;
    $cmp85 = ($20 | 0) == ($conv84 | 0);
    if ($cmp85) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $ht289 = $19 + 164 | 0;
    $22 = HEAP32[$ht289 >> 2] | 0;
    $add90 = $cond79 + $ht2_2 | 0;
    $cmp91 = ($22 | 0) > ($add90 | 0);
    $_add90 = $cmp91 ? $22 : $add90;
    HEAP32[$ht289 >> 2] = $_add90;
    label = 23;
    break;
   case 23:
    $23 = HEAP32[$rank81 >> 2] | 0;
    $maxrank106 = $19 + 250 | 0;
    $24 = HEAP16[$maxrank106 >> 1] | 0;
    $conv107 = $24 << 16 >> 16;
    $cmp108 = ($23 | 0) == ($conv107 | 0);
    if ($cmp108) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $ht1112 = $19 + 160 | 0;
    $25 = HEAP32[$ht1112 >> 2] | 0;
    $add113 = $cond79 + $ht2_2 | 0;
    $cmp114 = ($25 | 0) > ($add113 | 0);
    $_add113 = $cmp114 ? $25 : $add113;
    HEAP32[$ht1112 >> 2] = $_add113;
    label = 25;
    break;
   case 25:
    $inc128 = $i_0122 + 1 | 0;
    $26 = HEAP32[$n7 >> 2] | 0;
    $cmp8 = ($inc128 | 0) < ($26 | 0);
    if ($cmp8) {
      $i_0122 = $inc128;
      label = 6;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $inc131 = $r_0125 + 1 | 0;
    $27 = HEAP16[$maxrank >> 1] | 0;
    $conv4 = $27 << 16 >> 16;
    $cmp = ($inc131 | 0) > ($conv4 | 0);
    if ($cmp) {
      label = 27;
      break;
    } else {
      $r_0125 = $inc131;
      label = 4;
      break;
    }
   case 27:
    $call = _clust_ht($g) | 0;
    $28 = HEAP16[$maxrank >> 1] | 0;
    $conv135 = $28 << 16 >> 16;
    $ht1137 = $0 + ($conv135 * 44 & -1) + 16 | 0;
    $29 = HEAP32[$ht1137 >> 2] | 0;
    $conv138 = +($29 | 0);
    $v140 = $0 + ($conv135 * 44 & -1) + 4 | 0;
    $30 = HEAP32[$v140 >> 2] | 0;
    $31 = HEAP32[$30 >> 2] | 0;
    $y143 = $31 + 40 | 0;
    HEAPF64[$y143 >> 3] = $conv138;
    $dec110 = $conv135 - 1 | 0;
    $32 = HEAP16[$minrank >> 1] | 0;
    $conv146111 = $32 << 16 >> 16;
    $cmp147112 = ($dec110 | 0) < ($conv146111 | 0);
    if ($cmp147112) {
      $maxht_0_lcssa = 0.0;
      label = 33;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $ranksep = $g + 264 | 0;
    $maxht_0113 = 0;
    $r_1114 = $conv135;
    $dec115 = $dec110;
    label = 29;
    break;
   case 29:
    $pht2151 = $0 + ($r_1114 * 44 & -1) + 28 | 0;
    $33 = HEAP32[$pht2151 >> 2] | 0;
    $pht1153 = $0 + ($dec115 * 44 & -1) + 24 | 0;
    $34 = HEAP32[$pht1153 >> 2] | 0;
    $add154 = $34 + $33 | 0;
    $35 = HEAP32[$ranksep >> 2] | 0;
    $add156 = $add154 + $35 | 0;
    $ht2159 = $0 + ($r_1114 * 44 & -1) + 20 | 0;
    $36 = HEAP32[$ht2159 >> 2] | 0;
    $ht1161 = $0 + ($dec115 * 44 & -1) + 16 | 0;
    $37 = HEAP32[$ht1161 >> 2] | 0;
    $add162 = $36 + 8 | 0;
    $add163 = $add162 + $37 | 0;
    $cmp164 = ($add156 | 0) > ($add163 | 0);
    $cond169 = $cmp164 ? $add156 : $add163;
    $n171 = $0 + ($dec115 * 44 & -1) | 0;
    $38 = HEAP32[$n171 >> 2] | 0;
    $cmp172 = ($38 | 0) > 0;
    if ($cmp172) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $v177 = $0 + ($r_1114 * 44 & -1) + 4 | 0;
    $39 = HEAP32[$v177 >> 2] | 0;
    $40 = HEAP32[$39 >> 2] | 0;
    $y181 = $40 + 40 | 0;
    $41 = +HEAPF64[$y181 >> 3];
    $conv182 = +($cond169 | 0);
    $add183 = $conv182 + $41;
    $v185 = $0 + ($dec115 * 44 & -1) + 4 | 0;
    $42 = HEAP32[$v185 >> 2] | 0;
    $43 = HEAP32[$42 >> 2] | 0;
    $y189 = $43 + 40 | 0;
    HEAPF64[$y189 >> 3] = $add183;
    label = 31;
    break;
   case 31:
    $cmp191 = ($maxht_0113 | 0) > ($cond169 | 0);
    $cond196 = $cmp191 ? $maxht_0113 : $cond169;
    $dec = $dec115 - 1 | 0;
    $44 = HEAP16[$minrank >> 1] | 0;
    $conv146 = $44 << 16 >> 16;
    $cmp147 = ($dec | 0) < ($conv146 | 0);
    if ($cmp147) {
      label = 32;
      break;
    } else {
      $maxht_0113 = $cond196;
      $r_1114 = $dec115;
      $dec115 = $dec;
      label = 29;
      break;
    }
   case 32:
    $phitmp = +($cond196 | 0);
    $maxht_0_lcssa = $phitmp;
    label = 33;
    break;
   case 33:
    $exact_ranksep = $g + 288 | 0;
    $45 = HEAP8[$exact_ranksep] | 0;
    $tobool198 = $45 << 24 >> 24 == 0;
    if ($tobool198) {
      label = 38;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $46 = HEAP16[$maxrank >> 1] | 0;
    $conv202 = $46 << 16 >> 16;
    $r_2105 = $conv202 - 1 | 0;
    $47 = HEAP16[$minrank >> 1] | 0;
    $conv207106 = $47 << 16 >> 16;
    $cmp208107 = ($r_2105 | 0) < ($conv207106 | 0);
    if ($cmp208107) {
      label = 38;
      break;
    } else {
      $r_2_in108 = $conv202;
      $r_2109 = $r_2105;
      label = 35;
      break;
    }
   case 35:
    $n212 = $0 + ($r_2109 * 44 & -1) | 0;
    $48 = HEAP32[$n212 >> 2] | 0;
    $cmp213 = ($48 | 0) > 0;
    if ($cmp213) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $r_2 = $r_2109 - 1 | 0;
    $49 = HEAP16[$minrank >> 1] | 0;
    $conv207 = $49 << 16 >> 16;
    $cmp208 = ($r_2 | 0) < ($conv207 | 0);
    if ($cmp208) {
      label = 38;
      break;
    } else {
      $r_2_in108 = $r_2109;
      $r_2109 = $r_2;
      label = 35;
      break;
    }
   case 37:
    $v218 = $0 + ($r_2_in108 * 44 & -1) + 4 | 0;
    $50 = HEAP32[$v218 >> 2] | 0;
    $51 = HEAP32[$50 >> 2] | 0;
    $y222 = $51 + 40 | 0;
    $52 = +HEAPF64[$y222 >> 3];
    $add224 = $maxht_0_lcssa + $52;
    $v226 = $0 + ($r_2109 * 44 & -1) + 4 | 0;
    $53 = HEAP32[$v226 >> 2] | 0;
    $54 = HEAP32[$53 >> 2] | 0;
    $y230 = $54 + 40 | 0;
    HEAPF64[$y230 >> 3] = $add224;
    label = 36;
    break;
   case 38:
    $tobool236 = ($call | 0) == 0;
    if ($tobool236) {
      label = 41;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $rankdir = $g + 156 | 0;
    $55 = HEAP32[$rankdir >> 2] | 0;
    $and238 = $55 & 1;
    $tobool239 = ($and238 | 0) == 0;
    if ($tobool239) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $56 = HEAP8[$exact_ranksep] | 0;
    $conv243 = $56 & 255;
    _adjustRanks($g, $conv243);
    label = 41;
    break;
   case 41:
    $nlist = $g + 220 | 0;
    $n_0102 = HEAP32[$nlist >> 2] | 0;
    $tobool247103 = ($n_0102 | 0) == 0;
    if ($tobool247103) {
      label = 43;
      break;
    } else {
      $n_0104 = $n_0102;
      label = 42;
      break;
    }
   case 42:
    $rank250 = $n_0104 + 236 | 0;
    $57 = HEAP32[$rank250 >> 2] | 0;
    $v252 = $0 + ($57 * 44 & -1) + 4 | 0;
    $58 = HEAP32[$v252 >> 2] | 0;
    $59 = HEAP32[$58 >> 2] | 0;
    $y256 = $59 + 40 | 0;
    $60 = +HEAPF64[$y256 >> 3];
    $y259 = $n_0104 + 40 | 0;
    HEAPF64[$y259 >> 3] = $60;
    $next = $n_0104 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool247 = ($n_0 | 0) == 0;
    if ($tobool247) {
      label = 43;
      break;
    } else {
      $n_0104 = $n_0;
      label = 42;
      break;
    }
   case 43:
    return;
  }
}
function _expand_leaves($g) {
  $g = $g | 0;
  var $nlist = 0, $n_019 = 0, $tobool20 = 0, $n_021 = 0, $inleaf = 0, $0 = 0, $tobool2 = 0, $outleaf = 0, $1 = 0, $tobool6 = 0, $list = 0, $2 = 0, $tobool12 = 0, $3 = 0, $i_0 = 0, $arrayidx = 0, $4 = 0, $tobool18 = 0, $inc = 0, $next = 0, $n_0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _make_leafslots($g);
    $nlist = $g + 220 | 0;
    $n_019 = HEAP32[$nlist >> 2] | 0;
    $tobool20 = ($n_019 | 0) == 0;
    if ($tobool20) {
      label = 11;
      break;
    } else {
      $n_021 = $n_019;
      label = 3;
      break;
    }
   case 3:
    $inleaf = $n_021 + 228 | 0;
    $0 = HEAP32[$inleaf >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _do_leaves($g, $0);
    label = 5;
    break;
   case 5:
    $outleaf = $n_021 + 232 | 0;
    $1 = HEAP32[$outleaf >> 2] | 0;
    $tobool6 = ($1 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _do_leaves($g, $1);
    label = 7;
    break;
   case 7:
    $list = $n_021 + 208 | 0;
    $2 = HEAP32[$list >> 2] | 0;
    $tobool12 = ($2 | 0) == 0;
    if ($tobool12) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $3 = HEAP32[$list >> 2] | 0;
    $i_0 = 0;
    label = 9;
    break;
   case 9:
    $arrayidx = $3 + ($i_0 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $tobool18 = ($4 | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      $i_0 = $inc;
      label = 9;
      break;
    }
   case 10:
    $next = $n_021 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      $n_021 = $n_0;
      label = 3;
      break;
    }
   case 11:
    return;
  }
}
function _create_aux_edges($g) {
  $g = $g | 0;
  _allocate_aux_edges($g);
  _make_LR_constraints($g);
  _make_edge_pairs($g);
  _pos_clusters($g);
  _compress_graph($g);
  return;
}
function _nsiter2($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool = 0, $call1 = 0.0, $1 = 0, $call2 = 0, $conv = 0.0, $mul = 0.0, $conv3 = 0, $maxiter_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 96112) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $maxiter_0 = 2147483647;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = +_atof($call);
    $1 = $g;
    $call2 = _agnnodes($1) | 0;
    $conv = +($call2 | 0);
    $mul = $call1 * $conv;
    $conv3 = ~~$mul;
    $maxiter_0 = $conv3;
    label = 4;
    break;
   case 4:
    return $maxiter_0 | 0;
  }
  return 0;
}
function _postorder($g, $v, $list, $r) {
  $g = $g | 0;
  $v = $v | 0;
  $list = $list | 0;
  $r = $r | 0;
  var $mark = 0, $size = 0, $0 = 0, $cmp = 0, $list4 = 0, $1 = 0, $2 = 0, $tobool19 = 0, $3 = 0, $4 = 0, $cnt_021 = 0, $i_020 = 0, $weight = 0, $5 = 0.0, $cmp6 = 0, $head = 0, $6 = 0, $node_type = 0, $7 = 0, $cmp9 = 0, $8 = 0, $call = 0, $lnot = 0, $and18 = 0, $9 = 0, $clust = 0, $10 = 0, $tail = 0, $11 = 0, $clust19 = 0, $12 = 0, $cmp20 = 0, $mark26 = 0, $13 = 0, $cmp28 = 0, $add_ptr = 0, $call32 = 0, $add = 0, $cnt_1 = 0, $inc = 0, $14 = 0, $arrayidx = 0, $15 = 0, $tobool = 0, $cnt_2 = 0, $rank = 0, $16 = 0, $cmp36 = 0, $inc38 = 0, $arrayidx39 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $mark = $v + 163 | 0;
    HEAP8[$mark] = 1;
    $size = $v + 196 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $cnt_2 = 0;
      label = 11;
      break;
    }
   case 3:
    $list4 = $v + 192 | 0;
    $1 = HEAP32[$list4 >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool19 = ($2 | 0) == 0;
    if ($tobool19) {
      $cnt_2 = 0;
      label = 11;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = $g;
    $i_020 = 0;
    $cnt_021 = 0;
    $4 = $2;
    label = 5;
    break;
   case 5:
    $weight = $4 + 172 | 0;
    $5 = +HEAPF32[$weight >> 2];
    $cmp6 = $5 == 0.0;
    if ($cmp6) {
      $cnt_1 = $cnt_021;
      label = 10;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $head = $4 + 12 | 0;
    $6 = HEAP32[$head >> 2] | 0;
    $node_type = $6 + 162 | 0;
    $7 = HEAP8[$node_type] | 0;
    $cmp9 = $7 << 24 >> 24 == 0;
    $8 = $6 | 0;
    $call = _agcontains($3, $8) | 0;
    $lnot = ($call | 0) == 0;
    $and18 = $cmp9 & $lnot;
    if ($and18) {
      $cnt_1 = $cnt_021;
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $9 = HEAP32[$head >> 2] | 0;
    $clust = $9 + 216 | 0;
    $10 = HEAP32[$clust >> 2] | 0;
    $tail = $4 + 16 | 0;
    $11 = HEAP32[$tail >> 2] | 0;
    $clust19 = $11 + 216 | 0;
    $12 = HEAP32[$clust19 >> 2] | 0;
    $cmp20 = ($10 | 0) == ($12 | 0);
    if ($cmp20) {
      label = 8;
      break;
    } else {
      $cnt_1 = $cnt_021;
      label = 10;
      break;
    }
   case 8:
    $mark26 = $9 + 163 | 0;
    $13 = HEAP8[$mark26] | 0;
    $cmp28 = $13 << 24 >> 24 == 0;
    if ($cmp28) {
      label = 9;
      break;
    } else {
      $cnt_1 = $cnt_021;
      label = 10;
      break;
    }
   case 9:
    $add_ptr = $list + ($cnt_021 << 2) | 0;
    $call32 = _postorder($g, $9, $add_ptr, $r) | 0;
    $add = $call32 + $cnt_021 | 0;
    $cnt_1 = $add;
    label = 10;
    break;
   case 10:
    $inc = $i_020 + 1 | 0;
    $14 = HEAP32[$list4 >> 2] | 0;
    $arrayidx = $14 + ($inc << 2) | 0;
    $15 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($15 | 0) == 0;
    if ($tobool) {
      $cnt_2 = $cnt_1;
      label = 11;
      break;
    } else {
      $i_020 = $inc;
      $cnt_021 = $cnt_1;
      $4 = $15;
      label = 5;
      break;
    }
   case 11:
    $rank = $v + 236 | 0;
    $16 = HEAP32[$rank >> 2] | 0;
    $cmp36 = ($16 | 0) == ($r | 0);
    if ($cmp36) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    ___assert_func(119784, 1161, 163920, 146624);
    return 0;
   case 13:
    $inc38 = $cnt_2 + 1 | 0;
    $arrayidx39 = $list + ($cnt_2 << 2) | 0;
    HEAP32[$arrayidx39 >> 2] = $v;
    return $inc38 | 0;
  }
  return 0;
}
function _flat_search($g, $v) {
  $g = $g | 0;
  $v = $v | 0;
  var $rank = 0, $0 = 0, $rank2 = 0, $1 = 0, $flat = 0, $2 = 0, $mark = 0, $onstack = 0, $root = 0, $3 = 0, $n_cluster = 0, $4 = 0, $cmp = 0, $list = 0, $5 = 0, $tobool = 0, $6 = 0, $7 = 0, $tobool1234 = 0, $8 = 0, $nrows = 0, $ncols = 0, $data = 0, $ncols70 = 0, $data85 = 0, $9 = 0, $i_035 = 0, $tail = 0, $10 = 0, $11 = 0, $call = 0, $tobool15 = 0, $head = 0, $12 = 0, $13 = 0, $call17 = 0, $tobool18 = 0, $weight = 0, $14 = 0.0, $cmp21 = 0, $head25 = 0, $15 = 0, $onstack27 = 0, $16 = 0, $cmp29 = 0, $low = 0, $17 = 0, $18 = 0, $cmp34 = 0, $tail36 = 0, $19 = 0, $low38 = 0, $20 = 0, $21 = 0, $cmp39 = 0, $mul = 0, $add = 0, $22 = 0, $arrayidx51 = 0, $dec = 0, $edge_type = 0, $23 = 0, $cmp54 = 0, $tail67 = 0, $24 = 0, $low69 = 0, $25 = 0, $26 = 0, $cmp71 = 0, $mul80 = 0, $add84 = 0, $27 = 0, $arrayidx86 = 0, $28 = 0, $mark89 = 0, $29 = 0, $cmp91 = 0, $i_1 = 0, $inc = 0, $30 = 0, $arrayidx11 = 0, $31 = 0, $tobool12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $rank = $v + 236 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $rank2 = $g + 224 | 0;
    $1 = HEAP32[$rank2 >> 2] | 0;
    $flat = $1 + ($0 * 44 & -1) + 40 | 0;
    $2 = HEAP32[$flat >> 2] | 0;
    $mark = $v + 163 | 0;
    HEAP8[$mark] = 1;
    $onstack = $v + 164 | 0;
    HEAP8[$onstack] = 1;
    $root = $g + 32 | 0;
    $3 = HEAP32[$root >> 2] | 0;
    $n_cluster = $3 + 212 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($4 | 0) > 0;
    $list = $v + 192 | 0;
    $5 = HEAP32[$list >> 2] | 0;
    $tobool = ($5 | 0) == 0;
    if ($tobool) {
      label = 23;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $6 = HEAP32[$list >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $tobool1234 = ($7 | 0) == 0;
    if ($tobool1234) {
      label = 23;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $8 = $g;
    $nrows = $2 | 0;
    $ncols = $2 + 4 | 0;
    $data = $2 + 8 | 0;
    $ncols70 = $2 + 4 | 0;
    $data85 = $2 + 8 | 0;
    $i_035 = 0;
    $9 = $7;
    label = 5;
    break;
   case 5:
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $tail = $9 + 16 | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $11 = $10 | 0;
    $call = _agcontains($8, $11) | 0;
    $tobool15 = ($call | 0) == 0;
    if ($tobool15) {
      $i_1 = $i_035;
      label = 22;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $head = $9 + 12 | 0;
    $12 = HEAP32[$head >> 2] | 0;
    $13 = $12 | 0;
    $call17 = _agcontains($8, $13) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      $i_1 = $i_035;
      label = 22;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $weight = $9 + 172 | 0;
    $14 = +HEAPF32[$weight >> 2];
    $cmp21 = $14 == 0.0;
    if ($cmp21) {
      $i_1 = $i_035;
      label = 22;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $head25 = $9 + 12 | 0;
    $15 = HEAP32[$head25 >> 2] | 0;
    $onstack27 = $15 + 164 | 0;
    $16 = HEAP8[$onstack27] | 0;
    $cmp29 = $16 << 24 >> 24 == 1;
    $low = $15 + 284 | 0;
    $17 = HEAP32[$low >> 2] | 0;
    $18 = HEAP32[$nrows >> 2] | 0;
    $cmp34 = ($17 | 0) < ($18 | 0);
    if ($cmp29) {
      label = 10;
      break;
    } else {
      label = 16;
      break;
    }
   case 10:
    if ($cmp34) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    ___assert_func(119784, 933, 164240, 143792);
   case 12:
    $tail36 = $9 + 16 | 0;
    $19 = HEAP32[$tail36 >> 2] | 0;
    $low38 = $19 + 284 | 0;
    $20 = HEAP32[$low38 >> 2] | 0;
    $21 = HEAP32[$ncols >> 2] | 0;
    $cmp39 = ($20 | 0) < ($21 | 0);
    if ($cmp39) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    ___assert_func(119784, 934, 164240, 142616);
   case 14:
    $mul = Math_imul($21, $17);
    $add = $mul + $20 | 0;
    $22 = HEAP32[$data >> 2] | 0;
    $arrayidx51 = $22 + $add | 0;
    HEAP8[$arrayidx51] = 1;
    _delete_flat_edge($9);
    $dec = $i_035 - 1 | 0;
    $edge_type = $9 + 128 | 0;
    $23 = HEAP8[$edge_type] | 0;
    $cmp54 = $23 << 24 >> 24 == 4;
    if ($cmp54) {
      $i_1 = $dec;
      label = 22;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    _flat_rev($g, $9);
    $i_1 = $dec;
    label = 22;
    break;
   case 16:
    if ($cmp34) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    ___assert_func(119784, 942, 164240, 143792);
   case 18:
    $tail67 = $9 + 16 | 0;
    $24 = HEAP32[$tail67 >> 2] | 0;
    $low69 = $24 + 284 | 0;
    $25 = HEAP32[$low69 >> 2] | 0;
    $26 = HEAP32[$ncols70 >> 2] | 0;
    $cmp71 = ($25 | 0) < ($26 | 0);
    if ($cmp71) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    ___assert_func(119784, 943, 164240, 142616);
   case 20:
    $mul80 = Math_imul($26, $25);
    $add84 = $mul80 + $17 | 0;
    $27 = HEAP32[$data85 >> 2] | 0;
    $arrayidx86 = $27 + $add84 | 0;
    HEAP8[$arrayidx86] = 1;
    $28 = HEAP32[$head25 >> 2] | 0;
    $mark89 = $28 + 163 | 0;
    $29 = HEAP8[$mark89] | 0;
    $cmp91 = $29 << 24 >> 24 == 0;
    if ($cmp91) {
      label = 21;
      break;
    } else {
      $i_1 = $i_035;
      label = 22;
      break;
    }
   case 21:
    _flat_search($g, $28);
    $i_1 = $i_035;
    label = 22;
    break;
   case 22:
    $inc = $i_1 + 1 | 0;
    $30 = HEAP32[$list >> 2] | 0;
    $arrayidx11 = $30 + ($inc << 2) | 0;
    $31 = HEAP32[$arrayidx11 >> 2] | 0;
    $tobool12 = ($31 | 0) == 0;
    if ($tobool12) {
      label = 23;
      break;
    } else {
      $i_035 = $inc;
      $9 = $31;
      label = 5;
      break;
    }
   case 23:
    HEAP8[$onstack] = 0;
    return;
  }
}
function _dot_position($g, $asp) {
  $g = $g | 0;
  $asp = $asp | 0;
  var $nlist = 0, $0 = 0, $cmp = 0, $1 = 0, $2 = 0, $tobool = 0, $call = 0, $tobool3 = 0, $call6 = 0, $call7 = 0, $tobool8 = 0, $call10 = 0, $call11 = 0, $cmp12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $0 = HEAP32[$nlist >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $g;
    _mark_lowclusters($1);
    _set_ycoords($g);
    $2 = HEAP8[167952] | 0;
    $tobool = $2 << 24 >> 24 == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _dot_concentrate($1);
    label = 5;
    break;
   case 5:
    _expand_leaves($g);
    $call = _flat_edges($g) | 0;
    $tobool3 = ($call | 0) == 0;
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _set_ycoords($g);
    label = 7;
    break;
   case 7:
    _create_aux_edges($g);
    $call6 = _nsiter2($g) | 0;
    $call7 = _rank($g, 2, $call6) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _connectGraph($g);
    $call10 = _nsiter2($g) | 0;
    $call11 = _rank($g, 2, $call10) | 0;
    $cmp12 = ($call11 | 0) == 0;
    if ($cmp12) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    ___assert_func(157760, 133, 164352, 159168);
   case 10:
    _set_xcoords($g);
    _set_aspect($g, $asp);
    _remove_aux_edges($g);
    label = 11;
    break;
   case 11:
    return;
  }
}
function _connectGraph($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp51 = 0, $conv = 0, $rank = 0, $r_052 = 0, $2 = 0, $n = 0, $3 = 0, $cmp647 = 0, $v = 0, $4 = 0, $i_048 = 0, $arrayidx = 0, $5 = 0, $list = 0, $6 = 0, $tobool = 0, $7 = 0, $j_0 = 0, $arrayidx14 = 0, $8 = 0, $tobool15 = 0, $head = 0, $9 = 0, $rank18 = 0, $10 = 0, $cmp19 = 0, $tail = 0, $11 = 0, $rank22 = 0, $12 = 0, $cmp23 = 0, $inc = 0, $list31 = 0, $13 = 0, $tobool32 = 0, $14 = 0, $j_1 = 0, $arrayidx38 = 0, $15 = 0, $tobool39 = 0, $tail41 = 0, $16 = 0, $rank43 = 0, $17 = 0, $cmp44 = 0, $head47 = 0, $18 = 0, $rank49 = 0, $19 = 0, $cmp50 = 0, $inc55 = 0, $inc62 = 0, $20 = 0, $cmp6 = 0, $phitmp = 0, $v69 = 0, $21 = 0, $22 = 0, $23 = 0, $conv73 = 0, $cmp74 = 0, $add_ptr_sum38_pn_v = 0, $add_ptr_sum38_pn = 0, $hp_0_in_in = 0, $hp_0_in = 0, $hp_0 = 0, $tobool84 = 0, $call = 0, $node_type = 0, $call86 = 0, $call87 = 0, $rank89 = 0, $24 = 0, $rank91 = 0, $25 = 0, $cmp92 = 0, $_ = 0, $rank102 = 0, $inc104 = 0, $26 = 0, $conv2 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp51 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp51) {
      label = 22;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_052 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rank >> 2] | 0;
    $n = $2 + ($r_052 * 44 & -1) | 0;
    $3 = HEAP32[$n >> 2] | 0;
    $cmp647 = ($3 | 0) > 0;
    if ($cmp647) {
      label = 5;
      break;
    } else {
      label = 21;
      break;
    }
   case 5:
    $v = $2 + ($r_052 * 44 & -1) + 4 | 0;
    $4 = HEAP32[$v >> 2] | 0;
    $i_048 = 0;
    label = 6;
    break;
   case 6:
    $arrayidx = $4 + ($i_048 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $list = $5 + 256 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = HEAP32[$list >> 2] | 0;
    $j_0 = 0;
    label = 8;
    break;
   case 8:
    $arrayidx14 = $7 + ($j_0 << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $tobool15 = ($8 | 0) == 0;
    if ($tobool15) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $head = $8 + 12 | 0;
    $9 = HEAP32[$head >> 2] | 0;
    $rank18 = $9 + 236 | 0;
    $10 = HEAP32[$rank18 >> 2] | 0;
    $cmp19 = ($10 | 0) > ($r_052 | 0);
    if ($cmp19) {
      label = 21;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $tail = $8 + 16 | 0;
    $11 = HEAP32[$tail >> 2] | 0;
    $rank22 = $11 + 236 | 0;
    $12 = HEAP32[$rank22 >> 2] | 0;
    $cmp23 = ($12 | 0) > ($r_052 | 0);
    $inc = $j_0 + 1 | 0;
    if ($cmp23) {
      label = 21;
      break;
    } else {
      $j_0 = $inc;
      label = 8;
      break;
    }
   case 11:
    $list31 = $5 + 248 | 0;
    $13 = HEAP32[$list31 >> 2] | 0;
    $tobool32 = ($13 | 0) == 0;
    if ($tobool32) {
      label = 16;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $14 = HEAP32[$list31 >> 2] | 0;
    $j_1 = 0;
    label = 13;
    break;
   case 13:
    $arrayidx38 = $14 + ($j_1 << 2) | 0;
    $15 = HEAP32[$arrayidx38 >> 2] | 0;
    $tobool39 = ($15 | 0) == 0;
    if ($tobool39) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $tail41 = $15 + 16 | 0;
    $16 = HEAP32[$tail41 >> 2] | 0;
    $rank43 = $16 + 236 | 0;
    $17 = HEAP32[$rank43 >> 2] | 0;
    $cmp44 = ($17 | 0) > ($r_052 | 0);
    if ($cmp44) {
      label = 21;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $head47 = $15 + 12 | 0;
    $18 = HEAP32[$head47 >> 2] | 0;
    $rank49 = $18 + 236 | 0;
    $19 = HEAP32[$rank49 >> 2] | 0;
    $cmp50 = ($19 | 0) > ($r_052 | 0);
    $inc55 = $j_1 + 1 | 0;
    if ($cmp50) {
      label = 21;
      break;
    } else {
      $j_1 = $inc55;
      label = 13;
      break;
    }
   case 16:
    $inc62 = $i_048 + 1 | 0;
    $20 = HEAP32[$n >> 2] | 0;
    $cmp6 = ($inc62 | 0) < ($20 | 0);
    if ($cmp6) {
      $i_048 = $inc62;
      label = 6;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $phitmp = ($5 | 0) == 0;
    if ($phitmp) {
      label = 21;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $v69 = $2 + ($r_052 * 44 & -1) + 4 | 0;
    $21 = HEAP32[$v69 >> 2] | 0;
    $22 = HEAP32[$21 >> 2] | 0;
    $23 = HEAP16[$maxrank >> 1] | 0;
    $conv73 = $23 << 16 >> 16;
    $cmp74 = ($r_052 | 0) < ($conv73 | 0);
    $add_ptr_sum38_pn_v = $cmp74 ? 1 : -1;
    $add_ptr_sum38_pn = $add_ptr_sum38_pn_v + $r_052 | 0;
    $hp_0_in_in = $2 + ($add_ptr_sum38_pn * 44 & -1) + 4 | 0;
    $hp_0_in = HEAP32[$hp_0_in_in >> 2] | 0;
    $hp_0 = HEAP32[$hp_0_in >> 2] | 0;
    $tobool84 = ($hp_0 | 0) == 0;
    if ($tobool84) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    ___assert_func(157760, 110, 164560, 92712);
   case 20:
    $call = _virtual_node($g) | 0;
    $node_type = $call + 162 | 0;
    HEAP8[$node_type] = 2;
    $call86 = _make_aux_edge($call, $22, 0.0, 0) | 0;
    $call87 = _make_aux_edge($call, $hp_0, 0.0, 0) | 0;
    $rank89 = $22 + 236 | 0;
    $24 = HEAP32[$rank89 >> 2] | 0;
    $rank91 = $hp_0 + 236 | 0;
    $25 = HEAP32[$rank91 >> 2] | 0;
    $cmp92 = ($24 | 0) < ($25 | 0);
    $_ = $cmp92 ? $24 : $25;
    $rank102 = $call + 236 | 0;
    HEAP32[$rank102 >> 2] = $_;
    label = 21;
    break;
   case 21:
    $inc104 = $r_052 + 1 | 0;
    $26 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $26 << 16 >> 16;
    $cmp = ($inc104 | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 22;
      break;
    } else {
      $r_052 = $inc104;
      label = 4;
      break;
    }
   case 22:
    return;
  }
}
function _ports_eq($e, $f) {
  $e = $e | 0;
  $f = $f | 0;
  var $defined = 0, $0 = 0, $defined3 = 0, $1 = 0, $cmp = 0, $x = 0, $2 = 0.0, $x11 = 0, $3 = 0.0, $cmp12 = 0, $y = 0, $4 = 0.0, $y21 = 0, $5 = 0.0, $cmp22 = 0, $6 = 0, $cmp28 = 0, $x32 = 0, $7 = 0.0, $x36 = 0, $8 = 0.0, $cmp37 = 0, $y43 = 0, $9 = 0.0, $y47 = 0, $10 = 0.0, $cmp48 = 0, $defined52 = 0, $11 = 0, $cmp54 = 0, $phitmp = 0, $12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $defined = $e + 100 | 0;
    $0 = HEAP8[$defined] | 0;
    $defined3 = $f + 100 | 0;
    $1 = HEAP8[$defined3] | 0;
    $cmp = $0 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $12 = 0;
      label = 9;
      break;
    }
   case 3:
    $x = $e + 72 | 0;
    $2 = +HEAPF64[$x >> 3];
    $x11 = $f + 72 | 0;
    $3 = +HEAPF64[$x11 >> 3];
    $cmp12 = $2 == $3;
    if ($cmp12) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $y = $e + 80 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y21 = $f + 80 | 0;
    $5 = +HEAPF64[$y21 >> 3];
    $cmp22 = $4 == $5;
    if ($cmp22) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $6 = HEAP8[$defined] | 0;
    $cmp28 = $6 << 24 >> 24 == 0;
    if ($cmp28) {
      label = 6;
      break;
    } else {
      $12 = 0;
      label = 9;
      break;
    }
   case 6:
    $x32 = $e + 32 | 0;
    $7 = +HEAPF64[$x32 >> 3];
    $x36 = $f + 32 | 0;
    $8 = +HEAPF64[$x36 >> 3];
    $cmp37 = $7 == $8;
    if ($cmp37) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $y43 = $e + 40 | 0;
    $9 = +HEAPF64[$y43 >> 3];
    $y47 = $f + 40 | 0;
    $10 = +HEAPF64[$y47 >> 3];
    $cmp48 = $9 == $10;
    if ($cmp48) {
      $12 = 1;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $defined52 = $e + 60 | 0;
    $11 = HEAP8[$defined52] | 0;
    $cmp54 = $11 << 24 >> 24 == 0;
    $phitmp = $cmp54 & 1;
    $12 = $phitmp;
    label = 9;
    break;
   case 9:
    return $12 | 0;
  }
  return 0;
}
function _set_aspect($g, $asp) {
  $g = $g | 0;
  $asp = $asp | 0;
  var $maxrank = 0, $0 = 0, $cmp = 0, $drawing = 0, $1 = 0, $ratio_kind = 0, $2 = 0, $tobool = 0, $x = 0, $3 = 0.0, $x6 = 0, $4 = 0.0, $sub = 0.0, $conv7 = 0, $y = 0, $5 = 0.0, $y15 = 0, $6 = 0.0, $sub16 = 0.0, $conv17 = 0, $rankdir = 0, $7 = 0, $and20 = 0, $tobool21 = 0, $conv17_conv7 = 0, $conv7_conv17 = 0, $cmp30 = 0, $call = 0, $cmp36 = 0, $conv38 = 0, $filled_0 = 0, $tobool40 = 0, $8 = 0, $x44 = 0, $9 = 0.0, $cmp45 = 0, $conv54 = 0.0, $div = 0.0, $y58 = 0, $10 = 0.0, $conv60 = 0.0, $div61 = 0.0, $cmp62 = 0, $cmp64 = 0, $or_cond = 0, $cmp67 = 0, $div70 = 0.0, $div72 = 0.0, $ratio_kind79 = 0, $11 = 0, $x86 = 0, $12 = 0.0, $cmp87 = 0, $13 = 0.0, $div99 = 0.0, $y103 = 0, $14 = 0.0, $15 = 0.0, $div108 = 0.0, $cmp109 = 0, $cmp112 = 0, $or_cond61 = 0, $cmp115 = 0, $cond = 0.0, $ratio = 0, $16 = 0.0, $conv130 = 0.0, $conv132 = 0.0, $div133 = 0.0, $cmp134 = 0, $div137 = 0.0, $div139 = 0.0, $yf_0_ph = 0.0, $xf_0_ph = 0.0, $17 = 0, $and150 = 0, $tobool151 = 0, $yf_0_xf_0 = 0.0, $xf_0_yf_0 = 0.0, $nlist = 0, $n_064 = 0, $tobool15665 = 0, $n_066 = 0, $x158 = 0, $18 = 0.0, $mul = 0.0, $cmp159 = 0, $add = 0.0, $sub172 = 0.0, $add_sink = 0.0, $conv166 = 0, $conv176 = 0.0, $y182 = 0, $19 = 0.0, $mul183 = 0.0, $cmp184 = 0, $add191 = 0.0, $sub198 = 0.0, $add191_sink = 0.0, $conv192 = 0, $conv202 = 0.0, $next = 0, $n_0 = 0, $tobool156 = 0, $tobool209 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _rec_bb($g, $g);
    $maxrank = $g + 250 | 0;
    $0 = HEAP16[$maxrank >> 1] | 0;
    $cmp = $0 << 16 >> 16 > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 29;
      break;
    }
   case 3:
    $drawing = $g + 48 | 0;
    $1 = HEAP32[$drawing >> 2] | 0;
    $ratio_kind = $1 + 84 | 0;
    $2 = HEAP32[$ratio_kind >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 29;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $x = $g + 72 | 0;
    $3 = +HEAPF64[$x >> 3];
    $x6 = $g + 56 | 0;
    $4 = +HEAPF64[$x6 >> 3];
    $sub = $3 - $4;
    $conv7 = ~~$sub;
    $y = $g + 80 | 0;
    $5 = +HEAPF64[$y >> 3];
    $y15 = $g + 64 | 0;
    $6 = +HEAPF64[$y15 >> 3];
    $sub16 = $5 - $6;
    $conv17 = ~~$sub16;
    $rankdir = $g + 156 | 0;
    $7 = HEAP32[$rankdir >> 2] | 0;
    $and20 = $7 & 1;
    $tobool21 = ($and20 | 0) == 0;
    $conv17_conv7 = $tobool21 ? $conv17 : $conv7;
    $conv7_conv17 = $tobool21 ? $conv7 : $conv17;
    $cmp30 = ($2 | 0) == 4;
    if ($cmp30) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call = _idealsize($g) | 0;
    $filled_0 = $call;
    label = 7;
    break;
   case 6:
    $cmp36 = ($2 | 0) == 2;
    $conv38 = $cmp36 & 1;
    $filled_0 = $conv38;
    label = 7;
    break;
   case 7:
    $tobool40 = $filled_0 << 24 >> 24 == 0;
    $8 = HEAP32[$drawing >> 2] | 0;
    if ($tobool40) {
      label = 13;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $x44 = $8 + 64 | 0;
    $9 = +HEAPF64[$x44 >> 3];
    $cmp45 = $9 > 0.0;
    if ($cmp45) {
      label = 9;
      break;
    } else {
      label = 29;
      break;
    }
   case 9:
    $conv54 = +($conv7_conv17 | 0);
    $div = $9 / $conv54;
    $y58 = $8 + 72 | 0;
    $10 = +HEAPF64[$y58 >> 3];
    $conv60 = +($conv17_conv7 | 0);
    $div61 = $10 / $conv60;
    $cmp62 = $div < 1.0;
    $cmp64 = $div61 < 1.0;
    $or_cond = $cmp62 | $cmp64;
    if ($or_cond) {
      label = 10;
      break;
    } else {
      $xf_0_ph = $div;
      $yf_0_ph = $div61;
      label = 20;
      break;
    }
   case 10:
    $cmp67 = $div < $div61;
    if ($cmp67) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $div70 = $div61 / $div;
    $xf_0_ph = 1.0;
    $yf_0_ph = $div70;
    label = 20;
    break;
   case 12:
    $div72 = $div / $div61;
    $xf_0_ph = $div72;
    $yf_0_ph = 1.0;
    label = 20;
    break;
   case 13:
    $ratio_kind79 = $8 + 84 | 0;
    $11 = HEAP32[$ratio_kind79 >> 2] | 0;
    if (($11 | 0) == 5) {
      label = 14;
      break;
    } else if (($11 | 0) == 1) {
      label = 17;
      break;
    } else {
      label = 29;
      break;
    }
   case 14:
    $x86 = $8 + 64 | 0;
    $12 = +HEAPF64[$x86 >> 3];
    $cmp87 = $12 > 0.0;
    if ($cmp87) {
      label = 15;
      break;
    } else {
      label = 29;
      break;
    }
   case 15:
    $13 = +HEAPF64[$x >> 3];
    $div99 = $12 / $13;
    $y103 = $8 + 72 | 0;
    $14 = +HEAPF64[$y103 >> 3];
    $15 = +HEAPF64[$y >> 3];
    $div108 = $14 / $15;
    $cmp109 = $div99 > 1.0;
    $cmp112 = $div108 > 1.0;
    $or_cond61 = $cmp109 & $cmp112;
    if ($or_cond61) {
      label = 16;
      break;
    } else {
      label = 29;
      break;
    }
   case 16:
    $cmp115 = $div99 < $div108;
    $cond = $cmp115 ? $div99 : $div108;
    $xf_0_ph = $cond;
    $yf_0_ph = $cond;
    label = 20;
    break;
   case 17:
    $ratio = $8 + 16 | 0;
    $16 = +HEAPF64[$ratio >> 3];
    $conv130 = +($conv17_conv7 | 0);
    $conv132 = +($conv7_conv17 | 0);
    $div133 = $conv130 / $conv132;
    $cmp134 = $div133 < $16;
    if ($cmp134) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $div137 = $16 / $div133;
    $xf_0_ph = 1.0;
    $yf_0_ph = $div137;
    label = 20;
    break;
   case 19:
    $div139 = $div133 / $16;
    $xf_0_ph = $div139;
    $yf_0_ph = 1.0;
    label = 20;
    break;
   case 20:
    $17 = HEAP32[$rankdir >> 2] | 0;
    $and150 = $17 & 1;
    $tobool151 = ($and150 | 0) == 0;
    $yf_0_xf_0 = $tobool151 ? $yf_0_ph : $xf_0_ph;
    $xf_0_yf_0 = $tobool151 ? $xf_0_ph : $yf_0_ph;
    $nlist = $g + 220 | 0;
    $n_064 = HEAP32[$nlist >> 2] | 0;
    $tobool15665 = ($n_064 | 0) == 0;
    if ($tobool15665) {
      label = 28;
      break;
    } else {
      $n_066 = $n_064;
      label = 21;
      break;
    }
   case 21:
    $x158 = $n_066 + 32 | 0;
    $18 = +HEAPF64[$x158 >> 3];
    $mul = $xf_0_yf_0 * $18;
    $cmp159 = $mul < 0.0;
    if ($cmp159) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $add = $mul + .5;
    $add_sink = $add;
    label = 24;
    break;
   case 23:
    $sub172 = $mul + -.5;
    $add_sink = $sub172;
    label = 24;
    break;
   case 24:
    $conv166 = ~~$add_sink;
    $conv176 = +($conv166 | 0);
    HEAPF64[$x158 >> 3] = $conv176;
    $y182 = $n_066 + 40 | 0;
    $19 = +HEAPF64[$y182 >> 3];
    $mul183 = $yf_0_xf_0 * $19;
    $cmp184 = $mul183 < 0.0;
    if ($cmp184) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $add191 = $mul183 + .5;
    $add191_sink = $add191;
    label = 27;
    break;
   case 26:
    $sub198 = $mul183 + -.5;
    $add191_sink = $sub198;
    label = 27;
    break;
   case 27:
    $conv192 = ~~$add191_sink;
    $conv202 = +($conv192 | 0);
    HEAPF64[$y182 >> 3] = $conv202;
    $next = $n_066 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool156 = ($n_0 | 0) == 0;
    if ($tobool156) {
      label = 28;
      break;
    } else {
      $n_066 = $n_0;
      label = 21;
      break;
    }
   case 28:
    _scale_bb($g, $xf_0_yf_0, $yf_0_xf_0);
    label = 29;
    break;
   case 29:
    $tobool209 = ($asp | 0) == 0;
    if ($tobool209) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    _adjustAspectRatio($g, $asp);
    label = 31;
    break;
   case 31:
    return;
  }
}
function _remove_aux_edges($g) {
  $g = $g | 0;
  var $nlist = 0, $n_030 = 0, $tobool31 = 0, $n_032 = 0, $out = 0, $list = 0, $0 = 0, $1 = 0, $tobool327 = 0, $2 = 0, $i_028 = 0, $3 = 0, $inc = 0, $4 = 0, $arrayidx = 0, $5 = 0, $tobool3 = 0, $_lcssa25 = 0, $tobool8 = 0, $6 = 0, $in = 0, $list14 = 0, $7 = 0, $tobool15 = 0, $8 = 0, $save_out = 0, $9 = 0, $10 = 0, $ld$0$0 = 0, $11$0 = 0, $ld$1$1 = 0, $11$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $save_in = 0, $12 = 0, $13 = 0, $ld$4$0 = 0, $14$0 = 0, $ld$5$1 = 0, $14$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $next = 0, $n_0 = 0, $tobool = 0, $_pr = 0, $tobool342333 = 0, $tobool3423 = 0, $nprev_0_ph35 = 0, $n_1_ph34 = 0, $tobool41 = 0, $next44 = 0, $n_124 = 0, $next37 = 0, $15 = 0, $node_type = 0, $16 = 0, $cmp = 0, $17 = 0, $tobool34 = 0, $18 = 0, $prev = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_030 = HEAP32[$nlist >> 2] | 0;
    $tobool31 = ($n_030 | 0) == 0;
    if ($tobool31) {
      label = 18;
      break;
    } else {
      $n_032 = $n_030;
      label = 3;
      break;
    }
   case 3:
    $out = $n_032 + 184 | 0;
    $list = $out | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $1 = HEAP32[$0 >> 2] | 0;
    $tobool327 = ($1 | 0) == 0;
    if ($tobool327) {
      $_lcssa25 = $0;
      label = 5;
      break;
    } else {
      $i_028 = 0;
      $2 = $1;
      label = 4;
      break;
    }
   case 4:
    $3 = $2 | 0;
    _free($3);
    $inc = $i_028 + 1 | 0;
    $4 = HEAP32[$list >> 2] | 0;
    $arrayidx = $4 + ($inc << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $tobool3 = ($5 | 0) == 0;
    if ($tobool3) {
      $_lcssa25 = $4;
      label = 5;
      break;
    } else {
      $i_028 = $inc;
      $2 = $5;
      label = 4;
      break;
    }
   case 5:
    $tobool8 = ($_lcssa25 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $6 = $_lcssa25;
    _free($6);
    label = 7;
    break;
   case 7:
    $in = $n_032 + 176 | 0;
    $list14 = $in | 0;
    $7 = HEAP32[$list14 >> 2] | 0;
    $tobool15 = ($7 | 0) == 0;
    if ($tobool15) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $8 = $7;
    _free($8);
    label = 9;
    break;
   case 9:
    $save_out = $n_032 + 256 | 0;
    $9 = $save_out;
    $10 = $out;
    $ld$0$0 = $9 | 0;
    $11$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $9 + 4 | 0;
    $11$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $10 | 0;
    HEAP32[$st$2$0 >> 2] = $11$0;
    $st$3$1 = $10 + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $11$1;
    $save_in = $n_032 + 248 | 0;
    $12 = $save_in;
    $13 = $in;
    $ld$4$0 = $12 | 0;
    $14$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $12 + 4 | 0;
    $14$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $13 | 0;
    HEAP32[$st$6$0 >> 2] = $14$0;
    $st$7$1 = $13 + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $14$1;
    $next = $n_032 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      $n_032 = $n_0;
      label = 3;
      break;
    }
   case 10:
    $_pr = HEAP32[$nlist >> 2] | 0;
    $tobool342333 = ($_pr | 0) == 0;
    if ($tobool342333) {
      label = 18;
      break;
    } else {
      $n_1_ph34 = $_pr;
      $nprev_0_ph35 = 0;
      label = 12;
      break;
    }
   case 11:
    $tobool3423 = ($15 | 0) == 0;
    if ($tobool3423) {
      label = 18;
      break;
    } else {
      $n_1_ph34 = $15;
      $nprev_0_ph35 = $n_124;
      label = 12;
      break;
    }
   case 12:
    $tobool41 = ($nprev_0_ph35 | 0) == 0;
    $next44 = $nprev_0_ph35 + 168 | 0;
    $n_124 = $n_1_ph34;
    label = 13;
    break;
   case 13:
    $next37 = $n_124 + 168 | 0;
    $15 = HEAP32[$next37 >> 2] | 0;
    $node_type = $n_124 + 162 | 0;
    $16 = HEAP8[$node_type] | 0;
    $cmp = $16 << 24 >> 24 == 2;
    if ($cmp) {
      label = 14;
      break;
    } else {
      label = 11;
      break;
    }
   case 14:
    if ($tobool41) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    HEAP32[$next44 >> 2] = $15;
    label = 17;
    break;
   case 16:
    HEAP32[$nlist >> 2] = $15;
    label = 17;
    break;
   case 17:
    $17 = $n_124 | 0;
    _free($17);
    $tobool34 = ($15 | 0) == 0;
    if ($tobool34) {
      label = 18;
      break;
    } else {
      $n_124 = $15;
      label = 13;
      break;
    }
   case 18:
    $18 = HEAP32[$nlist >> 2] | 0;
    $prev = $18 + 172 | 0;
    HEAP32[$prev >> 2] = 0;
    return;
  }
}
function _make_leafslots($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp54 = 0, $conv = 0, $rank = 0, $r_055 = 0, $2 = 0, $n41 = 0, $3 = 0, $cmp642 = 0, $4 = 0, $j_044 = 0, $i_043 = 0, $v12 = 0, $5 = 0, $arrayidx13 = 0, $6 = 0, $order = 0, $ranktype = 0, $7 = 0, $cmp17 = 0, $UF_size = 0, $8 = 0, $_pn = 0, $j_1 = 0, $inc20 = 0, $9 = 0, $n = 0, $10 = 0, $cmp6 = 0, $_lcssa40 = 0, $_lcssa = 0, $j_0_lcssa = 0, $cmp25 = 0, $v32 = 0, $11 = 0, $tobool = 0, $12 = 0, $add37 = 0, $mul = 0, $call = 0, $add38 = 0, $mul39 = 0, $call40 = 0, $call_sink = 0, $13 = 0, $14 = 0, $v44 = 0, $15 = 0, $n48 = 0, $16 = 0, $cmp5050 = 0, $17 = 0, $i_151_in = 0, $i_151 = 0, $v56 = 0, $18 = 0, $arrayidx57 = 0, $19 = 0, $order59 = 0, $20 = 0, $arrayidx64 = 0, $cmp50 = 0, $21 = 0, $_lcssa48 = 0, $n70 = 0, $22 = 0, $v74 = 0, $23 = 0, $arrayidx75 = 0, $inc77 = 0, $24 = 0, $conv2 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp54 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp54) {
      label = 16;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $r_055 = $conv;
    label = 4;
    break;
   case 4:
    $2 = HEAP32[$rank >> 2] | 0;
    $n41 = $2 + ($r_055 * 44 & -1) | 0;
    $3 = HEAP32[$n41 >> 2] | 0;
    $cmp642 = ($3 | 0) > 0;
    if ($cmp642) {
      $i_043 = 0;
      $j_044 = 0;
      $4 = $2;
      label = 5;
      break;
    } else {
      $j_0_lcssa = 0;
      $_lcssa = $2;
      $_lcssa40 = $3;
      label = 8;
      break;
    }
   case 5:
    $v12 = $4 + ($r_055 * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v12 >> 2] | 0;
    $arrayidx13 = $5 + ($i_043 << 2) | 0;
    $6 = HEAP32[$arrayidx13 >> 2] | 0;
    $order = $6 + 240 | 0;
    HEAP32[$order >> 2] = $j_044;
    $ranktype = $6 + 165 | 0;
    $7 = HEAP8[$ranktype] | 0;
    $cmp17 = $7 << 24 >> 24 == 6;
    if ($cmp17) {
      label = 6;
      break;
    } else {
      $_pn = 1;
      label = 7;
      break;
    }
   case 6:
    $UF_size = $6 + 220 | 0;
    $8 = HEAP32[$UF_size >> 2] | 0;
    $_pn = $8;
    label = 7;
    break;
   case 7:
    $j_1 = $_pn + $j_044 | 0;
    $inc20 = $i_043 + 1 | 0;
    $9 = HEAP32[$rank >> 2] | 0;
    $n = $9 + ($r_055 * 44 & -1) | 0;
    $10 = HEAP32[$n >> 2] | 0;
    $cmp6 = ($inc20 | 0) < ($10 | 0);
    if ($cmp6) {
      $i_043 = $inc20;
      $j_044 = $j_1;
      $4 = $9;
      label = 5;
      break;
    } else {
      $j_0_lcssa = $j_1;
      $_lcssa = $9;
      $_lcssa40 = $10;
      label = 8;
      break;
    }
   case 8:
    $cmp25 = ($j_0_lcssa | 0) > ($_lcssa40 | 0);
    if ($cmp25) {
      label = 9;
      break;
    } else {
      label = 15;
      break;
    }
   case 9:
    $v32 = $_lcssa + ($r_055 * 44 & -1) + 4 | 0;
    $11 = HEAP32[$v32 >> 2] | 0;
    $tobool = ($11 | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $12 = $11;
    $add37 = $j_0_lcssa << 2;
    $mul = $add37 + 4 | 0;
    $call = _grealloc($12, $mul) | 0;
    $call_sink = $call;
    label = 12;
    break;
   case 11:
    $add38 = $j_0_lcssa << 2;
    $mul39 = $add38 + 4 | 0;
    $call40 = _gmalloc($mul39) | 0;
    $call_sink = $call40;
    label = 12;
    break;
   case 12:
    $13 = $call_sink;
    $14 = HEAP32[$rank >> 2] | 0;
    $v44 = $14 + ($r_055 * 44 & -1) + 4 | 0;
    HEAP32[$v44 >> 2] = $13;
    $15 = HEAP32[$rank >> 2] | 0;
    $n48 = $15 + ($r_055 * 44 & -1) | 0;
    $16 = HEAP32[$n48 >> 2] | 0;
    $cmp5050 = ($16 | 0) > 0;
    if ($cmp5050) {
      $i_151_in = $16;
      $17 = $15;
      label = 13;
      break;
    } else {
      $_lcssa48 = $15;
      label = 14;
      break;
    }
   case 13:
    $i_151 = $i_151_in - 1 | 0;
    $v56 = $17 + ($r_055 * 44 & -1) + 4 | 0;
    $18 = HEAP32[$v56 >> 2] | 0;
    $arrayidx57 = $18 + ($i_151 << 2) | 0;
    $19 = HEAP32[$arrayidx57 >> 2] | 0;
    $order59 = $19 + 240 | 0;
    $20 = HEAP32[$order59 >> 2] | 0;
    $arrayidx64 = $18 + ($20 << 2) | 0;
    HEAP32[$arrayidx64 >> 2] = $19;
    $cmp50 = ($i_151 | 0) > 0;
    $21 = HEAP32[$rank >> 2] | 0;
    if ($cmp50) {
      $i_151_in = $i_151;
      $17 = $21;
      label = 13;
      break;
    } else {
      $_lcssa48 = $21;
      label = 14;
      break;
    }
   case 14:
    $n70 = $_lcssa48 + ($r_055 * 44 & -1) | 0;
    HEAP32[$n70 >> 2] = $j_0_lcssa;
    $22 = HEAP32[$rank >> 2] | 0;
    $v74 = $22 + ($r_055 * 44 & -1) + 4 | 0;
    $23 = HEAP32[$v74 >> 2] | 0;
    $arrayidx75 = $23 + ($j_0_lcssa << 2) | 0;
    HEAP32[$arrayidx75 >> 2] = 0;
    label = 15;
    break;
   case 15:
    $inc77 = $r_055 + 1 | 0;
    $24 = HEAP16[$maxrank >> 1] | 0;
    $conv2 = $24 << 16 >> 16;
    $cmp = ($inc77 | 0) > ($conv2 | 0);
    if ($cmp) {
      label = 16;
      break;
    } else {
      $r_055 = $inc77;
      label = 4;
      break;
    }
   case 16:
    return;
  }
}
function _do_leaves($g, $leader) {
  $g = $g | 0;
  $leader = $leader | 0;
  var $lbound = 0, $tmpcast = 0, $tmp = 0, $tmp23 = 0, $tmpcast49 = 0, $tmp93 = 0, $tmpcast48 = 0, $UF_size = 0, $0 = 0, $cmp = 0, $tmpcast47 = 0, $x = 0, $1 = 0.0, $lw = 0, $2 = 0.0, $sub = 0.0, $conv = 0, $x3 = 0, $y = 0, $3 = 0.0, $conv6 = 0, $y7 = 0, $ld$0$0 = 0, $4$0 = 0, $ld$1$1 = 0, $4$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $size = 0, $5 = 0, $cmp9 = 0, $list = 0, $6 = 0, $7 = 0, $head = 0, $8 = 0, $order = 0, $9 = 0, $10 = 0, $11 = 0, $call = 0, $tobool51 = 0, $add = 0, $e_054_in = 0, $j_052 = 0, $e_054 = 0, $tail = 0, $12 = 0, $13 = 0, $cmp15 = 0, $call18 = 0, $cmp19 = 0, $14 = 0, $15 = 0, $inc = 0, $ld$4$0 = 0, $16$0 = 0, $ld$5$1 = 0, $16$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $head24 = 0, $17 = 0, $u25 = 0, $in = 0, $list26 = 0, $18 = 0, $tobool27 = 0, $19 = 0, $size35 = 0, $20 = 0, $21 = 0, $add36 = 0, $mul = 0, $call37 = 0, $size41 = 0, $22 = 0, $23 = 0, $add42 = 0, $mul43 = 0, $call44 = 0, $call37_sink = 0, $24 = 0, $25 = 0, $u46 = 0, $in47 = 0, $list48 = 0, $26 = 0, $u50 = 0, $size52 = 0, $27 = 0, $28 = 0, $inc53 = 0, $29 = 0, $u55 = 0, $in56 = 0, $list57 = 0, $30 = 0, $arrayidx58 = 0, $31 = 0, $u60 = 0, $in61 = 0, $size62 = 0, $32 = 0, $33 = 0, $list66 = 0, $34 = 0, $arrayidx67 = 0, $j_1 = 0, $call69 = 0, $tobool = 0, $list72 = 0, $35 = 0, $36 = 0, $tail74 = 0, $37 = 0, $order76 = 0, $38 = 0, $39 = 0, $40 = 0, $call78 = 0, $tobool8057 = 0, $add77 = 0, $e_160_in = 0, $j_258 = 0, $e_160 = 0, $head82 = 0, $41 = 0, $42 = 0, $cmp83 = 0, $call87 = 0, $cmp88 = 0, $43 = 0, $44 = 0, $inc92 = 0, $ld$8$0 = 0, $45$0 = 0, $ld$9$1 = 0, $45$1 = 0, $st$10$0 = 0, $st$11$1 = 0, $tail95 = 0, $46 = 0, $u96 = 0, $out97 = 0, $list98 = 0, $47 = 0, $tobool99 = 0, $48 = 0, $size108 = 0, $49 = 0, $50 = 0, $add109 = 0, $mul110 = 0, $call111 = 0, $size116 = 0, $51 = 0, $52 = 0, $add117 = 0, $mul118 = 0, $call119 = 0, $call111_sink = 0, $53 = 0, $54 = 0, $u123 = 0, $out124 = 0, $list125 = 0, $55 = 0, $u127 = 0, $size129 = 0, $56 = 0, $57 = 0, $inc130 = 0, $58 = 0, $u132 = 0, $out133 = 0, $list134 = 0, $59 = 0, $arrayidx135 = 0, $60 = 0, $u137 = 0, $out138 = 0, $size139 = 0, $61 = 0, $62 = 0, $list143 = 0, $63 = 0, $arrayidx144 = 0, $j_3 = 0, $call148 = 0, $tobool80 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $lbound = __stackBase__ | 0;
    $tmpcast = $lbound;
    $tmp = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmp23 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast49 = $tmp23;
    $tmp93 = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast48 = $tmp93;
    $UF_size = $leader + 220 | 0;
    $0 = HEAP32[$UF_size >> 2] | 0;
    $cmp = ($0 | 0) < 2;
    if ($cmp) {
      label = 22;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tmpcast47 = $tmp;
    $x = $leader + 32 | 0;
    $1 = +HEAPF64[$x >> 3];
    $lw = $leader + 104 | 0;
    $2 = +HEAPF64[$lw >> 3];
    $sub = $1 - $2;
    $conv = ~~$sub;
    $x3 = $lbound;
    HEAP32[$x3 >> 2] = $conv;
    $y = $leader + 40 | 0;
    $3 = +HEAPF64[$y >> 3];
    $conv6 = ~~$3;
    $y7 = $tmpcast + 4 | 0;
    HEAP32[$y7 >> 2] = $conv6;
    _resize_leaf($tmpcast47, $leader, $tmpcast);
    $ld$0$0 = $tmp | 0;
    $4$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $tmp + 4 | 0;
    $4$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $lbound | 0;
    HEAP32[$st$2$0 >> 2] = $4$0;
    $st$3$1 = $lbound + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $4$1;
    $size = $leader + 188 | 0;
    $5 = HEAP32[$size >> 2] | 0;
    $cmp9 = ($5 | 0) > 0;
    if ($cmp9) {
      label = 4;
      break;
    } else {
      label = 13;
      break;
    }
   case 4:
    $list = $leader + 184 | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $head = $7 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $order = $leader + 240 | 0;
    $9 = HEAP32[$order >> 2] | 0;
    $10 = $g;
    $11 = $8;
    $call = _agfstin($10, $11) | 0;
    $tobool51 = ($call | 0) == 0;
    if ($tobool51) {
      label = 22;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add = $9 + 1 | 0;
    $j_052 = $add;
    $e_054_in = $call;
    label = 6;
    break;
   case 6:
    $e_054 = $e_054_in;
    $tail = $e_054_in + 16 | 0;
    $12 = HEAP32[$tail >> 2] | 0;
    $13 = $12;
    $cmp15 = ($13 | 0) == ($leader | 0);
    if ($cmp15) {
      $j_1 = $j_052;
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call18 = _UF_find($13) | 0;
    $cmp19 = ($call18 | 0) == ($leader | 0);
    if ($cmp19) {
      label = 8;
      break;
    } else {
      $j_1 = $j_052;
      label = 12;
      break;
    }
   case 8:
    $14 = HEAP32[$tail >> 2] | 0;
    $15 = $14;
    $inc = $j_052 + 1 | 0;
    _place_leaf($tmpcast49, $15, $tmpcast, $j_052);
    $ld$4$0 = $tmp23 | 0;
    $16$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $tmp23 + 4 | 0;
    $16$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $lbound | 0;
    HEAP32[$st$6$0 >> 2] = $16$0;
    $st$7$1 = $lbound + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $16$1;
    _unmerge_oneway($e_054);
    $head24 = $e_054_in + 12 | 0;
    $17 = HEAP32[$head24 >> 2] | 0;
    $u25 = $17 + 24 | 0;
    $in = $u25 + 152 | 0;
    $list26 = $in;
    $18 = HEAP32[$list26 >> 2] | 0;
    $tobool27 = ($18 | 0) == 0;
    if ($tobool27) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $19 = $18;
    $size35 = $u25 + 156 | 0;
    $20 = $size35;
    $21 = HEAP32[$20 >> 2] | 0;
    $add36 = $21 << 2;
    $mul = $add36 + 8 | 0;
    $call37 = _grealloc($19, $mul) | 0;
    $call37_sink = $call37;
    label = 11;
    break;
   case 10:
    $size41 = $u25 + 156 | 0;
    $22 = $size41;
    $23 = HEAP32[$22 >> 2] | 0;
    $add42 = $23 << 2;
    $mul43 = $add42 + 8 | 0;
    $call44 = _gmalloc($mul43) | 0;
    $call37_sink = $call44;
    label = 11;
    break;
   case 11:
    $24 = $call37_sink;
    $25 = HEAP32[$head24 >> 2] | 0;
    $u46 = $25 + 24 | 0;
    $in47 = $u46 + 152 | 0;
    $list48 = $in47;
    HEAP32[$list48 >> 2] = $24;
    $26 = HEAP32[$head24 >> 2] | 0;
    $u50 = $26 + 24 | 0;
    $size52 = $u50 + 156 | 0;
    $27 = $size52;
    $28 = HEAP32[$27 >> 2] | 0;
    $inc53 = $28 + 1 | 0;
    HEAP32[$27 >> 2] = $inc53;
    $29 = HEAP32[$head24 >> 2] | 0;
    $u55 = $29 + 24 | 0;
    $in56 = $u55 + 152 | 0;
    $list57 = $in56;
    $30 = HEAP32[$list57 >> 2] | 0;
    $arrayidx58 = $30 + ($28 << 2) | 0;
    HEAP32[$arrayidx58 >> 2] = $e_054;
    $31 = HEAP32[$head24 >> 2] | 0;
    $u60 = $31 + 24 | 0;
    $in61 = $u60 + 152 | 0;
    $size62 = $u60 + 156 | 0;
    $32 = $size62;
    $33 = HEAP32[$32 >> 2] | 0;
    $list66 = $in61;
    $34 = HEAP32[$list66 >> 2] | 0;
    $arrayidx67 = $34 + ($33 << 2) | 0;
    HEAP32[$arrayidx67 >> 2] = 0;
    $j_1 = $inc;
    label = 12;
    break;
   case 12:
    $call69 = _agnxtin($10, $e_054_in) | 0;
    $tobool = ($call69 | 0) == 0;
    if ($tobool) {
      label = 22;
      break;
    } else {
      $j_052 = $j_1;
      $e_054_in = $call69;
      label = 6;
      break;
    }
   case 13:
    $list72 = $leader + 176 | 0;
    $35 = HEAP32[$list72 >> 2] | 0;
    $36 = HEAP32[$35 >> 2] | 0;
    $tail74 = $36 + 16 | 0;
    $37 = HEAP32[$tail74 >> 2] | 0;
    $order76 = $leader + 240 | 0;
    $38 = HEAP32[$order76 >> 2] | 0;
    $39 = $g;
    $40 = $37;
    $call78 = _agfstout($39, $40) | 0;
    $tobool8057 = ($call78 | 0) == 0;
    if ($tobool8057) {
      label = 22;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $add77 = $38 + 1 | 0;
    $j_258 = $add77;
    $e_160_in = $call78;
    label = 15;
    break;
   case 15:
    $e_160 = $e_160_in;
    $head82 = $e_160_in + 12 | 0;
    $41 = HEAP32[$head82 >> 2] | 0;
    $42 = $41;
    $cmp83 = ($42 | 0) == ($leader | 0);
    if ($cmp83) {
      $j_3 = $j_258;
      label = 21;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call87 = _UF_find($42) | 0;
    $cmp88 = ($call87 | 0) == ($leader | 0);
    if ($cmp88) {
      label = 17;
      break;
    } else {
      $j_3 = $j_258;
      label = 21;
      break;
    }
   case 17:
    $43 = HEAP32[$head82 >> 2] | 0;
    $44 = $43;
    $inc92 = $j_258 + 1 | 0;
    _place_leaf($tmpcast48, $44, $tmpcast, $j_258);
    $ld$8$0 = $tmp93 | 0;
    $45$0 = HEAP32[$ld$8$0 >> 2] | 0;
    $ld$9$1 = $tmp93 + 4 | 0;
    $45$1 = HEAP32[$ld$9$1 >> 2] | 0;
    $st$10$0 = $lbound | 0;
    HEAP32[$st$10$0 >> 2] = $45$0;
    $st$11$1 = $lbound + 4 | 0;
    HEAP32[$st$11$1 >> 2] = $45$1;
    _unmerge_oneway($e_160);
    $tail95 = $e_160_in + 16 | 0;
    $46 = HEAP32[$tail95 >> 2] | 0;
    $u96 = $46 + 24 | 0;
    $out97 = $u96 + 160 | 0;
    $list98 = $out97;
    $47 = HEAP32[$list98 >> 2] | 0;
    $tobool99 = ($47 | 0) == 0;
    if ($tobool99) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $48 = $47;
    $size108 = $u96 + 164 | 0;
    $49 = $size108;
    $50 = HEAP32[$49 >> 2] | 0;
    $add109 = $50 << 2;
    $mul110 = $add109 + 8 | 0;
    $call111 = _grealloc($48, $mul110) | 0;
    $call111_sink = $call111;
    label = 20;
    break;
   case 19:
    $size116 = $u96 + 164 | 0;
    $51 = $size116;
    $52 = HEAP32[$51 >> 2] | 0;
    $add117 = $52 << 2;
    $mul118 = $add117 + 8 | 0;
    $call119 = _gmalloc($mul118) | 0;
    $call111_sink = $call119;
    label = 20;
    break;
   case 20:
    $53 = $call111_sink;
    $54 = HEAP32[$tail95 >> 2] | 0;
    $u123 = $54 + 24 | 0;
    $out124 = $u123 + 160 | 0;
    $list125 = $out124;
    HEAP32[$list125 >> 2] = $53;
    $55 = HEAP32[$tail95 >> 2] | 0;
    $u127 = $55 + 24 | 0;
    $size129 = $u127 + 164 | 0;
    $56 = $size129;
    $57 = HEAP32[$56 >> 2] | 0;
    $inc130 = $57 + 1 | 0;
    HEAP32[$56 >> 2] = $inc130;
    $58 = HEAP32[$tail95 >> 2] | 0;
    $u132 = $58 + 24 | 0;
    $out133 = $u132 + 160 | 0;
    $list134 = $out133;
    $59 = HEAP32[$list134 >> 2] | 0;
    $arrayidx135 = $59 + ($57 << 2) | 0;
    HEAP32[$arrayidx135 >> 2] = $e_160;
    $60 = HEAP32[$tail95 >> 2] | 0;
    $u137 = $60 + 24 | 0;
    $out138 = $u137 + 160 | 0;
    $size139 = $u137 + 164 | 0;
    $61 = $size139;
    $62 = HEAP32[$61 >> 2] | 0;
    $list143 = $out138;
    $63 = HEAP32[$list143 >> 2] | 0;
    $arrayidx144 = $63 + ($62 << 2) | 0;
    HEAP32[$arrayidx144 >> 2] = 0;
    $j_3 = $inc92;
    label = 21;
    break;
   case 21:
    $call148 = _agnxtout($39, $e_160_in) | 0;
    $tobool80 = ($call148 | 0) == 0;
    if ($tobool80) {
      label = 22;
      break;
    } else {
      $j_258 = $j_3;
      $e_160_in = $call148;
      label = 15;
      break;
    }
   case 22:
    STACKTOP = __stackBase__;
    return;
  }
}
function _resize_leaf($agg_result, $leaf, $lbound) {
  $agg_result = $agg_result | 0;
  $leaf = $leaf | 0;
  $lbound = $lbound | 0;
  var $graph = 0, $x = 0, $lw = 0, $10 = 0, $11 = 0, $12$1 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $lbound;
  $lbound = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$lbound >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$lbound + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  $graph = $leaf + 20 | 0;
  _gv_nodesize($leaf, HEAP32[(HEAP32[$graph >> 2] | 0) + 156 >> 2] & 1);
  HEAPF64[$leaf + 40 >> 3] = +(HEAP32[$lbound + 4 >> 2] | 0);
  $x = $lbound | 0;
  $lw = $leaf + 104 | 0;
  HEAPF64[$leaf + 32 >> 3] = +(HEAP32[$x >> 2] | 0) + +HEAPF64[$lw >> 3];
  HEAP32[$x >> 2] = ~~(+(HEAP32[$x >> 2] | 0) + +HEAPF64[$lw >> 3] + +HEAPF64[$leaf + 112 >> 3] + +(HEAP32[(HEAP32[$graph >> 2] | 0) + 260 >> 2] | 0));
  $10 = $lbound;
  $11 = $agg_result;
  $12$1 = HEAP32[$10 + 4 >> 2] | 0;
  HEAP32[$11 >> 2] = HEAP32[$10 >> 2] | 0;
  HEAP32[$11 + 4 >> 2] = $12$1;
  STACKTOP = __stackBase__;
  return;
}
function _place_leaf($agg_result, $leaf, $lbound, $order) {
  $agg_result = $agg_result | 0;
  $leaf = $leaf | 0;
  $lbound = $lbound | 0;
  $order = $order | 0;
  var $graph = 0, $0 = 0, $call = 0, $cmp = 0, $order1 = 0, $rank = 0, $1 = 0, $rank4 = 0, $2 = 0, $rank10 = 0, $3 = 0, $v = 0, $4 = 0, $arrayidx11 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $lbound;
  $lbound = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$lbound >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$lbound + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $graph = $leaf + 20 | 0;
    $0 = HEAP32[$graph >> 2] | 0;
    $call = _UF_find($leaf) | 0;
    $cmp = ($call | 0) == ($leaf | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _fast_nodeapp($call, $leaf);
    label = 4;
    break;
   case 4:
    $order1 = $leaf + 240 | 0;
    HEAP32[$order1 >> 2] = $order;
    $rank = $call + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $rank4 = $leaf + 236 | 0;
    HEAP32[$rank4 >> 2] = $1;
    $2 = HEAP32[$order1 >> 2] | 0;
    $rank10 = $0 + 224 | 0;
    $3 = HEAP32[$rank10 >> 2] | 0;
    $v = $3 + ($1 * 44 & -1) + 4 | 0;
    $4 = HEAP32[$v >> 2] | 0;
    $arrayidx11 = $4 + ($2 << 2) | 0;
    HEAP32[$arrayidx11 >> 2] = $leaf;
    _resize_leaf($agg_result, $leaf, $lbound);
    STACKTOP = __stackBase__;
    return;
  }
}
function _rec_bb($g, $root) {
  $g = $g | 0;
  $root = $root | 0;
  var $n_cluster = 0, $0 = 0, $cmp6 = 0, $clust = 0, $c_07 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp6 = ($0 | 0) < 1;
    if ($cmp6) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_07 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($c_07 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _rec_bb($2, $root);
    $inc = $c_07 + 1 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_07 = $inc;
      label = 4;
      break;
    }
   case 5:
    _dot_compute_bb($g, $root);
    return;
  }
}
function _idealsize($g) {
  $g = $g | 0;
  var $relpage = 0, $margin = 0, $tmp = 0, $tmp5 = 0, $drawing = 0, $0 = 0, $page = 0, $1 = 0, $2 = 0, $x = 0, $3 = 0.0, $cmp = 0, $y = 0, $4 = 0.0, $cmp1 = 0, $5 = 0, $margin4 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $x7 = 0, $10 = 0.0, $y12 = 0, $11 = 0.0, $12 = 0.0, $div = 0.0, $13 = 0.0, $div18 = 0.0, $cmp19 = 0, $cmp20 = 0, $or_cond = 0, $cmp23 = 0, $cond = 0.0, $cmp24 = 0, $cond28 = 0.0, $mul = 0.0, $div31 = 0.0, $call = 0.0, $mul33 = 0.0, $div35 = 0.0, $mul37 = 0.0, $div39 = 0.0, $call40 = 0.0, $mul42 = 0.0, $div44 = 0.0, $mul46 = 0.0, $14 = 0, $x49 = 0, $mul51 = 0.0, $15 = 0, $y55 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $relpage = __stackBase__ | 0;
    $margin = __stackBase__ + 16 | 0;
    $tmp = __stackBase__ + 32 | 0;
    $tmp5 = __stackBase__ + 48 | 0;
    $drawing = $g + 48 | 0;
    $0 = HEAP32[$drawing >> 2] | 0;
    $page = $0 + 48 | 0;
    $1 = $relpage;
    $2 = $page;
    HEAP32[$1 >> 2] = HEAP32[$2 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$2 + 12 >> 2] | 0;
    $x = $relpage | 0;
    $3 = +HEAPF64[$x >> 3];
    $cmp = $3 < .001;
    if ($cmp) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $y = $relpage + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $cmp1 = $4 < .001;
    if ($cmp1) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $5 = HEAP32[$drawing >> 2] | 0;
    $margin4 = $5 + 32 | 0;
    $6 = $margin;
    $7 = $margin4;
    HEAP32[$6 >> 2] = HEAP32[$7 >> 2] | 0;
    HEAP32[$6 + 4 >> 2] = HEAP32[$7 + 4 >> 2] | 0;
    HEAP32[$6 + 8 >> 2] = HEAP32[$7 + 8 >> 2] | 0;
    HEAP32[$6 + 12 >> 2] = HEAP32[$7 + 12 >> 2] | 0;
    _sub_pointf3019($tmp, $relpage, $margin);
    $8 = $tmp;
    HEAP32[$1 >> 2] = HEAP32[$8 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$8 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$8 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$8 + 12 >> 2] | 0;
    _sub_pointf3019($tmp5, $relpage, $margin);
    $9 = $tmp5;
    HEAP32[$1 >> 2] = HEAP32[$9 >> 2] | 0;
    HEAP32[$1 + 4 >> 2] = HEAP32[$9 + 4 >> 2] | 0;
    HEAP32[$1 + 8 >> 2] = HEAP32[$9 + 8 >> 2] | 0;
    HEAP32[$1 + 12 >> 2] = HEAP32[$9 + 12 >> 2] | 0;
    $x7 = $g + 72 | 0;
    $10 = +HEAPF64[$x7 >> 3];
    $y12 = $g + 80 | 0;
    $11 = +HEAPF64[$y12 >> 3];
    $12 = +HEAPF64[$x >> 3];
    $div = $12 / $10;
    $13 = +HEAPF64[$y >> 3];
    $div18 = $13 / $11;
    $cmp19 = $div < 1.0;
    $cmp20 = $div18 < 1.0;
    $or_cond = $cmp19 | $cmp20;
    if ($or_cond) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 6;
      break;
    }
   case 5:
    $cmp23 = $div < $div18;
    $cond = $cmp23 ? $div : $div18;
    $cmp24 = $cond > .5;
    $cond28 = $cmp24 ? $cond : .5;
    $mul = $10 * $cond28;
    $div31 = $mul / $12;
    $call = +Math_ceil(+$div31);
    $mul33 = $12 * $call;
    $div35 = $mul33 / $10;
    $mul37 = $11 * $cond28;
    $div39 = $mul37 / $13;
    $call40 = +Math_ceil(+$div39);
    $mul42 = $13 * $call40;
    $div44 = $mul42 / $11;
    $mul46 = $10 * $div35;
    $14 = HEAP32[$drawing >> 2] | 0;
    $x49 = $14 + 64 | 0;
    HEAPF64[$x49 >> 3] = $mul46;
    $mul51 = $11 * $div44;
    $15 = HEAP32[$drawing >> 2] | 0;
    $y55 = $15 + 72 | 0;
    HEAPF64[$y55 >> 3] = $mul51;
    $retval_0 = 1;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _make_aux_edge($u, $v, $len, $wt) {
  $u = $u | 0;
  $v = $v | 0;
  $len = +$len;
  $wt = $wt | 0;
  var $call = 0, $0 = 0, $tail = 0, $1 = 0, $head = 0, $2 = 0, $cmp = 0, $cmp1 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $conv3 = 0, $minlen = 0, $3 = 0, $conv5 = 0.0, $weight = 0, $4 = 0, $call7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _zmalloc(192) | 0;
    $0 = $call;
    $tail = $call + 16 | 0;
    $1 = $tail;
    HEAP32[$1 >> 2] = $u;
    $head = $call + 12 | 0;
    $2 = $head;
    HEAP32[$2 >> 2] = $v;
    $cmp = $len > 65535.0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _largeMinlen($len);
    return 0;
   case 4:
    $cmp1 = $len < 0.0;
    if ($cmp1) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add = $len + .5;
    $add_sink = $add;
    label = 7;
    break;
   case 6:
    $sub = $len + -.5;
    $add_sink = $sub;
    label = 7;
    break;
   case 7:
    $conv = ~~$add_sink;
    $conv3 = $conv & 65535;
    $minlen = $call + 186 | 0;
    $3 = $minlen;
    HEAP16[$3 >> 1] = $conv3;
    $conv5 = +($wt | 0);
    $weight = $call + 172 | 0;
    $4 = $weight;
    HEAPF32[$4 >> 2] = $conv5;
    $call7 = _fast_edge($0) | 0;
    return $0 | 0;
  }
  return 0;
}
function _largeMinlen($l) {
  $l = +$l;
  _agerr(1, 100240, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $l, HEAP32[tempInt + 8 >> 2] = 65535, tempInt) | 0);
  _exit(1);
}
function _sub_pointf3019($agg_result, $p, $q) {
  $agg_result = $agg_result | 0;
  $p = $p | 0;
  $q = $q | 0;
  var $sub4 = 0.0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  tempParam = $q;
  $q = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$q >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$q + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$q + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$q + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  $sub4 = +HEAPF64[$p + 8 >> 3] - +HEAPF64[$q + 8 >> 3];
  HEAPF64[$agg_result >> 3] = +HEAPF64[$p >> 3] - +HEAPF64[$q >> 3];
  HEAPF64[$agg_result + 8 >> 3] = $sub4;
  STACKTOP = __stackBase__;
  return;
}
function _dot_compute_bb($g, $root) {
  $g = $g | 0;
  $root = $root | 0;
  var $root1 = 0, $0 = 0, $cmp = 0, $minrank = 0, $1 = 0, $maxrank = 0, $2 = 0, $cmp678 = 0, $conv = 0, $rank = 0, $3 = 0, $4 = 0, $conv5 = 0, $UR_sroa_0_0_lcssa = 0.0, $LL_sroa_0_0_lcssa = 0.0, $n_cluster = 0, $5 = 0, $cmp9460 = 0, $clust = 0, $6 = 0, $7 = 0, $r_081 = 0, $UR_sroa_0_080 = 0.0, $LL_sroa_0_079 = 0.0, $n = 0, $8 = 0, $cmp9 = 0, $v15 = 0, $9 = 0, $10 = 0, $cmp17 = 0, $node_type65 = 0, $11 = 0, $cmp2466 = 0, $cmp2667 = 0, $or_cond68 = 0, $12 = 0, $v32 = 0, $13 = 0, $c_069 = 0, $arrayidx33 = 0, $14 = 0, $inc = 0, $node_type = 0, $15 = 0, $cmp24 = 0, $cmp26 = 0, $or_cond = 0, $_lcssa = 0, $v_0_lcssa = 0, $cmp37 = 0, $x41 = 0, $16 = 0.0, $lw = 0, $17 = 0.0, $sub = 0.0, $conv43 = 0, $conv45 = 0.0, $cmp46 = 0, $LL_sroa_0_0_conv45 = 0.0, $sub52 = 0, $18 = 0, $v56 = 0, $19 = 0, $arrayidx57 = 0, $v_172 = 0, $node_type6173 = 0, $20 = 0, $cmp6374 = 0, $sub58 = 0, $21 = 0, $v69 = 0, $22 = 0, $c_175 = 0, $arrayidx70 = 0, $dec = 0, $v_1 = 0, $node_type61 = 0, $23 = 0, $cmp63 = 0, $v_1_lcssa = 0, $x75 = 0, $24 = 0.0, $rw = 0, $25 = 0.0, $add = 0.0, $conv77 = 0, $conv79 = 0.0, $cmp80 = 0, $UR_sroa_0_0_conv79 = 0.0, $LL_sroa_0_1 = 0.0, $UR_sroa_0_1 = 0.0, $inc90 = 0, $cmp6 = 0, $UR_sroa_0_263 = 0.0, $c_262 = 0, $LL_sroa_0_261 = 0.0, $arrayidx98 = 0, $26 = 0, $x101 = 0, $27 = 0.0, $sub103 = 0.0, $conv104 = 0, $conv106 = 0.0, $cmp107 = 0, $LL_sroa_0_2_conv106 = 0.0, $x122 = 0, $28 = 0.0, $add124 = 0.0, $conv125 = 0, $conv127 = 0.0, $cmp128 = 0, $cond135 = 0.0, $inc138 = 0, $cmp94 = 0, $ln = 0, $29 = 0, $rank143 = 0, $30 = 0, $conv144 = 0.0, $rn = 0, $31 = 0, $rank148 = 0, $32 = 0, $conv149 = 0.0, $LL_sroa_0_3 = 0.0, $UR_sroa_0_3 = 0.0, $maxrank153 = 0, $33 = 0, $idxprom = 0, $rank155 = 0, $34 = 0, $v157 = 0, $35 = 0, $36 = 0, $y = 0, $37 = 0.0, $ht1 = 0, $38 = 0, $conv162 = 0.0, $sub163 = 0.0, $minrank166 = 0, $39 = 0, $idxprom167 = 0, $v171 = 0, $40 = 0, $41 = 0, $y175 = 0, $42 = 0.0, $ht2 = 0, $43 = 0, $conv177 = 0.0, $add178 = 0.0, $LL_sroa_0_0__idx = 0, $LL_sroa_1_8__idx11 = 0, $UR_sroa_0_0__idx = 0, $UR_sroa_1_8__idx7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root1 = $g + 32 | 0;
    $0 = HEAP32[$root1 >> 2] | 0;
    $cmp = ($0 | 0) == ($g | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 19;
      break;
    }
   case 3:
    $minrank = $g + 248 | 0;
    $1 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $cmp678 = $1 << 16 >> 16 > $2 << 16 >> 16;
    if ($cmp678) {
      $LL_sroa_0_0_lcssa = 2147483647.0;
      $UR_sroa_0_0_lcssa = -2147483647.0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv = $1 << 16 >> 16;
    $rank = $g + 224 | 0;
    $3 = HEAP32[$rank >> 2] | 0;
    $4 = HEAP16[$maxrank >> 1] | 0;
    $conv5 = $4 << 16 >> 16;
    $LL_sroa_0_079 = 2147483647.0;
    $UR_sroa_0_080 = -2147483647.0;
    $r_081 = $conv;
    label = 7;
    break;
   case 5:
    $n_cluster = $g + 212 | 0;
    $5 = HEAP32[$n_cluster >> 2] | 0;
    $cmp9460 = ($5 | 0) < 1;
    if ($cmp9460) {
      $UR_sroa_0_3 = $UR_sroa_0_0_lcssa;
      $LL_sroa_0_3 = $LL_sroa_0_0_lcssa;
      label = 20;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $clust = $g + 216 | 0;
    $6 = HEAP32[$clust >> 2] | 0;
    $7 = HEAP32[$n_cluster >> 2] | 0;
    $LL_sroa_0_261 = $LL_sroa_0_0_lcssa;
    $c_262 = 1;
    $UR_sroa_0_263 = $UR_sroa_0_0_lcssa;
    label = 18;
    break;
   case 7:
    $n = $3 + ($r_081 * 44 & -1) | 0;
    $8 = HEAP32[$n >> 2] | 0;
    $cmp9 = ($8 | 0) == 0;
    if ($cmp9) {
      $UR_sroa_0_1 = $UR_sroa_0_080;
      $LL_sroa_0_1 = $LL_sroa_0_079;
      label = 17;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $v15 = $3 + ($r_081 * 44 & -1) + 4 | 0;
    $9 = HEAP32[$v15 >> 2] | 0;
    $10 = HEAP32[$9 >> 2] | 0;
    $cmp17 = ($10 | 0) == 0;
    if ($cmp17) {
      $UR_sroa_0_1 = $UR_sroa_0_080;
      $LL_sroa_0_1 = $LL_sroa_0_079;
      label = 17;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $node_type65 = $10 + 162 | 0;
    $11 = HEAP8[$node_type65] | 0;
    $cmp2466 = $11 << 24 >> 24 != 0;
    $cmp2667 = ($8 | 0) > 1;
    $or_cond68 = $cmp2466 & $cmp2667;
    if ($or_cond68) {
      label = 10;
      break;
    } else {
      $v_0_lcssa = $10;
      $_lcssa = $11;
      label = 12;
      break;
    }
   case 10:
    $12 = HEAP32[$rank >> 2] | 0;
    $v32 = $12 + ($r_081 * 44 & -1) + 4 | 0;
    $13 = HEAP32[$v32 >> 2] | 0;
    $c_069 = 1;
    label = 11;
    break;
   case 11:
    $arrayidx33 = $13 + ($c_069 << 2) | 0;
    $14 = HEAP32[$arrayidx33 >> 2] | 0;
    $inc = $c_069 + 1 | 0;
    $node_type = $14 + 162 | 0;
    $15 = HEAP8[$node_type] | 0;
    $cmp24 = $15 << 24 >> 24 != 0;
    $cmp26 = ($inc | 0) < ($8 | 0);
    $or_cond = $cmp24 & $cmp26;
    if ($or_cond) {
      $c_069 = $inc;
      label = 11;
      break;
    } else {
      $v_0_lcssa = $14;
      $_lcssa = $15;
      label = 12;
      break;
    }
   case 12:
    $cmp37 = $_lcssa << 24 >> 24 == 0;
    if ($cmp37) {
      label = 13;
      break;
    } else {
      $UR_sroa_0_1 = $UR_sroa_0_080;
      $LL_sroa_0_1 = $LL_sroa_0_079;
      label = 17;
      break;
    }
   case 13:
    $x41 = $v_0_lcssa + 32 | 0;
    $16 = +HEAPF64[$x41 >> 3];
    $lw = $v_0_lcssa + 104 | 0;
    $17 = +HEAPF64[$lw >> 3];
    $sub = $16 - $17;
    $conv43 = ~~$sub;
    $conv45 = +($conv43 | 0);
    $cmp46 = $LL_sroa_0_079 < $conv45;
    $LL_sroa_0_0_conv45 = $cmp46 ? $LL_sroa_0_079 : $conv45;
    $sub52 = $8 - 1 | 0;
    $18 = HEAP32[$rank >> 2] | 0;
    $v56 = $18 + ($r_081 * 44 & -1) + 4 | 0;
    $19 = HEAP32[$v56 >> 2] | 0;
    $arrayidx57 = $19 + ($sub52 << 2) | 0;
    $v_172 = HEAP32[$arrayidx57 >> 2] | 0;
    $node_type6173 = $v_172 + 162 | 0;
    $20 = HEAP8[$node_type6173] | 0;
    $cmp6374 = $20 << 24 >> 24 == 0;
    if ($cmp6374) {
      $v_1_lcssa = $v_172;
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $sub58 = $8 - 2 | 0;
    $21 = HEAP32[$rank >> 2] | 0;
    $v69 = $21 + ($r_081 * 44 & -1) + 4 | 0;
    $22 = HEAP32[$v69 >> 2] | 0;
    $c_175 = $sub58;
    label = 15;
    break;
   case 15:
    $arrayidx70 = $22 + ($c_175 << 2) | 0;
    $dec = $c_175 - 1 | 0;
    $v_1 = HEAP32[$arrayidx70 >> 2] | 0;
    $node_type61 = $v_1 + 162 | 0;
    $23 = HEAP8[$node_type61] | 0;
    $cmp63 = $23 << 24 >> 24 == 0;
    if ($cmp63) {
      $v_1_lcssa = $v_1;
      label = 16;
      break;
    } else {
      $c_175 = $dec;
      label = 15;
      break;
    }
   case 16:
    $x75 = $v_1_lcssa + 32 | 0;
    $24 = +HEAPF64[$x75 >> 3];
    $rw = $v_1_lcssa + 112 | 0;
    $25 = +HEAPF64[$rw >> 3];
    $add = $24 + $25;
    $conv77 = ~~$add;
    $conv79 = +($conv77 | 0);
    $cmp80 = $UR_sroa_0_080 > $conv79;
    $UR_sroa_0_0_conv79 = $cmp80 ? $UR_sroa_0_080 : $conv79;
    $UR_sroa_0_1 = $UR_sroa_0_0_conv79;
    $LL_sroa_0_1 = $LL_sroa_0_0_conv45;
    label = 17;
    break;
   case 17:
    $inc90 = $r_081 + 1 | 0;
    $cmp6 = ($inc90 | 0) > ($conv5 | 0);
    if ($cmp6) {
      $LL_sroa_0_0_lcssa = $LL_sroa_0_1;
      $UR_sroa_0_0_lcssa = $UR_sroa_0_1;
      label = 5;
      break;
    } else {
      $LL_sroa_0_079 = $LL_sroa_0_1;
      $UR_sroa_0_080 = $UR_sroa_0_1;
      $r_081 = $inc90;
      label = 7;
      break;
    }
   case 18:
    $arrayidx98 = $6 + ($c_262 << 2) | 0;
    $26 = HEAP32[$arrayidx98 >> 2] | 0;
    $x101 = $26 + 56 | 0;
    $27 = +HEAPF64[$x101 >> 3];
    $sub103 = $27 + -8.0;
    $conv104 = ~~$sub103;
    $conv106 = +($conv104 | 0);
    $cmp107 = $LL_sroa_0_261 < $conv106;
    $LL_sroa_0_2_conv106 = $cmp107 ? $LL_sroa_0_261 : $conv106;
    $x122 = $26 + 72 | 0;
    $28 = +HEAPF64[$x122 >> 3];
    $add124 = $28 + 8.0;
    $conv125 = ~~$add124;
    $conv127 = +($conv125 | 0);
    $cmp128 = $UR_sroa_0_263 > $conv127;
    $cond135 = $cmp128 ? $UR_sroa_0_263 : $conv127;
    $inc138 = $c_262 + 1 | 0;
    $cmp94 = ($inc138 | 0) > ($7 | 0);
    if ($cmp94) {
      $UR_sroa_0_3 = $cond135;
      $LL_sroa_0_3 = $LL_sroa_0_2_conv106;
      label = 20;
      break;
    } else {
      $LL_sroa_0_261 = $LL_sroa_0_2_conv106;
      $c_262 = $inc138;
      $UR_sroa_0_263 = $cond135;
      label = 18;
      break;
    }
   case 19:
    $ln = $g + 268 | 0;
    $29 = HEAP32[$ln >> 2] | 0;
    $rank143 = $29 + 236 | 0;
    $30 = HEAP32[$rank143 >> 2] | 0;
    $conv144 = +($30 | 0);
    $rn = $g + 272 | 0;
    $31 = HEAP32[$rn >> 2] | 0;
    $rank148 = $31 + 236 | 0;
    $32 = HEAP32[$rank148 >> 2] | 0;
    $conv149 = +($32 | 0);
    $UR_sroa_0_3 = $conv149;
    $LL_sroa_0_3 = $conv144;
    label = 20;
    break;
   case 20:
    $maxrank153 = $g + 250 | 0;
    $33 = HEAP16[$maxrank153 >> 1] | 0;
    $idxprom = $33 << 16 >> 16;
    $rank155 = $root + 224 | 0;
    $34 = HEAP32[$rank155 >> 2] | 0;
    $v157 = $34 + ($idxprom * 44 & -1) + 4 | 0;
    $35 = HEAP32[$v157 >> 2] | 0;
    $36 = HEAP32[$35 >> 2] | 0;
    $y = $36 + 40 | 0;
    $37 = +HEAPF64[$y >> 3];
    $ht1 = $g + 160 | 0;
    $38 = HEAP32[$ht1 >> 2] | 0;
    $conv162 = +($38 | 0);
    $sub163 = $37 - $conv162;
    $minrank166 = $g + 248 | 0;
    $39 = HEAP16[$minrank166 >> 1] | 0;
    $idxprom167 = $39 << 16 >> 16;
    $v171 = $34 + ($idxprom167 * 44 & -1) + 4 | 0;
    $40 = HEAP32[$v171 >> 2] | 0;
    $41 = HEAP32[$40 >> 2] | 0;
    $y175 = $41 + 40 | 0;
    $42 = +HEAPF64[$y175 >> 3];
    $ht2 = $g + 164 | 0;
    $43 = HEAP32[$ht2 >> 2] | 0;
    $conv177 = +($43 | 0);
    $add178 = $42 + $conv177;
    $LL_sroa_0_0__idx = $g + 56 | 0;
    HEAPF64[$LL_sroa_0_0__idx >> 3] = $LL_sroa_0_3;
    $LL_sroa_1_8__idx11 = $g + 64 | 0;
    HEAPF64[$LL_sroa_1_8__idx11 >> 3] = $sub163;
    $UR_sroa_0_0__idx = $g + 72 | 0;
    HEAPF64[$UR_sroa_0_0__idx >> 3] = $UR_sroa_0_3;
    $UR_sroa_1_8__idx7 = $g + 80 | 0;
    HEAPF64[$UR_sroa_1_8__idx7 >> 3] = $add178;
    return;
  }
}
function _adjustEqual($g, $delta) {
  $g = $g | 0;
  $delta = $delta | 0;
  var $root1 = 0, $0 = 0, $rank2 = 0, $1 = 0, $maxrank = 0, $2 = 0, $conv = 0, $minrank = 0, $3 = 0, $conv5 = 0, $ht2 = 0, $4 = 0, $ht27 = 0, $5 = 0, $sub = 0, $ht1 = 0, $6 = 0, $ht110 = 0, $7 = 0, $sub11 = 0, $add = 0, $cmp = 0, $add13 = 0, $div = 0, $cmp14 = 0, $cmp17 = 0, $add22 = 0, $sub23 = 0, $8 = 0, $add26 = 0, $sub30 = 0, $9 = 0, $add33 = 0, $cmp35 = 0, $add40 = 0, $sub41 = 0, $10 = 0, $add44 = 0, $sub49 = 0, $11 = 0, $add52 = 0, $sub56 = 0, $add57 = 0, $sub58 = 0, $add59 = 0, $div60 = 0, $maxrank62 = 0, $12 = 0, $conv63 = 0, $r_048 = 0, $minrank66 = 0, $13 = 0, $conv6749 = 0, $cmp6850 = 0, $r_052 = 0, $y_051 = 0, $n = 0, $14 = 0, $cmp71 = 0, $conv74 = 0.0, $v = 0, $15 = 0, $16 = 0, $y78 = 0, $17 = 0.0, $add79 = 0.0, $add81 = 0, $r_0 = 0, $18 = 0, $conv67 = 0, $cmp68 = 0, $19 = 0, $add84 = 0, $20 = 0, $add87 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root1 = $g + 32 | 0;
    $0 = HEAP32[$root1 >> 2] | 0;
    $rank2 = $0 + 224 | 0;
    $1 = HEAP32[$rank2 >> 2] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $conv = $2 << 16 >> 16;
    $minrank = $g + 248 | 0;
    $3 = HEAP16[$minrank >> 1] | 0;
    $conv5 = $3 << 16 >> 16;
    $ht2 = $1 + ($conv5 * 44 & -1) + 20 | 0;
    $4 = HEAP32[$ht2 >> 2] | 0;
    $ht27 = $g + 164 | 0;
    $5 = HEAP32[$ht27 >> 2] | 0;
    $sub = $4 - $5 | 0;
    $ht1 = $1 + ($conv * 44 & -1) + 16 | 0;
    $6 = HEAP32[$ht1 >> 2] | 0;
    $ht110 = $g + 160 | 0;
    $7 = HEAP32[$ht110 >> 2] | 0;
    $sub11 = $6 - $7 | 0;
    $add = $sub11 + $sub | 0;
    $cmp = ($add | 0) < ($delta | 0);
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add13 = $delta + 1 | 0;
    $div = ($add13 | 0) / 2 & -1;
    $cmp14 = ($sub | 0) > ($sub11 | 0);
    if ($cmp14) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $cmp17 = ($div | 0) > ($sub | 0);
    if ($cmp17) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add22 = $div + $5 | 0;
    HEAP32[$ht27 >> 2] = $add22;
    $sub23 = $delta - $div | 0;
    $8 = HEAP32[$ht110 >> 2] | 0;
    $add26 = $sub23 + $8 | 0;
    HEAP32[$ht110 >> 2] = $add26;
    label = 15;
    break;
   case 6:
    HEAP32[$ht27 >> 2] = $4;
    $sub30 = $delta - $sub | 0;
    $9 = HEAP32[$ht110 >> 2] | 0;
    $add33 = $sub30 + $9 | 0;
    HEAP32[$ht110 >> 2] = $add33;
    label = 15;
    break;
   case 7:
    $cmp35 = ($div | 0) > ($sub11 | 0);
    if ($cmp35) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add40 = $div + $7 | 0;
    HEAP32[$ht110 >> 2] = $add40;
    $sub41 = $delta - $div | 0;
    $10 = HEAP32[$ht27 >> 2] | 0;
    $add44 = $sub41 + $10 | 0;
    HEAP32[$ht27 >> 2] = $add44;
    label = 15;
    break;
   case 9:
    HEAP32[$ht110 >> 2] = $6;
    $sub49 = $delta - $sub11 | 0;
    $11 = HEAP32[$ht27 >> 2] | 0;
    $add52 = $sub49 + $11 | 0;
    HEAP32[$ht27 >> 2] = $add52;
    label = 15;
    break;
   case 10:
    $sub56 = $conv - $conv5 | 0;
    $add57 = $sub56 + 2 | 0;
    $sub58 = $delta + 1 | 0;
    $add59 = $sub58 + $sub56 | 0;
    $div60 = ($add59 | 0) / ($add57 | 0) & -1;
    $maxrank62 = $0 + 250 | 0;
    $12 = HEAP16[$maxrank62 >> 1] | 0;
    $conv63 = $12 << 16 >> 16;
    $r_048 = $conv63 - 1 | 0;
    $minrank66 = $0 + 248 | 0;
    $13 = HEAP16[$minrank66 >> 1] | 0;
    $conv6749 = $13 << 16 >> 16;
    $cmp6850 = ($r_048 | 0) < ($conv6749 | 0);
    if ($cmp6850) {
      label = 14;
      break;
    } else {
      $y_051 = $div60;
      $r_052 = $r_048;
      label = 11;
      break;
    }
   case 11:
    $n = $1 + ($r_052 * 44 & -1) | 0;
    $14 = HEAP32[$n >> 2] | 0;
    $cmp71 = ($14 | 0) > 0;
    if ($cmp71) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $conv74 = +($y_051 | 0);
    $v = $1 + ($r_052 * 44 & -1) + 4 | 0;
    $15 = HEAP32[$v >> 2] | 0;
    $16 = HEAP32[$15 >> 2] | 0;
    $y78 = $16 + 40 | 0;
    $17 = +HEAPF64[$y78 >> 3];
    $add79 = $conv74 + $17;
    HEAPF64[$y78 >> 3] = $add79;
    label = 13;
    break;
   case 13:
    $add81 = $y_051 + $div60 | 0;
    $r_0 = $r_052 - 1 | 0;
    $18 = HEAP16[$minrank66 >> 1] | 0;
    $conv67 = $18 << 16 >> 16;
    $cmp68 = ($r_0 | 0) < ($conv67 | 0);
    if ($cmp68) {
      label = 14;
      break;
    } else {
      $y_051 = $add81;
      $r_052 = $r_0;
      label = 11;
      break;
    }
   case 14:
    $19 = HEAP32[$ht27 >> 2] | 0;
    $add84 = $19 + $div60 | 0;
    HEAP32[$ht27 >> 2] = $add84;
    $20 = HEAP32[$ht110 >> 2] | 0;
    $add87 = $20 + $div60 | 0;
    HEAP32[$ht110 >> 2] = $add87;
    label = 15;
    break;
   case 15:
    return;
  }
}
function _adjustSimple($g, $delta) {
  $g = $g | 0;
  $delta = $delta | 0;
  var $root1 = 0, $0 = 0, $rank2 = 0, $1 = 0, $maxrank = 0, $2 = 0, $conv = 0, $minrank = 0, $3 = 0, $conv5 = 0, $add = 0, $div = 0, $ht1 = 0, $4 = 0, $add7 = 0, $ht18 = 0, $5 = 0, $sub = 0, $cmp = 0, $cmp1042 = 0, $conv16 = 0.0, $r_043 = 0, $n = 0, $6 = 0, $cmp13 = 0, $v = 0, $7 = 0, $8 = 0, $y = 0, $9 = 0.0, $add20 = 0.0, $dec = 0, $cmp10 = 0, $ht2 = 0, $10 = 0, $sub22 = 0, $ht226 = 0, $11 = 0, $add23 = 0, $add24 = 0, $sub27 = 0, $ht229 = 0, $12 = 0, $sub30 = 0, $add31 = 0, $ht233 = 0, $13 = 0, $sub34 = 0, $deltop_0 = 0, $cmp36 = 0, $r_138 = 0, $minrank42 = 0, $14 = 0, $conv4339 = 0, $cmp4440 = 0, $conv52 = 0.0, $r_141 = 0, $n48 = 0, $15 = 0, $cmp49 = 0, $r_1 = 0, $16 = 0, $conv43 = 0, $cmp44 = 0, $v54 = 0, $17 = 0, $18 = 0, $y58 = 0, $19 = 0.0, $add59 = 0.0, $sub65 = 0, $ht267 = 0, $20 = 0, $add68 = 0, $21 = 0, $add71 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root1 = $g + 32 | 0;
    $0 = HEAP32[$root1 >> 2] | 0;
    $rank2 = $0 + 224 | 0;
    $1 = HEAP32[$rank2 >> 2] | 0;
    $maxrank = $g + 250 | 0;
    $2 = HEAP16[$maxrank >> 1] | 0;
    $conv = $2 << 16 >> 16;
    $minrank = $g + 248 | 0;
    $3 = HEAP16[$minrank >> 1] | 0;
    $conv5 = $3 << 16 >> 16;
    $add = $delta + 1 | 0;
    $div = ($add | 0) / 2 & -1;
    $ht1 = $g + 160 | 0;
    $4 = HEAP32[$ht1 >> 2] | 0;
    $add7 = $4 + $div | 0;
    $ht18 = $1 + ($conv * 44 & -1) + 16 | 0;
    $5 = HEAP32[$ht18 >> 2] | 0;
    $sub = $add7 - $5 | 0;
    $cmp = ($sub | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $cmp1042 = $2 << 16 >> 16 < $3 << 16 >> 16;
    if ($cmp1042) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $conv16 = +($sub | 0);
    $r_043 = $conv;
    label = 5;
    break;
   case 5:
    $n = $1 + ($r_043 * 44 & -1) | 0;
    $6 = HEAP32[$n >> 2] | 0;
    $cmp13 = ($6 | 0) > 0;
    if ($cmp13) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $v = $1 + ($r_043 * 44 & -1) + 4 | 0;
    $7 = HEAP32[$v >> 2] | 0;
    $8 = HEAP32[$7 >> 2] | 0;
    $y = $8 + 40 | 0;
    $9 = +HEAPF64[$y >> 3];
    $add20 = $conv16 + $9;
    HEAPF64[$y >> 3] = $add20;
    label = 7;
    break;
   case 7:
    $dec = $r_043 - 1 | 0;
    $cmp10 = ($dec | 0) < ($conv5 | 0);
    if ($cmp10) {
      label = 8;
      break;
    } else {
      $r_043 = $dec;
      label = 5;
      break;
    }
   case 8:
    $ht2 = $g + 164 | 0;
    $10 = HEAP32[$ht2 >> 2] | 0;
    $sub22 = $delta - $div | 0;
    $ht226 = $1 + ($conv5 * 44 & -1) + 20 | 0;
    $11 = HEAP32[$ht226 >> 2] | 0;
    $add23 = $sub22 + $sub | 0;
    $add24 = $add23 + $10 | 0;
    $sub27 = $add24 - $11 | 0;
    $deltop_0 = $sub27;
    label = 10;
    break;
   case 9:
    $ht229 = $g + 164 | 0;
    $12 = HEAP32[$ht229 >> 2] | 0;
    $sub30 = $delta - $div | 0;
    $add31 = $sub30 + $12 | 0;
    $ht233 = $1 + ($conv5 * 44 & -1) + 20 | 0;
    $13 = HEAP32[$ht233 >> 2] | 0;
    $sub34 = $add31 - $13 | 0;
    $deltop_0 = $sub34;
    label = 10;
    break;
   case 10:
    $cmp36 = ($deltop_0 | 0) > 0;
    if ($cmp36) {
      label = 11;
      break;
    } else {
      label = 16;
      break;
    }
   case 11:
    $r_138 = $conv5 - 1 | 0;
    $minrank42 = $0 + 248 | 0;
    $14 = HEAP16[$minrank42 >> 1] | 0;
    $conv4339 = $14 << 16 >> 16;
    $cmp4440 = ($r_138 | 0) < ($conv4339 | 0);
    if ($cmp4440) {
      label = 16;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $conv52 = +($deltop_0 | 0);
    $r_141 = $r_138;
    label = 13;
    break;
   case 13:
    $n48 = $1 + ($r_141 * 44 & -1) | 0;
    $15 = HEAP32[$n48 >> 2] | 0;
    $cmp49 = ($15 | 0) > 0;
    if ($cmp49) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $r_1 = $r_141 - 1 | 0;
    $16 = HEAP16[$minrank42 >> 1] | 0;
    $conv43 = $16 << 16 >> 16;
    $cmp44 = ($r_1 | 0) < ($conv43 | 0);
    if ($cmp44) {
      label = 16;
      break;
    } else {
      $r_141 = $r_1;
      label = 13;
      break;
    }
   case 15:
    $v54 = $1 + ($r_141 * 44 & -1) + 4 | 0;
    $17 = HEAP32[$v54 >> 2] | 0;
    $18 = HEAP32[$17 >> 2] | 0;
    $y58 = $18 + 40 | 0;
    $19 = +HEAPF64[$y58 >> 3];
    $add59 = $conv52 + $19;
    HEAPF64[$y58 >> 3] = $add59;
    label = 14;
    break;
   case 16:
    $sub65 = $delta - $div | 0;
    $ht267 = $g + 164 | 0;
    $20 = HEAP32[$ht267 >> 2] | 0;
    $add68 = $sub65 + $20 | 0;
    HEAP32[$ht267 >> 2] = $add68;
    $21 = HEAP32[$ht1 >> 2] | 0;
    $add71 = $21 + $div | 0;
    HEAP32[$ht1 >> 2] = $add71;
    return;
  }
}
function _scale_bb($g, $xf, $yf) {
  $g = $g | 0;
  $xf = +$xf;
  $yf = +$yf;
  var $n_cluster = 0, $0 = 0, $cmp1 = 0, $clust = 0, $c_02 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, $x = 0, $4 = 0.0, $mul = 0.0, $y = 0, $5 = 0.0, $mul6 = 0.0, $x9 = 0, $6 = 0.0, $mul10 = 0.0, $y14 = 0, $7 = 0.0, $mul15 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp1 = ($0 | 0) < 1;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_02 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($c_02 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _scale_bb($2, $xf, $yf);
    $inc = $c_02 + 1 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_02 = $inc;
      label = 4;
      break;
    }
   case 5:
    $x = $g + 56 | 0;
    $4 = +HEAPF64[$x >> 3];
    $mul = $4 * $xf;
    HEAPF64[$x >> 3] = $mul;
    $y = $g + 64 | 0;
    $5 = +HEAPF64[$y >> 3];
    $mul6 = $5 * $yf;
    HEAPF64[$y >> 3] = $mul6;
    $x9 = $g + 72 | 0;
    $6 = +HEAPF64[$x9 >> 3];
    $mul10 = $6 * $xf;
    HEAPF64[$x9 >> 3] = $mul10;
    $y14 = $g + 80 | 0;
    $7 = +HEAPF64[$y14 >> 3];
    $mul15 = $7 * $yf;
    HEAPF64[$y14 >> 3] = $mul15;
    return;
  }
}
function _adjustAspectRatio($g, $asp) {
  $g = $g | 0;
  $asp = $asp | 0;
  var $x = 0, $0 = 0.0, $x3 = 0, $1 = 0.0, $sub = 0.0, $y = 0, $2 = 0.0, $y10 = 0, $3 = 0.0, $sub11 = 0.0, $div = 0.0, $4 = 0, $tobool = 0, $5 = 0, $mul = 0.0, $div30 = 0.0, $call = 0, $6 = 0, $call31 = 0, $call32 = 0, $targetAR = 0, $7 = 0.0, $mul33 = 0.0, $cmp = 0, $curIterations = 0, $8 = 0, $prevIterations = 0, $9 = 0, $sub36 = 0, $conv = 0.0, $mul37 = 0.0, $div38 = 0.0, $conv39 = 0, $nextIter = 0, $mul41 = 0.0, $cmp42 = 0, $nextIter45 = 0, $10 = 0, $tobool46 = 0, $11 = 0, $12 = 0, $_pr = 0, $tobool54 = 0, $13 = 0, $nextIter56 = 0, $14 = 0, $call57 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $x = $g + 72 | 0;
    $0 = +HEAPF64[$x >> 3];
    $x3 = $g + 56 | 0;
    $1 = +HEAPF64[$x3 >> 3];
    $sub = $0 - $1;
    $y = $g + 80 | 0;
    $2 = +HEAPF64[$y >> 3];
    $y10 = $g + 64 | 0;
    $3 = +HEAPF64[$y10 >> 3];
    $sub11 = $2 - $3;
    $div = $sub / $sub11;
    $4 = HEAP8[164912] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $5 = HEAP32[_stderr >> 2] | 0;
    $mul = $sub * $sub11;
    $div30 = $mul / 1.0e4;
    $call = _fprintf($5 | 0, 130144, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $div, HEAPF64[tempInt + 8 >> 3] = $div30, tempInt) | 0) | 0;
    $6 = HEAP32[_stderr >> 2] | 0;
    $call31 = _countDummyNodes($g) | 0;
    $call32 = _fprintf($6 | 0, 118264, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call31, tempInt) | 0) | 0;
    label = 4;
    break;
   case 4:
    $targetAR = $asp | 0;
    $7 = +HEAPF64[$targetAR >> 3];
    $mul33 = $7 * 1.1;
    $cmp = $div > $mul33;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $curIterations = $asp + 20 | 0;
    $8 = HEAP32[$curIterations >> 2] | 0;
    $prevIterations = $asp + 16 | 0;
    $9 = HEAP32[$prevIterations >> 2] | 0;
    $sub36 = $8 - $9 | 0;
    $conv = +($sub36 | 0);
    $mul37 = $7 * $conv;
    $div38 = $mul37 / $div;
    $conv39 = ~~$div38;
    $nextIter = $asp + 24 | 0;
    HEAP32[$nextIter >> 2] = $conv39;
    label = 10;
    break;
   case 6:
    $mul41 = $7 * .8;
    $cmp42 = $div > $mul41;
    $nextIter45 = $asp + 24 | 0;
    if ($cmp42) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    HEAP32[$nextIter45 >> 2] = -1;
    $10 = HEAP8[164912] | 0;
    $tobool46 = $10 << 24 >> 24 == 0;
    if ($tobool46) {
      label = 12;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $11 = HEAP32[_stderr >> 2] | 0;
    $12 = _fwrite(112984, 34, 1, $11 | 0) | 0;
    label = 10;
    break;
   case 9:
    HEAP32[$nextIter45 >> 2] = 0;
    label = 10;
    break;
   case 10:
    $_pr = HEAP8[164912] | 0;
    $tobool54 = $_pr << 24 >> 24 == 0;
    if ($tobool54) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $13 = HEAP32[_stderr >> 2] | 0;
    $nextIter56 = $asp + 24 | 0;
    $14 = HEAP32[$nextIter56 >> 2] | 0;
    $call57 = _fprintf($13 | 0, 108456, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $14, tempInt) | 0) | 0;
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _clust_ht($g) {
  $g = $g | 0;
  var $root = 0, $0 = 0, $rank1 = 0, $1 = 0, $ht13 = 0, $2 = 0, $ht25 = 0, $3 = 0, $n_cluster = 0, $4 = 0, $cmp47 = 0, $clust = 0, $maxrank10 = 0, $minrank24 = 0, $haveClustLabel_051 = 0, $c_050 = 0, $ht1_049 = 0, $ht2_048 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $call = 0, $or = 0, $maxrank = 0, $7 = 0, $8 = 0, $cmp12 = 0, $ht115 = 0, $9 = 0, $add = 0, $cmp16 = 0, $ht1_0_add = 0, $ht1_1 = 0, $minrank = 0, $10 = 0, $11 = 0, $cmp26 = 0, $ht230 = 0, $12 = 0, $add31 = 0, $cmp32 = 0, $ht2_0_add31 = 0, $ht2_1 = 0, $inc = 0, $13 = 0, $cmp = 0, $haveClustLabel_0_lcssa = 0, $ht1_0_lcssa = 0, $ht2_0_lcssa = 0, $14 = 0, $cmp43 = 0, $label = 0, $15 = 0, $tobool = 0, $rankdir = 0, $16 = 0, $and49 = 0, $tobool50 = 0, $y = 0, $17 = 0.0, $conv54 = 0.0, $add55 = 0.0, $conv56 = 0, $y60 = 0, $18 = 0.0, $conv61 = 0.0, $add62 = 0.0, $conv63 = 0, $ht2_2 = 0, $ht1_2 = 0, $haveClustLabel_1 = 0, $19 = 0, $cmp71 = 0, $minrank75 = 0, $20 = 0, $idxprom = 0, $ht277 = 0, $21 = 0, $cmp78 = 0, $_ht2_2 = 0, $maxrank95 = 0, $22 = 0, $idxprom96 = 0, $ht198 = 0, $23 = 0, $cmp99 = 0, $cond109 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $rank1 = $0 + 224 | 0;
    $1 = HEAP32[$rank1 >> 2] | 0;
    $ht13 = $g + 160 | 0;
    $2 = HEAP32[$ht13 >> 2] | 0;
    $ht25 = $g + 164 | 0;
    $3 = HEAP32[$ht25 >> 2] | 0;
    $n_cluster = $g + 212 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp47 = ($4 | 0) < 1;
    if ($cmp47) {
      $ht2_0_lcssa = $3;
      $ht1_0_lcssa = $2;
      $haveClustLabel_0_lcssa = 0;
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $maxrank10 = $g + 250 | 0;
    $minrank24 = $g + 248 | 0;
    $ht2_048 = $3;
    $ht1_049 = $2;
    $c_050 = 1;
    $haveClustLabel_051 = 0;
    label = 4;
    break;
   case 4:
    $5 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $5 + ($c_050 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    $call = _clust_ht($6) | 0;
    $or = $call | $haveClustLabel_051;
    $maxrank = $6 + 250 | 0;
    $7 = HEAP16[$maxrank >> 1] | 0;
    $8 = HEAP16[$maxrank10 >> 1] | 0;
    $cmp12 = $7 << 16 >> 16 == $8 << 16 >> 16;
    if ($cmp12) {
      label = 5;
      break;
    } else {
      $ht1_1 = $ht1_049;
      label = 6;
      break;
    }
   case 5:
    $ht115 = $6 + 160 | 0;
    $9 = HEAP32[$ht115 >> 2] | 0;
    $add = $9 + 8 | 0;
    $cmp16 = ($ht1_049 | 0) > ($add | 0);
    $ht1_0_add = $cmp16 ? $ht1_049 : $add;
    $ht1_1 = $ht1_0_add;
    label = 6;
    break;
   case 6:
    $minrank = $6 + 248 | 0;
    $10 = HEAP16[$minrank >> 1] | 0;
    $11 = HEAP16[$minrank24 >> 1] | 0;
    $cmp26 = $10 << 16 >> 16 == $11 << 16 >> 16;
    if ($cmp26) {
      label = 7;
      break;
    } else {
      $ht2_1 = $ht2_048;
      label = 8;
      break;
    }
   case 7:
    $ht230 = $6 + 164 | 0;
    $12 = HEAP32[$ht230 >> 2] | 0;
    $add31 = $12 + 8 | 0;
    $cmp32 = ($ht2_048 | 0) > ($add31 | 0);
    $ht2_0_add31 = $cmp32 ? $ht2_048 : $add31;
    $ht2_1 = $ht2_0_add31;
    label = 8;
    break;
   case 8:
    $inc = $c_050 + 1 | 0;
    $13 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($13 | 0);
    if ($cmp) {
      $ht2_0_lcssa = $ht2_1;
      $ht1_0_lcssa = $ht1_1;
      $haveClustLabel_0_lcssa = $or;
      label = 9;
      break;
    } else {
      $ht2_048 = $ht2_1;
      $ht1_049 = $ht1_1;
      $c_050 = $inc;
      $haveClustLabel_051 = $or;
      label = 4;
      break;
    }
   case 9:
    $14 = HEAP32[$root >> 2] | 0;
    $cmp43 = ($14 | 0) == ($g | 0);
    if ($cmp43) {
      $haveClustLabel_1 = $haveClustLabel_0_lcssa;
      $ht1_2 = $ht1_0_lcssa;
      $ht2_2 = $ht2_0_lcssa;
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $label = $g + 52 | 0;
    $15 = HEAP32[$label >> 2] | 0;
    $tobool = ($15 | 0) == 0;
    if ($tobool) {
      $haveClustLabel_1 = $haveClustLabel_0_lcssa;
      $ht1_2 = $ht1_0_lcssa;
      $ht2_2 = $ht2_0_lcssa;
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $rankdir = $14 + 156 | 0;
    $16 = HEAP32[$rankdir >> 2] | 0;
    $and49 = $16 & 1;
    $tobool50 = ($and49 | 0) == 0;
    if ($tobool50) {
      label = 12;
      break;
    } else {
      $haveClustLabel_1 = 1;
      $ht1_2 = $ht1_0_lcssa;
      $ht2_2 = $ht2_0_lcssa;
      label = 13;
      break;
    }
   case 12:
    $y = $g + 96 | 0;
    $17 = +HEAPF64[$y >> 3];
    $conv54 = +($ht1_0_lcssa | 0);
    $add55 = $conv54 + $17;
    $conv56 = ~~$add55;
    $y60 = $g + 128 | 0;
    $18 = +HEAPF64[$y60 >> 3];
    $conv61 = +($ht2_0_lcssa | 0);
    $add62 = $conv61 + $18;
    $conv63 = ~~$add62;
    $haveClustLabel_1 = 1;
    $ht1_2 = $conv56;
    $ht2_2 = $conv63;
    label = 13;
    break;
   case 13:
    HEAP32[$ht13 >> 2] = $ht1_2;
    HEAP32[$ht25 >> 2] = $ht2_2;
    $19 = HEAP32[$root >> 2] | 0;
    $cmp71 = ($19 | 0) == ($g | 0);
    if ($cmp71) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $minrank75 = $g + 248 | 0;
    $20 = HEAP16[$minrank75 >> 1] | 0;
    $idxprom = $20 << 16 >> 16;
    $ht277 = $1 + ($idxprom * 44 & -1) + 20 | 0;
    $21 = HEAP32[$ht277 >> 2] | 0;
    $cmp78 = ($21 | 0) > ($ht2_2 | 0);
    $_ht2_2 = $cmp78 ? $21 : $ht2_2;
    HEAP32[$ht277 >> 2] = $_ht2_2;
    $maxrank95 = $g + 250 | 0;
    $22 = HEAP16[$maxrank95 >> 1] | 0;
    $idxprom96 = $22 << 16 >> 16;
    $ht198 = $1 + ($idxprom96 * 44 & -1) + 16 | 0;
    $23 = HEAP32[$ht198 >> 2] | 0;
    $cmp99 = ($23 | 0) > ($ht1_2 | 0);
    $cond109 = $cmp99 ? $23 : $ht1_2;
    HEAP32[$ht198 >> 2] = $cond109;
    label = 15;
    break;
   case 15:
    return $haveClustLabel_1 | 0;
  }
  return 0;
}
function _adjustRanks($g, $equal) {
  $g = $g | 0;
  $equal = $equal | 0;
  var $root = 0, $0 = 0, $rank1 = 0, $1 = 0, $ht13 = 0, $2 = 0, $ht25 = 0, $3 = 0, $n_cluster = 0, $4 = 0, $cmp52 = 0, $clust = 0, $maxrank10 = 0, $minrank24 = 0, $c_055 = 0, $ht1_054 = 0, $ht2_053 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $maxrank = 0, $7 = 0, $8 = 0, $cmp12 = 0, $ht115 = 0, $9 = 0, $add = 0, $cmp16 = 0, $ht1_0_add = 0, $ht1_1 = 0, $minrank = 0, $10 = 0, $11 = 0, $cmp26 = 0, $ht230 = 0, $12 = 0, $add31 = 0, $cmp32 = 0, $ht2_0_add31 = 0, $ht2_1 = 0, $inc = 0, $13 = 0, $cmp = 0, $ht1_0_lcssa = 0, $ht2_0_lcssa = 0, $14 = 0, $cmp47 = 0, $label = 0, $15 = 0, $tobool = 0, $y = 0, $16 = 0.0, $y56 = 0, $17 = 0.0, $cmp57 = 0, $_ = 0.0, $conv71 = 0, $maxrank73 = 0, $18 = 0, $conv74 = 0, $minrank76 = 0, $19 = 0, $conv77 = 0, $v = 0, $20 = 0, $21 = 0, $y81 = 0, $22 = 0.0, $v83 = 0, $23 = 0, $24 = 0, $y87 = 0, $25 = 0.0, $sub = 0.0, $conv88 = 0, $sum = 0, $add90_neg = 0, $sub91 = 0, $cmp92 = 0, $tobool95 = 0, $26 = 0, $cmp101 = 0, $minrank105 = 0, $27 = 0, $idxprom = 0, $ht2107 = 0, $28 = 0, $29 = 0, $cmp110 = 0, $_51 = 0, $maxrank129 = 0, $30 = 0, $idxprom130 = 0, $ht1132 = 0, $31 = 0, $32 = 0, $cmp135 = 0, $cond147 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $rank1 = $0 + 224 | 0;
    $1 = HEAP32[$rank1 >> 2] | 0;
    $ht13 = $g + 160 | 0;
    $2 = HEAP32[$ht13 >> 2] | 0;
    $ht25 = $g + 164 | 0;
    $3 = HEAP32[$ht25 >> 2] | 0;
    $n_cluster = $g + 212 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp52 = ($4 | 0) < 1;
    if ($cmp52) {
      $ht2_0_lcssa = $3;
      $ht1_0_lcssa = $2;
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $maxrank10 = $g + 250 | 0;
    $minrank24 = $g + 248 | 0;
    $ht2_053 = $3;
    $ht1_054 = $2;
    $c_055 = 1;
    label = 4;
    break;
   case 4:
    $5 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $5 + ($c_055 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    _adjustRanks($6, $equal);
    $maxrank = $6 + 250 | 0;
    $7 = HEAP16[$maxrank >> 1] | 0;
    $8 = HEAP16[$maxrank10 >> 1] | 0;
    $cmp12 = $7 << 16 >> 16 == $8 << 16 >> 16;
    if ($cmp12) {
      label = 5;
      break;
    } else {
      $ht1_1 = $ht1_054;
      label = 6;
      break;
    }
   case 5:
    $ht115 = $6 + 160 | 0;
    $9 = HEAP32[$ht115 >> 2] | 0;
    $add = $9 + 8 | 0;
    $cmp16 = ($ht1_054 | 0) > ($add | 0);
    $ht1_0_add = $cmp16 ? $ht1_054 : $add;
    $ht1_1 = $ht1_0_add;
    label = 6;
    break;
   case 6:
    $minrank = $6 + 248 | 0;
    $10 = HEAP16[$minrank >> 1] | 0;
    $11 = HEAP16[$minrank24 >> 1] | 0;
    $cmp26 = $10 << 16 >> 16 == $11 << 16 >> 16;
    if ($cmp26) {
      label = 7;
      break;
    } else {
      $ht2_1 = $ht2_053;
      label = 8;
      break;
    }
   case 7:
    $ht230 = $6 + 164 | 0;
    $12 = HEAP32[$ht230 >> 2] | 0;
    $add31 = $12 + 8 | 0;
    $cmp32 = ($ht2_053 | 0) > ($add31 | 0);
    $ht2_0_add31 = $cmp32 ? $ht2_053 : $add31;
    $ht2_1 = $ht2_0_add31;
    label = 8;
    break;
   case 8:
    $inc = $c_055 + 1 | 0;
    $13 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($13 | 0);
    if ($cmp) {
      $ht2_0_lcssa = $ht2_1;
      $ht1_0_lcssa = $ht1_1;
      label = 9;
      break;
    } else {
      $ht2_053 = $ht2_1;
      $ht1_054 = $ht1_1;
      $c_055 = $inc;
      label = 4;
      break;
    }
   case 9:
    HEAP32[$ht13 >> 2] = $ht1_0_lcssa;
    HEAP32[$ht25 >> 2] = $ht2_0_lcssa;
    $14 = HEAP32[$root >> 2] | 0;
    $cmp47 = ($14 | 0) == ($g | 0);
    if ($cmp47) {
      label = 15;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $label = $g + 52 | 0;
    $15 = HEAP32[$label >> 2] | 0;
    $tobool = ($15 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $y = $g + 144 | 0;
    $16 = +HEAPF64[$y >> 3];
    $y56 = $g + 112 | 0;
    $17 = +HEAPF64[$y56 >> 3];
    $cmp57 = $16 > $17;
    $_ = $cmp57 ? $16 : $17;
    $conv71 = ~~$_;
    $maxrank73 = $g + 250 | 0;
    $18 = HEAP16[$maxrank73 >> 1] | 0;
    $conv74 = $18 << 16 >> 16;
    $minrank76 = $g + 248 | 0;
    $19 = HEAP16[$minrank76 >> 1] | 0;
    $conv77 = $19 << 16 >> 16;
    $v = $1 + ($conv77 * 44 & -1) + 4 | 0;
    $20 = HEAP32[$v >> 2] | 0;
    $21 = HEAP32[$20 >> 2] | 0;
    $y81 = $21 + 40 | 0;
    $22 = +HEAPF64[$y81 >> 3];
    $v83 = $1 + ($conv74 * 44 & -1) + 4 | 0;
    $23 = HEAP32[$v83 >> 2] | 0;
    $24 = HEAP32[$23 >> 2] | 0;
    $y87 = $24 + 40 | 0;
    $25 = +HEAPF64[$y87 >> 3];
    $sub = $22 - $25;
    $conv88 = ~~$sub;
    $sum = $ht1_0_lcssa + $ht2_0_lcssa | 0;
    $add90_neg = $conv71 - $sum | 0;
    $sub91 = $add90_neg - $conv88 | 0;
    $cmp92 = ($sub91 | 0) > 0;
    if ($cmp92) {
      label = 12;
      break;
    } else {
      label = 15;
      break;
    }
   case 12:
    $tobool95 = ($equal | 0) == 0;
    if ($tobool95) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _adjustEqual($g, $sub91);
    label = 15;
    break;
   case 14:
    _adjustSimple($g, $sub91);
    label = 15;
    break;
   case 15:
    $26 = HEAP32[$root >> 2] | 0;
    $cmp101 = ($26 | 0) == ($g | 0);
    if ($cmp101) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $minrank105 = $g + 248 | 0;
    $27 = HEAP16[$minrank105 >> 1] | 0;
    $idxprom = $27 << 16 >> 16;
    $ht2107 = $1 + ($idxprom * 44 & -1) + 20 | 0;
    $28 = HEAP32[$ht2107 >> 2] | 0;
    $29 = HEAP32[$ht25 >> 2] | 0;
    $cmp110 = ($28 | 0) > ($29 | 0);
    $_51 = $cmp110 ? $28 : $29;
    HEAP32[$ht2107 >> 2] = $_51;
    $maxrank129 = $g + 250 | 0;
    $30 = HEAP16[$maxrank129 >> 1] | 0;
    $idxprom130 = $30 << 16 >> 16;
    $ht1132 = $1 + ($idxprom130 * 44 & -1) + 16 | 0;
    $31 = HEAP32[$ht1132 >> 2] | 0;
    $32 = HEAP32[$ht13 >> 2] | 0;
    $cmp135 = ($31 | 0) > ($32 | 0);
    $cond147 = $cmp135 ? $31 : $32;
    HEAP32[$ht1132 >> 2] = $cond147;
    label = 17;
    break;
   case 17:
    return;
  }
}
function _allocate_aux_edges($g) {
  $g = $g | 0;
  var $nlist = 0, $n_016 = 0, $tobool17 = 0, $n_018 = 0, $save_in = 0, $in = 0, $0 = 0, $1 = 0, $ld$0$0 = 0, $2$0 = 0, $ld$1$1 = 0, $2$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $save_out = 0, $out = 0, $3 = 0, $4 = 0, $ld$4$0 = 0, $5$0 = 0, $ld$5$1 = 0, $5$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $list = 0, $6 = 0, $i_0 = 0, $arrayidx = 0, $7 = 0, $tobool8 = 0, $inc = 0, $list13 = 0, $8 = 0, $j_0 = 0, $arrayidx14 = 0, $9 = 0, $tobool15 = 0, $inc18 = 0, $add = 0, $size = 0, $add23 = 0, $mul = 0, $call = 0, $10 = 0, $size30 = 0, $call31 = 0, $11 = 0, $next = 0, $n_0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_016 = HEAP32[$nlist >> 2] | 0;
    $tobool17 = ($n_016 | 0) == 0;
    if ($tobool17) {
      label = 8;
      break;
    } else {
      $n_018 = $n_016;
      label = 3;
      break;
    }
   case 3:
    $save_in = $n_018 + 248 | 0;
    $in = $n_018 + 176 | 0;
    $0 = $in;
    $1 = $save_in;
    $ld$0$0 = $0 | 0;
    $2$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $0 + 4 | 0;
    $2$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $1 | 0;
    HEAP32[$st$2$0 >> 2] = $2$0;
    $st$3$1 = $1 + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $2$1;
    $save_out = $n_018 + 256 | 0;
    $out = $n_018 + 184 | 0;
    $3 = $out;
    $4 = $save_out;
    $ld$4$0 = $3 | 0;
    $5$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $3 + 4 | 0;
    $5$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $4 | 0;
    HEAP32[$st$6$0 >> 2] = $5$0;
    $st$7$1 = $4 + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $5$1;
    $list = $out | 0;
    $6 = HEAP32[$list >> 2] | 0;
    $i_0 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx = $6 + ($i_0 << 2) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $tobool8 = ($7 | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool8) {
      label = 5;
      break;
    } else {
      $i_0 = $inc;
      label = 4;
      break;
    }
   case 5:
    $list13 = $in | 0;
    $8 = HEAP32[$list13 >> 2] | 0;
    $j_0 = 0;
    label = 6;
    break;
   case 6:
    $arrayidx14 = $8 + ($j_0 << 2) | 0;
    $9 = HEAP32[$arrayidx14 >> 2] | 0;
    $tobool15 = ($9 | 0) == 0;
    $inc18 = $j_0 + 1 | 0;
    if ($tobool15) {
      label = 7;
      break;
    } else {
      $j_0 = $inc18;
      label = 6;
      break;
    }
   case 7:
    $add = $j_0 + $i_0 | 0;
    $size = $n_018 + 180 | 0;
    HEAP32[$size >> 2] = 0;
    $add23 = $add << 2;
    $mul = $add23 + 16 | 0;
    $call = _zmalloc($mul) | 0;
    $10 = $call;
    HEAP32[$list13 >> 2] = $10;
    $size30 = $n_018 + 188 | 0;
    HEAP32[$size30 >> 2] = 0;
    $call31 = _zmalloc(16) | 0;
    $11 = $call31;
    HEAP32[$list >> 2] = $11;
    $next = $n_018 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      $n_018 = $n_0;
      label = 3;
      break;
    }
   case 8:
    return;
  }
}
function _make_edge_pairs($g) {
  $g = $g | 0;
  var $nlist = 0, $n_026 = 0, $tobool27 = 0, $n_028 = 0, $list = 0, $0 = 0, $tobool2 = 0, $1 = 0, $2 = 0, $tobool724 = 0, $3 = 0, $i_025 = 0, $call = 0, $node_type = 0, $x = 0, $4 = 0.0, $x13 = 0, $5 = 0.0, $sub = 0.0, $conv = 0, $cmp = 0, $sub16 = 0, $m1_0 = 0, $m0_0 = 0, $tail = 0, $6 = 0, $add = 0, $conv17 = 0.0, $weight = 0, $7 = 0.0, $conv19 = 0, $call20 = 0, $head = 0, $8 = 0, $add21 = 0, $conv22 = 0.0, $9 = 0.0, $conv25 = 0, $call26 = 0, $10 = 0, $rank = 0, $11 = 0, $sub29 = 0, $12 = 0, $rank33 = 0, $13 = 0, $sub34 = 0, $cmp36 = 0, $sub29_sub34 = 0, $sub42 = 0, $rank49 = 0, $inc = 0, $14 = 0, $arrayidx = 0, $15 = 0, $tobool7 = 0, $next = 0, $n_0 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $g + 220 | 0;
    $n_026 = HEAP32[$nlist >> 2] | 0;
    $tobool27 = ($n_026 | 0) == 0;
    if ($tobool27) {
      label = 7;
      break;
    } else {
      $n_028 = $n_026;
      label = 3;
      break;
    }
   case 3:
    $list = $n_028 + 256 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $tobool724 = ($2 | 0) == 0;
    if ($tobool724) {
      label = 6;
      break;
    } else {
      $i_025 = 0;
      $3 = $2;
      label = 5;
      break;
    }
   case 5:
    $call = _virtual_node($g) | 0;
    $node_type = $call + 162 | 0;
    HEAP8[$node_type] = 2;
    $x = $3 + 72 | 0;
    $4 = +HEAPF64[$x >> 3];
    $x13 = $3 + 32 | 0;
    $5 = +HEAPF64[$x13 >> 3];
    $sub = $4 - $5;
    $conv = ~~$sub;
    $cmp = ($conv | 0) > 0;
    $sub16 = -$conv | 0;
    $m1_0 = $cmp ? 0 : $sub16;
    $m0_0 = $cmp ? $conv : 0;
    $tail = $3 + 16 | 0;
    $6 = HEAP32[$tail >> 2] | 0;
    $add = $m0_0 + 1 | 0;
    $conv17 = +($add | 0);
    $weight = $3 + 172 | 0;
    $7 = +HEAPF32[$weight >> 2];
    $conv19 = ~~$7;
    $call20 = _make_aux_edge($call, $6, $conv17, $conv19) | 0;
    $head = $3 + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $add21 = $m1_0 + 1 | 0;
    $conv22 = +($add21 | 0);
    $9 = +HEAPF32[$weight >> 2];
    $conv25 = ~~$9;
    $call26 = _make_aux_edge($call, $8, $conv22, $conv25) | 0;
    $10 = HEAP32[$tail >> 2] | 0;
    $rank = $10 + 236 | 0;
    $11 = HEAP32[$rank >> 2] | 0;
    $sub29 = $11 - $m0_0 | 0;
    $12 = HEAP32[$head >> 2] | 0;
    $rank33 = $12 + 236 | 0;
    $13 = HEAP32[$rank33 >> 2] | 0;
    $sub34 = $13 - $m1_0 | 0;
    $cmp36 = ($sub29 | 0) < ($sub34 | 0);
    $sub29_sub34 = $cmp36 ? $sub29 : $sub34;
    $sub42 = $sub29_sub34 - 1 | 0;
    $rank49 = $call + 236 | 0;
    HEAP32[$rank49 >> 2] = $sub42;
    $inc = $i_025 + 1 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $arrayidx = $14 + ($inc << 2) | 0;
    $15 = HEAP32[$arrayidx >> 2] | 0;
    $tobool7 = ($15 | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      $i_025 = $inc;
      $3 = $15;
      label = 5;
      break;
    }
   case 6:
    $next = $n_028 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $n_028 = $n_0;
      label = 3;
      break;
    }
   case 7:
    return;
  }
}
function _pos_clusters($g) {
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($0 | 0) > 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _contain_clustnodes($g);
    _keepout_othernodes($g);
    _contain_subclust($g);
    _separate_subclust($g);
    label = 4;
    break;
   case 4:
    return;
  }
}
function _compress_graph($g) {
  $g = $g | 0;
  var $drawing = 0, $0 = 0, $ratio_kind = 0, $1 = 0, $cmp = 0, $p_sroa_0_0__idx = 0, $p_sroa_0_0_copyload = 0.0, $p_sroa_1_8__idx3 = 0, $p_sroa_1_8_copyload = 0.0, $mul = 0.0, $cmp4 = 0, $rankdir = 0, $2 = 0, $and8 = 0, $cmp9 = 0, $p_sroa_0_0_copyload_p_sroa_1_8_copyload = 0.0, $cmp14 = 0, $cond = 0.0, $ln = 0, $3 = 0, $rn = 0, $4 = 0, $call = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $drawing = $g + 48 | 0;
    $0 = HEAP32[$drawing >> 2] | 0;
    $ratio_kind = $0 + 84 | 0;
    $1 = HEAP32[$ratio_kind >> 2] | 0;
    $cmp = ($1 | 0) == 3;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $p_sroa_0_0__idx = $0 + 64 | 0;
    $p_sroa_0_0_copyload = +HEAPF64[$p_sroa_0_0__idx >> 3];
    $p_sroa_1_8__idx3 = $0 + 72 | 0;
    $p_sroa_1_8_copyload = +HEAPF64[$p_sroa_1_8__idx3 >> 3];
    $mul = $p_sroa_0_0_copyload * $p_sroa_1_8_copyload;
    $cmp4 = $mul > 1.0;
    if ($cmp4) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    _contain_nodes($g);
    $rankdir = $g + 156 | 0;
    $2 = HEAP32[$rankdir >> 2] | 0;
    $and8 = $2 & 1;
    $cmp9 = ($and8 | 0) == 0;
    $p_sroa_0_0_copyload_p_sroa_1_8_copyload = $cmp9 ? $p_sroa_0_0_copyload : $p_sroa_1_8_copyload;
    $cmp14 = $p_sroa_0_0_copyload_p_sroa_1_8_copyload < 65535.0;
    $cond = $cmp14 ? $p_sroa_0_0_copyload_p_sroa_1_8_copyload : 65535.0;
    $ln = $g + 268 | 0;
    $3 = HEAP32[$ln >> 2] | 0;
    $rn = $g + 272 | 0;
    $4 = HEAP32[$rn >> 2] | 0;
    $call = _make_aux_edge($3, $4, $cond, 1e3) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _contain_nodes($g) {
  $g = $g | 0;
  var $ln1 = 0, $0 = 0, $rn3 = 0, $1 = 0, $minrank = 0, $2 = 0, $maxrank = 0, $3 = 0, $cmp23 = 0, $conv = 0, $rank = 0, $name = 0, $x = 0, $x39 = 0, $r_024 = 0, $4 = 0, $n = 0, $5 = 0, $cmp9 = 0, $v14 = 0, $6 = 0, $7 = 0, $cmp16 = 0, $8 = 0, $call = 0, $lw = 0, $9 = 0.0, $add = 0.0, $10 = 0.0, $add23 = 0.0, $call24 = 0, $11 = 0, $n28 = 0, $12 = 0, $sub = 0, $v32 = 0, $13 = 0, $arrayidx33 = 0, $14 = 0, $rw = 0, $15 = 0.0, $add35 = 0.0, $16 = 0.0, $add40 = 0.0, $call41 = 0, $inc = 0, $17 = 0, $conv6 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _make_lrvn($g);
    $ln1 = $g + 268 | 0;
    $0 = HEAP32[$ln1 >> 2] | 0;
    $rn3 = $g + 272 | 0;
    $1 = HEAP32[$rn3 >> 2] | 0;
    $minrank = $g + 248 | 0;
    $2 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $3 = HEAP16[$maxrank >> 1] | 0;
    $cmp23 = $2 << 16 >> 16 > $3 << 16 >> 16;
    if ($cmp23) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $2 << 16 >> 16;
    $rank = $g + 224 | 0;
    $name = $g + 12 | 0;
    $x = $g + 136 | 0;
    $x39 = $g + 104 | 0;
    $r_024 = $conv;
    label = 4;
    break;
   case 4:
    $4 = HEAP32[$rank >> 2] | 0;
    $n = $4 + ($r_024 * 44 & -1) | 0;
    $5 = HEAP32[$n >> 2] | 0;
    $cmp9 = ($5 | 0) == 0;
    if ($cmp9) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $v14 = $4 + ($r_024 * 44 & -1) + 4 | 0;
    $6 = HEAP32[$v14 >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $cmp16 = ($7 | 0) == 0;
    if ($cmp16) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $8 = HEAP32[$name >> 2] | 0;
    $call = _agerr(1, 104488, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $8, HEAP32[tempInt + 8 >> 2] = $r_024, tempInt) | 0) | 0;
    label = 8;
    break;
   case 7:
    $lw = $7 + 104 | 0;
    $9 = +HEAPF64[$lw >> 3];
    $add = $9 + 8.0;
    $10 = +HEAPF64[$x >> 3];
    $add23 = $add + $10;
    $call24 = _make_aux_edge($0, $7, $add23, 0) | 0;
    $11 = HEAP32[$rank >> 2] | 0;
    $n28 = $11 + ($r_024 * 44 & -1) | 0;
    $12 = HEAP32[$n28 >> 2] | 0;
    $sub = $12 - 1 | 0;
    $v32 = $11 + ($r_024 * 44 & -1) + 4 | 0;
    $13 = HEAP32[$v32 >> 2] | 0;
    $arrayidx33 = $13 + ($sub << 2) | 0;
    $14 = HEAP32[$arrayidx33 >> 2] | 0;
    $rw = $14 + 112 | 0;
    $15 = +HEAPF64[$rw >> 3];
    $add35 = $15 + 8.0;
    $16 = +HEAPF64[$x39 >> 3];
    $add40 = $add35 + $16;
    $call41 = _make_aux_edge($14, $1, $add40, 0) | 0;
    label = 8;
    break;
   case 8:
    $inc = $r_024 + 1 | 0;
    $17 = HEAP16[$maxrank >> 1] | 0;
    $conv6 = $17 << 16 >> 16;
    $cmp = ($inc | 0) > ($conv6 | 0);
    if ($cmp) {
      label = 9;
      break;
    } else {
      $r_024 = $inc;
      label = 4;
      break;
    }
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _make_lrvn($g) {
  $g = $g | 0;
  var $ln1 = 0, $0 = 0, $tobool = 0, $root = 0, $1 = 0, $call = 0, $node_type = 0, $2 = 0, $call4 = 0, $node_type6 = 0, $label = 0, $3 = 0, $tobool8 = 0, $4 = 0, $cmp = 0, $rankdir = 0, $5 = 0, $and13 = 0, $tobool14 = 0, $x = 0, $6 = 0.0, $x20 = 0, $7 = 0.0, $cmp21 = 0, $_ = 0.0, $conv = 0, $conv30 = 0.0, $call31 = 0, $rn36 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ln1 = $g + 268 | 0;
    $0 = HEAP32[$ln1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $root = $g + 32 | 0;
    $1 = HEAP32[$root >> 2] | 0;
    $call = _virtual_node($1) | 0;
    $node_type = $call + 162 | 0;
    HEAP8[$node_type] = 2;
    $2 = HEAP32[$root >> 2] | 0;
    $call4 = _virtual_node($2) | 0;
    $node_type6 = $call4 + 162 | 0;
    HEAP8[$node_type6] = 2;
    $label = $g + 52 | 0;
    $3 = HEAP32[$label >> 2] | 0;
    $tobool8 = ($3 | 0) == 0;
    if ($tobool8) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = HEAP32[$root >> 2] | 0;
    $cmp = ($4 | 0) == ($g | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $rankdir = $4 + 156 | 0;
    $5 = HEAP32[$rankdir >> 2] | 0;
    $and13 = $5 & 1;
    $tobool14 = ($and13 | 0) == 0;
    if ($tobool14) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $x = $g + 88 | 0;
    $6 = +HEAPF64[$x >> 3];
    $x20 = $g + 120 | 0;
    $7 = +HEAPF64[$x20 >> 3];
    $cmp21 = $6 > $7;
    $_ = $cmp21 ? $6 : $7;
    $conv = ~~$_;
    $conv30 = +($conv | 0);
    $call31 = _make_aux_edge($call, $call4, $conv30, 0) | 0;
    label = 7;
    break;
   case 7:
    HEAP32[$ln1 >> 2] = $call;
    $rn36 = $g + 272 | 0;
    HEAP32[$rn36 >> 2] = $call4;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _contain_clustnodes($g) {
  $g = $g | 0;
  var $root = 0, $0 = 0, $cmp = 0, $ln = 0, $1 = 0, $rn = 0, $2 = 0, $call = 0, $tobool = 0, $weight = 0, $3 = 0.0, $add = 0.0, $call8 = 0, $n_cluster = 0, $4 = 0, $cmp1111 = 0, $clust = 0, $c_012 = 0, $5 = 0, $arrayidx = 0, $6 = 0, $inc = 0, $7 = 0, $cmp11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $root = $g + 32 | 0;
    $0 = HEAP32[$root >> 2] | 0;
    $cmp = ($0 | 0) == ($g | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _contain_nodes($g);
    $ln = $g + 268 | 0;
    $1 = HEAP32[$ln >> 2] | 0;
    $rn = $g + 272 | 0;
    $2 = HEAP32[$rn >> 2] | 0;
    $call = _find_fast_edge($1, $2) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $weight = $call + 172 | 0;
    $3 = +HEAPF32[$weight >> 2];
    $add = $3 + 128.0;
    HEAPF32[$weight >> 2] = $add;
    label = 6;
    break;
   case 5:
    $call8 = _make_aux_edge($1, $2, 1.0, 128) | 0;
    label = 6;
    break;
   case 6:
    $n_cluster = $g + 212 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp1111 = ($4 | 0) < 1;
    if ($cmp1111) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $clust = $g + 216 | 0;
    $c_012 = 1;
    label = 8;
    break;
   case 8:
    $5 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $5 + ($c_012 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    _contain_clustnodes($6);
    $inc = $c_012 + 1 | 0;
    $7 = HEAP32[$n_cluster >> 2] | 0;
    $cmp11 = ($inc | 0) > ($7 | 0);
    if ($cmp11) {
      label = 9;
      break;
    } else {
      $c_012 = $inc;
      label = 8;
      break;
    }
   case 9:
    return;
  }
}
function _keepout_othernodes($g) {
  $g = $g | 0;
  var $minrank = 0, $0 = 0, $maxrank = 0, $1 = 0, $cmp41 = 0, $conv = 0, $rank = 0, $root = 0, $ln = 0, $root44 = 0, $rn = 0, $n_cluster = 0, $2 = 0, $cmp7937 = 0, $clust = 0, $r_042 = 0, $3 = 0, $n = 0, $4 = 0, $cmp6 = 0, $v11 = 0, $5 = 0, $6 = 0, $cmp13 = 0, $order = 0, $7 = 0, $i_0_in = 0, $i_0 = 0, $cmp19 = 0, $8 = 0, $rank23 = 0, $9 = 0, $v25 = 0, $10 = 0, $arrayidx26 = 0, $11 = 0, $node_type = 0, $12 = 0, $cmp29 = 0, $call = 0, $tobool = 0, $13 = 0, $rw = 0, $14 = 0.0, $add = 0.0, $call34 = 0, $15 = 0, $16 = 0, $n41 = 0, $17 = 0, $add42 = 0, $i_1 = 0, $18 = 0, $rank46 = 0, $19 = 0, $n48 = 0, $20 = 0, $cmp49 = 0, $v56 = 0, $21 = 0, $arrayidx57 = 0, $22 = 0, $node_type59 = 0, $23 = 0, $cmp61 = 0, $call64 = 0, $tobool65 = 0, $inc = 0, $24 = 0, $lw = 0, $25 = 0.0, $add69 = 0.0, $call70 = 0, $inc75 = 0, $26 = 0, $conv3 = 0, $cmp = 0, $c_038 = 0, $27 = 0, $arrayidx83 = 0, $28 = 0, $inc85 = 0, $29 = 0, $cmp79 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    $0 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $cmp41 = $0 << 16 >> 16 > $1 << 16 >> 16;
    if ($cmp41) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $0 << 16 >> 16;
    $rank = $g + 224 | 0;
    $root = $g + 32 | 0;
    $ln = $g + 268 | 0;
    $root44 = $g + 32 | 0;
    $rn = $g + 272 | 0;
    $r_042 = $conv;
    label = 6;
    break;
   case 4:
    $n_cluster = $g + 212 | 0;
    $2 = HEAP32[$n_cluster >> 2] | 0;
    $cmp7937 = ($2 | 0) < 1;
    if ($cmp7937) {
      label = 20;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $clust = $g + 216 | 0;
    $c_038 = 1;
    label = 19;
    break;
   case 6:
    $3 = HEAP32[$rank >> 2] | 0;
    $n = $3 + ($r_042 * 44 & -1) | 0;
    $4 = HEAP32[$n >> 2] | 0;
    $cmp6 = ($4 | 0) == 0;
    if ($cmp6) {
      label = 18;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $v11 = $3 + ($r_042 * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v11 >> 2] | 0;
    $6 = HEAP32[$5 >> 2] | 0;
    $cmp13 = ($6 | 0) == 0;
    if ($cmp13) {
      label = 18;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $order = $6 + 240 | 0;
    $7 = HEAP32[$order >> 2] | 0;
    $i_0_in = $7;
    label = 9;
    break;
   case 9:
    $i_0 = $i_0_in - 1 | 0;
    $cmp19 = ($i_0_in | 0) > 0;
    if ($cmp19) {
      label = 10;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    $8 = HEAP32[$root >> 2] | 0;
    $rank23 = $8 + 224 | 0;
    $9 = HEAP32[$rank23 >> 2] | 0;
    $v25 = $9 + ($r_042 * 44 & -1) + 4 | 0;
    $10 = HEAP32[$v25 >> 2] | 0;
    $arrayidx26 = $10 + ($i_0 << 2) | 0;
    $11 = HEAP32[$arrayidx26 >> 2] | 0;
    $node_type = $11 + 162 | 0;
    $12 = HEAP8[$node_type] | 0;
    $cmp29 = $12 << 24 >> 24 == 0;
    if ($cmp29) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $call = _vnode_not_related_to($g, $11) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $i_0_in = $i_0;
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $13 = HEAP32[$ln >> 2] | 0;
    $rw = $11 + 112 | 0;
    $14 = +HEAPF64[$rw >> 3];
    $add = $14 + 8.0;
    $call34 = _make_aux_edge($11, $13, $add, 0) | 0;
    label = 13;
    break;
   case 13:
    $15 = HEAP32[$order >> 2] | 0;
    $16 = HEAP32[$rank >> 2] | 0;
    $n41 = $16 + ($r_042 * 44 & -1) | 0;
    $17 = HEAP32[$n41 >> 2] | 0;
    $add42 = $17 + $15 | 0;
    $i_1 = $add42;
    label = 14;
    break;
   case 14:
    $18 = HEAP32[$root44 >> 2] | 0;
    $rank46 = $18 + 224 | 0;
    $19 = HEAP32[$rank46 >> 2] | 0;
    $n48 = $19 + ($r_042 * 44 & -1) | 0;
    $20 = HEAP32[$n48 >> 2] | 0;
    $cmp49 = ($i_1 | 0) < ($20 | 0);
    if ($cmp49) {
      label = 15;
      break;
    } else {
      label = 18;
      break;
    }
   case 15:
    $v56 = $19 + ($r_042 * 44 & -1) + 4 | 0;
    $21 = HEAP32[$v56 >> 2] | 0;
    $arrayidx57 = $21 + ($i_1 << 2) | 0;
    $22 = HEAP32[$arrayidx57 >> 2] | 0;
    $node_type59 = $22 + 162 | 0;
    $23 = HEAP8[$node_type59] | 0;
    $cmp61 = $23 << 24 >> 24 == 0;
    if ($cmp61) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call64 = _vnode_not_related_to($g, $22) | 0;
    $tobool65 = ($call64 | 0) == 0;
    $inc = $i_1 + 1 | 0;
    if ($tobool65) {
      $i_1 = $inc;
      label = 14;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $24 = HEAP32[$rn >> 2] | 0;
    $lw = $22 + 104 | 0;
    $25 = +HEAPF64[$lw >> 3];
    $add69 = $25 + 8.0;
    $call70 = _make_aux_edge($24, $22, $add69, 0) | 0;
    label = 18;
    break;
   case 18:
    $inc75 = $r_042 + 1 | 0;
    $26 = HEAP16[$maxrank >> 1] | 0;
    $conv3 = $26 << 16 >> 16;
    $cmp = ($inc75 | 0) > ($conv3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $r_042 = $inc75;
      label = 6;
      break;
    }
   case 19:
    $27 = HEAP32[$clust >> 2] | 0;
    $arrayidx83 = $27 + ($c_038 << 2) | 0;
    $28 = HEAP32[$arrayidx83 >> 2] | 0;
    _keepout_othernodes($28);
    $inc85 = $c_038 + 1 | 0;
    $29 = HEAP32[$n_cluster >> 2] | 0;
    $cmp79 = ($inc85 | 0) > ($29 | 0);
    if ($cmp79) {
      label = 20;
      break;
    } else {
      $c_038 = $inc85;
      label = 19;
      break;
    }
   case 20:
    return;
  }
}
function _contain_subclust($g) {
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp12 = 0, $clust = 0, $ln = 0, $x = 0, $rn9 = 0, $x13 = 0, $c_013 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $3 = 0, $ln4 = 0, $4 = 0, $5 = 0.0, $add = 0.0, $call = 0, $rn = 0, $6 = 0, $7 = 0, $8 = 0.0, $add14 = 0.0, $call15 = 0, $inc = 0, $9 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _make_lrvn($g);
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp12 = ($0 | 0) < 1;
    if ($cmp12) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $ln = $g + 268 | 0;
    $x = $g + 136 | 0;
    $rn9 = $g + 272 | 0;
    $x13 = $g + 104 | 0;
    $c_013 = 1;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($c_013 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _make_lrvn($2);
    $3 = HEAP32[$ln >> 2] | 0;
    $ln4 = $2 + 268 | 0;
    $4 = HEAP32[$ln4 >> 2] | 0;
    $5 = +HEAPF64[$x >> 3];
    $add = $5 + 8.0;
    $call = _make_aux_edge($3, $4, $add, 0) | 0;
    $rn = $2 + 272 | 0;
    $6 = HEAP32[$rn >> 2] | 0;
    $7 = HEAP32[$rn9 >> 2] | 0;
    $8 = +HEAPF64[$x13 >> 3];
    $add14 = $8 + 8.0;
    $call15 = _make_aux_edge($6, $7, $add14, 0) | 0;
    _contain_subclust($2);
    $inc = $c_013 + 1 | 0;
    $9 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($9 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_013 = $inc;
      label = 4;
      break;
    }
   case 5:
    return;
  }
}
function _separate_subclust($g) {
  $g = $g | 0;
  var $n_cluster = 0, $0 = 0, $cmp32 = 0, $clust = 0, $cmp530 = 0, $clust13 = 0, $i_033 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $inc = 0, $3 = 0, $cmp = 0, $i_131 = 0, $add = 0, $4 = 0, $cmp1027 = 0, $5 = 0, $arrayidx1428 = 0, $6 = 0, $7 = 0, $8 = 0, $j_029 = 0, $arrayidx17 = 0, $9 = 0, $minrank = 0, $10 = 0, $minrank20 = 0, $11 = 0, $cmp22 = 0, $_ = 0, $_26 = 0, $maxrank = 0, $12 = 0, $minrank27 = 0, $13 = 0, $conv28 = 0, $cmp29 = 0, $rank = 0, $14 = 0, $v = 0, $15 = 0, $16 = 0, $order = 0, $17 = 0, $rank43 = 0, $18 = 0, $v45 = 0, $19 = 0, $20 = 0, $order48 = 0, $21 = 0, $cmp49 = 0, $___26 = 0, $_26__ = 0, $rn = 0, $22 = 0, $ln = 0, $23 = 0, $call = 0, $inc56 = 0, $24 = 0, $cmp10 = 0, $25 = 0, $arrayidx14 = 0, $26 = 0, $_lcssa = 0, $27 = 0, $cmp5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $cmp32 = ($0 | 0) < 1;
    if ($cmp32) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $i_033 = 1;
    label = 6;
    break;
   case 4:
    $cmp530 = ($3 | 0) < 1;
    if ($cmp530) {
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $clust13 = $g + 216 | 0;
    $i_131 = 1;
    label = 7;
    break;
   case 6:
    $1 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $1 + ($i_033 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    _make_lrvn($2);
    $inc = $i_033 + 1 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      $i_033 = $inc;
      label = 6;
      break;
    }
   case 7:
    $add = $i_131 + 1 | 0;
    $4 = HEAP32[$n_cluster >> 2] | 0;
    $cmp1027 = ($add | 0) > ($4 | 0);
    $5 = HEAP32[$clust13 >> 2] | 0;
    $arrayidx1428 = $5 + ($i_131 << 2) | 0;
    $6 = HEAP32[$arrayidx1428 >> 2] | 0;
    if ($cmp1027) {
      $_lcssa = $6;
      label = 11;
      break;
    } else {
      $j_029 = $add;
      $8 = $5;
      $7 = $6;
      label = 8;
      break;
    }
   case 8:
    $arrayidx17 = $8 + ($j_029 << 2) | 0;
    $9 = HEAP32[$arrayidx17 >> 2] | 0;
    $minrank = $7 + 248 | 0;
    $10 = HEAP16[$minrank >> 1] | 0;
    $minrank20 = $9 + 248 | 0;
    $11 = HEAP16[$minrank20 >> 1] | 0;
    $cmp22 = $10 << 16 >> 16 > $11 << 16 >> 16;
    $_ = $cmp22 ? $9 : $7;
    $_26 = $cmp22 ? $7 : $9;
    $maxrank = $_ + 250 | 0;
    $12 = HEAP16[$maxrank >> 1] | 0;
    $minrank27 = $_26 + 248 | 0;
    $13 = HEAP16[$minrank27 >> 1] | 0;
    $conv28 = $13 << 16 >> 16;
    $cmp29 = $12 << 16 >> 16 < $13 << 16 >> 16;
    if ($cmp29) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $rank = $_ + 224 | 0;
    $14 = HEAP32[$rank >> 2] | 0;
    $v = $14 + ($conv28 * 44 & -1) + 4 | 0;
    $15 = HEAP32[$v >> 2] | 0;
    $16 = HEAP32[$15 >> 2] | 0;
    $order = $16 + 240 | 0;
    $17 = HEAP32[$order >> 2] | 0;
    $rank43 = $_26 + 224 | 0;
    $18 = HEAP32[$rank43 >> 2] | 0;
    $v45 = $18 + ($conv28 * 44 & -1) + 4 | 0;
    $19 = HEAP32[$v45 >> 2] | 0;
    $20 = HEAP32[$19 >> 2] | 0;
    $order48 = $20 + 240 | 0;
    $21 = HEAP32[$order48 >> 2] | 0;
    $cmp49 = ($17 | 0) < ($21 | 0);
    $___26 = $cmp49 ? $_ : $_26;
    $_26__ = $cmp49 ? $_26 : $_;
    $rn = $___26 + 272 | 0;
    $22 = HEAP32[$rn >> 2] | 0;
    $ln = $_26__ + 268 | 0;
    $23 = HEAP32[$ln >> 2] | 0;
    $call = _make_aux_edge($22, $23, 8.0, 0) | 0;
    label = 10;
    break;
   case 10:
    $inc56 = $j_029 + 1 | 0;
    $24 = HEAP32[$n_cluster >> 2] | 0;
    $cmp10 = ($inc56 | 0) > ($24 | 0);
    $25 = HEAP32[$clust13 >> 2] | 0;
    $arrayidx14 = $25 + ($i_131 << 2) | 0;
    $26 = HEAP32[$arrayidx14 >> 2] | 0;
    if ($cmp10) {
      $_lcssa = $26;
      label = 11;
      break;
    } else {
      $j_029 = $inc56;
      $8 = $25;
      $7 = $26;
      label = 8;
      break;
    }
   case 11:
    _separate_subclust($_lcssa);
    $27 = HEAP32[$n_cluster >> 2] | 0;
    $cmp5 = ($add | 0) > ($27 | 0);
    if ($cmp5) {
      label = 12;
      break;
    } else {
      $i_131 = $add;
      label = 7;
      break;
    }
   case 12:
    return;
  }
}
function _make_LR_constraints($g) {
  $g = $g | 0;
  var $sep = 0, $rank2 = 0, $0 = 0, $has_labels = 0, $1 = 0, $and = 0, $tobool = 0, $nodesep5 = 0, $2 = 0, $arrayidx = 0, $arrayidx6 = 0, $_ = 0, $minrank = 0, $3 = 0, $maxrank = 0, $4 = 0, $cmp106 = 0, $conv12 = 0, $i_0107 = 0, $v17 = 0, $5 = 0, $6 = 0, $rank20 = 0, $n = 0, $7 = 0, $cmp25102 = 0, $and21 = 0, $arrayidx22 = 0, $8 = 0, $conv63 = 0.0, $9 = 0, $cmp25 = 0, $last_0104 = 0.0, $j_0103 = 0, $10 = 0, $arrayidx30 = 0, $11 = 0, $rw = 0, $12 = 0.0, $conv32 = 0, $mval = 0, $size = 0, $13 = 0, $cmp35 = 0, $list = 0, $14 = 0, $15 = 0, $tobool4297 = 0, $16 = 0, $17 = 0, $k_099 = 0, $sw_098 = 0, $tail = 0, $18 = 0, $head = 0, $19 = 0, $cmp44 = 0, $call = 0, $add = 0, $sw_1 = 0, $inc = 0, $arrayidx41 = 0, $20 = 0, $tobool42 = 0, $sw_0_lcssa = 0, $conv48 = 0.0, $21 = 0.0, $add51 = 0.0, $add53 = 0, $22 = 0, $arrayidx56 = 0, $23 = 0, $tobool57 = 0, $24 = 0.0, $lw = 0, $25 = 0.0, $add62 = 0.0, $add64 = 0.0, $call65 = 0, $add66 = 0.0, $conv67 = 0, $rank69 = 0, $conv70 = 0.0, $last_1 = 0.0, $alg = 0, $26 = 0, $tobool73 = 0, $list76 = 0, $27 = 0, $28 = 0, $arrayidx81 = 0, $29 = 0, $head82 = 0, $30 = 0, $order = 0, $31 = 0, $head84 = 0, $32 = 0, $order86 = 0, $33 = 0, $cmp87 = 0, $_92 = 0, $_93 = 0, $minlen = 0, $34 = 0, $35 = 0, $conv92 = 0, $36 = 0, $mul = 0, $div = 0, $conv95 = 0.0, $head96 = 0, $37 = 0, $tail100 = 0, $38 = 0, $call107 = 0, $cmp108 = 0, $lw102 = 0, $rw98 = 0, $39 = 0.0, $40 = 0.0, $add99 = 0.0, $add103 = 0.0, $conv104 = 0, $conv113 = 0.0, $weight = 0, $41 = 0, $42 = 0.0, $conv115 = 0, $call116 = 0, $tail119 = 0, $43 = 0, $head123 = 0, $44 = 0, $call130 = 0, $cmp131 = 0, $lw125 = 0, $rw121 = 0, $45 = 0.0, $46 = 0.0, $add122 = 0.0, $add126 = 0.0, $conv127 = 0, $conv136 = 0.0, $weight138 = 0, $47 = 0, $48 = 0.0, $conv139 = 0, $call140 = 0, $size145 = 0, $49 = 0, $cmp146100 = 0, $list151 = 0, $k_1101 = 0, $50 = 0, $arrayidx152 = 0, $51 = 0, $tail153 = 0, $52 = 0, $order155 = 0, $53 = 0, $head156 = 0, $54 = 0, $order158 = 0, $55 = 0, $cmp159 = 0, $_94 = 0, $_95 = 0, $rw169 = 0, $56 = 0.0, $lw171 = 0, $57 = 0.0, $add172 = 0.0, $minlen174 = 0, $58 = 0, $conv175 = 0, $59 = 0, $mul178 = 0, $conv179 = 0.0, $add180 = 0.0, $conv181 = 0, $call182 = 0, $tobool183 = 0, $conv185 = 0.0, $conv188 = 0.0, $add189 = 0.0, $dist = 0, $60 = 0.0, $cmp191 = 0, $add195 = 0.0, $sub = 0.0, $add195_sink = 0.0, $conv196 = 0, $conv200 = 0.0, $add201 = 0.0, $cmp202 = 0, $61 = 0, $conv209 = 0.0, $add210 = 0.0, $62 = 0.0, $cmp213 = 0, $add218 = 0.0, $sub223 = 0.0, $add218_sink = 0.0, $conv219 = 0, $conv227 = 0.0, $add228 = 0.0, $cond230 = 0.0, $conv231 = 0, $cmp232 = 0, $conv235 = 0.0, $minlen238 = 0, $63 = 0, $conv239 = 0, $cmp240 = 0, $extract_t91 = 0, $cond248_off0 = 0, $label = 0, $64 = 0, $tobool254 = 0, $conv256 = 0.0, $weight258 = 0, $65 = 0.0, $conv259 = 0, $call260 = 0, $inc264 = 0, $66 = 0, $cmp146 = 0, $inc270 = 0, $67 = 0, $conv14 = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sep = __stackBase__ | 0;
    $rank2 = $g + 224 | 0;
    $0 = HEAP32[$rank2 >> 2] | 0;
    $has_labels = $g + 153 | 0;
    $1 = HEAP8[$has_labels] | 0;
    $and = $1 & 1;
    $tobool = $and << 24 >> 24 == 0;
    $nodesep5 = $g + 260 | 0;
    $2 = HEAP32[$nodesep5 >> 2] | 0;
    $arrayidx = $sep | 0;
    HEAP32[$arrayidx >> 2] = $2;
    $arrayidx6 = $sep + 4 | 0;
    $_ = $tobool ? $2 : 5;
    HEAP32[$arrayidx6 >> 2] = $_;
    $minrank = $g + 248 | 0;
    $3 = HEAP16[$minrank >> 1] | 0;
    $maxrank = $g + 250 | 0;
    $4 = HEAP16[$maxrank >> 1] | 0;
    $cmp106 = $3 << 16 >> 16 > $4 << 16 >> 16;
    if ($cmp106) {
      label = 39;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv12 = $3 << 16 >> 16;
    $i_0107 = $conv12;
    label = 4;
    break;
   case 4:
    $v17 = $0 + ($i_0107 * 44 & -1) + 4 | 0;
    $5 = HEAP32[$v17 >> 2] | 0;
    $6 = HEAP32[$5 >> 2] | 0;
    $rank20 = $6 + 236 | 0;
    HEAP32[$rank20 >> 2] = 0;
    $n = $0 + ($i_0107 * 44 & -1) | 0;
    $7 = HEAP32[$n >> 2] | 0;
    $cmp25102 = ($7 | 0) > 0;
    if ($cmp25102) {
      label = 5;
      break;
    } else {
      label = 38;
      break;
    }
   case 5:
    $and21 = $i_0107 & 1;
    $arrayidx22 = $sep + ($and21 << 2) | 0;
    $8 = HEAP32[$arrayidx22 >> 2] | 0;
    $conv63 = +($8 | 0);
    $j_0103 = 0;
    $last_0104 = 0.0;
    label = 7;
    break;
   case 6:
    $9 = HEAP32[$n >> 2] | 0;
    $cmp25 = ($add53 | 0) < ($9 | 0);
    if ($cmp25) {
      $j_0103 = $add53;
      $last_0104 = $last_1;
      label = 7;
      break;
    } else {
      label = 38;
      break;
    }
   case 7:
    $10 = HEAP32[$v17 >> 2] | 0;
    $arrayidx30 = $10 + ($j_0103 << 2) | 0;
    $11 = HEAP32[$arrayidx30 >> 2] | 0;
    $rw = $11 + 112 | 0;
    $12 = +HEAPF64[$rw >> 3];
    $conv32 = ~~$12;
    $mval = $11 + 244 | 0;
    HEAP32[$mval >> 2] = $conv32;
    $size = $11 + 212 | 0;
    $13 = HEAP32[$size >> 2] | 0;
    $cmp35 = ($13 | 0) > 0;
    if ($cmp35) {
      label = 8;
      break;
    } else {
      label = 14;
      break;
    }
   case 8:
    $list = $11 + 208 | 0;
    $14 = HEAP32[$list >> 2] | 0;
    $15 = HEAP32[$14 >> 2] | 0;
    $tobool4297 = ($15 | 0) == 0;
    if ($tobool4297) {
      $sw_0_lcssa = 0;
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $16 = HEAP32[$list >> 2] | 0;
    $sw_098 = 0;
    $k_099 = 0;
    $17 = $15;
    label = 10;
    break;
   case 10:
    $tail = $17 + 16 | 0;
    $18 = HEAP32[$tail >> 2] | 0;
    $head = $17 + 12 | 0;
    $19 = HEAP32[$head >> 2] | 0;
    $cmp44 = ($18 | 0) == ($19 | 0);
    if ($cmp44) {
      label = 11;
      break;
    } else {
      $sw_1 = $sw_098;
      label = 12;
      break;
    }
   case 11:
    $call = _selfRightSpace($17) | 0;
    $add = $call + $sw_098 | 0;
    $sw_1 = $add;
    label = 12;
    break;
   case 12:
    $inc = $k_099 + 1 | 0;
    $arrayidx41 = $16 + ($inc << 2) | 0;
    $20 = HEAP32[$arrayidx41 >> 2] | 0;
    $tobool42 = ($20 | 0) == 0;
    if ($tobool42) {
      $sw_0_lcssa = $sw_1;
      label = 13;
      break;
    } else {
      $sw_098 = $sw_1;
      $k_099 = $inc;
      $17 = $20;
      label = 10;
      break;
    }
   case 13:
    $conv48 = +($sw_0_lcssa | 0);
    $21 = +HEAPF64[$rw >> 3];
    $add51 = $conv48 + $21;
    HEAPF64[$rw >> 3] = $add51;
    label = 14;
    break;
   case 14:
    $add53 = $j_0103 + 1 | 0;
    $22 = HEAP32[$v17 >> 2] | 0;
    $arrayidx56 = $22 + ($add53 << 2) | 0;
    $23 = HEAP32[$arrayidx56 >> 2] | 0;
    $tobool57 = ($23 | 0) == 0;
    if ($tobool57) {
      $last_1 = $last_0104;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $24 = +HEAPF64[$rw >> 3];
    $lw = $23 + 104 | 0;
    $25 = +HEAPF64[$lw >> 3];
    $add62 = $24 + $25;
    $add64 = $conv63 + $add62;
    $call65 = _make_aux_edge($11, $23, $add64, 0) | 0;
    $add66 = $last_0104 + $add64;
    $conv67 = ~~$add66;
    $rank69 = $23 + 236 | 0;
    HEAP32[$rank69 >> 2] = $conv67;
    $conv70 = +($conv67 | 0);
    $last_1 = $conv70;
    label = 16;
    break;
   case 16:
    $alg = $11 + 128 | 0;
    $26 = HEAP32[$alg >> 2] | 0;
    $tobool73 = ($26 | 0) == 0;
    if ($tobool73) {
      label = 21;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $list76 = $11 + 256 | 0;
    $27 = HEAP32[$list76 >> 2] | 0;
    $28 = HEAP32[$27 >> 2] | 0;
    $arrayidx81 = $27 + 4 | 0;
    $29 = HEAP32[$arrayidx81 >> 2] | 0;
    $head82 = $28 + 12 | 0;
    $30 = HEAP32[$head82 >> 2] | 0;
    $order = $30 + 240 | 0;
    $31 = HEAP32[$order >> 2] | 0;
    $head84 = $29 + 12 | 0;
    $32 = HEAP32[$head84 >> 2] | 0;
    $order86 = $32 + 240 | 0;
    $33 = HEAP32[$order86 >> 2] | 0;
    $cmp87 = ($31 | 0) > ($33 | 0);
    $_92 = $cmp87 ? $29 : $28;
    $_93 = $cmp87 ? $28 : $29;
    $minlen = $26 + 186 | 0;
    $34 = $minlen;
    $35 = HEAP16[$34 >> 1] | 0;
    $conv92 = $35 & 65535;
    $36 = HEAP32[$nodesep5 >> 2] | 0;
    $mul = Math_imul($conv92, $36);
    $div = ($mul | 0) / 2 & -1;
    $conv95 = +($div | 0);
    $head96 = $_92 + 12 | 0;
    $37 = HEAP32[$head96 >> 2] | 0;
    $tail100 = $_92 + 16 | 0;
    $38 = HEAP32[$tail100 >> 2] | 0;
    $call107 = _canreach($38, $37) | 0;
    $cmp108 = ($call107 | 0) == 0;
    if ($cmp108) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $lw102 = $38 + 104 | 0;
    $rw98 = $37 + 112 | 0;
    $39 = +HEAPF64[$lw102 >> 3];
    $40 = +HEAPF64[$rw98 >> 3];
    $add99 = $conv95 + $40;
    $add103 = $39 + $add99;
    $conv104 = ~~$add103;
    $conv113 = +($conv104 | 0);
    $weight = $26 + 172 | 0;
    $41 = $weight;
    $42 = +HEAPF32[$41 >> 2];
    $conv115 = ~~$42;
    $call116 = _make_aux_edge($37, $38, $conv113, $conv115) | 0;
    label = 19;
    break;
   case 19:
    $tail119 = $_93 + 16 | 0;
    $43 = HEAP32[$tail119 >> 2] | 0;
    $head123 = $_93 + 12 | 0;
    $44 = HEAP32[$head123 >> 2] | 0;
    $call130 = _canreach($44, $43) | 0;
    $cmp131 = ($call130 | 0) == 0;
    if ($cmp131) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $lw125 = $44 + 104 | 0;
    $rw121 = $43 + 112 | 0;
    $45 = +HEAPF64[$lw125 >> 3];
    $46 = +HEAPF64[$rw121 >> 3];
    $add122 = $conv95 + $46;
    $add126 = $45 + $add122;
    $conv127 = ~~$add126;
    $conv136 = +($conv127 | 0);
    $weight138 = $26 + 172 | 0;
    $47 = $weight138;
    $48 = +HEAPF32[$47 >> 2];
    $conv139 = ~~$48;
    $call140 = _make_aux_edge($43, $44, $conv136, $conv139) | 0;
    label = 21;
    break;
   case 21:
    $size145 = $11 + 196 | 0;
    $49 = HEAP32[$size145 >> 2] | 0;
    $cmp146100 = ($49 | 0) > 0;
    if ($cmp146100) {
      label = 22;
      break;
    } else {
      label = 6;
      break;
    }
   case 22:
    $list151 = $11 + 192 | 0;
    $k_1101 = 0;
    label = 23;
    break;
   case 23:
    $50 = HEAP32[$list151 >> 2] | 0;
    $arrayidx152 = $50 + ($k_1101 << 2) | 0;
    $51 = HEAP32[$arrayidx152 >> 2] | 0;
    $tail153 = $51 + 16 | 0;
    $52 = HEAP32[$tail153 >> 2] | 0;
    $order155 = $52 + 240 | 0;
    $53 = HEAP32[$order155 >> 2] | 0;
    $head156 = $51 + 12 | 0;
    $54 = HEAP32[$head156 >> 2] | 0;
    $order158 = $54 + 240 | 0;
    $55 = HEAP32[$order158 >> 2] | 0;
    $cmp159 = ($53 | 0) < ($55 | 0);
    $_94 = $cmp159 ? $52 : $54;
    $_95 = $cmp159 ? $54 : $52;
    $rw169 = $_94 + 112 | 0;
    $56 = +HEAPF64[$rw169 >> 3];
    $lw171 = $_95 + 104 | 0;
    $57 = +HEAPF64[$lw171 >> 3];
    $add172 = $56 + $57;
    $minlen174 = $51 + 186 | 0;
    $58 = HEAP16[$minlen174 >> 1] | 0;
    $conv175 = $58 & 65535;
    $59 = HEAP32[$nodesep5 >> 2] | 0;
    $mul178 = Math_imul($conv175, $59);
    $conv179 = +($mul178 | 0);
    $add180 = $add172 + $conv179;
    $conv181 = ~~$add180;
    $call182 = _find_fast_edge($_94, $_95) | 0;
    $tobool183 = ($call182 | 0) == 0;
    if ($tobool183) {
      label = 35;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $conv185 = +($conv181 | 0);
    $conv188 = +($59 | 0);
    $add189 = $add172 + $conv188;
    $dist = $51 + 152 | 0;
    $60 = +HEAPF64[$dist >> 3];
    $cmp191 = $60 < 0.0;
    if ($cmp191) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $add195 = $60 + .5;
    $add195_sink = $add195;
    label = 27;
    break;
   case 26:
    $sub = $60 + -.5;
    $add195_sink = $sub;
    label = 27;
    break;
   case 27:
    $conv196 = ~~$add195_sink;
    $conv200 = +($conv196 | 0);
    $add201 = $add189 + $conv200;
    $cmp202 = $conv185 > $add201;
    if ($cmp202) {
      $cond230 = $conv185;
      label = 32;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $61 = HEAP32[$nodesep5 >> 2] | 0;
    $conv209 = +($61 | 0);
    $add210 = $add172 + $conv209;
    $62 = +HEAPF64[$dist >> 3];
    $cmp213 = $62 < 0.0;
    if ($cmp213) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $add218 = $62 + .5;
    $add218_sink = $add218;
    label = 31;
    break;
   case 30:
    $sub223 = $62 + -.5;
    $add218_sink = $sub223;
    label = 31;
    break;
   case 31:
    $conv219 = ~~$add218_sink;
    $conv227 = +($conv219 | 0);
    $add228 = $add210 + $conv227;
    $cond230 = $add228;
    label = 32;
    break;
   case 32:
    $conv231 = ~~$cond230;
    $cmp232 = ($conv231 | 0) > 65535;
    if ($cmp232) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $conv235 = +($conv231 | 0);
    _largeMinlen($conv235);
   case 34:
    $minlen238 = $call182 + 186 | 0;
    $63 = HEAP16[$minlen238 >> 1] | 0;
    $conv239 = $63 & 65535;
    $cmp240 = ($conv239 | 0) > ($conv231 | 0);
    $extract_t91 = $conv231 & 65535;
    $cond248_off0 = $cmp240 ? $63 : $extract_t91;
    HEAP16[$minlen238 >> 1] = $cond248_off0;
    label = 37;
    break;
   case 35:
    $label = $51 + 112 | 0;
    $64 = HEAP32[$label >> 2] | 0;
    $tobool254 = ($64 | 0) == 0;
    if ($tobool254) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    $conv256 = +($conv181 | 0);
    $weight258 = $51 + 172 | 0;
    $65 = +HEAPF32[$weight258 >> 2];
    $conv259 = ~~$65;
    $call260 = _make_aux_edge($_94, $_95, $conv256, $conv259) | 0;
    label = 37;
    break;
   case 37:
    $inc264 = $k_1101 + 1 | 0;
    $66 = HEAP32[$size145 >> 2] | 0;
    $cmp146 = ($inc264 | 0) < ($66 | 0);
    if ($cmp146) {
      $k_1101 = $inc264;
      label = 23;
      break;
    } else {
      label = 6;
      break;
    }
   case 38:
    $inc270 = $i_0107 + 1 | 0;
    $67 = HEAP16[$maxrank >> 1] | 0;
    $conv14 = $67 << 16 >> 16;
    $cmp = ($inc270 | 0) > ($conv14 | 0);
    if ($cmp) {
      label = 39;
      break;
    } else {
      $i_0107 = $inc270;
      label = 4;
      break;
    }
   case 39:
    STACKTOP = __stackBase__;
    return;
  }
}
function _renewlist($L) {
  $L = $L | 0;
  var $size = 0, $0 = 0, $cmp5 = 0, $list = 0, $i_06 = 0, $1 = 0, $arrayidx = 0, $dec = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $L + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp5 = ($0 | 0) > -1;
    if ($cmp5) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $list = $L | 0;
    $i_06 = $0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_06 << 2) | 0;
    HEAP32[$arrayidx >> 2] = 0;
    $dec = $i_06 - 1 | 0;
    $cmp = ($i_06 | 0) > 0;
    if ($cmp) {
      $i_06 = $dec;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP32[$size >> 2] = 0;
    return;
  }
}
function _vnode_not_related_to($g, $v) {
  $g = $g | 0;
  $v = $v | 0;
  var $node_type = 0, $0 = 0, $cmp = 0, $list = 0, $1 = 0, $2 = 0, $e_0 = 0, $to_orig = 0, $3 = 0, $tobool = 0, $tail = 0, $4 = 0, $5 = 0, $6 = 0, $call = 0, $tobool6 = 0, $head = 0, $7 = 0, $8 = 0, $call9 = 0, $tobool10 = 0, $_ = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $node_type = $v + 162 | 0;
    $0 = HEAP8[$node_type] | 0;
    $cmp = $0 << 24 >> 24 == 1;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 3:
    $list = $v + 256 | 0;
    $1 = HEAP32[$list >> 2] | 0;
    $2 = HEAP32[$1 >> 2] | 0;
    $e_0 = $2;
    label = 4;
    break;
   case 4:
    $to_orig = $e_0 + 132 | 0;
    $3 = HEAP32[$to_orig >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $e_0 = $3;
      label = 4;
      break;
    }
   case 5:
    $tail = $e_0 + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $5 = $4 | 0;
    $6 = $g;
    $call = _agcontains($6, $5) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 6:
    $head = $e_0 + 12 | 0;
    $7 = HEAP32[$head >> 2] | 0;
    $8 = $7 | 0;
    $call9 = _agcontains($6, $8) | 0;
    $tobool10 = ($call9 | 0) == 0;
    $_ = $tobool10 & 1;
    $retval_0 = $_;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _canreach($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  return _go($u, $v) | 0;
}
function _go($u, $v) {
  $u = $u | 0;
  $v = $v | 0;
  var $cmp = 0, $list = 0, $0 = 0, $i_0 = 0, $arrayidx = 0, $1 = 0, $tobool = 0, $head = 0, $2 = 0, $call = 0, $tobool2 = 0, $inc = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($u | 0) == ($v | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $list = $u + 184 | 0;
    $0 = HEAP32[$list >> 2] | 0;
    $i_0 = 0;
    label = 4;
    break;
   case 4:
    $arrayidx = $0 + ($i_0 << 2) | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $head = $1 + 12 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $call = _go($2, $v) | 0;
    $tobool2 = ($call | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool2) {
      $i_0 = $inc;
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 6;
      break;
    }
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _dot_scan_ranks($g) {
  $g = $g | 0;
  var $minrank = 0, $maxrank = 0, $0 = 0, $call = 0, $tobool19 = 0, $n_022_in = 0, $leader_021 = 0, $n_022 = 0, $1 = 0, $conv = 0, $rank = 0, $2 = 0, $3 = 0, $cmp = 0, $conv8 = 0, $4 = 0, $conv13 = 0, $5 = 0, $cmp16 = 0, $conv21 = 0, $cmp25 = 0, $6 = 0, $rank31 = 0, $7 = 0, $cmp32 = 0, $n_0_leader_0 = 0, $leader_1 = 0, $call37 = 0, $tobool = 0, $leader_0_lcssa = 0, $leader39 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $minrank = $g + 248 | 0;
    HEAP16[$minrank >> 1] = 32767;
    $maxrank = $g + 250 | 0;
    HEAP16[$maxrank >> 1] = -1;
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool19 = ($call | 0) == 0;
    if ($tobool19) {
      $leader_0_lcssa = 0;
      label = 10;
      break;
    } else {
      $leader_021 = 0;
      $n_022_in = $call;
      label = 3;
      break;
    }
   case 3:
    $n_022 = $n_022_in;
    $1 = HEAP16[$maxrank >> 1] | 0;
    $conv = $1 << 16 >> 16;
    $rank = $n_022_in + 236 | 0;
    $2 = $rank;
    $3 = HEAP32[$2 >> 2] | 0;
    $cmp = ($conv | 0) < ($3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $conv8 = $3 & 65535;
    HEAP16[$maxrank >> 1] = $conv8;
    label = 5;
    break;
   case 5:
    $4 = HEAP16[$minrank >> 1] | 0;
    $conv13 = $4 << 16 >> 16;
    $5 = HEAP32[$2 >> 2] | 0;
    $cmp16 = ($conv13 | 0) > ($5 | 0);
    if ($cmp16) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $conv21 = $5 & 65535;
    HEAP16[$minrank >> 1] = $conv21;
    label = 7;
    break;
   case 7:
    $cmp25 = ($leader_021 | 0) == 0;
    if ($cmp25) {
      $leader_1 = $n_022;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $6 = HEAP32[$2 >> 2] | 0;
    $rank31 = $leader_021 + 236 | 0;
    $7 = HEAP32[$rank31 >> 2] | 0;
    $cmp32 = ($6 | 0) < ($7 | 0);
    $n_0_leader_0 = $cmp32 ? $n_022 : $leader_021;
    $leader_1 = $n_0_leader_0;
    label = 9;
    break;
   case 9:
    $call37 = _agnxtnode($0, $n_022_in) | 0;
    $tobool = ($call37 | 0) == 0;
    if ($tobool) {
      $leader_0_lcssa = $leader_1;
      label = 10;
      break;
    } else {
      $leader_021 = $leader_1;
      $n_022_in = $call37;
      label = 3;
      break;
    }
   case 10:
    $leader39 = $g + 276 | 0;
    HEAP32[$leader39 >> 2] = $leader_0_lcssa;
    return;
  }
}
function _rank1($g) {
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool = 0, $call1 = 0.0, $1 = 0, $call2 = 0, $conv = 0.0, $mul = 0.0, $conv3 = 0, $maxiter_0 = 0, $size = 0, $2 = 0, $cmp10 = 0, $list = 0, $nlist = 0, $n_cluster = 0, $3 = 0, $c_011 = 0, $4 = 0, $arrayidx = 0, $5 = 0, $6 = 0, $cmp9 = 0, $cond = 0, $call11 = 0, $inc = 0, $7 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g | 0;
    $call = _agget($0, 152368) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $maxiter_0 = 2147483647;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = +_atof($call);
    $1 = $g;
    $call2 = _agnnodes($1) | 0;
    $conv = +($call2 | 0);
    $mul = $call1 * $conv;
    $conv3 = ~~$mul;
    $maxiter_0 = $conv3;
    label = 4;
    break;
   case 4:
    $size = $g + 232 | 0;
    $2 = HEAP32[$size >> 2] | 0;
    $cmp10 = ($2 | 0) > 0;
    if ($cmp10) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $list = $g + 228 | 0;
    $nlist = $g + 220 | 0;
    $n_cluster = $g + 212 | 0;
    $3 = $g;
    $c_011 = 0;
    label = 6;
    break;
   case 6:
    $4 = HEAP32[$list >> 2] | 0;
    $arrayidx = $4 + ($c_011 << 2) | 0;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    HEAP32[$nlist >> 2] = $5;
    $6 = HEAP32[$n_cluster >> 2] | 0;
    $cmp9 = ($6 | 0) == 0;
    $cond = $cmp9 & 1;
    $call11 = _rank($3, $cond, $maxiter_0) | 0;
    $inc = $c_011 + 1 | 0;
    $7 = HEAP32[$size >> 2] | 0;
    $cmp = ($inc | 0) < ($7 | 0);
    if ($cmp) {
      $c_011 = $inc;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    return;
  }
}
function _dot_rank($g, $asp) {
  $g = $g | 0;
  $asp = $asp | 0;
  var $p = 0, $tmpcast = 0, $tmp = 0, $tmpcast21 = 0, $tobool = 0, $0 = 0, $ld$0$0 = 0, $1$0 = 0, $ld$1$1 = 0, $1$1 = 0, $st$2$0 = 0, $st$3$1 = 0, $size = 0, $2 = 0, $cmp = 0, $n_cluster = 0, $3 = 0, $cmp3 = 0, $badGraph = 0, $4 = 0, $ld$4$0 = 0, $5$0 = 0, $ld$5$1 = 0, $5$1 = 0, $st$6$0 = 0, $st$7$1 = 0, $asp_addr_0 = 0, $6 = 0, $call = 0, $tobool6 = 0, $tobool9 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = __stackBase__ | 0;
    $tmpcast = $p;
    $tmp = STACKTOP;
    STACKTOP = STACKTOP + 8 | 0;
    $tmpcast21 = $tmp;
    _edgelabel_ranks($g);
    $tobool = ($asp | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = $g;
    _init_UF_size($0);
    _initEdgeTypes($0);
    _collapse_sets($g, $g);
    _class1($0);
    _minmax_edges($tmpcast21, $g);
    $ld$0$0 = $tmp | 0;
    $1$0 = HEAP32[$ld$0$0 >> 2] | 0;
    $ld$1$1 = $tmp + 4 | 0;
    $1$1 = HEAP32[$ld$1$1 >> 2] | 0;
    $st$2$0 = $p | 0;
    HEAP32[$st$2$0 >> 2] = $1$0;
    $st$3$1 = $p + 4 | 0;
    HEAP32[$st$3$1 >> 2] = $1$1;
    _decompose($0, 0);
    $size = $g + 232 | 0;
    $2 = HEAP32[$size >> 2] | 0;
    $cmp = ($2 | 0) > 1;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $n_cluster = $g + 212 | 0;
    $3 = HEAP32[$n_cluster >> 2] | 0;
    $cmp3 = ($3 | 0) > 0;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $asp_addr_0 = $asp;
      label = 7;
      break;
    }
   case 5:
    $badGraph = $asp + 32 | 0;
    HEAP32[$badGraph >> 2] = 1;
    $asp_addr_0 = 0;
    label = 7;
    break;
   case 6:
    _collapse_sets($g, $g);
    $4 = $g;
    _class1($4);
    _minmax_edges($tmpcast21, $g);
    $ld$4$0 = $tmp | 0;
    $5$0 = HEAP32[$ld$4$0 >> 2] | 0;
    $ld$5$1 = $tmp + 4 | 0;
    $5$1 = HEAP32[$ld$5$1 >> 2] | 0;
    $st$6$0 = $p | 0;
    HEAP32[$st$6$0 >> 2] = $5$0;
    $st$7$1 = $p + 4 | 0;
    HEAP32[$st$7$1 >> 2] = $5$1;
    _decompose($4, 0);
    $asp_addr_0 = 0;
    label = 7;
    break;
   case 7:
    $6 = $g;
    _acyclic($6);
    $call = _minmax_edges2($g, $tmpcast) | 0;
    $tobool6 = ($call | 0) == 0;
    if ($tobool6) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _decompose($6, 0);
    label = 9;
    break;
   case 9:
    $tobool9 = ($asp_addr_0 | 0) == 0;
    if ($tobool9) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    _rank3($6, $asp_addr_0);
    label = 12;
    break;
   case 11:
    _rank1($g);
    label = 12;
    break;
   case 12:
    _expand_ranksets($g, $asp_addr_0);
    _cleanup1($g);
    STACKTOP = __stackBase__;
    return;
  }
}
function _edgelabel_ranks($g) {
  $g = $g | 0;
  var $has_labels = 0, $0 = 0, $and = 0, $tobool = 0, $1 = 0, $call = 0, $tobool112 = 0, $n_0_in13 = 0, $call2 = 0, $tobool410 = 0, $e_0_in11 = 0, $e_0 = 0, $minlen = 0, $2 = 0, $mul = 0, $call9 = 0, $tobool4 = 0, $call11 = 0, $tobool1 = 0, $ranksep = 0, $3 = 0, $add = 0, $div = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $has_labels = $g + 153 | 0;
    $0 = HEAP8[$has_labels] | 0;
    $and = $0 & 1;
    $tobool = $and << 24 >> 24 == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $g;
    $call = _agfstnode($1) | 0;
    $tobool112 = ($call | 0) == 0;
    if ($tobool112) {
      label = 7;
      break;
    } else {
      $n_0_in13 = $call;
      label = 4;
      break;
    }
   case 4:
    $call2 = _agfstout($1, $n_0_in13) | 0;
    $tobool410 = ($call2 | 0) == 0;
    if ($tobool410) {
      label = 6;
      break;
    } else {
      $e_0_in11 = $call2;
      label = 5;
      break;
    }
   case 5:
    $e_0 = $e_0_in11;
    $minlen = $e_0 + 186 | 0;
    $2 = HEAP16[$minlen >> 1] | 0;
    $mul = $2 << 1;
    HEAP16[$minlen >> 1] = $mul;
    $call9 = _agnxtout($1, $e_0_in11) | 0;
    $tobool4 = ($call9 | 0) == 0;
    if ($tobool4) {
      label = 6;
      break;
    } else {
      $e_0_in11 = $call9;
      label = 5;
      break;
    }
   case 6:
    $call11 = _agnxtnode($1, $n_0_in13) | 0;
    $tobool1 = ($call11 | 0) == 0;
    if ($tobool1) {
      label = 7;
      break;
    } else {
      $n_0_in13 = $call11;
      label = 4;
      break;
    }
   case 7:
    $ranksep = $g + 264 | 0;
    $3 = HEAP32[$ranksep >> 2] | 0;
    $add = $3 + 1 | 0;
    $div = ($add | 0) / 2 & -1;
    HEAP32[$ranksep >> 2] = $div;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _collapse_sets($rg, $g) {
  $rg = $rg | 0;
  $g = $g | 0;
  var $meta_node = 0, $0 = 0, $graph = 0, $1 = 0, $2 = 0, $3 = 0, $call = 0, $tobool10 = 0, $me_0_in11 = 0, $head = 0, $4 = 0, $5 = 0, $call2 = 0, $6 = 0, $call3 = 0, $tobool4 = 0, $cmp = 0, $7 = 0, $cmp5 = 0, $or_cond = 0, $call9 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meta_node = $g + 36 | 0;
    $0 = HEAP32[$meta_node >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $2 = $1;
    $3 = $0;
    $call = _agfstout($2, $3) | 0;
    $tobool10 = ($call | 0) == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      $me_0_in11 = $call;
      label = 3;
      break;
    }
   case 3:
    $head = $me_0_in11 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $5 = $4;
    $call2 = _agusergraph($5) | 0;
    $6 = $call2;
    $call3 = _rank_set_class($6) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $cmp = ($call3 | 0) == 7;
    $7 = HEAP32[42032] | 0;
    $cmp5 = ($7 | 0) == 100;
    $or_cond = $cmp & $cmp5;
    if ($or_cond) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _collapse_cluster($rg, $6);
    label = 8;
    break;
   case 6:
    _collapse_rankset($rg, $6, $call3);
    label = 8;
    break;
   case 7:
    _collapse_sets($rg, $6);
    label = 8;
    break;
   case 8:
    $call9 = _agnxtout($2, $me_0_in11) | 0;
    $tobool = ($call9 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $me_0_in11 = $call9;
      label = 3;
      break;
    }
   case 9:
    return;
  }
}
function _minmax_edges2($g, $slen) {
  $g = $g | 0;
  $slen = $slen | 0;
  var $maxset = 0, $0 = 0, $tobool = 0, $minset = 0, $1 = 0, $tobool2 = 0, $2 = 0, $call = 0, $tobool323 = 0, $y = 0, $3 = 0, $conv = 0, $minset27 = 0, $x = 0, $4 = 0, $conv38 = 0, $n_026_in = 0, $e_025 = 0, $n_026 = 0, $5 = 0, $call4 = 0, $6 = 0, $cmp = 0, $size = 0, $7 = 0, $8 = 0, $cmp7 = 0, $9 = 0, $tobool10 = 0, $cmp14 = 0, $or_cond = 0, $10 = 0, $call18 = 0, $11 = 0, $12 = 0, $e_1 = 0, $size22 = 0, $13 = 0, $14 = 0, $cmp23 = 0, $15 = 0, $tobool28 = 0, $cmp32 = 0, $or_cond21 = 0, $16 = 0, $call37 = 0, $17 = 0, $18 = 0, $e_2 = 0, $call42 = 0, $tobool3 = 0, $e_3 = 0, $cmp44 = 0, $conv45 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $slen;
  $slen = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  HEAP32[$slen >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$slen + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $maxset = $g + 240 | 0;
    $0 = HEAP32[$maxset >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $minset = $g + 236 | 0;
    $1 = HEAP32[$minset >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    if ($tobool2) {
      $e_3 = 0;
      label = 14;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = $g;
    $call = _agfstnode($2) | 0;
    $tobool323 = ($call | 0) == 0;
    if ($tobool323) {
      $e_3 = 0;
      label = 14;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $y = $slen + 4 | 0;
    $3 = HEAP32[$y >> 2] | 0;
    $conv = $3 & 65535;
    $minset27 = $g + 236 | 0;
    $x = $slen | 0;
    $4 = HEAP32[$x >> 2] | 0;
    $conv38 = $4 & 65535;
    $e_025 = 0;
    $n_026_in = $call;
    label = 6;
    break;
   case 6:
    $n_026 = $n_026_in;
    $5 = $n_026_in;
    $call4 = _UF_find($5) | 0;
    $6 = $call4;
    $cmp = ($n_026_in | 0) == ($6 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      $e_2 = $e_025;
      label = 13;
      break;
    }
   case 7:
    $size = $n_026_in + 188 | 0;
    $7 = $size;
    $8 = HEAP32[$7 >> 2] | 0;
    $cmp7 = ($8 | 0) == 0;
    if ($cmp7) {
      label = 8;
      break;
    } else {
      $e_1 = $e_025;
      label = 10;
      break;
    }
   case 8:
    $9 = HEAP32[$maxset >> 2] | 0;
    $tobool10 = ($9 | 0) == 0;
    $cmp14 = ($n_026 | 0) == ($9 | 0);
    $or_cond = $tobool10 | $cmp14;
    if ($or_cond) {
      $e_1 = $e_025;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $10 = $9;
    $call18 = _virtual_edge($5, $10, 0) | 0;
    $11 = $call18;
    $12 = $call18 + 186 | 0;
    HEAP16[$12 >> 1] = $conv;
    $e_1 = $11;
    label = 10;
    break;
   case 10:
    $size22 = $n_026_in + 180 | 0;
    $13 = $size22;
    $14 = HEAP32[$13 >> 2] | 0;
    $cmp23 = ($14 | 0) == 0;
    if ($cmp23) {
      label = 11;
      break;
    } else {
      $e_2 = $e_1;
      label = 13;
      break;
    }
   case 11:
    $15 = HEAP32[$minset27 >> 2] | 0;
    $tobool28 = ($15 | 0) == 0;
    $cmp32 = ($n_026 | 0) == ($15 | 0);
    $or_cond21 = $tobool28 | $cmp32;
    if ($or_cond21) {
      $e_2 = $e_1;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $16 = $15;
    $call37 = _virtual_edge($16, $5, 0) | 0;
    $17 = $call37;
    $18 = $call37 + 186 | 0;
    HEAP16[$18 >> 1] = $conv38;
    $e_2 = $17;
    label = 13;
    break;
   case 13:
    $call42 = _agnxtnode($2, $n_026_in) | 0;
    $tobool3 = ($call42 | 0) == 0;
    if ($tobool3) {
      $e_3 = $e_2;
      label = 14;
      break;
    } else {
      $e_025 = $e_2;
      $n_026_in = $call42;
      label = 6;
      break;
    }
   case 14:
    $cmp44 = ($e_3 | 0) != 0;
    $conv45 = $cmp44 & 1;
    STACKTOP = __stackBase__;
    return $conv45 | 0;
  }
  return 0;
}
function _expand_ranksets($g, $asp) {
  $g = $g | 0;
  $asp = $asp | 0;
  var $0 = 0, $call = 0, $tobool = 0, $minrank = 0, $maxrank = 0, $tobool4 = 0, $n_035_in = 0, $n_035 = 0, $1 = 0, $call3 = 0, $cmp = 0, $u5 = 0, $rank = 0, $2 = 0, $3 = 0, $cmp6 = 0, $4 = 0, $5 = 0, $u10 = 0, $rank11 = 0, $6 = 0, $7 = 0, $add = 0, $8 = 0, $conv = 0, $rank15 = 0, $9 = 0, $10 = 0, $cmp16 = 0, $conv21 = 0, $11 = 0, $conv27 = 0, $12 = 0, $cmp30 = 0, $conv35 = 0, $ranktype = 0, $13 = 0, $call50 = 0, $tobool2 = 0, $root = 0, $14 = 0, $cmp51 = 0, $15 = 0, $cmp54 = 0, $n_cluster = 0, $16 = 0, $cmp5829 = 0, $clust = 0, $c_030 = 0, $17 = 0, $arrayidx = 0, $18 = 0, $inc = 0, $19 = 0, $cmp58 = 0, $maxrank65 = 0, $minrank67 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 21;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $minrank = $g + 248 | 0;
    HEAP16[$minrank >> 1] = 32767;
    $maxrank = $g + 250 | 0;
    HEAP16[$maxrank >> 1] = -1;
    $tobool4 = ($asp | 0) == 0;
    $n_035_in = $call;
    label = 4;
    break;
   case 4:
    $n_035 = $n_035_in;
    $1 = $n_035_in;
    $call3 = _UF_find($1) | 0;
    $cmp = ($call3 | 0) == ($1 | 0);
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $u5 = $n_035_in + 24 | 0;
    $rank = $u5 + 212 | 0;
    $2 = $rank;
    $3 = HEAP32[$2 >> 2] | 0;
    $cmp6 = ($3 | 0) == 0;
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $4 = $call3 + 236 | 0;
    $5 = HEAP32[$4 >> 2] | 0;
    $u10 = $n_035_in + 24 | 0;
    $rank11 = $u10 + 212 | 0;
    $6 = $rank11;
    $7 = HEAP32[$6 >> 2] | 0;
    $add = $7 + $5 | 0;
    HEAP32[$6 >> 2] = $add;
    label = 8;
    break;
   case 8:
    $8 = HEAP16[$maxrank >> 1] | 0;
    $conv = $8 << 16 >> 16;
    $rank15 = $n_035_in + 236 | 0;
    $9 = $rank15;
    $10 = HEAP32[$9 >> 2] | 0;
    $cmp16 = ($conv | 0) < ($10 | 0);
    if ($cmp16) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $conv21 = $10 & 65535;
    HEAP16[$maxrank >> 1] = $conv21;
    label = 10;
    break;
   case 10:
    $11 = HEAP16[$minrank >> 1] | 0;
    $conv27 = $11 << 16 >> 16;
    $12 = HEAP32[$9 >> 2] | 0;
    $cmp30 = ($conv27 | 0) > ($12 | 0);
    if ($cmp30) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $conv35 = $12 & 65535;
    HEAP16[$minrank >> 1] = $conv35;
    label = 12;
    break;
   case 12:
    $ranktype = $n_035 + 165 | 0;
    $13 = HEAP8[$ranktype] | 0;
    if (($13 << 24 >> 24 | 0) == 0 | ($13 << 24 >> 24 | 0) == 6) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _UF_singleton($1);
    label = 14;
    break;
   case 14:
    $call50 = _agnxtnode($0, $n_035_in) | 0;
    $tobool2 = ($call50 | 0) == 0;
    if ($tobool2) {
      label = 15;
      break;
    } else {
      $n_035_in = $call50;
      label = 4;
      break;
    }
   case 15:
    $root = $g + 32 | 0;
    $14 = HEAP32[$root >> 2] | 0;
    $cmp51 = ($14 | 0) == ($g | 0);
    if ($cmp51) {
      label = 16;
      break;
    } else {
      label = 22;
      break;
    }
   case 16:
    $15 = HEAP32[42032] | 0;
    $cmp54 = ($15 | 0) == 100;
    if ($cmp54) {
      label = 17;
      break;
    } else {
      label = 20;
      break;
    }
   case 17:
    $n_cluster = $g + 212 | 0;
    $16 = HEAP32[$n_cluster >> 2] | 0;
    $cmp5829 = ($16 | 0) < 1;
    if ($cmp5829) {
      label = 22;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $clust = $g + 216 | 0;
    $c_030 = 1;
    label = 19;
    break;
   case 19:
    $17 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $17 + ($c_030 << 2) | 0;
    $18 = HEAP32[$arrayidx >> 2] | 0;
    _set_minmax($18);
    $inc = $c_030 + 1 | 0;
    $19 = HEAP32[$n_cluster >> 2] | 0;
    $cmp58 = ($inc | 0) > ($19 | 0);
    if ($cmp58) {
      label = 22;
      break;
    } else {
      $c_030 = $inc;
      label = 19;
      break;
    }
   case 20:
    _find_clusters($g);
    label = 22;
    break;
   case 21:
    $maxrank65 = $g + 250 | 0;
    HEAP16[$maxrank65 >> 1] = 0;
    $minrank67 = $g + 248 | 0;
    HEAP16[$minrank67 >> 1] = 0;
    label = 22;
    break;
   case 22:
    return;
  }
}
function _cleanup1($g) {
  $g = $g | 0;
  var $comp = 0, $size = 0, $0 = 0, $cmp48 = 0, $list = 0, $nlist = 0, $c_049 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $tobool46 = 0, $n_047 = 0, $in = 0, $out = 0, $mark = 0, $next = 0, $3 = 0, $tobool = 0, $inc = 0, $4 = 0, $cmp = 0, $5 = 0, $call = 0, $tobool1543 = 0, $n_1_in44 = 0, $call17 = 0, $tobool1938 = 0, $e_042_in = 0, $to_virt = 0, $6 = 0, $7 = 0, $tobool22 = 0, $e_042 = 0, $to_orig = 0, $8 = 0, $cmp24 = 0, $call25 = 0, $tobool2735 = 0, $e1_0_in36 = 0, $cmp29 = 0, $u31 = 0, $to_virt32 = 0, $9 = 0, $10 = 0, $tobool33 = 0, $cmp35 = 0, $or_cond = 0, $call41 = 0, $tobool27 = 0, $11 = 0, $call47 = 0, $tobool19 = 0, $call50 = 0, $tobool15 = 0, $list54 = 0, $12 = 0, $13 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $comp = $g + 228 | 0;
    $size = $g + 232 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp48 = ($0 | 0) > 0;
    if ($cmp48) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $list = $comp | 0;
    $nlist = $g + 220 | 0;
    $c_049 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($c_049 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    HEAP32[$nlist >> 2] = $2;
    $tobool46 = ($2 | 0) == 0;
    if ($tobool46) {
      label = 6;
      break;
    } else {
      $n_047 = $2;
      label = 5;
      break;
    }
   case 5:
    $in = $n_047 + 176 | 0;
    _renewlist($in);
    $out = $n_047 + 184 | 0;
    _renewlist($out);
    $mark = $n_047 + 163 | 0;
    HEAP8[$mark] = 0;
    $next = $n_047 + 168 | 0;
    $3 = HEAP32[$next >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $n_047 = $3;
      label = 5;
      break;
    }
   case 6:
    $inc = $c_049 + 1 | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $cmp = ($inc | 0) < ($4 | 0);
    if ($cmp) {
      $c_049 = $inc;
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $5 = $g;
    $call = _agfstnode($5) | 0;
    $tobool1543 = ($call | 0) == 0;
    if ($tobool1543) {
      label = 19;
      break;
    } else {
      $n_1_in44 = $call;
      label = 8;
      break;
    }
   case 8:
    $call17 = _agfstout($5, $n_1_in44) | 0;
    $tobool1938 = ($call17 | 0) == 0;
    if ($tobool1938) {
      label = 18;
      break;
    } else {
      $e_042_in = $call17;
      label = 9;
      break;
    }
   case 9:
    $to_virt = $e_042_in + 188 | 0;
    $6 = $to_virt;
    $7 = HEAP32[$6 >> 2] | 0;
    $tobool22 = ($7 | 0) == 0;
    if ($tobool22) {
      label = 17;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $e_042 = $e_042_in;
    $to_orig = $7 + 132 | 0;
    $8 = HEAP32[$to_orig >> 2] | 0;
    $cmp24 = ($e_042 | 0) == ($8 | 0);
    if ($cmp24) {
      label = 11;
      break;
    } else {
      label = 17;
      break;
    }
   case 11:
    $call25 = _agfstout($5, $n_1_in44) | 0;
    $tobool2735 = ($call25 | 0) == 0;
    if ($tobool2735) {
      label = 16;
      break;
    } else {
      $e1_0_in36 = $call25;
      label = 12;
      break;
    }
   case 12:
    $cmp29 = ($e_042_in | 0) == ($e1_0_in36 | 0);
    if ($cmp29) {
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $u31 = $e1_0_in36 + 24 | 0;
    $to_virt32 = $u31 + 164 | 0;
    $9 = $to_virt32;
    $10 = HEAP32[$9 >> 2] | 0;
    $tobool33 = ($10 | 0) != 0;
    $cmp35 = ($7 | 0) == ($10 | 0);
    $or_cond = $tobool33 & $cmp35;
    if ($or_cond) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$9 >> 2] = 0;
    label = 15;
    break;
   case 15:
    $call41 = _agnxtout($5, $e1_0_in36) | 0;
    $tobool27 = ($call41 | 0) == 0;
    if ($tobool27) {
      label = 16;
      break;
    } else {
      $e1_0_in36 = $call41;
      label = 12;
      break;
    }
   case 16:
    $11 = $7 | 0;
    _free($11);
    label = 17;
    break;
   case 17:
    HEAP32[$to_virt >> 2] = 0;
    $call47 = _agnxtout($5, $e_042_in) | 0;
    $tobool19 = ($call47 | 0) == 0;
    if ($tobool19) {
      label = 18;
      break;
    } else {
      $e_042_in = $call47;
      label = 9;
      break;
    }
   case 18:
    $call50 = _agnxtnode($5, $n_1_in44) | 0;
    $tobool15 = ($call50 | 0) == 0;
    if ($tobool15) {
      label = 19;
      break;
    } else {
      $n_1_in44 = $call50;
      label = 8;
      break;
    }
   case 19:
    $list54 = $comp | 0;
    $12 = HEAP32[$list54 >> 2] | 0;
    $13 = $12;
    _free($13);
    HEAP32[$list54 >> 2] = 0;
    HEAP32[$size >> 2] = 0;
    return;
  }
}
function _is_cluster($g) {
  $g = $g | 0;
  return (_strncmp(HEAP32[$g + 12 >> 2] | 0, 158576, 7) | 0) == 0 & 1 | 0;
}
function _set_minmax($g) {
  $g = $g | 0;
  var $leader = 0, $0 = 0, $rank = 0, $1 = 0, $minrank = 0, $2 = 0, $conv8 = 0, $add = 0, $conv3 = 0, $3 = 0, $rank7 = 0, $4 = 0, $maxrank = 0, $5 = 0, $conv99 = 0, $add10 = 0, $conv11 = 0, $n_cluster = 0, $6 = 0, $cmp10 = 0, $clust = 0, $c_011 = 0, $7 = 0, $arrayidx = 0, $8 = 0, $inc = 0, $9 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $leader = $g + 276 | 0;
    $0 = HEAP32[$leader >> 2] | 0;
    $rank = $0 + 236 | 0;
    $1 = HEAP32[$rank >> 2] | 0;
    $minrank = $g + 248 | 0;
    $2 = HEAP16[$minrank >> 1] | 0;
    $conv8 = $2 & 65535;
    $add = $conv8 + $1 | 0;
    $conv3 = $add & 65535;
    HEAP16[$minrank >> 1] = $conv3;
    $3 = HEAP32[$leader >> 2] | 0;
    $rank7 = $3 + 236 | 0;
    $4 = HEAP32[$rank7 >> 2] | 0;
    $maxrank = $g + 250 | 0;
    $5 = HEAP16[$maxrank >> 1] | 0;
    $conv99 = $5 & 65535;
    $add10 = $conv99 + $4 | 0;
    $conv11 = $add10 & 65535;
    HEAP16[$maxrank >> 1] = $conv11;
    $n_cluster = $g + 212 | 0;
    $6 = HEAP32[$n_cluster >> 2] | 0;
    $cmp10 = ($6 | 0) < 1;
    if ($cmp10) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $clust = $g + 216 | 0;
    $c_011 = 1;
    label = 4;
    break;
   case 4:
    $7 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $7 + ($c_011 << 2) | 0;
    $8 = HEAP32[$arrayidx >> 2] | 0;
    _set_minmax($8);
    $inc = $c_011 + 1 | 0;
    $9 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($inc | 0) > ($9 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $c_011 = $inc;
      label = 4;
      break;
    }
   case 5:
    return;
  }
}
function _find_clusters($g) {
  $g = $g | 0;
  var $meta_node = 0, $0 = 0, $graph = 0, $1 = 0, $2 = 0, $3 = 0, $call = 0, $tobool7 = 0, $me_0_in8 = 0, $head = 0, $4 = 0, $5 = 0, $call2 = 0, $u = 0, $6 = 0, $set_type = 0, $7 = 0, $cmp = 0, $8 = 0, $call4 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $meta_node = $g + 36 | 0;
    $0 = HEAP32[$meta_node >> 2] | 0;
    $graph = $0 + 20 | 0;
    $1 = HEAP32[$graph >> 2] | 0;
    $2 = $1;
    $3 = $0;
    $call = _agfstout($2, $3) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      label = 6;
      break;
    } else {
      $me_0_in8 = $call;
      label = 3;
      break;
    }
   case 3:
    $head = $me_0_in8 + 12 | 0;
    $4 = HEAP32[$head >> 2] | 0;
    $5 = $4;
    $call2 = _agusergraph($5) | 0;
    $u = $call2 + 48 | 0;
    $6 = $u;
    $set_type = $6 + 238 | 0;
    $7 = HEAP8[$set_type] | 0;
    $cmp = $7 << 24 >> 24 == 7;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $8 = $call2;
    _collapse_cluster($g, $8);
    label = 5;
    break;
   case 5:
    $call4 = _agnxtout($2, $me_0_in8) | 0;
    $tobool = ($call4 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $me_0_in8 = $call4;
      label = 3;
      break;
    }
   case 6:
    return;
  }
}
function _collapse_cluster($g, $subg) {
  $g = $g | 0;
  $subg = $subg | 0;
  var $cluster_was_collapsed = 0, $0 = 0, $tobool = 0, $1 = 0, $call = 0, $cmp = 0, $2 = 0, $cmp6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cluster_was_collapsed = $subg + 254 | 0;
    $0 = HEAP8[$cluster_was_collapsed] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    HEAP8[$cluster_was_collapsed] = 1;
    _node_induce($g, $subg);
    $1 = $subg;
    $call = _agfstnode($1) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _make_new_cluster($g, $subg);
    $2 = HEAP32[42032] | 0;
    $cmp6 = ($2 | 0) == 100;
    if ($cmp6) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _dot_rank($subg, 0);
    _cluster_leader($subg);
    label = 7;
    break;
   case 6:
    _dot_scan_ranks($subg);
    label = 7;
    break;
   case 7:
    return;
  }
}
function _minmax_edges($agg_result, $g) {
  $agg_result = $agg_result | 0;
  $g = $g | 0;
  var $maxset = 0, $0 = 0, $cmp = 0, $minset = 0, $1 = 0, $cmp2 = 0, $slen_sroa_0_0__idx1 = 0, $slen_sroa_1_4__idx4 = 0, $minset4 = 0, $2 = 0, $cmp5 = 0, $3 = 0, $call = 0, $4 = 0, $5 = 0, $cmp14 = 0, $6 = 0, $call18 = 0, $7 = 0, $tobool = 0, $8 = 0, $9 = 0, $cmp28 = 0, $conv29 = 0, $list = 0, $10 = 0, $11 = 0, $12 = 0, $tobool3225 = 0, $13 = 0, $head = 0, $14 = 0, $15 = 0, $call34 = 0, $16 = 0, $cmp35 = 0, $17 = 0, $18 = 0, $19 = 0, $tobool32 = 0, $slen_sroa_1_0 = 0, $20 = 0, $tobool40 = 0, $ranktype45 = 0, $21 = 0, $cmp47 = 0, $conv48 = 0, $list52 = 0, $22 = 0, $23 = 0, $tobool5424 = 0, $24 = 0, $tail = 0, $25 = 0, $26 = 0, $call57 = 0, $27 = 0, $cmp58 = 0, $28 = 0, $29 = 0, $30 = 0, $tobool54 = 0, $slen_sroa_0_0 = 0, $slen_sroa_0_0__idx = 0, $slen_sroa_1_4__idx3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $maxset = $g + 240 | 0;
    $0 = HEAP32[$maxset >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $minset = $g + 236 | 0;
    $1 = HEAP32[$minset >> 2] | 0;
    $cmp2 = ($1 | 0) == 0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $slen_sroa_0_0__idx1 = $agg_result | 0;
    HEAP32[$slen_sroa_0_0__idx1 >> 2] = 0;
    $slen_sroa_1_4__idx4 = $agg_result + 4 | 0;
    HEAP32[$slen_sroa_1_4__idx4 >> 2] = 0;
    label = 19;
    break;
   case 5:
    $minset4 = $g + 236 | 0;
    $2 = HEAP32[$minset4 >> 2] | 0;
    $cmp5 = ($2 | 0) == 0;
    if ($cmp5) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = $2;
    $call = _UF_find($3) | 0;
    $4 = $call;
    HEAP32[$minset4 >> 2] = $4;
    label = 7;
    break;
   case 7:
    $5 = HEAP32[$maxset >> 2] | 0;
    $cmp14 = ($5 | 0) == 0;
    if ($cmp14) {
      $slen_sroa_1_0 = 0;
      label = 13;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $6 = $5;
    $call18 = _UF_find($6) | 0;
    $7 = $call18;
    HEAP32[$maxset >> 2] = $7;
    $tobool = ($call18 | 0) == 0;
    if ($tobool) {
      $slen_sroa_1_0 = 0;
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $8 = $call18 + 165 | 0;
    $9 = HEAP8[$8] | 0;
    $cmp28 = $9 << 24 >> 24 == 5;
    $conv29 = $cmp28 & 1;
    $list = $call18 + 184 | 0;
    $10 = $list;
    $11 = HEAP32[$10 >> 2] | 0;
    $12 = HEAP32[$11 >> 2] | 0;
    $tobool3225 = ($12 | 0) == 0;
    if ($tobool3225) {
      $slen_sroa_1_0 = $conv29;
      label = 13;
      break;
    } else {
      $13 = $12;
      label = 10;
      break;
    }
   case 10:
    $head = $13 + 12 | 0;
    $14 = HEAP32[$head >> 2] | 0;
    $15 = $14;
    $call34 = _UF_find($15) | 0;
    $16 = $call34;
    $cmp35 = ($14 | 0) == ($16 | 0);
    if ($cmp35) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    ___assert_func(129880, 363, 163984, 108280);
   case 12:
    $17 = $13;
    _reverse_edge($17);
    $18 = HEAP32[$10 >> 2] | 0;
    $19 = HEAP32[$18 >> 2] | 0;
    $tobool32 = ($19 | 0) == 0;
    if ($tobool32) {
      $slen_sroa_1_0 = $conv29;
      label = 13;
      break;
    } else {
      $13 = $19;
      label = 10;
      break;
    }
   case 13:
    $20 = HEAP32[$minset4 >> 2] | 0;
    $tobool40 = ($20 | 0) == 0;
    if ($tobool40) {
      $slen_sroa_0_0 = 0;
      label = 18;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $ranktype45 = $20 + 165 | 0;
    $21 = HEAP8[$ranktype45] | 0;
    $cmp47 = $21 << 24 >> 24 == 3;
    $conv48 = $cmp47 & 1;
    $list52 = $20 + 176 | 0;
    $22 = HEAP32[$list52 >> 2] | 0;
    $23 = HEAP32[$22 >> 2] | 0;
    $tobool5424 = ($23 | 0) == 0;
    if ($tobool5424) {
      $slen_sroa_0_0 = $conv48;
      label = 18;
      break;
    } else {
      $24 = $23;
      label = 15;
      break;
    }
   case 15:
    $tail = $24 + 16 | 0;
    $25 = HEAP32[$tail >> 2] | 0;
    $26 = $25;
    $call57 = _UF_find($26) | 0;
    $27 = $call57;
    $cmp58 = ($25 | 0) == ($27 | 0);
    if ($cmp58) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    ___assert_func(129880, 370, 163984, 104400);
   case 17:
    $28 = $24;
    _reverse_edge($28);
    $29 = HEAP32[$list52 >> 2] | 0;
    $30 = HEAP32[$29 >> 2] | 0;
    $tobool54 = ($30 | 0) == 0;
    if ($tobool54) {
      $slen_sroa_0_0 = $conv48;
      label = 18;
      break;
    } else {
      $24 = $30;
      label = 15;
      break;
    }
   case 18:
    $slen_sroa_0_0__idx = $agg_result | 0;
    HEAP32[$slen_sroa_0_0__idx >> 2] = $slen_sroa_0_0;
    $slen_sroa_1_4__idx3 = $agg_result + 4 | 0;
    HEAP32[$slen_sroa_1_4__idx3 >> 2] = $slen_sroa_1_0;
    label = 19;
    break;
   case 19:
    return;
  }
}
function _node_induce($par, $g) {
  $par = $par | 0;
  $g = $g | 0;
  var $0 = 0, $call = 0, $tobool30 = 0, $1 = 0, $clust = 0, $n_cluster = 0, $2 = 0, $n_0_in31 = 0, $call1 = 0, $u = 0, $3 = 0, $4 = 0, $tobool2 = 0, $5 = 0, $i_0 = 0, $6 = 0, $cmp = 0, $7 = 0, $arrayidx = 0, $8 = 0, $9 = 0, $call7 = 0, $tobool8 = 0, $inc = 0, $10 = 0, $cmp13 = 0, $11 = 0, $clust17 = 0, $12 = 0, $tobool = 0, $call20 = 0, $tobool2227 = 0, $root = 0, $13 = 0, $n_1_in28 = 0, $14 = 0, $15 = 0, $call24 = 0, $tobool2625 = 0, $e_0_in26 = 0, $head = 0, $16 = 0, $17 = 0, $call28 = 0, $tobool29 = 0, $18 = 0, $19 = 0, $20 = 0, $call34 = 0, $tobool26 = 0, $call37 = 0, $tobool22 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $g;
    $call = _agfstnode($0) | 0;
    $tobool30 = ($call | 0) == 0;
    if ($tobool30) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = $g;
    $clust = $par + 216 | 0;
    $n_cluster = $par + 212 | 0;
    $2 = $g;
    $n_0_in31 = $call;
    label = 4;
    break;
   case 4:
    $call1 = _agnxtnode($0, $n_0_in31) | 0;
    $u = $n_0_in31 + 24 | 0;
    $3 = $u + 141 | 0;
    $4 = HEAP8[$3] | 0;
    $tobool2 = $4 << 24 >> 24 == 0;
    $5 = $n_0_in31 | 0;
    if ($tobool2) {
      $i_0 = 1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    _agdelete($1, $5);
    label = 11;
    break;
   case 6:
    $6 = HEAP32[$n_cluster >> 2] | 0;
    $cmp = ($i_0 | 0) < ($6 | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $7 = HEAP32[$clust >> 2] | 0;
    $arrayidx = $7 + ($i_0 << 2) | 0;
    $8 = HEAP32[$arrayidx >> 2] | 0;
    $9 = $8;
    $call7 = _agcontains($9, $5) | 0;
    $tobool8 = ($call7 | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool8) {
      $i_0 = $inc;
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $10 = HEAP32[$n_cluster >> 2] | 0;
    $cmp13 = ($i_0 | 0) < ($10 | 0);
    if ($cmp13) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $11 = $n_0_in31 | 0;
    _agdelete($2, $11);
    label = 10;
    break;
   case 10:
    $clust17 = $u + 192 | 0;
    $12 = $clust17;
    HEAP32[$12 >> 2] = 0;
    label = 11;
    break;
   case 11:
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      $n_0_in31 = $call1;
      label = 4;
      break;
    }
   case 12:
    $call20 = _agfstnode($0) | 0;
    $tobool2227 = ($call20 | 0) == 0;
    if ($tobool2227) {
      label = 19;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $root = $g + 32 | 0;
    $13 = $g;
    $n_1_in28 = $call20;
    label = 14;
    break;
   case 14:
    $14 = HEAP32[$root >> 2] | 0;
    $15 = $14;
    $call24 = _agfstout($15, $n_1_in28) | 0;
    $tobool2625 = ($call24 | 0) == 0;
    if ($tobool2625) {
      label = 18;
      break;
    } else {
      $e_0_in26 = $call24;
      label = 15;
      break;
    }
   case 15:
    $head = $e_0_in26 + 12 | 0;
    $16 = HEAP32[$head >> 2] | 0;
    $17 = $16 | 0;
    $call28 = _agcontains($13, $17) | 0;
    $tobool29 = ($call28 | 0) == 0;
    if ($tobool29) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $18 = $e_0_in26 | 0;
    _aginsert($13, $18);
    label = 17;
    break;
   case 17:
    $19 = HEAP32[$root >> 2] | 0;
    $20 = $19;
    $call34 = _agnxtout($20, $e_0_in26) | 0;
    $tobool26 = ($call34 | 0) == 0;
    if ($tobool26) {
      label = 18;
      break;
    } else {
      $e_0_in26 = $call34;
      label = 15;
      break;
    }
   case 18:
    $call37 = _agnxtnode($0, $n_1_in28) | 0;
    $tobool22 = ($call37 | 0) == 0;
    if ($tobool22) {
      label = 19;
      break;
    } else {
      $n_1_in28 = $call37;
      label = 14;
      break;
    }
   case 19:
    return;
  }
}
function _make_new_cluster($g, $subg) {
  $g = $g | 0;
  $subg = $subg | 0;
  var $n_cluster = 0, $0 = 0, $inc = 0, $clust = 0, $1 = 0, $tobool = 0, $2 = 0, $add = 0, $call = 0, $add6 = 0, $mul = 0, $call7 = 0, $call_sink = 0, $3 = 0, $arrayidx = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $n_cluster = $g + 212 | 0;
    $0 = HEAP32[$n_cluster >> 2] | 0;
    $inc = $0 + 1 | 0;
    HEAP32[$n_cluster >> 2] = $inc;
    $clust = $g + 216 | 0;
    $1 = HEAP32[$clust >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $1;
    $add = $0 + 2 | 0;
    $call = _zrealloc($2, $add, 4, $inc) | 0;
    $call_sink = $call;
    label = 5;
    break;
   case 4:
    $add6 = $0 << 2;
    $mul = $add6 + 8 | 0;
    $call7 = _zmalloc($mul) | 0;
    $call_sink = $call7;
    label = 5;
    break;
   case 5:
    $3 = $call_sink;
    HEAP32[$clust >> 2] = $3;
    $arrayidx = $3 + ($inc << 2) | 0;
    HEAP32[$arrayidx >> 2] = $subg;
    $4 = $subg;
    _do_graph_label($4);
    return;
  }
}
function _rank_set_class($g) {
  $g = $g | 0;
  var $call = 0, $tobool = 0, $0 = 0, $call1 = 0, $call2 = 0, $conv = 0, $set_type = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _is_cluster($g) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = 7;
      label = 4;
      break;
    }
   case 3:
    $0 = $g | 0;
    $call1 = _agget($0, 155664) | 0;
    $call2 = _maptoken($call1, 4672, 4696) | 0;
    $conv = $call2 & 255;
    $set_type = $g + 286 | 0;
    HEAP8[$set_type] = $conv;
    $retval_0 = $call2;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _collapse_rankset($g, $subg, $kind) {
  $g = $g | 0;
  $subg = $subg | 0;
  $kind = $kind | 0;
  var $0 = 0, $call = 0, $1 = 0, $tobool = 0, $conv = 0, $u1 = 0, $2 = 0, $call224 = 0, $tobool325 = 0, $3 = 0, $call226 = 0, $4 = 0, $call4 = 0, $5 = 0, $u7 = 0, $6 = 0, $call2 = 0, $tobool3 = 0, $minset = 0, $7 = 0, $cmp = 0, $8 = 0, $9 = 0, $call16 = 0, $10 = 0, $maxset = 0, $11 = 0, $cmp21 = 0, $12 = 0, $13 = 0, $call29 = 0, $14 = 0, $minset36 = 0, $15 = 0, $ranktype38 = 0, $maxset42 = 0, $16 = 0, $ranktype44 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $subg;
    $call = _agfstnode($0) | 0;
    $1 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 16;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $kind & 255;
    $u1 = $call + 24 | 0;
    $2 = $u1 + 141 | 0;
    HEAP8[$2] = $conv;
    $call224 = _agnxtnode($0, $call) | 0;
    $tobool325 = ($call224 | 0) == 0;
    if ($tobool325) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = $call;
    $call226 = $call224;
    label = 5;
    break;
   case 5:
    $4 = $call226;
    $call4 = _UF_union($3, $4) | 0;
    $5 = HEAP8[$2] | 0;
    $u7 = $call226 + 24 | 0;
    $6 = $u7 + 141 | 0;
    HEAP8[$6] = $5;
    $call2 = _agnxtnode($0, $call226) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      $call226 = $call2;
      label = 5;
      break;
    }
   case 6:
    if (($kind | 0) == 2 | ($kind | 0) == 3) {
      label = 7;
      break;
    } else if (($kind | 0) == 4 | ($kind | 0) == 5) {
      label = 10;
      break;
    } else {
      label = 16;
      break;
    }
   case 7:
    $minset = $g + 236 | 0;
    $7 = HEAP32[$minset >> 2] | 0;
    $cmp = ($7 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    HEAP32[$minset >> 2] = $1;
    label = 13;
    break;
   case 9:
    $8 = $7;
    $9 = $call;
    $call16 = _UF_union($8, $9) | 0;
    $10 = $call16;
    HEAP32[$minset >> 2] = $10;
    label = 13;
    break;
   case 10:
    $maxset = $g + 240 | 0;
    $11 = HEAP32[$maxset >> 2] | 0;
    $cmp21 = ($11 | 0) == 0;
    if ($cmp21) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    HEAP32[$maxset >> 2] = $1;
    label = 13;
    break;
   case 12:
    $12 = $11;
    $13 = $call;
    $call29 = _UF_union($12, $13) | 0;
    $14 = $call29;
    HEAP32[$maxset >> 2] = $14;
    label = 13;
    break;
   case 13:
    if (($kind | 0) == 3) {
      label = 14;
      break;
    } else if (($kind | 0) == 5) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $minset36 = $g + 236 | 0;
    $15 = HEAP32[$minset36 >> 2] | 0;
    $ranktype38 = $15 + 165 | 0;
    HEAP8[$ranktype38] = $conv;
    label = 16;
    break;
   case 15:
    $maxset42 = $g + 240 | 0;
    $16 = HEAP32[$maxset42 >> 2] | 0;
    $ranktype44 = $16 + 165 | 0;
    HEAP8[$ranktype44] = $conv;
    label = 16;
    break;
   case 16:
    return;
  }
}
function _dot_sameports($g) {
  $g = $g | 0;
  var $same = 0, $proto = 0, $0 = 0, $e1 = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $e3 = 0, $4 = 0, $5 = 0, $call4 = 0, $6 = 0, $tobool = 0, $tobool5 = 0, $or_cond = 0, $7 = 0, $call6 = 0, $tobool738 = 0, $arraydecay = 0, $arraydecay28 = 0, $n_041_in = 0, $n_041 = 0, $call8 = 0, $tobool1031 = 0, $e_034_in = 0, $e_034 = 0, $head = 0, $8 = 0, $cmp = 0, $9 = 0, $tobool12 = 0, $or_cond1 = 0, $10 = 0, $index = 0, $11 = 0, $call14 = 0, $12 = 0, $tobool15 = 0, $tail = 0, $13 = 0, $cmp17 = 0, $14 = 0, $tobool20 = 0, $or_cond2 = 0, $15 = 0, $index22 = 0, $16 = 0, $call23 = 0, $17 = 0, $tobool26 = 0, $call31 = 0, $tobool10 = 0, $18 = 0, $cmp3335 = 0, $i_036 = 0, $l = 0, $size = 0, $19 = 0, $cmp37 = 0, $list = 0, $20 = 0, $tobool46 = 0, $21 = 0, $inc = 0, $22 = 0, $cmp33 = 0, $call55 = 0, $tobool7 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 120 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $same = __stackBase__ | 0;
    $proto = $g + 40 | 0;
    $0 = HEAP32[$proto >> 2] | 0;
    $e1 = $0 + 4 | 0;
    $1 = HEAP32[$e1 >> 2] | 0;
    $2 = $1 | 0;
    $call = _agfindattr($2, 145936) | 0;
    HEAP32[41914] = $call;
    $3 = HEAP32[$proto >> 2] | 0;
    $e3 = $3 + 4 | 0;
    $4 = HEAP32[$e3 >> 2] | 0;
    $5 = $4 | 0;
    $call4 = _agfindattr($5, 157696) | 0;
    HEAP32[41912] = $call4;
    $6 = HEAP32[41914] | 0;
    $tobool = ($6 | 0) != 0;
    $tobool5 = ($call4 | 0) != 0;
    $or_cond = $tobool | $tobool5;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      label = 20;
      break;
    }
   case 3:
    $7 = $g;
    $call6 = _agfstnode($7) | 0;
    $tobool738 = ($call6 | 0) == 0;
    if ($tobool738) {
      label = 20;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $arraydecay = $same | 0;
    $arraydecay28 = $same | 0;
    $n_041_in = $call6;
    label = 5;
    break;
   case 5:
    $n_041 = $n_041_in;
    HEAP32[2770] = 0;
    $call8 = _agfstedge($7, $n_041_in) | 0;
    $tobool1031 = ($call8 | 0) == 0;
    if ($tobool1031) {
      label = 13;
      break;
    } else {
      $e_034_in = $call8;
      label = 6;
      break;
    }
   case 6:
    $e_034 = $e_034_in;
    $head = $e_034_in + 12 | 0;
    $8 = HEAP32[$head >> 2] | 0;
    $cmp = ($8 | 0) == ($n_041_in | 0);
    $9 = HEAP32[41914] | 0;
    $tobool12 = ($9 | 0) != 0;
    $or_cond1 = $cmp & $tobool12;
    if ($or_cond1) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $10 = $e_034_in | 0;
    $index = $9 + 8 | 0;
    $11 = HEAP32[$index >> 2] | 0;
    $call14 = _agxget($10, $11) | 0;
    $12 = HEAP8[$call14] | 0;
    $tobool15 = $12 << 24 >> 24 == 0;
    if ($tobool15) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    _sameedge($arraydecay, $n_041, $e_034, $call14);
    label = 12;
    break;
   case 9:
    $tail = $e_034_in + 16 | 0;
    $13 = HEAP32[$tail >> 2] | 0;
    $cmp17 = ($13 | 0) == ($n_041_in | 0);
    $14 = HEAP32[41912] | 0;
    $tobool20 = ($14 | 0) != 0;
    $or_cond2 = $cmp17 & $tobool20;
    if ($or_cond2) {
      label = 10;
      break;
    } else {
      label = 12;
      break;
    }
   case 10:
    $15 = $e_034_in | 0;
    $index22 = $14 + 8 | 0;
    $16 = HEAP32[$index22 >> 2] | 0;
    $call23 = _agxget($15, $16) | 0;
    $17 = HEAP8[$call23] | 0;
    $tobool26 = $17 << 24 >> 24 == 0;
    if ($tobool26) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    _sameedge($arraydecay28, $n_041, $e_034, $call23);
    label = 12;
    break;
   case 12:
    $call31 = _agnxtedge($7, $e_034_in, $n_041_in) | 0;
    $tobool10 = ($call31 | 0) == 0;
    if ($tobool10) {
      label = 13;
      break;
    } else {
      $e_034_in = $call31;
      label = 6;
      break;
    }
   case 13:
    $18 = HEAP32[2770] | 0;
    $cmp3335 = ($18 | 0) > 0;
    if ($cmp3335) {
      $i_036 = 0;
      label = 14;
      break;
    } else {
      label = 19;
      break;
    }
   case 14:
    $l = $same + ($i_036 * 24 & -1) + 4 | 0;
    $size = $same + ($i_036 * 24 & -1) + 8 | 0;
    $19 = HEAP32[$size >> 2] | 0;
    $cmp37 = ($19 | 0) > 1;
    if ($cmp37) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    _sameport($n_041, $l);
    label = 16;
    break;
   case 16:
    $list = $l | 0;
    $20 = HEAP32[$list >> 2] | 0;
    $tobool46 = ($20 | 0) == 0;
    if ($tobool46) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $21 = $20;
    _free($21);
    label = 18;
    break;
   case 18:
    $inc = $i_036 + 1 | 0;
    $22 = HEAP32[2770] | 0;
    $cmp33 = ($inc | 0) < ($22 | 0);
    if ($cmp33) {
      $i_036 = $inc;
      label = 14;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $call55 = _agnxtnode($7, $n_041_in) | 0;
    $tobool7 = ($call55 | 0) == 0;
    if ($tobool7) {
      label = 20;
      break;
    } else {
      $n_041_in = $call55;
      label = 5;
      break;
    }
   case 20:
    STACKTOP = __stackBase__;
    return;
  }
}
function _sameedge($same, $n, $e, $id) {
  $same = $same | 0;
  $n = $n | 0;
  $e = $e | 0;
  $id = $id | 0;
  var $sflag = 0, $eflag = 0, $0 = 0, $cmp53 = 0, $1 = 0, $2 = 0, $i_054 = 0, $id1 = 0, $3 = 0, $4 = 0, $cmp3 = 0, $call = 0, $tobool = 0, $list = 0, $5 = 0, $tobool8 = 0, $6 = 0, $size = 0, $7 = 0, $add = 0, $mul = 0, $call14 = 0, $size17 = 0, $8 = 0, $add18 = 0, $mul19 = 0, $call20 = 0, $call14_sink = 0, $9 = 0, $size26 = 0, $10 = 0, $inc = 0, $11 = 0, $arrayidx30 = 0, $12 = 0, $13 = 0, $arrayidx37 = 0, $inc38 = 0, $cmp = 0, $_lcssa = 0, $i_0_lcssa = 0, $inc39 = 0, $cmp40 = 0, $name = 0, $14 = 0, $call43 = 0, $size48 = 0, $call49 = 0, $15 = 0, $list52 = 0, $16 = 0, $inc58 = 0, $17 = 0, $arrayidx62 = 0, $18 = 0, $19 = 0, $arrayidx69 = 0, $id72 = 0, $n_arr = 0, $arr_len = 0, $i_051 = 0, $20 = 0, $head = 0, $21 = 0, $cmp75 = 0, $22 = 0, $23 = 0, $cond80 = 0, $tobool81 = 0, $n_arr84 = 0, $24 = 0, $inc85 = 0, $cmp86 = 0, $call89 = 0.0, $cond92 = 0.0, $arr_len94 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sflag = __stackBase__ | 0;
    $eflag = __stackBase__ + 8 | 0;
    $0 = HEAP32[2770] | 0;
    $cmp53 = ($0 | 0) > 0;
    if ($cmp53) {
      label = 3;
      break;
    } else {
      $i_0_lcssa = 0;
      $_lcssa = $0;
      label = 11;
      break;
    }
   case 3:
    $1 = HEAP8[$id] | 0;
    $2 = HEAP32[2770] | 0;
    $i_054 = 0;
    label = 4;
    break;
   case 4:
    $id1 = $same + ($i_054 * 24 & -1) | 0;
    $3 = HEAP32[$id1 >> 2] | 0;
    $4 = HEAP8[$3] | 0;
    $cmp3 = $4 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 5:
    $call = _strcmp($3 | 0, $id | 0) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 10;
      break;
    }
   case 6:
    $list = $same + ($i_054 * 24 & -1) + 4 | 0;
    $5 = HEAP32[$list >> 2] | 0;
    $tobool8 = ($5 | 0) == 0;
    if ($tobool8) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $6 = $5;
    $size = $same + ($i_054 * 24 & -1) + 8 | 0;
    $7 = HEAP32[$size >> 2] | 0;
    $add = $7 << 2;
    $mul = $add + 8 | 0;
    $call14 = _grealloc($6, $mul) | 0;
    $call14_sink = $call14;
    label = 9;
    break;
   case 8:
    $size17 = $same + ($i_054 * 24 & -1) + 8 | 0;
    $8 = HEAP32[$size17 >> 2] | 0;
    $add18 = $8 << 2;
    $mul19 = $add18 + 8 | 0;
    $call20 = _gmalloc($mul19) | 0;
    $call14_sink = $call20;
    label = 9;
    break;
   case 9:
    $9 = $call14_sink;
    HEAP32[$list >> 2] = $9;
    $size26 = $same + ($i_054 * 24 & -1) + 8 | 0;
    $10 = HEAP32[$size26 >> 2] | 0;
    $inc = $10 + 1 | 0;
    HEAP32[$size26 >> 2] = $inc;
    $11 = HEAP32[$list >> 2] | 0;
    $arrayidx30 = $11 + ($10 << 2) | 0;
    HEAP32[$arrayidx30 >> 2] = $e;
    $12 = HEAP32[$size26 >> 2] | 0;
    $13 = HEAP32[$list >> 2] | 0;
    $arrayidx37 = $13 + ($12 << 2) | 0;
    HEAP32[$arrayidx37 >> 2] = 0;
    $i_051 = $i_054;
    label = 14;
    break;
   case 10:
    $inc38 = $i_054 + 1 | 0;
    $cmp = ($inc38 | 0) < ($2 | 0);
    if ($cmp) {
      $i_054 = $inc38;
      label = 4;
      break;
    } else {
      $i_0_lcssa = $inc38;
      $_lcssa = $2;
      label = 11;
      break;
    }
   case 11:
    $inc39 = $_lcssa + 1 | 0;
    HEAP32[2770] = $inc39;
    $cmp40 = ($inc39 | 0) > 5;
    if ($cmp40) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $name = $n + 12 | 0;
    $14 = HEAP32[$name >> 2] | 0;
    $call43 = _agerr(1, 129424, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $14, tempInt) | 0) | 0;
    label = 18;
    break;
   case 13:
    $size48 = $same + ($i_0_lcssa * 24 & -1) + 8 | 0;
    HEAP32[$size48 >> 2] = 0;
    $call49 = _zmalloc(8) | 0;
    $15 = $call49;
    $list52 = $same + ($i_0_lcssa * 24 & -1) + 4 | 0;
    HEAP32[$list52 >> 2] = $15;
    $16 = HEAP32[$size48 >> 2] | 0;
    $inc58 = $16 + 1 | 0;
    HEAP32[$size48 >> 2] = $inc58;
    $17 = HEAP32[$list52 >> 2] | 0;
    $arrayidx62 = $17 + ($16 << 2) | 0;
    HEAP32[$arrayidx62 >> 2] = $e;
    $18 = HEAP32[$size48 >> 2] | 0;
    $19 = HEAP32[$list52 >> 2] | 0;
    $arrayidx69 = $19 + ($18 << 2) | 0;
    HEAP32[$arrayidx69 >> 2] = 0;
    $id72 = $same + ($i_0_lcssa * 24 & -1) | 0;
    HEAP32[$id72 >> 2] = $id;
    $n_arr = $same + ($i_0_lcssa * 24 & -1) + 12 | 0;
    HEAP32[$n_arr >> 2] = 0;
    $arr_len = $same + ($i_0_lcssa * 24 & -1) + 16 | 0;
    HEAPF64[$arr_len >> 3] = 0.0;
    $i_051 = $i_0_lcssa;
    label = 14;
    break;
   case 14:
    $20 = $e;
    _arrow_flags($20, $sflag, $eflag);
    $head = $e + 12 | 0;
    $21 = HEAP32[$head >> 2] | 0;
    $cmp75 = ($21 | 0) == ($n | 0);
    $22 = HEAP32[$eflag >> 2] | 0;
    $23 = HEAP32[$sflag >> 2] | 0;
    $cond80 = $cmp75 ? $22 : $23;
    $tobool81 = ($cond80 | 0) == 0;
    if ($tobool81) {
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $n_arr84 = $same + ($i_051 * 24 & -1) + 12 | 0;
    $24 = HEAP32[$n_arr84 >> 2] | 0;
    $inc85 = $24 + 1 | 0;
    HEAP32[$n_arr84 >> 2] = $inc85;
    $cmp86 = ($24 | 0) == 0;
    if ($cmp86) {
      label = 16;
      break;
    } else {
      $cond92 = 0.0;
      label = 17;
      break;
    }
   case 16:
    $call89 = +_arrow_length($20, $cond80);
    $cond92 = $call89;
    label = 17;
    break;
   case 17:
    $arr_len94 = $same + ($i_051 * 24 & -1) + 16 | 0;
    HEAPF64[$arr_len94 >> 3] = $cond92;
    label = 18;
    break;
   case 18:
    STACKTOP = __stackBase__;
    return;
  }
}
function _sameport($u, $l) {
  $u = $u | 0;
  $l = $l | 0;
  var $sflag = 0, $eflag = 0, $curve = 0, $size = 0, $0 = 0, $cmp16 = 0, $list = 0, $x7 = 0, $y13 = 0, $i_019 = 0, $x_018 = 0.0, $y_017 = 0.0, $1 = 0, $arrayidx = 0, $2 = 0, $head = 0, $3 = 0, $cmp1 = 0, $tail = 0, $4 = 0, $v_0 = 0, $x4 = 0, $5 = 0.0, $6 = 0.0, $sub = 0.0, $y10 = 0, $7 = 0.0, $8 = 0.0, $sub14 = 0.0, $call = 0.0, $div = 0.0, $add = 0.0, $div15 = 0.0, $add16 = 0.0, $inc = 0, $9 = 0, $cmp = 0, $x_0_lcssa = 0.0, $y_0_lcssa = 0.0, $call17 = 0.0, $div18 = 0.0, $div19 = 0.0, $x22 = 0, $10 = 0.0, $y25 = 0, $11 = 0.0, $lw = 0, $12 = 0.0, $rw = 0, $13 = 0.0, $add28 = 0.0, $ht = 0, $14 = 0.0, $graph = 0, $15 = 0, $ranksep = 0, $16 = 0, $conv = 0.0, $add31 = 0.0, $cmp32 = 0, $add28_add31 = 0.0, $mul = 0.0, $add49 = 0.0, $mul50 = 0.0, $add54 = 0.0, $arrayidx55 = 0, $x56 = 0, $y58 = 0, $mul59 = 0.0, $add60 = 0.0, $div61 = 0.0, $x63 = 0, $mul64 = 0.0, $add65 = 0.0, $div66 = 0.0, $y68 = 0, $mul69 = 0.0, $add70 = 0.0, $div71 = 0.0, $x73 = 0, $mul74 = 0.0, $add75 = 0.0, $div76 = 0.0, $y78 = 0, $x80 = 0, $y82 = 0, $17 = 0, $18 = 0.0, $19 = 0.0, $sub88 = 0.0, $20 = 0.0, $21 = 0.0, $sub94 = 0.0, $cmp95 = 0, $add98 = 0.0, $sub101 = 0.0, $add98_sink = 0.0, $conv99 = 0, $conv105 = 0.0, $cmp107 = 0, $add110 = 0.0, $sub113 = 0.0, $add110_sink = 0.0, $conv111 = 0, $conv117 = 0.0, $22 = 0.0, $add124 = 0.0, $mul125 = 0.0, $23 = 0.0, $add130 = 0.0, $div131 = 0.0, $conv132 = 0, $24 = 0, $cmp13514 = 0, $list138 = 0, $i_115 = 0, $25 = 0, $arrayidx139 = 0, $26 = 0, $27 = 0, $tobool12 = 0, $e_013 = 0, $tobool1438 = 0, $f_09 = 0, $head145 = 0, $28 = 0, $cmp146 = 0, $prt_sroa_0_0__idx5 = 0, $prt_sroa_1_8__idx12 = 0, $prt_sroa_2_16__idx19 = 0, $prt_sroa_3_24__idx26 = 0, $prt_sroa_4_28__idx32 = 0, $prt_sroa_5_29__idx38 = 0, $prt_sroa_6_30__idx44 = 0, $prt_sroa_7_31__idx50 = 0, $prt_sroa_8_32__idx56 = 0, $prt_sroa_9_33__idx62 = 0, $prt_sroa_11_36__idx78 = 0, $tail151 = 0, $29 = 0, $cmp152 = 0, $prt_sroa_0_0__idx3 = 0, $prt_sroa_1_8__idx10 = 0, $prt_sroa_2_16__idx17 = 0, $prt_sroa_3_24__idx24 = 0, $prt_sroa_4_28__idx30 = 0, $prt_sroa_5_29__idx36 = 0, $prt_sroa_6_30__idx42 = 0, $prt_sroa_7_31__idx48 = 0, $prt_sroa_8_32__idx54 = 0, $prt_sroa_9_33__idx60 = 0, $prt_sroa_11_36__idx76 = 0, $edge_type = 0, $30 = 0, $cmp160 = 0, $list177 = 0, $31 = 0, $32 = 0, $tobool143 = 0, $33 = 0, $node_type = 0, $34 = 0, $cmp165 = 0, $size170 = 0, $35 = 0, $cmp171 = 0, $tobool18410 = 0, $f_111 = 0, $head186 = 0, $36 = 0, $cmp187 = 0, $prt_sroa_0_0__idx1 = 0, $prt_sroa_1_8__idx8 = 0, $prt_sroa_2_16__idx15 = 0, $prt_sroa_3_24__idx22 = 0, $prt_sroa_4_28__idx28 = 0, $prt_sroa_5_29__idx34 = 0, $prt_sroa_6_30__idx40 = 0, $prt_sroa_7_31__idx46 = 0, $prt_sroa_8_32__idx52 = 0, $prt_sroa_9_33__idx58 = 0, $prt_sroa_11_36__idx74 = 0, $tail193 = 0, $37 = 0, $cmp194 = 0, $prt_sroa_0_0__idx = 0, $prt_sroa_1_8__idx7 = 0, $prt_sroa_2_16__idx14 = 0, $prt_sroa_3_24__idx21 = 0, $prt_sroa_4_28__idx = 0, $prt_sroa_5_29__idx = 0, $prt_sroa_6_30__idx = 0, $prt_sroa_7_31__idx = 0, $prt_sroa_8_32__idx = 0, $prt_sroa_9_33__idx = 0, $prt_sroa_11_36__idx73 = 0, $edge_type202 = 0, $38 = 0, $cmp204 = 0, $list223 = 0, $39 = 0, $40 = 0, $tobool184 = 0, $41 = 0, $node_type209 = 0, $42 = 0, $cmp211 = 0, $size216 = 0, $43 = 0, $cmp217 = 0, $to_virt = 0, $44 = 0, $tobool = 0, $inc233 = 0, $45 = 0, $cmp135 = 0, $has_port = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 80 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sflag = __stackBase__ | 0;
    $eflag = __stackBase__ + 8 | 0;
    $curve = __stackBase__ + 16 | 0;
    $size = $l + 4 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp16 = ($0 | 0) > 0;
    if ($cmp16) {
      label = 3;
      break;
    } else {
      $y_0_lcssa = 0.0;
      $x_0_lcssa = 0.0;
      label = 7;
      break;
    }
   case 3:
    $list = $l | 0;
    $x7 = $u + 32 | 0;
    $y13 = $u + 40 | 0;
    $y_017 = 0.0;
    $x_018 = 0.0;
    $i_019 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$list >> 2] | 0;
    $arrayidx = $1 + ($i_019 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $head = $2 + 12 | 0;
    $3 = HEAP32[$head >> 2] | 0;
    $cmp1 = ($3 | 0) == ($u | 0);
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $v_0 = $3;
      label = 6;
      break;
    }
   case 5:
    $tail = $2 + 16 | 0;
    $4 = HEAP32[$tail >> 2] | 0;
    $v_0 = $4;
    label = 6;
    break;
   case 6:
    $x4 = $v_0 + 32 | 0;
    $5 = +HEAPF64[$x4 >> 3];
    $6 = +HEAPF64[$x7 >> 3];
    $sub = $5 - $6;
    $y10 = $v_0 + 40 | 0;
    $7 = +HEAPF64[$y10 >> 3];
    $8 = +HEAPF64[$y13 >> 3];
    $sub14 = $7 - $8;
    $call = +_hypot(+$sub, +$sub14);
    $div = $sub / $call;
    $add = $x_018 + $div;
    $div15 = $sub14 / $call;
    $add16 = $y_017 + $div15;
    $inc = $i_019 + 1 | 0;
    $9 = HEAP32[$size >> 2] | 0;
    $cmp = ($inc | 0) < ($9 | 0);
    if ($cmp) {
      $y_017 = $add16;
      $x_018 = $add;
      $i_019 = $inc;
      label = 4;
      break;
    } else {
      $y_0_lcssa = $add16;
      $x_0_lcssa = $add;
      label = 7;
      break;
    }
   case 7:
    $call17 = +_hypot(+$x_0_lcssa, +$y_0_lcssa);
    $div18 = $x_0_lcssa / $call17;
    $div19 = $y_0_lcssa / $call17;
    $x22 = $u + 32 | 0;
    $10 = +HEAPF64[$x22 >> 3];
    $y25 = $u + 40 | 0;
    $11 = +HEAPF64[$y25 >> 3];
    $lw = $u + 104 | 0;
    $12 = +HEAPF64[$lw >> 3];
    $rw = $u + 112 | 0;
    $13 = +HEAPF64[$rw >> 3];
    $add28 = $12 + $13;
    $ht = $u + 96 | 0;
    $14 = +HEAPF64[$ht >> 3];
    $graph = $u + 20 | 0;
    $15 = HEAP32[$graph >> 2] | 0;
    $ranksep = $15 + 264 | 0;
    $16 = HEAP32[$ranksep >> 2] | 0;
    $conv = +($16 | 0);
    $add31 = $14 + $conv;
    $cmp32 = $add28 > $add31;
    $add28_add31 = $cmp32 ? $add28 : $add31;
    $mul = $div18 * $add28_add31;
    $add49 = $10 + $mul;
    $mul50 = $div19 * $add28_add31;
    $add54 = $11 + $mul50;
    $arrayidx55 = $curve | 0;
    $x56 = $curve | 0;
    HEAPF64[$x56 >> 3] = $10;
    $y58 = $curve + 8 | 0;
    HEAPF64[$y58 >> 3] = $11;
    $mul59 = $10 * 2.0;
    $add60 = $mul59 + $add49;
    $div61 = $add60 / 3.0;
    $x63 = $curve + 16 | 0;
    HEAPF64[$x63 >> 3] = $div61;
    $mul64 = $11 * 2.0;
    $add65 = $mul64 + $add54;
    $div66 = $add65 / 3.0;
    $y68 = $curve + 24 | 0;
    HEAPF64[$y68 >> 3] = $div66;
    $mul69 = $add49 * 2.0;
    $add70 = $10 + $mul69;
    $div71 = $add70 / 3.0;
    $x73 = $curve + 32 | 0;
    HEAPF64[$x73 >> 3] = $div71;
    $mul74 = $add54 * 2.0;
    $add75 = $11 + $mul74;
    $div76 = $add75 / 3.0;
    $y78 = $curve + 40 | 0;
    HEAPF64[$y78 >> 3] = $div76;
    $x80 = $curve + 48 | 0;
    HEAPF64[$x80 >> 3] = $add49;
    $y82 = $curve + 56 | 0;
    HEAPF64[$y82 >> 3] = $add54;
    $17 = $u;
    _shape_clip($17, $arrayidx55);
    $18 = +HEAPF64[$x56 >> 3];
    $19 = +HEAPF64[$x22 >> 3];
    $sub88 = $18 - $19;
    $20 = +HEAPF64[$y58 >> 3];
    $21 = +HEAPF64[$y25 >> 3];
    $sub94 = $20 - $21;
    $cmp95 = $sub88 < 0.0;
    if ($cmp95) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add98 = $sub88 + .5;
    $add98_sink = $add98;
    label = 10;
    break;
   case 9:
    $sub101 = $sub88 + -.5;
    $add98_sink = $sub101;
    label = 10;
    break;
   case 10:
    $conv99 = ~~$add98_sink;
    $conv105 = +($conv99 | 0);
    $cmp107 = $sub94 < 0.0;
    if ($cmp107) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $add110 = $sub94 + .5;
    $add110_sink = $add110;
    label = 13;
    break;
   case 12:
    $sub113 = $sub94 + -.5;
    $add110_sink = $sub113;
    label = 13;
    break;
   case 13:
    $conv111 = ~~$add110_sink;
    $conv117 = +($conv111 | 0);
    $22 = +HEAPF64[$lw >> 3];
    $add124 = $conv105 + $22;
    $mul125 = $add124 * 256.0;
    $23 = +HEAPF64[$rw >> 3];
    $add130 = $22 + $23;
    $div131 = $mul125 / $add130;
    $conv132 = ~~$div131;
    $24 = HEAP32[$size >> 2] | 0;
    $cmp13514 = ($24 | 0) > 0;
    if ($cmp13514) {
      label = 14;
      break;
    } else {
      label = 36;
      break;
    }
   case 14:
    $list138 = $l | 0;
    $i_115 = 0;
    label = 15;
    break;
   case 15:
    $25 = HEAP32[$list138 >> 2] | 0;
    $arrayidx139 = $25 + ($i_115 << 2) | 0;
    $26 = HEAP32[$arrayidx139 >> 2] | 0;
    $27 = $26;
    _arrow_flags($27, $sflag, $eflag);
    $tobool12 = ($26 | 0) == 0;
    if ($tobool12) {
      label = 35;
      break;
    } else {
      $e_013 = $26;
      label = 16;
      break;
    }
   case 16:
    $tobool1438 = ($e_013 | 0) == 0;
    if ($tobool1438) {
      label = 34;
      break;
    } else {
      $f_09 = $e_013;
      label = 17;
      break;
    }
   case 17:
    $head145 = $f_09 + 12 | 0;
    $28 = HEAP32[$head145 >> 2] | 0;
    $cmp146 = ($28 | 0) == ($u | 0);
    if ($cmp146) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $prt_sroa_0_0__idx5 = $f_09 + 72 | 0;
    HEAPF64[$prt_sroa_0_0__idx5 >> 3] = $conv105;
    $prt_sroa_1_8__idx12 = $f_09 + 80 | 0;
    HEAPF64[$prt_sroa_1_8__idx12 >> 3] = $conv117;
    $prt_sroa_2_16__idx19 = $f_09 + 88 | 0;
    HEAPF64[$prt_sroa_2_16__idx19 >> 3] = 0.0;
    $prt_sroa_3_24__idx26 = $f_09 + 96 | 0;
    HEAP32[$prt_sroa_3_24__idx26 >> 2] = 0;
    $prt_sroa_4_28__idx32 = $f_09 + 100 | 0;
    HEAP8[$prt_sroa_4_28__idx32] = 1;
    $prt_sroa_5_29__idx38 = $f_09 + 101 | 0;
    HEAP8[$prt_sroa_5_29__idx38] = 0;
    $prt_sroa_6_30__idx44 = $f_09 + 102 | 0;
    HEAP8[$prt_sroa_6_30__idx44] = 0;
    $prt_sroa_7_31__idx50 = $f_09 + 103 | 0;
    HEAP8[$prt_sroa_7_31__idx50] = 0;
    $prt_sroa_8_32__idx56 = $f_09 + 104 | 0;
    HEAP8[$prt_sroa_8_32__idx56] = $conv132;
    $prt_sroa_9_33__idx62 = $f_09 + 105 | 0;
    HEAP8[$prt_sroa_9_33__idx62] = 0;
    $prt_sroa_11_36__idx78 = $f_09 + 108 | 0;
    HEAP32[$prt_sroa_11_36__idx78 >> 2] = 0;
    label = 19;
    break;
   case 19:
    $tail151 = $f_09 + 16 | 0;
    $29 = HEAP32[$tail151 >> 2] | 0;
    $cmp152 = ($29 | 0) == ($u | 0);
    if ($cmp152) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $prt_sroa_0_0__idx3 = $f_09 + 32 | 0;
    HEAPF64[$prt_sroa_0_0__idx3 >> 3] = $conv105;
    $prt_sroa_1_8__idx10 = $f_09 + 40 | 0;
    HEAPF64[$prt_sroa_1_8__idx10 >> 3] = $conv117;
    $prt_sroa_2_16__idx17 = $f_09 + 48 | 0;
    HEAPF64[$prt_sroa_2_16__idx17 >> 3] = 0.0;
    $prt_sroa_3_24__idx24 = $f_09 + 56 | 0;
    HEAP32[$prt_sroa_3_24__idx24 >> 2] = 0;
    $prt_sroa_4_28__idx30 = $f_09 + 60 | 0;
    HEAP8[$prt_sroa_4_28__idx30] = 1;
    $prt_sroa_5_29__idx36 = $f_09 + 61 | 0;
    HEAP8[$prt_sroa_5_29__idx36] = 0;
    $prt_sroa_6_30__idx42 = $f_09 + 62 | 0;
    HEAP8[$prt_sroa_6_30__idx42] = 0;
    $prt_sroa_7_31__idx48 = $f_09 + 63 | 0;
    HEAP8[$prt_sroa_7_31__idx48] = 0;
    $prt_sroa_8_32__idx54 = $f_09 + 64 | 0;
    HEAP8[$prt_sroa_8_32__idx54] = $conv132;
    $prt_sroa_9_33__idx60 = $f_09 + 65 | 0;
    HEAP8[$prt_sroa_9_33__idx60] = 0;
    $prt_sroa_11_36__idx76 = $f_09 + 68 | 0;
    HEAP32[$prt_sroa_11_36__idx76 >> 2] = 0;
    label = 21;
    break;
   case 21:
    $edge_type = $f_09 + 128 | 0;
    $30 = HEAP8[$edge_type] | 0;
    $cmp160 = $30 << 24 >> 24 == 1;
    if ($cmp160) {
      label = 23;
      break;
    } else {
      label = 25;
      break;
    }
   case 22:
    $list177 = $33 + 184 | 0;
    $31 = HEAP32[$list177 >> 2] | 0;
    $32 = HEAP32[$31 >> 2] | 0;
    $tobool143 = ($32 | 0) == 0;
    if ($tobool143) {
      label = 25;
      break;
    } else {
      $f_09 = $32;
      label = 17;
      break;
    }
   case 23:
    $33 = HEAP32[$head145 >> 2] | 0;
    $node_type = $33 + 162 | 0;
    $34 = HEAP8[$node_type] | 0;
    $cmp165 = $34 << 24 >> 24 == 1;
    if ($cmp165) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $size170 = $33 + 188 | 0;
    $35 = HEAP32[$size170 >> 2] | 0;
    $cmp171 = ($35 | 0) == 1;
    if ($cmp171) {
      label = 22;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $tobool18410 = ($e_013 | 0) == 0;
    if ($tobool18410) {
      label = 34;
      break;
    } else {
      $f_111 = $e_013;
      label = 26;
      break;
    }
   case 26:
    $head186 = $f_111 + 12 | 0;
    $36 = HEAP32[$head186 >> 2] | 0;
    $cmp187 = ($36 | 0) == ($u | 0);
    if ($cmp187) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $prt_sroa_0_0__idx1 = $f_111 + 72 | 0;
    HEAPF64[$prt_sroa_0_0__idx1 >> 3] = $conv105;
    $prt_sroa_1_8__idx8 = $f_111 + 80 | 0;
    HEAPF64[$prt_sroa_1_8__idx8 >> 3] = $conv117;
    $prt_sroa_2_16__idx15 = $f_111 + 88 | 0;
    HEAPF64[$prt_sroa_2_16__idx15 >> 3] = 0.0;
    $prt_sroa_3_24__idx22 = $f_111 + 96 | 0;
    HEAP32[$prt_sroa_3_24__idx22 >> 2] = 0;
    $prt_sroa_4_28__idx28 = $f_111 + 100 | 0;
    HEAP8[$prt_sroa_4_28__idx28] = 1;
    $prt_sroa_5_29__idx34 = $f_111 + 101 | 0;
    HEAP8[$prt_sroa_5_29__idx34] = 0;
    $prt_sroa_6_30__idx40 = $f_111 + 102 | 0;
    HEAP8[$prt_sroa_6_30__idx40] = 0;
    $prt_sroa_7_31__idx46 = $f_111 + 103 | 0;
    HEAP8[$prt_sroa_7_31__idx46] = 0;
    $prt_sroa_8_32__idx52 = $f_111 + 104 | 0;
    HEAP8[$prt_sroa_8_32__idx52] = $conv132;
    $prt_sroa_9_33__idx58 = $f_111 + 105 | 0;
    HEAP8[$prt_sroa_9_33__idx58] = 0;
    $prt_sroa_11_36__idx74 = $f_111 + 108 | 0;
    HEAP32[$prt_sroa_11_36__idx74 >> 2] = 0;
    label = 28;
    break;
   case 28:
    $tail193 = $f_111 + 16 | 0;
    $37 = HEAP32[$tail193 >> 2] | 0;
    $cmp194 = ($37 | 0) == ($u | 0);
    if ($cmp194) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $prt_sroa_0_0__idx = $f_111 + 32 | 0;
    HEAPF64[$prt_sroa_0_0__idx >> 3] = $conv105;
    $prt_sroa_1_8__idx7 = $f_111 + 40 | 0;
    HEAPF64[$prt_sroa_1_8__idx7 >> 3] = $conv117;
    $prt_sroa_2_16__idx14 = $f_111 + 48 | 0;
    HEAPF64[$prt_sroa_2_16__idx14 >> 3] = 0.0;
    $prt_sroa_3_24__idx21 = $f_111 + 56 | 0;
    HEAP32[$prt_sroa_3_24__idx21 >> 2] = 0;
    $prt_sroa_4_28__idx = $f_111 + 60 | 0;
    HEAP8[$prt_sroa_4_28__idx] = 1;
    $prt_sroa_5_29__idx = $f_111 + 61 | 0;
    HEAP8[$prt_sroa_5_29__idx] = 0;
    $prt_sroa_6_30__idx = $f_111 + 62 | 0;
    HEAP8[$prt_sroa_6_30__idx] = 0;
    $prt_sroa_7_31__idx = $f_111 + 63 | 0;
    HEAP8[$prt_sroa_7_31__idx] = 0;
    $prt_sroa_8_32__idx = $f_111 + 64 | 0;
    HEAP8[$prt_sroa_8_32__idx] = $conv132;
    $prt_sroa_9_33__idx = $f_111 + 65 | 0;
    HEAP8[$prt_sroa_9_33__idx] = 0;
    $prt_sroa_11_36__idx73 = $f_111 + 68 | 0;
    HEAP32[$prt_sroa_11_36__idx73 >> 2] = 0;
    label = 30;
    break;
   case 30:
    $edge_type202 = $f_111 + 128 | 0;
    $38 = HEAP8[$edge_type202] | 0;
    $cmp204 = $38 << 24 >> 24 == 1;
    if ($cmp204) {
      label = 32;
      break;
    } else {
      label = 34;
      break;
    }
   case 31:
    $list223 = $41 + 176 | 0;
    $39 = HEAP32[$list223 >> 2] | 0;
    $40 = HEAP32[$39 >> 2] | 0;
    $tobool184 = ($40 | 0) == 0;
    if ($tobool184) {
      label = 34;
      break;
    } else {
      $f_111 = $40;
      label = 26;
      break;
    }
   case 32:
    $41 = HEAP32[$tail193 >> 2] | 0;
    $node_type209 = $41 + 162 | 0;
    $42 = HEAP8[$node_type209] | 0;
    $cmp211 = $42 << 24 >> 24 == 1;
    if ($cmp211) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $size216 = $41 + 180 | 0;
    $43 = HEAP32[$size216 >> 2] | 0;
    $cmp217 = ($43 | 0) == 1;
    if ($cmp217) {
      label = 31;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $to_virt = $e_013 + 188 | 0;
    $44 = HEAP32[$to_virt >> 2] | 0;
    $tobool = ($44 | 0) == 0;
    if ($tobool) {
      label = 35;
      break;
    } else {
      $e_013 = $44;
      label = 16;
      break;
    }
   case 35:
    $inc233 = $i_115 + 1 | 0;
    $45 = HEAP32[$size >> 2] | 0;
    $cmp135 = ($inc233 | 0) < ($45 | 0);
    if ($cmp135) {
      $i_115 = $inc233;
      label = 15;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $has_port = $u + 161 | 0;
    HEAP8[$has_port] = 1;
    STACKTOP = __stackBase__;
    return;
  }
}
function _cluster_leader($clust) {
  $clust = $clust | 0;
  var $nlist = 0, $n_023 = 0, $tobool24 = 0, $n_027 = 0, $leader_025 = 0, $rank = 0, $0 = 0, $cmp = 0, $node_type = 0, $1 = 0, $cmp3 = 0, $n_0_leader_0 = 0, $leader_1 = 0, $next = 0, $n_0 = 0, $tobool = 0, $cmp14 = 0, $leader17 = 0, $2 = 0, $call = 0, $tobool1920 = 0, $3 = 0, $n_122_in = 0, $n_122 = 0, $UF_size = 0, $4 = 0, $5 = 0, $cmp22 = 0, $cmp24 = 0, $or_cond = 0, $6 = 0, $call29 = 0, $ranktype = 0, $call32 = 0, $tobool19 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $nlist = $clust + 220 | 0;
    $n_023 = HEAP32[$nlist >> 2] | 0;
    $tobool24 = ($n_023 | 0) == 0;
    if ($tobool24) {
      label = 7;
      break;
    } else {
      $leader_025 = 0;
      $n_027 = $n_023;
      label = 3;
      break;
    }
   case 3:
    $rank = $n_027 + 236 | 0;
    $0 = HEAP32[$rank >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $leader_1 = $leader_025;
      label = 5;
      break;
    }
   case 4:
    $node_type = $n_027 + 162 | 0;
    $1 = HEAP8[$node_type] | 0;
    $cmp3 = $1 << 24 >> 24 == 0;
    $n_0_leader_0 = $cmp3 ? $n_027 : $leader_025;
    $leader_1 = $n_0_leader_0;
    label = 5;
    break;
   case 5:
    $next = $n_027 + 168 | 0;
    $n_0 = HEAP32[$next >> 2] | 0;
    $tobool = ($n_0 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      $leader_025 = $leader_1;
      $n_027 = $n_0;
      label = 3;
      break;
    }
   case 6:
    $cmp14 = ($leader_1 | 0) == 0;
    if ($cmp14) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    ___assert_func(129880, 235, 164576, 118104);
   case 8:
    $leader17 = $clust + 276 | 0;
    HEAP32[$leader17 >> 2] = $leader_1;
    $2 = $clust;
    $call = _agfstnode($2) | 0;
    $tobool1920 = ($call | 0) == 0;
    if ($tobool1920) {
      label = 13;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $3 = $leader_1;
    $n_122_in = $call;
    label = 10;
    break;
   case 10:
    $n_122 = $n_122_in;
    $UF_size = $n_122_in + 220 | 0;
    $4 = $UF_size;
    $5 = HEAP32[$4 >> 2] | 0;
    $cmp22 = ($5 | 0) < 2;
    $cmp24 = ($n_122 | 0) == ($leader_1 | 0);
    $or_cond = $cmp22 | $cmp24;
    if ($or_cond) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    ___assert_func(129880, 239, 164576, 112744);
   case 12:
    $6 = $n_122_in;
    $call29 = _UF_union($6, $3) | 0;
    $ranktype = $n_122 + 165 | 0;
    HEAP8[$ranktype] = 7;
    $call32 = _agnxtnode($2, $n_122_in) | 0;
    $tobool19 = ($call32 | 0) == 0;
    if ($tobool19) {
      label = 13;
      break;
    } else {
      $n_122_in = $call32;
      label = 10;
      break;
    }
   case 13:
    return;
  }
}
function _core_loadimage_xdot($job, $us, $b, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var $buf = 0, $obj = 0, $0 = 0, $emit_state1 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $call = 0, $3 = 0, $LL = 0, $arraydecay = 0, $x = 0, $4 = 0.0, $x4 = 0, $5 = 0.0, $sub = 0.0, $cmp = 0, $add = 0.0, $sub15 = 0.0, $add_sink = 0.0, $conv = 0, $y = 0, $6 = 0.0, $y19 = 0, $7 = 0.0, $sub20 = 0.0, $cmp21 = 0, $add29 = 0.0, $sub37 = 0.0, $add29_sink = 0.0, $conv30 = 0, $call41 = 0, $8 = 0, $call44 = 0, $name = 0, $9 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $emit_state1 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state1 >> 2] | 0;
    $arrayidx = 168 + ($1 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $call = _agxbput($2, 152808) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $LL = $b | 0;
    _output_point($3, $LL);
    $arraydecay = $buf | 0;
    $x = $b + 16 | 0;
    $4 = +HEAPF64[$x >> 3];
    $x4 = $b | 0;
    $5 = +HEAPF64[$x4 >> 3];
    $sub = $4 - $5;
    $cmp = $sub < 0.0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $sub + .5;
    $add_sink = $add;
    label = 5;
    break;
   case 4:
    $sub15 = $sub + -.5;
    $add_sink = $sub15;
    label = 5;
    break;
   case 5:
    $conv = ~~$add_sink;
    $y = $b + 24 | 0;
    $6 = +HEAPF64[$y >> 3];
    $y19 = $b + 8 | 0;
    $7 = +HEAPF64[$y19 >> 3];
    $sub20 = $6 - $7;
    $cmp21 = $sub20 < 0.0;
    if ($cmp21) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $add29 = $sub20 + .5;
    $add29_sink = $add29;
    label = 8;
    break;
   case 7:
    $sub37 = $sub20 + -.5;
    $add29_sink = $sub37;
    label = 8;
    break;
   case 8:
    $conv30 = ~~$add29_sink;
    $call41 = _sprintf($arraydecay | 0, 155152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv, HEAP32[tempInt + 8 >> 2] = $conv30, tempInt) | 0) | 0;
    $8 = HEAP32[$arrayidx >> 2] | 0;
    $call44 = _agxbput($8, $arraydecay) | 0;
    $name = $us + 8 | 0;
    $9 = HEAP32[$name >> 2] | 0;
    _xdot_str($job, 125984, $9);
    STACKTOP = __stackBase__;
    return;
  }
}
function _xdot_str($job, $pfx, $s) {
  $job = $job | 0;
  $pfx = $pfx | 0;
  $s = $s | 0;
  var $buf = 0, $obj = 0, $0 = 0, $emit_state1 = 0, $1 = 0, $arraydecay = 0, $call = 0, $call2 = 0, $arrayidx = 0, $2 = 0, $call4 = 0, $3 = 0, $call6 = 0, $4 = 0, $ptr = 0, $5 = 0, $eptr = 0, $6 = 0, $cmp = 0, $call10 = 0, $7 = 0, $ptr12 = 0, $8 = 0, $incdec_ptr = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $emit_state1 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state1 >> 2] | 0;
    $arraydecay = $buf | 0;
    $call = _strlen($s | 0) | 0;
    $call2 = _sprintf($arraydecay | 0, 117608, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $pfx, HEAP32[tempInt + 8 >> 2] = $call, tempInt) | 0) | 0;
    $arrayidx = 168 + ($1 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $call4 = _agxbput($2, $arraydecay) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $call6 = _agxbput($3, $s) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $ptr = $4 + 4 | 0;
    $5 = HEAP32[$ptr >> 2] | 0;
    $eptr = $4 + 8 | 0;
    $6 = HEAP32[$eptr >> 2] | 0;
    $cmp = $5 >>> 0 < $6 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call10 = _agxbmore($4, 1) | 0;
    label = 4;
    break;
   case 4:
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $ptr12 = $7 + 4 | 0;
    $8 = HEAP32[$ptr12 >> 2] | 0;
    $incdec_ptr = $8 + 1 | 0;
    HEAP32[$ptr12 >> 2] = $incdec_ptr;
    HEAP8[$8] = 32;
    STACKTOP = __stackBase__;
    return;
  }
}
function _dot_begin_graph($job) {
  $job = $job | 0;
  var $e_arrows = 0, $s_arrows = 0, $obj = 0, $0 = 0, $g1 = 0, $1 = 0, $id = 0, $2 = 0, $3 = 0, $flags = 0, $4 = 0, $and = 0, $tobool = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $e_arrows = __stackBase__ | 0;
    $s_arrows = __stackBase__ + 8 | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $g1 = $0 + 8 | 0;
    $1 = HEAP32[$g1 >> 2] | 0;
    $id = $job + 64 | 0;
    $2 = HEAP32[$id >> 2] | 0;
    if (($2 | 0) == 0) {
      label = 3;
      break;
    } else if (($2 | 0) == 1) {
      label = 4;
      break;
    } else if (($2 | 0) == 4) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $3 = $1;
    _attach_attrs($3);
    label = 7;
    break;
   case 4:
    $flags = $1 + 168 | 0;
    $4 = HEAP16[$flags >> 1] | 0;
    $and = $4 & 1;
    $tobool = $and << 16 >> 16 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = $1;
    _undoClusterEdges($5);
    label = 7;
    break;
   case 6:
    $6 = $1;
    _attach_attrs_and_arrows($6, $s_arrows, $e_arrows);
    $7 = HEAP32[$s_arrows >> 2] | 0;
    $8 = HEAP32[$e_arrows >> 2] | 0;
    _xdot_begin_graph($1, $7, $8);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _dot_end_graph($job) {
  $job = $job | 0;
  var $obj = 0, $0 = 0, $g1 = 0, $1 = 0, $id = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $flags = 0, $9 = 0, $and = 0, $tobool = 0, $10 = 0, $11 = 0, $call = 0, $flags5 = 0, $12 = 0, $and6 = 0, $tobool7 = 0, $13 = 0, $14 = 0, $call9 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $g1 = $0 + 8 | 0;
    $1 = HEAP32[$g1 >> 2] | 0;
    _agsetiodisc(0, 170, 288);
    $id = $job + 64 | 0;
    $2 = HEAP32[$id >> 2] | 0;
    if (($2 | 0) == 2) {
      label = 3;
      break;
    } else if (($2 | 0) == 3) {
      label = 4;
      break;
    } else if (($2 | 0) == 0 | ($2 | 0) == 1) {
      label = 5;
      break;
    } else if (($2 | 0) == 4) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $3 = $job;
    $4 = $job;
    $5 = $1;
    _write_plain($4, $5, $3, 0);
    label = 9;
    break;
   case 4:
    $6 = $job;
    $7 = $job;
    $8 = $1;
    _write_plain($7, $8, $6, 1);
    label = 9;
    break;
   case 5:
    $flags = $job + 152 | 0;
    $9 = HEAP32[$flags >> 2] | 0;
    $and = $9 & 134217728;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $10 = $job;
    $11 = $1;
    $call = _agwrite($11, $10) | 0;
    label = 9;
    break;
   case 7:
    _xdot_end_graph($1);
    $flags5 = $job + 152 | 0;
    $12 = HEAP32[$flags5 >> 2] | 0;
    $and6 = $12 & 134217728;
    $tobool7 = ($and6 | 0) == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $13 = $job;
    $14 = $1;
    $call9 = _agwrite($14, $13) | 0;
    label = 9;
    break;
   case 9:
    _agsetiodisc(0, 0, 0);
    return;
  }
}
function _xdot_end_cluster($job) {
  $job = $job | 0;
  var $obj = 0, $0 = 0, $sg = 0, $1 = 0, $2 = 0, $3 = 0, $g_draw = 0, $4 = 0, $index = 0, $5 = 0, $6 = 0, $7 = 0, $cmp = 0, $call = 0, $8 = 0, $9 = 0, $call3 = 0, $label = 0, $10 = 0, $tobool = 0, $11 = 0, $g_l_draw = 0, $12 = 0, $index5 = 0, $13 = 0, $14 = 0, $15 = 0, $cmp8 = 0, $call10 = 0, $16 = 0, $17 = 0, $call18 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $sg = $0 + 8 | 0;
    $1 = HEAP32[$sg >> 2] | 0;
    $2 = $1 | 0;
    $3 = HEAP32[40] | 0;
    $g_draw = $3 | 0;
    $4 = HEAP32[$g_draw >> 2] | 0;
    $index = $4 + 8 | 0;
    $5 = HEAP32[$index >> 2] | 0;
    $6 = HEAP32[59] | 0;
    $7 = HEAP32[60] | 0;
    $cmp = $6 >>> 0 < $7 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _agxbmore(232, 1) | 0;
    label = 4;
    break;
   case 4:
    $8 = HEAP32[59] | 0;
    HEAP8[$8] = 0;
    $9 = HEAP32[58] | 0;
    HEAP32[59] = $9;
    $call3 = _agxset($2, $5, $9) | 0;
    $label = $1 + 52 | 0;
    $10 = HEAP32[$label >> 2] | 0;
    $tobool = ($10 | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $11 = HEAP32[40] | 0;
    $g_l_draw = $11 + 4 | 0;
    $12 = HEAP32[$g_l_draw >> 2] | 0;
    $index5 = $12 + 8 | 0;
    $13 = HEAP32[$index5 >> 2] | 0;
    $14 = HEAP32[75] | 0;
    $15 = HEAP32[76] | 0;
    $cmp8 = $14 >>> 0 < $15 >>> 0;
    if ($cmp8) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call10 = _agxbmore(296, 1) | 0;
    label = 7;
    break;
   case 7:
    $16 = HEAP32[75] | 0;
    HEAP8[$16] = 0;
    $17 = HEAP32[74] | 0;
    HEAP32[75] = $17;
    $call18 = _agxset($2, $13, $17) | 0;
    label = 8;
    break;
   case 8:
    HEAPF64[899] = 1.0;
    HEAPF64[903] = 1.0;
    return;
  }
}
function _xdot_end_node($job) {
  $job = $job | 0;
  var $obj = 0, $0 = 0, $u = 0, $n1 = 0, $1 = 0, $2 = 0, $3 = 0, $tobool = 0, $4 = 0, $5 = 0, $n_draw = 0, $6 = 0, $index = 0, $7 = 0, $8 = 0, $cmp = 0, $call = 0, $9 = 0, $10 = 0, $call6 = 0, $11 = 0, $12 = 0, $tobool12 = 0, $13 = 0, $14 = 0, $n_l_draw = 0, $15 = 0, $index14 = 0, $16 = 0, $17 = 0, $cmp17 = 0, $call19 = 0, $18 = 0, $19 = 0, $call27 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $u = $0 + 8 | 0;
    $n1 = $u;
    $1 = HEAP32[$n1 >> 2] | 0;
    $2 = HEAP32[59] | 0;
    $3 = HEAP32[58] | 0;
    $tobool = ($2 | 0) == ($3 | 0);
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = $1 | 0;
    $5 = HEAP32[40] | 0;
    $n_draw = $5 + 8 | 0;
    $6 = HEAP32[$n_draw >> 2] | 0;
    $index = $6 + 8 | 0;
    $7 = HEAP32[$index >> 2] | 0;
    $8 = HEAP32[60] | 0;
    $cmp = $2 >>> 0 < $8 >>> 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _agxbmore(232, 1) | 0;
    label = 5;
    break;
   case 5:
    $9 = HEAP32[59] | 0;
    HEAP8[$9] = 0;
    $10 = HEAP32[58] | 0;
    HEAP32[59] = $10;
    $call6 = _agxset($4, $7, $10) | 0;
    label = 6;
    break;
   case 6:
    $11 = HEAP32[75] | 0;
    $12 = HEAP32[74] | 0;
    $tobool12 = ($11 | 0) == ($12 | 0);
    if ($tobool12) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $13 = $1 | 0;
    $14 = HEAP32[40] | 0;
    $n_l_draw = $14 + 12 | 0;
    $15 = HEAP32[$n_l_draw >> 2] | 0;
    $index14 = $15 + 8 | 0;
    $16 = HEAP32[$index14 >> 2] | 0;
    $17 = HEAP32[76] | 0;
    $cmp17 = $11 >>> 0 < $17 >>> 0;
    if ($cmp17) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call19 = _agxbmore(296, 1) | 0;
    label = 9;
    break;
   case 9:
    $18 = HEAP32[75] | 0;
    HEAP8[$18] = 0;
    $19 = HEAP32[74] | 0;
    HEAP32[75] = $19;
    $call27 = _agxset($13, $16, $19) | 0;
    label = 10;
    break;
   case 10:
    HEAPF64[906] = 1.0;
    HEAPF64[908] = 1.0;
    return;
  }
}
function _xdot_end_edge($job) {
  $job = $job | 0;
  var $obj = 0, $0 = 0, $u = 0, $e1 = 0, $1 = 0, $2 = 0, $3 = 0, $tobool = 0, $4 = 0, $5 = 0, $e_draw = 0, $6 = 0, $index = 0, $7 = 0, $8 = 0, $cmp = 0, $call = 0, $9 = 0, $10 = 0, $call6 = 0, $11 = 0, $12 = 0, $tobool12 = 0, $13 = 0, $14 = 0, $t_draw = 0, $15 = 0, $index14 = 0, $16 = 0, $17 = 0, $cmp17 = 0, $call19 = 0, $18 = 0, $19 = 0, $call27 = 0, $20 = 0, $21 = 0, $tobool34 = 0, $22 = 0, $23 = 0, $h_draw = 0, $24 = 0, $index36 = 0, $25 = 0, $26 = 0, $cmp39 = 0, $call41 = 0, $27 = 0, $28 = 0, $call49 = 0, $29 = 0, $30 = 0, $tobool56 = 0, $31 = 0, $32 = 0, $e_l_draw = 0, $33 = 0, $index58 = 0, $34 = 0, $35 = 0, $cmp61 = 0, $call63 = 0, $36 = 0, $37 = 0, $call71 = 0, $38 = 0, $39 = 0, $tobool78 = 0, $40 = 0, $41 = 0, $tl_draw = 0, $42 = 0, $index80 = 0, $43 = 0, $44 = 0, $cmp83 = 0, $call85 = 0, $45 = 0, $46 = 0, $call93 = 0, $47 = 0, $48 = 0, $tobool100 = 0, $49 = 0, $50 = 0, $hl_draw = 0, $51 = 0, $index102 = 0, $52 = 0, $53 = 0, $cmp105 = 0, $call107 = 0, $54 = 0, $55 = 0, $call115 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $u = $0 + 8 | 0;
    $e1 = $u;
    $1 = HEAP32[$e1 >> 2] | 0;
    $2 = HEAP32[59] | 0;
    $3 = HEAP32[58] | 0;
    $tobool = ($2 | 0) == ($3 | 0);
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = $1 | 0;
    $5 = HEAP32[40] | 0;
    $e_draw = $5 + 16 | 0;
    $6 = HEAP32[$e_draw >> 2] | 0;
    $index = $6 + 8 | 0;
    $7 = HEAP32[$index >> 2] | 0;
    $8 = HEAP32[60] | 0;
    $cmp = $2 >>> 0 < $8 >>> 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _agxbmore(232, 1) | 0;
    label = 5;
    break;
   case 5:
    $9 = HEAP32[59] | 0;
    HEAP8[$9] = 0;
    $10 = HEAP32[58] | 0;
    HEAP32[59] = $10;
    $call6 = _agxset($4, $7, $10) | 0;
    label = 6;
    break;
   case 6:
    $11 = HEAP32[63] | 0;
    $12 = HEAP32[62] | 0;
    $tobool12 = ($11 | 0) == ($12 | 0);
    if ($tobool12) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $13 = $1 | 0;
    $14 = HEAP32[40] | 0;
    $t_draw = $14 + 24 | 0;
    $15 = HEAP32[$t_draw >> 2] | 0;
    $index14 = $15 + 8 | 0;
    $16 = HEAP32[$index14 >> 2] | 0;
    $17 = HEAP32[64] | 0;
    $cmp17 = $11 >>> 0 < $17 >>> 0;
    if ($cmp17) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call19 = _agxbmore(248, 1) | 0;
    label = 9;
    break;
   case 9:
    $18 = HEAP32[63] | 0;
    HEAP8[$18] = 0;
    $19 = HEAP32[62] | 0;
    HEAP32[63] = $19;
    $call27 = _agxset($13, $16, $19) | 0;
    label = 10;
    break;
   case 10:
    $20 = HEAP32[67] | 0;
    $21 = HEAP32[66] | 0;
    $tobool34 = ($20 | 0) == ($21 | 0);
    if ($tobool34) {
      label = 14;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $22 = $1 | 0;
    $23 = HEAP32[40] | 0;
    $h_draw = $23 + 20 | 0;
    $24 = HEAP32[$h_draw >> 2] | 0;
    $index36 = $24 + 8 | 0;
    $25 = HEAP32[$index36 >> 2] | 0;
    $26 = HEAP32[68] | 0;
    $cmp39 = $20 >>> 0 < $26 >>> 0;
    if ($cmp39) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $call41 = _agxbmore(264, 1) | 0;
    label = 13;
    break;
   case 13:
    $27 = HEAP32[67] | 0;
    HEAP8[$27] = 0;
    $28 = HEAP32[66] | 0;
    HEAP32[67] = $28;
    $call49 = _agxset($22, $25, $28) | 0;
    label = 14;
    break;
   case 14:
    $29 = HEAP32[75] | 0;
    $30 = HEAP32[74] | 0;
    $tobool56 = ($29 | 0) == ($30 | 0);
    if ($tobool56) {
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $31 = $1 | 0;
    $32 = HEAP32[40] | 0;
    $e_l_draw = $32 + 28 | 0;
    $33 = HEAP32[$e_l_draw >> 2] | 0;
    $index58 = $33 + 8 | 0;
    $34 = HEAP32[$index58 >> 2] | 0;
    $35 = HEAP32[76] | 0;
    $cmp61 = $29 >>> 0 < $35 >>> 0;
    if ($cmp61) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call63 = _agxbmore(296, 1) | 0;
    label = 17;
    break;
   case 17:
    $36 = HEAP32[75] | 0;
    HEAP8[$36] = 0;
    $37 = HEAP32[74] | 0;
    HEAP32[75] = $37;
    $call71 = _agxset($31, $34, $37) | 0;
    label = 18;
    break;
   case 18:
    $38 = HEAP32[79] | 0;
    $39 = HEAP32[78] | 0;
    $tobool78 = ($38 | 0) == ($39 | 0);
    if ($tobool78) {
      label = 22;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $40 = $1 | 0;
    $41 = HEAP32[40] | 0;
    $tl_draw = $41 + 36 | 0;
    $42 = HEAP32[$tl_draw >> 2] | 0;
    $index80 = $42 + 8 | 0;
    $43 = HEAP32[$index80 >> 2] | 0;
    $44 = HEAP32[80] | 0;
    $cmp83 = $38 >>> 0 < $44 >>> 0;
    if ($cmp83) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call85 = _agxbmore(312, 1) | 0;
    label = 21;
    break;
   case 21:
    $45 = HEAP32[79] | 0;
    HEAP8[$45] = 0;
    $46 = HEAP32[78] | 0;
    HEAP32[79] = $46;
    $call93 = _agxset($40, $43, $46) | 0;
    label = 22;
    break;
   case 22:
    $47 = HEAP32[83] | 0;
    $48 = HEAP32[82] | 0;
    $tobool100 = ($47 | 0) == ($48 | 0);
    if ($tobool100) {
      label = 26;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $49 = $1 | 0;
    $50 = HEAP32[40] | 0;
    $hl_draw = $50 + 32 | 0;
    $51 = HEAP32[$hl_draw >> 2] | 0;
    $index102 = $51 + 8 | 0;
    $52 = HEAP32[$index102 >> 2] | 0;
    $53 = HEAP32[84] | 0;
    $cmp105 = $47 >>> 0 < $53 >>> 0;
    if ($cmp105) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $call107 = _agxbmore(328, 1) | 0;
    label = 25;
    break;
   case 25:
    $54 = HEAP32[83] | 0;
    HEAP8[$54] = 0;
    $55 = HEAP32[82] | 0;
    HEAP32[83] = $55;
    $call115 = _agxset($49, $52, $55) | 0;
    label = 26;
    break;
   case 26:
    HEAPF64[907] = 1.0;
    HEAPF64[909] = 1.0;
    HEAPF64[900] = 1.0;
    HEAPF64[901] = 1.0;
    HEAPF64[904] = 1.0;
    HEAPF64[905] = 1.0;
    return;
  }
}
function _xdot_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $buf = 0, $obj = 0, $0 = 0, $emit_state1 = 0, $1 = 0, $arraydecay = 0, $fontsize = 0, $2 = 0.0, $call = 0, $arrayidx = 0, $3 = 0, $call3 = 0, $fontname = 0, $4 = 0, $just = 0, $5 = 0, $conv = 0, $j_0 = 0, $6 = 0, $call7 = 0, $7 = 0, $width = 0, $8 = 0.0, $conv10 = 0, $call11 = 0, $9 = 0, $call14 = 0, $str = 0, $10 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $emit_state1 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state1 >> 2] | 0;
    $arraydecay = $buf | 0;
    $fontsize = $para + 24 | 0;
    $2 = +HEAPF64[$fontsize >> 3];
    $call = _sprintf($arraydecay | 0, 127824, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $2, tempInt) | 0) | 0;
    $arrayidx = 168 + ($1 << 2) | 0;
    $3 = HEAP32[$arrayidx >> 2] | 0;
    $call3 = _agxbput($3, $arraydecay) | 0;
    $fontname = $para + 20 | 0;
    $4 = HEAP32[$fontname >> 2] | 0;
    _xdot_str($job, 125984, $4);
    _xdot_pencolor($job);
    $just = $para + 72 | 0;
    $5 = HEAP8[$just] | 0;
    $conv = $5 << 24 >> 24;
    if (($conv | 0) == 114) {
      label = 3;
      break;
    } else if (($conv | 0) == 108) {
      $j_0 = -1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $j_0 = 1;
    label = 5;
    break;
   case 4:
    $j_0 = 0;
    label = 5;
    break;
   case 5:
    $6 = HEAP32[$arrayidx >> 2] | 0;
    $call7 = _agxbput($6, 125184) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    _output_point($7, $p);
    $width = $para + 56 | 0;
    $8 = +HEAPF64[$width >> 3];
    $conv10 = ~~$8;
    $call11 = _sprintf($arraydecay | 0, 155152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $j_0, HEAP32[tempInt + 8 >> 2] = $conv10, tempInt) | 0) | 0;
    $9 = HEAP32[$arrayidx >> 2] | 0;
    $call14 = _agxbput($9, $arraydecay) | 0;
    $str = $para | 0;
    $10 = HEAP32[$str >> 2] | 0;
    _xdot_str($job, 125984, $10);
    STACKTOP = __stackBase__;
    return;
  }
}
function _xdot_ellipse($job, $A, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $filled = $filled | 0;
  var $buf = 0, $obj = 0, $0 = 0, $emit_state1 = 0, $1 = 0, $tobool = 0, $arrayidx = 0, $2 = 0, $call = 0, $arrayidx2 = 0, $3 = 0, $call3 = 0, $arrayidx4 = 0, $4 = 0, $arraydecay = 0, $x = 0, $5 = 0.0, $x8 = 0, $6 = 0.0, $sub = 0.0, $cmp = 0, $add = 0.0, $sub19 = 0.0, $add_sink = 0.0, $conv = 0, $y = 0, $7 = 0.0, $y23 = 0, $8 = 0.0, $sub24 = 0.0, $cmp25 = 0, $add33 = 0.0, $sub41 = 0.0, $add33_sink = 0.0, $conv34 = 0, $call45 = 0, $9 = 0, $call48 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $emit_state1 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state1 >> 2] | 0;
    _xdot_style($job);
    _xdot_pencolor($job);
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _xdot_fillcolor($job);
    $arrayidx = 168 + ($1 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $call = _agxbput($2, 131760) | 0;
    label = 5;
    break;
   case 4:
    $arrayidx2 = 168 + ($1 << 2) | 0;
    $3 = HEAP32[$arrayidx2 >> 2] | 0;
    $call3 = _agxbput($3, 129944) | 0;
    label = 5;
    break;
   case 5:
    $arrayidx4 = 168 + ($1 << 2) | 0;
    $4 = HEAP32[$arrayidx4 >> 2] | 0;
    _output_point($4, $A);
    $arraydecay = $buf | 0;
    $x = $A + 16 | 0;
    $5 = +HEAPF64[$x >> 3];
    $x8 = $A | 0;
    $6 = +HEAPF64[$x8 >> 3];
    $sub = $5 - $6;
    $cmp = $sub < 0.0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $add = $sub + .5;
    $add_sink = $add;
    label = 8;
    break;
   case 7:
    $sub19 = $sub + -.5;
    $add_sink = $sub19;
    label = 8;
    break;
   case 8:
    $conv = ~~$add_sink;
    $y = $A + 24 | 0;
    $7 = +HEAPF64[$y >> 3];
    $y23 = $A + 8 | 0;
    $8 = +HEAPF64[$y23 >> 3];
    $sub24 = $7 - $8;
    $cmp25 = $sub24 < 0.0;
    if ($cmp25) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add33 = $sub24 + .5;
    $add33_sink = $add33;
    label = 11;
    break;
   case 10:
    $sub41 = $sub24 + -.5;
    $add33_sink = $sub41;
    label = 11;
    break;
   case 11:
    $conv34 = ~~$add33_sink;
    $call45 = _sprintf($arraydecay | 0, 155152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv, HEAP32[tempInt + 8 >> 2] = $conv34, tempInt) | 0) | 0;
    $9 = HEAP32[$arrayidx4 >> 2] | 0;
    $call48 = _agxbput($9, $arraydecay) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _xdot_polygon($job, $A, $n, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _xdot_style($job);
    _xdot_pencolor($job);
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _xdot_fillcolor($job);
    _xdot_points($job, 80, $A, $n);
    label = 5;
    break;
   case 4:
    _xdot_points($job, 112, $A, $n);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _xdot_bezier($job, $A, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    _xdot_style($job);
    _xdot_pencolor($job);
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _xdot_fillcolor($job);
    _xdot_points($job, 98, $A, $n);
    label = 5;
    break;
   case 4:
    _xdot_points($job, 66, $A, $n);
    label = 5;
    break;
   case 5:
    return;
  }
}
function _xdot_polyline($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  _xdot_style($job);
  _xdot_pencolor($job);
  _xdot_points($job, 76, $A, $n);
  return;
}
function _xdot_style($job) {
  $job = $job | 0;
  var $buf = 0, $xbuf = 0, $obj = 0, $0 = 0, $penwidth = 0, $1 = 0.0, $emit_state = 0, $2 = 0, $arrayidx = 0, $3 = 0.0, $cmp = 0, $arraydecay = 0, $4 = 0, $penwidth8 = 0, $5 = 0.0, $call = 0, $6 = 0, $rawstyle = 0, $7 = 0, $tobool = 0, $arraydecay13 = 0, $8 = 0, $tobool1427 = 0, $ptr87 = 0, $eptr88 = 0, $buf98 = 0, $ptr = 0, $eptr = 0, $9 = 0, $_pn = 0, $incdec_ptr28 = 0, $10 = 0, $cmp16 = 0, $call18 = 0, $tobool19 = 0, $_pr = 0, $11 = 0, $cmp22 = 0, $call25 = 0, $tobool26 = 0, $12 = 0, $cmp30 = 0, $call33 = 0, $tobool34 = 0, $call37 = 0, $p_0 = 0, $13 = 0, $tobool39 = 0, $incdec_ptr41 = 0, $14 = 0, $tobool43 = 0, $15 = 0, $16 = 0, $cmp45 = 0, $call47 = 0, $17 = 0, $incdec_ptr49 = 0, $18 = 0, $tobool5123 = 0, $more_025 = 0, $p_124 = 0, $tobool53 = 0, $19 = 0, $20 = 0, $cmp57 = 0, $call60 = 0, $21 = 0, $incdec_ptr65 = 0, $call67 = 0, $p_2 = 0, $22 = 0, $tobool69 = 0, $incdec_ptr71 = 0, $inc = 0, $23 = 0, $tobool51 = 0, $24 = 0, $25 = 0, $cmp77 = 0, $call80 = 0, $26 = 0, $incdec_ptr85 = 0, $27 = 0, $28 = 0, $cmp89 = 0, $call92 = 0, $29 = 0, $30 = 0, $31 = 0, $tobool14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1040 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $xbuf = __stackBase__ + 1024 | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $penwidth = $0 + 104 | 0;
    $1 = +HEAPF64[$penwidth >> 3];
    $emit_state = $0 + 12 | 0;
    $2 = HEAP32[$emit_state >> 2] | 0;
    $arrayidx = 7184 + ($2 << 3) | 0;
    $3 = +HEAPF64[$arrayidx >> 3];
    $cmp = $1 != $3;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAPF64[$arrayidx >> 3] = $1;
    $arraydecay = $buf | 0;
    $4 = HEAP32[$obj >> 2] | 0;
    $penwidth8 = $4 + 104 | 0;
    $5 = +HEAPF64[$penwidth8 >> 3];
    $call = _sprintf($arraydecay | 0, 148408, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $5, tempInt) | 0) | 0;
    _xdot_str($job, 145648, $arraydecay);
    label = 4;
    break;
   case 4:
    $6 = HEAP32[$obj >> 2] | 0;
    $rawstyle = $6 + 112 | 0;
    $7 = HEAP32[$rawstyle >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      label = 35;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $arraydecay13 = $buf | 0;
    _agxbinit($xbuf, 1024, $arraydecay13);
    $8 = HEAP32[$7 >> 2] | 0;
    $tobool1427 = ($8 | 0) == 0;
    if ($tobool1427) {
      label = 34;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $ptr87 = $xbuf + 4 | 0;
    $eptr88 = $xbuf + 8 | 0;
    $buf98 = $xbuf | 0;
    $ptr = $xbuf + 4 | 0;
    $eptr = $xbuf + 8 | 0;
    $_pn = $7;
    $9 = $8;
    label = 7;
    break;
   case 7:
    $incdec_ptr28 = $_pn + 4 | 0;
    $10 = HEAP8[$9] | 0;
    $cmp16 = $10 << 24 >> 24 == 102;
    if ($cmp16) {
      label = 8;
      break;
    } else {
      $11 = $10;
      label = 10;
      break;
    }
   case 8:
    $call18 = _strcmp($9 | 0, 142608) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 33;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $_pr = HEAP8[$9] | 0;
    $11 = $_pr;
    label = 10;
    break;
   case 10:
    $cmp22 = $11 << 24 >> 24 == 98;
    if ($cmp22) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $call25 = _strcmp($9 | 0, 139112) | 0;
    $tobool26 = ($call25 | 0) == 0;
    if ($tobool26) {
      label = 33;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $12 = HEAP8[$9] | 0;
    $cmp30 = $12 << 24 >> 24 == 115;
    if ($cmp30) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $call33 = _strcmp($9 | 0, 136344) | 0;
    $tobool34 = ($call33 | 0) == 0;
    if ($tobool34) {
      label = 33;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call37 = _agxbput($xbuf, $9) | 0;
    $p_0 = $9;
    label = 15;
    break;
   case 15:
    $13 = HEAP8[$p_0] | 0;
    $tobool39 = $13 << 24 >> 24 == 0;
    $incdec_ptr41 = $p_0 + 1 | 0;
    if ($tobool39) {
      label = 16;
      break;
    } else {
      $p_0 = $incdec_ptr41;
      label = 15;
      break;
    }
   case 16:
    $14 = HEAP8[$incdec_ptr41] | 0;
    $tobool43 = $14 << 24 >> 24 == 0;
    if ($tobool43) {
      label = 30;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $15 = HEAP32[$ptr >> 2] | 0;
    $16 = HEAP32[$eptr >> 2] | 0;
    $cmp45 = $15 >>> 0 < $16 >>> 0;
    if ($cmp45) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $call47 = _agxbmore($xbuf, 1) | 0;
    label = 19;
    break;
   case 19:
    $17 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr49 = $17 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr49;
    HEAP8[$17] = 40;
    $18 = HEAP8[$incdec_ptr41] | 0;
    $tobool5123 = $18 << 24 >> 24 == 0;
    if ($tobool5123) {
      label = 27;
      break;
    } else {
      $p_124 = $incdec_ptr41;
      $more_025 = 0;
      label = 20;
      break;
    }
   case 20:
    $tobool53 = ($more_025 | 0) == 0;
    if ($tobool53) {
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $19 = HEAP32[$ptr >> 2] | 0;
    $20 = HEAP32[$eptr >> 2] | 0;
    $cmp57 = $19 >>> 0 < $20 >>> 0;
    if ($cmp57) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $call60 = _agxbmore($xbuf, 1) | 0;
    label = 23;
    break;
   case 23:
    $21 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr65 = $21 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr65;
    HEAP8[$21] = 44;
    label = 24;
    break;
   case 24:
    $call67 = _agxbput($xbuf, $p_124) | 0;
    $p_2 = $p_124;
    label = 25;
    break;
   case 25:
    $22 = HEAP8[$p_2] | 0;
    $tobool69 = $22 << 24 >> 24 == 0;
    $incdec_ptr71 = $p_2 + 1 | 0;
    if ($tobool69) {
      label = 26;
      break;
    } else {
      $p_2 = $incdec_ptr71;
      label = 25;
      break;
    }
   case 26:
    $inc = $more_025 + 1 | 0;
    $23 = HEAP8[$incdec_ptr71] | 0;
    $tobool51 = $23 << 24 >> 24 == 0;
    if ($tobool51) {
      label = 27;
      break;
    } else {
      $p_124 = $incdec_ptr71;
      $more_025 = $inc;
      label = 20;
      break;
    }
   case 27:
    $24 = HEAP32[$ptr >> 2] | 0;
    $25 = HEAP32[$eptr >> 2] | 0;
    $cmp77 = $24 >>> 0 < $25 >>> 0;
    if ($cmp77) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $call80 = _agxbmore($xbuf, 1) | 0;
    label = 29;
    break;
   case 29:
    $26 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr85 = $26 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr85;
    HEAP8[$26] = 41;
    label = 30;
    break;
   case 30:
    $27 = HEAP32[$ptr87 >> 2] | 0;
    $28 = HEAP32[$eptr88 >> 2] | 0;
    $cmp89 = $27 >>> 0 < $28 >>> 0;
    if ($cmp89) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $call92 = _agxbmore($xbuf, 1) | 0;
    label = 32;
    break;
   case 32:
    $29 = HEAP32[$ptr87 >> 2] | 0;
    HEAP8[$29] = 0;
    $30 = HEAP32[$buf98 >> 2] | 0;
    HEAP32[$ptr87 >> 2] = $30;
    _xdot_str($job, 145648, $30);
    label = 33;
    break;
   case 33:
    $31 = HEAP32[$incdec_ptr28 >> 2] | 0;
    $tobool14 = ($31 | 0) == 0;
    if ($tobool14) {
      label = 34;
      break;
    } else {
      $_pn = $incdec_ptr28;
      $9 = $31;
      label = 7;
      break;
    }
   case 34:
    _agxbfree($xbuf);
    label = 35;
    break;
   case 35:
    STACKTOP = __stackBase__;
    return;
  }
}
function _xdot_pencolor($job) {
  $job = $job | 0;
  _color2str((HEAP32[$job + 16 >> 2] | 0) + 16 | 0);
  _xdot_str($job, 153792, 53192);
  return;
}
function _xdot_points($job, $c, $A, $n) {
  $job = $job | 0;
  $c = $c | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $buf = 0, $obj = 0, $0 = 0, $emit_state1 = 0, $1 = 0, $arrayidx = 0, $2 = 0, $ptr = 0, $3 = 0, $eptr = 0, $4 = 0, $cmp = 0, $call = 0, $5 = 0, $ptr5 = 0, $6 = 0, $incdec_ptr = 0, $arraydecay = 0, $call6 = 0, $7 = 0, $call9 = 0, $cmp109 = 0, $8 = 0, $i_010 = 0, $arrayidx13 = 0, $inc = 0, $cmp10 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1024 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $emit_state1 = $0 + 12 | 0;
    $1 = HEAP32[$emit_state1 >> 2] | 0;
    $arrayidx = 168 + ($1 << 2) | 0;
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $ptr = $2 + 4 | 0;
    $3 = HEAP32[$ptr >> 2] | 0;
    $eptr = $2 + 8 | 0;
    $4 = HEAP32[$eptr >> 2] | 0;
    $cmp = $3 >>> 0 < $4 >>> 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call = _agxbmore($2, 1) | 0;
    label = 4;
    break;
   case 4:
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $ptr5 = $5 + 4 | 0;
    $6 = HEAP32[$ptr5 >> 2] | 0;
    $incdec_ptr = $6 + 1 | 0;
    HEAP32[$ptr5 >> 2] = $incdec_ptr;
    HEAP8[$6] = $c;
    $arraydecay = $buf | 0;
    $call6 = _sprintf($arraydecay | 0, 158640, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $n, tempInt) | 0) | 0;
    $7 = HEAP32[$arrayidx >> 2] | 0;
    $call9 = _agxbput($7, $arraydecay) | 0;
    $cmp109 = ($n | 0) > 0;
    if ($cmp109) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $8 = HEAP32[$arrayidx >> 2] | 0;
    $i_010 = 0;
    label = 6;
    break;
   case 6:
    $arrayidx13 = $A + ($i_010 << 4) | 0;
    _output_point($8, $arrayidx13);
    $inc = $i_010 + 1 | 0;
    $cmp10 = ($inc | 0) < ($n | 0);
    if ($cmp10) {
      $i_010 = $inc;
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _color2str($rgba) {
  $rgba = $rgba | 0;
  var $conv2 = 0, $conv4 = 0, $conv6 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $conv2 = HEAPU8[$rgba + 1 | 0] | 0;
  $conv4 = HEAPU8[$rgba + 2 | 0] | 0;
  $conv6 = HEAPU8[$rgba + 3 | 0] | 0;
  _sprintf(53192, 151688, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = HEAPU8[$rgba] | 0, HEAP32[tempInt + 8 >> 2] = $conv2, HEAP32[tempInt + 16 >> 2] = $conv4, HEAP32[tempInt + 24 >> 2] = $conv6, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _xdot_fillcolor($job) {
  $job = $job | 0;
  _color2str((HEAP32[$job + 16 >> 2] | 0) + 56 | 0);
  _xdot_str($job, 134e3, 53192);
  return;
}
function _fig_begin_page($job) {
  $job = $job | 0;
  HEAP32[41980] = 2;
  return;
}
function _fig_begin_node($job) {
  $job = $job | 0;
  HEAP32[41980] = 1;
  return;
}
function _fig_end_node($job) {
  $job = $job | 0;
  HEAP32[41980] = 2;
  return;
}
function _fig_begin_edge($job) {
  $job = $job | 0;
  HEAP32[41980] = 0;
  return;
}
function _fig_end_edge($job) {
  $job = $job | 0;
  HEAP32[41980] = 2;
  return;
}
function _fig_line_style($obj, $line_style, $style_val) {
  $obj = $obj | 0;
  $line_style = $line_style | 0;
  $style_val = $style_val | 0;
  var $pen = 0, $0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pen = $obj + 96 | 0;
    $0 = HEAP32[$pen >> 2] | 0;
    if (($0 | 0) == 1) {
      label = 3;
      break;
    } else if (($0 | 0) == 2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    HEAP32[$line_style >> 2] = 1;
    HEAPF64[$style_val >> 3] = 10.0;
    label = 6;
    break;
   case 4:
    HEAP32[$line_style >> 2] = 2;
    HEAPF64[$style_val >> 3] = 10.0;
    label = 6;
    break;
   case 5:
    HEAP32[$line_style >> 2] = 0;
    HEAPF64[$style_val >> 3] = 0.0;
    label = 6;
    break;
   case 6:
    return;
  }
}
function _xdot_end_graph($g) {
  $g = $g | 0;
  var $0 = 0, $1 = 0, $tobool = 0, $2 = 0, $g_draw = 0, $3 = 0, $tobool1 = 0, $4 = 0, $5 = 0, $call = 0, $6 = 0, $g_draw3 = 0, $7 = 0, $8 = 0, $g_draw4 = 0, $9 = 0, $index = 0, $10 = 0, $11 = 0, $12 = 0, $cmp = 0, $call6 = 0, $13 = 0, $14 = 0, $call10 = 0, $label = 0, $15 = 0, $tobool12 = 0, $16 = 0, $17 = 0, $g_l_draw = 0, $18 = 0, $index14 = 0, $19 = 0, $20 = 0, $21 = 0, $cmp17 = 0, $call19 = 0, $22 = 0, $23 = 0, $call27 = 0, $24 = 0, $call29 = 0, $25 = 0, $26 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[55] | 0;
    $1 = HEAP32[54] | 0;
    $tobool = ($0 | 0) == ($1 | 0);
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[40] | 0;
    $g_draw = $2 | 0;
    $3 = HEAP32[$g_draw >> 2] | 0;
    $tobool1 = ($3 | 0) == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $4 = $g | 0;
    $5 = $g;
    $call = _safe_dcl($5, $4, 123216, 125984, 360) | 0;
    $6 = HEAP32[40] | 0;
    $g_draw3 = $6 | 0;
    HEAP32[$g_draw3 >> 2] = $call;
    label = 5;
    break;
   case 5:
    $7 = $g | 0;
    $8 = HEAP32[40] | 0;
    $g_draw4 = $8 | 0;
    $9 = HEAP32[$g_draw4 >> 2] | 0;
    $index = $9 + 8 | 0;
    $10 = HEAP32[$index >> 2] | 0;
    $11 = HEAP32[55] | 0;
    $12 = HEAP32[56] | 0;
    $cmp = $11 >>> 0 < $12 >>> 0;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call6 = _agxbmore(216, 1) | 0;
    label = 7;
    break;
   case 7:
    $13 = HEAP32[55] | 0;
    HEAP8[$13] = 0;
    $14 = HEAP32[54] | 0;
    HEAP32[55] = $14;
    $call10 = _agxset($7, $10, $14) | 0;
    label = 8;
    break;
   case 8:
    $label = $g + 52 | 0;
    $15 = HEAP32[$label >> 2] | 0;
    $tobool12 = ($15 | 0) == 0;
    if ($tobool12) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $16 = $g | 0;
    $17 = HEAP32[40] | 0;
    $g_l_draw = $17 + 4 | 0;
    $18 = HEAP32[$g_l_draw >> 2] | 0;
    $index14 = $18 + 8 | 0;
    $19 = HEAP32[$index14 >> 2] | 0;
    $20 = HEAP32[71] | 0;
    $21 = HEAP32[72] | 0;
    $cmp17 = $20 >>> 0 < $21 >>> 0;
    if ($cmp17) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call19 = _agxbmore(280, 1) | 0;
    label = 11;
    break;
   case 11:
    $22 = HEAP32[71] | 0;
    HEAP8[$22] = 0;
    $23 = HEAP32[70] | 0;
    HEAP32[71] = $23;
    $call27 = _agxset($16, $19, $23) | 0;
    label = 12;
    break;
   case 12:
    $24 = $g | 0;
    $call29 = _agsafeset($24, 121776, 121168, 125984) | 0;
    _agxbfree(216);
    _agxbfree(232);
    _agxbfree(248);
    _agxbfree(264);
    _agxbfree(280);
    _agxbfree(296);
    _agxbfree(312);
    _agxbfree(328);
    $25 = HEAP32[40] | 0;
    $26 = $25;
    _free($26);
    HEAPF64[898] = 1.0;
    HEAPF64[902] = 1.0;
    return;
  }
}
function _xdot_begin_graph($g, $s_arrows, $e_arrows) {
  $g = $g | 0;
  $s_arrows = $s_arrows | 0;
  $e_arrows = $e_arrows | 0;
  var $call = 0, $0 = 0, $n_cluster = 0, $1 = 0, $tobool = 0, $2 = 0, $3 = 0, $call1 = 0, $4 = 0, $g_draw = 0, $g_draw2 = 0, $has_labels = 0, $5 = 0, $and = 0, $tobool4 = 0, $6 = 0, $7 = 0, $call6 = 0, $8 = 0, $g_l_draw = 0, $9 = 0, $g_l_draw8 = 0, $proto = 0, $10 = 0, $n = 0, $11 = 0, $12 = 0, $13 = 0, $call10 = 0, $14 = 0, $n_draw = 0, $15 = 0, $n12 = 0, $16 = 0, $17 = 0, $call13 = 0, $18 = 0, $n_l_draw = 0, $19 = 0, $e = 0, $20 = 0, $21 = 0, $call15 = 0, $22 = 0, $e_draw = 0, $tobool16 = 0, $23 = 0, $e19 = 0, $24 = 0, $25 = 0, $call20 = 0, $26 = 0, $h_draw = 0, $27 = 0, $h_draw22 = 0, $tobool24 = 0, $28 = 0, $e27 = 0, $29 = 0, $30 = 0, $call28 = 0, $31 = 0, $t_draw = 0, $32 = 0, $t_draw30 = 0, $33 = 0, $and35 = 0, $tobool36 = 0, $34 = 0, $e39 = 0, $35 = 0, $36 = 0, $call40 = 0, $37 = 0, $e_l_draw = 0, $38 = 0, $e_l_draw42 = 0, $39 = 0, $and47 = 0, $tobool48 = 0, $40 = 0, $e51 = 0, $41 = 0, $42 = 0, $call52 = 0, $43 = 0, $hl_draw = 0, $44 = 0, $hl_draw54 = 0, $45 = 0, $and59 = 0, $tobool60 = 0, $46 = 0, $e63 = 0, $47 = 0, $48 = 0, $call64 = 0, $49 = 0, $tl_draw = 0, $50 = 0, $tl_draw66 = 0, $51 = 0, $arraydecay = 0, $52 = 0, $arraydecay_1 = 0, $53 = 0, $arraydecay_2 = 0, $54 = 0, $arraydecay_3 = 0, $55 = 0, $arraydecay_4 = 0, $56 = 0, $arraydecay_5 = 0, $57 = 0, $arraydecay_6 = 0, $58 = 0, $arraydecay_7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _malloc(8232) | 0;
    $0 = $call;
    HEAP32[40] = $0;
    $n_cluster = $g + 212 | 0;
    $1 = HEAP32[$n_cluster >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $g | 0;
    $3 = $g;
    $call1 = _safe_dcl($3, $2, 123216, 125984, 360) | 0;
    $4 = HEAP32[40] | 0;
    $g_draw = $4 | 0;
    HEAP32[$g_draw >> 2] = $call1;
    label = 5;
    break;
   case 4:
    $g_draw2 = $call;
    HEAP32[$g_draw2 >> 2] = 0;
    label = 5;
    break;
   case 5:
    $has_labels = $g + 153 | 0;
    $5 = HEAP8[$has_labels] | 0;
    $and = $5 & 8;
    $tobool4 = $and << 24 >> 24 == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $6 = $g | 0;
    $7 = $g;
    $call6 = _safe_dcl($7, $6, 120480, 125984, 360) | 0;
    $8 = HEAP32[40] | 0;
    $g_l_draw = $8 + 4 | 0;
    HEAP32[$g_l_draw >> 2] = $call6;
    label = 8;
    break;
   case 7:
    $9 = HEAP32[40] | 0;
    $g_l_draw8 = $9 + 4 | 0;
    HEAP32[$g_l_draw8 >> 2] = 0;
    label = 8;
    break;
   case 8:
    $proto = $g + 40 | 0;
    $10 = HEAP32[$proto >> 2] | 0;
    $n = $10 | 0;
    $11 = HEAP32[$n >> 2] | 0;
    $12 = $11 | 0;
    $13 = $g;
    $call10 = _safe_dcl($13, $12, 123216, 125984, 380) | 0;
    $14 = HEAP32[40] | 0;
    $n_draw = $14 + 8 | 0;
    HEAP32[$n_draw >> 2] = $call10;
    $15 = HEAP32[$proto >> 2] | 0;
    $n12 = $15 | 0;
    $16 = HEAP32[$n12 >> 2] | 0;
    $17 = $16 | 0;
    $call13 = _safe_dcl($13, $17, 120480, 125984, 380) | 0;
    $18 = HEAP32[40] | 0;
    $n_l_draw = $18 + 12 | 0;
    HEAP32[$n_l_draw >> 2] = $call13;
    $19 = HEAP32[$proto >> 2] | 0;
    $e = $19 + 4 | 0;
    $20 = HEAP32[$e >> 2] | 0;
    $21 = $20 | 0;
    $call15 = _safe_dcl($13, $21, 123216, 125984, 654) | 0;
    $22 = HEAP32[40] | 0;
    $e_draw = $22 + 16 | 0;
    HEAP32[$e_draw >> 2] = $call15;
    $tobool16 = ($e_arrows | 0) == 0;
    if ($tobool16) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $23 = HEAP32[$proto >> 2] | 0;
    $e19 = $23 + 4 | 0;
    $24 = HEAP32[$e19 >> 2] | 0;
    $25 = $24 | 0;
    $call20 = _safe_dcl($13, $25, 119816, 125984, 654) | 0;
    $26 = HEAP32[40] | 0;
    $h_draw = $26 + 20 | 0;
    HEAP32[$h_draw >> 2] = $call20;
    label = 11;
    break;
   case 10:
    $27 = HEAP32[40] | 0;
    $h_draw22 = $27 + 20 | 0;
    HEAP32[$h_draw22 >> 2] = 0;
    label = 11;
    break;
   case 11:
    $tobool24 = ($s_arrows | 0) == 0;
    if ($tobool24) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $28 = HEAP32[$proto >> 2] | 0;
    $e27 = $28 + 4 | 0;
    $29 = HEAP32[$e27 >> 2] | 0;
    $30 = $29 | 0;
    $call28 = _safe_dcl($13, $30, 119280, 125984, 654) | 0;
    $31 = HEAP32[40] | 0;
    $t_draw = $31 + 24 | 0;
    HEAP32[$t_draw >> 2] = $call28;
    label = 14;
    break;
   case 13:
    $32 = HEAP32[40] | 0;
    $t_draw30 = $32 + 24 | 0;
    HEAP32[$t_draw30 >> 2] = 0;
    label = 14;
    break;
   case 14:
    $33 = HEAP8[$has_labels] | 0;
    $and35 = $33 & 1;
    $tobool36 = $and35 << 24 >> 24 == 0;
    if ($tobool36) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $34 = HEAP32[$proto >> 2] | 0;
    $e39 = $34 + 4 | 0;
    $35 = HEAP32[$e39 >> 2] | 0;
    $36 = $35 | 0;
    $call40 = _safe_dcl($13, $36, 120480, 125984, 654) | 0;
    $37 = HEAP32[40] | 0;
    $e_l_draw = $37 + 28 | 0;
    HEAP32[$e_l_draw >> 2] = $call40;
    label = 17;
    break;
   case 16:
    $38 = HEAP32[40] | 0;
    $e_l_draw42 = $38 + 28 | 0;
    HEAP32[$e_l_draw42 >> 2] = 0;
    label = 17;
    break;
   case 17:
    $39 = HEAP8[$has_labels] | 0;
    $and47 = $39 & 2;
    $tobool48 = $and47 << 24 >> 24 == 0;
    if ($tobool48) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $40 = HEAP32[$proto >> 2] | 0;
    $e51 = $40 + 4 | 0;
    $41 = HEAP32[$e51 >> 2] | 0;
    $42 = $41 | 0;
    $call52 = _safe_dcl($13, $42, 118736, 125984, 654) | 0;
    $43 = HEAP32[40] | 0;
    $hl_draw = $43 + 32 | 0;
    HEAP32[$hl_draw >> 2] = $call52;
    label = 20;
    break;
   case 19:
    $44 = HEAP32[40] | 0;
    $hl_draw54 = $44 + 32 | 0;
    HEAP32[$hl_draw54 >> 2] = 0;
    label = 20;
    break;
   case 20:
    $45 = HEAP8[$has_labels] | 0;
    $and59 = $45 & 4;
    $tobool60 = $and59 << 24 >> 24 == 0;
    if ($tobool60) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $46 = HEAP32[$proto >> 2] | 0;
    $e63 = $46 + 4 | 0;
    $47 = HEAP32[$e63 >> 2] | 0;
    $48 = $47 | 0;
    $call64 = _safe_dcl($13, $48, 118152, 125984, 654) | 0;
    $49 = HEAP32[40] | 0;
    $tl_draw = $49 + 36 | 0;
    HEAP32[$tl_draw >> 2] = $call64;
    label = 23;
    break;
   case 22:
    $50 = HEAP32[40] | 0;
    $tl_draw66 = $50 + 36 | 0;
    HEAP32[$tl_draw66 >> 2] = 0;
    label = 23;
    break;
   case 23:
    $51 = HEAP32[40] | 0;
    $arraydecay = $51 + 40 | 0;
    _agxbinit(216, 1024, $arraydecay);
    $52 = HEAP32[40] | 0;
    $arraydecay_1 = $52 + 1064 | 0;
    _agxbinit(232, 1024, $arraydecay_1);
    $53 = HEAP32[40] | 0;
    $arraydecay_2 = $53 + 2088 | 0;
    _agxbinit(248, 1024, $arraydecay_2);
    $54 = HEAP32[40] | 0;
    $arraydecay_3 = $54 + 3112 | 0;
    _agxbinit(264, 1024, $arraydecay_3);
    $55 = HEAP32[40] | 0;
    $arraydecay_4 = $55 + 4136 | 0;
    _agxbinit(280, 1024, $arraydecay_4);
    $56 = HEAP32[40] | 0;
    $arraydecay_5 = $56 + 5160 | 0;
    _agxbinit(296, 1024, $arraydecay_5);
    $57 = HEAP32[40] | 0;
    $arraydecay_6 = $57 + 6184 | 0;
    _agxbinit(312, 1024, $arraydecay_6);
    $58 = HEAP32[40] | 0;
    $arraydecay_7 = $58 + 7208 | 0;
    _agxbinit(328, 1024, $arraydecay_7);
    return;
  }
}
function _fig_begin_graph($job) {
  $job = $job | 0;
  var $0 = 0, $1 = 0, $3 = 0, $5 = 0, $6 = 0, $mul = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  $1 = $job;
  _gvputs($1, 121576);
  $3 = HEAP32[HEAP32[$job + 12 >> 2] >> 2] | 0;
  $5 = HEAP32[$3 + 4 >> 2] | 0;
  $6 = HEAP32[$3 + 8 >> 2] | 0;
  _gvprintf($1, 120936, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = HEAP32[$3 >> 2] | 0, HEAP32[tempInt + 8 >> 2] = $5, HEAP32[tempInt + 16 >> 2] = $6, tempInt) | 0);
  _gvprintf($1, 120208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = HEAP32[(HEAP32[$0 + 8 >> 2] | 0) + 12 >> 2] | 0, tempInt) | 0);
  $mul = Math_imul(HEAP32[$job + 168 >> 2] | 0, HEAP32[$job + 164 >> 2] | 0);
  _gvprintf($1, 119592, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $mul, tempInt) | 0);
  _gvputs($1, 119032);
  _gvputs($1, 118568);
  _gvputs($1, 117936);
  _gvputs($1, 117352);
  _gvputs($1, 116720);
  _gvputs($1, 116416);
  _gvputs($1, 115904);
  _gvputs($1, 115472);
  _gvputs($1, 114920);
  STACKTOP = __stackBase__;
  return;
}
function _fig_end_graph($job) {
  $job = $job | 0;
  _gvputs($job, 122592);
  return;
}
function _fig_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $obj1 = 0, $0 = 0, $u = 0, $index = 0, $1 = 0, $2 = 0, $fontsize = 0, $3 = 0.0, $zoom = 0, $4 = 0.0, $mul = 0.0, $rotation = 0, $5 = 0, $tobool = 0, $cond = 0.0, $postscript_alias = 0, $6 = 0, $tobool2 = 0, $xfig_code = 0, $7 = 0, $font_0 = 0, $just = 0, $8 = 0, $conv = 0, $sub_type_0 = 0, $x = 0, $9 = 0.0, $cmp = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv8 = 0, $y = 0, $10 = 0.0, $cmp12 = 0, $add16 = 0.0, $sub20 = 0.0, $add16_sink = 0.0, $conv17 = 0, $str = 0, $11 = 0, $call = 0, $12 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $u = $0 + 16 | 0;
    $index = $u;
    $1 = HEAP32[$index >> 2] | 0;
    $2 = HEAP32[41980] | 0;
    $fontsize = $para + 24 | 0;
    $3 = +HEAPF64[$fontsize >> 3];
    $zoom = $job + 352 | 0;
    $4 = +HEAPF64[$zoom >> 3];
    $mul = $3 * $4;
    $rotation = $job + 360 | 0;
    $5 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($5 | 0) != 0;
    $cond = $tobool ? 1.5707963267948966 : 0.0;
    $postscript_alias = $para + 4 | 0;
    $6 = HEAP32[$postscript_alias >> 2] | 0;
    $tobool2 = ($6 | 0) == 0;
    if ($tobool2) {
      $font_0 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $xfig_code = $6 + 20 | 0;
    $7 = HEAP32[$xfig_code >> 2] | 0;
    $font_0 = $7;
    label = 4;
    break;
   case 4:
    $just = $para + 72 | 0;
    $8 = HEAP8[$just] | 0;
    $conv = $8 << 24 >> 24;
    if (($conv | 0) == 114) {
      label = 5;
      break;
    } else if (($conv | 0) == 108) {
      $sub_type_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $sub_type_0 = 2;
    label = 7;
    break;
   case 6:
    $sub_type_0 = 1;
    label = 7;
    break;
   case 7:
    $x = $p | 0;
    $9 = +HEAPF64[$x >> 3];
    $cmp = $9 < 0.0;
    if ($cmp) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add = $9 + .5;
    $add_sink = $add;
    label = 10;
    break;
   case 9:
    $sub = $9 + -.5;
    $add_sink = $sub;
    label = 10;
    break;
   case 10:
    $conv8 = ~~$add_sink;
    $y = $p + 8 | 0;
    $10 = +HEAPF64[$y >> 3];
    $cmp12 = $10 < 0.0;
    if ($cmp12) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $add16 = $10 + .5;
    $add16_sink = $add16;
    label = 13;
    break;
   case 12:
    $sub20 = $10 + -.5;
    $add16_sink = $sub20;
    label = 13;
    break;
   case 13:
    $conv17 = ~~$add16_sink;
    $str = $para | 0;
    $11 = HEAP32[$str >> 2] | 0;
    $call = _fig_string($11) | 0;
    $12 = $job;
    _gvprintf($12, 126944, (tempInt = STACKTOP, STACKTOP = STACKTOP + 112 | 0, HEAP32[tempInt >> 2] = 4, HEAP32[tempInt + 8 >> 2] = $sub_type_0, HEAP32[tempInt + 16 >> 2] = $1, HEAP32[tempInt + 24 >> 2] = $2, HEAP32[tempInt + 32 >> 2] = 0, HEAP32[tempInt + 40 >> 2] = $font_0, HEAPF64[tempInt + 48 >> 3] = $mul, HEAPF64[tempInt + 56 >> 3] = $cond, HEAP32[tempInt + 64 >> 2] = 6, HEAPF64[tempInt + 72 >> 3] = 0.0, HEAPF64[tempInt + 80 >> 3] = 0.0, HEAP32[tempInt + 88 >> 2] = $conv8, HEAP32[tempInt + 96 >> 2] = $conv17, HEAP32[tempInt + 104 >> 2] = $call, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _fig_ellipse($job, $A, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $filled = $filled | 0;
  var $line_style = 0, $style_val = 0, $obj1 = 0, $0 = 0, $penwidth = 0, $1 = 0.0, $conv = 0, $u = 0, $index = 0, $2 = 0, $u2 = 0, $index3 = 0, $3 = 0, $4 = 0, $tobool = 0, $cond = 0, $x = 0, $5 = 0.0, $cmp = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv7 = 0, $y = 0, $6 = 0.0, $cmp13 = 0, $add18 = 0.0, $sub23 = 0.0, $add18_sink = 0.0, $conv19 = 0, $x28 = 0, $7 = 0.0, $8 = 0.0, $sub31 = 0.0, $cmp32 = 0, $add40 = 0.0, $sub48 = 0.0, $add40_sink = 0.0, $conv41 = 0, $y53 = 0, $9 = 0.0, $10 = 0.0, $sub56 = 0.0, $cmp57 = 0, $add65 = 0.0, $sub73 = 0.0, $add65_sink = 0.0, $conv66 = 0, $11 = 0.0, $cmp79 = 0, $add84 = 0.0, $sub89 = 0.0, $add84_sink = 0.0, $conv85 = 0, $12 = 0.0, $cmp95 = 0, $add100 = 0.0, $sub105 = 0.0, $add100_sink = 0.0, $conv101 = 0, $13 = 0, $14 = 0.0, $15 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $line_style = __stackBase__ | 0;
    $style_val = __stackBase__ + 8 | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $penwidth = $0 + 104 | 0;
    $1 = +HEAPF64[$penwidth >> 3];
    $conv = ~~$1;
    $u = $0 + 16 | 0;
    $index = $u;
    $2 = HEAP32[$index >> 2] | 0;
    $u2 = $0 + 56 | 0;
    $index3 = $u2;
    $3 = HEAP32[$index3 >> 2] | 0;
    $4 = HEAP32[41980] | 0;
    $tobool = ($filled | 0) != 0;
    $cond = $tobool ? 20 : -1;
    _fig_line_style($0, $line_style, $style_val);
    $x = $A | 0;
    $5 = +HEAPF64[$x >> 3];
    $cmp = $5 < 0.0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $5 + .5;
    $add_sink = $add;
    label = 5;
    break;
   case 4:
    $sub = $5 + -.5;
    $add_sink = $sub;
    label = 5;
    break;
   case 5:
    $conv7 = ~~$add_sink;
    $y = $A + 8 | 0;
    $6 = +HEAPF64[$y >> 3];
    $cmp13 = $6 < 0.0;
    if ($cmp13) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $add18 = $6 + .5;
    $add18_sink = $add18;
    label = 8;
    break;
   case 7:
    $sub23 = $6 + -.5;
    $add18_sink = $sub23;
    label = 8;
    break;
   case 8:
    $conv19 = ~~$add18_sink;
    $x28 = $A + 16 | 0;
    $7 = +HEAPF64[$x28 >> 3];
    $8 = +HEAPF64[$x >> 3];
    $sub31 = $7 - $8;
    $cmp32 = $sub31 < 0.0;
    if ($cmp32) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add40 = $sub31 + .5;
    $add40_sink = $add40;
    label = 11;
    break;
   case 10:
    $sub48 = $sub31 + -.5;
    $add40_sink = $sub48;
    label = 11;
    break;
   case 11:
    $conv41 = ~~$add40_sink;
    $y53 = $A + 24 | 0;
    $9 = +HEAPF64[$y53 >> 3];
    $10 = +HEAPF64[$y >> 3];
    $sub56 = $9 - $10;
    $cmp57 = $sub56 < 0.0;
    if ($cmp57) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add65 = $sub56 + .5;
    $add65_sink = $add65;
    label = 14;
    break;
   case 13:
    $sub73 = $sub56 + -.5;
    $add65_sink = $sub73;
    label = 14;
    break;
   case 14:
    $conv66 = ~~$add65_sink;
    $11 = +HEAPF64[$x28 >> 3];
    $cmp79 = $11 < 0.0;
    if ($cmp79) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add84 = $11 + .5;
    $add84_sink = $add84;
    label = 17;
    break;
   case 16:
    $sub89 = $11 + -.5;
    $add84_sink = $sub89;
    label = 17;
    break;
   case 17:
    $conv85 = ~~$add84_sink;
    $12 = +HEAPF64[$y53 >> 3];
    $cmp95 = $12 < 0.0;
    if ($cmp95) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $add100 = $12 + .5;
    $add100_sink = $add100;
    label = 20;
    break;
   case 19:
    $sub105 = $12 + -.5;
    $add100_sink = $sub105;
    label = 20;
    break;
   case 20:
    $conv101 = ~~$add100_sink;
    $13 = HEAP32[$line_style >> 2] | 0;
    $14 = +HEAPF64[$style_val >> 3];
    $15 = $job;
    _gvprintf($15, 133128, (tempInt = STACKTOP, STACKTOP = STACKTOP + 160 | 0, HEAP32[tempInt >> 2] = 1, HEAP32[tempInt + 8 >> 2] = 1, HEAP32[tempInt + 16 >> 2] = $13, HEAP32[tempInt + 24 >> 2] = $conv, HEAP32[tempInt + 32 >> 2] = $2, HEAP32[tempInt + 40 >> 2] = $3, HEAP32[tempInt + 48 >> 2] = $4, HEAP32[tempInt + 56 >> 2] = 0, HEAP32[tempInt + 64 >> 2] = $cond, HEAPF64[tempInt + 72 >> 3] = $14, HEAP32[tempInt + 80 >> 2] = 0, HEAPF64[tempInt + 88 >> 3] = 0.0, HEAP32[tempInt + 96 >> 2] = $conv7, HEAP32[tempInt + 104 >> 2] = $conv19, HEAP32[tempInt + 112 >> 2] = $conv41, HEAP32[tempInt + 120 >> 2] = $conv66, HEAP32[tempInt + 128 >> 2] = $conv7, HEAP32[tempInt + 136 >> 2] = $conv19, HEAP32[tempInt + 144 >> 2] = $conv85, HEAP32[tempInt + 152 >> 2] = $conv101, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _fig_polygon($job, $A, $n, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $line_style = 0, $style_val = 0, $0 = 0, $conv = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0.0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  $line_style = __stackBase__ | 0;
  $style_val = __stackBase__ + 8 | 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  $conv = ~~+HEAPF64[$0 + 104 >> 3];
  $2 = HEAP32[$0 + 16 >> 2] | 0;
  $3 = HEAP32[$0 + 56 >> 2] | 0;
  $4 = HEAP32[41980] | 0;
  _fig_line_style($0, $line_style, $style_val);
  $5 = HEAP32[$line_style >> 2] | 0;
  $6 = +HEAPF64[$style_val >> 3];
  _gvprintf($job, 157904, (tempInt = STACKTOP, STACKTOP = STACKTOP + 128 | 0, HEAP32[tempInt >> 2] = 2, HEAP32[tempInt + 8 >> 2] = 3, HEAP32[tempInt + 16 >> 2] = $5, HEAP32[tempInt + 24 >> 2] = $conv, HEAP32[tempInt + 32 >> 2] = $2, HEAP32[tempInt + 40 >> 2] = $3, HEAP32[tempInt + 48 >> 2] = $4, HEAP32[tempInt + 56 >> 2] = 0, HEAP32[tempInt + 64 >> 2] = ($filled | 0) != 0 ? 20 : -1, HEAPF64[tempInt + 72 >> 3] = $6, HEAP32[tempInt + 80 >> 2] = 0, HEAP32[tempInt + 88 >> 2] = 0, HEAP32[tempInt + 96 >> 2] = 0, HEAP32[tempInt + 104 >> 2] = 0, HEAP32[tempInt + 112 >> 2] = 0, HEAP32[tempInt + 120 >> 2] = $n + 1 | 0, tempInt) | 0);
  _figptarray($job, $A, $n, 1);
  STACKTOP = __stackBase__;
  return;
}
function _fig_polyline($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $line_style = 0, $style_val = 0, $0 = 0, $conv = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0.0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  $line_style = __stackBase__ | 0;
  $style_val = __stackBase__ + 8 | 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  $conv = ~~+HEAPF64[$0 + 104 >> 3];
  $2 = HEAP32[$0 + 16 >> 2] | 0;
  $3 = HEAP32[41980] | 0;
  _fig_line_style($0, $line_style, $style_val);
  $4 = HEAP32[$line_style >> 2] | 0;
  $5 = +HEAPF64[$style_val >> 3];
  _gvprintf($job, 157904, (tempInt = STACKTOP, STACKTOP = STACKTOP + 128 | 0, HEAP32[tempInt >> 2] = 2, HEAP32[tempInt + 8 >> 2] = 1, HEAP32[tempInt + 16 >> 2] = $4, HEAP32[tempInt + 24 >> 2] = $conv, HEAP32[tempInt + 32 >> 2] = $2, HEAP32[tempInt + 40 >> 2] = 0, HEAP32[tempInt + 48 >> 2] = $3, HEAP32[tempInt + 56 >> 2] = 0, HEAP32[tempInt + 64 >> 2] = 0, HEAPF64[tempInt + 72 >> 3] = $5, HEAP32[tempInt + 80 >> 2] = 0, HEAP32[tempInt + 88 >> 2] = 0, HEAP32[tempInt + 96 >> 2] = 0, HEAP32[tempInt + 104 >> 2] = 0, HEAP32[tempInt + 112 >> 2] = 0, HEAP32[tempInt + 120 >> 2] = $n, tempInt) | 0);
  _figptarray($job, $A, $n, 0);
  STACKTOP = __stackBase__;
  return;
}
function _fig_comment($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  _gvprintf($job, 161568, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $str, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _fig_resolve_color($job, $color) {
  $job = $job | 0;
  $color = $color | 0;
  var $new = 0, $type = 0, $0 = 0, $string = 0, $1 = 0, $2 = 0, $call = 0, $tobool7 = 0, $i_019_lcssa = 0, $index = 0, $rgba = 0, $arrayidx11 = 0, $3 = 0, $conv12 = 0, $arrayidx15 = 0, $4 = 0, $conv16 = 0, $arrayidx19 = 0, $5 = 0, $conv20 = 0, $call21 = 0, $add = 0, $6 = 0, $tobool22 = 0, $7 = 0, $conv27 = 0, $8 = 0, $conv31 = 0, $9 = 0, $conv35 = 0, $10 = 0, $index38 = 0, $call_1 = 0, $tobool7_1 = 0, $call_2 = 0, $tobool7_2 = 0, $call_3 = 0, $tobool7_3 = 0, $call_4 = 0, $tobool7_4 = 0, $call_5 = 0, $tobool7_5 = 0, $call_6 = 0, $tobool7_6 = 0, $call_7 = 0, $tobool7_7 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $new = __stackBase__ | 0;
    $type = $color + 32 | 0;
    $0 = HEAP32[$type >> 2] | 0;
    if (($0 | 0) == 5) {
      label = 3;
      break;
    } else if (($0 | 0) == 1) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $string = $color;
    $1 = HEAP32[$string >> 2] | 0;
    $2 = HEAP8[$1] | 0;
    if (($2 << 24 >> 24 | 0) == 98) {
      label = 4;
      break;
    } else if (($2 << 24 >> 24 | 0) == 103) {
      label = 12;
      break;
    } else if (($2 << 24 >> 24 | 0) == 99) {
      label = 13;
      break;
    } else if (($2 << 24 >> 24 | 0) == 114) {
      label = 14;
      break;
    } else if (($2 << 24 >> 24 | 0) == 109) {
      label = 15;
      break;
    } else if (($2 << 24 >> 24 | 0) == 121) {
      label = 16;
      break;
    } else if (($2 << 24 >> 24 | 0) == 119) {
      label = 17;
      break;
    } else {
      label = 10;
      break;
    }
   case 4:
    $call = _strcmp(124032, $1 | 0) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      $i_019_lcssa = 0;
      label = 5;
      break;
    } else {
      label = 11;
      break;
    }
   case 5:
    $index = $color;
    HEAP32[$index >> 2] = $i_019_lcssa;
    label = 10;
    break;
   case 6:
    $rgba = $color;
    $arrayidx11 = $color;
    $3 = HEAP8[$arrayidx11] | 0;
    $conv12 = $3 & 255;
    $arrayidx15 = $rgba + 1 | 0;
    $4 = HEAP8[$arrayidx15] | 0;
    $conv16 = $4 & 255;
    $arrayidx19 = $rgba + 2 | 0;
    $5 = HEAP8[$arrayidx19] | 0;
    $conv20 = $5 & 255;
    $call21 = _figColorResolve($new, $conv12, $conv16, $conv20) | 0;
    $add = $call21 + 32 | 0;
    $6 = HEAP32[$new >> 2] | 0;
    $tobool22 = ($6 | 0) == 0;
    if ($tobool22) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = HEAP8[$arrayidx11] | 0;
    $conv27 = $7 & 255;
    $8 = HEAP8[$arrayidx15] | 0;
    $conv31 = $8 & 255;
    $9 = HEAP8[$arrayidx19] | 0;
    $conv35 = $9 & 255;
    $10 = $job;
    _gvprintf($10, 131208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = 0, HEAP32[tempInt + 8 >> 2] = $add, HEAP32[tempInt + 16 >> 2] = $conv27, HEAP32[tempInt + 24 >> 2] = $conv31, HEAP32[tempInt + 32 >> 2] = $conv35, tempInt) | 0);
    label = 8;
    break;
   case 8:
    $index38 = $color;
    HEAP32[$index38 >> 2] = $add;
    label = 10;
    break;
   case 9:
    ___assert_func(147824, 165, 164256, 129376);
   case 10:
    HEAP32[$type >> 2] = 6;
    STACKTOP = __stackBase__;
    return;
   case 11:
    $call_1 = _strcmp(116592, $1 | 0) | 0;
    $tobool7_1 = ($call_1 | 0) == 0;
    if ($tobool7_1) {
      $i_019_lcssa = 1;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 12:
    $call_2 = _strcmp(107144, $1 | 0) | 0;
    $tobool7_2 = ($call_2 | 0) == 0;
    if ($tobool7_2) {
      $i_019_lcssa = 2;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 13:
    $call_3 = _strcmp(111440, $1 | 0) | 0;
    $tobool7_3 = ($call_3 | 0) == 0;
    if ($tobool7_3) {
      $i_019_lcssa = 3;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 14:
    $call_4 = _strcmp(98984, $1 | 0) | 0;
    $tobool7_4 = ($call_4 | 0) == 0;
    if ($tobool7_4) {
      $i_019_lcssa = 4;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 15:
    $call_5 = _strcmp(103136, $1 | 0) | 0;
    $tobool7_5 = ($call_5 | 0) == 0;
    if ($tobool7_5) {
      $i_019_lcssa = 5;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 16:
    $call_6 = _strcmp(91416, $1 | 0) | 0;
    $tobool7_6 = ($call_6 | 0) == 0;
    if ($tobool7_6) {
      $i_019_lcssa = 6;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 17:
    $call_7 = _strcmp(94944, $1 | 0) | 0;
    $tobool7_7 = ($call_7 | 0) == 0;
    if ($tobool7_7) {
      $i_019_lcssa = 7;
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
  }
}
function _fig_bezier($job, $A, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $line_style = 0, $style_val = 0, $V = 0, $tmp = 0, $obj1 = 0, $0 = 0, $penwidth = 0, $1 = 0.0, $conv = 0, $u = 0, $index = 0, $2 = 0, $3 = 0, $cmp = 0, $4 = 0, $mul5 = 0, $call = 0, $tobool = 0, $5 = 0, $u9 = 0, $index10 = 0, $6 = 0, $area_fill_0 = 0, $fill_color_0 = 0, $sub_type_0 = 0, $x = 0, $7 = 0.0, $arrayidx11 = 0, $x12 = 0, $y = 0, $8 = 0.0, $y15 = 0, $9 = 0.0, $cmp18 = 0, $add23 = 0.0, $sub = 0.0, $add23_sink = 0.0, $conv24 = 0, $10 = 0.0, $cmp33 = 0, $add38 = 0.0, $sub43 = 0.0, $add38_sink = 0.0, $conv39 = 0, $call50 = 0, $cmp5251 = 0, $add_ptr = 0, $arrayidx54 = 0, $11 = 0, $12 = 0, $pf_sroa_0_0__idx = 0, $pf_sroa_1_8__idx22 = 0, $13 = 0, $add51 = 0, $cmp52 = 0, $add5155 = 0, $buf_054 = 0, $count_053 = 0, $i_052 = 0, $add60 = 0, $x62 = 0, $14 = 0.0, $x64 = 0, $y67 = 0, $15 = 0.0, $y69 = 0, $add60_1 = 0, $x62_1 = 0, $16 = 0.0, $x64_1 = 0, $y67_1 = 0, $17 = 0.0, $y69_1 = 0, $add60_2 = 0, $x62_2 = 0, $18 = 0.0, $x64_2 = 0, $y67_2 = 0, $19 = 0.0, $y69_2 = 0, $buf_150 = 0, $step_048 = 0, $conv76 = 0.0, $div = 0.0, $pf_sroa_0_0_copyload = 0.0, $pf_sroa_1_8_copyload = 0.0, $cmp78 = 0, $add82 = 0.0, $sub86 = 0.0, $add82_sink = 0.0, $conv83 = 0, $cmp92 = 0, $add96 = 0.0, $sub100 = 0.0, $add96_sink = 0.0, $conv97 = 0, $call107 = 0, $add_ptr108 = 0, $inc110 = 0, $cmp72 = 0, $count_0_lcssa = 0, $20 = 0, $21 = 0.0, $22 = 0, $cmp11645 = 0, $sub119 = 0, $i_146 = 0, $rem = 0, $tobool120 = 0, $cond121 = 0, $inc123 = 0, $cmp116 = 0, $call125 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 96 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $line_style = __stackBase__ | 0;
    $style_val = __stackBase__ + 8 | 0;
    $V = __stackBase__ + 16 | 0;
    $tmp = __stackBase__ + 80 | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $penwidth = $0 + 104 | 0;
    $1 = +HEAPF64[$penwidth >> 3];
    $conv = ~~$1;
    $u = $0 + 16 | 0;
    $index = $u;
    $2 = HEAP32[$index >> 2] | 0;
    $3 = HEAP32[41980] | 0;
    $cmp = ($n | 0) > 3;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    ___assert_func(147824, 354, 164280, 145040);
   case 4:
    $4 = $n * 140 & -1;
    $mul5 = $4 + 140 | 0;
    $call = _malloc($mul5) | 0;
    _fig_line_style($0, $line_style, $style_val);
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      $sub_type_0 = 4;
      $fill_color_0 = 0;
      $area_fill_0 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP32[$obj1 >> 2] | 0;
    $u9 = $5 + 56 | 0;
    $index10 = $u9;
    $6 = HEAP32[$index10 >> 2] | 0;
    $sub_type_0 = 5;
    $fill_color_0 = $6;
    $area_fill_0 = 20;
    label = 6;
    break;
   case 6:
    $x = $A | 0;
    $7 = +HEAPF64[$x >> 3];
    $arrayidx11 = $V + 48 | 0;
    $x12 = $arrayidx11 | 0;
    HEAPF64[$x12 >> 3] = $7;
    $y = $A + 8 | 0;
    $8 = +HEAPF64[$y >> 3];
    $y15 = $V + 56 | 0;
    HEAPF64[$y15 >> 3] = $8;
    $9 = +HEAPF64[$x >> 3];
    $cmp18 = $9 < 0.0;
    if ($cmp18) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add23 = $9 + .5;
    $add23_sink = $add23;
    label = 9;
    break;
   case 8:
    $sub = $9 + -.5;
    $add23_sink = $sub;
    label = 9;
    break;
   case 9:
    $conv24 = ~~$add23_sink;
    $10 = +HEAPF64[$y >> 3];
    $cmp33 = $10 < 0.0;
    if ($cmp33) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $add38 = $10 + .5;
    $add38_sink = $add38;
    label = 12;
    break;
   case 11:
    $sub43 = $10 + -.5;
    $add38_sink = $sub43;
    label = 12;
    break;
   case 12:
    $conv39 = ~~$add38_sink;
    $call50 = _sprintf($call | 0, 154544, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv24, HEAP32[tempInt + 8 >> 2] = $conv39, tempInt) | 0) | 0;
    $cmp5251 = ($n | 0) > 3;
    if ($cmp5251) {
      label = 13;
      break;
    } else {
      $count_0_lcssa = 1;
      label = 23;
      break;
    }
   case 13:
    $add_ptr = $call + $call50 | 0;
    $arrayidx54 = $V | 0;
    $11 = $V;
    $12 = $arrayidx11;
    $pf_sroa_0_0__idx = $tmp | 0;
    $pf_sroa_1_8__idx22 = $tmp + 8 | 0;
    $i_052 = 0;
    $count_053 = 1;
    $buf_054 = $add_ptr;
    $add5155 = 3;
    label = 15;
    break;
   case 14:
    $13 = $count_053 + 6 | 0;
    $add51 = $add5155 + 3 | 0;
    $cmp52 = ($add51 | 0) < ($n | 0);
    if ($cmp52) {
      $i_052 = $add5155;
      $count_053 = $13;
      $buf_054 = $add_ptr108;
      $add5155 = $add51;
      label = 15;
      break;
    } else {
      $count_0_lcssa = $13;
      label = 23;
      break;
    }
   case 15:
    HEAP32[$11 >> 2] = HEAP32[$12 >> 2] | 0;
    HEAP32[$11 + 4 >> 2] = HEAP32[$12 + 4 >> 2] | 0;
    HEAP32[$11 + 8 >> 2] = HEAP32[$12 + 8 >> 2] | 0;
    HEAP32[$11 + 12 >> 2] = HEAP32[$12 + 12 >> 2] | 0;
    $add60 = $i_052 + 1 | 0;
    $x62 = $A + ($add60 << 4) | 0;
    $14 = +HEAPF64[$x62 >> 3];
    $x64 = $V + 16 | 0;
    HEAPF64[$x64 >> 3] = $14;
    $y67 = $A + ($add60 << 4) + 8 | 0;
    $15 = +HEAPF64[$y67 >> 3];
    $y69 = $V + 24 | 0;
    HEAPF64[$y69 >> 3] = $15;
    $add60_1 = $i_052 + 2 | 0;
    $x62_1 = $A + ($add60_1 << 4) | 0;
    $16 = +HEAPF64[$x62_1 >> 3];
    $x64_1 = $V + 32 | 0;
    HEAPF64[$x64_1 >> 3] = $16;
    $y67_1 = $A + ($add60_1 << 4) + 8 | 0;
    $17 = +HEAPF64[$y67_1 >> 3];
    $y69_1 = $V + 40 | 0;
    HEAPF64[$y69_1 >> 3] = $17;
    $add60_2 = $i_052 + 3 | 0;
    $x62_2 = $A + ($add60_2 << 4) | 0;
    $18 = +HEAPF64[$x62_2 >> 3];
    $x64_2 = $V + 48 | 0;
    HEAPF64[$x64_2 >> 3] = $18;
    $y67_2 = $A + ($add60_2 << 4) + 8 | 0;
    $19 = +HEAPF64[$y67_2 >> 3];
    $y69_2 = $V + 56 | 0;
    HEAPF64[$y69_2 >> 3] = $19;
    $step_048 = 1;
    $buf_150 = $buf_054;
    label = 16;
    break;
   case 16:
    $conv76 = +($step_048 | 0);
    $div = $conv76 / 6.0;
    _Bezier($tmp, $arrayidx54, 3, $div, 0, 0);
    $pf_sroa_0_0_copyload = +HEAPF64[$pf_sroa_0_0__idx >> 3];
    $pf_sroa_1_8_copyload = +HEAPF64[$pf_sroa_1_8__idx22 >> 3];
    $cmp78 = $pf_sroa_0_0_copyload < 0.0;
    if ($cmp78) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $add82 = $pf_sroa_0_0_copyload + .5;
    $add82_sink = $add82;
    label = 19;
    break;
   case 18:
    $sub86 = $pf_sroa_0_0_copyload + -.5;
    $add82_sink = $sub86;
    label = 19;
    break;
   case 19:
    $conv83 = ~~$add82_sink;
    $cmp92 = $pf_sroa_1_8_copyload < 0.0;
    if ($cmp92) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $add96 = $pf_sroa_1_8_copyload + .5;
    $add96_sink = $add96;
    label = 22;
    break;
   case 21:
    $sub100 = $pf_sroa_1_8_copyload + -.5;
    $add96_sink = $sub100;
    label = 22;
    break;
   case 22:
    $conv97 = ~~$add96_sink;
    $call107 = _sprintf($buf_150 | 0, 154544, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv83, HEAP32[tempInt + 8 >> 2] = $conv97, tempInt) | 0) | 0;
    $add_ptr108 = $buf_150 + $call107 | 0;
    $inc110 = $step_048 + 1 | 0;
    $cmp72 = ($inc110 | 0) < 7;
    if ($cmp72) {
      $step_048 = $inc110;
      $buf_150 = $add_ptr108;
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 23:
    $20 = HEAP32[$line_style >> 2] | 0;
    $21 = +HEAPF64[$style_val >> 3];
    $22 = $job;
    _gvprintf($22, 141968, (tempInt = STACKTOP, STACKTOP = STACKTOP + 112 | 0, HEAP32[tempInt >> 2] = 3, HEAP32[tempInt + 8 >> 2] = $sub_type_0, HEAP32[tempInt + 16 >> 2] = $20, HEAP32[tempInt + 24 >> 2] = $conv, HEAP32[tempInt + 32 >> 2] = $2, HEAP32[tempInt + 40 >> 2] = $fill_color_0, HEAP32[tempInt + 48 >> 2] = $3, HEAP32[tempInt + 56 >> 2] = 0, HEAP32[tempInt + 64 >> 2] = $area_fill_0, HEAPF64[tempInt + 72 >> 3] = $21, HEAP32[tempInt + 80 >> 2] = 0, HEAP32[tempInt + 88 >> 2] = 0, HEAP32[tempInt + 96 >> 2] = 0, HEAP32[tempInt + 104 >> 2] = $count_0_lcssa, tempInt) | 0);
    _gvprintf($22, 138432, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call, tempInt) | 0);
    _free($call);
    $cmp11645 = ($count_0_lcssa | 0) > 0;
    if ($cmp11645) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $sub119 = $count_0_lcssa - 1 | 0;
    $i_146 = 0;
    label = 25;
    break;
   case 25:
    $rem = ($i_146 | 0) % ($sub119 | 0);
    $tobool120 = ($rem | 0) != 0;
    $cond121 = $tobool120 & 1;
    _gvprintf($22, 135680, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $cond121, tempInt) | 0);
    $inc123 = $i_146 + 1 | 0;
    $cmp116 = ($inc123 | 0) < ($count_0_lcssa | 0);
    if ($cmp116) {
      $i_146 = $inc123;
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $call125 = _gvputs($22, 150856) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _figColorResolve($new, $r, $g, $b) {
  $new = $new | 0;
  $r = $r | 0;
  $g = $g | 0;
  $b = $b | 0;
  var $0 = 0, $cmp23 = 0, $inc1630 = 0, $1 = 0, $mindist_026 = 0, $c_025 = 0, $ct_024 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $sub = 0, $arrayidx1 = 0, $3 = 0, $conv2 = 0, $sub3 = 0, $arrayidx4 = 0, $4 = 0, $conv5 = 0, $sub6 = 0, $mul = 0, $mul7 = 0, $add = 0, $mul8 = 0, $add9 = 0, $cmp10 = 0, $cmp12 = 0, $ct_1 = 0, $mindist_1 = 0, $inc = 0, $cmp = 0, $inc16 = 0, $cmp17 = 0, $c_0_lcssa32 = 0, $conv21 = 0, $arrayidx22 = 0, $conv23 = 0, $arrayidx24 = 0, $conv25 = 0, $arrayidx26 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[$new >> 2] = 0;
    $0 = HEAP32[4154] | 0;
    $cmp23 = ($0 | 0) > 0;
    if ($cmp23) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $inc1630 = $0 + 1 | 0;
    HEAP32[4154] = $inc1630;
    $c_0_lcssa32 = 0;
    label = 9;
    break;
   case 4:
    $1 = HEAP32[4154] | 0;
    $ct_024 = -1;
    $c_025 = 0;
    $mindist_026 = 195075;
    label = 5;
    break;
   case 5:
    $arrayidx = 16624 + ($c_025 << 1) | 0;
    $2 = HEAP16[$arrayidx >> 1] | 0;
    $conv = $2 << 16 >> 16;
    $sub = $conv - $r | 0;
    $arrayidx1 = 17136 + ($c_025 << 1) | 0;
    $3 = HEAP16[$arrayidx1 >> 1] | 0;
    $conv2 = $3 << 16 >> 16;
    $sub3 = $conv2 - $g | 0;
    $arrayidx4 = 17648 + ($c_025 << 1) | 0;
    $4 = HEAP16[$arrayidx4 >> 1] | 0;
    $conv5 = $4 << 16 >> 16;
    $sub6 = $conv5 - $b | 0;
    $mul = Math_imul($sub, $sub);
    $mul7 = Math_imul($sub3, $sub3);
    $add = $mul7 + $mul | 0;
    $mul8 = Math_imul($sub6, $sub6);
    $add9 = $add + $mul8 | 0;
    $cmp10 = ($add9 | 0) < ($mindist_026 | 0);
    if ($cmp10) {
      label = 6;
      break;
    } else {
      $mindist_1 = $mindist_026;
      $ct_1 = $ct_024;
      label = 7;
      break;
    }
   case 6:
    $cmp12 = ($add9 | 0) == 0;
    if ($cmp12) {
      $retval_0 = $c_025;
      label = 10;
      break;
    } else {
      $mindist_1 = $add9;
      $ct_1 = $c_025;
      label = 7;
      break;
    }
   case 7:
    $inc = $c_025 + 1 | 0;
    $cmp = ($inc | 0) < ($1 | 0);
    if ($cmp) {
      $ct_024 = $ct_1;
      $c_025 = $inc;
      $mindist_026 = $mindist_1;
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $inc16 = $1 + 1 | 0;
    HEAP32[4154] = $inc16;
    $cmp17 = ($1 | 0) == 256;
    if ($cmp17) {
      $retval_0 = $ct_1;
      label = 10;
      break;
    } else {
      $c_0_lcssa32 = $inc;
      label = 9;
      break;
    }
   case 9:
    $conv21 = $r & 65535;
    $arrayidx22 = 16624 + ($c_0_lcssa32 << 1) | 0;
    HEAP16[$arrayidx22 >> 1] = $conv21;
    $conv23 = $g & 65535;
    $arrayidx24 = 17136 + ($c_0_lcssa32 << 1) | 0;
    HEAP16[$arrayidx24 >> 1] = $conv23;
    $conv25 = $b & 65535;
    $arrayidx26 = 17648 + ($c_0_lcssa32 << 1) | 0;
    HEAP16[$arrayidx26 >> 1] = $conv25;
    HEAP32[$new >> 2] = 1;
    $retval_0 = $c_0_lcssa32;
    label = 10;
    break;
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _figptarray($job, $A, $n, $close) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $close = $close | 0;
  var $cmp17 = 0, $0 = 0, $i_018 = 0, $x = 0, $1 = 0.0, $cmp1 = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $y = 0, $2 = 0.0, $cmp9 = 0, $add14 = 0.0, $sub19 = 0.0, $add14_sink = 0.0, $conv15 = 0, $inc = 0, $cmp = 0, $tobool = 0, $x27 = 0, $3 = 0.0, $cmp28 = 0, $add33 = 0.0, $sub38 = 0.0, $add33_sink = 0.0, $conv34 = 0, $y44 = 0, $4 = 0.0, $cmp45 = 0, $add50 = 0.0, $sub55 = 0.0, $add50_sink = 0.0, $conv51 = 0, $5 = 0, $6 = 0, $call = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp17 = ($n | 0) > 0;
    if ($cmp17) {
      label = 3;
      break;
    } else {
      label = 11;
      break;
    }
   case 3:
    $0 = $job;
    $i_018 = 0;
    label = 4;
    break;
   case 4:
    $x = $A + ($i_018 << 4) | 0;
    $1 = +HEAPF64[$x >> 3];
    $cmp1 = $1 < 0.0;
    if ($cmp1) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add = $1 + .5;
    $add_sink = $add;
    label = 7;
    break;
   case 6:
    $sub = $1 + -.5;
    $add_sink = $sub;
    label = 7;
    break;
   case 7:
    $conv = ~~$add_sink;
    $y = $A + ($i_018 << 4) + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $cmp9 = $2 < 0.0;
    if ($cmp9) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $add14 = $2 + .5;
    $add14_sink = $add14;
    label = 10;
    break;
   case 9:
    $sub19 = $2 + -.5;
    $add14_sink = $sub19;
    label = 10;
    break;
   case 10:
    $conv15 = ~~$add14_sink;
    _gvprintf($0, 154544, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv, HEAP32[tempInt + 8 >> 2] = $conv15, tempInt) | 0);
    $inc = $i_018 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_018 = $inc;
      label = 4;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $tobool = ($close | 0) == 0;
    if ($tobool) {
      label = 19;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $x27 = $A | 0;
    $3 = +HEAPF64[$x27 >> 3];
    $cmp28 = $3 < 0.0;
    if ($cmp28) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $add33 = $3 + .5;
    $add33_sink = $add33;
    label = 15;
    break;
   case 14:
    $sub38 = $3 + -.5;
    $add33_sink = $sub38;
    label = 15;
    break;
   case 15:
    $conv34 = ~~$add33_sink;
    $y44 = $A + 8 | 0;
    $4 = +HEAPF64[$y44 >> 3];
    $cmp45 = $4 < 0.0;
    if ($cmp45) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $add50 = $4 + .5;
    $add50_sink = $add50;
    label = 18;
    break;
   case 17:
    $sub55 = $4 + -.5;
    $add50_sink = $sub55;
    label = 18;
    break;
   case 18:
    $conv51 = ~~$add50_sink;
    $5 = $job;
    _gvprintf($5, 154544, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $conv34, HEAP32[tempInt + 8 >> 2] = $conv51, tempInt) | 0);
    label = 19;
    break;
   case 19:
    $6 = $job;
    $call = _gvputs($6, 150856) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _fig_string($s) {
  $s = $s | 0;
  var $0 = 0, $tobool = 0, $call = 0, $1 = 0, $2 = 0, $tobool114 = 0, $3 = 0, $s_pn = 0, $p_016 = 0, $pos_015 = 0, $incdec_ptr17 = 0, $4 = 0, $sub = 0, $cmp = 0, $mul3 = 0, $5 = 0, $call5 = 0, $add_ptr = 0, $p_1 = 0, $cmp7 = 0, $cmp11 = 0, $incdec_ptr14 = 0, $inc = 0, $pos_1 = 0, $p_2 = 0, $incdec_ptr16 = 0, $inc17 = 0, $conv = 0, $incdec_ptr18 = 0, $call20 = 0, $add_ptr21 = 0, $add = 0, $pos_0_be = 0, $p_0_be = 0, $6 = 0, $tobool1 = 0, $p_0_lcssa = 0, $7 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[4114] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[4112] = 64;
    $call = _malloc(64) | 0;
    HEAP32[4114] = $call;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[4114] | 0;
    $2 = HEAP8[$s] | 0;
    $tobool114 = $2 << 24 >> 24 == 0;
    if ($tobool114) {
      $p_0_lcssa = $1;
      label = 13;
      break;
    } else {
      $pos_015 = 0;
      $p_016 = $1;
      $s_pn = $s;
      $3 = $2;
      label = 5;
      break;
    }
   case 5:
    $incdec_ptr17 = $s_pn + 1 | 0;
    $4 = HEAP32[4112] | 0;
    $sub = $4 - 8 | 0;
    $cmp = ($pos_015 | 0) > ($sub | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      $p_1 = $p_016;
      label = 7;
      break;
    }
   case 6:
    $mul3 = $4 << 1;
    HEAP32[4112] = $mul3;
    $5 = HEAP32[4114] | 0;
    $call5 = _realloc($5, $mul3) | 0;
    HEAP32[4114] = $call5;
    $add_ptr = $call5 + $pos_015 | 0;
    $p_1 = $add_ptr;
    label = 7;
    break;
   case 7:
    $cmp7 = $3 << 24 >> 24 > -1;
    if ($cmp7) {
      label = 8;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    $cmp11 = $3 << 24 >> 24 == 92;
    if ($cmp11) {
      label = 9;
      break;
    } else {
      $p_2 = $p_1;
      $pos_1 = $pos_015;
      label = 10;
      break;
    }
   case 9:
    $incdec_ptr14 = $p_1 + 1 | 0;
    HEAP8[$p_1] = 92;
    $inc = $pos_015 + 1 | 0;
    $p_2 = $incdec_ptr14;
    $pos_1 = $inc;
    label = 10;
    break;
   case 10:
    $incdec_ptr16 = $p_2 + 1 | 0;
    HEAP8[$p_2] = $3;
    $inc17 = $pos_1 + 1 | 0;
    $p_0_be = $incdec_ptr16;
    $pos_0_be = $inc17;
    label = 12;
    break;
   case 11:
    $conv = $3 & 255;
    $incdec_ptr18 = $p_1 + 1 | 0;
    HEAP8[$p_1] = 92;
    $call20 = _sprintf($incdec_ptr18 | 0, 124536, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $conv, tempInt) | 0) | 0;
    $add_ptr21 = $p_1 + 4 | 0;
    $add = $pos_015 + 4 | 0;
    $p_0_be = $add_ptr21;
    $pos_0_be = $add;
    label = 12;
    break;
   case 12:
    $6 = HEAP8[$incdec_ptr17] | 0;
    $tobool1 = $6 << 24 >> 24 == 0;
    if ($tobool1) {
      $p_0_lcssa = $p_0_be;
      label = 13;
      break;
    } else {
      $pos_015 = $pos_0_be;
      $p_016 = $p_0_be;
      $s_pn = $incdec_ptr17;
      $3 = $6;
      label = 5;
      break;
    }
   case 13:
    HEAP8[$p_0_lcssa] = 0;
    $7 = HEAP32[4114] | 0;
    STACKTOP = __stackBase__;
    return $7 | 0;
  }
  return 0;
}
function _map_begin_page($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $id = 0, $1 = 0, $2 = 0, $call = 0, $url = 0, $3 = 0, $tobool = 0, $4 = 0, $tobool3 = 0, $call4 = 0, $5 = 0, $call6 = 0, $call7 = 0, $call8 = 0, $url10 = 0, $6 = 0, $tobool11 = 0, $7 = 0, $tobool16 = 0, $8 = 0, $call18 = 0, $9 = 0, $call20 = 0, $call21 = 0, $call22 = 0, $g = 0, $10 = 0, $name = 0, $11 = 0, $call23 = 0, $call24 = 0, $call25 = 0, $g29 = 0, $12 = 0, $name30 = 0, $13 = 0, $call31 = 0, $14 = 0, $call32 = 0, $call33 = 0, $call34 = 0, $call35 = 0, $call36 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $id = $job + 64 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    if (($1 | 0) == 0) {
      label = 3;
      break;
    } else if (($1 | 0) == 1) {
      label = 6;
      break;
    } else if (($1 | 0) == 3) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $2 = $job;
    $call = _gvputs($2, 117808) | 0;
    $url = $0 + 160 | 0;
    $3 = HEAP32[$url >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $4 = HEAP8[$3] | 0;
    $tobool3 = $4 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 10;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call4 = _gvputs($2, 117128) | 0;
    $5 = HEAP32[$url >> 2] | 0;
    $call6 = _xml_string($5) | 0;
    $call7 = _gvputs($2, $call6) | 0;
    $call8 = _gvputs($2, 156648) | 0;
    label = 10;
    break;
   case 6:
    $url10 = $0 + 160 | 0;
    $6 = HEAP32[$url10 >> 2] | 0;
    $tobool11 = ($6 | 0) == 0;
    if ($tobool11) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $7 = HEAP8[$6] | 0;
    $tobool16 = $7 << 24 >> 24 == 0;
    if ($tobool16) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $8 = $job;
    $call18 = _gvputs($8, 117128) | 0;
    $9 = HEAP32[$url10 >> 2] | 0;
    $call20 = _xml_string($9) | 0;
    $call21 = _gvputs($8, $call20) | 0;
    $call22 = _gvputs($8, 116568) | 0;
    $g = $0 + 8 | 0;
    $10 = HEAP32[$g >> 2] | 0;
    $name = $10 + 12 | 0;
    $11 = HEAP32[$name >> 2] | 0;
    $call23 = _xml_string($11) | 0;
    $call24 = _gvputs($8, $call23) | 0;
    $call25 = _gvputs($8, 156648) | 0;
    label = 10;
    break;
   case 9:
    $g29 = $0 + 8 | 0;
    $12 = HEAP32[$g29 >> 2] | 0;
    $name30 = $12 + 12 | 0;
    $13 = HEAP32[$name30 >> 2] | 0;
    $call31 = _xml_string($13) | 0;
    $14 = $job;
    $call32 = _gvputs($14, 116088) | 0;
    $call33 = _gvputs($14, $call31) | 0;
    $call34 = _gvputs($14, 115600) | 0;
    $call35 = _gvputs($14, $call31) | 0;
    $call36 = _gvputs($14, 118912) | 0;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _map_end_page($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $id = 0, $1 = 0, $url_map_shape = 0, $2 = 0, $url_map_p = 0, $3 = 0, $url_map_n = 0, $4 = 0, $url = 0, $5 = 0, $tooltip = 0, $6 = 0, $target = 0, $7 = 0, $id2 = 0, $8 = 0, $url_map_shape4 = 0, $9 = 0, $url_map_p5 = 0, $10 = 0, $url_map_n6 = 0, $11 = 0, $url7 = 0, $12 = 0, $tooltip8 = 0, $13 = 0, $target9 = 0, $14 = 0, $id10 = 0, $15 = 0, $16 = 0, $call = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $id = $job + 64 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    if (($1 | 0) == 2) {
      label = 3;
      break;
    } else if (($1 | 0) == 3) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $url_map_shape = $0 + 216 | 0;
    $2 = HEAP32[$url_map_shape >> 2] | 0;
    $url_map_p = $0 + 224 | 0;
    $3 = HEAP32[$url_map_p >> 2] | 0;
    $url_map_n = $0 + 220 | 0;
    $4 = HEAP32[$url_map_n >> 2] | 0;
    $url = $0 + 160 | 0;
    $5 = HEAP32[$url >> 2] | 0;
    $tooltip = $0 + 180 | 0;
    $6 = HEAP32[$tooltip >> 2] | 0;
    $target = $0 + 196 | 0;
    $7 = HEAP32[$target >> 2] | 0;
    $id2 = $0 + 164 | 0;
    $8 = HEAP32[$id2 >> 2] | 0;
    _map_output_shape($job, $2, $3, $4, $5, $6, $7, $8);
    label = 5;
    break;
   case 4:
    $url_map_shape4 = $0 + 216 | 0;
    $9 = HEAP32[$url_map_shape4 >> 2] | 0;
    $url_map_p5 = $0 + 224 | 0;
    $10 = HEAP32[$url_map_p5 >> 2] | 0;
    $url_map_n6 = $0 + 220 | 0;
    $11 = HEAP32[$url_map_n6 >> 2] | 0;
    $url7 = $0 + 160 | 0;
    $12 = HEAP32[$url7 >> 2] | 0;
    $tooltip8 = $0 + 180 | 0;
    $13 = HEAP32[$tooltip8 >> 2] | 0;
    $target9 = $0 + 196 | 0;
    $14 = HEAP32[$target9 >> 2] | 0;
    $id10 = $0 + 164 | 0;
    $15 = HEAP32[$id10 >> 2] | 0;
    _map_output_shape($job, $9, $10, $11, $12, $13, $14, $15);
    $16 = $job;
    $call = _gvputs($16, 118440) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _map_begin_anchor($job, $url, $tooltip, $target, $id) {
  $job = $job | 0;
  $url = $url | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  var $0 = 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  _map_output_shape($job, HEAP32[$0 + 216 >> 2] | 0, HEAP32[$0 + 224 >> 2] | 0, HEAP32[$0 + 220 >> 2] | 0, $url, $tooltip, $target, $id);
  return;
}
function _psgen_begin_job($job) {
  $job = $job | 0;
  var $0 = 0, $call = 0, $id = 0, $1 = 0, $cmp = 0, $call1 = 0, $call2 = 0, $common = 0, $2 = 0, $info = 0, $3 = 0, $4 = 0, $arrayidx5 = 0, $5 = 0, $arrayidx8 = 0, $6 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 130808) | 0;
    $id = $job + 64 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    $cmp = ($1 | 0) == 2;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call1 = _gvputs($0, 130624) | 0;
    label = 5;
    break;
   case 4:
    $call2 = _gvputs($0, 143192) | 0;
    label = 5;
    break;
   case 5:
    $common = $job + 12 | 0;
    $2 = HEAP32[$common >> 2] | 0;
    $info = $2 | 0;
    $3 = HEAP32[$info >> 2] | 0;
    $4 = HEAP32[$3 >> 2] | 0;
    $arrayidx5 = $3 + 4 | 0;
    $5 = HEAP32[$arrayidx5 >> 2] | 0;
    $arrayidx8 = $3 + 8 | 0;
    $6 = HEAP32[$arrayidx8 >> 2] | 0;
    _gvprintf($0, 130432, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $4, HEAP32[tempInt + 8 >> 2] = $5, HEAP32[tempInt + 16 >> 2] = $6, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_end_job($job) {
  $job = $job | 0;
  var $0 = 0, $call = 0, $id = 0, $1 = 0, $cmp = 0, $common = 0, $2 = 0, $viewNum = 0, $3 = 0, $common1 = 0, $4 = 0, $show_boxes = 0, $5 = 0, $cmp2 = 0, $6 = 0, $cmp6 = 0, $x = 0, $7 = 0, $y = 0, $8 = 0, $x11 = 0, $9 = 0, $y14 = 0, $10 = 0, $call17 = 0, $call18 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 131448) | 0;
    $id = $job + 64 | 0;
    $1 = HEAP32[$id >> 2] | 0;
    $cmp = ($1 | 0) == 2;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $common = $job + 12 | 0;
    $2 = HEAP32[$common >> 2] | 0;
    $viewNum = $2 + 28 | 0;
    $3 = HEAP32[$viewNum >> 2] | 0;
    _gvprintf($0, 131288, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $3, tempInt) | 0);
    label = 4;
    break;
   case 4:
    $common1 = $job + 12 | 0;
    $4 = HEAP32[$common1 >> 2] | 0;
    $show_boxes = $4 + 20 | 0;
    $5 = HEAP32[$show_boxes >> 2] | 0;
    $cmp2 = ($5 | 0) == 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $6 = HEAP32[$id >> 2] | 0;
    $cmp6 = ($6 | 0) == 2;
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $x = $job + 472 | 0;
    $7 = HEAP32[$x >> 2] | 0;
    $y = $job + 476 | 0;
    $8 = HEAP32[$y >> 2] | 0;
    $x11 = $job + 480 | 0;
    $9 = HEAP32[$x11 >> 2] | 0;
    $y14 = $job + 484 | 0;
    $10 = HEAP32[$y14 >> 2] | 0;
    _gvprintf($0, 132240, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $7, HEAP32[tempInt + 8 >> 2] = $8, HEAP32[tempInt + 16 >> 2] = $9, HEAP32[tempInt + 24 >> 2] = $10, tempInt) | 0);
    label = 7;
    break;
   case 7:
    $call17 = _gvputs($0, 131120) | 0;
    $call18 = _gvputs($0, 130960) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_begin_graph($job) {
  $job = $job | 0;
  var $args = 0, $obj1 = 0, $0 = 0, $common = 0, $1 = 0, $viewNum = 0, $2 = 0, $cmp = 0, $g = 0, $3 = 0, $name = 0, $4 = 0, $5 = 0, $id = 0, $6 = 0, $cmp2 = 0, $call = 0, $call4 = 0, $7 = 0, $show_boxes = 0, $8 = 0, $cmp6 = 0, $9 = 0, $cmp10 = 0, $call12 = 0, $x = 0, $10 = 0, $y = 0, $11 = 0, $x17 = 0, $12 = 0, $y20 = 0, $13 = 0, $call23 = 0, $14 = 0, $lib = 0, $15 = 0, $16 = 0, $17 = 0, $show_boxes26 = 0, $18 = 0, $tobool = 0, $19 = 0, $arrayidx30 = 0, $arrayidx31 = 0, $g35 = 0, $20 = 0, $charset = 0, $21 = 0, $cmp37 = 0, $conv38 = 0, $_b = 0, $22 = 0, $call41 = 0, $url = 0, $23 = 0, $tobool43 = 0, $24 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $args = __stackBase__ | 0;
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    HEAP8[4232] = 0;
    $common = $job + 12 | 0;
    $1 = HEAP32[$common >> 2] | 0;
    $viewNum = $1 + 28 | 0;
    $2 = HEAP32[$viewNum >> 2] | 0;
    $cmp = ($2 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 12;
      break;
    }
   case 3:
    $g = $0 + 8 | 0;
    $3 = HEAP32[$g >> 2] | 0;
    $name = $3 + 12 | 0;
    $4 = HEAP32[$name >> 2] | 0;
    $5 = $job;
    _gvprintf($5, 132992, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $4, tempInt) | 0);
    $id = $job + 64 | 0;
    $6 = HEAP32[$id >> 2] | 0;
    $cmp2 = ($6 | 0) == 2;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call = _gvputs($5, 132736) | 0;
    label = 6;
    break;
   case 5:
    $call4 = _gvputs($5, 132544) | 0;
    label = 6;
    break;
   case 6:
    $7 = HEAP32[$common >> 2] | 0;
    $show_boxes = $7 + 20 | 0;
    $8 = HEAP32[$show_boxes >> 2] | 0;
    $cmp6 = ($8 | 0) == 0;
    if ($cmp6) {
      label = 7;
      break;
    } else {
      label = 10;
      break;
    }
   case 7:
    $9 = HEAP32[$id >> 2] | 0;
    $cmp10 = ($9 | 0) == 2;
    if ($cmp10) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $call12 = _gvputs($5, 132408) | 0;
    label = 10;
    break;
   case 9:
    $x = $job + 456 | 0;
    $10 = HEAP32[$x >> 2] | 0;
    $y = $job + 460 | 0;
    $11 = HEAP32[$y >> 2] | 0;
    $x17 = $job + 464 | 0;
    $12 = HEAP32[$x17 >> 2] | 0;
    $y20 = $job + 468 | 0;
    $13 = HEAP32[$y20 >> 2] | 0;
    _gvprintf($5, 132240, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $10, HEAP32[tempInt + 8 >> 2] = $11, HEAP32[tempInt + 16 >> 2] = $12, HEAP32[tempInt + 24 >> 2] = $13, tempInt) | 0);
    label = 10;
    break;
   case 10:
    $call23 = _gvputs($5, 132072) | 0;
    $14 = HEAP32[$common >> 2] | 0;
    $lib = $14 + 24 | 0;
    $15 = HEAP32[$lib >> 2] | 0;
    $16 = $job;
    _cat_libfile($16, $15, 4856);
    _epsf_define($16);
    $17 = HEAP32[$common >> 2] | 0;
    $show_boxes26 = $17 + 20 | 0;
    $18 = HEAP32[$show_boxes26 >> 2] | 0;
    $tobool = ($18 | 0) == 0;
    if ($tobool) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $19 = HEAP32[$18 >> 2] | 0;
    $arrayidx30 = $args | 0;
    HEAP32[$arrayidx30 >> 2] = $19;
    $arrayidx31 = $args + 4 | 0;
    HEAP32[$arrayidx31 >> 2] = 0;
    _cat_libfile($16, 0, $arrayidx30);
    label = 12;
    break;
   case 12:
    $g35 = $0 + 8 | 0;
    $20 = HEAP32[$g35 >> 2] | 0;
    $charset = $20 + 155 | 0;
    $21 = HEAP8[$charset] | 0;
    $cmp37 = $21 << 24 >> 24 == 1;
    $conv38 = $cmp37 & 1;
    HEAP32[3088] = $conv38;
    $_b = HEAP8[4232] | 0;
    if ($_b) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $22 = $job;
    $call41 = _gvputs($22, 131912) | 0;
    HEAP8[4232] = 1;
    label = 14;
    break;
   case 14:
    $url = $0 + 160 | 0;
    $23 = HEAP32[$url >> 2] | 0;
    $tobool43 = ($23 | 0) == 0;
    if ($tobool43) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $24 = $job;
    _gvprintf($24, 131656, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $23, tempInt) | 0);
    label = 16;
    break;
   case 16:
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_begin_layer($job, $layername, $layerNum, $numLayers) {
  $job = $job | 0;
  $layername = $layername | 0;
  $layerNum = $layerNum | 0;
  $numLayers = $numLayers | 0;
  var __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  _gvprintf($job, 133304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $layerNum, HEAP32[tempInt + 8 >> 2] = $numLayers, tempInt) | 0);
  STACKTOP = __stackBase__;
  return;
}
function _map_output_shape($job, $map_shape, $AF, $nump, $url, $tooltip, $target, $id) {
  $job = $job | 0;
  $map_shape = $map_shape | 0;
  $AF = $AF | 0;
  $nump = $nump | 0;
  $url = $url | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  var $tobool = 0, $tobool1 = 0, $or_cond = 0, $0 = 0, $cmp = 0, $add = 0, $1 = 0, $2 = 0, $mul = 0, $call = 0, $3 = 0, $cmp483 = 0, $i_084 = 0, $x = 0, $4 = 0.0, $cmp5 = 0, $add8 = 0.0, $sub = 0.0, $add8_sink = 0.0, $conv = 0, $5 = 0, $x13 = 0, $y = 0, $6 = 0.0, $cmp15 = 0, $add20 = 0.0, $sub25 = 0.0, $add20_sink = 0.0, $conv21 = 0, $7 = 0, $y30 = 0, $inc = 0, $cmp4 = 0, $id31 = 0, $8 = 0, $cmp32 = 0, $tobool34 = 0, $or_cond77 = 0, $9 = 0, $tobool38 = 0, $10 = 0, $x41 = 0, $11 = 0, $y43 = 0, $12 = 0, $x45 = 0, $13 = 0, $y47 = 0, $14 = 0, $15 = 0, $16 = 0, $x50 = 0, $17 = 0, $y52 = 0, $18 = 0, $x54 = 0, $19 = 0, $sub57 = 0, $20 = 0, $21 = 0, $cmp6081 = 0, $i_182 = 0, $22 = 0, $x64 = 0, $23 = 0, $y66 = 0, $24 = 0, $inc68 = 0, $cmp60 = 0, $call70 = 0, $25 = 0, $cmp73 = 0, $or_cond78 = 0, $26 = 0, $tobool80 = 0, $cond1 = 0, $27 = 0, $x84 = 0, $28 = 0, $y86 = 0, $29 = 0, $x88 = 0, $30 = 0, $y90 = 0, $31 = 0, $32 = 0, $33 = 0, $_off = 0, $switch = 0, $34 = 0, $call105 = 0, $35 = 0, $call107 = 0, $36 = 0, $call109 = 0, $tobool112 = 0, $37 = 0, $tobool116 = 0, $38 = 0, $call118 = 0, $call119 = 0, $call120 = 0, $call121 = 0, $39 = 0, $tobool127 = 0, $40 = 0, $call129 = 0, $call130 = 0, $call131 = 0, $call132 = 0, $tobool134 = 0, $41 = 0, $tobool138 = 0, $42 = 0, $call140 = 0, $call141 = 0, $call142 = 0, $call143 = 0, $tobool145 = 0, $43 = 0, $tobool149 = 0, $44 = 0, $call151 = 0, $call152 = 0, $call153 = 0, $call154 = 0, $45 = 0, $call156 = 0, $call157 = 0, $46 = 0, $x160 = 0, $47 = 0, $y162 = 0, $48 = 0, $x164 = 0, $49 = 0, $sub167 = 0, $50 = 0, $x170 = 0, $51 = 0, $y172 = 0, $52 = 0, $x174 = 0, $53 = 0, $y176 = 0, $54 = 0, $55 = 0, $x179 = 0, $56 = 0, $y181 = 0, $57 = 0, $cmp18379 = 0, $i_280 = 0, $58 = 0, $x187 = 0, $59 = 0, $y189 = 0, $60 = 0, $inc191 = 0, $cmp183 = 0, $61 = 0, $cmp197 = 0, $call200 = 0, $call202 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($AF | 0) == 0;
    $tobool1 = ($nump | 0) == 0;
    $or_cond = $tobool | $tobool1;
    if ($or_cond) {
      label = 53;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP32[2818] | 0;
    $cmp = ($0 | 0) < ($nump | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $add = $nump + 10 | 0;
    HEAP32[2818] = $add;
    $1 = HEAP32[2820] | 0;
    $2 = $1;
    $mul = $add << 3;
    $call = _realloc($2, $mul) | 0;
    $3 = $call;
    HEAP32[2820] = $3;
    label = 5;
    break;
   case 5:
    $cmp483 = ($nump | 0) > 0;
    if ($cmp483) {
      $i_084 = 0;
      label = 6;
      break;
    } else {
      label = 13;
      break;
    }
   case 6:
    $x = $AF + ($i_084 << 4) | 0;
    $4 = +HEAPF64[$x >> 3];
    $cmp5 = $4 < 0.0;
    if ($cmp5) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add8 = $4 + .5;
    $add8_sink = $add8;
    label = 9;
    break;
   case 8:
    $sub = $4 + -.5;
    $add8_sink = $sub;
    label = 9;
    break;
   case 9:
    $conv = ~~$add8_sink;
    $5 = HEAP32[2820] | 0;
    $x13 = $5 + ($i_084 << 3) | 0;
    HEAP32[$x13 >> 2] = $conv;
    $y = $AF + ($i_084 << 4) + 8 | 0;
    $6 = +HEAPF64[$y >> 3];
    $cmp15 = $6 < 0.0;
    if ($cmp15) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $add20 = $6 + .5;
    $add20_sink = $add20;
    label = 12;
    break;
   case 11:
    $sub25 = $6 + -.5;
    $add20_sink = $sub25;
    label = 12;
    break;
   case 12:
    $conv21 = ~~$add20_sink;
    $7 = HEAP32[2820] | 0;
    $y30 = $7 + ($i_084 << 3) + 4 | 0;
    HEAP32[$y30 >> 2] = $conv21;
    $inc = $i_084 + 1 | 0;
    $cmp4 = ($inc | 0) < ($nump | 0);
    if ($cmp4) {
      $i_084 = $inc;
      label = 6;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $id31 = $job + 64 | 0;
    $8 = HEAP32[$id31 >> 2] | 0;
    $cmp32 = ($8 | 0) != 0;
    $tobool34 = ($url | 0) == 0;
    $or_cond77 = $cmp32 | $tobool34;
    if ($or_cond77) {
      label = 22;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $9 = HEAP8[$url] | 0;
    $tobool38 = $9 << 24 >> 24 == 0;
    if ($tobool38) {
      label = 22;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    if (($map_shape | 0) == 0) {
      label = 16;
      break;
    } else if (($map_shape | 0) == 1) {
      label = 17;
      break;
    } else if (($map_shape | 0) == 2) {
      label = 18;
      break;
    } else {
      label = 21;
      break;
    }
   case 16:
    $10 = HEAP32[2820] | 0;
    $x41 = $10 | 0;
    $11 = HEAP32[$x41 >> 2] | 0;
    $y43 = $10 + 12 | 0;
    $12 = HEAP32[$y43 >> 2] | 0;
    $x45 = $10 + 8 | 0;
    $13 = HEAP32[$x45 >> 2] | 0;
    $y47 = $10 + 4 | 0;
    $14 = HEAP32[$y47 >> 2] | 0;
    $15 = $job;
    _gvprintf($15, 97352, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = $url, HEAP32[tempInt + 8 >> 2] = $11, HEAP32[tempInt + 16 >> 2] = $12, HEAP32[tempInt + 24 >> 2] = $13, HEAP32[tempInt + 32 >> 2] = $14, tempInt) | 0);
    label = 53;
    break;
   case 17:
    $16 = HEAP32[2820] | 0;
    $x50 = $16 | 0;
    $17 = HEAP32[$x50 >> 2] | 0;
    $y52 = $16 + 4 | 0;
    $18 = HEAP32[$y52 >> 2] | 0;
    $x54 = $16 + 8 | 0;
    $19 = HEAP32[$x54 >> 2] | 0;
    $sub57 = $19 - $17 | 0;
    $20 = $job;
    _gvprintf($20, 93696, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $url, HEAP32[tempInt + 8 >> 2] = $17, HEAP32[tempInt + 16 >> 2] = $18, HEAP32[tempInt + 24 >> 2] = $sub57, tempInt) | 0);
    label = 53;
    break;
   case 18:
    $21 = $job;
    _gvprintf($21, 90216, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $url, tempInt) | 0);
    $cmp6081 = ($nump | 0) > 0;
    if ($cmp6081) {
      $i_182 = 0;
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $22 = HEAP32[2820] | 0;
    $x64 = $22 + ($i_182 << 3) | 0;
    $23 = HEAP32[$x64 >> 2] | 0;
    $y66 = $22 + ($i_182 << 3) + 4 | 0;
    $24 = HEAP32[$y66 >> 2] | 0;
    _gvprintf($21, 160392, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $23, HEAP32[tempInt + 8 >> 2] = $24, tempInt) | 0);
    $inc68 = $i_182 + 1 | 0;
    $cmp60 = ($inc68 | 0) < ($nump | 0);
    if ($cmp60) {
      $i_182 = $inc68;
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $call70 = _gvputs($21, 156648) | 0;
    label = 53;
    break;
   case 21:
    ___assert_func(153248, 65, 164064, 149664);
   case 22:
    $25 = HEAP32[$id31 >> 2] | 0;
    $cmp73 = ($25 | 0) != 1;
    $or_cond78 = $cmp73 | $tobool34;
    if ($or_cond78) {
      label = 27;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $26 = HEAP8[$url] | 0;
    $tobool80 = $26 << 24 >> 24 == 0;
    if ($tobool80) {
      label = 27;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $cond1 = ($map_shape | 0) == 0;
    if ($cond1) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $27 = HEAP32[2820] | 0;
    $x84 = $27 | 0;
    $28 = HEAP32[$x84 >> 2] | 0;
    $y86 = $27 + 12 | 0;
    $29 = HEAP32[$y86 >> 2] | 0;
    $x88 = $27 + 8 | 0;
    $30 = HEAP32[$x88 >> 2] | 0;
    $y90 = $27 + 4 | 0;
    $31 = HEAP32[$y90 >> 2] | 0;
    $32 = $job;
    _gvprintf($32, 146792, (tempInt = STACKTOP, STACKTOP = STACKTOP + 48 | 0, HEAP32[tempInt >> 2] = $28, HEAP32[tempInt + 8 >> 2] = $29, HEAP32[tempInt + 16 >> 2] = $30, HEAP32[tempInt + 24 >> 2] = $31, HEAP32[tempInt + 32 >> 2] = $url, HEAP32[tempInt + 40 >> 2] = $tooltip, tempInt) | 0);
    label = 53;
    break;
   case 26:
    ___assert_func(153248, 77, 164064, 149664);
   case 27:
    $33 = HEAP32[$id31 >> 2] | 0;
    $_off = $33 - 2 | 0;
    $switch = $_off >>> 0 < 2;
    if ($switch) {
      label = 28;
      break;
    } else {
      label = 53;
      break;
    }
   case 28:
    if (($map_shape | 0) == 1) {
      label = 29;
      break;
    } else if (($map_shape | 0) == 0) {
      label = 30;
      break;
    } else if (($map_shape | 0) == 2) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 29:
    $34 = $job;
    $call105 = _gvputs($34, 143984) | 0;
    label = 33;
    break;
   case 30:
    $35 = $job;
    $call107 = _gvputs($35, 140176) | 0;
    label = 33;
    break;
   case 31:
    $36 = $job;
    $call109 = _gvputs($36, 137448) | 0;
    label = 33;
    break;
   case 32:
    ___assert_func(153248, 93, 164064, 149664);
   case 33:
    $tobool112 = ($id | 0) == 0;
    if ($tobool112) {
      label = 36;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $37 = HEAP8[$id] | 0;
    $tobool116 = $37 << 24 >> 24 == 0;
    if ($tobool116) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $38 = $job;
    $call118 = _gvputs($38, 134880) | 0;
    $call119 = _xml_url_string($id) | 0;
    $call120 = _gvputs($38, $call119) | 0;
    $call121 = _gvputs($38, 132384) | 0;
    label = 36;
    break;
   case 36:
    if ($tobool34) {
      label = 39;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $39 = HEAP8[$url] | 0;
    $tobool127 = $39 << 24 >> 24 == 0;
    if ($tobool127) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $40 = $job;
    $call129 = _gvputs($40, 130576) | 0;
    $call130 = _xml_url_string($url) | 0;
    $call131 = _gvputs($40, $call130) | 0;
    $call132 = _gvputs($40, 132384) | 0;
    label = 39;
    break;
   case 39:
    $tobool134 = ($target | 0) == 0;
    if ($tobool134) {
      label = 42;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $41 = HEAP8[$target] | 0;
    $tobool138 = $41 << 24 >> 24 == 0;
    if ($tobool138) {
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $42 = $job;
    $call140 = _gvputs($42, 128704) | 0;
    $call141 = _xml_string($target) | 0;
    $call142 = _gvputs($42, $call141) | 0;
    $call143 = _gvputs($42, 132384) | 0;
    label = 42;
    break;
   case 42:
    $tobool145 = ($tooltip | 0) == 0;
    if ($tobool145) {
      label = 45;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $43 = HEAP8[$tooltip] | 0;
    $tobool149 = $43 << 24 >> 24 == 0;
    if ($tobool149) {
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $44 = $job;
    $call151 = _gvputs($44, 126120) | 0;
    $call152 = _xml_string($tooltip) | 0;
    $call153 = _gvputs($44, $call152) | 0;
    $call154 = _gvputs($44, 132384) | 0;
    label = 45;
    break;
   case 45:
    $45 = $job;
    $call156 = _gvputs($45, 123944) | 0;
    $call157 = _gvputs($45, 121992) | 0;
    if (($map_shape | 0) == 1) {
      label = 46;
      break;
    } else if (($map_shape | 0) == 0) {
      label = 47;
      break;
    } else if (($map_shape | 0) == 2) {
      label = 48;
      break;
    } else {
      label = 50;
      break;
    }
   case 46:
    $46 = HEAP32[2820] | 0;
    $x160 = $46 | 0;
    $47 = HEAP32[$x160 >> 2] | 0;
    $y162 = $46 + 4 | 0;
    $48 = HEAP32[$y162 >> 2] | 0;
    $x164 = $46 + 8 | 0;
    $49 = HEAP32[$x164 >> 2] | 0;
    $sub167 = $49 - $47 | 0;
    _gvprintf($45, 121936, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $47, HEAP32[tempInt + 8 >> 2] = $48, HEAP32[tempInt + 16 >> 2] = $sub167, tempInt) | 0);
    label = 50;
    break;
   case 47:
    $50 = HEAP32[2820] | 0;
    $x170 = $50 | 0;
    $51 = HEAP32[$x170 >> 2] | 0;
    $y172 = $50 + 12 | 0;
    $52 = HEAP32[$y172 >> 2] | 0;
    $x174 = $50 + 8 | 0;
    $53 = HEAP32[$x174 >> 2] | 0;
    $y176 = $50 + 4 | 0;
    $54 = HEAP32[$y176 >> 2] | 0;
    _gvprintf($45, 121408, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $51, HEAP32[tempInt + 8 >> 2] = $52, HEAP32[tempInt + 16 >> 2] = $53, HEAP32[tempInt + 24 >> 2] = $54, tempInt) | 0);
    label = 50;
    break;
   case 48:
    $55 = HEAP32[2820] | 0;
    $x179 = $55 | 0;
    $56 = HEAP32[$x179 >> 2] | 0;
    $y181 = $55 + 4 | 0;
    $57 = HEAP32[$y181 >> 2] | 0;
    _gvprintf($45, 120688, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $56, HEAP32[tempInt + 8 >> 2] = $57, tempInt) | 0);
    $cmp18379 = ($nump | 0) > 1;
    if ($cmp18379) {
      $i_280 = 1;
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 49:
    $58 = HEAP32[2820] | 0;
    $x187 = $58 + ($i_280 << 3) | 0;
    $59 = HEAP32[$x187 >> 2] | 0;
    $y189 = $58 + ($i_280 << 3) + 4 | 0;
    $60 = HEAP32[$y189 >> 2] | 0;
    _gvprintf($45, 119976, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $59, HEAP32[tempInt + 8 >> 2] = $60, tempInt) | 0);
    $inc191 = $i_280 + 1 | 0;
    $cmp183 = ($inc191 | 0) < ($nump | 0);
    if ($cmp183) {
      $i_280 = $inc191;
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $61 = HEAP32[$id31 >> 2] | 0;
    $cmp197 = ($61 | 0) == 3;
    if ($cmp197) {
      label = 51;
      break;
    } else {
      label = 52;
      break;
    }
   case 51:
    $call200 = _gvputs($45, 119448) | 0;
    label = 53;
    break;
   case 52:
    $call202 = _gvputs($45, 118912) | 0;
    label = 53;
    break;
   case 53:
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_begin_page($job) {
  $job = $job | 0;
  var $pbr_sroa_0_0__idx = 0, $pbr_sroa_0_0_copyload = 0, $pbr_sroa_1_4__idx4 = 0, $pbr_sroa_1_4_copyload = 0, $pbr_sroa_2_8__idx8 = 0, $pbr_sroa_2_8_copyload = 0, $pbr_sroa_3_12__idx14 = 0, $pbr_sroa_3_12_copyload = 0, $common = 0, $0 = 0, $viewNum = 0, $1 = 0, $add = 0, $2 = 0, $3 = 0, $show_boxes = 0, $4 = 0, $cmp = 0, $rotation = 0, $5 = 0, $tobool = 0, $cond = 0, $id = 0, $6 = 0, $cmp9 = 0, $x16 = 0, $7 = 0, $y18 = 0, $8 = 0, $numPages = 0, $9 = 0, $10 = 0, $show_boxes20 = 0, $11 = 0, $cmp21 = 0, $sub = 0, $sub35 = 0, $x37 = 0, $12 = 0.0, $y39 = 0, $13 = 0.0, $14 = 0, $x41 = 0, $15 = 0.0, $y43 = 0, $16 = 0.0, $17 = 0, $cmp46 = 0, $cmp50 = 0, $cmp53 = 0, $or_cond = 0, $18 = 0, $errorfn = 0, $19 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $pbr_sroa_0_0__idx = $job + 456 | 0;
    $pbr_sroa_0_0_copyload = HEAP32[$pbr_sroa_0_0__idx >> 2] | 0;
    $pbr_sroa_1_4__idx4 = $job + 460 | 0;
    $pbr_sroa_1_4_copyload = HEAP32[$pbr_sroa_1_4__idx4 >> 2] | 0;
    $pbr_sroa_2_8__idx8 = $job + 464 | 0;
    $pbr_sroa_2_8_copyload = HEAP32[$pbr_sroa_2_8__idx8 >> 2] | 0;
    $pbr_sroa_3_12__idx14 = $job + 468 | 0;
    $pbr_sroa_3_12_copyload = HEAP32[$pbr_sroa_3_12__idx14 >> 2] | 0;
    $common = $job + 12 | 0;
    $0 = HEAP32[$common >> 2] | 0;
    $viewNum = $0 + 28 | 0;
    $1 = HEAP32[$viewNum >> 2] | 0;
    $add = $1 + 1 | 0;
    $2 = $job;
    _gvprintf($2, 135968, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $add, HEAP32[tempInt + 8 >> 2] = $add, tempInt) | 0);
    $3 = HEAP32[$common >> 2] | 0;
    $show_boxes = $3 + 20 | 0;
    $4 = HEAP32[$show_boxes >> 2] | 0;
    $cmp = ($4 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _gvprintf($2, 135736, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $pbr_sroa_0_0_copyload, HEAP32[tempInt + 8 >> 2] = $pbr_sroa_1_4_copyload, HEAP32[tempInt + 16 >> 2] = $pbr_sroa_2_8_copyload, HEAP32[tempInt + 24 >> 2] = $pbr_sroa_3_12_copyload, tempInt) | 0);
    label = 4;
    break;
   case 4:
    $rotation = $job + 360 | 0;
    $5 = HEAP32[$rotation >> 2] | 0;
    $tobool = ($5 | 0) != 0;
    $cond = $tobool ? 135368 : 135128;
    _gvprintf($2, 135552, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $cond, tempInt) | 0);
    $id = $job + 64 | 0;
    $6 = HEAP32[$id >> 2] | 0;
    $cmp9 = ($6 | 0) == 1;
    if ($cmp9) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    _gvprintf($2, 134888, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $pbr_sroa_2_8_copyload, HEAP32[tempInt + 8 >> 2] = $pbr_sroa_3_12_copyload, tempInt) | 0);
    label = 6;
    break;
   case 6:
    $x16 = $job + 196 | 0;
    $7 = HEAP32[$x16 >> 2] | 0;
    $y18 = $job + 200 | 0;
    $8 = HEAP32[$y18 >> 2] | 0;
    $numPages = $job + 204 | 0;
    $9 = HEAP32[$numPages >> 2] | 0;
    _gvprintf($2, 134680, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $7, HEAP32[tempInt + 8 >> 2] = $8, HEAP32[tempInt + 16 >> 2] = $9, tempInt) | 0);
    $10 = HEAP32[$common >> 2] | 0;
    $show_boxes20 = $10 + 20 | 0;
    $11 = HEAP32[$show_boxes20 >> 2] | 0;
    $cmp21 = ($11 | 0) == 0;
    if ($cmp21) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $sub = $pbr_sroa_2_8_copyload - $pbr_sroa_0_0_copyload | 0;
    $sub35 = $pbr_sroa_3_12_copyload - $pbr_sroa_1_4_copyload | 0;
    _gvprintf($2, 134448, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $pbr_sroa_0_0_copyload, HEAP32[tempInt + 8 >> 2] = $pbr_sroa_1_4_copyload, HEAP32[tempInt + 16 >> 2] = $sub, HEAP32[tempInt + 24 >> 2] = $sub35, tempInt) | 0);
    label = 8;
    break;
   case 8:
    $x37 = $job + 488 | 0;
    $12 = +HEAPF64[$x37 >> 3];
    $y39 = $job + 496 | 0;
    $13 = +HEAPF64[$y39 >> 3];
    $14 = HEAP32[$rotation >> 2] | 0;
    $x41 = $job + 504 | 0;
    $15 = +HEAPF64[$x41 >> 3];
    $y43 = $job + 512 | 0;
    $16 = +HEAPF64[$y43 >> 3];
    _gvprintf($2, 134200, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAPF64[tempInt >> 3] = $12, HEAPF64[tempInt + 8 >> 3] = $13, HEAP32[tempInt + 16 >> 2] = $14, HEAPF64[tempInt + 24 >> 3] = $15, HEAPF64[tempInt + 32 >> 3] = $16, tempInt) | 0);
    $17 = HEAP32[$id >> 2] | 0;
    $cmp46 = ($17 | 0) == 1;
    if ($cmp46) {
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 9:
    $cmp50 = ($pbr_sroa_2_8_copyload | 0) > 14399;
    $cmp53 = ($pbr_sroa_3_12_copyload | 0) > 14399;
    $or_cond = $cmp50 | $cmp53;
    if ($or_cond) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $18 = HEAP32[$common >> 2] | 0;
    $errorfn = $18 + 16 | 0;
    $19 = HEAP32[$errorfn >> 2] | 0;
    FUNCTION_TABLE_vii[$19 & 1023](133848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $pbr_sroa_2_8_copyload, HEAP32[tempInt + 8 >> 2] = $pbr_sroa_3_12_copyload, HEAP32[tempInt + 16 >> 2] = 14400, tempInt) | 0);
    label = 11;
    break;
   case 11:
    _gvprintf($2, 133536, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAP32[tempInt >> 2] = $pbr_sroa_0_0_copyload, HEAP32[tempInt + 8 >> 2] = $pbr_sroa_1_4_copyload, HEAP32[tempInt + 16 >> 2] = $pbr_sroa_2_8_copyload, HEAP32[tempInt + 24 >> 2] = $pbr_sroa_3_12_copyload, tempInt) | 0);
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_end_page($job) {
  $job = $job | 0;
  var $common = 0, $0 = 0, $show_boxes = 0, $1 = 0, $tobool = 0, $2 = 0, $call = 0, $3 = 0, $show_boxes2 = 0, $4 = 0, $add_ptr = 0, $5 = 0, $6 = 0, $call3 = 0, $call4 = 0, $7 = 0, $viewNum = 0, $8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $common = $job + 12 | 0;
    $0 = HEAP32[$common >> 2] | 0;
    $show_boxes = $0 + 20 | 0;
    $1 = HEAP32[$show_boxes >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = $job;
    $call = _gvputs($2, 137152) | 0;
    $3 = HEAP32[$common >> 2] | 0;
    $show_boxes2 = $3 + 20 | 0;
    $4 = HEAP32[$show_boxes2 >> 2] | 0;
    $add_ptr = $4 + 4 | 0;
    $5 = $job;
    _cat_libfile($5, 0, $add_ptr);
    label = 4;
    break;
   case 4:
    $6 = $job;
    $call3 = _gvputs($6, 136864) | 0;
    $call4 = _gvputs($6, 136592) | 0;
    $7 = HEAP32[$common >> 2] | 0;
    $viewNum = $7 + 28 | 0;
    $8 = HEAP32[$viewNum >> 2] | 0;
    _gvprintf($6, 136264, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $8, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_begin_cluster($job) {
  $job = $job | 0;
  var $3 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $3 = $job;
  _gvprintf($3, 137400, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = HEAP32[(HEAP32[(HEAP32[$job + 16 >> 2] | 0) + 8 >> 2] | 0) + 12 >> 2] | 0, tempInt) | 0);
  _gvputs($3, 137704);
  STACKTOP = __stackBase__;
  return;
}
function _psgen_end_cluster($job) {
  $job = $job | 0;
  _gvputs($job, 137920);
  return;
}
function _psgen_begin_node($job) {
  $job = $job | 0;
  _gvputs($job, 137704);
  return;
}
function _psgen_end_node($job) {
  $job = $job | 0;
  _gvputs($job, 137920);
  return;
}
function _psgen_begin_edge($job) {
  $job = $job | 0;
  _gvputs($job, 137704);
  return;
}
function _psgen_end_edge($job) {
  $job = $job | 0;
  _gvputs($job, 137920);
  return;
}
function _psgen_begin_anchor($job, $url, $tooltip, $target, $id) {
  $job = $job | 0;
  $url = $url | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  var $tobool = 0, $obj1 = 0, $0 = 0, $url_map_p = 0, $1 = 0, $tobool2 = 0, $2 = 0, $call = 0, $3 = 0, $call4 = 0, $4 = 0, $call5 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($url | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $url_map_p = $0 + 224 | 0;
    $1 = HEAP32[$url_map_p >> 2] | 0;
    $tobool2 = ($1 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = $job;
    $call = _gvputs($2, 138784) | 0;
    $3 = HEAP32[$url_map_p >> 2] | 0;
    _gvprintpointflist($2, $3, 2);
    $call4 = _gvputs($2, 138488) | 0;
    $4 = HEAP32[3088] | 0;
    $call5 = _ps_string($url, $4) | 0;
    _gvprintf($2, 138160, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call5, tempInt) | 0);
    label = 5;
    break;
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $obj = 0, $0 = 0, $arrayidx = 0, $1 = 0.0, $cmp = 0, $pencolor = 0, $fontsize = 0, $2 = 0.0, $3 = 0, $fontname = 0, $4 = 0, $str3 = 0, $5 = 0, $6 = 0, $call = 0, $just = 0, $7 = 0, $conv = 0, $width = 0, $8 = 0.0, $x = 0, $9 = 0.0, $sub = 0.0, $width8 = 0, $10 = 0.0, $div = 0.0, $x9 = 0, $11 = 0.0, $sub10 = 0.0, $yoffset_centerline = 0, $12 = 0.0, $y = 0, $13 = 0.0, $add = 0.0, $call11 = 0, $width12 = 0, $14 = 0.0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $arrayidx = $0 + 40 | 0;
    $1 = +HEAPF64[$arrayidx >> 3];
    $cmp = $1 < .5;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $pencolor = $0 + 16 | 0;
    _ps_set_color($job, $pencolor);
    $fontsize = $para + 24 | 0;
    $2 = +HEAPF64[$fontsize >> 3];
    $3 = $job;
    _gvprintdouble($3, $2);
    $fontname = $para + 20 | 0;
    $4 = HEAP32[$fontname >> 2] | 0;
    _gvprintf($3, 139576, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $4, tempInt) | 0);
    $str3 = $para | 0;
    $5 = HEAP32[$str3 >> 2] | 0;
    $6 = HEAP32[3088] | 0;
    $call = _ps_string($5, $6) | 0;
    $just = $para + 72 | 0;
    $7 = HEAP8[$just] | 0;
    $conv = $7 << 24 >> 24;
    if (($conv | 0) == 114) {
      label = 4;
      break;
    } else if (($conv | 0) == 108) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $width = $para + 56 | 0;
    $8 = +HEAPF64[$width >> 3];
    $x = $p | 0;
    $9 = +HEAPF64[$x >> 3];
    $sub = $9 - $8;
    HEAPF64[$x >> 3] = $sub;
    label = 6;
    break;
   case 5:
    $width8 = $para + 56 | 0;
    $10 = +HEAPF64[$width8 >> 3];
    $div = $10 * .5;
    $x9 = $p | 0;
    $11 = +HEAPF64[$x9 >> 3];
    $sub10 = $11 - $div;
    HEAPF64[$x9 >> 3] = $sub10;
    label = 6;
    break;
   case 6:
    $yoffset_centerline = $para + 48 | 0;
    $12 = +HEAPF64[$yoffset_centerline >> 3];
    $y = $p + 8 | 0;
    $13 = +HEAPF64[$y >> 3];
    $add = $12 + $13;
    HEAPF64[$y >> 3] = $add;
    _gvprintpointf($3, $p);
    $call11 = _gvputs($3, 139312) | 0;
    $width12 = $para + 56 | 0;
    $14 = +HEAPF64[$width12 >> 3];
    _gvprintdouble($3, $14);
    _gvprintf($3, 139032, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call, tempInt) | 0);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_ellipse($job, $A, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $filled = $filled | 0;
  var $AA = 0, $arrayidx = 0, $0 = 0, $1 = 0, $x = 0, $2 = 0.0, $x4 = 0, $3 = 0.0, $sub = 0.0, $x6 = 0, $y = 0, $4 = 0.0, $y9 = 0, $5 = 0.0, $sub10 = 0.0, $y12 = 0, $tobool = 0, $obj = 0, $6 = 0, $arrayidx13 = 0, $7 = 0.0, $cmp = 0, $fillcolor = 0, $8 = 0, $call = 0, $obj16 = 0, $9 = 0, $arrayidx19 = 0, $10 = 0.0, $cmp20 = 0, $11 = 0, $pencolor23 = 0, $12 = 0, $call25 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $AA = __stackBase__ | 0;
    $arrayidx = $AA | 0;
    $0 = $AA;
    $1 = $A;
    HEAP32[$0 >> 2] = HEAP32[$1 >> 2] | 0;
    HEAP32[$0 + 4 >> 2] = HEAP32[$1 + 4 >> 2] | 0;
    HEAP32[$0 + 8 >> 2] = HEAP32[$1 + 8 >> 2] | 0;
    HEAP32[$0 + 12 >> 2] = HEAP32[$1 + 12 >> 2] | 0;
    $x = $A + 16 | 0;
    $2 = +HEAPF64[$x >> 3];
    $x4 = $A | 0;
    $3 = +HEAPF64[$x4 >> 3];
    $sub = $2 - $3;
    $x6 = $AA + 16 | 0;
    HEAPF64[$x6 >> 3] = $sub;
    $y = $A + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y9 = $A + 8 | 0;
    $5 = +HEAPF64[$y9 >> 3];
    $sub10 = $4 - $5;
    $y12 = $AA + 24 | 0;
    HEAPF64[$y12 >> 3] = $sub10;
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj = $job + 16 | 0;
    $6 = HEAP32[$obj >> 2] | 0;
    $arrayidx13 = $6 + 80 | 0;
    $7 = +HEAPF64[$arrayidx13 >> 3];
    $cmp = $7 > .5;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $fillcolor = $6 + 56 | 0;
    _ps_set_color($job, $fillcolor);
    $8 = $job;
    _gvprintpointflist($8, $arrayidx, 2);
    $call = _gvputs($8, 140120) | 0;
    label = 5;
    break;
   case 5:
    $obj16 = $job + 16 | 0;
    $9 = HEAP32[$obj16 >> 2] | 0;
    $arrayidx19 = $9 + 40 | 0;
    $10 = +HEAPF64[$arrayidx19 >> 3];
    $cmp20 = $10 > .5;
    if ($cmp20) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    _ps_set_pen_style($job);
    $11 = HEAP32[$obj16 >> 2] | 0;
    $pencolor23 = $11 + 16 | 0;
    _ps_set_color($job, $pencolor23);
    $12 = $job;
    _gvprintpointflist($12, $arrayidx, 2);
    $call25 = _gvputs($12, 139848) | 0;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _psgen_polygon($job, $A, $n, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $tobool = 0, $obj = 0, $0 = 0, $arrayidx = 0, $1 = 0.0, $cmp = 0, $fillcolor = 0, $2 = 0, $call = 0, $call4 = 0, $cmp528 = 0, $j_029 = 0, $arrayidx6 = 0, $call7 = 0, $inc = 0, $cmp5 = 0, $call8 = 0, $obj9 = 0, $3 = 0, $arrayidx12 = 0, $4 = 0.0, $cmp13 = 0, $5 = 0, $pencolor16 = 0, $6 = 0, $call17 = 0, $call19 = 0, $cmp2126 = 0, $j_127 = 0, $arrayidx23 = 0, $call24 = 0, $inc26 = 0, $cmp21 = 0, $call28 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $arrayidx = $0 + 80 | 0;
    $1 = +HEAPF64[$arrayidx >> 3];
    $cmp = $1 > .5;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $fillcolor = $0 + 56 | 0;
    _ps_set_color($job, $fillcolor);
    $2 = $job;
    $call = _gvputs($2, 142864) | 0;
    _gvprintpointf($2, $A);
    $call4 = _gvputs($2, 142520) | 0;
    $cmp528 = ($n | 0) > 1;
    if ($cmp528) {
      $j_029 = 1;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $arrayidx6 = $A + ($j_029 << 4) | 0;
    _gvprintpointf($2, $arrayidx6);
    $call7 = _gvputs($2, 142256) | 0;
    $inc = $j_029 + 1 | 0;
    $cmp5 = ($inc | 0) < ($n | 0);
    if ($cmp5) {
      $j_029 = $inc;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call8 = _gvputs($2, 141408) | 0;
    label = 7;
    break;
   case 7:
    $obj9 = $job + 16 | 0;
    $3 = HEAP32[$obj9 >> 2] | 0;
    $arrayidx12 = $3 + 40 | 0;
    $4 = +HEAPF64[$arrayidx12 >> 3];
    $cmp13 = $4 > .5;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    _ps_set_pen_style($job);
    $5 = HEAP32[$obj9 >> 2] | 0;
    $pencolor16 = $5 + 16 | 0;
    _ps_set_color($job, $pencolor16);
    $6 = $job;
    $call17 = _gvputs($6, 142864) | 0;
    _gvprintpointf($6, $A);
    $call19 = _gvputs($6, 142520) | 0;
    $cmp2126 = ($n | 0) > 1;
    if ($cmp2126) {
      $j_127 = 1;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $arrayidx23 = $A + ($j_127 << 4) | 0;
    _gvprintpointf($6, $arrayidx23);
    $call24 = _gvputs($6, 142256) | 0;
    $inc26 = $j_127 + 1 | 0;
    $cmp21 = ($inc26 | 0) < ($n | 0);
    if ($cmp21) {
      $j_127 = $inc26;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call28 = _gvputs($6, 141176) | 0;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _psgen_bezier($job, $A, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $tobool = 0, $obj = 0, $0 = 0, $arrayidx = 0, $1 = 0.0, $cmp = 0, $fillcolor = 0, $2 = 0, $call = 0, $call4 = 0, $cmp528 = 0, $j_029 = 0, $arrayidx6 = 0, $call7 = 0, $add = 0, $cmp5 = 0, $call8 = 0, $obj9 = 0, $3 = 0, $arrayidx12 = 0, $4 = 0.0, $cmp13 = 0, $5 = 0, $pencolor16 = 0, $6 = 0, $call17 = 0, $call19 = 0, $cmp2126 = 0, $j_127 = 0, $arrayidx23 = 0, $call24 = 0, $add26 = 0, $cmp21 = 0, $call28 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $arrayidx = $0 + 80 | 0;
    $1 = +HEAPF64[$arrayidx >> 3];
    $cmp = $1 > .5;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $fillcolor = $0 + 56 | 0;
    _ps_set_color($job, $fillcolor);
    $2 = $job;
    $call = _gvputs($2, 142864) | 0;
    _gvprintpointf($2, $A);
    $call4 = _gvputs($2, 142520) | 0;
    $cmp528 = ($n | 0) > 1;
    if ($cmp528) {
      $j_029 = 1;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $arrayidx6 = $A + ($j_029 << 4) | 0;
    _gvprintpointflist($2, $arrayidx6, 3);
    $call7 = _gvputs($2, 141720) | 0;
    $add = $j_029 + 3 | 0;
    $cmp5 = ($add | 0) < ($n | 0);
    if ($cmp5) {
      $j_029 = $add;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call8 = _gvputs($2, 141408) | 0;
    label = 7;
    break;
   case 7:
    $obj9 = $job + 16 | 0;
    $3 = HEAP32[$obj9 >> 2] | 0;
    $arrayidx12 = $3 + 40 | 0;
    $4 = +HEAPF64[$arrayidx12 >> 3];
    $cmp13 = $4 > .5;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    _ps_set_pen_style($job);
    $5 = HEAP32[$obj9 >> 2] | 0;
    $pencolor16 = $5 + 16 | 0;
    _ps_set_color($job, $pencolor16);
    $6 = $job;
    $call17 = _gvputs($6, 142864) | 0;
    _gvprintpointf($6, $A);
    $call19 = _gvputs($6, 142520) | 0;
    $cmp2126 = ($n | 0) > 1;
    if ($cmp2126) {
      $j_127 = 1;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $arrayidx23 = $A + ($j_127 << 4) | 0;
    _gvprintpointflist($6, $arrayidx23, 3);
    $call24 = _gvputs($6, 141720) | 0;
    $add26 = $j_127 + 3 | 0;
    $cmp21 = ($add26 | 0) < ($n | 0);
    if ($cmp21) {
      $j_127 = $add26;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call28 = _gvputs($6, 142016) | 0;
    label = 11;
    break;
   case 11:
    return;
  }
}
function _psgen_polyline($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $obj = 0, $0 = 0, $arrayidx = 0, $1 = 0.0, $cmp = 0, $2 = 0, $pencolor2 = 0, $3 = 0, $call = 0, $call4 = 0, $cmp512 = 0, $j_013 = 0, $arrayidx6 = 0, $call7 = 0, $inc = 0, $cmp5 = 0, $call8 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $arrayidx = $0 + 40 | 0;
    $1 = +HEAPF64[$arrayidx >> 3];
    $cmp = $1 > .5;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    _ps_set_pen_style($job);
    $2 = HEAP32[$obj >> 2] | 0;
    $pencolor2 = $2 + 16 | 0;
    _ps_set_color($job, $pencolor2);
    $3 = $job;
    $call = _gvputs($3, 142864) | 0;
    _gvprintpointf($3, $A);
    $call4 = _gvputs($3, 142520) | 0;
    $cmp512 = ($n | 0) > 1;
    if ($cmp512) {
      $j_013 = 1;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $arrayidx6 = $A + ($j_013 << 4) | 0;
    _gvprintpointf($3, $arrayidx6);
    $call7 = _gvputs($3, 142256) | 0;
    $inc = $j_013 + 1 | 0;
    $cmp5 = ($inc | 0) < ($n | 0);
    if ($cmp5) {
      $j_013 = $inc;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call8 = _gvputs($3, 142016) | 0;
    label = 6;
    break;
   case 6:
    return;
  }
}
function _psgen_comment($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 143584);
  _gvputs($0, $str);
  _gvputs($0, 143192);
  return;
}
function _psgen_library_shape($job, $name, $A, $n, $filled) {
  $job = $job | 0;
  $name = $name | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $tobool = 0, $obj = 0, $0 = 0, $arrayidx = 0, $1 = 0.0, $cmp = 0, $fillcolor = 0, $2 = 0, $call = 0, $call3 = 0, $obj5 = 0, $3 = 0, $arrayidx8 = 0, $4 = 0.0, $cmp9 = 0, $5 = 0, $pencolor12 = 0, $6 = 0, $call13 = 0, $call14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $arrayidx = $0 + 80 | 0;
    $1 = +HEAPF64[$arrayidx >> 3];
    $cmp = $1 > .5;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $fillcolor = $0 + 56 | 0;
    _ps_set_color($job, $fillcolor);
    $2 = $job;
    $call = _gvputs($2, 147560) | 0;
    _gvprintpointflist($2, $A, $n);
    $call3 = _gvputs($2, 147256) | 0;
    _gvprintpointf($2, $A);
    _gvprintf($2, 147008, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $n, HEAP32[tempInt + 8 >> 2] = $name, tempInt) | 0);
    label = 5;
    break;
   case 5:
    $obj5 = $job + 16 | 0;
    $3 = HEAP32[$obj5 >> 2] | 0;
    $arrayidx8 = $3 + 40 | 0;
    $4 = +HEAPF64[$arrayidx8 >> 3];
    $cmp9 = $4 > .5;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    _ps_set_pen_style($job);
    $5 = HEAP32[$obj5 >> 2] | 0;
    $pencolor12 = $5 + 16 | 0;
    _ps_set_color($job, $pencolor12);
    $6 = $job;
    $call13 = _gvputs($6, 147560) | 0;
    _gvprintpointflist($6, $A, $n);
    $call14 = _gvputs($6, 147256) | 0;
    _gvprintpointf($6, $A);
    _gvprintf($6, 146680, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $n, HEAP32[tempInt + 8 >> 2] = $name, tempInt) | 0);
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return;
  }
}
function _ps_set_color($job, $color) {
  $job = $job | 0;
  $color = $color | 0;
  var $tobool = 0, $obj = 0, $0 = 0, $type = 0, $1 = 0, $objtype_0 = 0, $arrayidx = 0, $2 = 0.0, $arrayidx5 = 0, $3 = 0.0, $arrayidx8 = 0, $4 = 0.0, $5 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($color | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $type = $0 + 4 | 0;
    $1 = HEAP32[$type >> 2] | 0;
    if (($1 | 0) == 2) {
      label = 4;
      break;
    } else if (($1 | 0) == 3) {
      label = 5;
      break;
    } else if (($1 | 0) == 0 | ($1 | 0) == 1) {
      $objtype_0 = 145016;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $objtype_0 = 144760;
    label = 7;
    break;
   case 5:
    $objtype_0 = 144496;
    label = 7;
    break;
   case 6:
    $objtype_0 = 144272;
    label = 7;
    break;
   case 7:
    $arrayidx = $color | 0;
    $2 = +HEAPF64[$arrayidx >> 3];
    $arrayidx5 = $color + 8 | 0;
    $3 = +HEAPF64[$arrayidx5 >> 3];
    $arrayidx8 = $color + 16 | 0;
    $4 = +HEAPF64[$arrayidx8 >> 3];
    $5 = $job;
    _gvprintf($5, 143896, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $2, HEAPF64[tempInt + 8 >> 3] = $3, HEAPF64[tempInt + 16 >> 3] = $4, HEAP32[tempInt + 24 >> 2] = $objtype_0, tempInt) | 0);
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _ps_set_pen_style($job) {
  $job = $job | 0;
  var $obj = 0, $0 = 0, $penwidth1 = 0, $1 = 0.0, $rawstyle = 0, $2 = 0, $3 = 0, $call = 0, $tobool18 = 0, $s_019 = 0, $incdec_ptr = 0, $4 = 0, $tobool3 = 0, $call4 = 0, $cmp = 0, $p_0 = 0, $5 = 0, $tobool6 = 0, $incdec_ptr8 = 0, $6 = 0, $tobool1116 = 0, $7 = 0, $tobool11 = 0, $p_117 = 0, $p_2 = 0, $8 = 0, $tobool14 = 0, $incdec_ptr16 = 0, $call20 = 0, $cmp21 = 0, $9 = 0, $penwidth24 = 0, $tobool = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj = $job + 16 | 0;
    $0 = HEAP32[$obj >> 2] | 0;
    $penwidth1 = $0 + 104 | 0;
    $1 = +HEAPF64[$penwidth1 >> 3];
    $rawstyle = $0 + 112 | 0;
    $2 = HEAP32[$rawstyle >> 2] | 0;
    $3 = $job;
    _gvprintdouble($3, $1);
    $call = _gvputs($3, 146448) | 0;
    $tobool18 = ($2 | 0) == 0;
    if ($tobool18) {
      label = 14;
      break;
    } else {
      $s_019 = $2;
      label = 3;
      break;
    }
   case 3:
    $incdec_ptr = $s_019 + 4 | 0;
    $4 = HEAP32[$s_019 >> 2] | 0;
    $tobool3 = ($4 | 0) == 0;
    if ($tobool3) {
      label = 14;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call4 = _strcmp($4 | 0, 146176) | 0;
    $cmp = ($call4 | 0) == 0;
    if ($cmp) {
      label = 13;
      break;
    } else {
      $p_0 = $4;
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP8[$p_0] | 0;
    $tobool6 = $5 << 24 >> 24 == 0;
    $incdec_ptr8 = $p_0 + 1 | 0;
    if ($tobool6) {
      label = 6;
      break;
    } else {
      $p_0 = $incdec_ptr8;
      label = 5;
      break;
    }
   case 6:
    $6 = HEAP8[$incdec_ptr8] | 0;
    $tobool1116 = $6 << 24 >> 24 == 0;
    if ($tobool1116) {
      label = 10;
      break;
    } else {
      $p_117 = $incdec_ptr8;
      label = 8;
      break;
    }
   case 7:
    $7 = HEAP8[$incdec_ptr16] | 0;
    $tobool11 = $7 << 24 >> 24 == 0;
    if ($tobool11) {
      label = 10;
      break;
    } else {
      $p_117 = $incdec_ptr16;
      label = 8;
      break;
    }
   case 8:
    _gvprintf($3, 145928, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $p_117, tempInt) | 0);
    $p_2 = $p_117;
    label = 9;
    break;
   case 9:
    $8 = HEAP8[$p_2] | 0;
    $tobool14 = $8 << 24 >> 24 == 0;
    $incdec_ptr16 = $p_2 + 1 | 0;
    if ($tobool14) {
      label = 7;
      break;
    } else {
      $p_2 = $incdec_ptr16;
      label = 9;
      break;
    }
   case 10:
    $call20 = _strcmp($4 | 0, 145576) | 0;
    $cmp21 = ($call20 | 0) == 0;
    if ($cmp21) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $9 = HEAP32[$obj >> 2] | 0;
    $penwidth24 = $9 + 104 | 0;
    HEAPF64[$penwidth24 >> 3] = 0.0;
    label = 12;
    break;
   case 12:
    _gvprintf($3, 145304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $4, tempInt) | 0);
    label = 13;
    break;
   case 13:
    $tobool = ($incdec_ptr | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      $s_019 = $incdec_ptr;
      label = 3;
      break;
    }
   case 14:
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_begin_job($job) {
  $job = $job | 0;
  var $0 = 0, $call = 0, $gvc = 0, $1 = 0, $g = 0, $2 = 0, $3 = 0, $call1 = 0, $tobool = 0, $4 = 0, $tobool2 = 0, $call3 = 0, $call4 = 0, $call5 = 0, $call6 = 0, $call7 = 0, $call8 = 0, $common = 0, $5 = 0, $info = 0, $6 = 0, $7 = 0, $call10 = 0, $call11 = 0, $call12 = 0, $8 = 0, $info14 = 0, $9 = 0, $arrayidx15 = 0, $10 = 0, $call16 = 0, $call17 = 0, $call18 = 0, $11 = 0, $info20 = 0, $12 = 0, $arrayidx21 = 0, $13 = 0, $call22 = 0, $call23 = 0, $call24 = 0, $call25 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 128896) | 0;
    $gvc = $job | 0;
    $1 = HEAP32[$gvc >> 2] | 0;
    $g = $1 + 128 | 0;
    $2 = HEAP32[$g >> 2] | 0;
    $3 = $2 | 0;
    $call1 = _agget($3, 128768) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = HEAP8[$call1] | 0;
    $tobool2 = $4 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call3 = _gvputs($0, 128544) | 0;
    $call4 = _gvputs($0, $call1) | 0;
    $call5 = _gvputs($0, 128360) | 0;
    label = 5;
    break;
   case 5:
    $call6 = _gvputs($0, 127984) | 0;
    $call7 = _gvputs($0, 127704) | 0;
    $call8 = _gvputs($0, 127424) | 0;
    $common = $job + 12 | 0;
    $5 = HEAP32[$common >> 2] | 0;
    $info = $5 | 0;
    $6 = HEAP32[$info >> 2] | 0;
    $7 = HEAP32[$6 >> 2] | 0;
    $call10 = _xml_string($7) | 0;
    $call11 = _gvputs($0, $call10) | 0;
    $call12 = _gvputs($0, 127104) | 0;
    $8 = HEAP32[$common >> 2] | 0;
    $info14 = $8 | 0;
    $9 = HEAP32[$info14 >> 2] | 0;
    $arrayidx15 = $9 + 4 | 0;
    $10 = HEAP32[$arrayidx15 >> 2] | 0;
    $call16 = _xml_string($10) | 0;
    $call17 = _gvputs($0, $call16) | 0;
    $call18 = _gvputs($0, 126848) | 0;
    $11 = HEAP32[$common >> 2] | 0;
    $info20 = $11 | 0;
    $12 = HEAP32[$info20 >> 2] | 0;
    $arrayidx21 = $12 + 8 | 0;
    $13 = HEAP32[$arrayidx21 >> 2] | 0;
    $call22 = _xml_string($13) | 0;
    $call23 = _gvputs($0, $call22) | 0;
    $call24 = _gvputs($0, 126584) | 0;
    $call25 = _gvputs($0, 146440) | 0;
    return;
  }
}
function _svg_begin_graph($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $g = 0, $2 = 0, $name = 0, $3 = 0, $4 = 0, $tobool = 0, $call2 = 0, $5 = 0, $name5 = 0, $6 = 0, $call6 = 0, $call7 = 0, $x = 0, $7 = 0, $y = 0, $8 = 0, $mul = 0, $width = 0, $9 = 0, $height = 0, $10 = 0, $x9 = 0, $11 = 0.0, $y12 = 0, $12 = 0.0, $x14 = 0, $13 = 0.0, $y17 = 0, $14 = 0.0, $call18 = 0, $call19 = 0, $call20 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 130232) | 0;
    $g = $0 + 8 | 0;
    $2 = HEAP32[$g >> 2] | 0;
    $name = $2 + 12 | 0;
    $3 = HEAP32[$name >> 2] | 0;
    $4 = HEAP8[$3] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call2 = _gvputs($1, 130040) | 0;
    $5 = HEAP32[$g >> 2] | 0;
    $name5 = $5 + 12 | 0;
    $6 = HEAP32[$name5 >> 2] | 0;
    $call6 = _xml_string($6) | 0;
    $call7 = _gvputs($1, $call6) | 0;
    label = 4;
    break;
   case 4:
    $x = $job + 164 | 0;
    $7 = HEAP32[$x >> 2] | 0;
    $y = $job + 168 | 0;
    $8 = HEAP32[$y >> 2] | 0;
    $mul = Math_imul($8, $7);
    _gvprintf($1, 129888, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $mul, tempInt) | 0);
    $width = $job + 448 | 0;
    $9 = HEAP32[$width >> 2] | 0;
    $height = $job + 452 | 0;
    $10 = HEAP32[$height >> 2] | 0;
    _gvprintf($1, 129704, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $9, HEAP32[tempInt + 8 >> 2] = $10, tempInt) | 0);
    $x9 = $job + 384 | 0;
    $11 = +HEAPF64[$x9 >> 3];
    $y12 = $job + 392 | 0;
    $12 = +HEAPF64[$y12 >> 3];
    $x14 = $job + 400 | 0;
    $13 = +HEAPF64[$x14 >> 3];
    $y17 = $job + 408 | 0;
    $14 = +HEAPF64[$y17 >> 3];
    _gvprintf($1, 129480, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $11, HEAPF64[tempInt + 8 >> 3] = $12, HEAPF64[tempInt + 16 >> 3] = $13, HEAPF64[tempInt + 24 >> 3] = $14, tempInt) | 0);
    $call18 = _gvputs($1, 129256) | 0;
    $call19 = _gvputs($1, 129072) | 0;
    $call20 = _gvputs($1, 132528) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_end_graph($job) {
  $job = $job | 0;
  _gvputs($job, 130416);
  return;
}
function _svg_begin_layer($job, $layername, $layerNum, $numLayers) {
  $job = $job | 0;
  $layername = $layername | 0;
  $layerNum = $layerNum | 0;
  $numLayers = $numLayers | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 132224);
  _gvputs($0, _xml_string($layername) | 0);
  _gvputs($0, 130592);
  return;
}
function _svg_end_layer($job) {
  $job = $job | 0;
  _gvputs($job, 132392);
  return;
}
function _svg_begin_page($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $id = 0, $2 = 0, $call2 = 0, $call3 = 0, $call4 = 0, $x = 0, $3 = 0.0, $y = 0, $4 = 0.0, $rotation = 0, $5 = 0, $sub = 0, $x6 = 0, $6 = 0.0, $y8 = 0, $7 = 0.0, $sub9 = 0.0, $g = 0, $8 = 0, $name = 0, $9 = 0, $10 = 0, $tobool = 0, $call10 = 0, $11 = 0, $name13 = 0, $12 = 0, $call14 = 0, $call15 = 0, $call16 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 132224) | 0;
    $id = $0 + 164 | 0;
    $2 = HEAP32[$id >> 2] | 0;
    $call2 = _xml_string($2) | 0;
    $call3 = _gvputs($1, $call2) | 0;
    $call4 = _gvputs($1, 130936) | 0;
    $x = $job + 488 | 0;
    $3 = +HEAPF64[$x >> 3];
    $y = $job + 496 | 0;
    $4 = +HEAPF64[$y >> 3];
    $rotation = $job + 360 | 0;
    $5 = HEAP32[$rotation >> 2] | 0;
    $sub = -$5 | 0;
    $x6 = $job + 504 | 0;
    $6 = +HEAPF64[$x6 >> 3];
    $y8 = $job + 512 | 0;
    $7 = +HEAPF64[$y8 >> 3];
    $sub9 = -0.0 - $7;
    _gvprintf($1, 130744, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAPF64[tempInt >> 3] = $3, HEAPF64[tempInt + 8 >> 3] = $4, HEAP32[tempInt + 16 >> 2] = $sub, HEAPF64[tempInt + 24 >> 3] = $6, HEAPF64[tempInt + 32 >> 3] = $sub9, tempInt) | 0);
    $g = $0 + 8 | 0;
    $8 = HEAP32[$g >> 2] | 0;
    $name = $8 + 12 | 0;
    $9 = HEAP32[$name >> 2] | 0;
    $10 = HEAP8[$9] | 0;
    $tobool = $10 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call10 = _gvputs($1, 131880) | 0;
    $11 = HEAP32[$g >> 2] | 0;
    $name13 = $11 + 12 | 0;
    $12 = HEAP32[$name13 >> 2] | 0;
    $call14 = _xml_string($12) | 0;
    $call15 = _gvputs($1, $call14) | 0;
    $call16 = _gvputs($1, 131424) | 0;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_end_page($job) {
  $job = $job | 0;
  _gvputs($job, 132392);
  return;
}
function _svg_begin_cluster($job) {
  $job = $job | 0;
  var $0 = 0, $1 = 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  $1 = $job;
  _gvputs($1, 132224);
  _gvputs($1, _xml_string(HEAP32[$0 + 164 >> 2] | 0) | 0);
  _gvputs($1, 131072);
  _gvputs($1, 131880);
  _gvputs($1, _xml_string(HEAP32[(HEAP32[$0 + 8 >> 2] | 0) + 12 >> 2] | 0) | 0);
  _gvputs($1, 131424);
  return;
}
function _svg_end_cluster($job) {
  $job = $job | 0;
  _gvputs($job, 132392);
  return;
}
function _svg_begin_node($job) {
  $job = $job | 0;
  var $0 = 0, $1 = 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  $1 = $job;
  _gvputs($1, 132224);
  _gvputs($1, _xml_string(HEAP32[$0 + 164 >> 2] | 0) | 0);
  _gvputs($1, 131264);
  _gvputs($1, 131880);
  _gvputs($1, _xml_string(HEAP32[(HEAP32[$0 + 8 >> 2] | 0) + 12 >> 2] | 0) | 0);
  _gvputs($1, 131424);
  return;
}
function _svg_end_node($job) {
  $job = $job | 0;
  _gvputs($job, 132392);
  return;
}
function _svg_begin_edge($job) {
  $job = $job | 0;
  var $0 = 0, $1 = 0, $call6 = 0;
  $0 = HEAP32[$job + 16 >> 2] | 0;
  $1 = $job;
  _gvputs($1, 132224);
  _gvputs($1, _xml_string(HEAP32[$0 + 164 >> 2] | 0) | 0);
  _gvputs($1, 132024);
  _gvputs($1, 131880);
  $call6 = _strdup_and_subst_obj(131584, HEAP32[$0 + 8 >> 2] | 0) | 0;
  _gvputs($1, _xml_string($call6) | 0);
  _free($call6);
  _gvputs($1, 131424);
  return;
}
function _svg_end_edge($job) {
  $job = $job | 0;
  _gvputs($job, 132392);
  return;
}
function _svg_begin_anchor($job, $href, $tooltip, $target, $id) {
  $job = $job | 0;
  $href = $href | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $call2 = 0, $call3 = 0, $call4 = 0, $call5 = 0, $tobool6 = 0, $2 = 0, $tobool10 = 0, $call12 = 0, $call13 = 0, $call14 = 0, $call15 = 0, $tobool17 = 0, $3 = 0, $tobool21 = 0, $call23 = 0, $call24 = 0, $call25 = 0, $call26 = 0, $call28 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 133512) | 0;
    $tobool = ($href | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$href] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call2 = _gvputs($0, 133272) | 0;
    $call3 = _xml_url_string($href) | 0;
    $call4 = _gvputs($0, $call3) | 0;
    $call5 = _gvputs($0, 142856) | 0;
    label = 5;
    break;
   case 5:
    $tobool6 = ($tooltip | 0) == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$tooltip] | 0;
    $tobool10 = $2 << 24 >> 24 == 0;
    if ($tobool10) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call12 = _gvputs($0, 132936) | 0;
    $call13 = _xml_string($tooltip) | 0;
    $call14 = _gvputs($0, $call13) | 0;
    $call15 = _gvputs($0, 142856) | 0;
    label = 8;
    break;
   case 8:
    $tobool17 = ($target | 0) == 0;
    if ($tobool17) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $3 = HEAP8[$target] | 0;
    $tobool21 = $3 << 24 >> 24 == 0;
    if ($tobool21) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call23 = _gvputs($0, 132712) | 0;
    $call24 = _xml_string($target) | 0;
    $call25 = _gvputs($0, $call24) | 0;
    $call26 = _gvputs($0, 142856) | 0;
    label = 11;
    break;
   case 11:
    $call28 = _gvputs($0, 132528) | 0;
    return;
  }
}
function _tkgen_begin_node($job) {
  $job = $job | 0;
  HEAP32[4110] = 1;
  return;
}
function _tkgen_begin_edge($job) {
  $job = $job | 0;
  HEAP32[4110] = -1;
  return;
}
function _tkgen_string($s) {
  $s = $s | 0;
  return $s | 0;
}
function _svg_end_anchor($job) {
  $job = $job | 0;
  _gvputs($job, 133800);
  return;
}
function _svg_ellipse($job, $A, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $filled = $filled | 0;
  var $0 = 0, $x = 0, $y = 0, $sub = 0.0, $sub11 = 0.0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $0 = $job;
  _gvputs($0, 138968);
  _svg_grstyle($job, $filled);
  $x = $A | 0;
  $y = $A + 8 | 0;
  $sub = -0.0 - +HEAPF64[$y >> 3];
  _gvprintf($0, 138712, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = +HEAPF64[$x >> 3], HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
  $sub11 = +HEAPF64[$A + 24 >> 3] - +HEAPF64[$y >> 3];
  _gvprintf($0, 138464, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = +HEAPF64[$A + 16 >> 3] - +HEAPF64[$x >> 3], HEAPF64[tempInt + 8 >> 3] = $sub11, tempInt) | 0);
  _gvputs($0, 138136);
  STACKTOP = __stackBase__;
  return;
}
function _svg_polygon($job, $A, $n, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $0 = 0, $call = 0, $call1 = 0, $cmp11 = 0, $i_012 = 0, $x = 0, $1 = 0.0, $y = 0, $2 = 0.0, $sub = 0.0, $inc = 0, $cmp = 0, $x4 = 0, $3 = 0.0, $y6 = 0, $4 = 0.0, $sub7 = 0.0, $call8 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 139528) | 0;
    _svg_grstyle($job, $filled);
    $call1 = _gvputs($0, 145912) | 0;
    $cmp11 = ($n | 0) > 0;
    if ($cmp11) {
      $i_012 = 0;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $x = $A + ($i_012 << 4) | 0;
    $1 = +HEAPF64[$x >> 3];
    $y = $A + ($i_012 << 4) + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $sub = -0.0 - $2;
    _gvprintf($0, 145528, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $1, HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
    $inc = $i_012 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_012 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $x4 = $A | 0;
    $3 = +HEAPF64[$x4 >> 3];
    $y6 = $A + 8 | 0;
    $4 = +HEAPF64[$y6 >> 3];
    $sub7 = -0.0 - $4;
    _gvprintf($0, 139304, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $3, HEAPF64[tempInt + 8 >> 3] = $sub7, tempInt) | 0);
    $call8 = _gvputs($0, 145296) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_bezier($job, $A, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 141168);
  _svg_grstyle($job, $filled);
  _gvputs($0, 140112);
  _svg_bzptarray($job, $A, $n);
  _gvputs($0, 145296);
  return;
}
function _svg_polyline($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $0 = 0, $call = 0, $call1 = 0, $cmp8 = 0, $i_09 = 0, $x = 0, $1 = 0.0, $y = 0, $2 = 0.0, $sub = 0.0, $inc = 0, $cmp = 0, $call3 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 146152) | 0;
    _svg_grstyle($job, 0);
    $call1 = _gvputs($0, 145912) | 0;
    $cmp8 = ($n | 0) > 0;
    if ($cmp8) {
      $i_09 = 0;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $x = $A + ($i_09 << 4) | 0;
    $1 = +HEAPF64[$x >> 3];
    $y = $A + ($i_09 << 4) + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $sub = -0.0 - $2;
    _gvprintf($0, 145528, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $1, HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
    $inc = $i_09 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_09 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call3 = _gvputs($0, 145296) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_comment($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 146672);
  _gvputs($0, _xml_string($str) | 0);
  _gvputs($0, 146440);
  return;
}
function _svg_grstyle($job, $filled) {
  $job = $job | 0;
  $filled = $filled | 0;
  var $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $tobool = 0, $fillcolor = 0, $type = 0, $2 = 0, $cmp = 0, $rgba = 0, $arrayidx = 0, $3 = 0, $conv19 = 0.0, $conv20 = 0.0, $div = 0.0, $call21 = 0, $call23 = 0, $pencolor = 0, $penwidth = 0, $4 = 0.0, $cmp24 = 0, $pen = 0, $5 = 0, $type40 = 0, $6 = 0, $cmp41 = 0, $rgba46 = 0, $arrayidx47 = 0, $7 = 0, $conv64 = 0.0, $conv65 = 0.0, $div66 = 0.0, $call68 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 145008) | 0;
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $fillcolor = $0 + 56 | 0;
    _svg_print_color($job, $fillcolor);
    $type = $0 + 88 | 0;
    $2 = HEAP32[$type >> 2] | 0;
    $cmp = ($2 | 0) == 1;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $rgba = $fillcolor;
    $arrayidx = $rgba + 3 | 0;
    $3 = HEAP8[$arrayidx] | 0;
    if (($3 << 24 >> 24 | 0) == 0 | ($3 << 24 >> 24 | 0) == (-1 | 0)) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $conv19 = +(($3 & 255) >>> 0);
    $conv20 = $conv19;
    $div = $conv20 / 255.0;
    _gvprintf($1, 144720, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div, tempInt) | 0);
    label = 7;
    break;
   case 6:
    $call21 = _gvputs($1, 144488) | 0;
    label = 7;
    break;
   case 7:
    $call23 = _gvputs($1, 144256) | 0;
    $pencolor = $0 + 16 | 0;
    _svg_print_color($job, $pencolor);
    $penwidth = $0 + 104 | 0;
    $4 = +HEAPF64[$penwidth >> 3];
    $cmp24 = $4 != 1.0;
    if ($cmp24) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    _gvprintf($1, 143872, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $4, tempInt) | 0);
    label = 9;
    break;
   case 9:
    $pen = $0 + 96 | 0;
    $5 = HEAP32[$pen >> 2] | 0;
    if (($5 | 0) == 1) {
      label = 10;
      break;
    } else if (($5 | 0) == 2) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 10:
    _gvprintf($1, 143560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = 142248, tempInt) | 0);
    label = 12;
    break;
   case 11:
    _gvprintf($1, 143560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = 142480, tempInt) | 0);
    label = 12;
    break;
   case 12:
    $type40 = $0 + 48 | 0;
    $6 = HEAP32[$type40 >> 2] | 0;
    $cmp41 = ($6 | 0) == 1;
    if ($cmp41) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $rgba46 = $pencolor;
    $arrayidx47 = $rgba46 + 3 | 0;
    $7 = HEAP8[$arrayidx47] | 0;
    if (($7 << 24 >> 24 | 0) == 0 | ($7 << 24 >> 24 | 0) == (-1 | 0)) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $conv64 = +(($7 & 255) >>> 0);
    $conv65 = $conv64;
    $div66 = $conv65 / 255.0;
    _gvprintf($1, 143152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $div66, tempInt) | 0);
    label = 15;
    break;
   case 15:
    $call68 = _gvputs($1, 142856) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_bzptarray($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $cmp7 = 0, $0 = 0, $c_09 = 0, $i_08 = 0, $conv6 = 0, $x = 0, $1 = 0.0, $y = 0, $2 = 0.0, $sub = 0.0, $cmp2 = 0, $_ = 0, $inc = 0, $cmp = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp7 = ($n | 0) > 0;
    if ($cmp7) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $0 = $job;
    $i_08 = 0;
    $c_09 = 77;
    label = 4;
    break;
   case 4:
    $conv6 = $c_09 & 255;
    $x = $A + ($i_08 << 4) | 0;
    $1 = +HEAPF64[$x >> 3];
    $y = $A + ($i_08 << 4) + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $sub = -0.0 - $2;
    _gvprintf($0, 139840, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $conv6, HEAPF64[tempInt + 8 >> 3] = $1, HEAPF64[tempInt + 16 >> 3] = $sub, tempInt) | 0);
    $cmp2 = ($i_08 | 0) == 0;
    $_ = $cmp2 ? 67 : 32;
    $inc = $i_08 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_08 = $inc;
      $c_09 = $_;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    STACKTOP = __stackBase__;
    return;
  }
}
function _tkgen_begin_job($job) {
  $job = $job | 0;
  var $0 = 0, $common = 0;
  $0 = $job;
  _gvputs($0, 114832);
  $common = $job + 12 | 0;
  _gvputs($0, _tkgen_string(HEAP32[HEAP32[HEAP32[$common >> 2] >> 2] >> 2] | 0) | 0);
  _gvputs($0, 114200);
  _gvputs($0, _tkgen_string(HEAP32[(HEAP32[HEAP32[$common >> 2] >> 2] | 0) + 4 >> 2] | 0) | 0);
  _gvputs($0, 113728);
  _gvputs($0, _tkgen_string(HEAP32[(HEAP32[HEAP32[$common >> 2] >> 2] | 0) + 8 >> 2] | 0) | 0);
  _gvputs($0, 113296);
  return;
}
function _tkgen_begin_graph($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $g = 0, $2 = 0, $name = 0, $3 = 0, $4 = 0, $tobool = 0, $call2 = 0, $5 = 0, $name5 = 0, $6 = 0, $call6 = 0, $call7 = 0, $x = 0, $7 = 0, $y = 0, $8 = 0, $mul = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 116336) | 0;
    $g = $0 + 8 | 0;
    $2 = HEAP32[$g >> 2] | 0;
    $name = $2 + 12 | 0;
    $3 = HEAP32[$name >> 2] | 0;
    $4 = HEAP8[$3] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call2 = _gvputs($1, 115832) | 0;
    $5 = HEAP32[$g >> 2] | 0;
    $name5 = $5 + 12 | 0;
    $6 = HEAP32[$name5 >> 2] | 0;
    $call6 = _tkgen_string($6) | 0;
    $call7 = _gvputs($1, $call6) | 0;
    label = 4;
    break;
   case 4:
    $x = $job + 164 | 0;
    $7 = HEAP32[$x >> 2] | 0;
    $y = $job + 168 | 0;
    $8 = HEAP32[$y >> 2] | 0;
    $mul = Math_imul($8, $7);
    _gvprintf($1, 115376, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $mul, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _tkgen_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $obj1 = 0, $0 = 0, $pen = 0, $1 = 0, $cmp = 0, $fontsize = 0, $2 = 0.0, $zoom = 0, $3 = 0.0, $mul = 0.0, $conv = 0, $tobool = 0, $4 = 0, $call = 0, $conv3 = 0.0, $mul4 = 0.0, $y = 0, $5 = 0.0, $sub = 0.0, $call5 = 0, $str = 0, $6 = 0, $call6 = 0, $call7 = 0, $call8 = 0, $pencolor = 0, $call9 = 0, $postscript_alias = 0, $7 = 0, $tobool10 = 0, $family = 0, $fontname = 0, $font_0_in = 0, $font_0 = 0, $call13 = 0, $call14 = 0, $call15 = 0, $just = 0, $8 = 0, $conv16 = 0, $call17 = 0, $call19 = 0, $call21 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $pen = $0 + 96 | 0;
    $1 = HEAP32[$pen >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $fontsize = $para + 24 | 0;
    $2 = +HEAPF64[$fontsize >> 3];
    $zoom = $job + 352 | 0;
    $3 = +HEAPF64[$zoom >> 3];
    $mul = $2 * $3;
    $conv = ~~$mul;
    $tobool = ($conv | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _tkgen_canvas($job);
    $4 = $job;
    $call = _gvputs($4, 121048) | 0;
    $conv3 = +($conv | 0);
    $mul4 = $conv3 * .55;
    $y = $p + 8 | 0;
    $5 = +HEAPF64[$y >> 3];
    $sub = $5 - $mul4;
    HEAPF64[$y >> 3] = $sub;
    _gvprintpointf($4, $p);
    $call5 = _gvputs($4, 120360) | 0;
    $str = $para | 0;
    $6 = HEAP32[$str >> 2] | 0;
    $call6 = _gvputs($4, $6) | 0;
    $call7 = _gvputs($4, 119720) | 0;
    $call8 = _gvputs($4, 107048) | 0;
    $pencolor = $0 + 16 | 0;
    _tkgen_print_color($job, $pencolor);
    $call9 = _gvputs($4, 119176) | 0;
    $postscript_alias = $para + 4 | 0;
    $7 = HEAP32[$postscript_alias >> 2] | 0;
    $tobool10 = ($7 | 0) == 0;
    $family = $7 + 4 | 0;
    $fontname = $para + 20 | 0;
    $font_0_in = $tobool10 ? $fontname : $family;
    $font_0 = HEAP32[$font_0_in >> 2] | 0;
    $call13 = _gvputs($4, 118656) | 0;
    $call14 = _gvputs($4, $font_0) | 0;
    $call15 = _gvputs($4, 118656) | 0;
    _gvprintf($4, 118064, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $conv, tempInt) | 0);
    $just = $para + 72 | 0;
    $8 = HEAP8[$just] | 0;
    $conv16 = $8 << 24 >> 24;
    if (($conv16 | 0) == 108) {
      label = 5;
      break;
    } else if (($conv16 | 0) == 114) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $call17 = _gvputs($4, 117504) | 0;
    label = 7;
    break;
   case 6:
    $call19 = _gvputs($4, 116816) | 0;
    label = 7;
    break;
   case 7:
    _tkgen_print_tags($job);
    $call21 = _gvputs($4, 116384) | 0;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _tkgen_ellipse($job, $A, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $filled = $filled | 0;
  var $obj1 = 0, $0 = 0, $pen = 0, $1 = 0, $cmp = 0, $x = 0, $2 = 0.0, $x3 = 0, $3 = 0.0, $sub = 0.0, $y = 0, $4 = 0.0, $y7 = 0, $5 = 0.0, $sub8 = 0.0, $sub13 = 0.0, $6 = 0.0, $sub17 = 0.0, $7 = 0, $call = 0, $call18 = 0, $tobool = 0, $fillcolor = 0, $8 = 0, $tobool20 = 0, $call22 = 0, $call24 = 0, $9 = 0, $cmp26 = 0, $call29 = 0, $penwidth = 0, $10 = 0.0, $call30 = 0, $pencolor = 0, $11 = 0, $cmp32 = 0, $call34 = 0, $_pr = 0, $12 = 0, $cmp37 = 0, $call39 = 0, $call41 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $pen = $0 + 96 | 0;
    $1 = HEAP32[$pen >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $x = $A + 16 | 0;
    $2 = +HEAPF64[$x >> 3];
    $x3 = $A | 0;
    $3 = +HEAPF64[$x3 >> 3];
    $sub = $2 - $3;
    $y = $A + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y7 = $A + 8 | 0;
    $5 = +HEAPF64[$y7 >> 3];
    $sub8 = $4 - $5;
    $sub13 = $3 - $sub;
    HEAPF64[$x3 >> 3] = $sub13;
    $6 = +HEAPF64[$y7 >> 3];
    $sub17 = $6 - $sub8;
    HEAPF64[$y7 >> 3] = $sub17;
    _tkgen_canvas($job);
    $7 = $job;
    $call = _gvputs($7, 121656) | 0;
    _gvprintpointflist($7, $A, 2);
    $call18 = _gvputs($7, 107048) | 0;
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $fillcolor = $0 + 56 | 0;
    _tkgen_print_color($job, $fillcolor);
    label = 8;
    break;
   case 5:
    $8 = HEAP32[4110] | 0;
    $tobool20 = ($8 | 0) == 0;
    if ($tobool20) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call22 = _gvputs($7, 124864) | 0;
    label = 8;
    break;
   case 7:
    $call24 = _gvputs($7, 138688) | 0;
    label = 8;
    break;
   case 8:
    $9 = HEAP32[4110] | 0;
    $cmp26 = ($9 | 0) == 1;
    if ($cmp26) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    HEAP32[4110] = 0;
    label = 10;
    break;
   case 10:
    $call29 = _gvputs($7, 131400) | 0;
    $penwidth = $0 + 104 | 0;
    $10 = +HEAPF64[$penwidth >> 3];
    _gvprintdouble($7, $10);
    $call30 = _gvputs($7, 122888) | 0;
    $pencolor = $0 + 16 | 0;
    _tkgen_print_color($job, $pencolor);
    $11 = HEAP32[$pen >> 2] | 0;
    $cmp32 = ($11 | 0) == 1;
    if ($cmp32) {
      label = 11;
      break;
    } else {
      $12 = $11;
      label = 12;
      break;
    }
   case 11:
    $call34 = _gvputs($7, 103120) | 0;
    $_pr = HEAP32[$pen >> 2] | 0;
    $12 = $_pr;
    label = 12;
    break;
   case 12:
    $cmp37 = ($12 | 0) == 2;
    if ($cmp37) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $call39 = _gvputs($7, 99016) | 0;
    label = 14;
    break;
   case 14:
    _tkgen_print_tags($job);
    $call41 = _gvputs($7, 116384) | 0;
    label = 15;
    break;
   case 15:
    return;
  }
}
function _tkgen_polygon($job, $A, $n, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $obj1 = 0, $0 = 0, $pen = 0, $1 = 0, $cmp = 0, $2 = 0, $call = 0, $call2 = 0, $tobool = 0, $fillcolor = 0, $3 = 0, $tobool4 = 0, $call6 = 0, $call8 = 0, $4 = 0, $cmp10 = 0, $call13 = 0, $penwidth = 0, $5 = 0.0, $call14 = 0, $pencolor = 0, $6 = 0, $cmp16 = 0, $call18 = 0, $_pr = 0, $7 = 0, $cmp21 = 0, $call23 = 0, $call25 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $pen = $0 + 96 | 0;
    $1 = HEAP32[$pen >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _tkgen_canvas($job);
    $2 = $job;
    $call = _gvputs($2, 127368) | 0;
    _gvprintpointflist($2, $A, $n);
    $call2 = _gvputs($2, 107048) | 0;
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $fillcolor = $0 + 56 | 0;
    _tkgen_print_color($job, $fillcolor);
    label = 8;
    break;
   case 5:
    $3 = HEAP32[4110] | 0;
    $tobool4 = ($3 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call6 = _gvputs($2, 124864) | 0;
    label = 8;
    break;
   case 7:
    $call8 = _gvputs($2, 138688) | 0;
    label = 8;
    break;
   case 8:
    $4 = HEAP32[4110] | 0;
    $cmp10 = ($4 | 0) == 1;
    if ($cmp10) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    HEAP32[4110] = 0;
    label = 10;
    break;
   case 10:
    $call13 = _gvputs($2, 131400) | 0;
    $penwidth = $0 + 104 | 0;
    $5 = +HEAPF64[$penwidth >> 3];
    _gvprintdouble($2, $5);
    $call14 = _gvputs($2, 122888) | 0;
    $pencolor = $0 + 16 | 0;
    _tkgen_print_color($job, $pencolor);
    $6 = HEAP32[$pen >> 2] | 0;
    $cmp16 = ($6 | 0) == 1;
    if ($cmp16) {
      label = 11;
      break;
    } else {
      $7 = $6;
      label = 12;
      break;
    }
   case 11:
    $call18 = _gvputs($2, 103120) | 0;
    $_pr = HEAP32[$pen >> 2] | 0;
    $7 = $_pr;
    label = 12;
    break;
   case 12:
    $cmp21 = ($7 | 0) == 2;
    if ($cmp21) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $call23 = _gvputs($2, 99016) | 0;
    label = 14;
    break;
   case 14:
    _tkgen_print_tags($job);
    $call25 = _gvputs($2, 116384) | 0;
    label = 15;
    break;
   case 15:
    return;
  }
}
function _tkgen_bezier($job, $A, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $obj1 = 0, $0 = 0, $pen = 0, $1 = 0, $cmp = 0, $2 = 0, $call = 0, $call2 = 0, $pencolor = 0, $call3 = 0, $penwidth = 0, $3 = 0.0, $4 = 0, $cmp5 = 0, $call7 = 0, $_pr = 0, $5 = 0, $cmp9 = 0, $call11 = 0, $call13 = 0, $call14 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $pen = $0 + 96 | 0;
    $1 = HEAP32[$pen >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _tkgen_canvas($job);
    $2 = $job;
    $call = _gvputs($2, 111280) | 0;
    _gvprintpointflist($2, $A, $n);
    $call2 = _gvputs($2, 107048) | 0;
    $pencolor = $0 + 16 | 0;
    _tkgen_print_color($job, $pencolor);
    $call3 = _gvputs($2, 131400) | 0;
    $penwidth = $0 + 104 | 0;
    $3 = +HEAPF64[$penwidth >> 3];
    _gvprintdouble($2, $3);
    $4 = HEAP32[$pen >> 2] | 0;
    $cmp5 = ($4 | 0) == 1;
    if ($cmp5) {
      label = 4;
      break;
    } else {
      $5 = $4;
      label = 5;
      break;
    }
   case 4:
    $call7 = _gvputs($2, 103120) | 0;
    $_pr = HEAP32[$pen >> 2] | 0;
    $5 = $_pr;
    label = 5;
    break;
   case 5:
    $cmp9 = ($5 | 0) == 2;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call11 = _gvputs($2, 99016) | 0;
    label = 7;
    break;
   case 7:
    $call13 = _gvputs($2, 129664) | 0;
    _tkgen_print_tags($job);
    $call14 = _gvputs($2, 116384) | 0;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _tkgen_polyline($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $obj1 = 0, $0 = 0, $pen = 0, $1 = 0, $cmp = 0, $2 = 0, $call = 0, $call2 = 0, $pencolor = 0, $3 = 0, $cmp4 = 0, $call6 = 0, $_pr = 0, $4 = 0, $cmp8 = 0, $call10 = 0, $call12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $pen = $0 + 96 | 0;
    $1 = HEAP32[$pen >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    _tkgen_canvas($job);
    $2 = $job;
    $call = _gvputs($2, 111280) | 0;
    _gvprintpointflist($2, $A, $n);
    $call2 = _gvputs($2, 107048) | 0;
    $pencolor = $0 + 16 | 0;
    _tkgen_print_color($job, $pencolor);
    $3 = HEAP32[$pen >> 2] | 0;
    $cmp4 = ($3 | 0) == 1;
    if ($cmp4) {
      label = 4;
      break;
    } else {
      $4 = $3;
      label = 5;
      break;
    }
   case 4:
    $call6 = _gvputs($2, 103120) | 0;
    $_pr = HEAP32[$pen >> 2] | 0;
    $4 = $_pr;
    label = 5;
    break;
   case 5:
    $cmp8 = ($4 | 0) == 2;
    if ($cmp8) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call10 = _gvputs($2, 99016) | 0;
    label = 7;
    break;
   case 7:
    _tkgen_print_tags($job);
    $call12 = _gvputs($2, 116384) | 0;
    label = 8;
    break;
   case 8:
    return;
  }
}
function _tkgen_comment($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 123144);
  _gvputs($0, _tkgen_string($str) | 0);
  _gvputs($0, 116384);
  return;
}
function _tkgen_canvas($job) {
  $job = $job | 0;
  var $external_context = 0, $0 = 0, $tobool = 0, $imagedata = 0, $1 = 0, $2 = 0, $call = 0, $3 = 0, $call1 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $external_context = $job + 144 | 0;
    $0 = HEAP8[$external_context] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $imagedata = $job + 148 | 0;
    $1 = HEAP32[$imagedata >> 2] | 0;
    $2 = $job;
    $call = _gvputs($2, $1) | 0;
    label = 5;
    break;
   case 4:
    $3 = $job;
    $call1 = _gvputs($3, 133488) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _svg_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $just = 0, $2 = 0, $conv = 0, $call2 = 0, $call4 = 0, $call6 = 0, $yoffset_centerline = 0, $3 = 0.0, $y = 0, $4 = 0.0, $add = 0.0, $x = 0, $5 = 0.0, $sub = 0.0, $postscript_alias = 0, $6 = 0, $tobool = 0, $gvc = 0, $7 = 0, $g = 0, $8 = 0, $fontnames = 0, $9 = 0, $name = 0, $weight9 = 0, $style10 = 0, $svg_font_family = 0, $svg_font_weight = 0, $svg_font_style = 0, $family14 = 0, $weight15 = 0, $style16 = 0, $family_0_in = 0, $weight_0_in = 0, $style_0_in = 0, $style_0 = 0, $weight_0 = 0, $family_0 = 0, $stretch18 = 0, $10 = 0, $svg_font_family19 = 0, $11 = 0, $tobool20 = 0, $call23 = 0, $tobool24 = 0, $tobool27 = 0, $tobool30 = 0, $fontname = 0, $12 = 0, $fontsize = 0, $13 = 0.0, $pencolor = 0, $type = 0, $14 = 0, $string = 0, $15 = 0, $call37 = 0, $tobool38 = 0, $16 = 0, $rgba = 0, $arrayidx = 0, $17 = 0, $conv47 = 0, $arrayidx51 = 0, $18 = 0, $conv52 = 0, $arrayidx56 = 0, $19 = 0, $conv57 = 0, $call60 = 0, $str = 0, $20 = 0, $call61 = 0, $call62 = 0, $call63 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 137912) | 0;
    $just = $para + 72 | 0;
    $2 = HEAP8[$just] | 0;
    $conv = $2 << 24 >> 24;
    if (($conv | 0) == 108) {
      label = 3;
      break;
    } else if (($conv | 0) == 114) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $call2 = _gvputs($1, 137680) | 0;
    label = 6;
    break;
   case 4:
    $call4 = _gvputs($1, 137376) | 0;
    label = 6;
    break;
   case 5:
    $call6 = _gvputs($1, 137128) | 0;
    label = 6;
    break;
   case 6:
    $yoffset_centerline = $para + 48 | 0;
    $3 = +HEAPF64[$yoffset_centerline >> 3];
    $y = $p + 8 | 0;
    $4 = +HEAPF64[$y >> 3];
    $add = $3 + $4;
    HEAPF64[$y >> 3] = $add;
    $x = $p | 0;
    $5 = +HEAPF64[$x >> 3];
    $sub = -0.0 - $add;
    _gvprintf($1, 136840, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $5, HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
    $postscript_alias = $para + 4 | 0;
    $6 = HEAP32[$postscript_alias >> 2] | 0;
    $tobool = ($6 | 0) == 0;
    if ($tobool) {
      label = 19;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $gvc = $job | 0;
    $7 = HEAP32[$gvc >> 2] | 0;
    $g = $7 + 128 | 0;
    $8 = HEAP32[$g >> 2] | 0;
    $fontnames = $8 + 256 | 0;
    $9 = HEAP32[$fontnames >> 2] | 0;
    if (($9 | 0) == 1) {
      label = 8;
      break;
    } else if (($9 | 0) == 2) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $name = $6 | 0;
    $weight9 = $6 + 8 | 0;
    $style10 = $6 + 16 | 0;
    $style_0_in = $style10;
    $weight_0_in = $weight9;
    $family_0_in = $name;
    label = 11;
    break;
   case 9:
    $svg_font_family = $6 + 24 | 0;
    $svg_font_weight = $6 + 28 | 0;
    $svg_font_style = $6 + 32 | 0;
    $style_0_in = $svg_font_style;
    $weight_0_in = $svg_font_weight;
    $family_0_in = $svg_font_family;
    label = 11;
    break;
   case 10:
    $family14 = $6 + 4 | 0;
    $weight15 = $6 + 8 | 0;
    $style16 = $6 + 16 | 0;
    $style_0_in = $style16;
    $weight_0_in = $weight15;
    $family_0_in = $family14;
    label = 11;
    break;
   case 11:
    $style_0 = HEAP32[$style_0_in >> 2] | 0;
    $weight_0 = HEAP32[$weight_0_in >> 2] | 0;
    $family_0 = HEAP32[$family_0_in >> 2] | 0;
    $stretch18 = $6 + 12 | 0;
    $10 = HEAP32[$stretch18 >> 2] | 0;
    _gvprintf($1, 136560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $family_0, tempInt) | 0);
    $svg_font_family19 = $6 + 24 | 0;
    $11 = HEAP32[$svg_font_family19 >> 2] | 0;
    $tobool20 = ($11 | 0) == 0;
    if ($tobool20) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    _gvprintf($1, 136208, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $11, tempInt) | 0);
    label = 13;
    break;
   case 13:
    $call23 = _gvputs($1, 142856) | 0;
    $tobool24 = ($weight_0 | 0) == 0;
    if ($tobool24) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    _gvprintf($1, 135944, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $weight_0, tempInt) | 0);
    label = 15;
    break;
   case 15:
    $tobool27 = ($10 | 0) == 0;
    if ($tobool27) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    _gvprintf($1, 135704, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $10, tempInt) | 0);
    label = 17;
    break;
   case 17:
    $tobool30 = ($style_0 | 0) == 0;
    if ($tobool30) {
      label = 20;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    _gvprintf($1, 135504, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $style_0, tempInt) | 0);
    label = 20;
    break;
   case 19:
    $fontname = $para + 20 | 0;
    $12 = HEAP32[$fontname >> 2] | 0;
    _gvprintf($1, 135328, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $12, tempInt) | 0);
    label = 20;
    break;
   case 20:
    $fontsize = $para + 24 | 0;
    $13 = +HEAPF64[$fontsize >> 3];
    _gvprintf($1, 135088, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $13, tempInt) | 0);
    $pencolor = $0 + 16 | 0;
    $type = $0 + 48 | 0;
    $14 = HEAP32[$type >> 2] | 0;
    if (($14 | 0) == 5) {
      label = 21;
      break;
    } else if (($14 | 0) == 1) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 21:
    $string = $pencolor;
    $15 = HEAP32[$string >> 2] | 0;
    $call37 = _strcasecmp($15, 92392) | 0;
    $tobool38 = ($call37 | 0) == 0;
    if ($tobool38) {
      label = 25;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $16 = HEAP32[$string >> 2] | 0;
    _gvprintf($1, 134856, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $16, tempInt) | 0);
    label = 25;
    break;
   case 23:
    $rgba = $pencolor;
    $arrayidx = $pencolor;
    $17 = HEAP8[$arrayidx] | 0;
    $conv47 = $17 & 255;
    $arrayidx51 = $rgba + 1 | 0;
    $18 = HEAP8[$arrayidx51] | 0;
    $conv52 = $18 & 255;
    $arrayidx56 = $rgba + 2 | 0;
    $19 = HEAP8[$arrayidx56] | 0;
    $conv57 = $19 & 255;
    _gvprintf($1, 134648, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $conv47, HEAP32[tempInt + 8 >> 2] = $conv52, HEAP32[tempInt + 16 >> 2] = $conv57, tempInt) | 0);
    label = 25;
    break;
   case 24:
    ___assert_func(141672, 379, 163832, 141400);
   case 25:
    $call60 = _gvputs($1, 134416) | 0;
    $str = $para | 0;
    $20 = HEAP32[$str >> 2] | 0;
    $call61 = _xml_string($20) | 0;
    $call62 = _gvputs($1, $call61) | 0;
    $call63 = _gvputs($1, 134152) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _svg_print_color($job, $color) {
  $job = $job | 0;
  $color = $color | 0;
  var $type = 0, $0 = 0, $string = 0, $1 = 0, $2 = 0, $call = 0, $rgba = 0, $arrayidx = 0, $3 = 0, $cmp = 0, $4 = 0, $call4 = 0, $arrayidx7 = 0, $5 = 0, $conv8 = 0, $arrayidx11 = 0, $6 = 0, $conv12 = 0, $arrayidx15 = 0, $7 = 0, $conv16 = 0, $8 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $color;
  $color = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  _memcpy($color, tempParam, 40);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $color + 32 | 0;
    $0 = HEAP32[$type >> 2] | 0;
    if (($0 | 0) == 5) {
      label = 3;
      break;
    } else if (($0 | 0) == 1) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $string = $color;
    $1 = HEAP32[$string >> 2] | 0;
    $2 = $job;
    $call = _gvputs($2, $1) | 0;
    label = 8;
    break;
   case 4:
    $rgba = $color;
    $arrayidx = $rgba + 3 | 0;
    $3 = HEAP8[$arrayidx] | 0;
    $cmp = $3 << 24 >> 24 == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $4 = $job;
    $call4 = _gvputs($4, 144488) | 0;
    label = 8;
    break;
   case 6:
    $arrayidx7 = $color;
    $5 = HEAP8[$arrayidx7] | 0;
    $conv8 = $5 & 255;
    $arrayidx11 = $rgba + 1 | 0;
    $6 = HEAP8[$arrayidx11] | 0;
    $conv12 = $6 & 255;
    $arrayidx15 = $rgba + 2 | 0;
    $7 = HEAP8[$arrayidx15] | 0;
    $conv16 = $7 & 255;
    $8 = $job;
    _gvprintf($8, 141952, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $conv8, HEAP32[tempInt + 8 >> 2] = $conv12, HEAP32[tempInt + 16 >> 2] = $conv16, tempInt) | 0);
    label = 8;
    break;
   case 7:
    ___assert_func(141672, 86, 163848, 141400);
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _tkgen_print_color($job, $color) {
  $job = $job | 0;
  $color = $color | 0;
  var $type = 0, $0 = 0, $string = 0, $1 = 0, $2 = 0, $call = 0, $rgba = 0, $arrayidx = 0, $3 = 0, $cmp = 0, $4 = 0, $call4 = 0, $arrayidx7 = 0, $5 = 0, $conv8 = 0, $arrayidx11 = 0, $6 = 0, $conv12 = 0, $arrayidx15 = 0, $7 = 0, $conv16 = 0, $8 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $color;
  $color = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  _memcpy($color, tempParam, 40);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $color + 32 | 0;
    $0 = HEAP32[$type >> 2] | 0;
    if (($0 | 0) == 5) {
      label = 3;
      break;
    } else if (($0 | 0) == 1) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $string = $color;
    $1 = HEAP32[$string >> 2] | 0;
    $2 = $job;
    $call = _gvputs($2, $1) | 0;
    label = 8;
    break;
   case 4:
    $rgba = $color;
    $arrayidx = $rgba + 3 | 0;
    $3 = HEAP8[$arrayidx] | 0;
    $cmp = $3 << 24 >> 24 == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $4 = $job;
    $call4 = _gvputs($4, 138688) | 0;
    label = 8;
    break;
   case 6:
    $arrayidx7 = $color;
    $5 = HEAP8[$arrayidx7] | 0;
    $conv8 = $5 & 255;
    $arrayidx11 = $rgba + 1 | 0;
    $6 = HEAP8[$arrayidx11] | 0;
    $conv12 = $6 & 255;
    $arrayidx15 = $rgba + 2 | 0;
    $7 = HEAP8[$arrayidx15] | 0;
    $conv16 = $7 & 255;
    $8 = $job;
    _gvprintf($8, 135912, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $conv8, HEAP32[tempInt + 8 >> 2] = $conv12, HEAP32[tempInt + 16 >> 2] = $conv16, tempInt) | 0);
    label = 8;
    break;
   case 7:
    ___assert_func(148056, 51, 163808, 145272);
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _xml_isentity3315($s) {
  $s = $s | 0;
  var $incdec_ptr = 0, $0 = 0, $cmp = 0, $incdec_ptr2 = 0, $1 = 0, $incdec_ptr10 = 0, $s_addr_0 = 0, $2 = 0, $_off29 = 0, $3 = 0, $_off30 = 0, $4 = 0, $or_cond = 0, $_off31 = 0, $5 = 0, $or_cond35 = 0, $incdec_ptr31 = 0, $s_addr_1 = 0, $6 = 0, $_off32 = 0, $7 = 0, $incdec_ptr42 = 0, $s_addr_2 = 0, $8 = 0, $_off = 0, $9 = 0, $_off28 = 0, $10 = 0, $or_cond37 = 0, $incdec_ptr64 = 0, $s_addr_3 = 0, $11 = 0, $cmp68 = 0, $_ = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $incdec_ptr = $s + 1 | 0;
    $0 = HEAP8[$incdec_ptr] | 0;
    $cmp = $0 << 24 >> 24 == 35;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $s_addr_2 = $incdec_ptr;
      label = 7;
      break;
    }
   case 3:
    $incdec_ptr2 = $s + 2 | 0;
    $1 = HEAP8[$incdec_ptr2] | 0;
    if (($1 << 24 >> 24 | 0) == 120 | ($1 << 24 >> 24 | 0) == 88) {
      label = 4;
      break;
    } else {
      $s_addr_1 = $incdec_ptr2;
      label = 6;
      break;
    }
   case 4:
    $incdec_ptr10 = $s + 3 | 0;
    $s_addr_0 = $incdec_ptr10;
    label = 5;
    break;
   case 5:
    $2 = HEAP8[$s_addr_0] | 0;
    $_off29 = $2 - 48 & 255;
    $3 = ($_off29 & 255) < 10;
    $_off30 = $2 - 97 & 255;
    $4 = ($_off30 & 255) < 6;
    $or_cond = $3 | $4;
    $_off31 = $2 - 65 & 255;
    $5 = ($_off31 & 255) < 6;
    $or_cond35 = $or_cond | $5;
    $incdec_ptr31 = $s_addr_0 + 1 | 0;
    if ($or_cond35) {
      $s_addr_0 = $incdec_ptr31;
      label = 5;
      break;
    } else {
      $s_addr_3 = $s_addr_0;
      label = 8;
      break;
    }
   case 6:
    $6 = HEAP8[$s_addr_1] | 0;
    $_off32 = $6 - 48 & 255;
    $7 = ($_off32 & 255) < 10;
    $incdec_ptr42 = $s_addr_1 + 1 | 0;
    if ($7) {
      $s_addr_1 = $incdec_ptr42;
      label = 6;
      break;
    } else {
      $s_addr_3 = $s_addr_1;
      label = 8;
      break;
    }
   case 7:
    $8 = HEAP8[$s_addr_2] | 0;
    $_off = $8 - 97 & 255;
    $9 = ($_off & 255) < 26;
    $_off28 = $8 - 65 & 255;
    $10 = ($_off28 & 255) < 26;
    $or_cond37 = $9 | $10;
    $incdec_ptr64 = $s_addr_2 + 1 | 0;
    if ($or_cond37) {
      $s_addr_2 = $incdec_ptr64;
      label = 7;
      break;
    } else {
      $s_addr_3 = $s_addr_2;
      label = 8;
      break;
    }
   case 8:
    $11 = HEAP8[$s_addr_3] | 0;
    $cmp68 = $11 << 24 >> 24 == 59;
    $_ = $cmp68 & 1;
    return $_ | 0;
  }
  return 0;
}
function _vml_begin_job($job) {
  $job = $job | 0;
  var $0 = 0, $common = 0;
  $0 = $job;
  _gvputs($0, 150304);
  _gvputs($0, 150048);
  $common = $job + 12 | 0;
  _gvputs($0, _html_string(HEAP32[HEAP32[HEAP32[$common >> 2] >> 2] >> 2] | 0) | 0);
  _gvputs($0, 149776);
  _gvputs($0, _html_string(HEAP32[(HEAP32[HEAP32[$common >> 2] >> 2] | 0) + 4 >> 2] | 0) | 0);
  _gvputs($0, 149392);
  _gvputs($0, _html_string(HEAP32[(HEAP32[HEAP32[$common >> 2] >> 2] | 0) + 8 >> 2] | 0) | 0);
  _gvputs($0, 149176);
  return;
}
function _vml_begin_graph($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $y = 0, $1 = 0.0, $y3 = 0, $2 = 0.0, $sub = 0.0, $conv = 0, $x = 0, $3 = 0.0, $x8 = 0, $4 = 0.0, $sub9 = 0.0, $conv10 = 0, $5 = 0, $call = 0, $call11 = 0, $g = 0, $6 = 0, $name12 = 0, $7 = 0, $8 = 0, $tobool = 0, $call13 = 0, $call14 = 0, $call15 = 0, $call16 = 0, $x17 = 0, $9 = 0, $y19 = 0, $10 = 0, $mul = 0, $call20 = 0, $call21 = 0, $call22 = 0, $call23 = 0, $call24 = 0, $call25 = 0, $call26 = 0, $call27 = 0, $call28 = 0, $call29 = 0, $call30 = 0, $call31 = 0, $call32 = 0, $call33 = 0, $call34 = 0, $call35 = 0, $call36 = 0, $call37 = 0, $call38 = 0, $call39 = 0, $call40 = 0, $call41 = 0, $call42 = 0, $call43 = 0, $call44 = 0, $call45 = 0, $call46 = 0, $call47 = 0, $call48 = 0, $call49 = 0, $call50 = 0, $call51 = 0, $call52 = 0, $call53 = 0, $call54 = 0, $call55 = 0, $call56 = 0, $call57 = 0, $call58 = 0, $call59 = 0, $call60 = 0, $call61 = 0, $call62 = 0, $call63 = 0, $11 = 0, $12 = 0, $add = 0, $call64 = 0, $call65 = 0, $call66 = 0, $call67 = 0, $call68 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $y = $job + 232 | 0;
    $1 = +HEAPF64[$y >> 3];
    $y3 = $job + 216 | 0;
    $2 = +HEAPF64[$y3 >> 3];
    $sub = $1 - $2;
    $conv = ~~$sub;
    HEAP32[4068] = $conv;
    $x = $job + 224 | 0;
    $3 = +HEAPF64[$x >> 3];
    $x8 = $job + 208 | 0;
    $4 = +HEAPF64[$x8 >> 3];
    $sub9 = $3 - $4;
    $conv10 = ~~$sub9;
    HEAP32[4066] = $conv10;
    $5 = $job;
    $call = _gvputs($5, 91448) | 0;
    $call11 = _gvputs($5, 91072) | 0;
    $g = $0 + 8 | 0;
    $6 = HEAP32[$g >> 2] | 0;
    $name12 = $6 + 12 | 0;
    $7 = HEAP32[$name12 >> 2] | 0;
    $8 = HEAP8[$7] | 0;
    $tobool = $8 << 24 >> 24 == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call13 = _gvputs($5, 90792) | 0;
    $call14 = _html_string($7) | 0;
    $call15 = _gvputs($5, $call14) | 0;
    $call16 = _gvputs($5, 90480) | 0;
    label = 4;
    break;
   case 4:
    $x17 = $job + 164 | 0;
    $9 = HEAP32[$x17 >> 2] | 0;
    $y19 = $job + 168 | 0;
    $10 = HEAP32[$y19 >> 2] | 0;
    $mul = Math_imul($10, $9);
    _gvprintf($5, 90176, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $mul, tempInt) | 0);
    $call20 = _gvputs($5, 89824) | 0;
    $call21 = _gvputs($5, 163040) | 0;
    $call22 = _gvputs($5, 162712) | 0;
    $call23 = _gvputs($5, 162352) | 0;
    $call24 = _gvputs($5, 161896) | 0;
    $call25 = _gvputs($5, 161616) | 0;
    $call26 = _gvputs($5, 161312) | 0;
    $call27 = _gvputs($5, 160968) | 0;
    $call28 = _gvputs($5, 160648) | 0;
    $call29 = _gvputs($5, 160312) | 0;
    $call30 = _gvputs($5, 159992) | 0;
    $call31 = _gvputs($5, 159664) | 0;
    $call32 = _gvputs($5, 159216) | 0;
    $call33 = _gvputs($5, 158808) | 0;
    $call34 = _gvputs($5, 158368) | 0;
    $call35 = _gvputs($5, 158016) | 0;
    $call36 = _gvputs($5, 157608) | 0;
    $call37 = _gvputs($5, 157256) | 0;
    $call38 = _gvputs($5, 156936) | 0;
    $call39 = _gvputs($5, 156672) | 0;
    $call40 = _gvputs($5, 156336) | 0;
    $call41 = _gvputs($5, 158016) | 0;
    $call42 = _gvputs($5, 156016) | 0;
    $call43 = _gvputs($5, 157256) | 0;
    $call44 = _gvputs($5, 156936) | 0;
    $call45 = _gvputs($5, 155624) | 0;
    $call46 = _gvputs($5, 158808) | 0;
    $call47 = _gvputs($5, 158368) | 0;
    $call48 = _gvputs($5, 158016) | 0;
    $call49 = _gvputs($5, 156016) | 0;
    $call50 = _gvputs($5, 157256) | 0;
    $call51 = _gvputs($5, 156936) | 0;
    $call52 = _gvputs($5, 156672) | 0;
    $call53 = _gvputs($5, 156336) | 0;
    $call54 = _gvputs($5, 158016) | 0;
    $call55 = _gvputs($5, 157608) | 0;
    $call56 = _gvputs($5, 157256) | 0;
    $call57 = _gvputs($5, 156936) | 0;
    $call58 = _gvputs($5, 155328) | 0;
    $call59 = _gvputs($5, 154960) | 0;
    $call60 = _gvputs($5, 154640) | 0;
    $call61 = _gvputs($5, 154312) | 0;
    $call62 = _gvputs($5, 153992) | 0;
    $call63 = _gvputs($5, 153640) | 0;
    $11 = HEAP32[4066] | 0;
    $12 = HEAP32[4068] | 0;
    $add = $12 + 10 | 0;
    _gvprintf($5, 153328, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $11, HEAP32[tempInt + 8 >> 2] = $add, tempInt) | 0);
    $call64 = _gvputs($5, 152952) | 0;
    $call65 = _gvputs($5, 152616) | 0;
    $call66 = _gvputs($5, 152264) | 0;
    $call67 = _gvputs($5, 151848) | 0;
    $call68 = _gvputs($5, 151400) | 0;
    $13 = HEAP32[4066] | 0;
    $14 = HEAP32[4068] | 0;
    _gvprintf($5, 150960, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $13, HEAP32[tempInt + 8 >> 2] = $14, tempInt) | 0);
    $15 = HEAP32[4066] | 0;
    $16 = HEAP32[4068] | 0;
    _gvprintf($5, 150656, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $15, HEAP32[tempInt + 8 >> 2] = $16, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _vml_end_graph($job) {
  $job = $job | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 94928);
  _gvputs($0, 94640);
  _gvputs($0, 94304);
  _gvputs($0, 93968);
  _gvputs($0, 94640);
  _gvputs($0, 93608);
  _gvputs($0, 93272);
  _gvputs($0, 92912);
  _gvputs($0, 94640);
  _gvputs($0, 92544);
  _gvputs($0, 92216);
  _gvputs($0, 94640);
  _gvputs($0, 91720);
  return;
}
function _vml_begin_anchor($job, $href, $tooltip, $target, $id) {
  $job = $job | 0;
  $href = $href | 0;
  $tooltip = $tooltip | 0;
  $target = $target | 0;
  $id = $id | 0;
  var $0 = 0, $call = 0, $tobool = 0, $1 = 0, $tobool1 = 0, $call2 = 0, $tobool3 = 0, $2 = 0, $tobool7 = 0, $call9 = 0, $tobool11 = 0, $3 = 0, $tobool15 = 0, $call17 = 0, $call19 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 96928) | 0;
    $tobool = ($href | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$href] | 0;
    $tobool1 = $1 << 24 >> 24 == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call2 = _html_string($href) | 0;
    _gvprintf($0, 96416, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call2, tempInt) | 0);
    label = 5;
    break;
   case 5:
    $tobool3 = ($tooltip | 0) == 0;
    if ($tobool3) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$tooltip] | 0;
    $tobool7 = $2 << 24 >> 24 == 0;
    if ($tobool7) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $call9 = _html_string($tooltip) | 0;
    _gvprintf($0, 95960, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call9, tempInt) | 0);
    label = 8;
    break;
   case 8:
    $tobool11 = ($target | 0) == 0;
    if ($tobool11) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $3 = HEAP8[$target] | 0;
    $tobool15 = $3 << 24 >> 24 == 0;
    if ($tobool15) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call17 = _html_string($target) | 0;
    _gvprintf($0, 95680, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $call17, tempInt) | 0);
    label = 11;
    break;
   case 11:
    $call19 = _gvputs($0, 95264) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _vml_end_anchor($job) {
  $job = $job | 0;
  _gvputs($job, 97256);
  return;
}
function _vml_ellipse($job, $A, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $filled = $filled | 0;
  var $0 = 0, $2 = 0.0, $sub = 0.0, $4 = 0.0, $sub6 = 0.0, $sub9 = 0.0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $0 = $job;
  _gvputs($0, 104312);
  $2 = +HEAPF64[$A >> 3];
  $sub = +HEAPF64[$A + 16 >> 3] - $2;
  $4 = +HEAPF64[$A + 8 >> 3];
  $sub6 = +HEAPF64[$A + 24 >> 3] - $4;
  $sub9 = +((HEAP32[4068] | 0) >>> 0 >>> 0) - ($4 + $sub6);
  _gvprintf($0, 103936, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $2 - $sub, HEAPF64[tempInt + 8 >> 3] = $sub9, tempInt) | 0);
  _gvprintf($0, 103440, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $sub * 2.0, HEAPF64[tempInt + 8 >> 3] = $sub6 * 2.0, tempInt) | 0);
  _vml_grfill($job, $filled);
  _gvputs($0, 110032);
  _vml_grstroke($job);
  _gvputs($0, 103072);
  STACKTOP = __stackBase__;
  return;
}
function _vml_polygon($job, $A, $n, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $filled = $filled | 0;
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $call1 = 0, $call2 = 0, $cmp20 = 0, $sub12 = 0, $i_021 = 0, $x = 0, $3 = 0.0, $4 = 0, $conv = 0.0, $y = 0, $5 = 0.0, $sub = 0.0, $cmp4 = 0, $call6 = 0, $call10 = 0, $cmp13 = 0, $call16 = 0, $inc = 0, $cmp = 0, $call18 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 119672) | 0;
    $1 = HEAP32[4066] | 0;
    $2 = HEAP32[4068] | 0;
    _gvprintf($0, 110464, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $1, HEAP32[tempInt + 8 >> 2] = $2, tempInt) | 0);
    _vml_grfill($job, $filled);
    $call1 = _gvputs($0, 110032) | 0;
    _vml_grstroke($job);
    $call2 = _gvputs($0, 109632) | 0;
    $cmp20 = ($n | 0) > 0;
    if ($cmp20) {
      label = 3;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $sub12 = $n - 1 | 0;
    $i_021 = 0;
    label = 4;
    break;
   case 4:
    $x = $A + ($i_021 << 4) | 0;
    $3 = +HEAPF64[$x >> 3];
    $4 = HEAP32[4068] | 0;
    $conv = +($4 >>> 0 >>> 0);
    $y = $A + ($i_021 << 4) + 8 | 0;
    $5 = +HEAPF64[$y >> 3];
    $sub = $conv - $5;
    $cmp4 = ($i_021 | 0) == 0;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call6 = _gvputs($0, 108960) | 0;
    _gvprintf($0, 105536, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $3, HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
    $call10 = _gvputs($0, 105192) | 0;
    label = 7;
    break;
   case 6:
    _gvprintf($0, 105536, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $3, HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
    label = 7;
    break;
   case 7:
    $cmp13 = ($i_021 | 0) == ($sub12 | 0);
    if ($cmp13) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $call16 = _gvputs($0, 104872) | 0;
    label = 9;
    break;
   case 9:
    $inc = $i_021 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_021 = $inc;
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call18 = _gvputs($0, 115344) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _vml_bezier($job, $A, $n, $arrow_at_start, $arrow_at_end, $filled) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  $arrow_at_start = $arrow_at_start | 0;
  $arrow_at_end = $arrow_at_end | 0;
  $filled = $filled | 0;
  var $0 = 0, $2 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  $0 = $job;
  _gvputs($0, 119672);
  $2 = HEAP32[4068] | 0;
  _gvprintf($0, 110464, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = HEAP32[4066] | 0, HEAP32[tempInt + 8 >> 2] = $2, tempInt) | 0);
  _vml_grfill($job, $filled);
  _gvputs($0, 110032);
  _vml_grstroke($job);
  _gvputs($0, 109632);
  _vml_bzptarray($job, $A, $n);
  _gvputs($0, 109312);
  STACKTOP = __stackBase__;
  return;
}
function _vml_polyline($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $0 = 0, $call = 0, $1 = 0, $2 = 0, $call1 = 0, $cmp18 = 0, $sub10 = 0, $i_019 = 0, $cmp2 = 0, $call3 = 0, $x = 0, $3 = 0.0, $4 = 0, $conv = 0.0, $y = 0, $5 = 0.0, $sub = 0.0, $call8 = 0, $x_c = 0, $6 = 0.0, $7 = 0, $conv_c = 0.0, $y_c = 0, $8 = 0.0, $sub_c = 0.0, $cmp11 = 0, $call14 = 0, $inc = 0, $cmp = 0, $call16 = 0, $call17 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $job;
    $call = _gvputs($0, 119672) | 0;
    $1 = HEAP32[4066] | 0;
    $2 = HEAP32[4068] | 0;
    _gvprintf($0, 119136, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = $1, HEAP32[tempInt + 8 >> 2] = $2, tempInt) | 0);
    $call1 = _gvputs($0, 118624) | 0;
    $cmp18 = ($n | 0) > 0;
    if ($cmp18) {
      label = 3;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $sub10 = $n - 1 | 0;
    $i_019 = 0;
    label = 4;
    break;
   case 4:
    $cmp2 = ($i_019 | 0) == 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call3 = _gvputs($0, 118040) | 0;
    $x = $A + ($i_019 << 4) | 0;
    $3 = +HEAPF64[$x >> 3];
    $4 = HEAP32[4068] | 0;
    $conv = +($4 >>> 0 >>> 0);
    $y = $A + ($i_019 << 4) + 8 | 0;
    $5 = +HEAPF64[$y >> 3];
    $sub = $conv - $5;
    _gvprintf($0, 117424, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $3, HEAPF64[tempInt + 8 >> 3] = $sub, tempInt) | 0);
    $call8 = _gvputs($0, 116792) | 0;
    label = 7;
    break;
   case 6:
    $x_c = $A + ($i_019 << 4) | 0;
    $6 = +HEAPF64[$x_c >> 3];
    $7 = HEAP32[4068] | 0;
    $conv_c = +($7 >>> 0 >>> 0);
    $y_c = $A + ($i_019 << 4) + 8 | 0;
    $8 = +HEAPF64[$y_c >> 3];
    $sub_c = $conv_c - $8;
    _gvprintf($0, 117424, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $6, HEAPF64[tempInt + 8 >> 3] = $sub_c, tempInt) | 0);
    label = 7;
    break;
   case 7:
    $cmp11 = ($i_019 | 0) == ($sub10 | 0);
    if ($cmp11) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $call14 = _gvputs($0, 116312) | 0;
    label = 9;
    break;
   case 9:
    $inc = $i_019 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_019 = $inc;
      label = 4;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $call16 = _gvputs($0, 115808) | 0;
    _vml_grstroke($job);
    $call17 = _gvputs($0, 115344) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _vml_comment($job, $str) {
  $job = $job | 0;
  $str = $str | 0;
  var $0 = 0;
  $0 = $job;
  _gvputs($0, 121024);
  _gvputs($0, _html_string($str) | 0);
  _gvputs($0, 120288);
  return;
}
function _vml_grstroke($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $pencolor = 0, $penwidth = 0, $2 = 0.0, $cmp = 0, $pen = 0, $3 = 0, $call5 = 0, $call9 = 0, $call12 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 114792) | 0;
    $pencolor = $0 + 16 | 0;
    _vml_print_color($job, $pencolor);
    $penwidth = $0 + 104 | 0;
    $2 = +HEAPF64[$penwidth >> 3];
    $cmp = $2 != 1.0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _gvprintf($1, 114160, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $2, tempInt) | 0);
    label = 4;
    break;
   case 4:
    $pen = $0 + 96 | 0;
    $3 = HEAP32[$pen >> 2] | 0;
    if (($3 | 0) == 1) {
      label = 5;
      break;
    } else if (($3 | 0) == 2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $call5 = _gvputs($1, 113688) | 0;
    label = 7;
    break;
   case 6:
    $call9 = _gvputs($1, 113256) | 0;
    label = 7;
    break;
   case 7:
    $call12 = _gvputs($1, 112680) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _tkgen_print_tags($job) {
  $job = $job | 0;
  var $obj1 = 0, $0 = 0, $emit_state = 0, $1 = 0, $u = 0, $n = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $u5 = 0, $n6 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $u13 = 0, $e = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $u20 = 0, $e21 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $g = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $g33 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $sg = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $sg45 = 0, $30 = 0, $31 = 0, $32 = 0, $ObjType_0 = 0, $ObjFlag_0 = 0, $ObjHandle_0_in = 0, $ObjHandle_0 = 0, $33 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $emit_state = $0 + 12 | 0;
    $1 = HEAP32[$emit_state >> 2] | 0;
    if (($1 | 0) == 8) {
      label = 3;
      break;
    } else if (($1 | 0) == 10) {
      label = 4;
      break;
    } else if (($1 | 0) == 9 | ($1 | 0) == 2 | ($1 | 0) == 3) {
      label = 5;
      break;
    } else if (($1 | 0) == 11 | ($1 | 0) == 6 | ($1 | 0) == 7) {
      label = 6;
      break;
    } else if (($1 | 0) == 0) {
      label = 7;
      break;
    } else if (($1 | 0) == 4) {
      label = 8;
      break;
    } else if (($1 | 0) == 1) {
      label = 9;
      break;
    } else if (($1 | 0) == 5) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 3:
    $u = $0 + 8 | 0;
    $n = $u;
    $2 = HEAP32[$n >> 2] | 0;
    $3 = $2;
    $4 = HEAP32[$3 >> 2] | 0;
    $5 = $4 & -256;
    $ObjHandle_0_in = $5;
    $ObjFlag_0 = 1;
    $ObjType_0 = 94992;
    label = 12;
    break;
   case 4:
    $u5 = $0 + 8 | 0;
    $n6 = $u5;
    $6 = HEAP32[$n6 >> 2] | 0;
    $7 = $6;
    $8 = HEAP32[$7 >> 2] | 0;
    $9 = $8 & -256;
    $ObjHandle_0_in = $9;
    $ObjFlag_0 = 0;
    $ObjType_0 = 94992;
    label = 12;
    break;
   case 5:
    $u13 = $0 + 8 | 0;
    $e = $u13;
    $10 = HEAP32[$e >> 2] | 0;
    $11 = $10;
    $12 = HEAP32[$11 >> 2] | 0;
    $13 = $12 & -256;
    $ObjHandle_0_in = $13;
    $ObjFlag_0 = 1;
    $ObjType_0 = 158056;
    label = 12;
    break;
   case 6:
    $u20 = $0 + 8 | 0;
    $e21 = $u20;
    $14 = HEAP32[$e21 >> 2] | 0;
    $15 = $14;
    $16 = HEAP32[$15 >> 2] | 0;
    $17 = $16 & -256;
    $ObjHandle_0_in = $17;
    $ObjFlag_0 = 0;
    $ObjType_0 = 158056;
    label = 12;
    break;
   case 7:
    $g = $0 + 8 | 0;
    $18 = HEAP32[$g >> 2] | 0;
    $19 = $18;
    $20 = HEAP32[$19 >> 2] | 0;
    $21 = $20 & -256;
    $ObjHandle_0_in = $21;
    $ObjFlag_0 = 1;
    $ObjType_0 = 154688;
    label = 12;
    break;
   case 8:
    $g33 = $0 + 8 | 0;
    $22 = HEAP32[$g33 >> 2] | 0;
    $23 = $22;
    $24 = HEAP32[$23 >> 2] | 0;
    $25 = $24 & -256;
    $ObjHandle_0_in = $25;
    $ObjFlag_0 = 0;
    $ObjType_0 = 151024;
    label = 12;
    break;
   case 9:
    $sg = $0 + 8 | 0;
    $26 = HEAP32[$sg >> 2] | 0;
    $27 = $26;
    $28 = HEAP32[$27 >> 2] | 0;
    $29 = $28 & -256;
    $ObjHandle_0_in = $29;
    $ObjFlag_0 = 1;
    $ObjType_0 = 154688;
    label = 12;
    break;
   case 10:
    $sg45 = $0 + 8 | 0;
    $30 = HEAP32[$sg45 >> 2] | 0;
    $31 = $30;
    $32 = HEAP32[$31 >> 2] | 0;
    $ObjHandle_0_in = $32;
    $ObjFlag_0 = 0;
    $ObjType_0 = 154688;
    label = 12;
    break;
   case 11:
    ___assert_func(148056, 148, 163784, 145272);
   case 12:
    $ObjHandle_0 = $ObjHandle_0_in >> 8;
    $33 = $job;
    _gvprintf($33, 142216, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $ObjFlag_0, HEAP32[tempInt + 8 >> 2] = $ObjType_0, HEAP32[tempInt + 16 >> 2] = $ObjHandle_0, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _html_string($s) {
  $s = $s | 0;
  var $workstr = 0, $0 = 0, $tobool = 0, $call = 0, $1 = 0, $arrayidx = 0, $arrayidx75 = 0, $p_0_ph = 0, $prev_0_ph = 0, $pos_0_ph = 0, $s_addr_0_ph = 0, $remaining_0_ph = 0, $charnum_0_ph = 0, $tobool33 = 0, $p_0 = 0, $s_addr_0 = 0, $remaining_0 = 0, $charnum_0 = 0, $tobool1 = 0, $2 = 0, $tobool2 = 0, $3 = 0, $sub3 = 0, $cmp = 0, $mul = 0, $4 = 0, $call6 = 0, $add_ptr = 0, $p_1 = 0, $5 = 0, $cmp9 = 0, $call11 = 0, $tobool12 = 0, $_pr = 0, $6 = 0, $7 = 0, $cmp36 = 0, $8 = 0, $cmp51 = 0, $conv5537 = 0, $conv5541 = 0, $mask_040 = 0, $cnt_039 = 0, $inc = 0, $and = 0, $shr35 = 0, $cmp56 = 0, $cmp63 = 0, $shl = 0, $add = 0, $remaining_1_in = 0, $charnum_1 = 0, $remaining_1 = 0, $cmp71 = 0, $incdec_ptr = 0, $sub_0 = 0, $len_0 = 0, $charnum_2 = 0, $rem = 0, $add7636 = 0, $conv77 = 0, $incdec_ptr78 = 0, $div = 0, $inc79 = 0, $cmp80 = 0, $9 = 0, $10 = 0, $11 = 0, $sub_1_ph_ph = 0, $len_1_ph_ph = 0, $incdec_ptr87 = 0, $tobool9947 = 0, $charnum_3_ph117 = 0, $remaining_2_ph115 = 0, $len_1_ph114 = 0, $sub_1_ph113 = 0, $12 = 0, $len_150 = 0, $sub_149 = 0, $p_248 = 0, $dec98 = 0, $incdec_ptr101 = 0, $13 = 0, $incdec_ptr102 = 0, $tobool99 = 0, $scevgep = 0, $charnum_3_ph118 = 0, $remaining_2_ph116 = 0, $pos_1_lcssa = 0, $p_2_lcssa = 0, $incdec_ptr104 = 0, $14 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $workstr = __stackBase__ | 0;
    $0 = HEAP32[3506] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[3504] = 64;
    $call = _gmalloc(64) | 0;
    HEAP32[3506] = $call;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[3506] | 0;
    $arrayidx = $workstr + 15 | 0;
    $arrayidx75 = $workstr + 14 | 0;
    $charnum_0_ph = 0;
    $remaining_0_ph = 0;
    $s_addr_0_ph = $s;
    $pos_0_ph = 0;
    $prev_0_ph = 0;
    $p_0_ph = $1;
    label = 5;
    break;
   case 5:
    $tobool33 = ($prev_0_ph | 0) == 0;
    $charnum_0 = $charnum_0_ph;
    $remaining_0 = $remaining_0_ph;
    $s_addr_0 = $s_addr_0_ph;
    $p_0 = $p_0_ph;
    label = 6;
    break;
   case 6:
    $tobool1 = ($s_addr_0 | 0) == 0;
    if ($tobool1) {
      label = 34;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $2 = HEAP8[$s_addr_0] | 0;
    $tobool2 = $2 << 24 >> 24 == 0;
    if ($tobool2) {
      label = 34;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $3 = HEAP32[3504] | 0;
    $sub3 = $3 - 8 | 0;
    $cmp = ($pos_0_ph | 0) > ($sub3 | 0);
    if ($cmp) {
      label = 9;
      break;
    } else {
      $p_1 = $p_0;
      label = 10;
      break;
    }
   case 9:
    $mul = $3 << 1;
    HEAP32[3504] = $mul;
    $4 = HEAP32[3506] | 0;
    $call6 = _grealloc($4, $mul) | 0;
    HEAP32[3506] = $call6;
    $add_ptr = $call6 + $pos_0_ph | 0;
    $p_1 = $add_ptr;
    label = 10;
    break;
   case 10:
    $5 = HEAP8[$s_addr_0] | 0;
    $cmp9 = $5 << 24 >> 24 == 38;
    if ($cmp9) {
      label = 11;
      break;
    } else {
      $6 = $5;
      label = 13;
      break;
    }
   case 11:
    $call11 = _xml_isentity3315($s_addr_0) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      $len_1_ph_ph = 5;
      $sub_1_ph_ph = 110184;
      label = 28;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $_pr = HEAP8[$s_addr_0] | 0;
    $6 = $_pr;
    label = 13;
    break;
   case 13:
    if (($6 << 24 >> 24 | 0) == 45) {
      label = 14;
      break;
    } else if (($6 << 24 >> 24 | 0) == 32) {
      label = 15;
      break;
    } else if (($6 << 24 >> 24 | 0) == 60) {
      $len_1_ph_ph = 4;
      $sub_1_ph_ph = 147248;
      label = 28;
      break;
    } else if (($6 << 24 >> 24 | 0) == 62) {
      $sub_1_ph113 = 122360;
      $len_1_ph114 = 4;
      $remaining_2_ph115 = $remaining_0;
      $charnum_3_ph117 = $charnum_0;
      label = 30;
      break;
    } else {
      label = 17;
      break;
    }
   case 14:
    $sub_1_ph113 = 116224;
    $len_1_ph114 = 5;
    $remaining_2_ph115 = $remaining_0;
    $charnum_3_ph117 = $charnum_0;
    label = 30;
    break;
   case 15:
    if ($tobool33) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $7 = HEAP8[$prev_0_ph] | 0;
    $cmp36 = $7 << 24 >> 24 == 32;
    if ($cmp36) {
      $len_1_ph_ph = 6;
      $sub_1_ph_ph = 111136;
      label = 28;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $8 = HEAP8[$s_addr_0] | 0;
    if (($8 << 24 >> 24 | 0) == 34) {
      $len_1_ph_ph = 6;
      $sub_1_ph_ph = 106936;
      label = 28;
      break;
    } else if (($8 << 24 >> 24 | 0) == 39) {
      $sub_1_ph113 = 103008;
      $len_1_ph114 = 5;
      $remaining_2_ph115 = $remaining_0;
      $charnum_3_ph117 = $charnum_0;
      label = 30;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $cmp51 = $8 << 24 >> 24 < 0;
    if ($cmp51) {
      label = 19;
      break;
    } else {
      $len_1_ph_ph = 1;
      $sub_1_ph_ph = $s_addr_0;
      label = 28;
      break;
    }
   case 19:
    $conv5537 = $8 & 255;
    $cnt_039 = 0;
    $mask_040 = 127;
    $conv5541 = $conv5537;
    label = 20;
    break;
   case 20:
    $inc = $cnt_039 + 1 | 0;
    $and = $conv5541 & $mask_040;
    $shr35 = $mask_040 >>> 1;
    $cmp56 = $shr35 >>> 0 < $and >>> 0;
    if ($cmp56) {
      $cnt_039 = $inc;
      $mask_040 = $shr35;
      $conv5541 = $and;
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $cmp63 = ($cnt_039 | 0) > 0;
    if ($cmp63) {
      $charnum_1 = $and;
      $remaining_1_in = $inc;
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $shl = $charnum_0 << 6;
    $add = $and + $shl | 0;
    $charnum_1 = $add;
    $remaining_1_in = $remaining_0;
    label = 23;
    break;
   case 23:
    $remaining_1 = $remaining_1_in - 1 | 0;
    $cmp71 = ($remaining_1 | 0) > 0;
    $incdec_ptr = $s_addr_0 + 1 | 0;
    if ($cmp71) {
      $charnum_0 = $charnum_1;
      $remaining_0 = $remaining_1;
      $s_addr_0 = $incdec_ptr;
      $p_0 = $p_1;
      label = 6;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    HEAP8[$arrayidx] = 59;
    $charnum_2 = $charnum_1;
    $len_0 = 3;
    $sub_0 = $arrayidx75;
    label = 25;
    break;
   case 25:
    $rem = ($charnum_2 >>> 0) % 10;
    $add7636 = $rem | 48;
    $conv77 = $add7636 & 255;
    $incdec_ptr78 = $sub_0 - 1 | 0;
    HEAP8[$sub_0] = $conv77;
    $div = ($charnum_2 >>> 0) / 10 >>> 0;
    $inc79 = $len_0 + 1 | 0;
    $cmp80 = ($inc79 | 0) > 12;
    if ($cmp80) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $9 = HEAP32[_stderr >> 2] | 0;
    $10 = _fwrite(98744, 46, 1, $9 | 0) | 0;
    _exit(1);
    return 0;
   case 27:
    $11 = $charnum_2 >>> 0 > 9;
    if ($11) {
      $charnum_2 = $div;
      $len_0 = $inc79;
      $sub_0 = $incdec_ptr78;
      label = 25;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    $sub_1_ph113 = $sub_1_ph_ph;
    $len_1_ph114 = $len_1_ph_ph;
    $remaining_2_ph115 = $remaining_0;
    $charnum_3_ph117 = $charnum_0;
    label = 30;
    break;
   case 29:
    $incdec_ptr87 = $sub_0 - 2 | 0;
    HEAP8[$incdec_ptr78] = 35;
    HEAP8[$incdec_ptr87] = 38;
    $tobool9947 = ($inc79 | 0) == 0;
    if ($tobool9947) {
      $p_2_lcssa = $p_1;
      $pos_1_lcssa = $pos_0_ph;
      $remaining_2_ph116 = $remaining_1;
      $charnum_3_ph118 = $div;
      label = 33;
      break;
    } else {
      $sub_1_ph113 = $incdec_ptr87;
      $len_1_ph114 = $inc79;
      $remaining_2_ph115 = $remaining_1;
      $charnum_3_ph117 = $div;
      label = 30;
      break;
    }
   case 30:
    $12 = $len_1_ph114 + $pos_0_ph | 0;
    $p_248 = $p_1;
    $sub_149 = $sub_1_ph113;
    $len_150 = $len_1_ph114;
    label = 31;
    break;
   case 31:
    $dec98 = $len_150 - 1 | 0;
    $incdec_ptr101 = $sub_149 + 1 | 0;
    $13 = HEAP8[$sub_149] | 0;
    $incdec_ptr102 = $p_248 + 1 | 0;
    HEAP8[$p_248] = $13;
    $tobool99 = ($dec98 | 0) == 0;
    if ($tobool99) {
      label = 32;
      break;
    } else {
      $p_248 = $incdec_ptr102;
      $sub_149 = $incdec_ptr101;
      $len_150 = $dec98;
      label = 31;
      break;
    }
   case 32:
    $scevgep = $p_1 + $len_1_ph114 | 0;
    $p_2_lcssa = $scevgep;
    $pos_1_lcssa = $12;
    $remaining_2_ph116 = $remaining_2_ph115;
    $charnum_3_ph118 = $charnum_3_ph117;
    label = 33;
    break;
   case 33:
    $incdec_ptr104 = $s_addr_0 + 1 | 0;
    $charnum_0_ph = $charnum_3_ph118;
    $remaining_0_ph = $remaining_2_ph116;
    $s_addr_0_ph = $incdec_ptr104;
    $pos_0_ph = $pos_1_lcssa;
    $prev_0_ph = $s_addr_0;
    $p_0_ph = $p_2_lcssa;
    label = 5;
    break;
   case 34:
    HEAP8[$p_0] = 0;
    $14 = HEAP32[3506] | 0;
    STACKTOP = __stackBase__;
    return $14 | 0;
  }
  return 0;
}
function _vml_textpara($job, $p, $para) {
  $job = $job | 0;
  $p = $p | 0;
  $para = $para | 0;
  var $obj1 = 0, $0 = 0, $just = 0, $1 = 0, $conv = 0, $x = 0, $2 = 0.0, $x4 = 0, $3 = 0.0, $width = 0, $4 = 0.0, $sub = 0.0, $x7 = 0, $5 = 0.0, $width8 = 0, $6 = 0.0, $div = 0.0, $sub9 = 0.0, $p1_sroa_0_0 = 0.0, $width12 = 0, $7 = 0.0, $add = 0.0, $height = 0, $8 = 0.0, $fontsize = 0, $9 = 0.0, $cmp = 0, $mul = 0.0, $add16 = 0.0, $sub19 = 0.0, $add21 = 0.0, $10 = 0, $conv22 = 0.0, $y = 0, $11 = 0.0, $sub23 = 0.0, $12 = 0.0, $sub27 = 0.0, $13 = 0.0, $cmp30 = 0, $div34 = 0.0, $add35 = 0.0, $add45 = 0.0, $add35_pn = 0.0, $p1_sroa_1_0 = 0.0, $p2_sroa_1_0 = 0.0, $14 = 0, $sub58 = 0.0, $sub61 = 0.0, $call = 0, $call62 = 0, $postscript_alias = 0, $15 = 0, $tobool = 0, $family = 0, $16 = 0, $17 = 0, $weight = 0, $18 = 0, $tobool66 = 0, $19 = 0, $stretch = 0, $20 = 0, $tobool72 = 0, $21 = 0, $style = 0, $22 = 0, $tobool78 = 0, $fontname = 0, $23 = 0, $24 = 0.0, $pencolor = 0, $type = 0, $25 = 0, $string = 0, $26 = 0, $call88 = 0, $tobool89 = 0, $27 = 0, $rgba = 0, $arrayidx = 0, $28 = 0, $conv98 = 0, $arrayidx102 = 0, $29 = 0, $conv103 = 0, $arrayidx107 = 0, $30 = 0, $conv108 = 0, $call111 = 0, $str = 0, $31 = 0, $call112 = 0, $call113 = 0, $call114 = 0, $call115 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $p;
  $p = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  HEAP32[$p >> 2] = HEAP32[tempParam >> 2] | 0;
  HEAP32[$p + 4 >> 2] = HEAP32[tempParam + 4 >> 2] | 0;
  HEAP32[$p + 8 >> 2] = HEAP32[tempParam + 8 >> 2] | 0;
  HEAP32[$p + 12 >> 2] = HEAP32[tempParam + 12 >> 2] | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $just = $para + 72 | 0;
    $1 = HEAP8[$just] | 0;
    $conv = $1 << 24 >> 24;
    if (($conv | 0) == 108) {
      label = 3;
      break;
    } else if (($conv | 0) == 114) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $x = $p | 0;
    $2 = +HEAPF64[$x >> 3];
    $p1_sroa_0_0 = $2;
    label = 6;
    break;
   case 4:
    $x4 = $p | 0;
    $3 = +HEAPF64[$x4 >> 3];
    $width = $para + 56 | 0;
    $4 = +HEAPF64[$width >> 3];
    $sub = $3 - $4;
    $p1_sroa_0_0 = $sub;
    label = 6;
    break;
   case 5:
    $x7 = $p | 0;
    $5 = +HEAPF64[$x7 >> 3];
    $width8 = $para + 56 | 0;
    $6 = +HEAPF64[$width8 >> 3];
    $div = $6 * .5;
    $sub9 = $5 - $div;
    $p1_sroa_0_0 = $sub9;
    label = 6;
    break;
   case 6:
    $width12 = $para + 56 | 0;
    $7 = +HEAPF64[$width12 >> 3];
    $add = $p1_sroa_0_0 + $7;
    $height = $para + 64 | 0;
    $8 = +HEAPF64[$height >> 3];
    $fontsize = $para + 24 | 0;
    $9 = +HEAPF64[$fontsize >> 3];
    $cmp = $8 < $9;
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $mul = $9 * 1.1;
    $add16 = $mul + 1.0;
    HEAPF64[$height >> 3] = $add16;
    label = 8;
    break;
   case 8:
    $sub19 = $p1_sroa_0_0 + -8.0;
    $add21 = $add + 8.0;
    $10 = HEAP32[4068] | 0;
    $conv22 = +($10 >>> 0 >>> 0);
    $y = $p + 8 | 0;
    $11 = +HEAPF64[$y >> 3];
    $sub23 = $conv22 - $11;
    $12 = +HEAPF64[$height >> 3];
    $sub27 = $sub23 - $12;
    $13 = +HEAPF64[$fontsize >> 3];
    $cmp30 = $13 < 12.0;
    $div34 = $13 / 5.0;
    if ($cmp30) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $add35 = $div34 + 1.4;
    $add35_pn = $add35;
    label = 11;
    break;
   case 10:
    $add45 = $div34 + 2.0;
    $add35_pn = $add45;
    label = 11;
    break;
   case 11:
    $p1_sroa_1_0 = $sub27 + $add35_pn;
    $p2_sroa_1_0 = $sub23 + $add35_pn;
    $14 = $job;
    _gvprintf($14, 102736, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($14, 103936, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $sub19, HEAPF64[tempInt + 8 >> 3] = $p1_sroa_1_0, tempInt) | 0);
    $sub58 = $add21 - $sub19;
    $sub61 = $p2_sroa_1_0 - $p1_sroa_1_0;
    _gvprintf($14, 103440, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $sub58, HEAPF64[tempInt + 8 >> 3] = $sub61, tempInt) | 0);
    $call = _gvputs($14, 102416) | 0;
    $call62 = _gvputs($14, 101904) | 0;
    $postscript_alias = $para + 4 | 0;
    $15 = HEAP32[$postscript_alias >> 2] | 0;
    $tobool = ($15 | 0) == 0;
    if ($tobool) {
      label = 18;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $family = $15 + 4 | 0;
    $16 = HEAP32[$family >> 2] | 0;
    _gvprintf($14, 101560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $16, tempInt) | 0);
    $17 = HEAP32[$postscript_alias >> 2] | 0;
    $weight = $17 + 8 | 0;
    $18 = HEAP32[$weight >> 2] | 0;
    $tobool66 = ($18 | 0) == 0;
    if ($tobool66) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    _gvprintf($14, 100968, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $18, tempInt) | 0);
    label = 14;
    break;
   case 14:
    $19 = HEAP32[$postscript_alias >> 2] | 0;
    $stretch = $19 + 12 | 0;
    $20 = HEAP32[$stretch >> 2] | 0;
    $tobool72 = ($20 | 0) == 0;
    if ($tobool72) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    _gvprintf($14, 100608, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $20, tempInt) | 0);
    label = 16;
    break;
   case 16:
    $21 = HEAP32[$postscript_alias >> 2] | 0;
    $style = $21 + 16 | 0;
    $22 = HEAP32[$style >> 2] | 0;
    $tobool78 = ($22 | 0) == 0;
    if ($tobool78) {
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    _gvprintf($14, 100120, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $22, tempInt) | 0);
    label = 19;
    break;
   case 18:
    $fontname = $para + 20 | 0;
    $23 = HEAP32[$fontname >> 2] | 0;
    _gvprintf($14, 101560, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $23, tempInt) | 0);
    label = 19;
    break;
   case 19:
    $24 = +HEAPF64[$fontsize >> 3];
    _gvprintf($14, 99744, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAPF64[tempInt >> 3] = $24, tempInt) | 0);
    $pencolor = $0 + 16 | 0;
    $type = $0 + 48 | 0;
    $25 = HEAP32[$type >> 2] | 0;
    if (($25 | 0) == 5) {
      label = 20;
      break;
    } else if (($25 | 0) == 1) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 20:
    $string = $pencolor;
    $26 = HEAP32[$string >> 2] | 0;
    $call88 = _strcasecmp($26, 157896) | 0;
    $tobool89 = ($call88 | 0) == 0;
    if ($tobool89) {
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $27 = HEAP32[$string >> 2] | 0;
    _gvprintf($14, 99272, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $27, tempInt) | 0);
    label = 24;
    break;
   case 22:
    $rgba = $pencolor;
    $arrayidx = $pencolor;
    $28 = HEAP8[$arrayidx] | 0;
    $conv98 = $28 & 255;
    $arrayidx102 = $rgba + 1 | 0;
    $29 = HEAP8[$arrayidx102] | 0;
    $conv103 = $29 & 255;
    $arrayidx107 = $rgba + 2 | 0;
    $30 = HEAP8[$arrayidx107] | 0;
    $conv108 = $30 & 255;
    _gvprintf($14, 98944, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $conv98, HEAP32[tempInt + 8 >> 2] = $conv103, HEAP32[tempInt + 16 >> 2] = $conv108, tempInt) | 0);
    label = 24;
    break;
   case 23:
    ___assert_func(111200, 442, 163736, 110816);
   case 24:
    $call111 = _gvputs($14, 98480) | 0;
    $str = $para | 0;
    $31 = HEAP32[$str >> 2] | 0;
    $call112 = _html_string($31) | 0;
    $call113 = _gvputs($14, $call112) | 0;
    $call114 = _gvputs($14, 98088) | 0;
    $call115 = _gvputs($14, 97672) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_null($gvc, $us, $b, $filled) {
  $gvc = $gvc | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  STACKTOP = __stackBase__;
  return;
}
function _poolClear($pool) {
  $pool = $pool | 0;
  var $freeBlocks = 0, $0 = 0, $tobool = 0, $blocks2 = 0, $1 = 0, $tobool312 = 0, $p_013 = 0, $next = 0, $2 = 0, $3 = 0, $tobool3 = 0, $start = 0, $ptr = 0, $end = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $freeBlocks = $pool + 4 | 0;
    $0 = HEAP32[$freeBlocks >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    $blocks2 = $pool | 0;
    $1 = HEAP32[$blocks2 >> 2] | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $tobool312 = ($1 | 0) == 0;
    if ($tobool312) {
      label = 6;
      break;
    } else {
      $p_013 = $1;
      label = 5;
      break;
    }
   case 4:
    HEAP32[$freeBlocks >> 2] = $1;
    label = 6;
    break;
   case 5:
    $next = $p_013 | 0;
    $2 = HEAP32[$next >> 2] | 0;
    $3 = HEAP32[$freeBlocks >> 2] | 0;
    HEAP32[$next >> 2] = $3;
    HEAP32[$freeBlocks >> 2] = $p_013;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      $p_013 = $2;
      label = 5;
      break;
    }
   case 6:
    HEAP32[$blocks2 >> 2] = 0;
    $start = $pool + 16 | 0;
    HEAP32[$start >> 2] = 0;
    $ptr = $pool + 12 | 0;
    HEAP32[$ptr >> 2] = 0;
    $end = $pool + 8 | 0;
    HEAP32[$end >> 2] = 0;
    return;
  }
}
function _vml_grfill($job, $filled) {
  $job = $job | 0;
  $filled = $filled | 0;
  var $tobool = 0, $obj1 = 0, $0 = 0, $1 = 0, $call = 0, $fillcolor = 0, $call2 = 0, $2 = 0, $call3 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($filled | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $1 = $job;
    $call = _gvputs($1, 106616) | 0;
    $fillcolor = $0 + 56 | 0;
    _vml_print_color($job, $fillcolor);
    $call2 = _gvputs($1, 106280) | 0;
    label = 5;
    break;
   case 4:
    $2 = $job;
    $call3 = _gvputs($2, 105896) | 0;
    label = 5;
    break;
   case 5:
    return;
  }
}
function _vml_bzptarray($job, $A, $n) {
  $job = $job | 0;
  $A = $A | 0;
  $n = $n | 0;
  var $cmp6 = 0, $0 = 0, $c_08 = 0, $i_07 = 0, $x = 0, $1 = 0.0, $2 = 0, $conv = 0.0, $y = 0, $3 = 0.0, $sub = 0.0, $cmp2 = 0, $_ = 0, $inc = 0, $cmp = 0, $4 = 0, $call = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp6 = ($n | 0) > 0;
    if ($cmp6) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $0 = $job;
    $i_07 = 0;
    $c_08 = 108960;
    label = 4;
    break;
   case 4:
    $x = $A + ($i_07 << 4) | 0;
    $1 = +HEAPF64[$x >> 3];
    $2 = HEAP32[4068] | 0;
    $conv = +($2 >>> 0 >>> 0);
    $y = $A + ($i_07 << 4) + 8 | 0;
    $3 = +HEAPF64[$y >> 3];
    $sub = $conv - $3;
    _gvprintf($0, 108224, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $c_08, HEAPF64[tempInt + 8 >> 3] = $1, HEAPF64[tempInt + 16 >> 3] = $sub, tempInt) | 0);
    $cmp2 = ($i_07 | 0) == 0;
    $_ = $cmp2 ? 107840 : 107344;
    $inc = $i_07 + 1 | 0;
    $cmp = ($inc | 0) < ($n | 0);
    if ($cmp) {
      $i_07 = $inc;
      $c_08 = $_;
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = $job;
    $call = _gvputs($4, 107e3) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_vml($job, $us, $b, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var $4 = 0.0, $sub6 = 0.0, $5 = 0.0, $sub11 = 0.0, $sub17 = 0.0, $7 = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  $4 = +HEAPF64[$b >> 3];
  $sub6 = +HEAPF64[$b + 16 >> 3] - $4;
  $5 = +HEAPF64[$b + 24 >> 3];
  $sub11 = $5 - +HEAPF64[$b + 8 >> 3];
  $sub17 = +(~~(+HEAPF64[$job + 232 >> 3] - +HEAPF64[$job + 216 >> 3]) >>> 0 >>> 0) - $5;
  $7 = $job;
  _gvprintf($7, 108840, (tempInt = STACKTOP, STACKTOP = STACKTOP + 40 | 0, HEAP32[tempInt >> 2] = HEAP32[$us + 8 >> 2] | 0, HEAPF64[tempInt + 8 >> 3] = $sub6, HEAPF64[tempInt + 16 >> 3] = $sub11, HEAPF64[tempInt + 24 >> 3] = $4, HEAPF64[tempInt + 32 >> 3] = $sub17, tempInt) | 0);
  _gvputs($7, 108192);
  STACKTOP = __stackBase__;
  return;
}
function _ps_freeimage($us) {
  $us = $us | 0;
  _free(HEAP32[$us + 52 >> 2] | 0);
  return;
}
function _XML_ParserCreate($encodingName) {
  $encodingName = $encodingName | 0;
  return _XML_ParserCreate_MM($encodingName, 0, 0) | 0;
}
function _XML_ParserCreate_MM($encodingName, $memsuite, $nameSep) {
  $encodingName = $encodingName | 0;
  $memsuite = $memsuite | 0;
  $nameSep = $nameSep | 0;
  return _parserCreate($encodingName, $memsuite, $nameSep) | 0;
}
function _parserCreate($encodingName, $memsuite, $nameSep) {
  $encodingName = $encodingName | 0;
  $memsuite = $memsuite | 0;
  $nameSep = $nameSep | 0;
  var $tobool = 0, $malloc_fcn = 0, $0 = 0, $call = 0, $1 = 0, $cmp = 0, $m_mem = 0, $2 = 0, $malloc_fcn3 = 0, $realloc_fcn = 0, $3 = 0, $realloc_fcn4 = 0, $4 = 0, $free_fcn = 0, $5 = 0, $free_fcn5 = 0, $6 = 0, $call7 = 0, $7 = 0, $cmp8 = 0, $m_mem10 = 0, $malloc_fcn11 = 0, $realloc_fcn12 = 0, $8 = 0, $free_fcn13 = 0, $9 = 0, $parser_0 = 0, $tobool16 = 0, $m_buffer = 0, $m_bufferLim = 0, $m_attsSize = 0, $m_mem19 = 0, $malloc_fcn20 = 0, $10 = 0, $call22 = 0, $11 = 0, $m_atts = 0, $cmp24 = 0, $free_fcn27 = 0, $12 = 0, $13 = 0, $14 = 0, $call31 = 0, $m_dataBuf = 0, $cmp33 = 0, $free_fcn36 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $add_ptr = 0, $m_dataBufEnd = 0, $call46 = 0, $m_dtd47 = 0, $cmp49 = 0, $free_fcn52 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $m_freeBindingList = 0, $m_freeTagList = 0, $m_freeInternalEntities = 0, $m_groupSize = 0, $m_groupConnector = 0, $m_unknownEncodingHandler = 0, $m_unknownEncodingHandlerData = 0, $m_namespaceSeparator = 0, $m_ns = 0, $m_ns_triplets = 0, $m_nsAtts = 0, $m_nsAttsVersion = 0, $m_nsAttsPower = 0, $m_tempPool = 0, $m_temp2Pool = 0, $tobool63 = 0, $m_protocolEncodingName = 0, $27 = 0, $tobool64 = 0, $tobool67 = 0, $m_internalEncoding = 0, $28 = 0, $m_internalEncoding74 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($memsuite | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $malloc_fcn = $memsuite | 0;
    $0 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$0 & 1023](476) | 0;
    $1 = $call;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      $parser_0 = $1;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $m_mem = $call + 12 | 0;
    $2 = HEAP32[$malloc_fcn >> 2] | 0;
    $malloc_fcn3 = $m_mem;
    HEAP32[$malloc_fcn3 >> 2] = $2;
    $realloc_fcn = $memsuite + 4 | 0;
    $3 = HEAP32[$realloc_fcn >> 2] | 0;
    $realloc_fcn4 = $call + 16 | 0;
    $4 = $realloc_fcn4;
    HEAP32[$4 >> 2] = $3;
    $free_fcn = $memsuite + 8 | 0;
    $5 = HEAP32[$free_fcn >> 2] | 0;
    $free_fcn5 = $call + 20 | 0;
    $6 = $free_fcn5;
    HEAP32[$6 >> 2] = $5;
    $parser_0 = $1;
    label = 7;
    break;
   case 5:
    $call7 = _malloc(476) | 0;
    $7 = $call7;
    $cmp8 = ($call7 | 0) == 0;
    if ($cmp8) {
      $parser_0 = $7;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $m_mem10 = $call7 + 12 | 0;
    $malloc_fcn11 = $m_mem10;
    HEAP32[$malloc_fcn11 >> 2] = 306;
    $realloc_fcn12 = $call7 + 16 | 0;
    $8 = $realloc_fcn12;
    HEAP32[$8 >> 2] = 492;
    $free_fcn13 = $call7 + 20 | 0;
    $9 = $free_fcn13;
    HEAP32[$9 >> 2] = 528;
    $parser_0 = $7;
    label = 7;
    break;
   case 7:
    $tobool16 = ($parser_0 | 0) == 0;
    if ($tobool16) {
      $retval_0 = 0;
      label = 20;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $m_buffer = $parser_0 + 8 | 0;
    HEAP32[$m_buffer >> 2] = 0;
    $m_bufferLim = $parser_0 + 32 | 0;
    HEAP32[$m_bufferLim >> 2] = 0;
    $m_attsSize = $parser_0 + 364 | 0;
    HEAP32[$m_attsSize >> 2] = 16;
    $m_mem19 = $parser_0 + 12 | 0;
    $malloc_fcn20 = $m_mem19 | 0;
    $10 = HEAP32[$malloc_fcn20 >> 2] | 0;
    $call22 = FUNCTION_TABLE_ii[$10 & 1023](256) | 0;
    $11 = $call22;
    $m_atts = $parser_0 + 376 | 0;
    HEAP32[$m_atts >> 2] = $11;
    $cmp24 = ($call22 | 0) == 0;
    if ($cmp24) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $free_fcn27 = $parser_0 + 20 | 0;
    $12 = HEAP32[$free_fcn27 >> 2] | 0;
    $13 = $parser_0;
    FUNCTION_TABLE_vi[$12 & 1023]($13);
    $retval_0 = 0;
    label = 20;
    break;
   case 10:
    $14 = HEAP32[$malloc_fcn20 >> 2] | 0;
    $call31 = FUNCTION_TABLE_ii[$14 & 1023](1024) | 0;
    $m_dataBuf = $parser_0 + 44 | 0;
    HEAP32[$m_dataBuf >> 2] = $call31;
    $cmp33 = ($call31 | 0) == 0;
    if ($cmp33) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $free_fcn36 = $parser_0 + 20 | 0;
    $15 = HEAP32[$free_fcn36 >> 2] | 0;
    $16 = HEAP32[$m_atts >> 2] | 0;
    $17 = $16;
    FUNCTION_TABLE_vi[$15 & 1023]($17);
    $18 = HEAP32[$free_fcn36 >> 2] | 0;
    $19 = $parser_0;
    FUNCTION_TABLE_vi[$18 & 1023]($19);
    $retval_0 = 0;
    label = 20;
    break;
   case 12:
    $add_ptr = $call31 + 1024 | 0;
    $m_dataBufEnd = $parser_0 + 48 | 0;
    HEAP32[$m_dataBufEnd >> 2] = $add_ptr;
    $call46 = _dtdCreate($m_mem19) | 0;
    $m_dtd47 = $parser_0 + 340 | 0;
    HEAP32[$m_dtd47 >> 2] = $call46;
    $cmp49 = ($call46 | 0) == 0;
    if ($cmp49) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $free_fcn52 = $parser_0 + 20 | 0;
    $20 = HEAP32[$free_fcn52 >> 2] | 0;
    $21 = HEAP32[$m_dataBuf >> 2] | 0;
    FUNCTION_TABLE_vi[$20 & 1023]($21);
    $22 = HEAP32[$free_fcn52 >> 2] | 0;
    $23 = HEAP32[$m_atts >> 2] | 0;
    $24 = $23;
    FUNCTION_TABLE_vi[$22 & 1023]($24);
    $25 = HEAP32[$free_fcn52 >> 2] | 0;
    $26 = $parser_0;
    FUNCTION_TABLE_vi[$25 & 1023]($26);
    $retval_0 = 0;
    label = 20;
    break;
   case 14:
    $m_freeBindingList = $parser_0 + 360 | 0;
    HEAP32[$m_freeBindingList >> 2] = 0;
    $m_freeTagList = $parser_0 + 352 | 0;
    HEAP32[$m_freeTagList >> 2] = 0;
    $m_freeInternalEntities = $parser_0 + 288 | 0;
    HEAP32[$m_freeInternalEntities >> 2] = 0;
    $m_groupSize = $parser_0 + 452 | 0;
    HEAP32[$m_groupSize >> 2] = 0;
    $m_groupConnector = $parser_0 + 448 | 0;
    HEAP32[$m_groupConnector >> 2] = 0;
    $m_unknownEncodingHandler = $parser_0 + 124 | 0;
    HEAP32[$m_unknownEncodingHandler >> 2] = 0;
    $m_unknownEncodingHandlerData = $parser_0 + 244 | 0;
    HEAP32[$m_unknownEncodingHandlerData >> 2] = 0;
    $m_namespaceSeparator = $parser_0 + 456 | 0;
    HEAP8[$m_namespaceSeparator] = 33;
    $m_ns = $parser_0 + 232 | 0;
    HEAP8[$m_ns] = 0;
    $m_ns_triplets = $parser_0 + 233 | 0;
    HEAP8[$m_ns_triplets] = 0;
    $m_nsAtts = $parser_0 + 380 | 0;
    HEAP32[$m_nsAtts >> 2] = 0;
    $m_nsAttsVersion = $parser_0 + 384 | 0;
    HEAP32[$m_nsAttsVersion >> 2] = 0;
    $m_nsAttsPower = $parser_0 + 388 | 0;
    HEAP8[$m_nsAttsPower] = 0;
    $m_tempPool = $parser_0 + 400 | 0;
    _poolInit($m_tempPool, $m_mem19);
    $m_temp2Pool = $parser_0 + 424 | 0;
    _poolInit($m_temp2Pool, $m_mem19);
    _parserInit($parser_0, $encodingName);
    $tobool63 = ($encodingName | 0) == 0;
    if ($tobool63) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $m_protocolEncodingName = $parser_0 + 228 | 0;
    $27 = HEAP32[$m_protocolEncodingName >> 2] | 0;
    $tobool64 = ($27 | 0) == 0;
    if ($tobool64) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    _XML_ParserFree($parser_0);
    $retval_0 = 0;
    label = 20;
    break;
   case 17:
    $tobool67 = ($nameSep | 0) == 0;
    if ($tobool67) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    HEAP8[$m_ns] = 1;
    $m_internalEncoding = $parser_0 + 224 | 0;
    HEAP32[$m_internalEncoding >> 2] = 12360;
    $28 = HEAP8[$nameSep] | 0;
    HEAP8[$m_namespaceSeparator] = $28;
    $retval_0 = $parser_0;
    label = 20;
    break;
   case 19:
    $m_internalEncoding74 = $parser_0 + 224 | 0;
    HEAP32[$m_internalEncoding74 >> 2] = 12360;
    $retval_0 = $parser_0;
    label = 20;
    break;
   case 20:
    return $retval_0 | 0;
  }
  return 0;
}
function _parserInit($parser, $encodingName) {
  $parser = $parser | 0;
  $encodingName = $encodingName | 0;
  var $m_processor = 0, $m_prologState = 0, $cmp = 0, $m_tempPool = 0, $call = 0, $cond = 0, $m_protocolEncodingName = 0, $m_curBase = 0, $m_initEncoding = 0, $m_encoding = 0, $call1 = 0, $m_userData = 0, $m_handlerArg = 0, $m_startElementHandler = 0, $m_externalEntityRefHandlerArg = 0, $0 = 0, $m_skippedEntityHandler = 0, $m_elementDeclHandler = 0, $m_buffer = 0, $1 = 0, $2 = 0, $m_bufferPtr = 0, $3 = 0, $m_bufferEnd = 0, $m_parseEndByteIndex = 0, $m_parseEndPtr = 0, $m_declEntity = 0, $m_position = 0, $4 = 0, $$etemp$0$0 = 0, $$etemp$0$1 = 0, $st$1$0 = 0, $st$2$1 = 0, $m_errorCode = 0, $m_defaultExpandInternalEntities = 0, $5 = 0, $6 = 0, $m_tagLevel = 0, $m_tagStack = 0, $m_inheritedBindings = 0, $m_nSpecifiedAtts = 0, $m_unknownEncodingMem = 0, $m_unknownEncodingRelease = 0, $m_unknownEncodingData = 0, $m_parentParser = 0, $parsing = 0, $m_hash_secret_salt = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 154;
    $m_prologState = $parser + 252 | 0;
    _XmlPrologStateInit($m_prologState);
    $cmp = ($encodingName | 0) == 0;
    if ($cmp) {
      $cond = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $m_tempPool = $parser + 400 | 0;
    $call = _poolCopyString($m_tempPool, $encodingName) | 0;
    $cond = $call;
    label = 4;
    break;
   case 4:
    $m_protocolEncodingName = $parser + 228 | 0;
    HEAP32[$m_protocolEncodingName >> 2] = $cond;
    $m_curBase = $parser + 344 | 0;
    HEAP32[$m_curBase >> 2] = 0;
    $m_initEncoding = $parser + 148 | 0;
    $m_encoding = $parser + 144 | 0;
    $call1 = _XmlInitEncoding($m_initEncoding, $m_encoding, 0) | 0;
    $m_userData = $parser | 0;
    HEAP32[$m_userData >> 2] = 0;
    $m_handlerArg = $parser + 4 | 0;
    HEAP32[$m_handlerArg >> 2] = 0;
    $m_startElementHandler = $parser + 52 | 0;
    $m_externalEntityRefHandlerArg = $parser + 116 | 0;
    $0 = $m_startElementHandler;
    _memset($0 | 0, 0, 64);
    HEAP32[$m_externalEntityRefHandlerArg >> 2] = $parser;
    $m_skippedEntityHandler = $parser + 120 | 0;
    HEAP32[$m_skippedEntityHandler >> 2] = 0;
    $m_elementDeclHandler = $parser + 128 | 0;
    $m_buffer = $parser + 8 | 0;
    $1 = $m_elementDeclHandler;
    _memset($1 | 0, 0, 16);
    $2 = HEAP32[$m_buffer >> 2] | 0;
    $m_bufferPtr = $parser + 24 | 0;
    HEAP32[$m_bufferPtr >> 2] = $2;
    $3 = HEAP32[$m_buffer >> 2] | 0;
    $m_bufferEnd = $parser + 28 | 0;
    HEAP32[$m_bufferEnd >> 2] = $3;
    $m_parseEndByteIndex = $parser + 36 | 0;
    HEAP32[$m_parseEndByteIndex >> 2] = 0;
    $m_parseEndPtr = $parser + 40 | 0;
    HEAP32[$m_parseEndPtr >> 2] = 0;
    $m_declEntity = $parser + 300 | 0;
    $m_position = $parser + 392 | 0;
    $4 = $m_position;
    $$etemp$0$0 = 0;
    $$etemp$0$1 = 0;
    $st$1$0 = $4 | 0;
    HEAP32[$st$1$0 >> 2] = $$etemp$0$0;
    $st$2$1 = $4 + 4 | 0;
    HEAP32[$st$2$1 >> 2] = $$etemp$0$1;
    $m_errorCode = $parser + 268 | 0;
    $m_defaultExpandInternalEntities = $parser + 292 | 0;
    $5 = $m_errorCode;
    _memset($5 | 0, 0, 20);
    $6 = $m_declEntity;
    _memset($6 | 0, 0, 38);
    HEAP8[$m_defaultExpandInternalEntities] = 1;
    $m_tagLevel = $parser + 296 | 0;
    HEAP32[$m_tagLevel >> 2] = 0;
    $m_tagStack = $parser + 348 | 0;
    HEAP32[$m_tagStack >> 2] = 0;
    $m_inheritedBindings = $parser + 356 | 0;
    HEAP32[$m_inheritedBindings >> 2] = 0;
    $m_nSpecifiedAtts = $parser + 368 | 0;
    HEAP32[$m_nSpecifiedAtts >> 2] = 0;
    $m_unknownEncodingMem = $parser + 236 | 0;
    HEAP32[$m_unknownEncodingMem >> 2] = 0;
    $m_unknownEncodingRelease = $parser + 248 | 0;
    HEAP32[$m_unknownEncodingRelease >> 2] = 0;
    $m_unknownEncodingData = $parser + 240 | 0;
    HEAP32[$m_unknownEncodingData >> 2] = 0;
    $m_parentParser = $parser + 460 | 0;
    HEAP32[$m_parentParser >> 2] = 0;
    $parsing = $parser + 464 | 0;
    HEAP32[$parsing >> 2] = 0;
    $m_hash_secret_salt = $parser + 472 | 0;
    HEAP32[$m_hash_secret_salt >> 2] = 0;
    return;
  }
}
function _poolCopyString($pool, $s) {
  $pool = $pool | 0;
  $s = $s | 0;
  var $ptr = 0, $end = 0, $s_addr_0 = 0, $0 = 0, $1 = 0, $cmp = 0, $call = 0, $tobool = 0, $2 = 0, $3 = 0, $incdec_ptr = 0, $incdec_ptr2 = 0, $4 = 0, $tobool3 = 0, $start = 0, $5 = 0, $6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr = $pool + 12 | 0;
    $end = $pool + 8 | 0;
    $s_addr_0 = $s;
    label = 3;
    break;
   case 3:
    $0 = HEAP32[$ptr >> 2] | 0;
    $1 = HEAP32[$end >> 2] | 0;
    $cmp = ($0 | 0) == ($1 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call = _poolGrow($pool) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP8[$s_addr_0] | 0;
    $3 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$3] = $2;
    $incdec_ptr2 = $s_addr_0 + 1 | 0;
    $4 = HEAP8[$s_addr_0] | 0;
    $tobool3 = $4 << 24 >> 24 == 0;
    if ($tobool3) {
      label = 6;
      break;
    } else {
      $s_addr_0 = $incdec_ptr2;
      label = 3;
      break;
    }
   case 6:
    $start = $pool + 16 | 0;
    $5 = HEAP32[$start >> 2] | 0;
    $6 = HEAP32[$ptr >> 2] | 0;
    HEAP32[$start >> 2] = $6;
    $retval_0 = $5;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _vml_print_color($job, $color) {
  $job = $job | 0;
  $color = $color | 0;
  var $type = 0, $0 = 0, $string = 0, $1 = 0, $2 = 0, $call = 0, $rgba = 0, $arrayidx = 0, $3 = 0, $cmp = 0, $4 = 0, $call4 = 0, $arrayidx7 = 0, $5 = 0, $conv8 = 0, $arrayidx11 = 0, $6 = 0, $conv12 = 0, $arrayidx15 = 0, $7 = 0, $conv16 = 0, $8 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $color;
  $color = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  _memcpy($color, tempParam, 40);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $color + 32 | 0;
    $0 = HEAP32[$type >> 2] | 0;
    if (($0 | 0) == 5) {
      label = 3;
      break;
    } else if (($0 | 0) == 1) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $string = $color;
    $1 = HEAP32[$string >> 2] | 0;
    $2 = $job;
    $call = _gvputs($2, $1) | 0;
    label = 8;
    break;
   case 4:
    $rgba = $color;
    $arrayidx = $rgba + 3 | 0;
    $3 = HEAP8[$arrayidx] | 0;
    $cmp = $3 << 24 >> 24 == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $4 = $job;
    $call4 = _gvputs($4, 112208) | 0;
    label = 8;
    break;
   case 6:
    $arrayidx7 = $color;
    $5 = HEAP8[$arrayidx7] | 0;
    $conv8 = $5 & 255;
    $arrayidx11 = $rgba + 1 | 0;
    $6 = HEAP8[$arrayidx11] | 0;
    $conv12 = $6 & 255;
    $arrayidx15 = $rgba + 2 | 0;
    $7 = HEAP8[$arrayidx15] | 0;
    $conv16 = $7 & 255;
    $8 = $job;
    _gvprintf($8, 111656, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $conv8, HEAP32[tempInt + 8 >> 2] = $conv12, HEAP32[tempInt + 16 >> 2] = $conv16, tempInt) | 0);
    label = 8;
    break;
   case 7:
    ___assert_func(111200, 95, 163752, 110816);
   case 8:
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_pslib($job, $us, $b, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var $AF = 0, $tobool = 0, $tobool1 = 0, $name = 0, $0 = 0, $tobool5 = 0, $data = 0, $1 = 0, $tobool9 = 0, $2 = 0, $3 = 0, $arrayidx10 = 0, $UR = 0, $4 = 0, $5 = 0, $x = 0, $6 = 0.0, $x13 = 0, $y = 0, $7 = 0.0, $y16 = 0, $x18 = 0, $8 = 0.0, $x20 = 0, $y22 = 0, $9 = 0.0, $y24 = 0, $tobool25 = 0, $10 = 0, $x28 = 0, $11 = 0.0, $y30 = 0, $12 = 0.0, $x28_1 = 0, $13 = 0.0, $y30_1 = 0, $14 = 0.0, $x28_2 = 0, $15 = 0.0, $y30_2 = 0, $16 = 0.0, $x28_3 = 0, $17 = 0.0, $y30_3 = 0, $18 = 0.0, $19 = 0.0, $20 = 0.0, $21 = 0, $22 = 0, $x40 = 0, $23 = 0.0, $y42 = 0, $24 = 0.0, $x40_1 = 0, $25 = 0.0, $y42_1 = 0, $26 = 0.0, $x40_2 = 0, $27 = 0.0, $y42_2 = 0, $28 = 0.0, $x40_3 = 0, $29 = 0.0, $y42_3 = 0, $30 = 0.0, $31 = 0.0, $32 = 0.0, $33 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 64 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $AF = __stackBase__ | 0;
    $tobool = ($job | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(107776, 205, 164488, 107304);
   case 4:
    $tobool1 = ($us | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(107776, 206, 164488, 106968);
   case 6:
    $name = $us + 8 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool5 = ($0 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    ___assert_func(107776, 207, 164488, 106576);
   case 8:
    $data = $us + 52 | 0;
    $1 = HEAP32[$data >> 2] | 0;
    $tobool9 = ($1 | 0) == 0;
    if ($tobool9) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $2 = $AF;
    $3 = $b;
    HEAP32[$2 >> 2] = HEAP32[$3 >> 2] | 0;
    HEAP32[$2 + 4 >> 2] = HEAP32[$3 + 4 >> 2] | 0;
    HEAP32[$2 + 8 >> 2] = HEAP32[$3 + 8 >> 2] | 0;
    HEAP32[$2 + 12 >> 2] = HEAP32[$3 + 12 >> 2] | 0;
    $arrayidx10 = $AF + 32 | 0;
    $UR = $b + 16 | 0;
    $4 = $arrayidx10;
    $5 = $UR;
    HEAP32[$4 >> 2] = HEAP32[$5 >> 2] | 0;
    HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2] | 0;
    HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2] | 0;
    HEAP32[$4 + 12 >> 2] = HEAP32[$5 + 12 >> 2] | 0;
    $x = $AF | 0;
    $6 = +HEAPF64[$x >> 3];
    $x13 = $AF + 16 | 0;
    HEAPF64[$x13 >> 3] = $6;
    $y = $AF + 40 | 0;
    $7 = +HEAPF64[$y >> 3];
    $y16 = $AF + 24 | 0;
    HEAPF64[$y16 >> 3] = $7;
    $x18 = $arrayidx10 | 0;
    $8 = +HEAPF64[$x18 >> 3];
    $x20 = $AF + 48 | 0;
    HEAPF64[$x20 >> 3] = $8;
    $y22 = $AF + 8 | 0;
    $9 = +HEAPF64[$y22 >> 3];
    $y24 = $AF + 56 | 0;
    HEAPF64[$y24 >> 3] = $9;
    $tobool25 = $filled << 24 >> 24 == 0;
    if ($tobool25) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $10 = $job;
    _gvprintf($10, 106248, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    $x28 = $AF | 0;
    $11 = +HEAPF64[$x28 >> 3];
    $y30 = $AF + 8 | 0;
    $12 = +HEAPF64[$y30 >> 3];
    _gvprintf($10, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $11, HEAPF64[tempInt + 8 >> 3] = $12, tempInt) | 0);
    $x28_1 = $AF + 16 | 0;
    $13 = +HEAPF64[$x28_1 >> 3];
    $y30_1 = $AF + 24 | 0;
    $14 = +HEAPF64[$y30_1 >> 3];
    _gvprintf($10, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $13, HEAPF64[tempInt + 8 >> 3] = $14, tempInt) | 0);
    $x28_2 = $AF + 32 | 0;
    $15 = +HEAPF64[$x28_2 >> 3];
    $y30_2 = $AF + 40 | 0;
    $16 = +HEAPF64[$y30_2 >> 3];
    _gvprintf($10, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $15, HEAPF64[tempInt + 8 >> 3] = $16, tempInt) | 0);
    $x28_3 = $AF + 48 | 0;
    $17 = +HEAPF64[$x28_3 >> 3];
    $y30_3 = $AF + 56 | 0;
    $18 = +HEAPF64[$y30_3 >> 3];
    _gvprintf($10, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $17, HEAPF64[tempInt + 8 >> 3] = $18, tempInt) | 0);
    $19 = +HEAPF64[$x >> 3];
    $20 = +HEAPF64[$y22 >> 3];
    _gvprintf($10, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $19, HEAPF64[tempInt + 8 >> 3] = $20, tempInt) | 0);
    $21 = HEAP32[$name >> 2] | 0;
    _gvprintf($10, 105464, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = 4, HEAP32[tempInt + 8 >> 2] = $21, tempInt) | 0);
    label = 11;
    break;
   case 11:
    $22 = $job;
    _gvprintf($22, 106248, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    $x40 = $AF | 0;
    $23 = +HEAPF64[$x40 >> 3];
    $y42 = $AF + 8 | 0;
    $24 = +HEAPF64[$y42 >> 3];
    _gvprintf($22, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $23, HEAPF64[tempInt + 8 >> 3] = $24, tempInt) | 0);
    $x40_1 = $AF + 16 | 0;
    $25 = +HEAPF64[$x40_1 >> 3];
    $y42_1 = $AF + 24 | 0;
    $26 = +HEAPF64[$y42_1 >> 3];
    _gvprintf($22, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $25, HEAPF64[tempInt + 8 >> 3] = $26, tempInt) | 0);
    $x40_2 = $AF + 32 | 0;
    $27 = +HEAPF64[$x40_2 >> 3];
    $y42_2 = $AF + 40 | 0;
    $28 = +HEAPF64[$y42_2 >> 3];
    _gvprintf($22, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $27, HEAPF64[tempInt + 8 >> 3] = $28, tempInt) | 0);
    $x40_3 = $AF + 48 | 0;
    $29 = +HEAPF64[$x40_3 >> 3];
    $y42_3 = $AF + 56 | 0;
    $30 = +HEAPF64[$y42_3 >> 3];
    _gvprintf($22, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $29, HEAPF64[tempInt + 8 >> 3] = $30, tempInt) | 0);
    $31 = +HEAPF64[$x >> 3];
    $32 = +HEAPF64[$y22 >> 3];
    _gvprintf($22, 105864, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $31, HEAPF64[tempInt + 8 >> 3] = $32, tempInt) | 0);
    $33 = HEAP32[$name >> 2] | 0;
    _gvprintf($22, 105152, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAP32[tempInt >> 2] = 4, HEAP32[tempInt + 8 >> 2] = $33, tempInt) | 0);
    label = 12;
    break;
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_ps($job, $us, $b, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var $statbuf = 0, $tobool = 0, $tobool1 = 0, $name = 0, $0 = 0, $tobool5 = 0, $data = 0, $1 = 0, $tobool9 = 0, $datafree = 0, $2 = 0, $cmp = 0, $datasize = 0, $_pr = 0, $tobool16 = 0, $call = 0, $tobool18 = 0, $f = 0, $3 = 0, $call21 = 0, $type = 0, $4 = 0, $_off = 0, $switch = 0, $call22 = 0, $st_size = 0, $5 = 0, $datasize23 = 0, $6 = 0, $call25 = 0, $7 = 0, $call29 = 0, $must_inline = 0, $8 = 0, $tobool31 = 0, $datafree33 = 0, $_pr30 = 0, $tobool37 = 0, $x = 0, $9 = 0.0, $x39 = 0, $10 = 0, $conv = 0.0, $sub = 0.0, $y = 0, $11 = 0.0, $y41 = 0, $12 = 0, $conv42 = 0.0, $sub43 = 0.0, $13 = 0, $must_inline44 = 0, $14 = 0, $tobool45 = 0, $15 = 0, $macro_id = 0, $16 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 72 | 0;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $statbuf = __stackBase__ | 0;
    $tobool = ($job | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(107776, 146, 164512, 107304);
   case 4:
    $tobool1 = ($us | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(107776, 147, 164512, 106968);
   case 6:
    $name = $us + 8 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool5 = ($0 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    ___assert_func(107776, 148, 164512, 106576);
   case 8:
    $data = $us + 52 | 0;
    $1 = HEAP32[$data >> 2] | 0;
    $tobool9 = ($1 | 0) == 0;
    if ($tobool9) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $datafree = $us + 60 | 0;
    $2 = HEAP32[$datafree >> 2] | 0;
    $cmp = ($2 | 0) == 160;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    FUNCTION_TABLE_vi[$2 & 1023]($us);
    HEAP32[$data >> 2] = 0;
    HEAP32[$datafree >> 2] = 0;
    $datasize = $us + 56 | 0;
    HEAP32[$datasize >> 2] = 0;
    label = 11;
    break;
   case 11:
    $_pr = HEAP32[$data >> 2] | 0;
    $tobool16 = ($_pr | 0) == 0;
    if ($tobool16) {
      label = 12;
      break;
    } else {
      label = 18;
      break;
    }
   case 12:
    $call = _gvusershape_file_access($us) | 0;
    $tobool18 = $call << 24 >> 24 == 0;
    if ($tobool18) {
      label = 22;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $f = $us + 20 | 0;
    $3 = HEAP32[$f >> 2] | 0;
    $call21 = _fileno($3 | 0) | 0;
    $type = $us + 24 | 0;
    $4 = HEAP32[$type >> 2] | 0;
    $_off = $4 - 6 | 0;
    $switch = $_off >>> 0 < 2;
    if ($switch) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $call22 = _fstat($call21 | 0, $statbuf | 0) | 0;
    $st_size = $statbuf + 28 | 0;
    $5 = HEAP32[$st_size >> 2] | 0;
    $datasize23 = $us + 56 | 0;
    HEAP32[$datasize23 >> 2] = $5;
    $6 = HEAP32[$st_size >> 2] | 0;
    $call25 = _malloc($6) | 0;
    HEAP32[$data >> 2] = $call25;
    $7 = HEAP32[$st_size >> 2] | 0;
    $call29 = _read($call21 | 0, $call25 | 0, $7 | 0) | 0;
    $must_inline = $us + 16 | 0;
    HEAP8[$must_inline] = 1;
    label = 15;
    break;
   case 15:
    $8 = HEAP32[$data >> 2] | 0;
    $tobool31 = ($8 | 0) == 0;
    if ($tobool31) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $datafree33 = $us + 60 | 0;
    HEAP32[$datafree33 >> 2] = 160;
    label = 17;
    break;
   case 17:
    _gvusershape_file_release($us);
    $_pr30 = HEAP32[$data >> 2] | 0;
    $tobool37 = ($_pr30 | 0) == 0;
    if ($tobool37) {
      label = 22;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $x = $b | 0;
    $9 = +HEAPF64[$x >> 3];
    $x39 = $us + 32 | 0;
    $10 = HEAP32[$x39 >> 2] | 0;
    $conv = +($10 | 0);
    $sub = $9 - $conv;
    $y = $b + 8 | 0;
    $11 = +HEAPF64[$y >> 3];
    $y41 = $us + 36 | 0;
    $12 = HEAP32[$y41 >> 2] | 0;
    $conv42 = +($12 | 0);
    $sub43 = $11 - $conv42;
    $13 = $job;
    _gvprintf($13, 104784, (tempInt = STACKTOP, STACKTOP = STACKTOP + 16 | 0, HEAPF64[tempInt >> 3] = $sub, HEAPF64[tempInt + 8 >> 3] = $sub43, tempInt) | 0);
    $must_inline44 = $us + 16 | 0;
    $14 = HEAP8[$must_inline44] | 0;
    $tobool45 = $14 << 24 >> 24 == 0;
    if ($tobool45) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $15 = $job;
    _epsf_emit_body($15, $us);
    label = 21;
    break;
   case 20:
    $macro_id = $us + 12 | 0;
    $16 = HEAP32[$macro_id >> 2] | 0;
    _gvprintf($13, 104272, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $16, tempInt) | 0);
    label = 21;
    break;
   case 21:
    _gvprintf($13, 103824, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    label = 22;
    break;
   case 22:
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_vrml($job, $us, $b, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var $tobool = 0, $obj1 = 0, $0 = 0, $tobool2 = 0, $tobool6 = 0, $name = 0, $1 = 0, $tobool10 = 0, $u = 0, $n15 = 0, $2 = 0, $tobool16 = 0, $3 = 0, $4 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($job | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(107776, 114, 164440, 107304);
   case 4:
    $obj1 = $job + 16 | 0;
    $0 = HEAP32[$obj1 >> 2] | 0;
    $tobool2 = ($0 | 0) == 0;
    if ($tobool2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(107776, 116, 164440, 103408);
   case 6:
    $tobool6 = ($us | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    ___assert_func(107776, 117, 164440, 106968);
   case 8:
    $name = $us + 8 | 0;
    $1 = HEAP32[$name >> 2] | 0;
    $tobool10 = ($1 | 0) == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    ___assert_func(107776, 118, 164440, 106576);
   case 10:
    $u = $0 + 8 | 0;
    $n15 = $u;
    $2 = HEAP32[$n15 >> 2] | 0;
    $tobool16 = ($2 | 0) == 0;
    if ($tobool16) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    ___assert_func(107776, 121, 164440, 103040);
   case 12:
    $3 = $job;
    _gvprintf($3, 102696, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($3, 102320, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($3, 101848, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($3, 101472, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($3, 100904, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($3, 100568, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    $4 = HEAP32[$name >> 2] | 0;
    _gvprintf($3, 100056, (tempInt = STACKTOP, STACKTOP = STACKTOP + 8 | 0, HEAP32[tempInt >> 2] = $4, tempInt) | 0);
    _gvprintf($3, 99656, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    _gvprintf($3, 99232, (tempInt = STACKTOP, STACKTOP = STACKTOP + 1 | 0, STACKTOP = STACKTOP + 7 >> 3 << 3, HEAP32[tempInt >> 2] = 0, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_fig($job, $us, $bf, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $bf = $bf | 0;
  $filled = $filled | 0;
  var $tobool = 0, $tobool1 = 0, $name = 0, $0 = 0, $tobool5 = 0, $x = 0, $1 = 0.0, $cmp = 0, $add = 0.0, $sub = 0.0, $add_sink = 0.0, $conv = 0, $y = 0, $2 = 0.0, $cmp20 = 0, $add25 = 0.0, $sub30 = 0.0, $add25_sink = 0.0, $conv26 = 0, $x36 = 0, $3 = 0.0, $cmp37 = 0, $add42 = 0.0, $sub47 = 0.0, $add42_sink = 0.0, $conv43 = 0, $y54 = 0, $4 = 0.0, $cmp55 = 0, $add60 = 0.0, $sub65 = 0.0, $add60_sink = 0.0, $conv61 = 0, $5 = 0, $6 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $bf;
  $bf = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($bf, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($job | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(107776, 90, 164536, 107304);
   case 4:
    $tobool1 = ($us | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(107776, 91, 164536, 106968);
   case 6:
    $name = $us + 8 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool5 = ($0 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    ___assert_func(107776, 92, 164536, 106576);
   case 8:
    $x = $bf | 0;
    $1 = +HEAPF64[$x >> 3];
    $cmp = $1 < 0.0;
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add = $1 + .5;
    $add_sink = $add;
    label = 11;
    break;
   case 10:
    $sub = $1 + -.5;
    $add_sink = $sub;
    label = 11;
    break;
   case 11:
    $conv = ~~$add_sink;
    $y = $bf + 8 | 0;
    $2 = +HEAPF64[$y >> 3];
    $cmp20 = $2 < 0.0;
    if ($cmp20) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add25 = $2 + .5;
    $add25_sink = $add25;
    label = 14;
    break;
   case 13:
    $sub30 = $2 + -.5;
    $add25_sink = $sub30;
    label = 14;
    break;
   case 14:
    $conv26 = ~~$add25_sink;
    $x36 = $bf + 16 | 0;
    $3 = +HEAPF64[$x36 >> 3];
    $cmp37 = $3 < 0.0;
    if ($cmp37) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add42 = $3 + .5;
    $add42_sink = $add42;
    label = 17;
    break;
   case 16:
    $sub47 = $3 + -.5;
    $add42_sink = $sub47;
    label = 17;
    break;
   case 17:
    $conv43 = ~~$add42_sink;
    $y54 = $bf + 24 | 0;
    $4 = +HEAPF64[$y54 >> 3];
    $cmp55 = $4 < 0.0;
    if ($cmp55) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $add60 = $4 + .5;
    $add60_sink = $add60;
    label = 20;
    break;
   case 19:
    $sub65 = $4 + -.5;
    $add60_sink = $sub65;
    label = 20;
    break;
   case 20:
    $conv61 = ~~$add60_sink;
    $5 = HEAP32[$name >> 2] | 0;
    $6 = $job;
    _gvprintf($6, 98816, (tempInt = STACKTOP, STACKTOP = STACKTOP + 144 | 0, HEAP32[tempInt >> 2] = 2, HEAP32[tempInt + 8 >> 2] = 5, HEAP32[tempInt + 16 >> 2] = 0, HEAP32[tempInt + 24 >> 2] = 0, HEAP32[tempInt + 32 >> 2] = 0, HEAP32[tempInt + 40 >> 2] = -1, HEAP32[tempInt + 48 >> 2] = 1, HEAP32[tempInt + 56 >> 2] = -1, HEAP32[tempInt + 64 >> 2] = 0, HEAPF64[tempInt + 72 >> 3] = 0.0, HEAP32[tempInt + 80 >> 2] = 0, HEAP32[tempInt + 88 >> 2] = 0, HEAP32[tempInt + 96 >> 2] = 0, HEAP32[tempInt + 104 >> 2] = 0, HEAP32[tempInt + 112 >> 2] = 0, HEAP32[tempInt + 120 >> 2] = 5, HEAP32[tempInt + 128 >> 2] = 0, HEAP32[tempInt + 136 >> 2] = $5, tempInt) | 0);
    _gvprintf($6, 98424, (tempInt = STACKTOP, STACKTOP = STACKTOP + 80 | 0, HEAP32[tempInt >> 2] = $conv, HEAP32[tempInt + 8 >> 2] = $conv26, HEAP32[tempInt + 16 >> 2] = $conv, HEAP32[tempInt + 24 >> 2] = $conv61, HEAP32[tempInt + 32 >> 2] = $conv43, HEAP32[tempInt + 40 >> 2] = $conv61, HEAP32[tempInt + 48 >> 2] = $conv43, HEAP32[tempInt + 56 >> 2] = $conv26, HEAP32[tempInt + 64 >> 2] = $conv, HEAP32[tempInt + 72 >> 2] = $conv26, tempInt) | 0);
    STACKTOP = __stackBase__;
    return;
  }
}
function _core_loadimage_svg($job, $us, $b, $filled) {
  $job = $job | 0;
  $us = $us | 0;
  $b = $b | 0;
  $filled = $filled | 0;
  var $tobool = 0, $tobool1 = 0, $name = 0, $0 = 0, $tobool5 = 0, $1 = 0, $call = 0, $2 = 0, $call10 = 0, $rotation = 0, $3 = 0, $tobool11 = 0, $UR = 0, $y = 0, $4 = 0.0, $y12 = 0, $5 = 0.0, $sub = 0.0, $x = 0, $6 = 0.0, $x15 = 0, $7 = 0.0, $sub16 = 0.0, $8 = 0, $9 = 0.0, $10 = 0.0, $x27 = 0, $11 = 0.0, $x29 = 0, $12 = 0.0, $sub30 = 0.0, $y32 = 0, $13 = 0.0, $y34 = 0, $14 = 0.0, $sub35 = 0.0, $sub40 = 0.0, $call41 = 0, label = 0, tempParam = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  tempParam = $b;
  $b = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  _memcpy($b, tempParam, 32);
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($job | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    ___assert_func(107776, 49, 164464, 107304);
   case 4:
    $tobool1 = ($us | 0) == 0;
    if ($tobool1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    ___assert_func(107776, 50, 164464, 106968);
   case 6:
    $name = $us + 8 | 0;
    $0 = HEAP32[$name >> 2] | 0;
    $tobool5 = ($0 | 0) == 0;
    if ($tobool5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    ___assert_func(107776, 51, 164464, 106576);
   case 8:
    $1 = $job;
    $call = _gvputs($1, 98032) | 0;
    $2 = HEAP32[$name >> 2] | 0;
    $call10 = _gvputs($1, $2) | 0;
    $rotation = $job + 360 | 0;
    $3 = HEAP32[$rotation >> 2] | 0;
    $tobool11 = ($3 | 0) == 0;
    $UR = $b + 16 | 0;
    if ($tobool11) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $y = $b + 24 | 0;
    $4 = +HEAPF64[$y >> 3];
    $y12 = $b + 8 | 0;
    $5 = +HEAPF64[$y12 >> 3];
    $sub = $4 - $5;
    $x = $UR | 0;
    $6 = +HEAPF64[$x >> 3];
    $x15 = $b | 0;
    $7 = +HEAPF64[$x15 >> 3];
    $sub16 = $6 - $7;
    _gvprintf($1, 97568, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $sub, HEAPF64[tempInt + 8 >> 3] = $sub16, HEAPF64[tempInt + 16 >> 3] = $7, HEAPF64[tempInt + 24 >> 3] = $4, tempInt) | 0);
    $8 = HEAP32[$rotation >> 2] | 0;
    $9 = +HEAPF64[$x15 >> 3];
    $10 = +HEAPF64[$y >> 3];
    _gvprintf($1, 97200, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, HEAP32[tempInt >> 2] = $8, HEAPF64[tempInt + 8 >> 3] = $9, HEAPF64[tempInt + 16 >> 3] = $10, tempInt) | 0);
    label = 11;
    break;
   case 10:
    $x27 = $UR | 0;
    $11 = +HEAPF64[$x27 >> 3];
    $x29 = $b | 0;
    $12 = +HEAPF64[$x29 >> 3];
    $sub30 = $11 - $12;
    $y32 = $b + 24 | 0;
    $13 = +HEAPF64[$y32 >> 3];
    $y34 = $b + 8 | 0;
    $14 = +HEAPF64[$y34 >> 3];
    $sub35 = $13 - $14;
    $sub40 = -0.0 - $13;
    _gvprintf($1, 96792, (tempInt = STACKTOP, STACKTOP = STACKTOP + 32 | 0, HEAPF64[tempInt >> 3] = $sub30, HEAPF64[tempInt + 8 >> 3] = $sub35, HEAPF64[tempInt + 16 >> 3] = $12, HEAPF64[tempInt + 24 >> 3] = $sub40, tempInt) | 0);
    label = 11;
    break;
   case 11:
    $call41 = _gvputs($1, 96360) | 0;
    STACKTOP = __stackBase__;
    return;
  }
}
function _XML_SetElementHandler($parser, $start, $end) {
  $parser = $parser | 0;
  $start = $start | 0;
  $end = $end | 0;
  HEAP32[$parser + 52 >> 2] = $start;
  HEAP32[$parser + 56 >> 2] = $end;
  return;
}
function _XML_SetCharacterDataHandler($parser, $handler) {
  $parser = $parser | 0;
  $handler = $handler | 0;
  HEAP32[$parser + 60 >> 2] = $handler;
  return;
}
function _errorProcessor($parser, $s, $end, $nextPtr) {
  $parser = $parser | 0;
  $s = $s | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  return HEAP32[$parser + 268 >> 2] | 0;
}
function _setContext($parser, $context) {
  $parser = $parser | 0;
  $context = $context | 0;
  var $m_dtd = 0, $0 = 0, $1 = 0, $cmp6467 = 0, $m_tempPool34 = 0, $ptr35 = 0, $end145 = 0, $start37 = 0, $defaultPrefix = 0, $end92 = 0, $m_inheritedBindings = 0, $end45 = 0, $prefixes = 0, $pool = 0, $ptr = 0, $end = 0, $m_tempPool = 0, $generalEntities = 0, $start = 0, $s_0_ph69 = 0, $s_065 = 0, $2 = 0, $3 = 0, $4 = 0, $cmp9 = 0, $call = 0, $tobool = 0, $5 = 0, $incdec_ptr = 0, $6 = 0, $call16 = 0, $tobool17 = 0, $open = 0, $7 = 0, $8 = 0, $cmp21 = 0, $incdec_ptr24 = 0, $s_0_incdec_ptr24 = 0, $9 = 0, $context_addr_0_ph_be = 0, $10 = 0, $cmp64 = 0, $cmp31 = 0, $11 = 0, $12 = 0, $cmp38 = 0, $13 = 0, $cmp46 = 0, $call50 = 0, $tobool51 = 0, $14 = 0, $incdec_ptr56 = 0, $15 = 0, $call61 = 0, $16 = 0, $tobool62 = 0, $name = 0, $17 = 0, $18 = 0, $cmp67 = 0, $call71 = 0, $tobool74 = 0, $19 = 0, $prefix_0 = 0, $s_0_pn = 0, $context_addr_1 = 0, $20 = 0, $21 = 0, $22 = 0, $cmp93 = 0, $call97 = 0, $tobool98 = 0, $23 = 0, $24 = 0, $incdec_ptr103 = 0, $call115 = 0, $tobool116 = 0, $25 = 0, $incdec_ptr121 = 0, $26 = 0, $call126 = 0, $cmp127 = 0, $27 = 0, $28 = 0, $cmp136 = 0, $incdec_ptr139 = 0, $context_addr_1_incdec_ptr139 = 0, $29 = 0, $cmp146 = 0, $call150 = 0, $tobool151 = 0, $30 = 0, $31 = 0, $incdec_ptr156 = 0, $incdec_ptr159 = 0, $32 = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $1 = HEAP8[$context] | 0;
    $cmp6467 = $1 << 24 >> 24 == 0;
    if ($cmp6467) {
      $retval_0 = 1;
      label = 32;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $m_tempPool34 = $parser + 400 | 0;
    $ptr35 = $parser + 412 | 0;
    $end145 = $parser + 408 | 0;
    $start37 = $parser + 416 | 0;
    $defaultPrefix = $0 + 132 | 0;
    $end92 = $parser + 408 | 0;
    $m_inheritedBindings = $parser + 356 | 0;
    $end45 = $parser + 408 | 0;
    $prefixes = $0 + 60 | 0;
    $pool = $0 + 80 | 0;
    $ptr = $parser + 412 | 0;
    $end = $parser + 408 | 0;
    $m_tempPool = $parser + 400 | 0;
    $generalEntities = $0 | 0;
    $start = $parser + 416 | 0;
    $s_0_ph69 = $context;
    label = 4;
    break;
   case 4:
    $s_065 = $s_0_ph69;
    label = 5;
    break;
   case 5:
    $2 = HEAP8[$s_065] | 0;
    if (($2 << 24 >> 24 | 0) == 12 | ($2 << 24 >> 24 | 0) == 0) {
      label = 6;
      break;
    } else {
      label = 12;
      break;
    }
   case 6:
    $3 = HEAP32[$ptr >> 2] | 0;
    $4 = HEAP32[$end >> 2] | 0;
    $cmp9 = ($3 | 0) == ($4 | 0);
    if ($cmp9) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call = _poolGrow($m_tempPool) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $5 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $5 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$5] = 0;
    $6 = HEAP32[$start >> 2] | 0;
    $call16 = _lookup($parser, $generalEntities, $6, 0) | 0;
    $tobool17 = ($call16 | 0) == 0;
    if ($tobool17) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $open = $call16 + 32 | 0;
    $7 = $open;
    HEAP8[$7] = 1;
    label = 10;
    break;
   case 10:
    $8 = HEAP8[$s_065] | 0;
    $cmp21 = $8 << 24 >> 24 == 0;
    $incdec_ptr24 = $s_065 + 1 | 0;
    $s_0_incdec_ptr24 = $cmp21 ? $s_065 : $incdec_ptr24;
    $9 = HEAP32[$start >> 2] | 0;
    HEAP32[$ptr >> 2] = $9;
    $context_addr_0_ph_be = $s_0_incdec_ptr24;
    label = 11;
    break;
   case 11:
    $10 = HEAP8[$context_addr_0_ph_be] | 0;
    $cmp64 = $10 << 24 >> 24 == 0;
    if ($cmp64) {
      $retval_0 = 1;
      label = 32;
      break;
    } else {
      $s_0_ph69 = $context_addr_0_ph_be;
      label = 4;
      break;
    }
   case 12:
    $cmp31 = $2 << 24 >> 24 == 61;
    $11 = HEAP32[$ptr35 >> 2] | 0;
    if ($cmp31) {
      label = 13;
      break;
    } else {
      label = 29;
      break;
    }
   case 13:
    $12 = HEAP32[$start37 >> 2] | 0;
    $cmp38 = ($11 | 0) == ($12 | 0);
    if ($cmp38) {
      $prefix_0 = $defaultPrefix;
      label = 20;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $13 = HEAP32[$end45 >> 2] | 0;
    $cmp46 = ($11 | 0) == ($13 | 0);
    if ($cmp46) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $call50 = _poolGrow($m_tempPool34) | 0;
    $tobool51 = $call50 << 24 >> 24 == 0;
    if ($tobool51) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $14 = HEAP32[$ptr35 >> 2] | 0;
    $incdec_ptr56 = $14 + 1 | 0;
    HEAP32[$ptr35 >> 2] = $incdec_ptr56;
    HEAP8[$14] = 0;
    $15 = HEAP32[$start37 >> 2] | 0;
    $call61 = _lookup($parser, $prefixes, $15, 8) | 0;
    $16 = $call61;
    $tobool62 = ($call61 | 0) == 0;
    if ($tobool62) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $name = $call61 | 0;
    $17 = HEAP32[$name >> 2] | 0;
    $18 = HEAP32[$start37 >> 2] | 0;
    $cmp67 = ($17 | 0) == ($18 | 0);
    if ($cmp67) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $call71 = _poolCopyString($pool, $17) | 0;
    HEAP32[$name >> 2] = $call71;
    $tobool74 = ($call71 | 0) == 0;
    if ($tobool74) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $19 = HEAP32[$start37 >> 2] | 0;
    HEAP32[$ptr35 >> 2] = $19;
    $prefix_0 = $16;
    label = 20;
    break;
   case 20:
    $s_0_pn = $s_065;
    label = 21;
    break;
   case 21:
    $context_addr_1 = $s_0_pn + 1 | 0;
    $20 = HEAP8[$context_addr_1] | 0;
    $21 = HEAP32[$ptr35 >> 2] | 0;
    $22 = HEAP32[$end92 >> 2] | 0;
    $cmp93 = ($21 | 0) == ($22 | 0);
    if (($20 << 24 >> 24 | 0) == 12 | ($20 << 24 >> 24 | 0) == 0) {
      label = 25;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    if ($cmp93) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $call97 = _poolGrow($m_tempPool34) | 0;
    $tobool98 = $call97 << 24 >> 24 == 0;
    if ($tobool98) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $23 = HEAP8[$context_addr_1] | 0;
    $24 = HEAP32[$ptr35 >> 2] | 0;
    $incdec_ptr103 = $24 + 1 | 0;
    HEAP32[$ptr35 >> 2] = $incdec_ptr103;
    HEAP8[$24] = $23;
    $s_0_pn = $context_addr_1;
    label = 21;
    break;
   case 25:
    if ($cmp93) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $call115 = _poolGrow($m_tempPool34) | 0;
    $tobool116 = $call115 << 24 >> 24 == 0;
    if ($tobool116) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $25 = HEAP32[$ptr35 >> 2] | 0;
    $incdec_ptr121 = $25 + 1 | 0;
    HEAP32[$ptr35 >> 2] = $incdec_ptr121;
    HEAP8[$25] = 0;
    $26 = HEAP32[$start37 >> 2] | 0;
    $call126 = _addBinding($parser, $prefix_0, 0, $26, $m_inheritedBindings) | 0;
    $cmp127 = ($call126 | 0) == 0;
    if ($cmp127) {
      label = 28;
      break;
    } else {
      $retval_0 = 0;
      label = 32;
      break;
    }
   case 28:
    $27 = HEAP32[$start37 >> 2] | 0;
    HEAP32[$ptr35 >> 2] = $27;
    $28 = HEAP8[$context_addr_1] | 0;
    $cmp136 = $28 << 24 >> 24 == 0;
    $incdec_ptr139 = $s_0_pn + 2 | 0;
    $context_addr_1_incdec_ptr139 = $cmp136 ? $context_addr_1 : $incdec_ptr139;
    $context_addr_0_ph_be = $context_addr_1_incdec_ptr139;
    label = 11;
    break;
   case 29:
    $29 = HEAP32[$end145 >> 2] | 0;
    $cmp146 = ($11 | 0) == ($29 | 0);
    if ($cmp146) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $call150 = _poolGrow($m_tempPool34) | 0;
    $tobool151 = $call150 << 24 >> 24 == 0;
    if ($tobool151) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $30 = HEAP8[$s_065] | 0;
    $31 = HEAP32[$ptr35 >> 2] | 0;
    $incdec_ptr156 = $31 + 1 | 0;
    HEAP32[$ptr35 >> 2] = $incdec_ptr156;
    HEAP8[$31] = $30;
    $incdec_ptr159 = $s_065 + 1 | 0;
    $32 = HEAP8[$s_0_ph69] | 0;
    $cmp = $32 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = 1;
      label = 32;
      break;
    } else {
      $s_065 = $incdec_ptr159;
      label = 5;
      break;
    }
   case 32:
    return $retval_0 | 0;
  }
  return 0;
}
function _XML_ParserFree($parser) {
  $parser = $parser | 0;
  var $cmp = 0, $m_tagStack = 0, $0 = 0, $m_freeTagList = 0, $free_fcn = 0, $tagList_0 = 0, $cmp1 = 0, $1 = 0, $cmp3 = 0, $tagList_1 = 0, $parent = 0, $2 = 0, $3 = 0, $buf = 0, $4 = 0, $bindings = 0, $5 = 0, $6 = 0, $7 = 0, $m_openInternalEntities = 0, $8 = 0, $m_freeInternalEntities = 0, $free_fcn21 = 0, $entityList_0 = 0, $cmp12 = 0, $9 = 0, $cmp14 = 0, $entityList_1 = 0, $next = 0, $10 = 0, $11 = 0, $12 = 0, $m_freeBindingList = 0, $13 = 0, $m_inheritedBindings = 0, $14 = 0, $m_tempPool = 0, $m_temp2Pool = 0, $m_dtd = 0, $15 = 0, $tobool = 0, $m_parentParser = 0, $16 = 0, $lnot = 0, $conv = 0, $m_mem26 = 0, $free_fcn29 = 0, $17 = 0, $m_atts = 0, $18 = 0, $19 = 0, $20 = 0, $m_groupConnector = 0, $21 = 0, $22 = 0, $m_buffer = 0, $23 = 0, $24 = 0, $m_dataBuf = 0, $25 = 0, $26 = 0, $m_nsAtts = 0, $27 = 0, $28 = 0, $29 = 0, $m_unknownEncodingMem = 0, $30 = 0, $m_unknownEncodingRelease = 0, $31 = 0, $tobool40 = 0, $m_unknownEncodingData = 0, $32 = 0, $33 = 0, $34 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($parser | 0) == 0;
    if ($cmp) {
      label = 18;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $m_tagStack = $parser + 348 | 0;
    $0 = HEAP32[$m_tagStack >> 2] | 0;
    $m_freeTagList = $parser + 352 | 0;
    $free_fcn = $parser + 20 | 0;
    $tagList_0 = $0;
    label = 4;
    break;
   case 4:
    $cmp1 = ($tagList_0 | 0) == 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $tagList_1 = $tagList_0;
      label = 7;
      break;
    }
   case 5:
    $1 = HEAP32[$m_freeTagList >> 2] | 0;
    $cmp3 = ($1 | 0) == 0;
    if ($cmp3) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    HEAP32[$m_freeTagList >> 2] = 0;
    $tagList_1 = $1;
    label = 7;
    break;
   case 7:
    $parent = $tagList_1 | 0;
    $2 = HEAP32[$parent >> 2] | 0;
    $3 = HEAP32[$free_fcn >> 2] | 0;
    $buf = $tagList_1 + 36 | 0;
    $4 = HEAP32[$buf >> 2] | 0;
    FUNCTION_TABLE_vi[$3 & 1023]($4);
    $bindings = $tagList_1 + 44 | 0;
    $5 = HEAP32[$bindings >> 2] | 0;
    _destroyBindings($5, $parser);
    $6 = HEAP32[$free_fcn >> 2] | 0;
    $7 = $tagList_1;
    FUNCTION_TABLE_vi[$6 & 1023]($7);
    $tagList_0 = $2;
    label = 4;
    break;
   case 8:
    $m_openInternalEntities = $parser + 284 | 0;
    $8 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $m_freeInternalEntities = $parser + 288 | 0;
    $free_fcn21 = $parser + 20 | 0;
    $entityList_0 = $8;
    label = 9;
    break;
   case 9:
    $cmp12 = ($entityList_0 | 0) == 0;
    if ($cmp12) {
      label = 10;
      break;
    } else {
      $entityList_1 = $entityList_0;
      label = 12;
      break;
    }
   case 10:
    $9 = HEAP32[$m_freeInternalEntities >> 2] | 0;
    $cmp14 = ($9 | 0) == 0;
    if ($cmp14) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    HEAP32[$m_freeInternalEntities >> 2] = 0;
    $entityList_1 = $9;
    label = 12;
    break;
   case 12:
    $next = $entityList_1 + 8 | 0;
    $10 = HEAP32[$next >> 2] | 0;
    $11 = HEAP32[$free_fcn21 >> 2] | 0;
    $12 = $entityList_1;
    FUNCTION_TABLE_vi[$11 & 1023]($12);
    $entityList_0 = $10;
    label = 9;
    break;
   case 13:
    $m_freeBindingList = $parser + 360 | 0;
    $13 = HEAP32[$m_freeBindingList >> 2] | 0;
    _destroyBindings($13, $parser);
    $m_inheritedBindings = $parser + 356 | 0;
    $14 = HEAP32[$m_inheritedBindings >> 2] | 0;
    _destroyBindings($14, $parser);
    $m_tempPool = $parser + 400 | 0;
    _poolDestroy($m_tempPool);
    $m_temp2Pool = $parser + 424 | 0;
    _poolDestroy($m_temp2Pool);
    $m_dtd = $parser + 340 | 0;
    $15 = HEAP32[$m_dtd >> 2] | 0;
    $tobool = ($15 | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $m_parentParser = $parser + 460 | 0;
    $16 = HEAP32[$m_parentParser >> 2] | 0;
    $lnot = ($16 | 0) == 0;
    $conv = $lnot & 1;
    $m_mem26 = $parser + 12 | 0;
    _dtdDestroy($15, $conv, $m_mem26);
    label = 15;
    break;
   case 15:
    $free_fcn29 = $parser + 20 | 0;
    $17 = HEAP32[$free_fcn29 >> 2] | 0;
    $m_atts = $parser + 376 | 0;
    $18 = HEAP32[$m_atts >> 2] | 0;
    $19 = $18;
    FUNCTION_TABLE_vi[$17 & 1023]($19);
    $20 = HEAP32[$free_fcn29 >> 2] | 0;
    $m_groupConnector = $parser + 448 | 0;
    $21 = HEAP32[$m_groupConnector >> 2] | 0;
    FUNCTION_TABLE_vi[$20 & 1023]($21);
    $22 = HEAP32[$free_fcn29 >> 2] | 0;
    $m_buffer = $parser + 8 | 0;
    $23 = HEAP32[$m_buffer >> 2] | 0;
    FUNCTION_TABLE_vi[$22 & 1023]($23);
    $24 = HEAP32[$free_fcn29 >> 2] | 0;
    $m_dataBuf = $parser + 44 | 0;
    $25 = HEAP32[$m_dataBuf >> 2] | 0;
    FUNCTION_TABLE_vi[$24 & 1023]($25);
    $26 = HEAP32[$free_fcn29 >> 2] | 0;
    $m_nsAtts = $parser + 380 | 0;
    $27 = HEAP32[$m_nsAtts >> 2] | 0;
    $28 = $27;
    FUNCTION_TABLE_vi[$26 & 1023]($28);
    $29 = HEAP32[$free_fcn29 >> 2] | 0;
    $m_unknownEncodingMem = $parser + 236 | 0;
    $30 = HEAP32[$m_unknownEncodingMem >> 2] | 0;
    FUNCTION_TABLE_vi[$29 & 1023]($30);
    $m_unknownEncodingRelease = $parser + 248 | 0;
    $31 = HEAP32[$m_unknownEncodingRelease >> 2] | 0;
    $tobool40 = ($31 | 0) == 0;
    if ($tobool40) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $m_unknownEncodingData = $parser + 240 | 0;
    $32 = HEAP32[$m_unknownEncodingData >> 2] | 0;
    FUNCTION_TABLE_vi[$31 & 1023]($32);
    label = 17;
    break;
   case 17:
    $33 = HEAP32[$free_fcn29 >> 2] | 0;
    $34 = $parser;
    FUNCTION_TABLE_vi[$33 & 1023]($34);
    label = 18;
    break;
   case 18:
    return;
  }
}
function _destroyBindings($bindings, $parser) {
  $bindings = $bindings | 0;
  $parser = $parser | 0;
  var $tobool5 = 0, $free_fcn = 0, $bindings_addr_06 = 0, $nextTagBinding = 0, $0 = 0, $1 = 0, $uri = 0, $2 = 0, $3 = 0, $4 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool5 = ($bindings | 0) == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $free_fcn = $parser + 20 | 0;
    $bindings_addr_06 = $bindings;
    label = 4;
    break;
   case 4:
    $nextTagBinding = $bindings_addr_06 + 4 | 0;
    $0 = HEAP32[$nextTagBinding >> 2] | 0;
    $1 = HEAP32[$free_fcn >> 2] | 0;
    $uri = $bindings_addr_06 + 16 | 0;
    $2 = HEAP32[$uri >> 2] | 0;
    FUNCTION_TABLE_vi[$1 & 1023]($2);
    $3 = HEAP32[$free_fcn >> 2] | 0;
    $4 = $bindings_addr_06;
    FUNCTION_TABLE_vi[$3 & 1023]($4);
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $bindings_addr_06 = $0;
      label = 4;
      break;
    }
   case 5:
    return;
  }
}
function _poolDestroy($pool) {
  $pool = $pool | 0;
  var $blocks = 0, $0 = 0, $tobool11 = 0, $mem = 0, $p_012 = 0, $next = 0, $1 = 0, $2 = 0, $free_fcn = 0, $3 = 0, $4 = 0, $tobool = 0, $freeBlocks = 0, $5 = 0, $tobool29 = 0, $mem6 = 0, $p_110 = 0, $next5 = 0, $6 = 0, $7 = 0, $free_fcn7 = 0, $8 = 0, $9 = 0, $tobool2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $blocks = $pool | 0;
    $0 = HEAP32[$blocks >> 2] | 0;
    $tobool11 = ($0 | 0) == 0;
    if ($tobool11) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $mem = $pool + 20 | 0;
    $p_012 = $0;
    label = 4;
    break;
   case 4:
    $next = $p_012 | 0;
    $1 = HEAP32[$next >> 2] | 0;
    $2 = HEAP32[$mem >> 2] | 0;
    $free_fcn = $2 + 8 | 0;
    $3 = HEAP32[$free_fcn >> 2] | 0;
    $4 = $p_012;
    FUNCTION_TABLE_vi[$3 & 1023]($4);
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $p_012 = $1;
      label = 4;
      break;
    }
   case 5:
    $freeBlocks = $pool + 4 | 0;
    $5 = HEAP32[$freeBlocks >> 2] | 0;
    $tobool29 = ($5 | 0) == 0;
    if ($tobool29) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $mem6 = $pool + 20 | 0;
    $p_110 = $5;
    label = 7;
    break;
   case 7:
    $next5 = $p_110 | 0;
    $6 = HEAP32[$next5 >> 2] | 0;
    $7 = HEAP32[$mem6 >> 2] | 0;
    $free_fcn7 = $7 + 8 | 0;
    $8 = HEAP32[$free_fcn7 >> 2] | 0;
    $9 = $p_110;
    FUNCTION_TABLE_vi[$8 & 1023]($9);
    $tobool2 = ($6 | 0) == 0;
    if ($tobool2) {
      label = 8;
      break;
    } else {
      $p_110 = $6;
      label = 7;
      break;
    }
   case 8:
    return;
  }
}
function _dtdDestroy($p, $isDocEntity, $ms) {
  $p = $p | 0;
  $isDocEntity = $isDocEntity | 0;
  $ms = $ms | 0;
  var $iter = 0, $elementTypes = 0, $call15 = 0, $tobool16 = 0, $free_fcn = 0, $call17 = 0, $allocDefaultAtts = 0, $0 = 0, $1 = 0, $cmp = 0, $2 = 0, $defaultAtts = 0, $3 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $generalEntities = 0, $attributeIds = 0, $prefixes = 0, $pool = 0, $entityValuePool = 0, $tobool4 = 0, $free_fcn6 = 0, $6 = 0, $scaffIndex = 0, $7 = 0, $8 = 0, $9 = 0, $scaffold = 0, $10 = 0, $11 = 0, $free_fcn9 = 0, $12 = 0, $13 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $iter = __stackBase__ | 0;
    $elementTypes = $p + 20 | 0;
    _hashTableIterInit($iter, $elementTypes);
    $call15 = _hashTableIterNext($iter) | 0;
    $tobool16 = ($call15 | 0) == 0;
    if ($tobool16) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $free_fcn = $ms + 8 | 0;
    $call17 = $call15;
    label = 4;
    break;
   case 4:
    $allocDefaultAtts = $call17 + 16 | 0;
    $0 = $allocDefaultAtts;
    $1 = HEAP32[$0 >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP32[$free_fcn >> 2] | 0;
    $defaultAtts = $call17 + 20 | 0;
    $3 = $defaultAtts;
    $4 = HEAP32[$3 >> 2] | 0;
    $5 = $4;
    FUNCTION_TABLE_vi[$2 & 1023]($5);
    label = 6;
    break;
   case 6:
    $call = _hashTableIterNext($iter) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $call17 = $call;
      label = 4;
      break;
    }
   case 7:
    $generalEntities = $p | 0;
    _hashTableDestroy($generalEntities);
    _hashTableDestroy($elementTypes);
    $attributeIds = $p + 40 | 0;
    _hashTableDestroy($attributeIds);
    $prefixes = $p + 60 | 0;
    _hashTableDestroy($prefixes);
    $pool = $p + 80 | 0;
    _poolDestroy($pool);
    $entityValuePool = $p + 104 | 0;
    _poolDestroy($entityValuePool);
    $tobool4 = $isDocEntity << 24 >> 24 == 0;
    if ($tobool4) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $free_fcn6 = $ms + 8 | 0;
    $6 = HEAP32[$free_fcn6 >> 2] | 0;
    $scaffIndex = $p + 164 | 0;
    $7 = HEAP32[$scaffIndex >> 2] | 0;
    $8 = $7;
    FUNCTION_TABLE_vi[$6 & 1023]($8);
    $9 = HEAP32[$free_fcn6 >> 2] | 0;
    $scaffold = $p + 144 | 0;
    $10 = HEAP32[$scaffold >> 2] | 0;
    $11 = $10;
    FUNCTION_TABLE_vi[$9 & 1023]($11);
    label = 9;
    break;
   case 9:
    $free_fcn9 = $ms + 8 | 0;
    $12 = HEAP32[$free_fcn9 >> 2] | 0;
    $13 = $p;
    FUNCTION_TABLE_vi[$12 & 1023]($13);
    STACKTOP = __stackBase__;
    return;
  }
}
function _XML_Parse($parser, $s, $len, $isFinal) {
  $parser = $parser | 0;
  $s = $s | 0;
  $len = $len | 0;
  $isFinal = $isFinal | 0;
  var $end = 0, $parsing = 0, $0 = 0, $m_errorCode = 0, $m_errorCode2 = 0, $m_parentParser = 0, $1 = 0, $cmp = 0, $call = 0, $tobool = 0, $m_errorCode4 = 0, $cmp7 = 0, $conv = 0, $finalBuffer = 0, $tobool10 = 0, $m_bufferPtr = 0, $2 = 0, $m_positionPtr = 0, $m_bufferEnd = 0, $3 = 0, $m_parseEndPtr = 0, $m_processor = 0, $4 = 0, $5 = 0, $call16 = 0, $m_errorCode17 = 0, $cmp19 = 0, $6 = 0, $m_encoding = 0, $7 = 0, $updatePosition = 0, $8 = 0, $9 = 0, $10 = 0, $m_position = 0, $11 = 0, $m_eventPtr = 0, $12 = 0, $m_eventEndPtr = 0, $m_bufferPtr36 = 0, $13 = 0, $m_bufferEnd37 = 0, $14 = 0, $cmp38 = 0, $m_parseEndByteIndex = 0, $15 = 0, $add = 0, $m_positionPtr41 = 0, $conv42 = 0, $finalBuffer44 = 0, $m_processor45 = 0, $16 = 0, $add_ptr = 0, $m_parseEndPtr46 = 0, $call47 = 0, $m_errorCode48 = 0, $cmp50 = 0, $m_eventPtr53 = 0, $17 = 0, $m_eventEndPtr54 = 0, $18 = 0, $tobool61 = 0, $result_0 = 0, $m_encoding69 = 0, $19 = 0, $updatePosition70 = 0, $20 = 0, $21 = 0, $22 = 0, $m_position73 = 0, $23 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $tobool75 = 0, $m_buffer = 0, $24 = 0, $cmp77 = 0, $m_bufferLim = 0, $25 = 0, $sub_ptr_lhs_cast80 = 0, $sub_ptr_rhs_cast81 = 0, $sub_ptr_sub82 = 0, $cmp83 = 0, $_pr = 0, $cmp87 = 0, $malloc_fcn = 0, $26 = 0, $mul = 0, $call89 = 0, $realloc_fcn = 0, $27 = 0, $mul92 = 0, $call93 = 0, $cond = 0, $cmp94 = 0, $m_eventEndPtr98 = 0, $m_eventPtr99 = 0, $mul104 = 0, $add_ptr105 = 0, $m_bufferLim106 = 0, $28 = 0, $29 = 0, $m_buffer110 = 0, $30 = 0, $31 = 0, $add_ptr113 = 0, $32 = 0, $33 = 0, $34 = 0, $m_eventPtr120 = 0, $35 = 0, $m_eventEndPtr122 = 0, $call124 = 0, $cmp125 = 0, $call129 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $end = __stackBase__ | 0;
    $parsing = $parser + 464 | 0;
    $0 = HEAP32[$parsing >> 2] | 0;
    if (($0 | 0) == 3) {
      label = 3;
      break;
    } else if (($0 | 0) == 2) {
      label = 4;
      break;
    } else if (($0 | 0) == 0) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $m_errorCode = $parser + 268 | 0;
    HEAP32[$m_errorCode >> 2] = 33;
    $retval_0 = 0;
    label = 35;
    break;
   case 4:
    $m_errorCode2 = $parser + 268 | 0;
    HEAP32[$m_errorCode2 >> 2] = 36;
    $retval_0 = 0;
    label = 35;
    break;
   case 5:
    $m_parentParser = $parser + 460 | 0;
    $1 = HEAP32[$m_parentParser >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $call = _startParsing($parser) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $m_errorCode4 = $parser + 268 | 0;
    HEAP32[$m_errorCode4 >> 2] = 1;
    $retval_0 = 0;
    label = 35;
    break;
   case 8:
    HEAP32[$parsing >> 2] = 1;
    $cmp7 = ($len | 0) == 0;
    if ($cmp7) {
      label = 9;
      break;
    } else {
      label = 15;
      break;
    }
   case 9:
    $conv = $isFinal & 255;
    $finalBuffer = $parser + 468 | 0;
    HEAP8[$finalBuffer] = $conv;
    $tobool10 = ($isFinal | 0) == 0;
    if ($tobool10) {
      $retval_0 = 1;
      label = 35;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $m_bufferPtr = $parser + 24 | 0;
    $2 = HEAP32[$m_bufferPtr >> 2] | 0;
    $m_positionPtr = $parser + 280 | 0;
    HEAP32[$m_positionPtr >> 2] = $2;
    $m_bufferEnd = $parser + 28 | 0;
    $3 = HEAP32[$m_bufferEnd >> 2] | 0;
    $m_parseEndPtr = $parser + 40 | 0;
    HEAP32[$m_parseEndPtr >> 2] = $3;
    $m_processor = $parser + 264 | 0;
    $4 = HEAP32[$m_processor >> 2] | 0;
    $5 = HEAP32[$m_bufferPtr >> 2] | 0;
    $call16 = FUNCTION_TABLE_iiiii[$4 & 1023]($parser, $5, $3, $m_bufferPtr) | 0;
    $m_errorCode17 = $parser + 268 | 0;
    HEAP32[$m_errorCode17 >> 2] = $call16;
    $cmp19 = ($call16 | 0) == 0;
    if ($cmp19) {
      label = 11;
      break;
    } else {
      label = 14;
      break;
    }
   case 11:
    $6 = HEAP32[$parsing >> 2] | 0;
    if (($6 | 0) == 3) {
      label = 12;
      break;
    } else if (($6 | 0) == 0 | ($6 | 0) == 1) {
      label = 13;
      break;
    } else {
      $retval_0 = 1;
      label = 35;
      break;
    }
   case 12:
    $m_encoding = $parser + 144 | 0;
    $7 = HEAP32[$m_encoding >> 2] | 0;
    $updatePosition = $7 + 48 | 0;
    $8 = HEAP32[$updatePosition >> 2] | 0;
    $9 = HEAP32[$m_positionPtr >> 2] | 0;
    $10 = HEAP32[$m_bufferPtr >> 2] | 0;
    $m_position = $parser + 392 | 0;
    FUNCTION_TABLE_viiii[$8 & 1023]($7, $9, $10, $m_position);
    $11 = HEAP32[$m_bufferPtr >> 2] | 0;
    HEAP32[$m_positionPtr >> 2] = $11;
    $retval_0 = 2;
    label = 35;
    break;
   case 13:
    HEAP32[$parsing >> 2] = 2;
    $retval_0 = 1;
    label = 35;
    break;
   case 14:
    $m_eventPtr = $parser + 272 | 0;
    $12 = HEAP32[$m_eventPtr >> 2] | 0;
    $m_eventEndPtr = $parser + 276 | 0;
    HEAP32[$m_eventEndPtr >> 2] = $12;
    HEAP32[$m_processor >> 2] = 448;
    $retval_0 = 0;
    label = 35;
    break;
   case 15:
    $m_bufferPtr36 = $parser + 24 | 0;
    $13 = HEAP32[$m_bufferPtr36 >> 2] | 0;
    $m_bufferEnd37 = $parser + 28 | 0;
    $14 = HEAP32[$m_bufferEnd37 >> 2] | 0;
    $cmp38 = ($13 | 0) == ($14 | 0);
    if ($cmp38) {
      label = 16;
      break;
    } else {
      label = 33;
      break;
    }
   case 16:
    $m_parseEndByteIndex = $parser + 36 | 0;
    $15 = HEAP32[$m_parseEndByteIndex >> 2] | 0;
    $add = $15 + $len | 0;
    HEAP32[$m_parseEndByteIndex >> 2] = $add;
    $m_positionPtr41 = $parser + 280 | 0;
    HEAP32[$m_positionPtr41 >> 2] = $s;
    $conv42 = $isFinal & 255;
    $finalBuffer44 = $parser + 468 | 0;
    HEAP8[$finalBuffer44] = $conv42;
    $m_processor45 = $parser + 264 | 0;
    $16 = HEAP32[$m_processor45 >> 2] | 0;
    $add_ptr = $s + $len | 0;
    $m_parseEndPtr46 = $parser + 40 | 0;
    HEAP32[$m_parseEndPtr46 >> 2] = $add_ptr;
    $call47 = FUNCTION_TABLE_iiiii[$16 & 1023]($parser, $s, $add_ptr, $end) | 0;
    $m_errorCode48 = $parser + 268 | 0;
    HEAP32[$m_errorCode48 >> 2] = $call47;
    $cmp50 = ($call47 | 0) == 0;
    if ($cmp50) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $m_eventPtr53 = $parser + 272 | 0;
    $17 = HEAP32[$m_eventPtr53 >> 2] | 0;
    $m_eventEndPtr54 = $parser + 276 | 0;
    HEAP32[$m_eventEndPtr54 >> 2] = $17;
    HEAP32[$m_processor45 >> 2] = 448;
    $retval_0 = 0;
    label = 35;
    break;
   case 18:
    $18 = HEAP32[$parsing >> 2] | 0;
    if (($18 | 0) == 0 | ($18 | 0) == 1) {
      label = 19;
      break;
    } else if (($18 | 0) == 3) {
      $result_0 = 2;
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 19:
    $tobool61 = ($isFinal | 0) == 0;
    if ($tobool61) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    HEAP32[$parsing >> 2] = 2;
    $retval_0 = 1;
    label = 35;
    break;
   case 21:
    $result_0 = 1;
    label = 22;
    break;
   case 22:
    $m_encoding69 = $parser + 144 | 0;
    $19 = HEAP32[$m_encoding69 >> 2] | 0;
    $updatePosition70 = $19 + 48 | 0;
    $20 = HEAP32[$updatePosition70 >> 2] | 0;
    $21 = HEAP32[$m_positionPtr41 >> 2] | 0;
    $22 = HEAP32[$end >> 2] | 0;
    $m_position73 = $parser + 392 | 0;
    FUNCTION_TABLE_viiii[$20 & 1023]($19, $21, $22, $m_position73);
    $23 = HEAP32[$end >> 2] | 0;
    $sub_ptr_lhs_cast = $add_ptr;
    $sub_ptr_rhs_cast = $23;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $tobool75 = ($add_ptr | 0) == ($23 | 0);
    if ($tobool75) {
      label = 32;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $m_buffer = $parser + 8 | 0;
    $24 = HEAP32[$m_buffer >> 2] | 0;
    $cmp77 = ($24 | 0) == 0;
    if ($cmp77) {
      label = 26;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $m_bufferLim = $parser + 32 | 0;
    $25 = HEAP32[$m_bufferLim >> 2] | 0;
    $sub_ptr_lhs_cast80 = $25;
    $sub_ptr_rhs_cast81 = $24;
    $sub_ptr_sub82 = $sub_ptr_lhs_cast80 - $sub_ptr_rhs_cast81 | 0;
    $cmp83 = ($sub_ptr_sub | 0) > ($sub_ptr_sub82 | 0);
    if ($cmp83) {
      label = 25;
      break;
    } else {
      label = 31;
      break;
    }
   case 25:
    $_pr = HEAP32[$m_buffer >> 2] | 0;
    $cmp87 = ($_pr | 0) == 0;
    if ($cmp87) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $malloc_fcn = $parser + 12 | 0;
    $26 = HEAP32[$malloc_fcn >> 2] | 0;
    $mul = $len << 1;
    $call89 = FUNCTION_TABLE_ii[$26 & 1023]($mul) | 0;
    $cond = $call89;
    label = 28;
    break;
   case 27:
    $realloc_fcn = $parser + 16 | 0;
    $27 = HEAP32[$realloc_fcn >> 2] | 0;
    $mul92 = $len << 1;
    $call93 = FUNCTION_TABLE_iii[$27 & 1023]($_pr, $mul92) | 0;
    $cond = $call93;
    label = 28;
    break;
   case 28:
    $cmp94 = ($cond | 0) == 0;
    if ($cmp94) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    HEAP32[$m_errorCode48 >> 2] = 1;
    $m_eventEndPtr98 = $parser + 276 | 0;
    HEAP32[$m_eventEndPtr98 >> 2] = 0;
    $m_eventPtr99 = $parser + 272 | 0;
    HEAP32[$m_eventPtr99 >> 2] = 0;
    HEAP32[$m_processor45 >> 2] = 448;
    $retval_0 = 0;
    label = 35;
    break;
   case 30:
    HEAP32[$m_buffer >> 2] = $cond;
    $mul104 = $len << 1;
    $add_ptr105 = $cond + $mul104 | 0;
    $m_bufferLim106 = $parser + 32 | 0;
    HEAP32[$m_bufferLim106 >> 2] = $add_ptr105;
    label = 31;
    break;
   case 31:
    $28 = HEAP32[$m_buffer >> 2] | 0;
    $29 = HEAP32[$end >> 2] | 0;
    _memcpy($28 | 0, $29 | 0, $sub_ptr_sub);
    label = 32;
    break;
   case 32:
    $m_buffer110 = $parser + 8 | 0;
    $30 = HEAP32[$m_buffer110 >> 2] | 0;
    HEAP32[$m_bufferPtr36 >> 2] = $30;
    $31 = HEAP32[$m_buffer110 >> 2] | 0;
    $add_ptr113 = $31 + $sub_ptr_sub | 0;
    HEAP32[$m_bufferEnd37 >> 2] = $add_ptr113;
    $32 = HEAP32[$m_bufferPtr36 >> 2] | 0;
    HEAP32[$m_positionPtr41 >> 2] = $32;
    $33 = HEAP32[$m_bufferEnd37 >> 2] | 0;
    HEAP32[$m_parseEndPtr46 >> 2] = $33;
    $34 = HEAP32[$m_bufferPtr36 >> 2] | 0;
    $m_eventPtr120 = $parser + 272 | 0;
    HEAP32[$m_eventPtr120 >> 2] = $34;
    $35 = HEAP32[$m_bufferPtr36 >> 2] | 0;
    $m_eventEndPtr122 = $parser + 276 | 0;
    HEAP32[$m_eventEndPtr122 >> 2] = $35;
    $retval_0 = $result_0;
    label = 35;
    break;
   case 33:
    $call124 = _XML_GetBuffer($parser, $len) | 0;
    $cmp125 = ($call124 | 0) == 0;
    if ($cmp125) {
      $retval_0 = 0;
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    _memcpy($call124 | 0, $s | 0, $len);
    $call129 = _XML_ParseBuffer($parser, $len, $isFinal) | 0;
    $retval_0 = $call129;
    label = 35;
    break;
   case 35:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _startParsing($parser) {
  $parser = $parser | 0;
  var $m_hash_secret_salt = 0, $0 = 0, $cmp = 0, $call = 0, $m_ns = 0, $1 = 0, $tobool = 0, $call3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_hash_secret_salt = $parser + 472 | 0;
    $0 = HEAP32[$m_hash_secret_salt >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _generate_hash_secret_salt() | 0;
    HEAP32[$m_hash_secret_salt >> 2] = $call;
    label = 4;
    break;
   case 4:
    $m_ns = $parser + 232 | 0;
    $1 = HEAP8[$m_ns] | 0;
    $tobool = $1 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call3 = _setContext($parser, 12776) | 0;
    $retval_0 = $call3;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _XML_GetBuffer($parser, $len) {
  $parser = $parser | 0;
  $len = $len | 0;
  var $parsing = 0, $0 = 0, $m_errorCode = 0, $m_errorCode2 = 0, $m_bufferLim = 0, $1 = 0, $m_bufferEnd = 0, $2 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $m_bufferPtr = 0, $3 = 0, $sub_ptr_rhs_cast5 = 0, $sub_ptr_sub6 = 0, $add = 0, $m_buffer = 0, $4 = 0, $sub_ptr_rhs_cast9 = 0, $sub_ptr_sub10 = 0, $cmp11 = 0, $5 = 0, $6 = 0, $7 = 0, $sub_ptr_lhs_cast23 = 0, $sub_ptr_rhs_cast24 = 0, $sub_ptr_sub25 = 0, $add_ptr = 0, $8 = 0, $sub_ptr_sub33 = 0, $cmp34 = 0, $_sub_ptr_sub33 = 0, $bufferSize_0 = 0, $mul = 0, $cmp36 = 0, $malloc_fcn = 0, $9 = 0, $call = 0, $cmp37 = 0, $m_errorCode39 = 0, $add_ptr41 = 0, $10 = 0, $tobool = 0, $11 = 0, $sub_ptr_lhs_cast48 = 0, $sub_ptr_rhs_cast49 = 0, $sub_ptr_sub50 = 0, $free_fcn = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $sub_ptr_lhs_cast56 = 0, $sub_ptr_rhs_cast57 = 0, $sub_ptr_sub58 = 0, $add_ptr59 = 0, $storemerge = 0, $m_eventEndPtr = 0, $m_eventPtr = 0, $m_positionPtr = 0, $16 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $parsing = $parser + 464 | 0;
    $0 = HEAP32[$parsing >> 2] | 0;
    if (($0 | 0) == 3) {
      label = 3;
      break;
    } else if (($0 | 0) == 2) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $m_errorCode = $parser + 268 | 0;
    HEAP32[$m_errorCode >> 2] = 33;
    $retval_0 = 0;
    label = 17;
    break;
   case 4:
    $m_errorCode2 = $parser + 268 | 0;
    HEAP32[$m_errorCode2 >> 2] = 36;
    $retval_0 = 0;
    label = 17;
    break;
   case 5:
    $m_bufferLim = $parser + 32 | 0;
    $1 = HEAP32[$m_bufferLim >> 2] | 0;
    $m_bufferEnd = $parser + 28 | 0;
    $2 = HEAP32[$m_bufferEnd >> 2] | 0;
    $sub_ptr_lhs_cast = $1;
    $sub_ptr_rhs_cast = $2;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) < ($len | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 16;
      break;
    }
   case 6:
    $m_bufferPtr = $parser + 24 | 0;
    $3 = HEAP32[$m_bufferPtr >> 2] | 0;
    $sub_ptr_rhs_cast5 = $3;
    $sub_ptr_sub6 = $sub_ptr_rhs_cast - $sub_ptr_rhs_cast5 | 0;
    $add = $sub_ptr_sub6 + $len | 0;
    $m_buffer = $parser + 8 | 0;
    $4 = HEAP32[$m_buffer >> 2] | 0;
    $sub_ptr_rhs_cast9 = $4;
    $sub_ptr_sub10 = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast9 | 0;
    $cmp11 = ($add | 0) > ($sub_ptr_sub10 | 0);
    if ($cmp11) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _bcopy($3 | 0, $4 | 0, $sub_ptr_sub6 | 0);
    $5 = HEAP32[$m_buffer >> 2] | 0;
    $6 = HEAP32[$m_bufferEnd >> 2] | 0;
    $7 = HEAP32[$m_bufferPtr >> 2] | 0;
    $sub_ptr_lhs_cast23 = $6;
    $sub_ptr_rhs_cast24 = $7;
    $sub_ptr_sub25 = $sub_ptr_lhs_cast23 - $sub_ptr_rhs_cast24 | 0;
    $add_ptr = $5 + $sub_ptr_sub25 | 0;
    HEAP32[$m_bufferEnd >> 2] = $add_ptr;
    $8 = HEAP32[$m_buffer >> 2] | 0;
    $storemerge = $8;
    label = 15;
    break;
   case 8:
    $sub_ptr_sub33 = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast5 | 0;
    $cmp34 = ($1 | 0) == ($3 | 0);
    $_sub_ptr_sub33 = $cmp34 ? 1024 : $sub_ptr_sub33;
    $bufferSize_0 = $_sub_ptr_sub33;
    label = 9;
    break;
   case 9:
    $mul = $bufferSize_0 << 1;
    $cmp36 = ($mul | 0) < ($add | 0);
    if ($cmp36) {
      $bufferSize_0 = $mul;
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $malloc_fcn = $parser + 12 | 0;
    $9 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$9 & 1023]($mul) | 0;
    $cmp37 = ($call | 0) == 0;
    if ($cmp37) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $m_errorCode39 = $parser + 268 | 0;
    HEAP32[$m_errorCode39 >> 2] = 1;
    $retval_0 = 0;
    label = 17;
    break;
   case 12:
    $add_ptr41 = $call + $mul | 0;
    HEAP32[$m_bufferLim >> 2] = $add_ptr41;
    $10 = HEAP32[$m_bufferPtr >> 2] | 0;
    $tobool = ($10 | 0) == 0;
    if ($tobool) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $11 = HEAP32[$m_bufferEnd >> 2] | 0;
    $sub_ptr_lhs_cast48 = $11;
    $sub_ptr_rhs_cast49 = $10;
    $sub_ptr_sub50 = $sub_ptr_lhs_cast48 - $sub_ptr_rhs_cast49 | 0;
    _memcpy($call | 0, $10 | 0, $sub_ptr_sub50);
    $free_fcn = $parser + 20 | 0;
    $12 = HEAP32[$free_fcn >> 2] | 0;
    $13 = HEAP32[$m_buffer >> 2] | 0;
    FUNCTION_TABLE_vi[$12 & 1023]($13);
    label = 14;
    break;
   case 14:
    $14 = HEAP32[$m_bufferEnd >> 2] | 0;
    $15 = HEAP32[$m_bufferPtr >> 2] | 0;
    $sub_ptr_lhs_cast56 = $14;
    $sub_ptr_rhs_cast57 = $15;
    $sub_ptr_sub58 = $sub_ptr_lhs_cast56 - $sub_ptr_rhs_cast57 | 0;
    $add_ptr59 = $call + $sub_ptr_sub58 | 0;
    HEAP32[$m_bufferEnd >> 2] = $add_ptr59;
    HEAP32[$m_buffer >> 2] = $call;
    $storemerge = $call;
    label = 15;
    break;
   case 15:
    HEAP32[$m_bufferPtr >> 2] = $storemerge;
    $m_eventEndPtr = $parser + 276 | 0;
    HEAP32[$m_eventEndPtr >> 2] = 0;
    $m_eventPtr = $parser + 272 | 0;
    HEAP32[$m_eventPtr >> 2] = 0;
    $m_positionPtr = $parser + 280 | 0;
    HEAP32[$m_positionPtr >> 2] = 0;
    label = 16;
    break;
   case 16:
    $16 = HEAP32[$m_bufferEnd >> 2] | 0;
    $retval_0 = $16;
    label = 17;
    break;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _XML_GetErrorCode($parser) {
  $parser = $parser | 0;
  return HEAP32[$parser + 268 >> 2] | 0;
}
function _XML_ErrorString($code) {
  $code = $code | 0;
  var $cmp = 0, $cmp1 = 0, $or_cond = 0, $arrayidx = 0, $0 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($code | 0) != 0;
    $cmp1 = $code >>> 0 < 41;
    $or_cond = $cmp & $cmp1;
    if ($or_cond) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $arrayidx = 164744 + ($code << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $retval_0 = $0;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _hashTableIterInit($iter, $table) {
  $iter = $iter | 0;
  $table = $table | 0;
  var $0 = 0;
  $0 = HEAP32[$table >> 2] | 0;
  HEAP32[$iter >> 2] = $0;
  HEAP32[$iter + 4 >> 2] = $0 + (HEAP32[$table + 8 >> 2] << 2) | 0;
  return;
}
function _hashTableIterNext($iter) {
  $iter = $iter | 0;
  var $p = 0, $end = 0, $0 = 0, $1 = 0, $cmp = 0, $incdec_ptr = 0, $2 = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p = $iter | 0;
    $end = $iter + 4 | 0;
    label = 3;
    break;
   case 3:
    $0 = HEAP32[$p >> 2] | 0;
    $1 = HEAP32[$end >> 2] | 0;
    $cmp = ($0 | 0) == ($1 | 0);
    if ($cmp) {
      $retval_0 = 0;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $0 + 4 | 0;
    HEAP32[$p >> 2] = $incdec_ptr;
    $2 = HEAP32[$0 >> 2] | 0;
    $tobool = ($2 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = $2;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _hash($parser, $s) {
  $parser = $parser | 0;
  $s = $s | 0;
  var $m_hash_secret_salt = 0, $0 = 0, $1 = 0, $tobool2 = 0, $2 = 0, $h_04 = 0, $s_addr_03 = 0, $mul = 0, $incdec_ptr = 0, $conv = 0, $xor = 0, $3 = 0, $tobool = 0, $h_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_hash_secret_salt = $parser + 472 | 0;
    $0 = HEAP32[$m_hash_secret_salt >> 2] | 0;
    $1 = HEAP8[$s] | 0;
    $tobool2 = $1 << 24 >> 24 == 0;
    if ($tobool2) {
      $h_0_lcssa = $0;
      label = 4;
      break;
    } else {
      $s_addr_03 = $s;
      $h_04 = $0;
      $2 = $1;
      label = 3;
      break;
    }
   case 3:
    $mul = $h_04 * 1000003 & -1;
    $incdec_ptr = $s_addr_03 + 1 | 0;
    $conv = $2 & 255;
    $xor = $conv ^ $mul;
    $3 = HEAP8[$incdec_ptr] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    if ($tobool) {
      $h_0_lcssa = $xor;
      label = 4;
      break;
    } else {
      $s_addr_03 = $incdec_ptr;
      $h_04 = $xor;
      $2 = $3;
      label = 3;
      break;
    }
   case 4:
    return $h_0_lcssa | 0;
  }
  return 0;
}
function _keyeq($s1, $s2) {
  $s1 = $s1 | 0;
  $s2 = $s2 | 0;
  var $0 = 0, $1 = 0, $cmp5 = 0, $2 = 0, $s2_addr_07 = 0, $s1_addr_06 = 0, $cmp4 = 0, $incdec_ptr = 0, $incdec_ptr6 = 0, $3 = 0, $4 = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$s1] | 0;
    $1 = HEAP8[$s2] | 0;
    $cmp5 = $0 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp5) {
      $s1_addr_06 = $s1;
      $s2_addr_07 = $s2;
      $2 = $0;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 3:
    $cmp4 = $2 << 24 >> 24 == 0;
    if ($cmp4) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $s1_addr_06 + 1 | 0;
    $incdec_ptr6 = $s2_addr_07 + 1 | 0;
    $3 = HEAP8[$incdec_ptr] | 0;
    $4 = HEAP8[$incdec_ptr6] | 0;
    $cmp = $3 << 24 >> 24 == $4 << 24 >> 24;
    if ($cmp) {
      $s1_addr_06 = $incdec_ptr;
      $s2_addr_07 = $incdec_ptr6;
      $2 = $3;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _XML_ParseBuffer($parser, $len, $isFinal) {
  $parser = $parser | 0;
  $len = $len | 0;
  $isFinal = $isFinal | 0;
  var $parsing = 0, $0 = 0, $m_errorCode = 0, $m_errorCode2 = 0, $m_parentParser = 0, $1 = 0, $cmp = 0, $call = 0, $tobool = 0, $m_errorCode4 = 0, $m_bufferPtr = 0, $2 = 0, $m_positionPtr = 0, $m_bufferEnd = 0, $3 = 0, $add_ptr = 0, $m_parseEndPtr = 0, $m_parseEndByteIndex = 0, $4 = 0, $add = 0, $conv = 0, $finalBuffer = 0, $m_processor = 0, $5 = 0, $6 = 0, $call11 = 0, $m_errorCode12 = 0, $cmp14 = 0, $m_eventPtr = 0, $7 = 0, $m_eventEndPtr = 0, $8 = 0, $tobool22 = 0, $result_0 = 0, $m_encoding = 0, $9 = 0, $updatePosition = 0, $10 = 0, $11 = 0, $12 = 0, $m_position = 0, $13 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $parsing = $parser + 464 | 0;
    $0 = HEAP32[$parsing >> 2] | 0;
    if (($0 | 0) == 3) {
      label = 3;
      break;
    } else if (($0 | 0) == 2) {
      label = 4;
      break;
    } else if (($0 | 0) == 0) {
      label = 5;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $m_errorCode = $parser + 268 | 0;
    HEAP32[$m_errorCode >> 2] = 33;
    $retval_0 = 0;
    label = 15;
    break;
   case 4:
    $m_errorCode2 = $parser + 268 | 0;
    HEAP32[$m_errorCode2 >> 2] = 36;
    $retval_0 = 0;
    label = 15;
    break;
   case 5:
    $m_parentParser = $parser + 460 | 0;
    $1 = HEAP32[$m_parentParser >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $call = _startParsing($parser) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $m_errorCode4 = $parser + 268 | 0;
    HEAP32[$m_errorCode4 >> 2] = 1;
    $retval_0 = 0;
    label = 15;
    break;
   case 8:
    HEAP32[$parsing >> 2] = 1;
    $m_bufferPtr = $parser + 24 | 0;
    $2 = HEAP32[$m_bufferPtr >> 2] | 0;
    $m_positionPtr = $parser + 280 | 0;
    HEAP32[$m_positionPtr >> 2] = $2;
    $m_bufferEnd = $parser + 28 | 0;
    $3 = HEAP32[$m_bufferEnd >> 2] | 0;
    $add_ptr = $3 + $len | 0;
    HEAP32[$m_bufferEnd >> 2] = $add_ptr;
    $m_parseEndPtr = $parser + 40 | 0;
    HEAP32[$m_parseEndPtr >> 2] = $add_ptr;
    $m_parseEndByteIndex = $parser + 36 | 0;
    $4 = HEAP32[$m_parseEndByteIndex >> 2] | 0;
    $add = $4 + $len | 0;
    HEAP32[$m_parseEndByteIndex >> 2] = $add;
    $conv = $isFinal & 255;
    $finalBuffer = $parser + 468 | 0;
    HEAP8[$finalBuffer] = $conv;
    $m_processor = $parser + 264 | 0;
    $5 = HEAP32[$m_processor >> 2] | 0;
    $6 = HEAP32[$m_parseEndPtr >> 2] | 0;
    $call11 = FUNCTION_TABLE_iiiii[$5 & 1023]($parser, $2, $6, $m_bufferPtr) | 0;
    $m_errorCode12 = $parser + 268 | 0;
    HEAP32[$m_errorCode12 >> 2] = $call11;
    $cmp14 = ($call11 | 0) == 0;
    if ($cmp14) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $m_eventPtr = $parser + 272 | 0;
    $7 = HEAP32[$m_eventPtr >> 2] | 0;
    $m_eventEndPtr = $parser + 276 | 0;
    HEAP32[$m_eventEndPtr >> 2] = $7;
    HEAP32[$m_processor >> 2] = 448;
    $retval_0 = 0;
    label = 15;
    break;
   case 10:
    $8 = HEAP32[$parsing >> 2] | 0;
    if (($8 | 0) == 3) {
      label = 11;
      break;
    } else if (($8 | 0) == 0 | ($8 | 0) == 1) {
      label = 12;
      break;
    } else {
      $result_0 = 1;
      label = 14;
      break;
    }
   case 11:
    $result_0 = 2;
    label = 14;
    break;
   case 12:
    $tobool22 = ($isFinal | 0) == 0;
    if ($tobool22) {
      $result_0 = 1;
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    HEAP32[$parsing >> 2] = 2;
    $retval_0 = 1;
    label = 15;
    break;
   case 14:
    $m_encoding = $parser + 144 | 0;
    $9 = HEAP32[$m_encoding >> 2] | 0;
    $updatePosition = $9 + 48 | 0;
    $10 = HEAP32[$updatePosition >> 2] | 0;
    $11 = HEAP32[$m_positionPtr >> 2] | 0;
    $12 = HEAP32[$m_bufferPtr >> 2] | 0;
    $m_position = $parser + 392 | 0;
    FUNCTION_TABLE_viiii[$10 & 1023]($9, $11, $12, $m_position);
    $13 = HEAP32[$m_bufferPtr >> 2] | 0;
    HEAP32[$m_positionPtr >> 2] = $13;
    $retval_0 = $result_0;
    label = 15;
    break;
   case 15:
    return $retval_0 | 0;
  }
  return 0;
}
function _XML_GetCurrentLineNumber($parser) {
  $parser = $parser | 0;
  var $m_eventPtr = 0, $0 = 0, $tobool = 0, $m_positionPtr = 0, $1 = 0, $cmp = 0, $m_encoding = 0, $2 = 0, $updatePosition = 0, $3 = 0, $m_position = 0, $4 = 0, $lineNumber = 0, $5 = 0, $add = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_eventPtr = $parser + 272 | 0;
    $0 = HEAP32[$m_eventPtr >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $m_positionPtr = $parser + 280 | 0;
    $1 = HEAP32[$m_positionPtr >> 2] | 0;
    $cmp = $0 >>> 0 < $1 >>> 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $m_encoding = $parser + 144 | 0;
    $2 = HEAP32[$m_encoding >> 2] | 0;
    $updatePosition = $2 + 48 | 0;
    $3 = HEAP32[$updatePosition >> 2] | 0;
    $m_position = $parser + 392 | 0;
    FUNCTION_TABLE_viiii[$3 & 1023]($2, $1, $0, $m_position);
    $4 = HEAP32[$m_eventPtr >> 2] | 0;
    HEAP32[$m_positionPtr >> 2] = $4;
    label = 5;
    break;
   case 5:
    $lineNumber = $parser + 392 | 0;
    $5 = HEAP32[$lineNumber >> 2] | 0;
    $add = $5 + 1 | 0;
    return $add | 0;
  }
  return 0;
}
function _reportDefault($parser, $enc, $s, $end) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $s = $s | 0;
  $end = $end | 0;
  var $s_addr = 0, $dataPtr = 0, $isUtf8 = 0, $0 = 0, $tobool = 0, $m_encoding = 0, $1 = 0, $cmp = 0, $m_eventPtr = 0, $m_eventEndPtr = 0, $m_openInternalEntities = 0, $2 = 0, $internalEventPtr = 0, $internalEventEndPtr = 0, $eventPP_0_ph = 0, $eventEndPP_0_ph = 0, $m_dataBuf = 0, $utf8Convert = 0, $m_dataBufEnd = 0, $m_defaultHandler = 0, $m_handlerArg = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $11 = 0, $12 = 0, $cmp5 = 0, $m_defaultHandler7 = 0, $13 = 0, $m_handlerArg8 = 0, $14 = 0, $sub_ptr_lhs_cast9 = 0, $sub_ptr_rhs_cast10 = 0, $sub_ptr_sub11 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s_addr = __stackBase__ | 0;
    $dataPtr = __stackBase__ + 8 | 0;
    HEAP32[$s_addr >> 2] = $s;
    $isUtf8 = $enc + 68 | 0;
    $0 = HEAP8[$isUtf8] | 0;
    $tobool = $0 << 24 >> 24 == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $m_encoding = $parser + 144 | 0;
    $1 = HEAP32[$m_encoding >> 2] | 0;
    $cmp = ($1 | 0) == ($enc | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $m_eventPtr = $parser + 272 | 0;
    $m_eventEndPtr = $parser + 276 | 0;
    $eventEndPP_0_ph = $m_eventEndPtr;
    $eventPP_0_ph = $m_eventPtr;
    label = 6;
    break;
   case 5:
    $m_openInternalEntities = $parser + 284 | 0;
    $2 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $internalEventPtr = $2 | 0;
    $internalEventEndPtr = $2 + 4 | 0;
    $eventEndPP_0_ph = $internalEventEndPtr;
    $eventPP_0_ph = $internalEventPtr;
    label = 6;
    break;
   case 6:
    $m_dataBuf = $parser + 44 | 0;
    $utf8Convert = $enc + 56 | 0;
    $m_dataBufEnd = $parser + 48 | 0;
    $m_defaultHandler = $parser + 80 | 0;
    $m_handlerArg = $parser + 4 | 0;
    label = 7;
    break;
   case 7:
    $3 = HEAP32[$m_dataBuf >> 2] | 0;
    HEAP32[$dataPtr >> 2] = $3;
    $4 = HEAP32[$utf8Convert >> 2] | 0;
    $5 = HEAP32[$m_dataBufEnd >> 2] | 0;
    FUNCTION_TABLE_viiiii[$4 & 1023]($enc, $s_addr, $end, $dataPtr, $5);
    $6 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$eventEndPP_0_ph >> 2] = $6;
    $7 = HEAP32[$m_defaultHandler >> 2] | 0;
    $8 = HEAP32[$m_handlerArg >> 2] | 0;
    $9 = HEAP32[$m_dataBuf >> 2] | 0;
    $10 = HEAP32[$dataPtr >> 2] | 0;
    $sub_ptr_lhs_cast = $10;
    $sub_ptr_rhs_cast = $9;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    FUNCTION_TABLE_viii[$7 & 1023]($8, $9, $sub_ptr_sub);
    $11 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$eventPP_0_ph >> 2] = $11;
    $12 = HEAP32[$s_addr >> 2] | 0;
    $cmp5 = ($12 | 0) == ($end | 0);
    if ($cmp5) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 8:
    $m_defaultHandler7 = $parser + 80 | 0;
    $13 = HEAP32[$m_defaultHandler7 >> 2] | 0;
    $m_handlerArg8 = $parser + 4 | 0;
    $14 = HEAP32[$m_handlerArg8 >> 2] | 0;
    $sub_ptr_lhs_cast9 = $end;
    $sub_ptr_rhs_cast10 = $s;
    $sub_ptr_sub11 = $sub_ptr_lhs_cast9 - $sub_ptr_rhs_cast10 | 0;
    FUNCTION_TABLE_viii[$13 & 1023]($14, $s, $sub_ptr_sub11);
    label = 9;
    break;
   case 9:
    STACKTOP = __stackBase__;
    return;
  }
}
function _poolGrow($pool) {
  $pool = $pool | 0;
  var $freeBlocks = 0, $0 = 0, $tobool = 0, $start = 0, $1 = 0, $cmp = 0, $blocks = 0, $2 = 0, $next = 0, $3 = 0, $4 = 0, $next6 = 0, $5 = 0, $arraydecay = 0, $6 = 0, $size = 0, $7 = 0, $add_ptr = 0, $end = 0, $8 = 0, $ptr = 0, $end12 = 0, $9 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $size15 = 0, $10 = 0, $cmp16 = 0, $next19 = 0, $11 = 0, $blocks20 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $sub_ptr_lhs_cast31 = 0, $sub_ptr_rhs_cast32 = 0, $sub_ptr_sub33 = 0, $18 = 0, $ptr37 = 0, $19 = 0, $20 = 0, $sub_ptr_lhs_cast39 = 0, $sub_ptr_rhs_cast40 = 0, $sub_ptr_sub41 = 0, $add_ptr42 = 0, $21 = 0, $arraydecay46 = 0, $22 = 0, $size50 = 0, $23 = 0, $add_ptr51 = 0, $blocks55 = 0, $24 = 0, $tobool56 = 0, $start57 = 0, $25 = 0, $arraydecay60 = 0, $cmp61 = 0, $end63 = 0, $26 = 0, $sub_ptr_lhs_cast65 = 0, $sub_ptr_rhs_cast66 = 0, $sub_ptr_sub67 = 0, $mul68 = 0, $mem = 0, $27 = 0, $realloc_fcn = 0, $28 = 0, $29 = 0, $add = 0, $call = 0, $cmp71 = 0, $30 = 0, $size76 = 0, $31 = 0, $32 = 0, $ptr80 = 0, $33 = 0, $34 = 0, $sub_ptr_lhs_cast82 = 0, $sub_ptr_rhs_cast83 = 0, $sub_ptr_sub84 = 0, $add_ptr85 = 0, $35 = 0, $arraydecay89 = 0, $add_ptr92 = 0, $end96 = 0, $36 = 0, $start97 = 0, $37 = 0, $sub_ptr_lhs_cast98 = 0, $sub_ptr_rhs_cast99 = 0, $sub_ptr_sub100 = 0, $cmp101 = 0, $mul104 = 0, $blockSize95_0 = 0, $mem106 = 0, $38 = 0, $malloc_fcn = 0, $39 = 0, $add108 = 0, $call109 = 0, $tobool110 = 0, $40 = 0, $size113 = 0, $41 = 0, $42 = 0, $next115 = 0, $ptr117 = 0, $43 = 0, $44 = 0, $cmp119 = 0, $s121 = 0, $sub_ptr_lhs_cast125 = 0, $sub_ptr_rhs_cast126 = 0, $sub_ptr_sub127 = 0, $s130 = 0, $45 = 0, $46 = 0, $sub_ptr_lhs_cast134 = 0, $sub_ptr_rhs_cast135 = 0, $sub_ptr_sub136 = 0, $s130_sum = 0, $add_ptr137 = 0, $add_ptr144 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $freeBlocks = $pool + 4 | 0;
    $0 = HEAP32[$freeBlocks >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $start = $pool + 16 | 0;
    $1 = HEAP32[$start >> 2] | 0;
    $cmp = ($1 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $blocks = $pool | 0;
    HEAP32[$blocks >> 2] = $0;
    $2 = HEAP32[$freeBlocks >> 2] | 0;
    $next = $2 | 0;
    $3 = HEAP32[$next >> 2] | 0;
    HEAP32[$freeBlocks >> 2] = $3;
    $4 = HEAP32[$blocks >> 2] | 0;
    $next6 = $4 | 0;
    HEAP32[$next6 >> 2] = 0;
    $5 = HEAP32[$blocks >> 2] | 0;
    $arraydecay = $5 + 8 | 0;
    HEAP32[$start >> 2] = $arraydecay;
    $6 = HEAP32[$blocks >> 2] | 0;
    $size = $6 + 4 | 0;
    $7 = HEAP32[$size >> 2] | 0;
    $add_ptr = $7 + ($5 + 8) | 0;
    $end = $pool + 8 | 0;
    HEAP32[$end >> 2] = $add_ptr;
    $8 = HEAP32[$start >> 2] | 0;
    $ptr = $pool + 12 | 0;
    HEAP32[$ptr >> 2] = $8;
    $retval_0 = 1;
    label = 15;
    break;
   case 5:
    $end12 = $pool + 8 | 0;
    $9 = HEAP32[$end12 >> 2] | 0;
    $sub_ptr_lhs_cast = $9;
    $sub_ptr_rhs_cast = $1;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $size15 = $0 + 4 | 0;
    $10 = HEAP32[$size15 >> 2] | 0;
    $cmp16 = ($sub_ptr_sub | 0) < ($10 | 0);
    if ($cmp16) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $next19 = $0 | 0;
    $11 = HEAP32[$next19 >> 2] | 0;
    $blocks20 = $pool | 0;
    $12 = HEAP32[$blocks20 >> 2] | 0;
    HEAP32[$next19 >> 2] = $12;
    $13 = HEAP32[$freeBlocks >> 2] | 0;
    HEAP32[$blocks20 >> 2] = $13;
    HEAP32[$freeBlocks >> 2] = $11;
    $14 = HEAP32[$blocks20 >> 2] | 0;
    $15 = $14 + 8 | 0;
    $16 = HEAP32[$start >> 2] | 0;
    $17 = HEAP32[$end12 >> 2] | 0;
    $sub_ptr_lhs_cast31 = $17;
    $sub_ptr_rhs_cast32 = $16;
    $sub_ptr_sub33 = $sub_ptr_lhs_cast31 - $sub_ptr_rhs_cast32 | 0;
    _memcpy($15 | 0, $16 | 0, $sub_ptr_sub33);
    $18 = HEAP32[$blocks20 >> 2] | 0;
    $ptr37 = $pool + 12 | 0;
    $19 = HEAP32[$ptr37 >> 2] | 0;
    $20 = HEAP32[$start >> 2] | 0;
    $sub_ptr_lhs_cast39 = $19;
    $sub_ptr_rhs_cast40 = $20;
    $sub_ptr_sub41 = $sub_ptr_lhs_cast39 - $sub_ptr_rhs_cast40 | 0;
    $add_ptr42 = $sub_ptr_sub41 + ($18 + 8) | 0;
    HEAP32[$ptr37 >> 2] = $add_ptr42;
    $21 = HEAP32[$blocks20 >> 2] | 0;
    $arraydecay46 = $21 + 8 | 0;
    HEAP32[$start >> 2] = $arraydecay46;
    $22 = HEAP32[$blocks20 >> 2] | 0;
    $size50 = $22 + 4 | 0;
    $23 = HEAP32[$size50 >> 2] | 0;
    $add_ptr51 = $23 + ($21 + 8) | 0;
    HEAP32[$end12 >> 2] = $add_ptr51;
    $retval_0 = 1;
    label = 15;
    break;
   case 7:
    $blocks55 = $pool | 0;
    $24 = HEAP32[$blocks55 >> 2] | 0;
    $tobool56 = ($24 | 0) == 0;
    if ($tobool56) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $start57 = $pool + 16 | 0;
    $25 = HEAP32[$start57 >> 2] | 0;
    $arraydecay60 = $24 + 8 | 0;
    $cmp61 = ($25 | 0) == ($arraydecay60 | 0);
    if ($cmp61) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $end63 = $pool + 8 | 0;
    $26 = HEAP32[$end63 >> 2] | 0;
    $sub_ptr_lhs_cast65 = $26;
    $sub_ptr_rhs_cast66 = $25;
    $sub_ptr_sub67 = $sub_ptr_lhs_cast65 - $sub_ptr_rhs_cast66 | 0;
    $mul68 = $sub_ptr_sub67 << 1;
    $mem = $pool + 20 | 0;
    $27 = HEAP32[$mem >> 2] | 0;
    $realloc_fcn = $27 + 4 | 0;
    $28 = HEAP32[$realloc_fcn >> 2] | 0;
    $29 = $24;
    $add = $mul68 + 8 | 0;
    $call = FUNCTION_TABLE_iii[$28 & 1023]($29, $add) | 0;
    $cmp71 = ($call | 0) == 0;
    if ($cmp71) {
      $retval_0 = 0;
      label = 15;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $30 = $call;
    HEAP32[$blocks55 >> 2] = $30;
    $size76 = $call + 4 | 0;
    $31 = $size76;
    HEAP32[$31 >> 2] = $mul68;
    $32 = HEAP32[$blocks55 >> 2] | 0;
    $ptr80 = $pool + 12 | 0;
    $33 = HEAP32[$ptr80 >> 2] | 0;
    $34 = HEAP32[$start57 >> 2] | 0;
    $sub_ptr_lhs_cast82 = $33;
    $sub_ptr_rhs_cast83 = $34;
    $sub_ptr_sub84 = $sub_ptr_lhs_cast82 - $sub_ptr_rhs_cast83 | 0;
    $add_ptr85 = $sub_ptr_sub84 + ($32 + 8) | 0;
    HEAP32[$ptr80 >> 2] = $add_ptr85;
    $35 = HEAP32[$blocks55 >> 2] | 0;
    $arraydecay89 = $35 + 8 | 0;
    HEAP32[$start57 >> 2] = $arraydecay89;
    $add_ptr92 = $mul68 + ($35 + 8) | 0;
    HEAP32[$end63 >> 2] = $add_ptr92;
    $retval_0 = 1;
    label = 15;
    break;
   case 11:
    $end96 = $pool + 8 | 0;
    $36 = HEAP32[$end96 >> 2] | 0;
    $start97 = $pool + 16 | 0;
    $37 = HEAP32[$start97 >> 2] | 0;
    $sub_ptr_lhs_cast98 = $36;
    $sub_ptr_rhs_cast99 = $37;
    $sub_ptr_sub100 = $sub_ptr_lhs_cast98 - $sub_ptr_rhs_cast99 | 0;
    $cmp101 = ($sub_ptr_sub100 | 0) < 1024;
    $mul104 = $sub_ptr_sub100 << 1;
    $blockSize95_0 = $cmp101 ? 1024 : $mul104;
    $mem106 = $pool + 20 | 0;
    $38 = HEAP32[$mem106 >> 2] | 0;
    $malloc_fcn = $38 | 0;
    $39 = HEAP32[$malloc_fcn >> 2] | 0;
    $add108 = $blockSize95_0 + 8 | 0;
    $call109 = FUNCTION_TABLE_ii[$39 & 1023]($add108) | 0;
    $tobool110 = ($call109 | 0) == 0;
    if ($tobool110) {
      $retval_0 = 0;
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $40 = $call109;
    $size113 = $call109 + 4 | 0;
    $41 = $size113;
    HEAP32[$41 >> 2] = $blockSize95_0;
    $42 = HEAP32[$blocks55 >> 2] | 0;
    $next115 = $call109;
    HEAP32[$next115 >> 2] = $42;
    HEAP32[$blocks55 >> 2] = $40;
    $ptr117 = $pool + 12 | 0;
    $43 = HEAP32[$ptr117 >> 2] | 0;
    $44 = HEAP32[$start97 >> 2] | 0;
    $cmp119 = ($43 | 0) == ($44 | 0);
    if ($cmp119) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $s121 = $call109 + 8 | 0;
    $sub_ptr_lhs_cast125 = $43;
    $sub_ptr_rhs_cast126 = $44;
    $sub_ptr_sub127 = $sub_ptr_lhs_cast125 - $sub_ptr_rhs_cast126 | 0;
    _memcpy($s121 | 0, $44 | 0, $sub_ptr_sub127);
    label = 14;
    break;
   case 14:
    $s130 = $call109 + 8 | 0;
    $45 = HEAP32[$ptr117 >> 2] | 0;
    $46 = HEAP32[$start97 >> 2] | 0;
    $sub_ptr_lhs_cast134 = $45;
    $sub_ptr_rhs_cast135 = $46;
    $sub_ptr_sub136 = $sub_ptr_lhs_cast134 + 8 | 0;
    $s130_sum = $sub_ptr_sub136 - $sub_ptr_rhs_cast135 | 0;
    $add_ptr137 = $call109 + $s130_sum | 0;
    HEAP32[$ptr117 >> 2] = $add_ptr137;
    HEAP32[$start97 >> 2] = $s130;
    $add_ptr144 = $call109 + $add108 | 0;
    HEAP32[$end96 >> 2] = $add_ptr144;
    $retval_0 = 1;
    label = 15;
    break;
   case 15:
    return $retval_0 | 0;
  }
  return 0;
}
function _lookup($parser, $table, $name, $createSize) {
  $parser = $parser | 0;
  $table = $table | 0;
  $name = $name | 0;
  $createSize = $createSize | 0;
  var $size = 0, $0 = 0, $cmp = 0, $tobool = 0, $power = 0, $mem = 0, $1 = 0, $malloc_fcn = 0, $2 = 0, $call = 0, $3 = 0, $v = 0, $tobool5 = 0, $call10 = 0, $4 = 0, $sub = 0, $and = 0, $call12 = 0, $sub14 = 0, $and15 = 0, $v16 = 0, $5 = 0, $arrayidx116 = 0, $6 = 0, $tobool17117 = 0, $neg = 0, $and29 = 0, $power30 = 0, $shr32 = 0, $7 = 0, $i_0119 = 0, $step_0118 = 0, $name20 = 0, $8 = 0, $call21 = 0, $tobool22 = 0, $tobool27 = 0, $9 = 0, $conv = 0, $sub31 = 0, $shr = 0, $and33 = 0, $or = 0, $conv34 = 0, $step_1 = 0, $conv36 = 0, $cmp37 = 0, $10 = 0, $sub41 = 0, $add = 0, $sub43 = 0, $i_0_be = 0, $11 = 0, $arrayidx = 0, $12 = 0, $tobool17 = 0, $i_0_lcssa = 0, $tobool44 = 0, $used = 0, $13 = 0, $power47 = 0, $14 = 0, $conv48 = 0, $sub49 = 0, $shr50 = 0, $tobool51 = 0, $add55 = 0, $conv57 = 0, $shl = 0, $sub58 = 0, $mul60 = 0, $mem61 = 0, $15 = 0, $malloc_fcn62 = 0, $16 = 0, $call63 = 0, $17 = 0, $tobool64 = 0, $18 = 0, $cmp68111 = 0, $neg85 = 0, $sub88 = 0, $shr90 = 0, $i_1112 = 0, $19 = 0, $arrayidx71 = 0, $20 = 0, $tobool72 = 0, $name76 = 0, $21 = 0, $call77 = 0, $and78 = 0, $arrayidx80106 = 0, $22 = 0, $tobool81107 = 0, $and86 = 0, $shr89 = 0, $and91 = 0, $or92 = 0, $conv93 = 0, $j_0109 = 0, $step_2108 = 0, $tobool83 = 0, $conv93_step_2108 = 0, $conv95 = 0, $cmp96 = 0, $sub100 = 0, $sub100_pn = 0, $j_0_be = 0, $arrayidx80 = 0, $23 = 0, $tobool81 = 0, $arrayidx80_lcssa = 0, $24 = 0, $arrayidx109 = 0, $25 = 0, $inc = 0, $26 = 0, $cmp68 = 0, $27 = 0, $free_fcn = 0, $28 = 0, $29 = 0, $30 = 0, $and117 = 0, $31 = 0, $arrayidx120102 = 0, $32 = 0, $tobool121103 = 0, $neg125 = 0, $and126 = 0, $sub128 = 0, $shr129 = 0, $shr130 = 0, $and131 = 0, $or132 = 0, $conv133 = 0, $33 = 0, $i_2105 = 0, $step_4104 = 0, $tobool123 = 0, $conv133_step_4104 = 0, $conv135 = 0, $cmp136 = 0, $sub140 = 0, $sub140_pn = 0, $i_2_be = 0, $arrayidx120 = 0, $34 = 0, $tobool121 = 0, $i_3 = 0, $mem150 = 0, $35 = 0, $malloc_fcn151 = 0, $36 = 0, $call152 = 0, $37 = 0, $v153 = 0, $38 = 0, $arrayidx154 = 0, $39 = 0, $arrayidx156 = 0, $40 = 0, $tobool157 = 0, $41 = 0, $42 = 0, $arrayidx163 = 0, $43 = 0, $name164 = 0, $used165 = 0, $44 = 0, $inc166 = 0, $45 = 0, $arrayidx168 = 0, $46 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $table + 8 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $tobool = ($createSize | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $power = $table + 4 | 0;
    HEAP8[$power] = 6;
    HEAP32[$size >> 2] = 64;
    $mem = $table + 16 | 0;
    $1 = HEAP32[$mem >> 2] | 0;
    $malloc_fcn = $1 | 0;
    $2 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$2 & 1023](256) | 0;
    $3 = $call;
    $v = $table | 0;
    HEAP32[$v >> 2] = $3;
    $tobool5 = ($call | 0) == 0;
    if ($tobool5) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    HEAP32[$size >> 2] = 0;
    $retval_0 = 0;
    label = 32;
    break;
   case 6:
    _memset($call | 0, 0, 256);
    $call10 = _hash($parser, $name) | 0;
    $4 = HEAP32[$size >> 2] | 0;
    $sub = $4 - 1 | 0;
    $and = $sub & $call10;
    $i_3 = $and;
    label = 30;
    break;
   case 7:
    $call12 = _hash($parser, $name) | 0;
    $sub14 = $0 - 1 | 0;
    $and15 = $call12 & $sub14;
    $v16 = $table | 0;
    $5 = HEAP32[$v16 >> 2] | 0;
    $arrayidx116 = $5 + ($and15 << 2) | 0;
    $6 = HEAP32[$arrayidx116 >> 2] | 0;
    $tobool17117 = ($6 | 0) == 0;
    if ($tobool17117) {
      $i_0_lcssa = $and15;
      label = 16;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $neg = -$0 | 0;
    $and29 = $call12 & $neg;
    $power30 = $table + 4 | 0;
    $shr32 = $sub14 >>> 2;
    $step_0118 = 0;
    $i_0119 = $and15;
    $7 = $6;
    label = 9;
    break;
   case 9:
    $name20 = $7 | 0;
    $8 = HEAP32[$name20 >> 2] | 0;
    $call21 = _keyeq($name, $8) | 0;
    $tobool22 = $call21 << 24 >> 24 == 0;
    if ($tobool22) {
      label = 10;
      break;
    } else {
      $retval_0 = $7;
      label = 32;
      break;
    }
   case 10:
    $tobool27 = $step_0118 << 24 >> 24 == 0;
    if ($tobool27) {
      label = 11;
      break;
    } else {
      $step_1 = $step_0118;
      label = 12;
      break;
    }
   case 11:
    $9 = HEAP8[$power30] | 0;
    $conv = $9 & 255;
    $sub31 = $conv - 1 | 0;
    $shr = $and29 >>> ($sub31 >>> 0);
    $and33 = $shr & $shr32;
    $or = $and33 | 1;
    $conv34 = $or & 255;
    $step_1 = $conv34;
    label = 12;
    break;
   case 12:
    $conv36 = $step_1 & 255;
    $cmp37 = $i_0119 >>> 0 < $conv36 >>> 0;
    if ($cmp37) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $10 = HEAP32[$size >> 2] | 0;
    $sub41 = $i_0119 - $conv36 | 0;
    $add = $sub41 + $10 | 0;
    $i_0_be = $add;
    label = 15;
    break;
   case 14:
    $sub43 = $i_0119 - $conv36 | 0;
    $i_0_be = $sub43;
    label = 15;
    break;
   case 15:
    $11 = HEAP32[$v16 >> 2] | 0;
    $arrayidx = $11 + ($i_0_be << 2) | 0;
    $12 = HEAP32[$arrayidx >> 2] | 0;
    $tobool17 = ($12 | 0) == 0;
    if ($tobool17) {
      $i_0_lcssa = $i_0_be;
      label = 16;
      break;
    } else {
      $step_0118 = $step_1;
      $i_0119 = $i_0_be;
      $7 = $12;
      label = 9;
      break;
    }
   case 16:
    $tobool44 = ($createSize | 0) == 0;
    if ($tobool44) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $used = $table + 12 | 0;
    $13 = HEAP32[$used >> 2] | 0;
    $power47 = $table + 4 | 0;
    $14 = HEAP8[$power47] | 0;
    $conv48 = $14 & 255;
    $sub49 = $conv48 - 1 | 0;
    $shr50 = $13 >>> ($sub49 >>> 0);
    $tobool51 = ($shr50 | 0) == 0;
    if ($tobool51) {
      $i_3 = $i_0_lcssa;
      label = 30;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $add55 = $14 + 1 & 255;
    $conv57 = $add55 & 255;
    $shl = 1 << $conv57;
    $sub58 = $shl - 1 | 0;
    $mul60 = $shl << 2;
    $mem61 = $table + 16 | 0;
    $15 = HEAP32[$mem61 >> 2] | 0;
    $malloc_fcn62 = $15 | 0;
    $16 = HEAP32[$malloc_fcn62 >> 2] | 0;
    $call63 = FUNCTION_TABLE_ii[$16 & 1023]($mul60) | 0;
    $17 = $call63;
    $tobool64 = ($call63 | 0) == 0;
    if ($tobool64) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    _memset($call63 | 0, 0, $mul60 | 0);
    $18 = HEAP32[$size >> 2] | 0;
    $cmp68111 = ($18 | 0) == 0;
    if ($cmp68111) {
      label = 27;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $neg85 = -$shl | 0;
    $sub88 = $conv57 - 1 | 0;
    $shr90 = $sub58 >>> 2;
    $i_1112 = 0;
    label = 21;
    break;
   case 21:
    $19 = HEAP32[$v16 >> 2] | 0;
    $arrayidx71 = $19 + ($i_1112 << 2) | 0;
    $20 = HEAP32[$arrayidx71 >> 2] | 0;
    $tobool72 = ($20 | 0) == 0;
    if ($tobool72) {
      label = 26;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $name76 = $20 | 0;
    $21 = HEAP32[$name76 >> 2] | 0;
    $call77 = _hash($parser, $21) | 0;
    $and78 = $call77 & $sub58;
    $arrayidx80106 = $17 + ($and78 << 2) | 0;
    $22 = HEAP32[$arrayidx80106 >> 2] | 0;
    $tobool81107 = ($22 | 0) == 0;
    if ($tobool81107) {
      $arrayidx80_lcssa = $arrayidx80106;
      label = 25;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $and86 = $call77 & $neg85;
    $shr89 = $and86 >>> ($sub88 >>> 0);
    $and91 = $shr89 & $shr90;
    $or92 = $and91 | 1;
    $conv93 = $or92 & 255;
    $step_2108 = 0;
    $j_0109 = $and78;
    label = 24;
    break;
   case 24:
    $tobool83 = $step_2108 << 24 >> 24 == 0;
    $conv93_step_2108 = $tobool83 ? $conv93 : $step_2108;
    $conv95 = $conv93_step_2108 & 255;
    $cmp96 = $j_0109 >>> 0 < $conv95 >>> 0;
    $sub100 = $cmp96 ? $shl : 0;
    $sub100_pn = $j_0109 + $sub100 | 0;
    $j_0_be = $sub100_pn - $conv95 | 0;
    $arrayidx80 = $17 + ($j_0_be << 2) | 0;
    $23 = HEAP32[$arrayidx80 >> 2] | 0;
    $tobool81 = ($23 | 0) == 0;
    if ($tobool81) {
      $arrayidx80_lcssa = $arrayidx80;
      label = 25;
      break;
    } else {
      $step_2108 = $conv93_step_2108;
      $j_0109 = $j_0_be;
      label = 24;
      break;
    }
   case 25:
    $24 = HEAP32[$v16 >> 2] | 0;
    $arrayidx109 = $24 + ($i_1112 << 2) | 0;
    $25 = HEAP32[$arrayidx109 >> 2] | 0;
    HEAP32[$arrayidx80_lcssa >> 2] = $25;
    label = 26;
    break;
   case 26:
    $inc = $i_1112 + 1 | 0;
    $26 = HEAP32[$size >> 2] | 0;
    $cmp68 = $inc >>> 0 < $26 >>> 0;
    if ($cmp68) {
      $i_1112 = $inc;
      label = 21;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $27 = HEAP32[$mem61 >> 2] | 0;
    $free_fcn = $27 + 8 | 0;
    $28 = HEAP32[$free_fcn >> 2] | 0;
    $29 = HEAP32[$v16 >> 2] | 0;
    $30 = $29;
    FUNCTION_TABLE_vi[$28 & 1023]($30);
    HEAP32[$v16 >> 2] = $17;
    HEAP8[$power47] = $add55;
    HEAP32[$size >> 2] = $shl;
    $and117 = $sub58 & $call12;
    $31 = HEAP32[$v16 >> 2] | 0;
    $arrayidx120102 = $31 + ($and117 << 2) | 0;
    $32 = HEAP32[$arrayidx120102 >> 2] | 0;
    $tobool121103 = ($32 | 0) == 0;
    if ($tobool121103) {
      $i_3 = $and117;
      label = 30;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $neg125 = -$shl | 0;
    $and126 = $call12 & $neg125;
    $sub128 = $conv57 - 1 | 0;
    $shr129 = $and126 >>> ($sub128 >>> 0);
    $shr130 = $sub58 >>> 2;
    $and131 = $shr129 & $shr130;
    $or132 = $and131 | 1;
    $conv133 = $or132 & 255;
    $33 = HEAP32[$v16 >> 2] | 0;
    $step_4104 = 0;
    $i_2105 = $and117;
    label = 29;
    break;
   case 29:
    $tobool123 = $step_4104 << 24 >> 24 == 0;
    $conv133_step_4104 = $tobool123 ? $conv133 : $step_4104;
    $conv135 = $conv133_step_4104 & 255;
    $cmp136 = $i_2105 >>> 0 < $conv135 >>> 0;
    $sub140 = $cmp136 ? $shl : 0;
    $sub140_pn = $i_2105 + $sub140 | 0;
    $i_2_be = $sub140_pn - $conv135 | 0;
    $arrayidx120 = $33 + ($i_2_be << 2) | 0;
    $34 = HEAP32[$arrayidx120 >> 2] | 0;
    $tobool121 = ($34 | 0) == 0;
    if ($tobool121) {
      $i_3 = $i_2_be;
      label = 30;
      break;
    } else {
      $step_4104 = $conv133_step_4104;
      $i_2105 = $i_2_be;
      label = 29;
      break;
    }
   case 30:
    $mem150 = $table + 16 | 0;
    $35 = HEAP32[$mem150 >> 2] | 0;
    $malloc_fcn151 = $35 | 0;
    $36 = HEAP32[$malloc_fcn151 >> 2] | 0;
    $call152 = FUNCTION_TABLE_ii[$36 & 1023]($createSize) | 0;
    $37 = $call152;
    $v153 = $table | 0;
    $38 = HEAP32[$v153 >> 2] | 0;
    $arrayidx154 = $38 + ($i_3 << 2) | 0;
    HEAP32[$arrayidx154 >> 2] = $37;
    $39 = HEAP32[$v153 >> 2] | 0;
    $arrayidx156 = $39 + ($i_3 << 2) | 0;
    $40 = HEAP32[$arrayidx156 >> 2] | 0;
    $tobool157 = ($40 | 0) == 0;
    if ($tobool157) {
      $retval_0 = 0;
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $41 = $40;
    _memset($41 | 0, 0, $createSize | 0);
    $42 = HEAP32[$v153 >> 2] | 0;
    $arrayidx163 = $42 + ($i_3 << 2) | 0;
    $43 = HEAP32[$arrayidx163 >> 2] | 0;
    $name164 = $43 | 0;
    HEAP32[$name164 >> 2] = $name;
    $used165 = $table + 12 | 0;
    $44 = HEAP32[$used165 >> 2] | 0;
    $inc166 = $44 + 1 | 0;
    HEAP32[$used165 >> 2] = $inc166;
    $45 = HEAP32[$v153 >> 2] | 0;
    $arrayidx168 = $45 + ($i_3 << 2) | 0;
    $46 = HEAP32[$arrayidx168 >> 2] | 0;
    $retval_0 = $46;
    label = 32;
    break;
   case 32:
    return $retval_0 | 0;
  }
  return 0;
}
function _hashTableDestroy($table) {
  $table = $table | 0;
  var $size = 0, $0 = 0, $cmp7 = 0, $mem = 0, $1 = 0, $free_fcn8 = 0, $2 = 0, $v = 0, $3 = 0, $4 = 0, $5 = 0, $i_09 = 0, $arrayidx = 0, $6 = 0, $7 = 0, $inc = 0, $8 = 0, $cmp = 0, $9 = 0, $free_fcn = 0, $10 = 0, $11 = 0, $_lcssa6 = 0, $_lcssa = 0, $12 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $size = $table + 8 | 0;
    $0 = HEAP32[$size >> 2] | 0;
    $cmp7 = ($0 | 0) == 0;
    $mem = $table + 16 | 0;
    $1 = HEAP32[$mem >> 2] | 0;
    $free_fcn8 = $1 + 8 | 0;
    $2 = HEAP32[$free_fcn8 >> 2] | 0;
    $v = $table | 0;
    $3 = HEAP32[$v >> 2] | 0;
    if ($cmp7) {
      $_lcssa = $2;
      $_lcssa6 = $3;
      label = 4;
      break;
    } else {
      $i_09 = 0;
      $5 = $2;
      $4 = $3;
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $4 + ($i_09 << 2) | 0;
    $6 = HEAP32[$arrayidx >> 2] | 0;
    $7 = $6;
    FUNCTION_TABLE_vi[$5 & 1023]($7);
    $inc = $i_09 + 1 | 0;
    $8 = HEAP32[$size >> 2] | 0;
    $cmp = $inc >>> 0 < $8 >>> 0;
    $9 = HEAP32[$mem >> 2] | 0;
    $free_fcn = $9 + 8 | 0;
    $10 = HEAP32[$free_fcn >> 2] | 0;
    $11 = HEAP32[$v >> 2] | 0;
    if ($cmp) {
      $i_09 = $inc;
      $5 = $10;
      $4 = $11;
      label = 3;
      break;
    } else {
      $_lcssa = $10;
      $_lcssa6 = $11;
      label = 4;
      break;
    }
   case 4:
    $12 = $_lcssa6;
    FUNCTION_TABLE_vi[$_lcssa & 1023]($12);
    return;
  }
}
function _addBinding($parser, $prefix, $attId, $uri, $bindingsPtr) {
  $parser = $parser | 0;
  $prefix = $prefix | 0;
  $attId = $attId | 0;
  $uri = $uri | 0;
  $bindingsPtr = $bindingsPtr | 0;
  var $0 = 0, $cmp = 0, $name = 0, $1 = 0, $tobool = 0, $name2 = 0, $2 = 0, $tobool3 = 0, $3 = 0, $cmp7 = 0, $arrayidx11 = 0, $4 = 0, $cmp13 = 0, $arrayidx17 = 0, $5 = 0, $cmp19 = 0, $arrayidx23 = 0, $6 = 0, $cmp25 = 0, $arrayidx29 = 0, $7 = 0, $cmp31 = 0, $arrayidx35 = 0, $8 = 0, $cmp37 = 0, $9 = 0, $arrayidx42 = 0, $10 = 0, $cmp44 = 0, $_ = 0, $mustBeXML_0 = 0, $11 = 0, $tobool5080 = 0, $tobool64 = 0, $tobool5285 = 0, $12 = 0, $arrayidx4984 = 0, $len_083 = 0, $isXMLNS_082 = 0, $isXML_081 = 0, $cmp54 = 0, $arrayidx58 = 0, $13 = 0, $cmp60 = 0, $isXML_1 = 0, $tobool67 = 0, $or_cond = 0, $cmp69 = 0, $14 = 0, $arrayidx74 = 0, $15 = 0, $cmp76 = 0, $isXMLNS_1 = 0, $inc = 0, $arrayidx49 = 0, $16 = 0, $tobool50 = 0, $tobool52 = 0, $isXMLNS_0_lcssa92 = 0, $len_0_lcssa90 = 0, $cmp82 = 0, $phitmp79 = 0, $isXMLNS_0_lcssa91 = 0, $len_0_lcssa89 = 0, $17 = 0, $tobool86 = 0, $cmp88 = 0, $phitmp78 = 0, $18 = 0, $conv93 = 0, $cmp95 = 0, $tobool99 = 0, $cond = 0, $tobool101 = 0, $m_namespaceSeparator = 0, $19 = 0, $not_tobool104 = 0, $inc106 = 0, $len_0_inc106 = 0, $m_freeBindingList = 0, $20 = 0, $tobool108 = 0, $uriAlloc = 0, $21 = 0, $cmp111 = 0, $realloc_fcn = 0, $22 = 0, $uri114 = 0, $23 = 0, $add = 0, $call = 0, $cmp115 = 0, $nextTagBinding = 0, $24 = 0, $malloc_fcn = 0, $25 = 0, $call125 = 0, $26 = 0, $tobool126 = 0, $27 = 0, $add131 = 0, $call133 = 0, $uri134 = 0, $28 = 0, $tobool136 = 0, $free_fcn = 0, $29 = 0, $uriAlloc141 = 0, $30 = 0, $b_0 = 0, $uriLen = 0, $uri143 = 0, $31 = 0, $32 = 0, $tobool146 = 0, $sub = 0, $33 = 0, $arrayidx150 = 0, $prefix152 = 0, $attId153 = 0, $binding = 0, $34 = 0, $prevPrefixBinding = 0, $35 = 0, $cmp155 = 0, $m_dtd = 0, $36 = 0, $defaultPrefix = 0, $cmp158 = 0, $storemerge = 0, $37 = 0, $nextTagBinding165 = 0, $tobool166 = 0, $m_startNamespaceDeclHandler = 0, $38 = 0, $tobool168 = 0, $m_handlerArg = 0, $39 = 0, $40 = 0, $41 = 0, $tobool173 = 0, $cond174 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$uri] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $name = $prefix | 0;
    $1 = HEAP32[$name >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $retval_0 = 28;
      label = 47;
      break;
    }
   case 4:
    $name2 = $prefix | 0;
    $2 = HEAP32[$name2 >> 2] | 0;
    $tobool3 = ($2 | 0) == 0;
    if ($tobool3) {
      $mustBeXML_0 = 0;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = HEAP8[$2] | 0;
    $cmp7 = $3 << 24 >> 24 == 120;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      $mustBeXML_0 = 0;
      label = 12;
      break;
    }
   case 6:
    $arrayidx11 = $2 + 1 | 0;
    $4 = HEAP8[$arrayidx11] | 0;
    $cmp13 = $4 << 24 >> 24 == 109;
    if ($cmp13) {
      label = 7;
      break;
    } else {
      $mustBeXML_0 = 0;
      label = 12;
      break;
    }
   case 7:
    $arrayidx17 = $2 + 2 | 0;
    $5 = HEAP8[$arrayidx17] | 0;
    $cmp19 = $5 << 24 >> 24 == 108;
    if ($cmp19) {
      label = 8;
      break;
    } else {
      $mustBeXML_0 = 0;
      label = 12;
      break;
    }
   case 8:
    $arrayidx23 = $2 + 3 | 0;
    $6 = HEAP8[$arrayidx23] | 0;
    $cmp25 = $6 << 24 >> 24 == 110;
    if ($cmp25) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $arrayidx29 = $2 + 4 | 0;
    $7 = HEAP8[$arrayidx29] | 0;
    $cmp31 = $7 << 24 >> 24 == 115;
    if ($cmp31) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $arrayidx35 = $2 + 5 | 0;
    $8 = HEAP8[$arrayidx35] | 0;
    $cmp37 = $8 << 24 >> 24 == 0;
    if ($cmp37) {
      $retval_0 = 39;
      label = 47;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $9 = HEAP32[$name2 >> 2] | 0;
    $arrayidx42 = $9 + 3 | 0;
    $10 = HEAP8[$arrayidx42] | 0;
    $cmp44 = $10 << 24 >> 24 == 0;
    $_ = $cmp44 & 1;
    $mustBeXML_0 = $_;
    label = 12;
    break;
   case 12:
    $11 = HEAP8[$uri] | 0;
    $tobool5080 = $11 << 24 >> 24 == 0;
    if ($tobool5080) {
      $len_0_lcssa90 = 0;
      $isXMLNS_0_lcssa92 = 1;
      label = 24;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $tobool64 = $mustBeXML_0 << 24 >> 24 != 0;
    $isXML_081 = 1;
    $isXMLNS_082 = 1;
    $len_083 = 0;
    $arrayidx4984 = $uri;
    $12 = $11;
    $tobool5285 = 1;
    label = 14;
    break;
   case 14:
    if ($tobool5285) {
      label = 15;
      break;
    } else {
      $isXML_1 = 0;
      label = 18;
      break;
    }
   case 15:
    $cmp54 = ($len_083 | 0) > 36;
    if ($cmp54) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $arrayidx58 = $len_083 + 89704 | 0;
    $13 = HEAP8[$arrayidx58] | 0;
    $cmp60 = $12 << 24 >> 24 == $13 << 24 >> 24;
    if ($cmp60) {
      $isXML_1 = $isXML_081;
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isXML_1 = 0;
    label = 18;
    break;
   case 18:
    $tobool67 = $isXMLNS_082 << 24 >> 24 == 0;
    $or_cond = $tobool64 | $tobool67;
    if ($or_cond) {
      $isXMLNS_1 = $isXMLNS_082;
      label = 22;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $cmp69 = ($len_083 | 0) > 29;
    if ($cmp69) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $14 = HEAP8[$arrayidx4984] | 0;
    $arrayidx74 = $len_083 + 89672 | 0;
    $15 = HEAP8[$arrayidx74] | 0;
    $cmp76 = $14 << 24 >> 24 == $15 << 24 >> 24;
    if ($cmp76) {
      $isXMLNS_1 = $isXMLNS_082;
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $isXMLNS_1 = 0;
    label = 22;
    break;
   case 22:
    $inc = $len_083 + 1 | 0;
    $arrayidx49 = $uri + $inc | 0;
    $16 = HEAP8[$arrayidx49] | 0;
    $tobool50 = $16 << 24 >> 24 == 0;
    $tobool52 = $isXML_1 << 24 >> 24 != 0;
    if ($tobool50) {
      label = 23;
      break;
    } else {
      $isXML_081 = $isXML_1;
      $isXMLNS_082 = $isXMLNS_1;
      $len_083 = $inc;
      $arrayidx4984 = $arrayidx49;
      $12 = $16;
      $tobool5285 = $tobool52;
      label = 14;
      break;
    }
   case 23:
    if ($tobool52) {
      $len_0_lcssa90 = $inc;
      $isXMLNS_0_lcssa92 = $isXMLNS_1;
      label = 24;
      break;
    } else {
      $17 = 0;
      $len_0_lcssa89 = $inc;
      $isXMLNS_0_lcssa91 = $isXMLNS_1;
      label = 25;
      break;
    }
   case 24:
    $cmp82 = ($len_0_lcssa90 | 0) == 36;
    $phitmp79 = $cmp82 & 1;
    $17 = $phitmp79;
    $len_0_lcssa89 = $len_0_lcssa90;
    $isXMLNS_0_lcssa91 = $isXMLNS_0_lcssa92;
    label = 25;
    break;
   case 25:
    $tobool86 = $isXMLNS_0_lcssa91 << 24 >> 24 == 0;
    if ($tobool86) {
      $18 = 0;
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $cmp88 = ($len_0_lcssa89 | 0) == 29;
    $phitmp78 = $cmp88 & 1;
    $18 = $phitmp78;
    label = 27;
    break;
   case 27:
    $conv93 = $mustBeXML_0 & 255;
    $cmp95 = ($conv93 | 0) == ($17 | 0);
    if ($cmp95) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $tobool99 = $mustBeXML_0 << 24 >> 24 != 0;
    $cond = $tobool99 ? 38 : 40;
    $retval_0 = $cond;
    label = 47;
    break;
   case 29:
    $tobool101 = $18 << 24 >> 24 == 0;
    if ($tobool101) {
      label = 30;
      break;
    } else {
      $retval_0 = 40;
      label = 47;
      break;
    }
   case 30:
    $m_namespaceSeparator = $parser + 456 | 0;
    $19 = HEAP8[$m_namespaceSeparator] | 0;
    $not_tobool104 = $19 << 24 >> 24 != 0;
    $inc106 = $not_tobool104 & 1;
    $len_0_inc106 = $inc106 + $len_0_lcssa89 | 0;
    $m_freeBindingList = $parser + 360 | 0;
    $20 = HEAP32[$m_freeBindingList >> 2] | 0;
    $tobool108 = ($20 | 0) == 0;
    if ($tobool108) {
      label = 35;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $uriAlloc = $20 + 24 | 0;
    $21 = HEAP32[$uriAlloc >> 2] | 0;
    $cmp111 = ($len_0_inc106 | 0) > ($21 | 0);
    if ($cmp111) {
      label = 32;
      break;
    } else {
      label = 34;
      break;
    }
   case 32:
    $realloc_fcn = $parser + 16 | 0;
    $22 = HEAP32[$realloc_fcn >> 2] | 0;
    $uri114 = $20 + 16 | 0;
    $23 = HEAP32[$uri114 >> 2] | 0;
    $add = $len_0_inc106 + 24 | 0;
    $call = FUNCTION_TABLE_iii[$22 & 1023]($23, $add) | 0;
    $cmp115 = ($call | 0) == 0;
    if ($cmp115) {
      $retval_0 = 1;
      label = 47;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    HEAP32[$uri114 >> 2] = $call;
    HEAP32[$uriAlloc >> 2] = $add;
    label = 34;
    break;
   case 34:
    $nextTagBinding = $20 + 4 | 0;
    $24 = HEAP32[$nextTagBinding >> 2] | 0;
    HEAP32[$m_freeBindingList >> 2] = $24;
    $b_0 = $20;
    label = 39;
    break;
   case 35:
    $malloc_fcn = $parser + 12 | 0;
    $25 = HEAP32[$malloc_fcn >> 2] | 0;
    $call125 = FUNCTION_TABLE_ii[$25 & 1023](28) | 0;
    $26 = $call125;
    $tobool126 = ($call125 | 0) == 0;
    if ($tobool126) {
      $retval_0 = 1;
      label = 47;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $27 = HEAP32[$malloc_fcn >> 2] | 0;
    $add131 = $len_0_inc106 + 24 | 0;
    $call133 = FUNCTION_TABLE_ii[$27 & 1023]($add131) | 0;
    $uri134 = $call125 + 16 | 0;
    $28 = $uri134;
    HEAP32[$28 >> 2] = $call133;
    $tobool136 = ($call133 | 0) == 0;
    if ($tobool136) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $free_fcn = $parser + 20 | 0;
    $29 = HEAP32[$free_fcn >> 2] | 0;
    FUNCTION_TABLE_vi[$29 & 1023]($call125);
    $retval_0 = 1;
    label = 47;
    break;
   case 38:
    $uriAlloc141 = $call125 + 24 | 0;
    $30 = $uriAlloc141;
    HEAP32[$30 >> 2] = $add131;
    $b_0 = $26;
    label = 39;
    break;
   case 39:
    $uriLen = $b_0 + 20 | 0;
    HEAP32[$uriLen >> 2] = $len_0_inc106;
    $uri143 = $b_0 + 16 | 0;
    $31 = HEAP32[$uri143 >> 2] | 0;
    _memcpy($31 | 0, $uri | 0, $len_0_inc106);
    $32 = HEAP8[$m_namespaceSeparator] | 0;
    $tobool146 = $32 << 24 >> 24 == 0;
    if ($tobool146) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $sub = $len_0_inc106 - 1 | 0;
    $33 = HEAP32[$uri143 >> 2] | 0;
    $arrayidx150 = $33 + $sub | 0;
    HEAP8[$arrayidx150] = $32;
    label = 41;
    break;
   case 41:
    $prefix152 = $b_0 | 0;
    HEAP32[$prefix152 >> 2] = $prefix;
    $attId153 = $b_0 + 12 | 0;
    HEAP32[$attId153 >> 2] = $attId;
    $binding = $prefix + 4 | 0;
    $34 = HEAP32[$binding >> 2] | 0;
    $prevPrefixBinding = $b_0 + 8 | 0;
    HEAP32[$prevPrefixBinding >> 2] = $34;
    $35 = HEAP8[$uri] | 0;
    $cmp155 = $35 << 24 >> 24 == 0;
    if ($cmp155) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    $m_dtd = $parser + 340 | 0;
    $36 = HEAP32[$m_dtd >> 2] | 0;
    $defaultPrefix = $36 + 132 | 0;
    $cmp158 = ($defaultPrefix | 0) == ($prefix | 0);
    if ($cmp158) {
      $storemerge = 0;
      label = 44;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $storemerge = $b_0;
    label = 44;
    break;
   case 44:
    HEAP32[$binding >> 2] = $storemerge;
    $37 = HEAP32[$bindingsPtr >> 2] | 0;
    $nextTagBinding165 = $b_0 + 4 | 0;
    HEAP32[$nextTagBinding165 >> 2] = $37;
    HEAP32[$bindingsPtr >> 2] = $b_0;
    $tobool166 = ($attId | 0) == 0;
    if ($tobool166) {
      $retval_0 = 0;
      label = 47;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $m_startNamespaceDeclHandler = $parser + 100 | 0;
    $38 = HEAP32[$m_startNamespaceDeclHandler >> 2] | 0;
    $tobool168 = ($38 | 0) == 0;
    if ($tobool168) {
      $retval_0 = 0;
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $m_handlerArg = $parser + 4 | 0;
    $39 = HEAP32[$m_handlerArg >> 2] | 0;
    $40 = HEAP32[$name2 >> 2] | 0;
    $41 = HEAP32[$binding >> 2] | 0;
    $tobool173 = ($41 | 0) != 0;
    $cond174 = $tobool173 ? $uri : 0;
    FUNCTION_TABLE_viii[$38 & 1023]($39, $40, $cond174);
    $retval_0 = 0;
    label = 47;
    break;
   case 47:
    return $retval_0 | 0;
  }
  return 0;
}
function _initializeEncoding($parser) {
  $parser = $parser | 0;
  var $m_protocolEncodingName = 0, $0 = 0, $m_initEncoding = 0, $m_encoding = 0, $call = 0, $tobool1 = 0, $1 = 0, $call3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_protocolEncodingName = $parser + 228 | 0;
    $0 = HEAP32[$m_protocolEncodingName >> 2] | 0;
    $m_initEncoding = $parser + 148 | 0;
    $m_encoding = $parser + 144 | 0;
    $call = _XmlInitEncoding($m_initEncoding, $m_encoding, $0) | 0;
    $tobool1 = ($call | 0) == 0;
    if ($tobool1) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 4;
      break;
    }
   case 3:
    $1 = HEAP32[$m_protocolEncodingName >> 2] | 0;
    $call3 = _handleUnknownEncoding($parser, $1) | 0;
    $retval_0 = $call3;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _processXmlDecl($parser, $isGeneralTextEntity, $s, $next) {
  $parser = $parser | 0;
  $isGeneralTextEntity = $isGeneralTextEntity | 0;
  $s = $s | 0;
  $next = $next | 0;
  var $encodingName = 0, $newEncoding = 0, $version = 0, $versionend = 0, $standalone = 0, $m_encoding = 0, $0 = 0, $m_eventPtr = 0, $call = 0, $tobool1 = 0, $tobool4 = 0, $_ = 0, $1 = 0, $cmp = 0, $m_dtd = 0, $2 = 0, $standalone7 = 0, $m_xmlDeclHandler = 0, $3 = 0, $tobool9 = 0, $4 = 0, $cmp11 = 0, $m_temp2Pool = 0, $5 = 0, $nameLength = 0, $6 = 0, $call17 = 0, $add_ptr = 0, $call18 = 0, $tobool19 = 0, $ptr = 0, $7 = 0, $start = 0, $storedEncName_0 = 0, $8 = 0, $tobool25 = 0, $m_temp2Pool27 = 0, $9 = 0, $10 = 0, $minBytesPerChar = 0, $11 = 0, $idx_neg = 0, $add_ptr30 = 0, $call31 = 0, $tobool32 = 0, $storedversion_0 = 0, $12 = 0, $m_handlerArg = 0, $13 = 0, $14 = 0, $m_defaultHandler = 0, $15 = 0, $tobool38 = 0, $16 = 0, $storedEncName_1 = 0, $storedversion_1 = 0, $m_protocolEncodingName = 0, $17 = 0, $cmp43 = 0, $18 = 0, $tobool46 = 0, $minBytesPerChar48 = 0, $19 = 0, $20 = 0, $minBytesPerChar50 = 0, $21 = 0, $cmp51 = 0, $22 = 0, $23 = 0, $tobool58 = 0, $tobool60 = 0, $m_temp2Pool62 = 0, $24 = 0, $nameLength65 = 0, $25 = 0, $call67 = 0, $add_ptr68 = 0, $call69 = 0, $tobool70 = 0, $storedEncName_2 = 0, $call74 = 0, $m_temp2Pool75 = 0, $cmp76 = 0, $26 = 0, $tobool84 = 0, $tobool85 = 0, $or_cond = 0, $m_temp2Pool87 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 40 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $encodingName = __stackBase__ | 0;
    $newEncoding = __stackBase__ + 8 | 0;
    $version = __stackBase__ + 16 | 0;
    $versionend = __stackBase__ + 24 | 0;
    $standalone = __stackBase__ + 32 | 0;
    HEAP32[$encodingName >> 2] = 0;
    HEAP32[$newEncoding >> 2] = 0;
    HEAP32[$version >> 2] = 0;
    HEAP32[$standalone >> 2] = -1;
    $m_encoding = $parser + 144 | 0;
    $0 = HEAP32[$m_encoding >> 2] | 0;
    $m_eventPtr = $parser + 272 | 0;
    $call = _XmlParseXmlDecl($isGeneralTextEntity, $0, $s, $next, $m_eventPtr, $version, $versionend, $encodingName, $newEncoding, $standalone) | 0;
    $tobool1 = ($call | 0) == 0;
    $tobool4 = ($isGeneralTextEntity | 0) != 0;
    if ($tobool1) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $_ = $tobool4 ? 31 : 30;
    $retval_0 = $_;
    label = 28;
    break;
   case 4:
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $1 = HEAP32[$standalone >> 2] | 0;
    $cmp = ($1 | 0) == 1;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $m_dtd = $parser + 340 | 0;
    $2 = HEAP32[$m_dtd >> 2] | 0;
    $standalone7 = $2 + 130 | 0;
    HEAP8[$standalone7] = 1;
    label = 7;
    break;
   case 7:
    $m_xmlDeclHandler = $parser + 140 | 0;
    $3 = HEAP32[$m_xmlDeclHandler >> 2] | 0;
    $tobool9 = ($3 | 0) == 0;
    if ($tobool9) {
      label = 14;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $4 = HEAP32[$encodingName >> 2] | 0;
    $cmp11 = ($4 | 0) == 0;
    if ($cmp11) {
      $storedEncName_0 = 0;
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $m_temp2Pool = $parser + 424 | 0;
    $5 = HEAP32[$m_encoding >> 2] | 0;
    $nameLength = $5 + 28 | 0;
    $6 = HEAP32[$nameLength >> 2] | 0;
    $call17 = FUNCTION_TABLE_iii[$6 & 1023]($5, $4) | 0;
    $add_ptr = $4 + $call17 | 0;
    $call18 = _poolStoreString($m_temp2Pool, $5, $4, $add_ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      $retval_0 = 1;
      label = 28;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $ptr = $parser + 436 | 0;
    $7 = HEAP32[$ptr >> 2] | 0;
    $start = $parser + 440 | 0;
    HEAP32[$start >> 2] = $7;
    $storedEncName_0 = $call18;
    label = 11;
    break;
   case 11:
    $8 = HEAP32[$version >> 2] | 0;
    $tobool25 = ($8 | 0) == 0;
    if ($tobool25) {
      $storedversion_0 = 0;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $m_temp2Pool27 = $parser + 424 | 0;
    $9 = HEAP32[$m_encoding >> 2] | 0;
    $10 = HEAP32[$versionend >> 2] | 0;
    $minBytesPerChar = $9 + 64 | 0;
    $11 = HEAP32[$minBytesPerChar >> 2] | 0;
    $idx_neg = -$11 | 0;
    $add_ptr30 = $10 + $idx_neg | 0;
    $call31 = _poolStoreString($m_temp2Pool27, $9, $8, $add_ptr30) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      $retval_0 = 1;
      label = 28;
      break;
    } else {
      $storedversion_0 = $call31;
      label = 13;
      break;
    }
   case 13:
    $12 = HEAP32[$m_xmlDeclHandler >> 2] | 0;
    $m_handlerArg = $parser + 4 | 0;
    $13 = HEAP32[$m_handlerArg >> 2] | 0;
    $14 = HEAP32[$standalone >> 2] | 0;
    FUNCTION_TABLE_viiii[$12 & 1023]($13, $storedversion_0, $storedEncName_0, $14);
    $storedversion_1 = $storedversion_0;
    $storedEncName_1 = $storedEncName_0;
    label = 16;
    break;
   case 14:
    $m_defaultHandler = $parser + 80 | 0;
    $15 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool38 = ($15 | 0) == 0;
    if ($tobool38) {
      $storedversion_1 = 0;
      $storedEncName_1 = 0;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $16 = HEAP32[$m_encoding >> 2] | 0;
    _reportDefault($parser, $16, $s, $next);
    $storedversion_1 = 0;
    $storedEncName_1 = 0;
    label = 16;
    break;
   case 16:
    $m_protocolEncodingName = $parser + 228 | 0;
    $17 = HEAP32[$m_protocolEncodingName >> 2] | 0;
    $cmp43 = ($17 | 0) == 0;
    if ($cmp43) {
      label = 17;
      break;
    } else {
      label = 26;
      break;
    }
   case 17:
    $18 = HEAP32[$newEncoding >> 2] | 0;
    $tobool46 = ($18 | 0) == 0;
    if ($tobool46) {
      label = 21;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $minBytesPerChar48 = $18 + 64 | 0;
    $19 = HEAP32[$minBytesPerChar48 >> 2] | 0;
    $20 = HEAP32[$m_encoding >> 2] | 0;
    $minBytesPerChar50 = $20 + 64 | 0;
    $21 = HEAP32[$minBytesPerChar50 >> 2] | 0;
    $cmp51 = ($19 | 0) == ($21 | 0);
    if ($cmp51) {
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $22 = HEAP32[$encodingName >> 2] | 0;
    HEAP32[$m_eventPtr >> 2] = $22;
    $retval_0 = 19;
    label = 28;
    break;
   case 20:
    HEAP32[$m_encoding >> 2] = $18;
    label = 26;
    break;
   case 21:
    $23 = HEAP32[$encodingName >> 2] | 0;
    $tobool58 = ($23 | 0) == 0;
    if ($tobool58) {
      label = 26;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $tobool60 = ($storedEncName_1 | 0) == 0;
    if ($tobool60) {
      label = 23;
      break;
    } else {
      $storedEncName_2 = $storedEncName_1;
      label = 24;
      break;
    }
   case 23:
    $m_temp2Pool62 = $parser + 424 | 0;
    $24 = HEAP32[$m_encoding >> 2] | 0;
    $nameLength65 = $24 + 28 | 0;
    $25 = HEAP32[$nameLength65 >> 2] | 0;
    $call67 = FUNCTION_TABLE_iii[$25 & 1023]($24, $23) | 0;
    $add_ptr68 = $23 + $call67 | 0;
    $call69 = _poolStoreString($m_temp2Pool62, $24, $23, $add_ptr68) | 0;
    $tobool70 = ($call69 | 0) == 0;
    if ($tobool70) {
      $retval_0 = 1;
      label = 28;
      break;
    } else {
      $storedEncName_2 = $call69;
      label = 24;
      break;
    }
   case 24:
    $call74 = _handleUnknownEncoding($parser, $storedEncName_2) | 0;
    $m_temp2Pool75 = $parser + 424 | 0;
    _poolClear($m_temp2Pool75);
    $cmp76 = ($call74 | 0) == 18;
    if ($cmp76) {
      label = 25;
      break;
    } else {
      $retval_0 = $call74;
      label = 28;
      break;
    }
   case 25:
    $26 = HEAP32[$encodingName >> 2] | 0;
    HEAP32[$m_eventPtr >> 2] = $26;
    $retval_0 = 18;
    label = 28;
    break;
   case 26:
    $tobool84 = ($storedEncName_1 | 0) == 0;
    $tobool85 = ($storedversion_1 | 0) == 0;
    $or_cond = $tobool84 & $tobool85;
    if ($or_cond) {
      $retval_0 = 0;
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $m_temp2Pool87 = $parser + 424 | 0;
    _poolClear($m_temp2Pool87);
    $retval_0 = 0;
    label = 28;
    break;
   case 28:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _externalEntityContentProcessor($parser, $start, $end, $endPtr) {
  $parser = $parser | 0;
  $start = $start | 0;
  $end = $end | 0;
  $endPtr = $endPtr | 0;
  var $m_encoding = 0, $0 = 0, $finalBuffer = 0, $1 = 0, $lnot = 0, $conv = 0, $call = 0, $cmp = 0, $call2 = 0, $tobool3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_encoding = $parser + 144 | 0;
    $0 = HEAP32[$m_encoding >> 2] | 0;
    $finalBuffer = $parser + 468 | 0;
    $1 = HEAP8[$finalBuffer] | 0;
    $lnot = $1 << 24 >> 24 == 0;
    $conv = $lnot & 1;
    $call = _doContent($parser, 1, $0, $start, $end, $endPtr, $conv) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call2 = _storeRawNames($parser) | 0;
    $tobool3 = $call2 << 24 >> 24 == 0;
    if ($tobool3) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $retval_0 = $call;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _doContent($parser, $startTagLevel, $enc, $s, $end, $nextPtr, $haveMore) {
  $parser = $parser | 0;
  $startTagLevel = $startTagLevel | 0;
  $enc = $enc | 0;
  $s = $s | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  $haveMore = $haveMore | 0;
  var $s_addr = 0, $next = 0, $c = 0, $ch = 0, $toPtr = 0, $fromPtr = 0, $bindings234 = 0, $name235 = 0, $buf416 = 0, $c432 = 0, $dataPtr = 0, $dataPtr509 = 0, $m_dtd = 0, $0 = 0, $m_encoding = 0, $1 = 0, $cmp = 0, $m_eventPtr = 0, $m_eventEndPtr = 0, $m_openInternalEntities = 0, $2 = 0, $internalEventPtr = 0, $internalEventEndPtr = 0, $eventEndPP_0 = 0, $eventPP_0 = 0, $3 = 0, $arrayidx = 0, $m_defaultHandler546 = 0, $parsing = 0, $predefinedEntityName = 0, $minBytesPerChar = 0, $pool = 0, $generalEntities = 0, $start = 0, $ptr = 0, $hasParamEntityRefs = 0, $m_externalEntityRefHandler = 0, $m_defaultHandler140 = 0, $m_externalEntityRefHandlerArg = 0, $start136 = 0, $ptr138 = 0, $m_defaultExpandInternalEntities = 0, $m_skippedEntityHandler104 = 0, $m_defaultHandler111 = 0, $m_handlerArg108 = 0, $standalone = 0, $m_skippedEntityHandler = 0, $m_defaultHandler87 = 0, $m_handlerArg85 = 0, $m_characterDataHandler44 = 0, $m_defaultHandler50 = 0, $m_handlerArg48 = 0, $m_freeTagList = 0, $malloc_fcn = 0, $m_tagStack = 0, $minBytesPerChar173 = 0, $nameLength = 0, $m_tagLevel177 = 0, $utf8Convert = 0, $realloc_fcn = 0, $m_startElementHandler = 0, $m_defaultHandler223 = 0, $m_tempPool228 = 0, $m_handlerArg219 = 0, $m_atts = 0, $minBytesPerChar231 = 0, $m_tempPool236 = 0, $nameLength237 = 0, $str241 = 0, $ptr247 = 0, $start249 = 0, $m_startElementHandler258 = 0, $m_endElementHandler = 0, $m_defaultHandler278 = 0, $m_tagLevel294 = 0, $m_endNamespaceDeclHandler = 0, $m_freeBindingList = 0, $m_handlerArg287 = 0, $m_handlerArg273 = 0, $m_handlerArg262 = 0, $m_atts264 = 0, $m_tagLevel301 = 0, $m_tagStack308 = 0, $m_freeTagList311 = 0, $minBytesPerChar314 = 0, $nameLength316 = 0, $m_endElementHandler329 = 0, $m_defaultHandler371 = 0, $m_ns = 0, $m_handlerArg367 = 0, $m_ns_triplets = 0, $m_namespaceSeparator = 0, $m_endNamespaceDeclHandler382 = 0, $m_freeBindingList393 = 0, $m_handlerArg386 = 0, $charRefNumber = 0, $m_characterDataHandler413 = 0, $m_defaultHandler422 = 0, $m_handlerArg418 = 0, $arraydecay = 0, $m_characterDataHandler429 = 0, $m_defaultHandler436 = 0, $m_handlerArg434 = 0, $m_startCdataSectionHandler = 0, $m_defaultHandler448 = 0, $m_handlerArg446 = 0, $m_characterDataHandler502 = 0, $m_defaultHandler531 = 0, $isUtf8505 = 0, $m_handlerArg525 = 0, $m_dataBuf510 = 0, $utf8Convert511 = 0, $m_dataBufEnd512 = 0, $m_handlerArg513 = 0, $4 = 0, $5 = 0, $call = 0, $6 = 0, $tobool = 0, $7 = 0, $m_characterDataHandler = 0, $8 = 0, $tobool4 = 0, $9 = 0, $m_handlerArg = 0, $10 = 0, $m_defaultHandler = 0, $11 = 0, $tobool8 = 0, $12 = 0, $cmp12 = 0, $m_tagLevel = 0, $13 = 0, $cmp15 = 0, $tobool19 = 0, $14 = 0, $cmp22 = 0, $m_tagLevel24 = 0, $15 = 0, $cmp25 = 0, $16 = 0, $17 = 0, $tobool31 = 0, $18 = 0, $tobool35 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $add_ptr = 0, $23 = 0, $idx_neg = 0, $add_ptr40 = 0, $call41 = 0, $conv = 0, $tobool42 = 0, $24 = 0, $tobool45 = 0, $25 = 0, $26 = 0, $tobool51 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $add_ptr57 = 0, $31 = 0, $idx_neg59 = 0, $add_ptr60 = 0, $call61 = 0, $tobool62 = 0, $call65 = 0, $32 = 0, $33 = 0, $34 = 0, $tobool68 = 0, $35 = 0, $tobool70 = 0, $tobool72 = 0, $is_internal = 0, $36 = 0, $tobool75 = 0, $tobool80 = 0, $37 = 0, $tobool82 = 0, $38 = 0, $39 = 0, $tobool88 = 0, $40 = 0, $41 = 0, $open = 0, $42 = 0, $43 = 0, $tobool94 = 0, $44 = 0, $45 = 0, $tobool97 = 0, $46 = 0, $47 = 0, $tobool100 = 0, $48 = 0, $tobool102 = 0, $49 = 0, $tobool105 = 0, $50 = 0, $name109 = 0, $51 = 0, $52 = 0, $tobool112 = 0, $53 = 0, $54 = 0, $call117 = 0, $cmp118 = 0, $55 = 0, $tobool123 = 0, $call126 = 0, $tobool128 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $call132 = 0, $tobool133 = 0, $64 = 0, $65 = 0, $tobool141 = 0, $66 = 0, $67 = 0, $68 = 0, $tobool148 = 0, $parent = 0, $69 = 0, $70 = 0, $call154 = 0, $71 = 0, $tobool155 = 0, $72 = 0, $call160 = 0, $buf = 0, $73 = 0, $tobool162 = 0, $free_fcn = 0, $74 = 0, $add_ptr167 = 0, $bufEnd = 0, $75 = 0, $tag_0 = 0, $bindings = 0, $76 = 0, $parent169 = 0, $name171 = 0, $localPart = 0, $prefix = 0, $77 = 0, $78 = 0, $add_ptr174 = 0, $rawName = 0, $79 = 0, $call176 = 0, $rawNameLength = 0, $80 = 0, $inc = 0, $81 = 0, $82 = 0, $add_ptr180 = 0, $buf182 = 0, $83 = 0, $bufEnd184 = 0, $storemerge = 0, $84 = 0, $85 = 0, $add_ptr185 = 0, $86 = 0, $87 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $88 = 0, $cmp187 = 0, $strLen = 0, $89 = 0, $str = 0, $90 = 0, $91 = 0, $call212 = 0, $tobool213 = 0, $92 = 0, $sub_ptr_lhs_cast194 = 0, $sub_ptr_sub196 = 0, $shl = 0, $93 = 0, $call199 = 0, $cmp200 = 0, $add_ptr205 = 0, $add_ptr207 = 0, $94 = 0, $tobool216 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $tobool224 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $add_ptr232 = 0, $104 = 0, $call238 = 0, $add_ptr232_sum = 0, $add_ptr239 = 0, $call240 = 0, $tobool243 = 0, $105 = 0, $106 = 0, $call250 = 0, $tobool251 = 0, $107 = 0, $108 = 0, $tobool259 = 0, $109 = 0, $110 = 0, $111 = 0, $112 = 0, $noElmHandlers_0 = 0, $113 = 0, $tobool266 = 0, $114 = 0, $tobool269 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $tobool277 = 0, $119 = 0, $tobool279 = 0, $120 = 0, $121 = 0, $122 = 0, $tobool283334 = 0, $bindings234_promoted = 0, $123 = 0, $124 = 0, $125 = 0, $tobool284 = 0, $126 = 0, $prefix288 = 0, $127 = 0, $name289 = 0, $128 = 0, $nextTagBinding = 0, $129 = 0, $130 = 0, $nextTagBinding291 = 0, $prevPrefixBinding = 0, $131 = 0, $prefix293 = 0, $132 = 0, $binding = 0, $tobool283 = 0, $133 = 0, $cmp295 = 0, $134 = 0, $call298 = 0, $135 = 0, $cmp302 = 0, $136 = 0, $parent309 = 0, $137 = 0, $138 = 0, $139 = 0, $140 = 0, $mul = 0, $add_ptr315 = 0, $141 = 0, $call317 = 0, $rawNameLength318 = 0, $142 = 0, $cmp319 = 0, $rawName322 = 0, $143 = 0, $call323 = 0, $cmp324 = 0, $144 = 0, $dec = 0, $145 = 0, $tobool330 = 0, $name334 = 0, $localPart335 = 0, $146 = 0, $147 = 0, $tobool337 = 0, $tobool339 = 0, $or_cond = 0, $str342 = 0, $148 = 0, $uriLen = 0, $149 = 0, $add_ptr344 = 0, $150 = 0, $tobool346325 = 0, $151 = 0, $uri_0327 = 0, $localPart332_0326 = 0, $incdec_ptr = 0, $incdec_ptr348 = 0, $152 = 0, $tobool346 = 0, $uri_0_lcssa = 0, $prefix351 = 0, $153 = 0, $154 = 0, $tobool353 = 0, $tobool355 = 0, $or_cond323 = 0, $155 = 0, $uri_1328 = 0, $156 = 0, $tobool359329 = 0, $157 = 0, $uri_1331 = 0, $prefix333_0330 = 0, $incdec_ptr361 = 0, $uri_1 = 0, $158 = 0, $tobool359 = 0, $uri_2 = 0, $159 = 0, $160 = 0, $str369 = 0, $161 = 0, $162 = 0, $tobool372 = 0, $163 = 0, $164 = 0, $bindings377 = 0, $165 = 0, $tobool378333 = 0, $166 = 0, $167 = 0, $tobool383 = 0, $168 = 0, $prefix387 = 0, $169 = 0, $name388 = 0, $170 = 0, $171 = 0, $nextTagBinding391 = 0, $172 = 0, $173 = 0, $nextTagBinding394 = 0, $prevPrefixBinding396 = 0, $174 = 0, $prefix397 = 0, $175 = 0, $binding398 = 0, $176 = 0, $tobool378 = 0, $177 = 0, $cmp401 = 0, $178 = 0, $call404 = 0, $179 = 0, $180 = 0, $call408 = 0, $cmp409 = 0, $181 = 0, $tobool414 = 0, $182 = 0, $call420 = 0, $183 = 0, $tobool423 = 0, $184 = 0, $185 = 0, $186 = 0, $tobool430 = 0, $187 = 0, $188 = 0, $189 = 0, $tobool437 = 0, $190 = 0, $191 = 0, $192 = 0, $tobool443 = 0, $193 = 0, $194 = 0, $tobool449 = 0, $195 = 0, $196 = 0, $call453 = 0, $cmp454 = 0, $197 = 0, $tobool458 = 0, $m_processor = 0, $tobool463 = 0, $198 = 0, $m_characterDataHandler466 = 0, $199 = 0, $tobool467 = 0, $isUtf8 = 0, $200 = 0, $tobool469 = 0, $m_dataBuf = 0, $201 = 0, $utf8Convert471 = 0, $202 = 0, $m_dataBufEnd = 0, $203 = 0, $204 = 0, $m_handlerArg473 = 0, $205 = 0, $206 = 0, $207 = 0, $sub_ptr_lhs_cast476 = 0, $sub_ptr_rhs_cast477 = 0, $sub_ptr_sub478 = 0, $m_handlerArg481 = 0, $208 = 0, $209 = 0, $sub_ptr_lhs_cast482 = 0, $sub_ptr_rhs_cast483 = 0, $sub_ptr_sub484 = 0, $m_defaultHandler487 = 0, $210 = 0, $tobool488 = 0, $211 = 0, $cmp492 = 0, $m_tagLevel496 = 0, $212 = 0, $cmp497 = 0, $213 = 0, $tobool503 = 0, $214 = 0, $tobool506 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $220 = 0, $221 = 0, $222 = 0, $sub_ptr_lhs_cast516 = 0, $sub_ptr_rhs_cast517 = 0, $sub_ptr_sub518 = 0, $223 = 0, $224 = 0, $cmp519 = 0, $225 = 0, $226 = 0, $227 = 0, $sub_ptr_lhs_cast526 = 0, $sub_ptr_rhs_cast527 = 0, $sub_ptr_sub528 = 0, $228 = 0, $tobool532 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $call537 = 0, $tobool538 = 0, $233 = 0, $234 = 0, $call542 = 0, $tobool543 = 0, $235 = 0, $tobool547 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $240 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 112 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s_addr = __stackBase__ | 0;
    $next = __stackBase__ + 8 | 0;
    $c = __stackBase__ + 16 | 0;
    $ch = __stackBase__ + 24 | 0;
    $toPtr = __stackBase__ + 32 | 0;
    $fromPtr = __stackBase__ + 40 | 0;
    $bindings234 = __stackBase__ + 48 | 0;
    $name235 = __stackBase__ + 56 | 0;
    $buf416 = __stackBase__ + 80 | 0;
    $c432 = __stackBase__ + 88 | 0;
    $dataPtr = __stackBase__ + 96 | 0;
    $dataPtr509 = __stackBase__ + 104 | 0;
    HEAP32[$s_addr >> 2] = $s;
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $m_encoding = $parser + 144 | 0;
    $1 = HEAP32[$m_encoding >> 2] | 0;
    $cmp = ($1 | 0) == ($enc | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $m_eventPtr = $parser + 272 | 0;
    $m_eventEndPtr = $parser + 276 | 0;
    $eventPP_0 = $m_eventPtr;
    $eventEndPP_0 = $m_eventEndPtr;
    label = 5;
    break;
   case 4:
    $m_openInternalEntities = $parser + 284 | 0;
    $2 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $internalEventPtr = $2 | 0;
    $internalEventEndPtr = $2 + 4 | 0;
    $eventPP_0 = $internalEventPtr;
    $eventEndPP_0 = $internalEventEndPtr;
    label = 5;
    break;
   case 5:
    $3 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$eventPP_0 >> 2] = $3;
    $arrayidx = $enc + 4 | 0;
    $m_defaultHandler546 = $parser + 80 | 0;
    $parsing = $parser + 464 | 0;
    $predefinedEntityName = $enc + 44 | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $pool = $0 + 80 | 0;
    $generalEntities = $0 | 0;
    $start = $0 + 96 | 0;
    $ptr = $0 + 92 | 0;
    $hasParamEntityRefs = $0 + 129 | 0;
    $m_externalEntityRefHandler = $parser + 112 | 0;
    $m_defaultHandler140 = $parser + 80 | 0;
    $m_externalEntityRefHandlerArg = $parser + 116 | 0;
    $start136 = $parser + 416 | 0;
    $ptr138 = $parser + 412 | 0;
    $m_defaultExpandInternalEntities = $parser + 292 | 0;
    $m_skippedEntityHandler104 = $parser + 120 | 0;
    $m_defaultHandler111 = $parser + 80 | 0;
    $m_handlerArg108 = $parser + 4 | 0;
    $standalone = $0 + 130 | 0;
    $m_skippedEntityHandler = $parser + 120 | 0;
    $m_defaultHandler87 = $parser + 80 | 0;
    $m_handlerArg85 = $parser + 4 | 0;
    $m_characterDataHandler44 = $parser + 60 | 0;
    $m_defaultHandler50 = $parser + 80 | 0;
    $m_handlerArg48 = $parser + 4 | 0;
    $m_freeTagList = $parser + 352 | 0;
    $malloc_fcn = $parser + 12 | 0;
    $m_tagStack = $parser + 348 | 0;
    $minBytesPerChar173 = $enc + 64 | 0;
    $nameLength = $enc + 28 | 0;
    $m_tagLevel177 = $parser + 296 | 0;
    $utf8Convert = $enc + 56 | 0;
    $realloc_fcn = $parser + 16 | 0;
    $m_startElementHandler = $parser + 52 | 0;
    $m_defaultHandler223 = $parser + 80 | 0;
    $m_tempPool228 = $parser + 400 | 0;
    $m_handlerArg219 = $parser + 4 | 0;
    $m_atts = $parser + 376 | 0;
    $minBytesPerChar231 = $enc + 64 | 0;
    $m_tempPool236 = $parser + 400 | 0;
    $nameLength237 = $enc + 28 | 0;
    $str241 = $name235 | 0;
    $ptr247 = $parser + 412 | 0;
    $start249 = $parser + 416 | 0;
    $m_startElementHandler258 = $parser + 52 | 0;
    $m_endElementHandler = $parser + 56 | 0;
    $m_defaultHandler278 = $parser + 80 | 0;
    $m_tagLevel294 = $parser + 296 | 0;
    $m_endNamespaceDeclHandler = $parser + 104 | 0;
    $m_freeBindingList = $parser + 360 | 0;
    $m_handlerArg287 = $parser + 4 | 0;
    $m_handlerArg273 = $parser + 4 | 0;
    $m_handlerArg262 = $parser + 4 | 0;
    $m_atts264 = $parser + 376 | 0;
    $m_tagLevel301 = $parser + 296 | 0;
    $m_tagStack308 = $parser + 348 | 0;
    $m_freeTagList311 = $parser + 352 | 0;
    $minBytesPerChar314 = $enc + 64 | 0;
    $nameLength316 = $enc + 28 | 0;
    $m_endElementHandler329 = $parser + 56 | 0;
    $m_defaultHandler371 = $parser + 80 | 0;
    $m_ns = $parser + 232 | 0;
    $m_handlerArg367 = $parser + 4 | 0;
    $m_ns_triplets = $parser + 233 | 0;
    $m_namespaceSeparator = $parser + 456 | 0;
    $m_endNamespaceDeclHandler382 = $parser + 104 | 0;
    $m_freeBindingList393 = $parser + 360 | 0;
    $m_handlerArg386 = $parser + 4 | 0;
    $charRefNumber = $enc + 40 | 0;
    $m_characterDataHandler413 = $parser + 60 | 0;
    $m_defaultHandler422 = $parser + 80 | 0;
    $m_handlerArg418 = $parser + 4 | 0;
    $arraydecay = $buf416 | 0;
    $m_characterDataHandler429 = $parser + 60 | 0;
    $m_defaultHandler436 = $parser + 80 | 0;
    $m_handlerArg434 = $parser + 4 | 0;
    $m_startCdataSectionHandler = $parser + 72 | 0;
    $m_defaultHandler448 = $parser + 80 | 0;
    $m_handlerArg446 = $parser + 4 | 0;
    $m_characterDataHandler502 = $parser + 60 | 0;
    $m_defaultHandler531 = $parser + 80 | 0;
    $isUtf8505 = $enc + 68 | 0;
    $m_handlerArg525 = $parser + 4 | 0;
    $m_dataBuf510 = $parser + 44 | 0;
    $utf8Convert511 = $enc + 56 | 0;
    $m_dataBufEnd512 = $parser + 48 | 0;
    $m_handlerArg513 = $parser + 4 | 0;
    label = 6;
    break;
   case 6:
    $4 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$next >> 2] = $4;
    $5 = HEAP32[$arrayidx >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$5 & 1023]($enc, $4, $end, $next) | 0;
    $6 = HEAP32[$next >> 2] | 0;
    HEAP32[$eventEndPP_0 >> 2] = $6;
    if (($call | 0) == (-3 | 0)) {
      label = 7;
      break;
    } else if (($call | 0) == (-4 | 0)) {
      label = 16;
      break;
    } else if (($call | 0) == 0) {
      label = 21;
      break;
    } else if (($call | 0) == (-1 | 0)) {
      label = 22;
      break;
    } else if (($call | 0) == (-2 | 0)) {
      label = 24;
      break;
    } else if (($call | 0) == 9) {
      label = 26;
      break;
    } else if (($call | 0) == 2 | ($call | 0) == 1) {
      label = 56;
      break;
    } else if (($call | 0) == 4 | ($call | 0) == 3) {
      label = 72;
      break;
    } else if (($call | 0) == 5) {
      label = 91;
      break;
    } else if (($call | 0) == 10) {
      label = 112;
      break;
    } else if (($call | 0) == 7) {
      label = 117;
      break;
    } else if (($call | 0) == 8) {
      label = 121;
      break;
    } else if (($call | 0) == (-5 | 0)) {
      label = 128;
      break;
    } else if (($call | 0) == 6) {
      label = 141;
      break;
    } else if (($call | 0) == 11) {
      label = 148;
      break;
    } else if (($call | 0) == 13) {
      label = 149;
      break;
    } else if (($call | 0) == 12) {
      $retval_0 = 17;
      label = 154;
      break;
    } else {
      label = 150;
      break;
    }
   case 7:
    $tobool = $haveMore << 24 >> 24 == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $7 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $7;
    $retval_0 = 0;
    label = 154;
    break;
   case 9:
    HEAP32[$eventEndPP_0 >> 2] = $end;
    $m_characterDataHandler = $parser + 60 | 0;
    $8 = HEAP32[$m_characterDataHandler >> 2] | 0;
    $tobool4 = ($8 | 0) == 0;
    if ($tobool4) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP8[$c] = 10;
    $9 = HEAP32[$m_characterDataHandler >> 2] | 0;
    $m_handlerArg = $parser + 4 | 0;
    $10 = HEAP32[$m_handlerArg >> 2] | 0;
    FUNCTION_TABLE_viii[$9 & 1023]($10, $c, 1);
    label = 13;
    break;
   case 11:
    $m_defaultHandler = $parser + 80 | 0;
    $11 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool8 = ($11 | 0) == 0;
    if ($tobool8) {
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $12 = HEAP32[$s_addr >> 2] | 0;
    _reportDefault($parser, $enc, $12, $end);
    label = 13;
    break;
   case 13:
    $cmp12 = ($startTagLevel | 0) == 0;
    if ($cmp12) {
      $retval_0 = 3;
      label = 154;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $m_tagLevel = $parser + 296 | 0;
    $13 = HEAP32[$m_tagLevel >> 2] | 0;
    $cmp15 = ($13 | 0) == ($startTagLevel | 0);
    if ($cmp15) {
      label = 15;
      break;
    } else {
      $retval_0 = 13;
      label = 154;
      break;
    }
   case 15:
    HEAP32[$nextPtr >> 2] = $end;
    $retval_0 = 0;
    label = 154;
    break;
   case 16:
    $tobool19 = $haveMore << 24 >> 24 == 0;
    if ($tobool19) {
      label = 18;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $14 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $14;
    $retval_0 = 0;
    label = 154;
    break;
   case 18:
    $cmp22 = ($startTagLevel | 0) > 0;
    if ($cmp22) {
      label = 19;
      break;
    } else {
      $retval_0 = 3;
      label = 154;
      break;
    }
   case 19:
    $m_tagLevel24 = $parser + 296 | 0;
    $15 = HEAP32[$m_tagLevel24 >> 2] | 0;
    $cmp25 = ($15 | 0) == ($startTagLevel | 0);
    if ($cmp25) {
      label = 20;
      break;
    } else {
      $retval_0 = 13;
      label = 154;
      break;
    }
   case 20:
    $16 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $16;
    $retval_0 = 0;
    label = 154;
    break;
   case 21:
    $17 = HEAP32[$next >> 2] | 0;
    HEAP32[$eventPP_0 >> 2] = $17;
    $retval_0 = 4;
    label = 154;
    break;
   case 22:
    $tobool31 = $haveMore << 24 >> 24 == 0;
    if ($tobool31) {
      $retval_0 = 5;
      label = 154;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $18 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $18;
    $retval_0 = 0;
    label = 154;
    break;
   case 24:
    $tobool35 = $haveMore << 24 >> 24 == 0;
    if ($tobool35) {
      $retval_0 = 6;
      label = 154;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $19 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $19;
    $retval_0 = 0;
    label = 154;
    break;
   case 26:
    $20 = HEAP32[$predefinedEntityName >> 2] | 0;
    $21 = HEAP32[$s_addr >> 2] | 0;
    $22 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $21 + $22 | 0;
    $23 = HEAP32[$next >> 2] | 0;
    $idx_neg = -$22 | 0;
    $add_ptr40 = $23 + $idx_neg | 0;
    $call41 = FUNCTION_TABLE_iiii[$20 & 1023]($enc, $add_ptr, $add_ptr40) | 0;
    $conv = $call41 & 255;
    HEAP8[$ch] = $conv;
    $tobool42 = $conv << 24 >> 24 == 0;
    if ($tobool42) {
      label = 31;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $24 = HEAP32[$m_characterDataHandler44 >> 2] | 0;
    $tobool45 = ($24 | 0) == 0;
    if ($tobool45) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $25 = HEAP32[$m_handlerArg48 >> 2] | 0;
    FUNCTION_TABLE_viii[$24 & 1023]($25, $ch, 1);
    label = 152;
    break;
   case 29:
    $26 = HEAP32[$m_defaultHandler50 >> 2] | 0;
    $tobool51 = ($26 | 0) == 0;
    if ($tobool51) {
      label = 152;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $27 = HEAP32[$s_addr >> 2] | 0;
    $28 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $27, $28);
    label = 152;
    break;
   case 31:
    $29 = HEAP32[$s_addr >> 2] | 0;
    $30 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr57 = $29 + $30 | 0;
    $31 = HEAP32[$next >> 2] | 0;
    $idx_neg59 = -$30 | 0;
    $add_ptr60 = $31 + $idx_neg59 | 0;
    $call61 = _poolStoreString($pool, $enc, $add_ptr57, $add_ptr60) | 0;
    $tobool62 = ($call61 | 0) == 0;
    if ($tobool62) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $call65 = _lookup($parser, $generalEntities, $call61, 0) | 0;
    $32 = $call65;
    $33 = HEAP32[$start >> 2] | 0;
    HEAP32[$ptr >> 2] = $33;
    $34 = HEAP8[$hasParamEntityRefs] | 0;
    $tobool68 = $34 << 24 >> 24 == 0;
    if ($tobool68) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $35 = HEAP8[$standalone] | 0;
    $tobool70 = $35 << 24 >> 24 == 0;
    if ($tobool70) {
      label = 36;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $tobool72 = ($call65 | 0) == 0;
    if ($tobool72) {
      $retval_0 = 11;
      label = 154;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $is_internal = $32 + 34 | 0;
    $36 = HEAP8[$is_internal] | 0;
    $tobool75 = $36 << 24 >> 24 == 0;
    if ($tobool75) {
      $retval_0 = 24;
      label = 154;
      break;
    } else {
      label = 41;
      break;
    }
   case 36:
    $tobool80 = ($call65 | 0) == 0;
    if ($tobool80) {
      label = 37;
      break;
    } else {
      label = 41;
      break;
    }
   case 37:
    $37 = HEAP32[$m_skippedEntityHandler >> 2] | 0;
    $tobool82 = ($37 | 0) == 0;
    if ($tobool82) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $38 = HEAP32[$m_handlerArg85 >> 2] | 0;
    FUNCTION_TABLE_viii[$37 & 1023]($38, $call61, 0);
    label = 152;
    break;
   case 39:
    $39 = HEAP32[$m_defaultHandler87 >> 2] | 0;
    $tobool88 = ($39 | 0) == 0;
    if ($tobool88) {
      label = 152;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $40 = HEAP32[$s_addr >> 2] | 0;
    $41 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $40, $41);
    label = 152;
    break;
   case 41:
    $open = $call65 + 32 | 0;
    $42 = $open;
    $43 = HEAP8[$42] | 0;
    $tobool94 = $43 << 24 >> 24 == 0;
    if ($tobool94) {
      label = 42;
      break;
    } else {
      $retval_0 = 12;
      label = 154;
      break;
    }
   case 42:
    $44 = $call65 + 28 | 0;
    $45 = HEAP32[$44 >> 2] | 0;
    $tobool97 = ($45 | 0) == 0;
    if ($tobool97) {
      label = 43;
      break;
    } else {
      $retval_0 = 15;
      label = 154;
      break;
    }
   case 43:
    $46 = $call65 + 4 | 0;
    $47 = HEAP32[$46 >> 2] | 0;
    $tobool100 = ($47 | 0) == 0;
    if ($tobool100) {
      label = 50;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $48 = HEAP8[$m_defaultExpandInternalEntities] | 0;
    $tobool102 = $48 << 24 >> 24 == 0;
    if ($tobool102) {
      label = 45;
      break;
    } else {
      label = 49;
      break;
    }
   case 45:
    $49 = HEAP32[$m_skippedEntityHandler104 >> 2] | 0;
    $tobool105 = ($49 | 0) == 0;
    if ($tobool105) {
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $50 = HEAP32[$m_handlerArg108 >> 2] | 0;
    $name109 = $call65 | 0;
    $51 = HEAP32[$name109 >> 2] | 0;
    FUNCTION_TABLE_viii[$49 & 1023]($50, $51, 0);
    label = 152;
    break;
   case 47:
    $52 = HEAP32[$m_defaultHandler111 >> 2] | 0;
    $tobool112 = ($52 | 0) == 0;
    if ($tobool112) {
      label = 152;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $53 = HEAP32[$s_addr >> 2] | 0;
    $54 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $53, $54);
    label = 152;
    break;
   case 49:
    $call117 = _processInternalEntity($parser, $32) | 0;
    $cmp118 = ($call117 | 0) == 0;
    if ($cmp118) {
      label = 152;
      break;
    } else {
      $retval_0 = $call117;
      label = 154;
      break;
    }
   case 50:
    $55 = HEAP32[$m_externalEntityRefHandler >> 2] | 0;
    $tobool123 = ($55 | 0) == 0;
    if ($tobool123) {
      label = 54;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    HEAP8[$42] = 1;
    $call126 = _getContext($parser) | 0;
    HEAP8[$42] = 0;
    $tobool128 = ($call126 | 0) == 0;
    if ($tobool128) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $56 = HEAP32[$m_externalEntityRefHandler >> 2] | 0;
    $57 = HEAP32[$m_externalEntityRefHandlerArg >> 2] | 0;
    $58 = $call65 + 20 | 0;
    $59 = HEAP32[$58 >> 2] | 0;
    $60 = $call65 + 16 | 0;
    $61 = HEAP32[$60 >> 2] | 0;
    $62 = $call65 + 24 | 0;
    $63 = HEAP32[$62 >> 2] | 0;
    $call132 = FUNCTION_TABLE_iiiiii[$56 & 1023]($57, $call126, $59, $61, $63) | 0;
    $tobool133 = ($call132 | 0) == 0;
    if ($tobool133) {
      $retval_0 = 21;
      label = 154;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $64 = HEAP32[$start136 >> 2] | 0;
    HEAP32[$ptr138 >> 2] = $64;
    label = 152;
    break;
   case 54:
    $65 = HEAP32[$m_defaultHandler140 >> 2] | 0;
    $tobool141 = ($65 | 0) == 0;
    if ($tobool141) {
      label = 152;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $66 = HEAP32[$s_addr >> 2] | 0;
    $67 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $66, $67);
    label = 152;
    break;
   case 56:
    $68 = HEAP32[$m_freeTagList >> 2] | 0;
    $tobool148 = ($68 | 0) == 0;
    if ($tobool148) {
      label = 58;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $parent = $68 | 0;
    $69 = HEAP32[$parent >> 2] | 0;
    HEAP32[$m_freeTagList >> 2] = $69;
    $tag_0 = $68;
    label = 62;
    break;
   case 58:
    $70 = HEAP32[$malloc_fcn >> 2] | 0;
    $call154 = FUNCTION_TABLE_ii[$70 & 1023](48) | 0;
    $71 = $call154;
    $tobool155 = ($call154 | 0) == 0;
    if ($tobool155) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $72 = HEAP32[$malloc_fcn >> 2] | 0;
    $call160 = FUNCTION_TABLE_ii[$72 & 1023](32) | 0;
    $buf = $call154 + 36 | 0;
    $73 = $buf;
    HEAP32[$73 >> 2] = $call160;
    $tobool162 = ($call160 | 0) == 0;
    if ($tobool162) {
      label = 60;
      break;
    } else {
      label = 61;
      break;
    }
   case 60:
    $free_fcn = $parser + 20 | 0;
    $74 = HEAP32[$free_fcn >> 2] | 0;
    FUNCTION_TABLE_vi[$74 & 1023]($call154);
    $retval_0 = 1;
    label = 154;
    break;
   case 61:
    $add_ptr167 = $call160 + 32 | 0;
    $bufEnd = $call154 + 40 | 0;
    $75 = $bufEnd;
    HEAP32[$75 >> 2] = $add_ptr167;
    $tag_0 = $71;
    label = 62;
    break;
   case 62:
    $bindings = $tag_0 + 44 | 0;
    HEAP32[$bindings >> 2] = 0;
    $76 = HEAP32[$m_tagStack >> 2] | 0;
    $parent169 = $tag_0 | 0;
    HEAP32[$parent169 >> 2] = $76;
    HEAP32[$m_tagStack >> 2] = $tag_0;
    $name171 = $tag_0 + 12 | 0;
    $localPart = $tag_0 + 16 | 0;
    HEAP32[$localPart >> 2] = 0;
    $prefix = $tag_0 + 20 | 0;
    HEAP32[$prefix >> 2] = 0;
    $77 = HEAP32[$s_addr >> 2] | 0;
    $78 = HEAP32[$minBytesPerChar173 >> 2] | 0;
    $add_ptr174 = $77 + $78 | 0;
    $rawName = $tag_0 + 4 | 0;
    HEAP32[$rawName >> 2] = $add_ptr174;
    $79 = HEAP32[$nameLength >> 2] | 0;
    $call176 = FUNCTION_TABLE_iii[$79 & 1023]($enc, $add_ptr174) | 0;
    $rawNameLength = $tag_0 + 8 | 0;
    HEAP32[$rawNameLength >> 2] = $call176;
    $80 = HEAP32[$m_tagLevel177 >> 2] | 0;
    $inc = $80 + 1 | 0;
    HEAP32[$m_tagLevel177 >> 2] = $inc;
    $81 = HEAP32[$rawName >> 2] | 0;
    $82 = HEAP32[$rawNameLength >> 2] | 0;
    $add_ptr180 = $81 + $82 | 0;
    HEAP32[$fromPtr >> 2] = $81;
    $buf182 = $tag_0 + 36 | 0;
    $83 = HEAP32[$buf182 >> 2] | 0;
    $bufEnd184 = $tag_0 + 40 | 0;
    $storemerge = $83;
    label = 63;
    break;
   case 63:
    HEAP32[$toPtr >> 2] = $storemerge;
    $84 = HEAP32[$utf8Convert >> 2] | 0;
    $85 = HEAP32[$bufEnd184 >> 2] | 0;
    $add_ptr185 = $85 - 1 | 0;
    FUNCTION_TABLE_viiiii[$84 & 1023]($enc, $fromPtr, $add_ptr180, $toPtr, $add_ptr185);
    $86 = HEAP32[$toPtr >> 2] | 0;
    $87 = HEAP32[$buf182 >> 2] | 0;
    $sub_ptr_lhs_cast = $86;
    $sub_ptr_rhs_cast = $87;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $88 = HEAP32[$fromPtr >> 2] | 0;
    $cmp187 = ($88 | 0) == ($add_ptr180 | 0);
    if ($cmp187) {
      label = 64;
      break;
    } else {
      label = 65;
      break;
    }
   case 64:
    $strLen = $tag_0 + 24 | 0;
    HEAP32[$strLen >> 2] = $sub_ptr_sub;
    $89 = HEAP32[$buf182 >> 2] | 0;
    $str = $name171 | 0;
    HEAP32[$str >> 2] = $89;
    $90 = HEAP32[$toPtr >> 2] | 0;
    HEAP8[$90] = 0;
    $91 = HEAP32[$s_addr >> 2] | 0;
    $call212 = _storeAtts($parser, $enc, $91, $name171, $bindings) | 0;
    $tobool213 = ($call212 | 0) == 0;
    if ($tobool213) {
      label = 67;
      break;
    } else {
      $retval_0 = $call212;
      label = 154;
      break;
    }
   case 65:
    $92 = HEAP32[$bufEnd184 >> 2] | 0;
    $sub_ptr_lhs_cast194 = $92;
    $sub_ptr_sub196 = $sub_ptr_lhs_cast194 - $sub_ptr_rhs_cast | 0;
    $shl = $sub_ptr_sub196 << 1;
    $93 = HEAP32[$realloc_fcn >> 2] | 0;
    $call199 = FUNCTION_TABLE_iii[$93 & 1023]($87, $shl) | 0;
    $cmp200 = ($call199 | 0) == 0;
    if ($cmp200) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    HEAP32[$buf182 >> 2] = $call199;
    $add_ptr205 = $call199 + $shl | 0;
    HEAP32[$bufEnd184 >> 2] = $add_ptr205;
    $add_ptr207 = $call199 + $sub_ptr_sub | 0;
    $storemerge = $add_ptr207;
    label = 63;
    break;
   case 67:
    $94 = HEAP32[$m_startElementHandler >> 2] | 0;
    $tobool216 = ($94 | 0) == 0;
    if ($tobool216) {
      label = 69;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $95 = HEAP32[$m_handlerArg219 >> 2] | 0;
    $96 = HEAP32[$str >> 2] | 0;
    $97 = HEAP32[$m_atts >> 2] | 0;
    $98 = $97 | 0;
    FUNCTION_TABLE_viii[$94 & 1023]($95, $96, $98);
    label = 71;
    break;
   case 69:
    $99 = HEAP32[$m_defaultHandler223 >> 2] | 0;
    $tobool224 = ($99 | 0) == 0;
    if ($tobool224) {
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $100 = HEAP32[$s_addr >> 2] | 0;
    $101 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $100, $101);
    label = 71;
    break;
   case 71:
    _poolClear($m_tempPool228);
    label = 152;
    break;
   case 72:
    $102 = HEAP32[$s_addr >> 2] | 0;
    $103 = HEAP32[$minBytesPerChar231 >> 2] | 0;
    $add_ptr232 = $102 + $103 | 0;
    HEAP32[$bindings234 >> 2] = 0;
    $104 = HEAP32[$nameLength237 >> 2] | 0;
    $call238 = FUNCTION_TABLE_iii[$104 & 1023]($enc, $add_ptr232) | 0;
    $add_ptr232_sum = $call238 + $103 | 0;
    $add_ptr239 = $102 + $add_ptr232_sum | 0;
    $call240 = _poolStoreString($m_tempPool236, $enc, $add_ptr232, $add_ptr239) | 0;
    HEAP32[$str241 >> 2] = $call240;
    $tobool243 = ($call240 | 0) == 0;
    if ($tobool243) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $105 = HEAP32[$ptr247 >> 2] | 0;
    HEAP32[$start249 >> 2] = $105;
    $106 = HEAP32[$s_addr >> 2] | 0;
    $call250 = _storeAtts($parser, $enc, $106, $name235, $bindings234) | 0;
    $tobool251 = ($call250 | 0) == 0;
    if ($tobool251) {
      label = 74;
      break;
    } else {
      $retval_0 = $call250;
      label = 154;
      break;
    }
   case 74:
    $107 = HEAP32[$ptr247 >> 2] | 0;
    HEAP32[$start249 >> 2] = $107;
    $108 = HEAP32[$m_startElementHandler258 >> 2] | 0;
    $tobool259 = ($108 | 0) == 0;
    if ($tobool259) {
      $noElmHandlers_0 = 1;
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $109 = HEAP32[$m_handlerArg262 >> 2] | 0;
    $110 = HEAP32[$str241 >> 2] | 0;
    $111 = HEAP32[$m_atts264 >> 2] | 0;
    $112 = $111 | 0;
    FUNCTION_TABLE_viii[$108 & 1023]($109, $110, $112);
    $noElmHandlers_0 = 0;
    label = 76;
    break;
   case 76:
    $113 = HEAP32[$m_endElementHandler >> 2] | 0;
    $tobool266 = ($113 | 0) == 0;
    if ($tobool266) {
      label = 80;
      break;
    } else {
      label = 77;
      break;
    }
   case 77:
    $114 = HEAP32[$m_startElementHandler258 >> 2] | 0;
    $tobool269 = ($114 | 0) == 0;
    if ($tobool269) {
      label = 79;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $115 = HEAP32[$eventEndPP_0 >> 2] | 0;
    HEAP32[$eventPP_0 >> 2] = $115;
    label = 79;
    break;
   case 79:
    $116 = HEAP32[$m_endElementHandler >> 2] | 0;
    $117 = HEAP32[$m_handlerArg273 >> 2] | 0;
    $118 = HEAP32[$str241 >> 2] | 0;
    FUNCTION_TABLE_vii[$116 & 1023]($117, $118);
    label = 83;
    break;
   case 80:
    $tobool277 = $noElmHandlers_0 << 24 >> 24 == 0;
    if ($tobool277) {
      label = 83;
      break;
    } else {
      label = 81;
      break;
    }
   case 81:
    $119 = HEAP32[$m_defaultHandler278 >> 2] | 0;
    $tobool279 = ($119 | 0) == 0;
    if ($tobool279) {
      label = 83;
      break;
    } else {
      label = 82;
      break;
    }
   case 82:
    $120 = HEAP32[$s_addr >> 2] | 0;
    $121 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $120, $121);
    label = 83;
    break;
   case 83:
    _poolClear($m_tempPool236);
    $122 = HEAP32[$bindings234 >> 2] | 0;
    $tobool283334 = ($122 | 0) == 0;
    if ($tobool283334) {
      label = 89;
      break;
    } else {
      label = 84;
      break;
    }
   case 84:
    $bindings234_promoted = HEAP32[$bindings234 >> 2] | 0;
    $124 = $122;
    $123 = $bindings234_promoted;
    label = 85;
    break;
   case 85:
    $125 = HEAP32[$m_endNamespaceDeclHandler >> 2] | 0;
    $tobool284 = ($125 | 0) == 0;
    if ($tobool284) {
      label = 87;
      break;
    } else {
      label = 86;
      break;
    }
   case 86:
    $126 = HEAP32[$m_handlerArg287 >> 2] | 0;
    $prefix288 = $124 | 0;
    $127 = HEAP32[$prefix288 >> 2] | 0;
    $name289 = $127 | 0;
    $128 = HEAP32[$name289 >> 2] | 0;
    FUNCTION_TABLE_vii[$125 & 1023]($126, $128);
    label = 87;
    break;
   case 87:
    $nextTagBinding = $123 + 4 | 0;
    $129 = HEAP32[$nextTagBinding >> 2] | 0;
    $130 = HEAP32[$m_freeBindingList >> 2] | 0;
    $nextTagBinding291 = $124 + 4 | 0;
    HEAP32[$nextTagBinding291 >> 2] = $130;
    HEAP32[$m_freeBindingList >> 2] = $124;
    $prevPrefixBinding = $124 + 8 | 0;
    $131 = HEAP32[$prevPrefixBinding >> 2] | 0;
    $prefix293 = $124 | 0;
    $132 = HEAP32[$prefix293 >> 2] | 0;
    $binding = $132 + 4 | 0;
    HEAP32[$binding >> 2] = $131;
    $tobool283 = ($129 | 0) == 0;
    if ($tobool283) {
      label = 88;
      break;
    } else {
      $124 = $129;
      $123 = $129;
      label = 85;
      break;
    }
   case 88:
    HEAP32[$bindings234 >> 2] = $129;
    label = 89;
    break;
   case 89:
    $133 = HEAP32[$m_tagLevel294 >> 2] | 0;
    $cmp295 = ($133 | 0) == 0;
    if ($cmp295) {
      label = 90;
      break;
    } else {
      label = 152;
      break;
    }
   case 90:
    $134 = HEAP32[$next >> 2] | 0;
    $call298 = _epilogProcessor($parser, $134, $end, $nextPtr) | 0;
    $retval_0 = $call298;
    label = 154;
    break;
   case 91:
    $135 = HEAP32[$m_tagLevel301 >> 2] | 0;
    $cmp302 = ($135 | 0) == ($startTagLevel | 0);
    if ($cmp302) {
      $retval_0 = 13;
      label = 154;
      break;
    } else {
      label = 92;
      break;
    }
   case 92:
    $136 = HEAP32[$m_tagStack308 >> 2] | 0;
    $parent309 = $136 | 0;
    $137 = HEAP32[$parent309 >> 2] | 0;
    HEAP32[$m_tagStack308 >> 2] = $137;
    $138 = HEAP32[$m_freeTagList311 >> 2] | 0;
    HEAP32[$parent309 >> 2] = $138;
    HEAP32[$m_freeTagList311 >> 2] = $136;
    $139 = HEAP32[$s_addr >> 2] | 0;
    $140 = HEAP32[$minBytesPerChar314 >> 2] | 0;
    $mul = $140 << 1;
    $add_ptr315 = $139 + $mul | 0;
    $141 = HEAP32[$nameLength316 >> 2] | 0;
    $call317 = FUNCTION_TABLE_iii[$141 & 1023]($enc, $add_ptr315) | 0;
    $rawNameLength318 = $136 + 8 | 0;
    $142 = HEAP32[$rawNameLength318 >> 2] | 0;
    $cmp319 = ($call317 | 0) == ($142 | 0);
    if ($cmp319) {
      label = 93;
      break;
    } else {
      label = 94;
      break;
    }
   case 93:
    $rawName322 = $136 + 4 | 0;
    $143 = HEAP32[$rawName322 >> 2] | 0;
    $call323 = _memcmp($143 | 0, $add_ptr315 | 0, $call317 | 0) | 0;
    $cmp324 = ($call323 | 0) == 0;
    if ($cmp324) {
      label = 95;
      break;
    } else {
      label = 94;
      break;
    }
   case 94:
    HEAP32[$eventPP_0 >> 2] = $add_ptr315;
    $retval_0 = 7;
    label = 154;
    break;
   case 95:
    $144 = HEAP32[$m_tagLevel301 >> 2] | 0;
    $dec = $144 - 1 | 0;
    HEAP32[$m_tagLevel301 >> 2] = $dec;
    $145 = HEAP32[$m_endElementHandler329 >> 2] | 0;
    $tobool330 = ($145 | 0) == 0;
    if ($tobool330) {
      label = 104;
      break;
    } else {
      label = 96;
      break;
    }
   case 96:
    $name334 = $136 + 12 | 0;
    $localPart335 = $136 + 16 | 0;
    $146 = HEAP32[$localPart335 >> 2] | 0;
    $147 = HEAP8[$m_ns] | 0;
    $tobool337 = $147 << 24 >> 24 == 0;
    $tobool339 = ($146 | 0) == 0;
    $or_cond = $tobool337 | $tobool339;
    if ($or_cond) {
      label = 103;
      break;
    } else {
      label = 97;
      break;
    }
   case 97:
    $str342 = $name334 | 0;
    $148 = HEAP32[$str342 >> 2] | 0;
    $uriLen = $136 + 28 | 0;
    $149 = HEAP32[$uriLen >> 2] | 0;
    $add_ptr344 = $148 + $149 | 0;
    $150 = HEAP8[$146] | 0;
    $tobool346325 = $150 << 24 >> 24 == 0;
    if ($tobool346325) {
      $uri_0_lcssa = $add_ptr344;
      label = 99;
      break;
    } else {
      $localPart332_0326 = $146;
      $uri_0327 = $add_ptr344;
      $151 = $150;
      label = 98;
      break;
    }
   case 98:
    $incdec_ptr = $localPart332_0326 + 1 | 0;
    $incdec_ptr348 = $uri_0327 + 1 | 0;
    HEAP8[$uri_0327] = $151;
    $152 = HEAP8[$incdec_ptr] | 0;
    $tobool346 = $152 << 24 >> 24 == 0;
    if ($tobool346) {
      $uri_0_lcssa = $incdec_ptr348;
      label = 99;
      break;
    } else {
      $localPart332_0326 = $incdec_ptr;
      $uri_0327 = $incdec_ptr348;
      $151 = $152;
      label = 98;
      break;
    }
   case 99:
    $prefix351 = $136 + 20 | 0;
    $153 = HEAP32[$prefix351 >> 2] | 0;
    $154 = HEAP8[$m_ns_triplets] | 0;
    $tobool353 = $154 << 24 >> 24 == 0;
    $tobool355 = ($153 | 0) == 0;
    $or_cond323 = $tobool353 | $tobool355;
    if ($or_cond323) {
      $uri_2 = $uri_0_lcssa;
      label = 102;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $155 = HEAP8[$m_namespaceSeparator] | 0;
    HEAP8[$uri_0_lcssa] = $155;
    $uri_1328 = $uri_0_lcssa + 1 | 0;
    $156 = HEAP8[$153] | 0;
    $tobool359329 = $156 << 24 >> 24 == 0;
    if ($tobool359329) {
      $uri_2 = $uri_1328;
      label = 102;
      break;
    } else {
      $prefix333_0330 = $153;
      $uri_1331 = $uri_1328;
      $157 = $156;
      label = 101;
      break;
    }
   case 101:
    $incdec_ptr361 = $prefix333_0330 + 1 | 0;
    HEAP8[$uri_1331] = $157;
    $uri_1 = $uri_1331 + 1 | 0;
    $158 = HEAP8[$incdec_ptr361] | 0;
    $tobool359 = $158 << 24 >> 24 == 0;
    if ($tobool359) {
      $uri_2 = $uri_1;
      label = 102;
      break;
    } else {
      $prefix333_0330 = $incdec_ptr361;
      $uri_1331 = $uri_1;
      $157 = $158;
      label = 101;
      break;
    }
   case 102:
    HEAP8[$uri_2] = 0;
    label = 103;
    break;
   case 103:
    $159 = HEAP32[$m_endElementHandler329 >> 2] | 0;
    $160 = HEAP32[$m_handlerArg367 >> 2] | 0;
    $str369 = $name334 | 0;
    $161 = HEAP32[$str369 >> 2] | 0;
    FUNCTION_TABLE_vii[$159 & 1023]($160, $161);
    label = 106;
    break;
   case 104:
    $162 = HEAP32[$m_defaultHandler371 >> 2] | 0;
    $tobool372 = ($162 | 0) == 0;
    if ($tobool372) {
      label = 106;
      break;
    } else {
      label = 105;
      break;
    }
   case 105:
    $163 = HEAP32[$s_addr >> 2] | 0;
    $164 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $163, $164);
    label = 106;
    break;
   case 106:
    $bindings377 = $136 + 44 | 0;
    $165 = HEAP32[$bindings377 >> 2] | 0;
    $tobool378333 = ($165 | 0) == 0;
    if ($tobool378333) {
      label = 110;
      break;
    } else {
      $166 = $165;
      label = 107;
      break;
    }
   case 107:
    $167 = HEAP32[$m_endNamespaceDeclHandler382 >> 2] | 0;
    $tobool383 = ($167 | 0) == 0;
    if ($tobool383) {
      label = 109;
      break;
    } else {
      label = 108;
      break;
    }
   case 108:
    $168 = HEAP32[$m_handlerArg386 >> 2] | 0;
    $prefix387 = $166 | 0;
    $169 = HEAP32[$prefix387 >> 2] | 0;
    $name388 = $169 | 0;
    $170 = HEAP32[$name388 >> 2] | 0;
    FUNCTION_TABLE_vii[$167 & 1023]($168, $170);
    label = 109;
    break;
   case 109:
    $171 = HEAP32[$bindings377 >> 2] | 0;
    $nextTagBinding391 = $171 + 4 | 0;
    $172 = HEAP32[$nextTagBinding391 >> 2] | 0;
    HEAP32[$bindings377 >> 2] = $172;
    $173 = HEAP32[$m_freeBindingList393 >> 2] | 0;
    $nextTagBinding394 = $166 + 4 | 0;
    HEAP32[$nextTagBinding394 >> 2] = $173;
    HEAP32[$m_freeBindingList393 >> 2] = $166;
    $prevPrefixBinding396 = $166 + 8 | 0;
    $174 = HEAP32[$prevPrefixBinding396 >> 2] | 0;
    $prefix397 = $166 | 0;
    $175 = HEAP32[$prefix397 >> 2] | 0;
    $binding398 = $175 + 4 | 0;
    HEAP32[$binding398 >> 2] = $174;
    $176 = HEAP32[$bindings377 >> 2] | 0;
    $tobool378 = ($176 | 0) == 0;
    if ($tobool378) {
      label = 110;
      break;
    } else {
      $166 = $176;
      label = 107;
      break;
    }
   case 110:
    $177 = HEAP32[$m_tagLevel301 >> 2] | 0;
    $cmp401 = ($177 | 0) == 0;
    if ($cmp401) {
      label = 111;
      break;
    } else {
      label = 152;
      break;
    }
   case 111:
    $178 = HEAP32[$next >> 2] | 0;
    $call404 = _epilogProcessor($parser, $178, $end, $nextPtr) | 0;
    $retval_0 = $call404;
    label = 154;
    break;
   case 112:
    $179 = HEAP32[$charRefNumber >> 2] | 0;
    $180 = HEAP32[$s_addr >> 2] | 0;
    $call408 = FUNCTION_TABLE_iii[$179 & 1023]($enc, $180) | 0;
    $cmp409 = ($call408 | 0) < 0;
    if ($cmp409) {
      $retval_0 = 14;
      label = 154;
      break;
    } else {
      label = 113;
      break;
    }
   case 113:
    $181 = HEAP32[$m_characterDataHandler413 >> 2] | 0;
    $tobool414 = ($181 | 0) == 0;
    if ($tobool414) {
      label = 115;
      break;
    } else {
      label = 114;
      break;
    }
   case 114:
    $182 = HEAP32[$m_handlerArg418 >> 2] | 0;
    $call420 = _XmlUtf8Encode($call408, $arraydecay) | 0;
    FUNCTION_TABLE_viii[$181 & 1023]($182, $arraydecay, $call420);
    label = 152;
    break;
   case 115:
    $183 = HEAP32[$m_defaultHandler422 >> 2] | 0;
    $tobool423 = ($183 | 0) == 0;
    if ($tobool423) {
      label = 152;
      break;
    } else {
      label = 116;
      break;
    }
   case 116:
    $184 = HEAP32[$s_addr >> 2] | 0;
    $185 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $184, $185);
    label = 152;
    break;
   case 117:
    $186 = HEAP32[$m_characterDataHandler429 >> 2] | 0;
    $tobool430 = ($186 | 0) == 0;
    if ($tobool430) {
      label = 119;
      break;
    } else {
      label = 118;
      break;
    }
   case 118:
    HEAP8[$c432] = 10;
    $187 = HEAP32[$m_characterDataHandler429 >> 2] | 0;
    $188 = HEAP32[$m_handlerArg434 >> 2] | 0;
    FUNCTION_TABLE_viii[$187 & 1023]($188, $c432, 1);
    label = 152;
    break;
   case 119:
    $189 = HEAP32[$m_defaultHandler436 >> 2] | 0;
    $tobool437 = ($189 | 0) == 0;
    if ($tobool437) {
      label = 152;
      break;
    } else {
      label = 120;
      break;
    }
   case 120:
    $190 = HEAP32[$s_addr >> 2] | 0;
    $191 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $190, $191);
    label = 152;
    break;
   case 121:
    $192 = HEAP32[$m_startCdataSectionHandler >> 2] | 0;
    $tobool443 = ($192 | 0) == 0;
    if ($tobool443) {
      label = 123;
      break;
    } else {
      label = 122;
      break;
    }
   case 122:
    $193 = HEAP32[$m_handlerArg446 >> 2] | 0;
    FUNCTION_TABLE_vi[$192 & 1023]($193);
    label = 125;
    break;
   case 123:
    $194 = HEAP32[$m_defaultHandler448 >> 2] | 0;
    $tobool449 = ($194 | 0) == 0;
    if ($tobool449) {
      label = 125;
      break;
    } else {
      label = 124;
      break;
    }
   case 124:
    $195 = HEAP32[$s_addr >> 2] | 0;
    $196 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $195, $196);
    label = 125;
    break;
   case 125:
    $call453 = _doCdataSection($parser, $enc, $next, $end, $nextPtr, $haveMore) | 0;
    $cmp454 = ($call453 | 0) == 0;
    if ($cmp454) {
      label = 126;
      break;
    } else {
      $retval_0 = $call453;
      label = 154;
      break;
    }
   case 126:
    $197 = HEAP32[$next >> 2] | 0;
    $tobool458 = ($197 | 0) == 0;
    if ($tobool458) {
      label = 127;
      break;
    } else {
      label = 152;
      break;
    }
   case 127:
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 80;
    $retval_0 = $call453;
    label = 154;
    break;
   case 128:
    $tobool463 = $haveMore << 24 >> 24 == 0;
    if ($tobool463) {
      label = 130;
      break;
    } else {
      label = 129;
      break;
    }
   case 129:
    $198 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $198;
    $retval_0 = 0;
    label = 154;
    break;
   case 130:
    $m_characterDataHandler466 = $parser + 60 | 0;
    $199 = HEAP32[$m_characterDataHandler466 >> 2] | 0;
    $tobool467 = ($199 | 0) == 0;
    if ($tobool467) {
      label = 134;
      break;
    } else {
      label = 131;
      break;
    }
   case 131:
    $isUtf8 = $enc + 68 | 0;
    $200 = HEAP8[$isUtf8] | 0;
    $tobool469 = $200 << 24 >> 24 == 0;
    if ($tobool469) {
      label = 132;
      break;
    } else {
      label = 133;
      break;
    }
   case 132:
    $m_dataBuf = $parser + 44 | 0;
    $201 = HEAP32[$m_dataBuf >> 2] | 0;
    HEAP32[$dataPtr >> 2] = $201;
    $utf8Convert471 = $enc + 56 | 0;
    $202 = HEAP32[$utf8Convert471 >> 2] | 0;
    $m_dataBufEnd = $parser + 48 | 0;
    $203 = HEAP32[$m_dataBufEnd >> 2] | 0;
    FUNCTION_TABLE_viiiii[$202 & 1023]($enc, $s_addr, $end, $dataPtr, $203);
    $204 = HEAP32[$m_characterDataHandler466 >> 2] | 0;
    $m_handlerArg473 = $parser + 4 | 0;
    $205 = HEAP32[$m_handlerArg473 >> 2] | 0;
    $206 = HEAP32[$m_dataBuf >> 2] | 0;
    $207 = HEAP32[$dataPtr >> 2] | 0;
    $sub_ptr_lhs_cast476 = $207;
    $sub_ptr_rhs_cast477 = $206;
    $sub_ptr_sub478 = $sub_ptr_lhs_cast476 - $sub_ptr_rhs_cast477 | 0;
    FUNCTION_TABLE_viii[$204 & 1023]($205, $206, $sub_ptr_sub478);
    label = 136;
    break;
   case 133:
    $m_handlerArg481 = $parser + 4 | 0;
    $208 = HEAP32[$m_handlerArg481 >> 2] | 0;
    $209 = HEAP32[$s_addr >> 2] | 0;
    $sub_ptr_lhs_cast482 = $end;
    $sub_ptr_rhs_cast483 = $209;
    $sub_ptr_sub484 = $sub_ptr_lhs_cast482 - $sub_ptr_rhs_cast483 | 0;
    FUNCTION_TABLE_viii[$199 & 1023]($208, $209, $sub_ptr_sub484);
    label = 136;
    break;
   case 134:
    $m_defaultHandler487 = $parser + 80 | 0;
    $210 = HEAP32[$m_defaultHandler487 >> 2] | 0;
    $tobool488 = ($210 | 0) == 0;
    if ($tobool488) {
      label = 136;
      break;
    } else {
      label = 135;
      break;
    }
   case 135:
    $211 = HEAP32[$s_addr >> 2] | 0;
    _reportDefault($parser, $enc, $211, $end);
    label = 136;
    break;
   case 136:
    $cmp492 = ($startTagLevel | 0) == 0;
    if ($cmp492) {
      label = 137;
      break;
    } else {
      label = 138;
      break;
    }
   case 137:
    HEAP32[$eventPP_0 >> 2] = $end;
    $retval_0 = 3;
    label = 154;
    break;
   case 138:
    $m_tagLevel496 = $parser + 296 | 0;
    $212 = HEAP32[$m_tagLevel496 >> 2] | 0;
    $cmp497 = ($212 | 0) == ($startTagLevel | 0);
    if ($cmp497) {
      label = 140;
      break;
    } else {
      label = 139;
      break;
    }
   case 139:
    HEAP32[$eventPP_0 >> 2] = $end;
    $retval_0 = 13;
    label = 154;
    break;
   case 140:
    HEAP32[$nextPtr >> 2] = $end;
    $retval_0 = 0;
    label = 154;
    break;
   case 141:
    $213 = HEAP32[$m_characterDataHandler502 >> 2] | 0;
    $tobool503 = ($213 | 0) == 0;
    if ($tobool503) {
      label = 146;
      break;
    } else {
      label = 142;
      break;
    }
   case 142:
    $214 = HEAP8[$isUtf8505] | 0;
    $tobool506 = $214 << 24 >> 24 == 0;
    if ($tobool506) {
      label = 143;
      break;
    } else {
      label = 145;
      break;
    }
   case 143:
    $215 = HEAP32[$m_dataBuf510 >> 2] | 0;
    HEAP32[$dataPtr509 >> 2] = $215;
    $216 = HEAP32[$utf8Convert511 >> 2] | 0;
    $217 = HEAP32[$next >> 2] | 0;
    $218 = HEAP32[$m_dataBufEnd512 >> 2] | 0;
    FUNCTION_TABLE_viiiii[$216 & 1023]($enc, $s_addr, $217, $dataPtr509, $218);
    $219 = HEAP32[$s_addr >> 2] | 0;
    HEAP32[$eventEndPP_0 >> 2] = $219;
    $220 = HEAP32[$m_handlerArg513 >> 2] | 0;
    $221 = HEAP32[$m_dataBuf510 >> 2] | 0;
    $222 = HEAP32[$dataPtr509 >> 2] | 0;
    $sub_ptr_lhs_cast516 = $222;
    $sub_ptr_rhs_cast517 = $221;
    $sub_ptr_sub518 = $sub_ptr_lhs_cast516 - $sub_ptr_rhs_cast517 | 0;
    FUNCTION_TABLE_viii[$213 & 1023]($220, $221, $sub_ptr_sub518);
    $223 = HEAP32[$s_addr >> 2] | 0;
    $224 = HEAP32[$next >> 2] | 0;
    $cmp519 = ($223 | 0) == ($224 | 0);
    if ($cmp519) {
      label = 152;
      break;
    } else {
      label = 144;
      break;
    }
   case 144:
    HEAP32[$eventPP_0 >> 2] = $223;
    label = 143;
    break;
   case 145:
    $225 = HEAP32[$m_handlerArg525 >> 2] | 0;
    $226 = HEAP32[$s_addr >> 2] | 0;
    $227 = HEAP32[$next >> 2] | 0;
    $sub_ptr_lhs_cast526 = $227;
    $sub_ptr_rhs_cast527 = $226;
    $sub_ptr_sub528 = $sub_ptr_lhs_cast526 - $sub_ptr_rhs_cast527 | 0;
    FUNCTION_TABLE_viii[$213 & 1023]($225, $226, $sub_ptr_sub528);
    label = 152;
    break;
   case 146:
    $228 = HEAP32[$m_defaultHandler531 >> 2] | 0;
    $tobool532 = ($228 | 0) == 0;
    if ($tobool532) {
      label = 152;
      break;
    } else {
      label = 147;
      break;
    }
   case 147:
    $229 = HEAP32[$s_addr >> 2] | 0;
    $230 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $229, $230);
    label = 152;
    break;
   case 148:
    $231 = HEAP32[$s_addr >> 2] | 0;
    $232 = HEAP32[$next >> 2] | 0;
    $call537 = _reportProcessingInstruction($parser, $enc, $231, $232) | 0;
    $tobool538 = ($call537 | 0) == 0;
    if ($tobool538) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 152;
      break;
    }
   case 149:
    $233 = HEAP32[$s_addr >> 2] | 0;
    $234 = HEAP32[$next >> 2] | 0;
    $call542 = _reportComment($parser, $enc, $233, $234) | 0;
    $tobool543 = ($call542 | 0) == 0;
    if ($tobool543) {
      $retval_0 = 1;
      label = 154;
      break;
    } else {
      label = 152;
      break;
    }
   case 150:
    $235 = HEAP32[$m_defaultHandler546 >> 2] | 0;
    $tobool547 = ($235 | 0) == 0;
    if ($tobool547) {
      label = 152;
      break;
    } else {
      label = 151;
      break;
    }
   case 151:
    $236 = HEAP32[$s_addr >> 2] | 0;
    $237 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $236, $237);
    label = 152;
    break;
   case 152:
    $238 = HEAP32[$next >> 2] | 0;
    HEAP32[$s_addr >> 2] = $238;
    HEAP32[$eventPP_0 >> 2] = $238;
    $239 = HEAP32[$parsing >> 2] | 0;
    if (($239 | 0) == 3) {
      label = 153;
      break;
    } else if (($239 | 0) == 2) {
      $retval_0 = 35;
      label = 154;
      break;
    } else {
      label = 6;
      break;
    }
   case 153:
    $240 = HEAP32[$next >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $240;
    $retval_0 = 0;
    label = 154;
    break;
   case 154:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _storeRawNames($parser) {
  $parser = $parser | 0;
  var $m_tagStack = 0, $realloc_fcn = 0, $tag_033 = 0, $tobool34 = 0, $tag_035 = 0, $strLen = 0, $0 = 0, $add = 0, $buf = 0, $1 = 0, $add_ptr = 0, $rawName = 0, $2 = 0, $cmp = 0, $rawNameLength = 0, $3 = 0, $add2 = 0, $bufEnd = 0, $4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp4 = 0, $5 = 0, $call = 0, $cmp7 = 0, $str = 0, $6 = 0, $7 = 0, $cmp12 = 0, $localPart = 0, $8 = 0, $tobool18 = 0, $9 = 0, $sub_ptr_lhs_cast23 = 0, $sub_ptr_rhs_cast24 = 0, $sub_ptr_sub25 = 0, $add_ptr26 = 0, $add_ptr31 = 0, $add_ptr33 = 0, $rawNameBuf_0 = 0, $10 = 0, $11 = 0, $parent = 0, $tag_0 = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_tagStack = $parser + 348 | 0;
    $realloc_fcn = $parser + 16 | 0;
    $tag_033 = HEAP32[$m_tagStack >> 2] | 0;
    $tobool34 = ($tag_033 | 0) == 0;
    if ($tobool34) {
      $retval_0 = 1;
      label = 12;
      break;
    } else {
      $tag_035 = $tag_033;
      label = 3;
      break;
    }
   case 3:
    $strLen = $tag_035 + 24 | 0;
    $0 = HEAP32[$strLen >> 2] | 0;
    $add = $0 + 1 | 0;
    $buf = $tag_035 + 36 | 0;
    $1 = HEAP32[$buf >> 2] | 0;
    $add_ptr = $1 + $add | 0;
    $rawName = $tag_035 + 4 | 0;
    $2 = HEAP32[$rawName >> 2] | 0;
    $cmp = ($2 | 0) == ($add_ptr | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 12;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $rawNameLength = $tag_035 + 8 | 0;
    $3 = HEAP32[$rawNameLength >> 2] | 0;
    $add2 = $3 + $add | 0;
    $bufEnd = $tag_035 + 40 | 0;
    $4 = HEAP32[$bufEnd >> 2] | 0;
    $sub_ptr_lhs_cast = $4;
    $sub_ptr_rhs_cast = $1;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp4 = ($add2 | 0) > ($sub_ptr_sub | 0);
    if ($cmp4) {
      label = 5;
      break;
    } else {
      $rawNameBuf_0 = $add_ptr;
      label = 11;
      break;
    }
   case 5:
    $5 = HEAP32[$realloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($1, $add2) | 0;
    $cmp7 = ($call | 0) == 0;
    if ($cmp7) {
      $retval_0 = 0;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $str = $tag_035 + 12 | 0;
    $6 = HEAP32[$str >> 2] | 0;
    $7 = HEAP32[$buf >> 2] | 0;
    $cmp12 = ($6 | 0) == ($7 | 0);
    if ($cmp12) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$str >> 2] = $call;
    label = 8;
    break;
   case 8:
    $localPart = $tag_035 + 16 | 0;
    $8 = HEAP32[$localPart >> 2] | 0;
    $tobool18 = ($8 | 0) == 0;
    if ($tobool18) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $9 = HEAP32[$buf >> 2] | 0;
    $sub_ptr_lhs_cast23 = $8;
    $sub_ptr_rhs_cast24 = $9;
    $sub_ptr_sub25 = $sub_ptr_lhs_cast23 - $sub_ptr_rhs_cast24 | 0;
    $add_ptr26 = $call + $sub_ptr_sub25 | 0;
    HEAP32[$localPart >> 2] = $add_ptr26;
    label = 10;
    break;
   case 10:
    HEAP32[$buf >> 2] = $call;
    $add_ptr31 = $call + $add2 | 0;
    HEAP32[$bufEnd >> 2] = $add_ptr31;
    $add_ptr33 = $call + $add | 0;
    $rawNameBuf_0 = $add_ptr33;
    label = 11;
    break;
   case 11:
    $10 = HEAP32[$rawName >> 2] | 0;
    $11 = HEAP32[$rawNameLength >> 2] | 0;
    _memcpy($rawNameBuf_0 | 0, $10 | 0, $11);
    HEAP32[$rawName >> 2] = $rawNameBuf_0;
    $parent = $tag_035 | 0;
    $tag_0 = HEAP32[$parent >> 2] | 0;
    $tobool = ($tag_0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 1;
      label = 12;
      break;
    } else {
      $tag_035 = $tag_0;
      label = 3;
      break;
    }
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _poolStoreString($pool, $enc, $ptr, $end) {
  $pool = $pool | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $call = 0, $tobool = 0, $ptr1 = 0, $0 = 0, $end2 = 0, $1 = 0, $cmp = 0, $call3 = 0, $tobool4 = 0, $2 = 0, $incdec_ptr = 0, $start = 0, $3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _poolAppend($pool, $enc, $ptr, $end) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $ptr1 = $pool + 12 | 0;
    $0 = HEAP32[$ptr1 >> 2] | 0;
    $end2 = $pool + 8 | 0;
    $1 = HEAP32[$end2 >> 2] | 0;
    $cmp = ($0 | 0) == ($1 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call3 = _poolGrow($pool) | 0;
    $tobool4 = $call3 << 24 >> 24 == 0;
    if ($tobool4) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $2 = HEAP32[$ptr1 >> 2] | 0;
    $incdec_ptr = $2 + 1 | 0;
    HEAP32[$ptr1 >> 2] = $incdec_ptr;
    HEAP8[$2] = 0;
    $start = $pool + 16 | 0;
    $3 = HEAP32[$start >> 2] | 0;
    $retval_0 = $3;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _processInternalEntity($parser, $entity) {
  $parser = $parser | 0;
  $entity = $entity | 0;
  var $next = 0, $m_freeInternalEntities = 0, $0 = 0, $tobool = 0, $next2 = 0, $1 = 0, $malloc_fcn = 0, $2 = 0, $call = 0, $3 = 0, $tobool4 = 0, $openEntity_0 = 0, $open = 0, $processed = 0, $m_openInternalEntities = 0, $4 = 0, $next7 = 0, $entity9 = 0, $m_tagLevel = 0, $5 = 0, $startTagLevel = 0, $betweenDecl10 = 0, $internalEventPtr = 0, $internalEventEndPtr = 0, $textPtr = 0, $6 = 0, $textLen = 0, $7 = 0, $add_ptr = 0, $8 = 0, $m_internalEncoding = 0, $9 = 0, $call13 = 0, $cmp = 0, $10 = 0, $cmp15 = 0, $parsing = 0, $11 = 0, $cmp16 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $m_processor = 0, $12 = 0, $13 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $next = __stackBase__ | 0;
    $m_freeInternalEntities = $parser + 288 | 0;
    $0 = HEAP32[$m_freeInternalEntities >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $next2 = $0 + 8 | 0;
    $1 = HEAP32[$next2 >> 2] | 0;
    HEAP32[$m_freeInternalEntities >> 2] = $1;
    $openEntity_0 = $0;
    label = 5;
    break;
   case 4:
    $malloc_fcn = $parser + 12 | 0;
    $2 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$2 & 1023](24) | 0;
    $3 = $call;
    $tobool4 = ($call | 0) == 0;
    if ($tobool4) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      $openEntity_0 = $3;
      label = 5;
      break;
    }
   case 5:
    $open = $entity + 32 | 0;
    HEAP8[$open] = 1;
    $processed = $entity + 12 | 0;
    HEAP32[$processed >> 2] = 0;
    $m_openInternalEntities = $parser + 284 | 0;
    $4 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $next7 = $openEntity_0 + 8 | 0;
    HEAP32[$next7 >> 2] = $4;
    HEAP32[$m_openInternalEntities >> 2] = $openEntity_0;
    $entity9 = $openEntity_0 + 12 | 0;
    HEAP32[$entity9 >> 2] = $entity;
    $m_tagLevel = $parser + 296 | 0;
    $5 = HEAP32[$m_tagLevel >> 2] | 0;
    $startTagLevel = $openEntity_0 + 16 | 0;
    HEAP32[$startTagLevel >> 2] = $5;
    $betweenDecl10 = $openEntity_0 + 20 | 0;
    HEAP8[$betweenDecl10] = 0;
    $internalEventPtr = $openEntity_0 | 0;
    HEAP32[$internalEventPtr >> 2] = 0;
    $internalEventEndPtr = $openEntity_0 + 4 | 0;
    HEAP32[$internalEventEndPtr >> 2] = 0;
    $textPtr = $entity + 4 | 0;
    $6 = HEAP32[$textPtr >> 2] | 0;
    $textLen = $entity + 8 | 0;
    $7 = HEAP32[$textLen >> 2] | 0;
    $add_ptr = $6 + $7 | 0;
    $8 = HEAP32[$m_tagLevel >> 2] | 0;
    $m_internalEncoding = $parser + 224 | 0;
    $9 = HEAP32[$m_internalEncoding >> 2] | 0;
    $call13 = _doContent($parser, $8, $9, $6, $add_ptr, $next, 0) | 0;
    $cmp = ($call13 | 0) == 0;
    if ($cmp) {
      label = 6;
      break;
    } else {
      $retval_0 = $call13;
      label = 10;
      break;
    }
   case 6:
    $10 = HEAP32[$next >> 2] | 0;
    $cmp15 = ($add_ptr | 0) == ($10 | 0);
    if ($cmp15) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $parsing = $parser + 464 | 0;
    $11 = HEAP32[$parsing >> 2] | 0;
    $cmp16 = ($11 | 0) == 3;
    if ($cmp16) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $sub_ptr_lhs_cast = $10;
    $sub_ptr_rhs_cast = $6;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    HEAP32[$processed >> 2] = $sub_ptr_sub;
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 680;
    $retval_0 = $call13;
    label = 10;
    break;
   case 9:
    HEAP8[$open] = 0;
    $12 = HEAP32[$next7 >> 2] | 0;
    HEAP32[$m_openInternalEntities >> 2] = $12;
    $13 = HEAP32[$m_freeInternalEntities >> 2] | 0;
    HEAP32[$next7 >> 2] = $13;
    HEAP32[$m_freeInternalEntities >> 2] = $openEntity_0;
    $retval_0 = $call13;
    label = 10;
    break;
   case 10:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _getContext($parser) {
  $parser = $parser | 0;
  var $iter = 0, $m_dtd = 0, $0 = 0, $binding = 0, $1 = 0, $tobool = 0, $m_tempPool = 0, $ptr = 0, $2 = 0, $end = 0, $3 = 0, $cmp = 0, $call = 0, $tobool3 = 0, $4 = 0, $incdec_ptr = 0, $5 = 0, $uriLen = 0, $6 = 0, $m_namespaceSeparator = 0, $7 = 0, $not_tobool9 = 0, $dec = 0, $len_0 = 0, $cmp1281 = 0, $i_082 = 0, $8 = 0, $9 = 0, $cmp17 = 0, $call20 = 0, $tobool21 = 0, $10 = 0, $uri = 0, $11 = 0, $arrayidx = 0, $12 = 0, $13 = 0, $incdec_ptr28 = 0, $inc = 0, $cmp12 = 0, $needSep_0 = 0, $prefixes = 0, $m_tempPool65 = 0, $ptr66 = 0, $end68 = 0, $m_namespaceSeparator104 = 0, $ptr46 = 0, $end48 = 0, $m_tempPool45 = 0, $needSep_1_ph = 0, $call35 = 0, $tobool36 = 0, $binding39 = 0, $14 = 0, $15 = 0, $tobool40 = 0, $tobool43 = 0, $16 = 0, $17 = 0, $cmp49 = 0, $call53 = 0, $tobool54 = 0, $18 = 0, $incdec_ptr59 = 0, $name = 0, $19 = 0, $20 = 0, $tobool6368 = 0, $21 = 0, $22 = 0, $cmp6969 = 0, $cmp6971 = 0, $s_070 = 0, $call73 = 0, $tobool74 = 0, $23 = 0, $24 = 0, $incdec_ptr79 = 0, $incdec_ptr83 = 0, $25 = 0, $tobool63 = 0, $26 = 0, $27 = 0, $cmp69 = 0, $cmp69_lcssa = 0, $call93 = 0, $tobool94 = 0, $28 = 0, $incdec_ptr99 = 0, $29 = 0, $uriLen103 = 0, $30 = 0, $31 = 0, $not_tobool105 = 0, $dec107 = 0, $len34_0 = 0, $cmp11076 = 0, $i33_077 = 0, $32 = 0, $33 = 0, $cmp117 = 0, $call121 = 0, $tobool122 = 0, $34 = 0, $uri126 = 0, $35 = 0, $arrayidx127 = 0, $36 = 0, $37 = 0, $incdec_ptr130 = 0, $inc134 = 0, $cmp110 = 0, $generalEntities = 0, $ptr171 = 0, $end173 = 0, $m_tempPool170 = 0, $ptr150 = 0, $end152 = 0, $m_tempPool149 = 0, $needSep_2_ph = 0, $call139 = 0, $tobool140 = 0, $open = 0, $38 = 0, $39 = 0, $tobool143 = 0, $tobool147 = 0, $40 = 0, $41 = 0, $cmp153 = 0, $call157 = 0, $tobool158 = 0, $42 = 0, $incdec_ptr163 = 0, $name166 = 0, $43 = 0, $44 = 0, $tobool16859 = 0, $s138_060 = 0, $45 = 0, $46 = 0, $cmp174 = 0, $call178 = 0, $tobool179 = 0, $47 = 0, $48 = 0, $incdec_ptr184 = 0, $incdec_ptr188 = 0, $49 = 0, $tobool168 = 0, $ptr192 = 0, $50 = 0, $end194 = 0, $51 = 0, $cmp195 = 0, $m_tempPool191 = 0, $call199 = 0, $tobool200 = 0, $52 = 0, $incdec_ptr205 = 0, $start = 0, $53 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $iter = __stackBase__ | 0;
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $binding = $0 + 136 | 0;
    $1 = HEAP32[$binding >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      $needSep_0 = 0;
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $m_tempPool = $parser + 400 | 0;
    $ptr = $parser + 412 | 0;
    $2 = HEAP32[$ptr >> 2] | 0;
    $end = $parser + 408 | 0;
    $3 = HEAP32[$end >> 2] | 0;
    $cmp = ($2 | 0) == ($3 | 0);
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $call = _poolGrow($m_tempPool) | 0;
    $tobool3 = $call << 24 >> 24 == 0;
    if ($tobool3) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $4 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$4] = 61;
    $5 = HEAP32[$binding >> 2] | 0;
    $uriLen = $5 + 20 | 0;
    $6 = HEAP32[$uriLen >> 2] | 0;
    $m_namespaceSeparator = $parser + 456 | 0;
    $7 = HEAP8[$m_namespaceSeparator] | 0;
    $not_tobool9 = $7 << 24 >> 24 != 0;
    $dec = $not_tobool9 << 31 >> 31;
    $len_0 = $dec + $6 | 0;
    $cmp1281 = ($len_0 | 0) > 0;
    if ($cmp1281) {
      $i_082 = 0;
      label = 6;
      break;
    } else {
      $needSep_0 = 1;
      label = 9;
      break;
    }
   case 6:
    $8 = HEAP32[$ptr >> 2] | 0;
    $9 = HEAP32[$end >> 2] | 0;
    $cmp17 = ($8 | 0) == ($9 | 0);
    if ($cmp17) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $call20 = _poolGrow($m_tempPool) | 0;
    $tobool21 = $call20 << 24 >> 24 == 0;
    if ($tobool21) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $10 = HEAP32[$binding >> 2] | 0;
    $uri = $10 + 16 | 0;
    $11 = HEAP32[$uri >> 2] | 0;
    $arrayidx = $11 + $i_082 | 0;
    $12 = HEAP8[$arrayidx] | 0;
    $13 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr28 = $13 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr28;
    HEAP8[$13] = $12;
    $inc = $i_082 + 1 | 0;
    $cmp12 = ($inc | 0) < ($len_0 | 0);
    if ($cmp12) {
      $i_082 = $inc;
      label = 6;
      break;
    } else {
      $needSep_0 = 1;
      label = 9;
      break;
    }
   case 9:
    $prefixes = $0 + 60 | 0;
    _hashTableIterInit($iter, $prefixes);
    $m_tempPool65 = $parser + 400 | 0;
    $ptr66 = $parser + 412 | 0;
    $end68 = $parser + 408 | 0;
    $m_namespaceSeparator104 = $parser + 456 | 0;
    $ptr46 = $parser + 412 | 0;
    $end48 = $parser + 408 | 0;
    $m_tempPool45 = $parser + 400 | 0;
    $needSep_1_ph = $needSep_0;
    label = 10;
    break;
   case 10:
    label = 11;
    break;
   case 11:
    $call35 = _hashTableIterNext($iter) | 0;
    $tobool36 = ($call35 | 0) == 0;
    if ($tobool36) {
      label = 27;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $binding39 = $call35 + 4 | 0;
    $14 = $binding39;
    $15 = HEAP32[$14 >> 2] | 0;
    $tobool40 = ($15 | 0) == 0;
    if ($tobool40) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $tobool43 = $needSep_1_ph << 24 >> 24 == 0;
    if ($tobool43) {
      label = 17;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $16 = HEAP32[$ptr46 >> 2] | 0;
    $17 = HEAP32[$end48 >> 2] | 0;
    $cmp49 = ($16 | 0) == ($17 | 0);
    if ($cmp49) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $call53 = _poolGrow($m_tempPool45) | 0;
    $tobool54 = $call53 << 24 >> 24 == 0;
    if ($tobool54) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $18 = HEAP32[$ptr46 >> 2] | 0;
    $incdec_ptr59 = $18 + 1 | 0;
    HEAP32[$ptr46 >> 2] = $incdec_ptr59;
    HEAP8[$18] = 12;
    label = 17;
    break;
   case 17:
    $name = $call35 | 0;
    $19 = HEAP32[$name >> 2] | 0;
    $20 = HEAP8[$19] | 0;
    $tobool6368 = $20 << 24 >> 24 == 0;
    $21 = HEAP32[$ptr66 >> 2] | 0;
    $22 = HEAP32[$end68 >> 2] | 0;
    $cmp6969 = ($21 | 0) == ($22 | 0);
    if ($tobool6368) {
      $cmp69_lcssa = $cmp6969;
      label = 21;
      break;
    } else {
      $s_070 = $19;
      $cmp6971 = $cmp6969;
      label = 18;
      break;
    }
   case 18:
    if ($cmp6971) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $call73 = _poolGrow($m_tempPool65) | 0;
    $tobool74 = $call73 << 24 >> 24 == 0;
    if ($tobool74) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $23 = HEAP8[$s_070] | 0;
    $24 = HEAP32[$ptr66 >> 2] | 0;
    $incdec_ptr79 = $24 + 1 | 0;
    HEAP32[$ptr66 >> 2] = $incdec_ptr79;
    HEAP8[$24] = $23;
    $incdec_ptr83 = $s_070 + 1 | 0;
    $25 = HEAP8[$incdec_ptr83] | 0;
    $tobool63 = $25 << 24 >> 24 == 0;
    $26 = HEAP32[$ptr66 >> 2] | 0;
    $27 = HEAP32[$end68 >> 2] | 0;
    $cmp69 = ($26 | 0) == ($27 | 0);
    if ($tobool63) {
      $cmp69_lcssa = $cmp69;
      label = 21;
      break;
    } else {
      $s_070 = $incdec_ptr83;
      $cmp6971 = $cmp69;
      label = 18;
      break;
    }
   case 21:
    if ($cmp69_lcssa) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $call93 = _poolGrow($m_tempPool65) | 0;
    $tobool94 = $call93 << 24 >> 24 == 0;
    if ($tobool94) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $28 = HEAP32[$ptr66 >> 2] | 0;
    $incdec_ptr99 = $28 + 1 | 0;
    HEAP32[$ptr66 >> 2] = $incdec_ptr99;
    HEAP8[$28] = 61;
    $29 = HEAP32[$14 >> 2] | 0;
    $uriLen103 = $29 + 20 | 0;
    $30 = HEAP32[$uriLen103 >> 2] | 0;
    $31 = HEAP8[$m_namespaceSeparator104] | 0;
    $not_tobool105 = $31 << 24 >> 24 != 0;
    $dec107 = $not_tobool105 << 31 >> 31;
    $len34_0 = $dec107 + $30 | 0;
    $cmp11076 = ($len34_0 | 0) > 0;
    if ($cmp11076) {
      $i33_077 = 0;
      label = 24;
      break;
    } else {
      $needSep_1_ph = 1;
      label = 10;
      break;
    }
   case 24:
    $32 = HEAP32[$ptr66 >> 2] | 0;
    $33 = HEAP32[$end68 >> 2] | 0;
    $cmp117 = ($32 | 0) == ($33 | 0);
    if ($cmp117) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $call121 = _poolGrow($m_tempPool65) | 0;
    $tobool122 = $call121 << 24 >> 24 == 0;
    if ($tobool122) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $34 = HEAP32[$14 >> 2] | 0;
    $uri126 = $34 + 16 | 0;
    $35 = HEAP32[$uri126 >> 2] | 0;
    $arrayidx127 = $35 + $i33_077 | 0;
    $36 = HEAP8[$arrayidx127] | 0;
    $37 = HEAP32[$ptr66 >> 2] | 0;
    $incdec_ptr130 = $37 + 1 | 0;
    HEAP32[$ptr66 >> 2] = $incdec_ptr130;
    HEAP8[$37] = $36;
    $inc134 = $i33_077 + 1 | 0;
    $cmp110 = ($inc134 | 0) < ($len34_0 | 0);
    if ($cmp110) {
      $i33_077 = $inc134;
      label = 24;
      break;
    } else {
      $needSep_1_ph = 1;
      label = 10;
      break;
    }
   case 27:
    $generalEntities = $0 | 0;
    _hashTableIterInit($iter, $generalEntities);
    $ptr171 = $parser + 412 | 0;
    $end173 = $parser + 408 | 0;
    $m_tempPool170 = $parser + 400 | 0;
    $ptr150 = $parser + 412 | 0;
    $end152 = $parser + 408 | 0;
    $m_tempPool149 = $parser + 400 | 0;
    $needSep_2_ph = $needSep_1_ph;
    label = 28;
    break;
   case 28:
    label = 29;
    break;
   case 29:
    $call139 = _hashTableIterNext($iter) | 0;
    $tobool140 = ($call139 | 0) == 0;
    if ($tobool140) {
      label = 39;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $open = $call139 + 32 | 0;
    $38 = $open;
    $39 = HEAP8[$38] | 0;
    $tobool143 = $39 << 24 >> 24 == 0;
    if ($tobool143) {
      label = 29;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $tobool147 = $needSep_2_ph << 24 >> 24 == 0;
    if ($tobool147) {
      label = 35;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $40 = HEAP32[$ptr150 >> 2] | 0;
    $41 = HEAP32[$end152 >> 2] | 0;
    $cmp153 = ($40 | 0) == ($41 | 0);
    if ($cmp153) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $call157 = _poolGrow($m_tempPool149) | 0;
    $tobool158 = $call157 << 24 >> 24 == 0;
    if ($tobool158) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $42 = HEAP32[$ptr150 >> 2] | 0;
    $incdec_ptr163 = $42 + 1 | 0;
    HEAP32[$ptr150 >> 2] = $incdec_ptr163;
    HEAP8[$42] = 12;
    label = 35;
    break;
   case 35:
    $name166 = $call139 | 0;
    $43 = HEAP32[$name166 >> 2] | 0;
    $44 = HEAP8[$43] | 0;
    $tobool16859 = $44 << 24 >> 24 == 0;
    if ($tobool16859) {
      $needSep_2_ph = 1;
      label = 28;
      break;
    } else {
      $s138_060 = $43;
      label = 36;
      break;
    }
   case 36:
    $45 = HEAP32[$ptr171 >> 2] | 0;
    $46 = HEAP32[$end173 >> 2] | 0;
    $cmp174 = ($45 | 0) == ($46 | 0);
    if ($cmp174) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $call178 = _poolGrow($m_tempPool170) | 0;
    $tobool179 = $call178 << 24 >> 24 == 0;
    if ($tobool179) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $47 = HEAP8[$s138_060] | 0;
    $48 = HEAP32[$ptr171 >> 2] | 0;
    $incdec_ptr184 = $48 + 1 | 0;
    HEAP32[$ptr171 >> 2] = $incdec_ptr184;
    HEAP8[$48] = $47;
    $incdec_ptr188 = $s138_060 + 1 | 0;
    $49 = HEAP8[$incdec_ptr188] | 0;
    $tobool168 = $49 << 24 >> 24 == 0;
    if ($tobool168) {
      $needSep_2_ph = 1;
      label = 28;
      break;
    } else {
      $s138_060 = $incdec_ptr188;
      label = 36;
      break;
    }
   case 39:
    $ptr192 = $parser + 412 | 0;
    $50 = HEAP32[$ptr192 >> 2] | 0;
    $end194 = $parser + 408 | 0;
    $51 = HEAP32[$end194 >> 2] | 0;
    $cmp195 = ($50 | 0) == ($51 | 0);
    if ($cmp195) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 40:
    $m_tempPool191 = $parser + 400 | 0;
    $call199 = _poolGrow($m_tempPool191) | 0;
    $tobool200 = $call199 << 24 >> 24 == 0;
    if ($tobool200) {
      $retval_0 = 0;
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $52 = HEAP32[$ptr192 >> 2] | 0;
    $incdec_ptr205 = $52 + 1 | 0;
    HEAP32[$ptr192 >> 2] = $incdec_ptr205;
    HEAP8[$52] = 0;
    $start = $parser + 416 | 0;
    $53 = HEAP32[$start >> 2] | 0;
    $retval_0 = $53;
    label = 42;
    break;
   case 42:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _storeAtts($parser, $enc, $attStr, $tagNamePtr, $bindingsPtr) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $attStr = $attStr | 0;
  $tagNamePtr = $tagNamePtr | 0;
  $bindingsPtr = $bindingsPtr | 0;
  var $m_dtd = 0, $0 = 0, $elementTypes = 0, $str = 0, $1 = 0, $call = 0, $2 = 0, $tobool = 0, $pool = 0, $3 = 0, $call2 = 0, $tobool3 = 0, $call6 = 0, $4 = 0, $tobool7 = 0, $m_ns = 0, $5 = 0, $tobool10 = 0, $call11 = 0, $tobool12 = 0, $elementType_0 = 0, $nDefaultAtts16 = 0, $6 = 0, $getAtts = 0, $7 = 0, $m_attsSize = 0, $8 = 0, $m_atts = 0, $9 = 0, $call17 = 0, $add = 0, $10 = 0, $cmp = 0, $add23 = 0, $realloc_fcn = 0, $11 = 0, $12 = 0, $13 = 0, $mul = 0, $call27 = 0, $14 = 0, $cmp28 = 0, $cmp33 = 0, $15 = 0, $call38 = 0, $16 = 0, $17 = 0, $cmp42377 = 0, $nameLength = 0, $m_tempPool = 0, $start = 0, $ptr = 0, $defaultAtts = 0, $m_tempPool102 = 0, $ptr117 = 0, $start119 = 0, $attIndex_0381 = 0, $i_0379 = 0, $nPrefixes_0378 = 0, $18 = 0, $name45 = 0, $19 = 0, $20 = 0, $call48 = 0, $add_ptr = 0, $call49 = 0, $tobool50 = 0, $name53 = 0, $21 = 0, $arrayidx54 = 0, $22 = 0, $tobool55 = 0, $m_encoding = 0, $23 = 0, $cmp57 = 0, $24 = 0, $name62 = 0, $25 = 0, $m_eventPtr = 0, $26 = 0, $inc = 0, $arrayidx68 = 0, $27 = 0, $normalized = 0, $28 = 0, $tobool71 = 0, $maybeTokenized = 0, $29 = 0, $tobool73 = 0, $j_0 = 0, $cmp76 = 0, $30 = 0, $id = 0, $31 = 0, $cmp80 = 0, $inc87 = 0, $isCdata85 = 0, $32 = 0, $isCdata_0 = 0, $33 = 0, $valuePtr = 0, $34 = 0, $valueEnd = 0, $35 = 0, $call93 = 0, $tobool94 = 0, $36 = 0, $arrayidx98 = 0, $37 = 0, $valuePtr105 = 0, $38 = 0, $valueEnd108 = 0, $39 = 0, $call109 = 0, $arrayidx110 = 0, $cmp112 = 0, $40 = 0, $prefix = 0, $41 = 0, $tobool121 = 0, $xmlns = 0, $42 = 0, $tobool123 = 0, $arrayidx127 = 0, $43 = 0, $call128 = 0, $tobool129 = 0, $inc133 = 0, $inc134 = 0, $44 = 0, $arrayidx136 = 0, $inc139 = 0, $nPrefixes_1 = 0, $attIndex_1 = 0, $inc142 = 0, $cmp42 = 0, $attIndex_0_lcssa = 0, $nPrefixes_0_lcssa = 0, $m_nSpecifiedAtts = 0, $idAtt = 0, $45 = 0, $tobool144 = 0, $name147 = 0, $46 = 0, $arrayidx148 = 0, $47 = 0, $tobool150 = 0, $i_1 = 0, $cmp153 = 0, $arrayidx156 = 0, $48 = 0, $49 = 0, $name158 = 0, $50 = 0, $cmp159 = 0, $add164 = 0, $m_idAttIndex = 0, $m_idAttIndex167 = 0, $cmp170362 = 0, $defaultAtts173 = 0, $attIndex_2365 = 0, $i_2364 = 0, $nPrefixes_2363 = 0, $51 = 0, $id175 = 0, $52 = 0, $name176 = 0, $53 = 0, $arrayidx177 = 0, $54 = 0, $tobool178 = 0, $value = 0, $55 = 0, $tobool180 = 0, $prefix183 = 0, $56 = 0, $tobool184 = 0, $xmlns187 = 0, $57 = 0, $tobool188 = 0, $call195 = 0, $tobool196 = 0, $inc203 = 0, $58 = 0, $name205 = 0, $59 = 0, $inc206 = 0, $arrayidx207 = 0, $60 = 0, $inc209 = 0, $arrayidx210 = 0, $61 = 0, $name217 = 0, $62 = 0, $inc218 = 0, $arrayidx219 = 0, $63 = 0, $inc221 = 0, $arrayidx222 = 0, $nPrefixes_3 = 0, $attIndex_3 = 0, $inc226 = 0, $cmp170 = 0, $attIndex_2_lcssa = 0, $nPrefixes_2_lcssa = 0, $arrayidx228 = 0, $tobool229 = 0, $i_4_ph = 0, $cmp465317 = 0, $m_nsAttsVersion = 0, $64 = 0, $m_nsAttsPower = 0, $65 = 0, $conv232 = 0, $shl233 = 0, $shr = 0, $tobool236 = 0, $m_nsAttsPower_promoted = 0, $66 = 0, $inc240 = 0, $conv241 = 0, $shr242 = 0, $tobool243 = 0, $cmp246 = 0, $_inc240 = 0, $conv252 = 0, $realloc_fcn255 = 0, $67 = 0, $m_nsAtts = 0, $68 = 0, $69 = 0, $mul256 = 0, $call257 = 0, $tobool258 = 0, $70 = 0, $nsAttsSize_0307 = 0, $nsAttsSize_0 = 0, $tobool263 = 0, $nsAttsSize_0310_ph = 0, $m_nsAtts270 = 0, $j231_0356 = 0, $dec269 = 0, $71 = 0, $version272 = 0, $cmp266 = 0, $nsAttsSize_0309 = 0, $version_1 = 0, $dec275 = 0, $cmp278351 = 0, $m_hash_secret_salt = 0, $attributeIds = 0, $m_tempPool327 = 0, $ptr328 = 0, $end330 = 0, $sub = 0, $m_nsAtts350 = 0, $m_ns_triplets = 0, $start437 = 0, $m_namespaceSeparator = 0, $start362 = 0, $neg = 0, $shr391 = 0, $ptr302 = 0, $end = 0, $m_tempPool301 = 0, $i_3353 = 0, $nPrefixes_4352 = 0, $arrayidx281 = 0, $72 = 0, $arrayidx282 = 0, $73 = 0, $cmp284 = 0, $74 = 0, $call289 = 0, $prefix290 = 0, $75 = 0, $76 = 0, $binding291 = 0, $77 = 0, $tobool292 = 0, $uriLen = 0, $78 = 0, $cmp296320 = 0, $uri299 = 0, $uriHash_0322 = 0, $j231_1321 = 0, $79 = 0, $arrayidx300 = 0, $80 = 0, $81 = 0, $82 = 0, $cmp304 = 0, $call308 = 0, $tobool309 = 0, $83 = 0, $incdec_ptr = 0, $mul314 = 0, $conv315 = 0, $xor = 0, $inc317 = 0, $84 = 0, $cmp296 = 0, $uriHash_0_lcssa = 0, $s_0 = 0, $incdec_ptr320 = 0, $85 = 0, $cmp322 = 0, $s_1 = 0, $uriHash_1 = 0, $86 = 0, $87 = 0, $88 = 0, $cmp331 = 0, $call335 = 0, $tobool336 = 0, $89 = 0, $90 = 0, $incdec_ptr341 = 0, $mul344 = 0, $conv345 = 0, $xor346 = 0, $incdec_ptr347 = 0, $91 = 0, $tobool348 = 0, $and = 0, $92 = 0, $version352337 = 0, $93 = 0, $cmp353338 = 0, $and386 = 0, $94 = 0, $step_0340 = 0, $j231_2339 = 0, $hash = 0, $95 = 0, $cmp358 = 0, $96 = 0, $uriName = 0, $97 = 0, $98 = 0, $99 = 0, $cmp368328 = 0, $cmp371329 = 0, $or_cond330 = 0, $s2_0332 = 0, $s1_0331 = 0, $incdec_ptr375 = 0, $incdec_ptr376 = 0, $100 = 0, $101 = 0, $cmp368 = 0, $cmp371 = 0, $or_cond = 0, $cmp371_lcssa = 0, $tobool384 = 0, $102 = 0, $conv388 = 0, $sub389 = 0, $shr390 = 0, $and392 = 0, $or = 0, $conv393 = 0, $step_1 = 0, $conv395 = 0, $cmp396 = 0, $sub400 = 0, $sub400_j231_2339 = 0, $j231_2_be = 0, $103 = 0, $version352 = 0, $104 = 0, $cmp353 = 0, $j231_2_lcssa = 0, $105 = 0, $tobool406 = 0, $106 = 0, $107 = 0, $arrayidx410 = 0, $prefix411 = 0, $108 = 0, $name412 = 0, $109 = 0, $s_2 = 0, $110 = 0, $111 = 0, $cmp418 = 0, $call422 = 0, $tobool423 = 0, $112 = 0, $113 = 0, $incdec_ptr428 = 0, $incdec_ptr432 = 0, $114 = 0, $tobool433 = 0, $115 = 0, $116 = 0, $117 = 0, $version445 = 0, $118 = 0, $hash448 = 0, $119 = 0, $uriName451 = 0, $dec452 = 0, $tobool453 = 0, $add455 = 0, $nPrefixes_5 = 0, $add461 = 0, $cmp278 = 0, $binding_0314 = 0, $tobool474315 = 0, $i_4318 = 0, $arrayidx468 = 0, $120 = 0, $arrayidx469 = 0, $add471 = 0, $cmp465 = 0, $binding_0316 = 0, $attId476 = 0, $121 = 0, $name477 = 0, $122 = 0, $arrayidx478 = 0, $nextTagBinding = 0, $binding_0 = 0, $tobool474 = 0, $m_ns481 = 0, $123 = 0, $tobool482 = 0, $prefix485 = 0, $124 = 0, $tobool486 = 0, $binding489 = 0, $125 = 0, $tobool490 = 0, $126 = 0, $localPart_0 = 0, $incdec_ptr495 = 0, $127 = 0, $cmp497 = 0, $binding502 = 0, $128 = 0, $tobool503 = 0, $129 = 0, $localPart_1 = 0, $binding_1 = 0, $m_ns_triplets511 = 0, $130 = 0, $tobool513 = 0, $prefix515 = 0, $131 = 0, $name516 = 0, $132 = 0, $tobool517 = 0, $133 = 0, $name522 = 0, $134 = 0, $prefixLen_0 = 0, $inc520 = 0, $arrayidx523 = 0, $135 = 0, $tobool524 = 0, $prefixLen_1 = 0, $localPart528 = 0, $uriLen529 = 0, $136 = 0, $uriLen530 = 0, $prefix531 = 0, $137 = 0, $name532 = 0, $138 = 0, $prefix533 = 0, $prefixLen534 = 0, $i_5 = 0, $inc536 = 0, $arrayidx537 = 0, $139 = 0, $tobool538 = 0, $140 = 0, $add542 = 0, $add543 = 0, $uriAlloc = 0, $141 = 0, $cmp544 = 0, $malloc_fcn = 0, $142 = 0, $add548 = 0, $call550 = 0, $tobool551 = 0, $uri556 = 0, $143 = 0, $144 = 0, $m_tagStack = 0, $p_0311 = 0, $tobool560312 = 0, $p_0313 = 0, $str563 = 0, $145 = 0, $146 = 0, $cmp565 = 0, $parent = 0, $p_0 = 0, $tobool560 = 0, $free_fcn = 0, $147 = 0, $148 = 0, $uri577 = 0, $149 = 0, $150 = 0, $add_ptr579 = 0, $tobool581 = 0, $add_ptr579_sum = 0, $add_ptr584 = 0, $m_namespaceSeparator585 = 0, $151 = 0, $add_ptr584_sum = 0, $add_ptr586 = 0, $152 = 0, $name588 = 0, $153 = 0, $154 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $elementTypes = $0 + 20 | 0;
    $str = $tagNamePtr | 0;
    $1 = HEAP32[$str >> 2] | 0;
    $call = _lookup($parser, $elementTypes, $1, 0) | 0;
    $2 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $elementType_0 = $2;
      label = 7;
      break;
    }
   case 3:
    $pool = $0 + 80 | 0;
    $3 = HEAP32[$str >> 2] | 0;
    $call2 = _poolCopyString($pool, $3) | 0;
    $tobool3 = ($call2 | 0) == 0;
    if ($tobool3) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $call6 = _lookup($parser, $elementTypes, $call2, 24) | 0;
    $4 = $call6;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $m_ns = $parser + 232 | 0;
    $5 = HEAP8[$m_ns] | 0;
    $tobool10 = $5 << 24 >> 24 == 0;
    if ($tobool10) {
      $elementType_0 = $4;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call11 = _setElementTypePrefix($parser, $4) | 0;
    $tobool12 = ($call11 | 0) == 0;
    if ($tobool12) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      $elementType_0 = $4;
      label = 7;
      break;
    }
   case 7:
    $nDefaultAtts16 = $elementType_0 + 12 | 0;
    $6 = HEAP32[$nDefaultAtts16 >> 2] | 0;
    $getAtts = $enc + 36 | 0;
    $7 = HEAP32[$getAtts >> 2] | 0;
    $m_attsSize = $parser + 364 | 0;
    $8 = HEAP32[$m_attsSize >> 2] | 0;
    $m_atts = $parser + 376 | 0;
    $9 = HEAP32[$m_atts >> 2] | 0;
    $call17 = FUNCTION_TABLE_iiiii[$7 & 1023]($enc, $attStr, $8, $9) | 0;
    $add = $call17 + $6 | 0;
    $10 = HEAP32[$m_attsSize >> 2] | 0;
    $cmp = ($add | 0) > ($10 | 0);
    if ($cmp) {
      label = 8;
      break;
    } else {
      label = 11;
      break;
    }
   case 8:
    $add23 = $add + 16 | 0;
    HEAP32[$m_attsSize >> 2] = $add23;
    $realloc_fcn = $parser + 16 | 0;
    $11 = HEAP32[$realloc_fcn >> 2] | 0;
    $12 = HEAP32[$m_atts >> 2] | 0;
    $13 = $12;
    $mul = $add23 << 4;
    $call27 = FUNCTION_TABLE_iii[$11 & 1023]($13, $mul) | 0;
    $14 = $call27;
    $cmp28 = ($call27 | 0) == 0;
    if ($cmp28) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    HEAP32[$m_atts >> 2] = $14;
    $cmp33 = ($call17 | 0) > ($10 | 0);
    if ($cmp33) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $15 = HEAP32[$getAtts >> 2] | 0;
    $call38 = FUNCTION_TABLE_iiiii[$15 & 1023]($enc, $attStr, $call17, $14) | 0;
    label = 11;
    break;
   case 11:
    $16 = HEAP32[$m_atts >> 2] | 0;
    $17 = $16 | 0;
    $cmp42377 = ($call17 | 0) > 0;
    if ($cmp42377) {
      label = 12;
      break;
    } else {
      $nPrefixes_0_lcssa = 0;
      $attIndex_0_lcssa = 0;
      label = 32;
      break;
    }
   case 12:
    $nameLength = $enc + 28 | 0;
    $m_tempPool = $parser + 400 | 0;
    $start = $parser + 416 | 0;
    $ptr = $parser + 412 | 0;
    $defaultAtts = $elementType_0 + 20 | 0;
    $m_tempPool102 = $parser + 400 | 0;
    $ptr117 = $parser + 412 | 0;
    $start119 = $parser + 416 | 0;
    $nPrefixes_0378 = 0;
    $i_0379 = 0;
    $attIndex_0381 = 0;
    label = 13;
    break;
   case 13:
    $18 = HEAP32[$m_atts >> 2] | 0;
    $name45 = $18 + ($i_0379 << 4) | 0;
    $19 = HEAP32[$name45 >> 2] | 0;
    $20 = HEAP32[$nameLength >> 2] | 0;
    $call48 = FUNCTION_TABLE_iii[$20 & 1023]($enc, $19) | 0;
    $add_ptr = $19 + $call48 | 0;
    $call49 = _getAttributeId($parser, $enc, $19, $add_ptr) | 0;
    $tobool50 = ($call49 | 0) == 0;
    if ($tobool50) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $name53 = $call49 | 0;
    $21 = HEAP32[$name53 >> 2] | 0;
    $arrayidx54 = $21 - 1 | 0;
    $22 = HEAP8[$arrayidx54] | 0;
    $tobool55 = $22 << 24 >> 24 == 0;
    if ($tobool55) {
      label = 17;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $m_encoding = $parser + 144 | 0;
    $23 = HEAP32[$m_encoding >> 2] | 0;
    $cmp57 = ($23 | 0) == ($enc | 0);
    if ($cmp57) {
      label = 16;
      break;
    } else {
      $retval_0 = 8;
      label = 116;
      break;
    }
   case 16:
    $24 = HEAP32[$m_atts >> 2] | 0;
    $name62 = $24 + ($i_0379 << 4) | 0;
    $25 = HEAP32[$name62 >> 2] | 0;
    $m_eventPtr = $parser + 272 | 0;
    HEAP32[$m_eventPtr >> 2] = $25;
    $retval_0 = 8;
    label = 116;
    break;
   case 17:
    HEAP8[$arrayidx54] = 1;
    $26 = HEAP32[$name53 >> 2] | 0;
    $inc = $attIndex_0381 + 1 | 0;
    $arrayidx68 = $17 + ($attIndex_0381 << 2) | 0;
    HEAP32[$arrayidx68 >> 2] = $26;
    $27 = HEAP32[$m_atts >> 2] | 0;
    $normalized = $27 + ($i_0379 << 4) + 12 | 0;
    $28 = HEAP8[$normalized] | 0;
    $tobool71 = $28 << 24 >> 24 == 0;
    if ($tobool71) {
      label = 18;
      break;
    } else {
      label = 24;
      break;
    }
   case 18:
    $maybeTokenized = $call49 + 8 | 0;
    $29 = HEAP8[$maybeTokenized] | 0;
    $tobool73 = $29 << 24 >> 24 == 0;
    if ($tobool73) {
      $isCdata_0 = 1;
      label = 22;
      break;
    } else {
      $j_0 = 0;
      label = 19;
      break;
    }
   case 19:
    $cmp76 = ($j_0 | 0) < ($6 | 0);
    if ($cmp76) {
      label = 20;
      break;
    } else {
      $isCdata_0 = 1;
      label = 22;
      break;
    }
   case 20:
    $30 = HEAP32[$defaultAtts >> 2] | 0;
    $id = $30 + ($j_0 * 12 & -1) | 0;
    $31 = HEAP32[$id >> 2] | 0;
    $cmp80 = ($call49 | 0) == ($31 | 0);
    $inc87 = $j_0 + 1 | 0;
    if ($cmp80) {
      label = 21;
      break;
    } else {
      $j_0 = $inc87;
      label = 19;
      break;
    }
   case 21:
    $isCdata85 = $30 + ($j_0 * 12 & -1) + 4 | 0;
    $32 = HEAP8[$isCdata85] | 0;
    $isCdata_0 = $32;
    label = 22;
    break;
   case 22:
    $33 = HEAP32[$m_atts >> 2] | 0;
    $valuePtr = $33 + ($i_0379 << 4) + 4 | 0;
    $34 = HEAP32[$valuePtr >> 2] | 0;
    $valueEnd = $33 + ($i_0379 << 4) + 8 | 0;
    $35 = HEAP32[$valueEnd >> 2] | 0;
    $call93 = _storeAttributeValue($parser, $enc, $isCdata_0, $34, $35, $m_tempPool) | 0;
    $tobool94 = ($call93 | 0) == 0;
    if ($tobool94) {
      label = 23;
      break;
    } else {
      $retval_0 = $call93;
      label = 116;
      break;
    }
   case 23:
    $36 = HEAP32[$start >> 2] | 0;
    $arrayidx98 = $17 + ($inc << 2) | 0;
    HEAP32[$arrayidx98 >> 2] = $36;
    $37 = HEAP32[$ptr >> 2] | 0;
    HEAP32[$start >> 2] = $37;
    label = 26;
    break;
   case 24:
    $valuePtr105 = $27 + ($i_0379 << 4) + 4 | 0;
    $38 = HEAP32[$valuePtr105 >> 2] | 0;
    $valueEnd108 = $27 + ($i_0379 << 4) + 8 | 0;
    $39 = HEAP32[$valueEnd108 >> 2] | 0;
    $call109 = _poolStoreString($m_tempPool102, $enc, $38, $39) | 0;
    $arrayidx110 = $17 + ($inc << 2) | 0;
    HEAP32[$arrayidx110 >> 2] = $call109;
    $cmp112 = ($call109 | 0) == 0;
    if ($cmp112) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $40 = HEAP32[$ptr117 >> 2] | 0;
    HEAP32[$start119 >> 2] = $40;
    label = 26;
    break;
   case 26:
    $prefix = $call49 + 4 | 0;
    $41 = HEAP32[$prefix >> 2] | 0;
    $tobool121 = ($41 | 0) == 0;
    if ($tobool121) {
      label = 30;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $xmlns = $call49 + 9 | 0;
    $42 = HEAP8[$xmlns] | 0;
    $tobool123 = $42 << 24 >> 24 == 0;
    if ($tobool123) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $arrayidx127 = $17 + ($inc << 2) | 0;
    $43 = HEAP32[$arrayidx127 >> 2] | 0;
    $call128 = _addBinding($parser, $41, $call49, $43, $bindingsPtr) | 0;
    $tobool129 = ($call128 | 0) == 0;
    if ($tobool129) {
      $attIndex_1 = $attIndex_0381;
      $nPrefixes_1 = $nPrefixes_0378;
      label = 31;
      break;
    } else {
      $retval_0 = $call128;
      label = 116;
      break;
    }
   case 29:
    $inc133 = $attIndex_0381 + 2 | 0;
    $inc134 = $nPrefixes_0378 + 1 | 0;
    $44 = HEAP32[$name53 >> 2] | 0;
    $arrayidx136 = $44 - 1 | 0;
    HEAP8[$arrayidx136] = 2;
    $attIndex_1 = $inc133;
    $nPrefixes_1 = $inc134;
    label = 31;
    break;
   case 30:
    $inc139 = $attIndex_0381 + 2 | 0;
    $attIndex_1 = $inc139;
    $nPrefixes_1 = $nPrefixes_0378;
    label = 31;
    break;
   case 31:
    $inc142 = $i_0379 + 1 | 0;
    $cmp42 = ($inc142 | 0) < ($call17 | 0);
    if ($cmp42) {
      $nPrefixes_0378 = $nPrefixes_1;
      $i_0379 = $inc142;
      $attIndex_0381 = $attIndex_1;
      label = 13;
      break;
    } else {
      $nPrefixes_0_lcssa = $nPrefixes_1;
      $attIndex_0_lcssa = $attIndex_1;
      label = 32;
      break;
    }
   case 32:
    $m_nSpecifiedAtts = $parser + 368 | 0;
    HEAP32[$m_nSpecifiedAtts >> 2] = $attIndex_0_lcssa;
    $idAtt = $elementType_0 + 8 | 0;
    $45 = HEAP32[$idAtt >> 2] | 0;
    $tobool144 = ($45 | 0) == 0;
    if ($tobool144) {
      label = 37;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $name147 = $45 | 0;
    $46 = HEAP32[$name147 >> 2] | 0;
    $arrayidx148 = $46 - 1 | 0;
    $47 = HEAP8[$arrayidx148] | 0;
    $tobool150 = $47 << 24 >> 24 == 0;
    if ($tobool150) {
      label = 37;
      break;
    } else {
      $i_1 = 0;
      label = 34;
      break;
    }
   case 34:
    $cmp153 = ($i_1 | 0) < ($attIndex_0_lcssa | 0);
    if ($cmp153) {
      label = 35;
      break;
    } else {
      label = 38;
      break;
    }
   case 35:
    $arrayidx156 = $17 + ($i_1 << 2) | 0;
    $48 = HEAP32[$arrayidx156 >> 2] | 0;
    $49 = HEAP32[$idAtt >> 2] | 0;
    $name158 = $49 | 0;
    $50 = HEAP32[$name158 >> 2] | 0;
    $cmp159 = ($48 | 0) == ($50 | 0);
    $add164 = $i_1 + 2 | 0;
    if ($cmp159) {
      label = 36;
      break;
    } else {
      $i_1 = $add164;
      label = 34;
      break;
    }
   case 36:
    $m_idAttIndex = $parser + 372 | 0;
    HEAP32[$m_idAttIndex >> 2] = $i_1;
    label = 38;
    break;
   case 37:
    $m_idAttIndex167 = $parser + 372 | 0;
    HEAP32[$m_idAttIndex167 >> 2] = -1;
    label = 38;
    break;
   case 38:
    $cmp170362 = ($6 | 0) > 0;
    if ($cmp170362) {
      label = 39;
      break;
    } else {
      $nPrefixes_2_lcssa = $nPrefixes_0_lcssa;
      $attIndex_2_lcssa = $attIndex_0_lcssa;
      label = 48;
      break;
    }
   case 39:
    $defaultAtts173 = $elementType_0 + 20 | 0;
    $nPrefixes_2363 = $nPrefixes_0_lcssa;
    $i_2364 = 0;
    $attIndex_2365 = $attIndex_0_lcssa;
    label = 40;
    break;
   case 40:
    $51 = HEAP32[$defaultAtts173 >> 2] | 0;
    $id175 = $51 + ($i_2364 * 12 & -1) | 0;
    $52 = HEAP32[$id175 >> 2] | 0;
    $name176 = $52 | 0;
    $53 = HEAP32[$name176 >> 2] | 0;
    $arrayidx177 = $53 - 1 | 0;
    $54 = HEAP8[$arrayidx177] | 0;
    $tobool178 = $54 << 24 >> 24 == 0;
    if ($tobool178) {
      label = 41;
      break;
    } else {
      $attIndex_3 = $attIndex_2365;
      $nPrefixes_3 = $nPrefixes_2363;
      label = 47;
      break;
    }
   case 41:
    $value = $51 + ($i_2364 * 12 & -1) + 8 | 0;
    $55 = HEAP32[$value >> 2] | 0;
    $tobool180 = ($55 | 0) == 0;
    if ($tobool180) {
      $attIndex_3 = $attIndex_2365;
      $nPrefixes_3 = $nPrefixes_2363;
      label = 47;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $prefix183 = $52 + 4 | 0;
    $56 = HEAP32[$prefix183 >> 2] | 0;
    $tobool184 = ($56 | 0) == 0;
    if ($tobool184) {
      label = 46;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $xmlns187 = $52 + 9 | 0;
    $57 = HEAP8[$xmlns187] | 0;
    $tobool188 = $57 << 24 >> 24 == 0;
    if ($tobool188) {
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $call195 = _addBinding($parser, $56, $52, $55, $bindingsPtr) | 0;
    $tobool196 = ($call195 | 0) == 0;
    if ($tobool196) {
      $attIndex_3 = $attIndex_2365;
      $nPrefixes_3 = $nPrefixes_2363;
      label = 47;
      break;
    } else {
      $retval_0 = $call195;
      label = 116;
      break;
    }
   case 45:
    HEAP8[$arrayidx177] = 2;
    $inc203 = $nPrefixes_2363 + 1 | 0;
    $58 = HEAP32[$id175 >> 2] | 0;
    $name205 = $58 | 0;
    $59 = HEAP32[$name205 >> 2] | 0;
    $inc206 = $attIndex_2365 + 1 | 0;
    $arrayidx207 = $17 + ($attIndex_2365 << 2) | 0;
    HEAP32[$arrayidx207 >> 2] = $59;
    $60 = HEAP32[$value >> 2] | 0;
    $inc209 = $attIndex_2365 + 2 | 0;
    $arrayidx210 = $17 + ($inc206 << 2) | 0;
    HEAP32[$arrayidx210 >> 2] = $60;
    $attIndex_3 = $inc209;
    $nPrefixes_3 = $inc203;
    label = 47;
    break;
   case 46:
    HEAP8[$arrayidx177] = 1;
    $61 = HEAP32[$id175 >> 2] | 0;
    $name217 = $61 | 0;
    $62 = HEAP32[$name217 >> 2] | 0;
    $inc218 = $attIndex_2365 + 1 | 0;
    $arrayidx219 = $17 + ($attIndex_2365 << 2) | 0;
    HEAP32[$arrayidx219 >> 2] = $62;
    $63 = HEAP32[$value >> 2] | 0;
    $inc221 = $attIndex_2365 + 2 | 0;
    $arrayidx222 = $17 + ($inc218 << 2) | 0;
    HEAP32[$arrayidx222 >> 2] = $63;
    $attIndex_3 = $inc221;
    $nPrefixes_3 = $nPrefixes_2363;
    label = 47;
    break;
   case 47:
    $inc226 = $i_2364 + 1 | 0;
    $cmp170 = ($inc226 | 0) < ($6 | 0);
    if ($cmp170) {
      $nPrefixes_2363 = $nPrefixes_3;
      $i_2364 = $inc226;
      $attIndex_2365 = $attIndex_3;
      label = 40;
      break;
    } else {
      $nPrefixes_2_lcssa = $nPrefixes_3;
      $attIndex_2_lcssa = $attIndex_3;
      label = 48;
      break;
    }
   case 48:
    $arrayidx228 = $17 + ($attIndex_2_lcssa << 2) | 0;
    HEAP32[$arrayidx228 >> 2] = 0;
    $tobool229 = ($nPrefixes_2_lcssa | 0) == 0;
    if ($tobool229) {
      $i_4_ph = 0;
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 49:
    $cmp465317 = ($i_4_ph | 0) < ($attIndex_2_lcssa | 0);
    if ($cmp465317) {
      $i_4318 = $i_4_ph;
      label = 91;
      break;
    } else {
      label = 90;
      break;
    }
   case 50:
    $m_nsAttsVersion = $parser + 384 | 0;
    $64 = HEAP32[$m_nsAttsVersion >> 2] | 0;
    $m_nsAttsPower = $parser + 388 | 0;
    $65 = HEAP8[$m_nsAttsPower] | 0;
    $conv232 = $65 & 255;
    $shl233 = $nPrefixes_2_lcssa << 1;
    $shr = $shl233 >> $conv232;
    $tobool236 = ($shr | 0) == 0;
    if ($tobool236) {
      label = 55;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $m_nsAttsPower_promoted = HEAP8[$m_nsAttsPower] | 0;
    $66 = $m_nsAttsPower_promoted;
    label = 52;
    break;
   case 52:
    $inc240 = $66 + 1 & 255;
    $conv241 = $66 & 255;
    $shr242 = $nPrefixes_2_lcssa >> $conv241;
    $tobool243 = ($shr242 | 0) == 0;
    if ($tobool243) {
      label = 53;
      break;
    } else {
      $66 = $inc240;
      label = 52;
      break;
    }
   case 53:
    $cmp246 = ($inc240 & 255) < 3;
    $_inc240 = $cmp246 ? 3 : $inc240;
    HEAP8[$m_nsAttsPower] = $_inc240;
    $conv252 = $_inc240 & 255;
    $realloc_fcn255 = $parser + 16 | 0;
    $67 = HEAP32[$realloc_fcn255 >> 2] | 0;
    $m_nsAtts = $parser + 380 | 0;
    $68 = HEAP32[$m_nsAtts >> 2] | 0;
    $69 = $68;
    $mul256 = 12 << $conv252;
    $call257 = FUNCTION_TABLE_iii[$67 & 1023]($69, $mul256) | 0;
    $tobool258 = ($call257 | 0) == 0;
    if ($tobool258) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    $70 = $call257;
    HEAP32[$m_nsAtts >> 2] = $70;
    $nsAttsSize_0307 = 1 << $conv252;
    $nsAttsSize_0310_ph = $nsAttsSize_0307;
    label = 56;
    break;
   case 55:
    $nsAttsSize_0 = 1 << $conv232;
    $tobool263 = ($64 | 0) == 0;
    if ($tobool263) {
      $nsAttsSize_0310_ph = $nsAttsSize_0;
      label = 56;
      break;
    } else {
      $version_1 = $64;
      $nsAttsSize_0309 = $nsAttsSize_0;
      label = 58;
      break;
    }
   case 56:
    $m_nsAtts270 = $parser + 380 | 0;
    $j231_0356 = $nsAttsSize_0310_ph;
    label = 57;
    break;
   case 57:
    $dec269 = $j231_0356 - 1 | 0;
    $71 = HEAP32[$m_nsAtts270 >> 2] | 0;
    $version272 = $71 + ($dec269 * 12 & -1) | 0;
    HEAP32[$version272 >> 2] = -1;
    $cmp266 = ($dec269 | 0) == 0;
    if ($cmp266) {
      $version_1 = -1;
      $nsAttsSize_0309 = $nsAttsSize_0310_ph;
      label = 58;
      break;
    } else {
      $j231_0356 = $dec269;
      label = 57;
      break;
    }
   case 58:
    $dec275 = $version_1 - 1 | 0;
    HEAP32[$m_nsAttsVersion >> 2] = $dec275;
    $cmp278351 = ($attIndex_2_lcssa | 0) > 0;
    if ($cmp278351) {
      label = 59;
      break;
    } else {
      $i_4_ph = 0;
      label = 49;
      break;
    }
   case 59:
    $m_hash_secret_salt = $parser + 472 | 0;
    $attributeIds = $0 + 40 | 0;
    $m_tempPool327 = $parser + 400 | 0;
    $ptr328 = $parser + 412 | 0;
    $end330 = $parser + 408 | 0;
    $sub = $nsAttsSize_0309 - 1 | 0;
    $m_nsAtts350 = $parser + 380 | 0;
    $m_ns_triplets = $parser + 233 | 0;
    $start437 = $parser + 416 | 0;
    $m_namespaceSeparator = $parser + 456 | 0;
    $start362 = $parser + 416 | 0;
    $neg = -$nsAttsSize_0309 | 0;
    $shr391 = $sub >>> 2;
    $ptr302 = $parser + 412 | 0;
    $end = $parser + 408 | 0;
    $m_tempPool301 = $parser + 400 | 0;
    $nPrefixes_4352 = $nPrefixes_2_lcssa;
    $i_3353 = 0;
    label = 60;
    break;
   case 60:
    $arrayidx281 = $17 + ($i_3353 << 2) | 0;
    $72 = HEAP32[$arrayidx281 >> 2] | 0;
    $arrayidx282 = $72 - 1 | 0;
    $73 = HEAP8[$arrayidx282] | 0;
    $cmp284 = $73 << 24 >> 24 == 2;
    if ($cmp284) {
      label = 61;
      break;
    } else {
      label = 88;
      break;
    }
   case 61:
    $74 = HEAP32[$m_hash_secret_salt >> 2] | 0;
    HEAP8[$arrayidx282] = 0;
    $call289 = _lookup($parser, $attributeIds, $72, 0) | 0;
    $prefix290 = $call289 + 4 | 0;
    $75 = $prefix290;
    $76 = HEAP32[$75 >> 2] | 0;
    $binding291 = $76 + 4 | 0;
    $77 = HEAP32[$binding291 >> 2] | 0;
    $tobool292 = ($77 | 0) == 0;
    if ($tobool292) {
      $retval_0 = 27;
      label = 116;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    $uriLen = $77 + 20 | 0;
    $78 = HEAP32[$uriLen >> 2] | 0;
    $cmp296320 = ($78 | 0) > 0;
    if ($cmp296320) {
      label = 63;
      break;
    } else {
      $uriHash_0_lcssa = $74;
      label = 67;
      break;
    }
   case 63:
    $uri299 = $77 + 16 | 0;
    $j231_1321 = 0;
    $uriHash_0322 = $74;
    label = 64;
    break;
   case 64:
    $79 = HEAP32[$uri299 >> 2] | 0;
    $arrayidx300 = $79 + $j231_1321 | 0;
    $80 = HEAP8[$arrayidx300] | 0;
    $81 = HEAP32[$ptr302 >> 2] | 0;
    $82 = HEAP32[$end >> 2] | 0;
    $cmp304 = ($81 | 0) == ($82 | 0);
    if ($cmp304) {
      label = 65;
      break;
    } else {
      label = 66;
      break;
    }
   case 65:
    $call308 = _poolGrow($m_tempPool301) | 0;
    $tobool309 = $call308 << 24 >> 24 == 0;
    if ($tobool309) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    $83 = HEAP32[$ptr302 >> 2] | 0;
    $incdec_ptr = $83 + 1 | 0;
    HEAP32[$ptr302 >> 2] = $incdec_ptr;
    HEAP8[$83] = $80;
    $mul314 = $uriHash_0322 * 1000003 & -1;
    $conv315 = $80 & 255;
    $xor = $conv315 ^ $mul314;
    $inc317 = $j231_1321 + 1 | 0;
    $84 = HEAP32[$uriLen >> 2] | 0;
    $cmp296 = ($inc317 | 0) < ($84 | 0);
    if ($cmp296) {
      $j231_1321 = $inc317;
      $uriHash_0322 = $xor;
      label = 64;
      break;
    } else {
      $uriHash_0_lcssa = $xor;
      label = 67;
      break;
    }
   case 67:
    $s_0 = $72;
    label = 68;
    break;
   case 68:
    $incdec_ptr320 = $s_0 + 1 | 0;
    $85 = HEAP8[$s_0] | 0;
    $cmp322 = $85 << 24 >> 24 == 58;
    if ($cmp322) {
      $uriHash_1 = $uriHash_0_lcssa;
      $s_1 = $incdec_ptr320;
      label = 69;
      break;
    } else {
      $s_0 = $incdec_ptr320;
      label = 68;
      break;
    }
   case 69:
    $86 = HEAP8[$s_1] | 0;
    $87 = HEAP32[$ptr328 >> 2] | 0;
    $88 = HEAP32[$end330 >> 2] | 0;
    $cmp331 = ($87 | 0) == ($88 | 0);
    if ($cmp331) {
      label = 70;
      break;
    } else {
      label = 71;
      break;
    }
   case 70:
    $call335 = _poolGrow($m_tempPool327) | 0;
    $tobool336 = $call335 << 24 >> 24 == 0;
    if ($tobool336) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 71;
      break;
    }
   case 71:
    $89 = HEAP8[$s_1] | 0;
    $90 = HEAP32[$ptr328 >> 2] | 0;
    $incdec_ptr341 = $90 + 1 | 0;
    HEAP32[$ptr328 >> 2] = $incdec_ptr341;
    HEAP8[$90] = $89;
    $mul344 = $uriHash_1 * 1000003 & -1;
    $conv345 = $86 & 255;
    $xor346 = $conv345 ^ $mul344;
    $incdec_ptr347 = $s_1 + 1 | 0;
    $91 = HEAP8[$s_1] | 0;
    $tobool348 = $91 << 24 >> 24 == 0;
    if ($tobool348) {
      label = 72;
      break;
    } else {
      $uriHash_1 = $xor346;
      $s_1 = $incdec_ptr347;
      label = 69;
      break;
    }
   case 72:
    $and = $xor346 & $sub;
    $92 = HEAP32[$m_nsAtts350 >> 2] | 0;
    $version352337 = $92 + ($and * 12 & -1) | 0;
    $93 = HEAP32[$version352337 >> 2] | 0;
    $cmp353338 = ($93 | 0) == ($dec275 | 0);
    if ($cmp353338) {
      label = 73;
      break;
    } else {
      $j231_2_lcssa = $and;
      label = 81;
      break;
    }
   case 73:
    $and386 = $xor346 & $neg;
    $j231_2339 = $and;
    $step_0340 = 0;
    $94 = $92;
    label = 74;
    break;
   case 74:
    $hash = $94 + ($j231_2339 * 12 & -1) + 4 | 0;
    $95 = HEAP32[$hash >> 2] | 0;
    $cmp358 = ($xor346 | 0) == ($95 | 0);
    if ($cmp358) {
      label = 75;
      break;
    } else {
      label = 78;
      break;
    }
   case 75:
    $96 = HEAP32[$start362 >> 2] | 0;
    $uriName = $94 + ($j231_2339 * 12 & -1) + 8 | 0;
    $97 = HEAP32[$uriName >> 2] | 0;
    $98 = HEAP8[$96] | 0;
    $99 = HEAP8[$97] | 0;
    $cmp368328 = $98 << 24 >> 24 != $99 << 24 >> 24;
    $cmp371329 = $98 << 24 >> 24 == 0;
    $or_cond330 = $cmp368328 | $cmp371329;
    if ($or_cond330) {
      $cmp371_lcssa = $cmp371329;
      label = 77;
      break;
    } else {
      $s1_0331 = $96;
      $s2_0332 = $97;
      label = 76;
      break;
    }
   case 76:
    $incdec_ptr375 = $s1_0331 + 1 | 0;
    $incdec_ptr376 = $s2_0332 + 1 | 0;
    $100 = HEAP8[$incdec_ptr375] | 0;
    $101 = HEAP8[$incdec_ptr376] | 0;
    $cmp368 = $100 << 24 >> 24 != $101 << 24 >> 24;
    $cmp371 = $100 << 24 >> 24 == 0;
    $or_cond = $cmp368 | $cmp371;
    if ($or_cond) {
      $cmp371_lcssa = $cmp371;
      label = 77;
      break;
    } else {
      $s1_0331 = $incdec_ptr375;
      $s2_0332 = $incdec_ptr376;
      label = 76;
      break;
    }
   case 77:
    if ($cmp371_lcssa) {
      $retval_0 = 8;
      label = 116;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $tobool384 = $step_0340 << 24 >> 24 == 0;
    if ($tobool384) {
      label = 79;
      break;
    } else {
      $step_1 = $step_0340;
      label = 80;
      break;
    }
   case 79:
    $102 = HEAP8[$m_nsAttsPower] | 0;
    $conv388 = $102 & 255;
    $sub389 = $conv388 - 1 | 0;
    $shr390 = $and386 >>> ($sub389 >>> 0);
    $and392 = $shr390 & $shr391;
    $or = $and392 | 1;
    $conv393 = $or & 255;
    $step_1 = $conv393;
    label = 80;
    break;
   case 80:
    $conv395 = $step_1 & 255;
    $cmp396 = ($j231_2339 | 0) < ($conv395 | 0);
    $sub400 = $cmp396 ? $nsAttsSize_0309 : 0;
    $sub400_j231_2339 = $j231_2339 + $sub400 | 0;
    $j231_2_be = $sub400_j231_2339 - $conv395 | 0;
    $103 = HEAP32[$m_nsAtts350 >> 2] | 0;
    $version352 = $103 + ($j231_2_be * 12 & -1) | 0;
    $104 = HEAP32[$version352 >> 2] | 0;
    $cmp353 = ($104 | 0) == ($dec275 | 0);
    if ($cmp353) {
      $j231_2339 = $j231_2_be;
      $step_0340 = $step_1;
      $94 = $103;
      label = 74;
      break;
    } else {
      $j231_2_lcssa = $j231_2_be;
      label = 81;
      break;
    }
   case 81:
    $105 = HEAP8[$m_ns_triplets] | 0;
    $tobool406 = $105 << 24 >> 24 == 0;
    if ($tobool406) {
      label = 86;
      break;
    } else {
      label = 82;
      break;
    }
   case 82:
    $106 = HEAP8[$m_namespaceSeparator] | 0;
    $107 = HEAP32[$ptr328 >> 2] | 0;
    $arrayidx410 = $107 - 1 | 0;
    HEAP8[$arrayidx410] = $106;
    $prefix411 = $77 | 0;
    $108 = HEAP32[$prefix411 >> 2] | 0;
    $name412 = $108 | 0;
    $109 = HEAP32[$name412 >> 2] | 0;
    $s_2 = $109;
    label = 83;
    break;
   case 83:
    $110 = HEAP32[$ptr328 >> 2] | 0;
    $111 = HEAP32[$end330 >> 2] | 0;
    $cmp418 = ($110 | 0) == ($111 | 0);
    if ($cmp418) {
      label = 84;
      break;
    } else {
      label = 85;
      break;
    }
   case 84:
    $call422 = _poolGrow($m_tempPool327) | 0;
    $tobool423 = $call422 << 24 >> 24 == 0;
    if ($tobool423) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 85;
      break;
    }
   case 85:
    $112 = HEAP8[$s_2] | 0;
    $113 = HEAP32[$ptr328 >> 2] | 0;
    $incdec_ptr428 = $113 + 1 | 0;
    HEAP32[$ptr328 >> 2] = $incdec_ptr428;
    HEAP8[$113] = $112;
    $incdec_ptr432 = $s_2 + 1 | 0;
    $114 = HEAP8[$s_2] | 0;
    $tobool433 = $114 << 24 >> 24 == 0;
    if ($tobool433) {
      label = 86;
      break;
    } else {
      $s_2 = $incdec_ptr432;
      label = 83;
      break;
    }
   case 86:
    $115 = HEAP32[$start437 >> 2] | 0;
    $116 = HEAP32[$ptr328 >> 2] | 0;
    HEAP32[$start437 >> 2] = $116;
    HEAP32[$arrayidx281 >> 2] = $115;
    $117 = HEAP32[$m_nsAtts350 >> 2] | 0;
    $version445 = $117 + ($j231_2_lcssa * 12 & -1) | 0;
    HEAP32[$version445 >> 2] = $dec275;
    $118 = HEAP32[$m_nsAtts350 >> 2] | 0;
    $hash448 = $118 + ($j231_2_lcssa * 12 & -1) + 4 | 0;
    HEAP32[$hash448 >> 2] = $xor346;
    $119 = HEAP32[$m_nsAtts350 >> 2] | 0;
    $uriName451 = $119 + ($j231_2_lcssa * 12 & -1) + 8 | 0;
    HEAP32[$uriName451 >> 2] = $115;
    $dec452 = $nPrefixes_4352 - 1 | 0;
    $tobool453 = ($dec452 | 0) == 0;
    if ($tobool453) {
      label = 87;
      break;
    } else {
      $nPrefixes_5 = $dec452;
      label = 89;
      break;
    }
   case 87:
    $add455 = $i_3353 + 2 | 0;
    $i_4_ph = $add455;
    label = 49;
    break;
   case 88:
    HEAP8[$arrayidx282] = 0;
    $nPrefixes_5 = $nPrefixes_4352;
    label = 89;
    break;
   case 89:
    $add461 = $i_3353 + 2 | 0;
    $cmp278 = ($add461 | 0) < ($attIndex_2_lcssa | 0);
    if ($cmp278) {
      $nPrefixes_4352 = $nPrefixes_5;
      $i_3353 = $add461;
      label = 60;
      break;
    } else {
      $i_4_ph = $add461;
      label = 49;
      break;
    }
   case 90:
    $binding_0314 = HEAP32[$bindingsPtr >> 2] | 0;
    $tobool474315 = ($binding_0314 | 0) == 0;
    if ($tobool474315) {
      label = 93;
      break;
    } else {
      $binding_0316 = $binding_0314;
      label = 92;
      break;
    }
   case 91:
    $arrayidx468 = $17 + ($i_4318 << 2) | 0;
    $120 = HEAP32[$arrayidx468 >> 2] | 0;
    $arrayidx469 = $120 - 1 | 0;
    HEAP8[$arrayidx469] = 0;
    $add471 = $i_4318 + 2 | 0;
    $cmp465 = ($add471 | 0) < ($attIndex_2_lcssa | 0);
    if ($cmp465) {
      $i_4318 = $add471;
      label = 91;
      break;
    } else {
      label = 90;
      break;
    }
   case 92:
    $attId476 = $binding_0316 + 12 | 0;
    $121 = HEAP32[$attId476 >> 2] | 0;
    $name477 = $121 | 0;
    $122 = HEAP32[$name477 >> 2] | 0;
    $arrayidx478 = $122 - 1 | 0;
    HEAP8[$arrayidx478] = 0;
    $nextTagBinding = $binding_0316 + 4 | 0;
    $binding_0 = HEAP32[$nextTagBinding >> 2] | 0;
    $tobool474 = ($binding_0 | 0) == 0;
    if ($tobool474) {
      label = 93;
      break;
    } else {
      $binding_0316 = $binding_0;
      label = 92;
      break;
    }
   case 93:
    $m_ns481 = $parser + 232 | 0;
    $123 = HEAP8[$m_ns481] | 0;
    $tobool482 = $123 << 24 >> 24 == 0;
    if ($tobool482) {
      $retval_0 = 0;
      label = 116;
      break;
    } else {
      label = 94;
      break;
    }
   case 94:
    $prefix485 = $elementType_0 + 4 | 0;
    $124 = HEAP32[$prefix485 >> 2] | 0;
    $tobool486 = ($124 | 0) == 0;
    if ($tobool486) {
      label = 98;
      break;
    } else {
      label = 95;
      break;
    }
   case 95:
    $binding489 = $124 + 4 | 0;
    $125 = HEAP32[$binding489 >> 2] | 0;
    $tobool490 = ($125 | 0) == 0;
    if ($tobool490) {
      $retval_0 = 27;
      label = 116;
      break;
    } else {
      label = 96;
      break;
    }
   case 96:
    $126 = HEAP32[$str >> 2] | 0;
    $localPart_0 = $126;
    label = 97;
    break;
   case 97:
    $incdec_ptr495 = $localPart_0 + 1 | 0;
    $127 = HEAP8[$localPart_0] | 0;
    $cmp497 = $127 << 24 >> 24 == 58;
    if ($cmp497) {
      $binding_1 = $125;
      $localPart_1 = $incdec_ptr495;
      label = 100;
      break;
    } else {
      $localPart_0 = $incdec_ptr495;
      label = 97;
      break;
    }
   case 98:
    $binding502 = $0 + 136 | 0;
    $128 = HEAP32[$binding502 >> 2] | 0;
    $tobool503 = ($128 | 0) == 0;
    if ($tobool503) {
      $retval_0 = 0;
      label = 116;
      break;
    } else {
      label = 99;
      break;
    }
   case 99:
    $129 = HEAP32[$str >> 2] | 0;
    $binding_1 = $128;
    $localPart_1 = $129;
    label = 100;
    break;
   case 100:
    $m_ns_triplets511 = $parser + 233 | 0;
    $130 = HEAP8[$m_ns_triplets511] | 0;
    $tobool513 = $130 << 24 >> 24 == 0;
    if ($tobool513) {
      $prefixLen_1 = 0;
      label = 104;
      break;
    } else {
      label = 101;
      break;
    }
   case 101:
    $prefix515 = $binding_1 | 0;
    $131 = HEAP32[$prefix515 >> 2] | 0;
    $name516 = $131 | 0;
    $132 = HEAP32[$name516 >> 2] | 0;
    $tobool517 = ($132 | 0) == 0;
    if ($tobool517) {
      $prefixLen_1 = 0;
      label = 104;
      break;
    } else {
      label = 102;
      break;
    }
   case 102:
    $133 = HEAP32[$prefix515 >> 2] | 0;
    $name522 = $133 | 0;
    $134 = HEAP32[$name522 >> 2] | 0;
    $prefixLen_0 = 0;
    label = 103;
    break;
   case 103:
    $inc520 = $prefixLen_0 + 1 | 0;
    $arrayidx523 = $134 + $prefixLen_0 | 0;
    $135 = HEAP8[$arrayidx523] | 0;
    $tobool524 = $135 << 24 >> 24 == 0;
    if ($tobool524) {
      $prefixLen_1 = $inc520;
      label = 104;
      break;
    } else {
      $prefixLen_0 = $inc520;
      label = 103;
      break;
    }
   case 104:
    $localPart528 = $tagNamePtr + 4 | 0;
    HEAP32[$localPart528 >> 2] = $localPart_1;
    $uriLen529 = $binding_1 + 20 | 0;
    $136 = HEAP32[$uriLen529 >> 2] | 0;
    $uriLen530 = $tagNamePtr + 16 | 0;
    HEAP32[$uriLen530 >> 2] = $136;
    $prefix531 = $binding_1 | 0;
    $137 = HEAP32[$prefix531 >> 2] | 0;
    $name532 = $137 | 0;
    $138 = HEAP32[$name532 >> 2] | 0;
    $prefix533 = $tagNamePtr + 8 | 0;
    HEAP32[$prefix533 >> 2] = $138;
    $prefixLen534 = $tagNamePtr + 20 | 0;
    HEAP32[$prefixLen534 >> 2] = $prefixLen_1;
    $i_5 = 0;
    label = 105;
    break;
   case 105:
    $inc536 = $i_5 + 1 | 0;
    $arrayidx537 = $localPart_1 + $i_5 | 0;
    $139 = HEAP8[$arrayidx537] | 0;
    $tobool538 = $139 << 24 >> 24 == 0;
    if ($tobool538) {
      label = 106;
      break;
    } else {
      $i_5 = $inc536;
      label = 105;
      break;
    }
   case 106:
    $140 = HEAP32[$uriLen529 >> 2] | 0;
    $add542 = $inc536 + $prefixLen_1 | 0;
    $add543 = $add542 + $140 | 0;
    $uriAlloc = $binding_1 + 24 | 0;
    $141 = HEAP32[$uriAlloc >> 2] | 0;
    $cmp544 = ($add543 | 0) > ($141 | 0);
    if ($cmp544) {
      label = 107;
      break;
    } else {
      label = 113;
      break;
    }
   case 107:
    $malloc_fcn = $parser + 12 | 0;
    $142 = HEAP32[$malloc_fcn >> 2] | 0;
    $add548 = $add543 + 24 | 0;
    $call550 = FUNCTION_TABLE_ii[$142 & 1023]($add548) | 0;
    $tobool551 = ($call550 | 0) == 0;
    if ($tobool551) {
      $retval_0 = 1;
      label = 116;
      break;
    } else {
      label = 108;
      break;
    }
   case 108:
    HEAP32[$uriAlloc >> 2] = $add548;
    $uri556 = $binding_1 + 16 | 0;
    $143 = HEAP32[$uri556 >> 2] | 0;
    $144 = HEAP32[$uriLen529 >> 2] | 0;
    _memcpy($call550 | 0, $143 | 0, $144);
    $m_tagStack = $parser + 348 | 0;
    $p_0311 = HEAP32[$m_tagStack >> 2] | 0;
    $tobool560312 = ($p_0311 | 0) == 0;
    if ($tobool560312) {
      label = 112;
      break;
    } else {
      $p_0313 = $p_0311;
      label = 109;
      break;
    }
   case 109:
    $str563 = $p_0313 + 12 | 0;
    $145 = HEAP32[$str563 >> 2] | 0;
    $146 = HEAP32[$uri556 >> 2] | 0;
    $cmp565 = ($145 | 0) == ($146 | 0);
    if ($cmp565) {
      label = 110;
      break;
    } else {
      label = 111;
      break;
    }
   case 110:
    HEAP32[$str563 >> 2] = $call550;
    label = 111;
    break;
   case 111:
    $parent = $p_0313 | 0;
    $p_0 = HEAP32[$parent >> 2] | 0;
    $tobool560 = ($p_0 | 0) == 0;
    if ($tobool560) {
      label = 112;
      break;
    } else {
      $p_0313 = $p_0;
      label = 109;
      break;
    }
   case 112:
    $free_fcn = $parser + 20 | 0;
    $147 = HEAP32[$free_fcn >> 2] | 0;
    $148 = HEAP32[$uri556 >> 2] | 0;
    FUNCTION_TABLE_vi[$147 & 1023]($148);
    HEAP32[$uri556 >> 2] = $call550;
    label = 113;
    break;
   case 113:
    $uri577 = $binding_1 + 16 | 0;
    $149 = HEAP32[$uri577 >> 2] | 0;
    $150 = HEAP32[$uriLen529 >> 2] | 0;
    $add_ptr579 = $149 + $150 | 0;
    _memcpy($add_ptr579 | 0, $localPart_1 | 0, $inc536);
    $tobool581 = ($prefixLen_1 | 0) == 0;
    if ($tobool581) {
      label = 115;
      break;
    } else {
      label = 114;
      break;
    }
   case 114:
    $add_ptr579_sum = $150 + $i_5 | 0;
    $add_ptr584 = $149 + $add_ptr579_sum | 0;
    $m_namespaceSeparator585 = $parser + 456 | 0;
    $151 = HEAP8[$m_namespaceSeparator585] | 0;
    HEAP8[$add_ptr584] = $151;
    $add_ptr584_sum = $add_ptr579_sum + 1 | 0;
    $add_ptr586 = $149 + $add_ptr584_sum | 0;
    $152 = HEAP32[$prefix531 >> 2] | 0;
    $name588 = $152 | 0;
    $153 = HEAP32[$name588 >> 2] | 0;
    _memcpy($add_ptr586 | 0, $153 | 0, $prefixLen_1);
    label = 115;
    break;
   case 115:
    $154 = HEAP32[$uri577 >> 2] | 0;
    HEAP32[$str >> 2] = $154;
    $retval_0 = 0;
    label = 116;
    break;
   case 116:
    return $retval_0 | 0;
  }
  return 0;
}
function _normalizeLines($s) {
  $s = $s | 0;
  var $s_addr_0 = 0, $0 = 0, $incdec_ptr = 0, $s_addr_1 = 0, $p_0 = 0, $1 = 0, $cmp8 = 0, $incdec_ptr12 = 0, $2 = 0, $cmp14 = 0, $incdec_ptr17 = 0, $incdec_ptr17_incdec_ptr12 = 0, $incdec_ptr19 = 0, $s_addr_2 = 0, $p_1 = 0, $3 = 0, $tobool = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s_addr_0 = $s;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$s_addr_0] | 0;
    if (($0 << 24 >> 24 | 0) == 13) {
      $p_0 = $s_addr_0;
      $s_addr_1 = $s_addr_0;
      label = 5;
      break;
    } else if (($0 << 24 >> 24 | 0) == 0) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $s_addr_0 + 1 | 0;
    $s_addr_0 = $incdec_ptr;
    label = 3;
    break;
   case 5:
    $1 = HEAP8[$s_addr_1] | 0;
    $cmp8 = $1 << 24 >> 24 == 13;
    if ($cmp8) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP8[$p_0] = 10;
    $incdec_ptr12 = $s_addr_1 + 1 | 0;
    $2 = HEAP8[$incdec_ptr12] | 0;
    $cmp14 = $2 << 24 >> 24 == 10;
    $incdec_ptr17 = $s_addr_1 + 2 | 0;
    $incdec_ptr17_incdec_ptr12 = $cmp14 ? $incdec_ptr17 : $incdec_ptr12;
    $s_addr_2 = $incdec_ptr17_incdec_ptr12;
    label = 8;
    break;
   case 7:
    $incdec_ptr19 = $s_addr_1 + 1 | 0;
    HEAP8[$p_0] = $1;
    $s_addr_2 = $incdec_ptr19;
    label = 8;
    break;
   case 8:
    $p_1 = $p_0 + 1 | 0;
    $3 = HEAP8[$s_addr_2] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $p_0 = $p_1;
      $s_addr_1 = $s_addr_2;
      label = 5;
      break;
    }
   case 9:
    HEAP8[$p_1] = 0;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _epilogProcessor($parser, $s, $end, $nextPtr) {
  $parser = $parser | 0;
  $s = $s | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  var $next = 0, $m_processor = 0, $m_eventPtr = 0, $m_encoding = 0, $m_eventEndPtr = 0, $m_defaultHandler7 = 0, $parsing39 = 0, $s_addr_0 = 0, $0 = 0, $arrayidx = 0, $1 = 0, $call = 0, $2 = 0, $m_defaultHandler = 0, $3 = 0, $tobool = 0, $4 = 0, $5 = 0, $parsing = 0, $6 = 0, $cmp = 0, $7 = 0, $8 = 0, $tobool8 = 0, $9 = 0, $10 = 0, $11 = 0, $12 = 0, $call14 = 0, $tobool15 = 0, $13 = 0, $14 = 0, $call20 = 0, $tobool21 = 0, $15 = 0, $finalBuffer = 0, $16 = 0, $tobool28 = 0, $finalBuffer33 = 0, $17 = 0, $tobool34 = 0, $18 = 0, $19 = 0, $20 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $next = __stackBase__ | 0;
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 192;
    $m_eventPtr = $parser + 272 | 0;
    HEAP32[$m_eventPtr >> 2] = $s;
    $m_encoding = $parser + 144 | 0;
    $m_eventEndPtr = $parser + 276 | 0;
    $m_defaultHandler7 = $parser + 80 | 0;
    $parsing39 = $parser + 464 | 0;
    $s_addr_0 = $s;
    label = 3;
    break;
   case 3:
    HEAP32[$next >> 2] = 0;
    $0 = HEAP32[$m_encoding >> 2] | 0;
    $arrayidx = $0 | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$1 & 1023]($0, $s_addr_0, $end, $next) | 0;
    $2 = HEAP32[$next >> 2] | 0;
    HEAP32[$m_eventEndPtr >> 2] = $2;
    if (($call | 0) == (-15 | 0)) {
      label = 4;
      break;
    } else if (($call | 0) == (-4 | 0)) {
      label = 7;
      break;
    } else if (($call | 0) == 15) {
      label = 8;
      break;
    } else if (($call | 0) == 11) {
      label = 10;
      break;
    } else if (($call | 0) == 13) {
      label = 11;
      break;
    } else if (($call | 0) == 0) {
      label = 12;
      break;
    } else if (($call | 0) == (-1 | 0)) {
      label = 13;
      break;
    } else if (($call | 0) == (-2 | 0)) {
      label = 15;
      break;
    } else {
      $retval_0 = 9;
      label = 19;
      break;
    }
   case 4:
    $m_defaultHandler = $parser + 80 | 0;
    $3 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool = ($3 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $4 = HEAP32[$m_encoding >> 2] | 0;
    $5 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $4, $s_addr_0, $5);
    $parsing = $parser + 464 | 0;
    $6 = HEAP32[$parsing >> 2] | 0;
    $cmp = ($6 | 0) == 2;
    if ($cmp) {
      $retval_0 = 35;
      label = 19;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $7 = HEAP32[$next >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $7;
    $retval_0 = 0;
    label = 19;
    break;
   case 7:
    HEAP32[$nextPtr >> 2] = $s_addr_0;
    $retval_0 = 0;
    label = 19;
    break;
   case 8:
    $8 = HEAP32[$m_defaultHandler7 >> 2] | 0;
    $tobool8 = ($8 | 0) == 0;
    if ($tobool8) {
      label = 17;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $9 = HEAP32[$m_encoding >> 2] | 0;
    $10 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $9, $s_addr_0, $10);
    label = 17;
    break;
   case 10:
    $11 = HEAP32[$m_encoding >> 2] | 0;
    $12 = HEAP32[$next >> 2] | 0;
    $call14 = _reportProcessingInstruction($parser, $11, $s_addr_0, $12) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      $retval_0 = 1;
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 11:
    $13 = HEAP32[$m_encoding >> 2] | 0;
    $14 = HEAP32[$next >> 2] | 0;
    $call20 = _reportComment($parser, $13, $s_addr_0, $14) | 0;
    $tobool21 = ($call20 | 0) == 0;
    if ($tobool21) {
      $retval_0 = 1;
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 12:
    $15 = HEAP32[$next >> 2] | 0;
    HEAP32[$m_eventPtr >> 2] = $15;
    $retval_0 = 4;
    label = 19;
    break;
   case 13:
    $finalBuffer = $parser + 468 | 0;
    $16 = HEAP8[$finalBuffer] | 0;
    $tobool28 = $16 << 24 >> 24 == 0;
    if ($tobool28) {
      label = 14;
      break;
    } else {
      $retval_0 = 5;
      label = 19;
      break;
    }
   case 14:
    HEAP32[$nextPtr >> 2] = $s_addr_0;
    $retval_0 = 0;
    label = 19;
    break;
   case 15:
    $finalBuffer33 = $parser + 468 | 0;
    $17 = HEAP8[$finalBuffer33] | 0;
    $tobool34 = $17 << 24 >> 24 == 0;
    if ($tobool34) {
      label = 16;
      break;
    } else {
      $retval_0 = 6;
      label = 19;
      break;
    }
   case 16:
    HEAP32[$nextPtr >> 2] = $s_addr_0;
    $retval_0 = 0;
    label = 19;
    break;
   case 17:
    $18 = HEAP32[$next >> 2] | 0;
    HEAP32[$m_eventPtr >> 2] = $18;
    $19 = HEAP32[$parsing39 >> 2] | 0;
    if (($19 | 0) == 3) {
      label = 18;
      break;
    } else if (($19 | 0) == 2) {
      $retval_0 = 35;
      label = 19;
      break;
    } else {
      $s_addr_0 = $18;
      label = 3;
      break;
    }
   case 18:
    $20 = HEAP32[$next >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $20;
    $retval_0 = 0;
    label = 19;
    break;
   case 19:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _doCdataSection($parser, $enc, $startPtr, $end, $nextPtr, $haveMore) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $startPtr = $startPtr | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  $haveMore = $haveMore | 0;
  var $s = 0, $next = 0, $c = 0, $dataPtr = 0, $0 = 0, $m_encoding = 0, $1 = 0, $cmp = 0, $m_eventPtr = 0, $m_eventEndPtr = 0, $m_openInternalEntities = 0, $2 = 0, $internalEventPtr = 0, $internalEventEndPtr = 0, $eventEndPP_0 = 0, $eventPP_0 = 0, $3 = 0, $arrayidx = 0, $m_characterDataHandler = 0, $m_defaultHandler18 = 0, $m_handlerArg16 = 0, $parsing58 = 0, $m_characterDataHandler24 = 0, $m_defaultHandler43 = 0, $isUtf8 = 0, $m_handlerArg37 = 0, $m_dataBuf = 0, $utf8Convert = 0, $m_dataBufEnd = 0, $m_handlerArg30 = 0, $4 = 0, $5 = 0, $call = 0, $6 = 0, $m_endCdataSectionHandler = 0, $7 = 0, $tobool = 0, $m_handlerArg = 0, $8 = 0, $m_defaultHandler = 0, $9 = 0, $tobool5 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $parsing = 0, $14 = 0, $cmp9 = 0, $_ = 0, $15 = 0, $tobool13 = 0, $16 = 0, $17 = 0, $18 = 0, $tobool19 = 0, $19 = 0, $20 = 0, $21 = 0, $tobool25 = 0, $22 = 0, $tobool27 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $31 = 0, $32 = 0, $cmp33 = 0, $33 = 0, $34 = 0, $35 = 0, $sub_ptr_lhs_cast38 = 0, $sub_ptr_rhs_cast39 = 0, $sub_ptr_sub40 = 0, $36 = 0, $tobool44 = 0, $37 = 0, $38 = 0, $39 = 0, $tobool50 = 0, $40 = 0, $tobool54 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s = __stackBase__ | 0;
    $next = __stackBase__ + 8 | 0;
    $c = __stackBase__ + 16 | 0;
    $dataPtr = __stackBase__ + 24 | 0;
    $0 = HEAP32[$startPtr >> 2] | 0;
    HEAP32[$s >> 2] = $0;
    $m_encoding = $parser + 144 | 0;
    $1 = HEAP32[$m_encoding >> 2] | 0;
    $cmp = ($1 | 0) == ($enc | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $m_eventPtr = $parser + 272 | 0;
    HEAP32[$m_eventPtr >> 2] = $0;
    $m_eventEndPtr = $parser + 276 | 0;
    $eventPP_0 = $m_eventPtr;
    $eventEndPP_0 = $m_eventEndPtr;
    label = 5;
    break;
   case 4:
    $m_openInternalEntities = $parser + 284 | 0;
    $2 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $internalEventPtr = $2 | 0;
    $internalEventEndPtr = $2 + 4 | 0;
    $eventPP_0 = $internalEventPtr;
    $eventEndPP_0 = $internalEventEndPtr;
    label = 5;
    break;
   case 5:
    $3 = HEAP32[$s >> 2] | 0;
    HEAP32[$eventPP_0 >> 2] = $3;
    HEAP32[$startPtr >> 2] = 0;
    $arrayidx = $enc + 8 | 0;
    $m_characterDataHandler = $parser + 60 | 0;
    $m_defaultHandler18 = $parser + 80 | 0;
    $m_handlerArg16 = $parser + 4 | 0;
    $parsing58 = $parser + 464 | 0;
    $m_characterDataHandler24 = $parser + 60 | 0;
    $m_defaultHandler43 = $parser + 80 | 0;
    $isUtf8 = $enc + 68 | 0;
    $m_handlerArg37 = $parser + 4 | 0;
    $m_dataBuf = $parser + 44 | 0;
    $utf8Convert = $enc + 56 | 0;
    $m_dataBufEnd = $parser + 48 | 0;
    $m_handlerArg30 = $parser + 4 | 0;
    label = 6;
    break;
   case 6:
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $5 = HEAP32[$s >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$4 & 1023]($enc, $5, $end, $next) | 0;
    $6 = HEAP32[$next >> 2] | 0;
    HEAP32[$eventEndPP_0 >> 2] = $6;
    if (($call | 0) == 40) {
      label = 7;
      break;
    } else if (($call | 0) == 7) {
      label = 12;
      break;
    } else if (($call | 0) == 6) {
      label = 16;
      break;
    } else if (($call | 0) == 0) {
      label = 23;
      break;
    } else if (($call | 0) == (-2 | 0)) {
      label = 24;
      break;
    } else if (($call | 0) == (-1 | 0) | ($call | 0) == (-4 | 0)) {
      label = 26;
      break;
    } else {
      label = 28;
      break;
    }
   case 7:
    $m_endCdataSectionHandler = $parser + 76 | 0;
    $7 = HEAP32[$m_endCdataSectionHandler >> 2] | 0;
    $tobool = ($7 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $m_handlerArg = $parser + 4 | 0;
    $8 = HEAP32[$m_handlerArg >> 2] | 0;
    FUNCTION_TABLE_vi[$7 & 1023]($8);
    label = 11;
    break;
   case 9:
    $m_defaultHandler = $parser + 80 | 0;
    $9 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool5 = ($9 | 0) == 0;
    if ($tobool5) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $10 = HEAP32[$s >> 2] | 0;
    $11 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $10, $11);
    label = 11;
    break;
   case 11:
    $12 = HEAP32[$next >> 2] | 0;
    HEAP32[$startPtr >> 2] = $12;
    $13 = HEAP32[$next >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $13;
    $parsing = $parser + 464 | 0;
    $14 = HEAP32[$parsing >> 2] | 0;
    $cmp9 = ($14 | 0) == 2;
    $_ = $cmp9 ? 35 : 0;
    $retval_0 = $_;
    label = 31;
    break;
   case 12:
    $15 = HEAP32[$m_characterDataHandler >> 2] | 0;
    $tobool13 = ($15 | 0) == 0;
    if ($tobool13) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    HEAP8[$c] = 10;
    $16 = HEAP32[$m_characterDataHandler >> 2] | 0;
    $17 = HEAP32[$m_handlerArg16 >> 2] | 0;
    FUNCTION_TABLE_viii[$16 & 1023]($17, $c, 1);
    label = 29;
    break;
   case 14:
    $18 = HEAP32[$m_defaultHandler18 >> 2] | 0;
    $tobool19 = ($18 | 0) == 0;
    if ($tobool19) {
      label = 29;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $19 = HEAP32[$s >> 2] | 0;
    $20 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $19, $20);
    label = 29;
    break;
   case 16:
    $21 = HEAP32[$m_characterDataHandler24 >> 2] | 0;
    $tobool25 = ($21 | 0) == 0;
    if ($tobool25) {
      label = 21;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $22 = HEAP8[$isUtf8] | 0;
    $tobool27 = $22 << 24 >> 24 == 0;
    if ($tobool27) {
      label = 18;
      break;
    } else {
      label = 20;
      break;
    }
   case 18:
    $23 = HEAP32[$m_dataBuf >> 2] | 0;
    HEAP32[$dataPtr >> 2] = $23;
    $24 = HEAP32[$utf8Convert >> 2] | 0;
    $25 = HEAP32[$next >> 2] | 0;
    $26 = HEAP32[$m_dataBufEnd >> 2] | 0;
    FUNCTION_TABLE_viiiii[$24 & 1023]($enc, $s, $25, $dataPtr, $26);
    $27 = HEAP32[$next >> 2] | 0;
    HEAP32[$eventEndPP_0 >> 2] = $27;
    $28 = HEAP32[$m_handlerArg30 >> 2] | 0;
    $29 = HEAP32[$m_dataBuf >> 2] | 0;
    $30 = HEAP32[$dataPtr >> 2] | 0;
    $sub_ptr_lhs_cast = $30;
    $sub_ptr_rhs_cast = $29;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    FUNCTION_TABLE_viii[$21 & 1023]($28, $29, $sub_ptr_sub);
    $31 = HEAP32[$s >> 2] | 0;
    $32 = HEAP32[$next >> 2] | 0;
    $cmp33 = ($31 | 0) == ($32 | 0);
    if ($cmp33) {
      label = 29;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    HEAP32[$eventPP_0 >> 2] = $31;
    label = 18;
    break;
   case 20:
    $33 = HEAP32[$m_handlerArg37 >> 2] | 0;
    $34 = HEAP32[$s >> 2] | 0;
    $35 = HEAP32[$next >> 2] | 0;
    $sub_ptr_lhs_cast38 = $35;
    $sub_ptr_rhs_cast39 = $34;
    $sub_ptr_sub40 = $sub_ptr_lhs_cast38 - $sub_ptr_rhs_cast39 | 0;
    FUNCTION_TABLE_viii[$21 & 1023]($33, $34, $sub_ptr_sub40);
    label = 29;
    break;
   case 21:
    $36 = HEAP32[$m_defaultHandler43 >> 2] | 0;
    $tobool44 = ($36 | 0) == 0;
    if ($tobool44) {
      label = 29;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $37 = HEAP32[$s >> 2] | 0;
    $38 = HEAP32[$next >> 2] | 0;
    _reportDefault($parser, $enc, $37, $38);
    label = 29;
    break;
   case 23:
    $39 = HEAP32[$next >> 2] | 0;
    HEAP32[$eventPP_0 >> 2] = $39;
    $retval_0 = 4;
    label = 31;
    break;
   case 24:
    $tobool50 = $haveMore << 24 >> 24 == 0;
    if ($tobool50) {
      $retval_0 = 6;
      label = 31;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $40 = HEAP32[$s >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $40;
    $retval_0 = 0;
    label = 31;
    break;
   case 26:
    $tobool54 = $haveMore << 24 >> 24 == 0;
    if ($tobool54) {
      $retval_0 = 20;
      label = 31;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $41 = HEAP32[$s >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $41;
    $retval_0 = 0;
    label = 31;
    break;
   case 28:
    $42 = HEAP32[$next >> 2] | 0;
    HEAP32[$eventPP_0 >> 2] = $42;
    $retval_0 = 23;
    label = 31;
    break;
   case 29:
    $43 = HEAP32[$next >> 2] | 0;
    HEAP32[$s >> 2] = $43;
    HEAP32[$eventPP_0 >> 2] = $43;
    $44 = HEAP32[$parsing58 >> 2] | 0;
    if (($44 | 0) == 3) {
      label = 30;
      break;
    } else if (($44 | 0) == 2) {
      $retval_0 = 35;
      label = 31;
      break;
    } else {
      label = 6;
      break;
    }
   case 30:
    $45 = HEAP32[$next >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $45;
    $retval_0 = 0;
    label = 31;
    break;
   case 31:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _cdataSectionProcessor($parser, $start, $end, $endPtr) {
  $parser = $parser | 0;
  $start = $start | 0;
  $end = $end | 0;
  $endPtr = $endPtr | 0;
  var $start_addr = 0, $m_encoding = 0, $0 = 0, $finalBuffer = 0, $1 = 0, $lnot = 0, $conv = 0, $call = 0, $cmp = 0, $2 = 0, $tobool2 = 0, $or_cond = 0, $m_parentParser = 0, $3 = 0, $tobool4 = 0, $m_processor = 0, $4 = 0, $call6 = 0, $5 = 0, $call8 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $start_addr = __stackBase__ | 0;
    HEAP32[$start_addr >> 2] = $start;
    $m_encoding = $parser + 144 | 0;
    $0 = HEAP32[$m_encoding >> 2] | 0;
    $finalBuffer = $parser + 468 | 0;
    $1 = HEAP8[$finalBuffer] | 0;
    $lnot = $1 << 24 >> 24 == 0;
    $conv = $lnot & 1;
    $call = _doCdataSection($parser, $0, $start_addr, $end, $endPtr, $conv) | 0;
    $cmp = ($call | 0) != 0;
    $2 = HEAP32[$start_addr >> 2] | 0;
    $tobool2 = ($2 | 0) == 0;
    $or_cond = $cmp | $tobool2;
    if ($or_cond) {
      $retval_0 = $call;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $m_parentParser = $parser + 460 | 0;
    $3 = HEAP32[$m_parentParser >> 2] | 0;
    $tobool4 = ($3 | 0) == 0;
    $m_processor = $parser + 264 | 0;
    if ($tobool4) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[$m_processor >> 2] = 48;
    $4 = HEAP32[$start_addr >> 2] | 0;
    $call6 = _externalEntityContentProcessor($parser, $4, $end, $endPtr) | 0;
    $retval_0 = $call6;
    label = 6;
    break;
   case 5:
    HEAP32[$m_processor >> 2] = 122;
    $5 = HEAP32[$start_addr >> 2] | 0;
    $call8 = _contentProcessor($parser, $5, $end, $endPtr) | 0;
    $retval_0 = $call8;
    label = 6;
    break;
   case 6:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _reportProcessingInstruction($parser, $enc, $start, $end) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $start = $start | 0;
  $end = $end | 0;
  var $m_processingInstructionHandler = 0, $0 = 0, $tobool = 0, $m_defaultHandler = 0, $1 = 0, $tobool1 = 0, $minBytesPerChar = 0, $2 = 0, $mul = 0, $add_ptr = 0, $nameLength = 0, $3 = 0, $call = 0, $add_ptr_sum = 0, $add_ptr4 = 0, $m_tempPool = 0, $call5 = 0, $tobool6 = 0, $ptr = 0, $4 = 0, $start11 = 0, $skipS = 0, $5 = 0, $call13 = 0, $6 = 0, $mul15 = 0, $idx_neg = 0, $add_ptr16 = 0, $call17 = 0, $tobool18 = 0, $7 = 0, $m_handlerArg = 0, $8 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_processingInstructionHandler = $parser + 64 | 0;
    $0 = HEAP32[$m_processingInstructionHandler >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $m_defaultHandler = $parser + 80 | 0;
    $1 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      $retval_0 = 1;
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _reportDefault($parser, $enc, $start, $end);
    $retval_0 = 1;
    label = 8;
    break;
   case 5:
    $minBytesPerChar = $enc + 64 | 0;
    $2 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul = $2 << 1;
    $add_ptr = $start + $mul | 0;
    $nameLength = $enc + 28 | 0;
    $3 = HEAP32[$nameLength >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$3 & 1023]($enc, $add_ptr) | 0;
    $add_ptr_sum = $call + $mul | 0;
    $add_ptr4 = $start + $add_ptr_sum | 0;
    $m_tempPool = $parser + 400 | 0;
    $call5 = _poolStoreString($m_tempPool, $enc, $add_ptr, $add_ptr4) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $ptr = $parser + 412 | 0;
    $4 = HEAP32[$ptr >> 2] | 0;
    $start11 = $parser + 416 | 0;
    HEAP32[$start11 >> 2] = $4;
    $skipS = $enc + 32 | 0;
    $5 = HEAP32[$skipS >> 2] | 0;
    $call13 = FUNCTION_TABLE_iii[$5 & 1023]($enc, $add_ptr4) | 0;
    $6 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul15 = $6 << 1;
    $idx_neg = -$mul15 | 0;
    $add_ptr16 = $end + $idx_neg | 0;
    $call17 = _poolStoreString($m_tempPool, $enc, $call13, $add_ptr16) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _normalizeLines($call17);
    $7 = HEAP32[$m_processingInstructionHandler >> 2] | 0;
    $m_handlerArg = $parser + 4 | 0;
    $8 = HEAP32[$m_handlerArg >> 2] | 0;
    FUNCTION_TABLE_viii[$7 & 1023]($8, $call5, $call17);
    _poolClear($m_tempPool);
    $retval_0 = 1;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _reportComment($parser, $enc, $start, $end) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $start = $start | 0;
  $end = $end | 0;
  var $m_commentHandler = 0, $0 = 0, $tobool = 0, $m_defaultHandler = 0, $1 = 0, $tobool1 = 0, $m_tempPool = 0, $minBytesPerChar = 0, $2 = 0, $mul = 0, $add_ptr = 0, $3 = 0, $add_ptr6 = 0, $call = 0, $tobool7 = 0, $4 = 0, $m_handlerArg = 0, $5 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_commentHandler = $parser + 68 | 0;
    $0 = HEAP32[$m_commentHandler >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $m_defaultHandler = $parser + 80 | 0;
    $1 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool1 = ($1 | 0) == 0;
    if ($tobool1) {
      $retval_0 = 1;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _reportDefault($parser, $enc, $start, $end);
    $retval_0 = 1;
    label = 7;
    break;
   case 5:
    $m_tempPool = $parser + 400 | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $2 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul = $2 << 2;
    $add_ptr = $start + $mul | 0;
    $3 = $2 * -3 & -1;
    $add_ptr6 = $end + $3 | 0;
    $call = _poolStoreString($m_tempPool, $enc, $add_ptr, $add_ptr6) | 0;
    $tobool7 = ($call | 0) == 0;
    if ($tobool7) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    _normalizeLines($call);
    $4 = HEAP32[$m_commentHandler >> 2] | 0;
    $m_handlerArg = $parser + 4 | 0;
    $5 = HEAP32[$m_handlerArg >> 2] | 0;
    FUNCTION_TABLE_vii[$4 & 1023]($5, $call);
    _poolClear($m_tempPool);
    $retval_0 = 1;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _contentProcessor($parser, $start, $end, $endPtr) {
  $parser = $parser | 0;
  $start = $start | 0;
  $end = $end | 0;
  $endPtr = $endPtr | 0;
  var $m_encoding = 0, $0 = 0, $finalBuffer = 0, $1 = 0, $lnot = 0, $conv = 0, $call = 0, $cmp = 0, $call2 = 0, $tobool3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_encoding = $parser + 144 | 0;
    $0 = HEAP32[$m_encoding >> 2] | 0;
    $finalBuffer = $parser + 468 | 0;
    $1 = HEAP8[$finalBuffer] | 0;
    $lnot = $1 << 24 >> 24 == 0;
    $conv = $lnot & 1;
    $call = _doContent($parser, 0, $0, $start, $end, $endPtr, $conv) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call2 = _storeRawNames($parser) | 0;
    $tobool3 = $call2 << 24 >> 24 == 0;
    if ($tobool3) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $retval_0 = $call;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _setElementTypePrefix($parser, $elementType) {
  $parser = $parser | 0;
  $elementType = $elementType | 0;
  var $m_dtd = 0, $0 = 0, $name1 = 0, $1 = 0, $pool = 0, $ptr = 0, $end = 0, $prefixes = 0, $start = 0, $prefix54 = 0, $name_0 = 0, $2 = 0, $3 = 0, $cmp525 = 0, $4 = 0, $5 = 0, $cmp926 = 0, $cmp928 = 0, $s_027 = 0, $call = 0, $tobool12 = 0, $6 = 0, $7 = 0, $incdec_ptr = 0, $incdec_ptr16 = 0, $cmp5 = 0, $8 = 0, $9 = 0, $cmp9 = 0, $cmp9_lcssa = 0, $call25 = 0, $tobool26 = 0, $10 = 0, $incdec_ptr31 = 0, $11 = 0, $call35 = 0, $12 = 0, $tobool36 = 0, $name39 = 0, $13 = 0, $14 = 0, $cmp42 = 0, $15 = 0, $incdec_ptr57 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $name1 = $elementType | 0;
    $1 = HEAP32[$name1 >> 2] | 0;
    $pool = $0 + 80 | 0;
    $ptr = $0 + 92 | 0;
    $end = $0 + 88 | 0;
    $prefixes = $0 + 60 | 0;
    $start = $0 + 96 | 0;
    $prefix54 = $elementType + 4 | 0;
    $name_0 = $1;
    label = 3;
    break;
   case 3:
    $2 = HEAP8[$name_0] | 0;
    if (($2 << 24 >> 24 | 0) == 58) {
      label = 4;
      break;
    } else if (($2 << 24 >> 24 | 0) == 0) {
      $retval_0 = 1;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 4:
    $3 = HEAP32[$name1 >> 2] | 0;
    $cmp525 = ($3 | 0) == ($name_0 | 0);
    $4 = HEAP32[$ptr >> 2] | 0;
    $5 = HEAP32[$end >> 2] | 0;
    $cmp926 = ($4 | 0) == ($5 | 0);
    if ($cmp525) {
      $cmp9_lcssa = $cmp926;
      label = 8;
      break;
    } else {
      $s_027 = $3;
      $cmp928 = $cmp926;
      label = 5;
      break;
    }
   case 5:
    if ($cmp928) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call = _poolGrow($pool) | 0;
    $tobool12 = $call << 24 >> 24 == 0;
    if ($tobool12) {
      $retval_0 = 0;
      label = 16;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $6 = HEAP8[$s_027] | 0;
    $7 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $7 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$7] = $6;
    $incdec_ptr16 = $s_027 + 1 | 0;
    $cmp5 = ($incdec_ptr16 | 0) == ($name_0 | 0);
    $8 = HEAP32[$ptr >> 2] | 0;
    $9 = HEAP32[$end >> 2] | 0;
    $cmp9 = ($8 | 0) == ($9 | 0);
    if ($cmp5) {
      $cmp9_lcssa = $cmp9;
      label = 8;
      break;
    } else {
      $s_027 = $incdec_ptr16;
      $cmp928 = $cmp9;
      label = 5;
      break;
    }
   case 8:
    if ($cmp9_lcssa) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $call25 = _poolGrow($pool) | 0;
    $tobool26 = $call25 << 24 >> 24 == 0;
    if ($tobool26) {
      $retval_0 = 0;
      label = 16;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $10 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr31 = $10 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr31;
    HEAP8[$10] = 0;
    $11 = HEAP32[$start >> 2] | 0;
    $call35 = _lookup($parser, $prefixes, $11, 8) | 0;
    $12 = $call35;
    $tobool36 = ($call35 | 0) == 0;
    if ($tobool36) {
      $retval_0 = 0;
      label = 16;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $name39 = $call35 | 0;
    $13 = HEAP32[$name39 >> 2] | 0;
    $14 = HEAP32[$start >> 2] | 0;
    $cmp42 = ($13 | 0) == ($14 | 0);
    if ($cmp42) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $15 = HEAP32[$ptr >> 2] | 0;
    HEAP32[$start >> 2] = $15;
    label = 14;
    break;
   case 13:
    HEAP32[$ptr >> 2] = $14;
    label = 14;
    break;
   case 14:
    HEAP32[$prefix54 >> 2] = $12;
    label = 15;
    break;
   case 15:
    $incdec_ptr57 = $name_0 + 1 | 0;
    $name_0 = $incdec_ptr57;
    label = 3;
    break;
   case 16:
    return $retval_0 | 0;
  }
  return 0;
}
function _getAttributeId($parser, $enc, $start, $end) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $start = $start | 0;
  $end = $end | 0;
  var $m_dtd = 0, $0 = 0, $pool = 0, $ptr = 0, $1 = 0, $end2 = 0, $2 = 0, $cmp = 0, $call = 0, $tobool = 0, $3 = 0, $incdec_ptr = 0, $call7 = 0, $tobool8 = 0, $incdec_ptr11 = 0, $attributeIds = 0, $call12 = 0, $4 = 0, $tobool13 = 0, $name16 = 0, $5 = 0, $cmp17 = 0, $start20 = 0, $6 = 0, $7 = 0, $start26 = 0, $m_ns = 0, $8 = 0, $tobool27 = 0, $9 = 0, $cmp30 = 0, $arrayidx33 = 0, $10 = 0, $cmp35 = 0, $arrayidx38 = 0, $11 = 0, $cmp40 = 0, $arrayidx43 = 0, $12 = 0, $cmp45 = 0, $arrayidx48 = 0, $13 = 0, $cmp50 = 0, $arrayidx53 = 0, $14 = 0, $defaultPrefix = 0, $15 = 0, $defaultPrefix_c = 0, $prefixes = 0, $add_ptr = 0, $call68 = 0, $16 = 0, $_c55 = 0, $xmlns = 0, $i_0 = 0, $incdec_ptr11_sum = 0, $arrayidx72 = 0, $17 = 0, $cmp8057 = 0, $18 = 0, $19 = 0, $cmp8758 = 0, $cmp8760 = 0, $j_059 = 0, $call91 = 0, $tobool92 = 0, $incdec_ptr11_sum54 = 0, $arrayidx95 = 0, $20 = 0, $21 = 0, $incdec_ptr98 = 0, $inc = 0, $cmp80 = 0, $22 = 0, $23 = 0, $cmp87 = 0, $cmp87_lcssa = 0, $call109 = 0, $tobool110 = 0, $24 = 0, $incdec_ptr115 = 0, $prefixes118 = 0, $25 = 0, $call121 = 0, $26 = 0, $_c = 0, $name124 = 0, $27 = 0, $28 = 0, $cmp127 = 0, $29 = 0, $inc142 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $pool = $0 + 80 | 0;
    $ptr = $0 + 92 | 0;
    $1 = HEAP32[$ptr >> 2] | 0;
    $end2 = $0 + 88 | 0;
    $2 = HEAP32[$end2 >> 2] | 0;
    $cmp = ($1 | 0) == ($2 | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _poolGrow($pool) | 0;
    $tobool = $call << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 29;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $3 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$3] = 0;
    $call7 = _poolStoreString($pool, $enc, $start, $end) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      $retval_0 = 0;
      label = 29;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $incdec_ptr11 = $call7 + 1 | 0;
    $attributeIds = $0 + 40 | 0;
    $call12 = _lookup($parser, $attributeIds, $incdec_ptr11, 12) | 0;
    $4 = $call12;
    $tobool13 = ($call12 | 0) == 0;
    if ($tobool13) {
      $retval_0 = 0;
      label = 29;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $name16 = $call12 | 0;
    $5 = HEAP32[$name16 >> 2] | 0;
    $cmp17 = ($5 | 0) == ($incdec_ptr11 | 0);
    if ($cmp17) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $start20 = $0 + 96 | 0;
    $6 = HEAP32[$start20 >> 2] | 0;
    HEAP32[$ptr >> 2] = $6;
    $retval_0 = $4;
    label = 29;
    break;
   case 8:
    $7 = HEAP32[$ptr >> 2] | 0;
    $start26 = $0 + 96 | 0;
    HEAP32[$start26 >> 2] = $7;
    $m_ns = $parser + 232 | 0;
    $8 = HEAP8[$m_ns] | 0;
    $tobool27 = $8 << 24 >> 24 == 0;
    if ($tobool27) {
      $retval_0 = $4;
      label = 29;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $9 = HEAP8[$incdec_ptr11] | 0;
    $cmp30 = $9 << 24 >> 24 == 120;
    if ($cmp30) {
      label = 10;
      break;
    } else {
      $i_0 = 0;
      label = 18;
      break;
    }
   case 10:
    $arrayidx33 = $call7 + 2 | 0;
    $10 = HEAP8[$arrayidx33] | 0;
    $cmp35 = $10 << 24 >> 24 == 109;
    if ($cmp35) {
      label = 11;
      break;
    } else {
      $i_0 = 0;
      label = 18;
      break;
    }
   case 11:
    $arrayidx38 = $call7 + 3 | 0;
    $11 = HEAP8[$arrayidx38] | 0;
    $cmp40 = $11 << 24 >> 24 == 108;
    if ($cmp40) {
      label = 12;
      break;
    } else {
      $i_0 = 0;
      label = 18;
      break;
    }
   case 12:
    $arrayidx43 = $call7 + 4 | 0;
    $12 = HEAP8[$arrayidx43] | 0;
    $cmp45 = $12 << 24 >> 24 == 110;
    if ($cmp45) {
      label = 13;
      break;
    } else {
      $i_0 = 0;
      label = 18;
      break;
    }
   case 13:
    $arrayidx48 = $call7 + 5 | 0;
    $13 = HEAP8[$arrayidx48] | 0;
    $cmp50 = $13 << 24 >> 24 == 115;
    if ($cmp50) {
      label = 14;
      break;
    } else {
      $i_0 = 0;
      label = 18;
      break;
    }
   case 14:
    $arrayidx53 = $call7 + 6 | 0;
    $14 = HEAP8[$arrayidx53] | 0;
    if (($14 << 24 >> 24 | 0) == 0) {
      label = 15;
      break;
    } else if (($14 << 24 >> 24 | 0) == 58) {
      label = 16;
      break;
    } else {
      $i_0 = 0;
      label = 18;
      break;
    }
   case 15:
    $defaultPrefix = $0 + 132 | 0;
    $15 = $call12 + 4 | 0;
    $defaultPrefix_c = $defaultPrefix;
    HEAP32[$15 >> 2] = $defaultPrefix_c;
    label = 17;
    break;
   case 16:
    $prefixes = $0 + 60 | 0;
    $add_ptr = $call7 + 7 | 0;
    $call68 = _lookup($parser, $prefixes, $add_ptr, 8) | 0;
    $16 = $call12 + 4 | 0;
    $_c55 = $call68;
    HEAP32[$16 >> 2] = $_c55;
    label = 17;
    break;
   case 17:
    $xmlns = $4 + 9 | 0;
    HEAP8[$xmlns] = 1;
    $retval_0 = $4;
    label = 29;
    break;
   case 18:
    $incdec_ptr11_sum = $i_0 + 1 | 0;
    $arrayidx72 = $call7 + $incdec_ptr11_sum | 0;
    $17 = HEAP8[$arrayidx72] | 0;
    if (($17 << 24 >> 24 | 0) == 58) {
      label = 19;
      break;
    } else if (($17 << 24 >> 24 | 0) == 0) {
      $retval_0 = $4;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 19:
    $cmp8057 = ($i_0 | 0) > 0;
    $18 = HEAP32[$ptr >> 2] | 0;
    $19 = HEAP32[$end2 >> 2] | 0;
    $cmp8758 = ($18 | 0) == ($19 | 0);
    if ($cmp8057) {
      $j_059 = 0;
      $cmp8760 = $cmp8758;
      label = 20;
      break;
    } else {
      $cmp87_lcssa = $cmp8758;
      label = 23;
      break;
    }
   case 20:
    if ($cmp8760) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $call91 = _poolGrow($pool) | 0;
    $tobool92 = $call91 << 24 >> 24 == 0;
    if ($tobool92) {
      $retval_0 = 0;
      label = 29;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $incdec_ptr11_sum54 = $j_059 + 1 | 0;
    $arrayidx95 = $call7 + $incdec_ptr11_sum54 | 0;
    $20 = HEAP8[$arrayidx95] | 0;
    $21 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr98 = $21 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr98;
    HEAP8[$21] = $20;
    $inc = $j_059 + 1 | 0;
    $cmp80 = ($inc | 0) < ($i_0 | 0);
    $22 = HEAP32[$ptr >> 2] | 0;
    $23 = HEAP32[$end2 >> 2] | 0;
    $cmp87 = ($22 | 0) == ($23 | 0);
    if ($cmp80) {
      $j_059 = $inc;
      $cmp8760 = $cmp87;
      label = 20;
      break;
    } else {
      $cmp87_lcssa = $cmp87;
      label = 23;
      break;
    }
   case 23:
    if ($cmp87_lcssa) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $call109 = _poolGrow($pool) | 0;
    $tobool110 = $call109 << 24 >> 24 == 0;
    if ($tobool110) {
      $retval_0 = 0;
      label = 29;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $24 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr115 = $24 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr115;
    HEAP8[$24] = 0;
    $prefixes118 = $0 + 60 | 0;
    $25 = HEAP32[$start26 >> 2] | 0;
    $call121 = _lookup($parser, $prefixes118, $25, 8) | 0;
    $26 = $call12 + 4 | 0;
    $_c = $call121;
    HEAP32[$26 >> 2] = $_c;
    $name124 = $call121 | 0;
    $27 = HEAP32[$name124 >> 2] | 0;
    $28 = HEAP32[$start26 >> 2] | 0;
    $cmp127 = ($27 | 0) == ($28 | 0);
    if ($cmp127) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $29 = HEAP32[$ptr >> 2] | 0;
    HEAP32[$start26 >> 2] = $29;
    $retval_0 = $4;
    label = 29;
    break;
   case 27:
    HEAP32[$ptr >> 2] = $28;
    $retval_0 = $4;
    label = 29;
    break;
   case 28:
    $inc142 = $i_0 + 1 | 0;
    $i_0 = $inc142;
    label = 18;
    break;
   case 29:
    return $retval_0 | 0;
  }
  return 0;
}
function _storeAttributeValue($parser, $enc, $isCdata, $ptr, $end, $pool) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $isCdata = $isCdata | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $pool = $pool | 0;
  var $call = 0, $tobool = 0, $tobool1 = 0, $ptr2 = 0, $0 = 0, $start = 0, $1 = 0, $tobool3 = 0, $arrayidx = 0, $2 = 0, $cmp = 0, $ptr10 = 0, $3 = 0, $end11 = 0, $4 = 0, $cmp12 = 0, $call15 = 0, $tobool16 = 0, $5 = 0, $incdec_ptr18 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _appendAttributeValue($parser, $enc, $isCdata, $ptr, $end, $pool) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $retval_0 = $call;
      label = 10;
      break;
    }
   case 3:
    $tobool1 = $isCdata << 24 >> 24 == 0;
    if ($tobool1) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $ptr2 = $pool + 12 | 0;
    $0 = HEAP32[$ptr2 >> 2] | 0;
    $start = $pool + 16 | 0;
    $1 = HEAP32[$start >> 2] | 0;
    $tobool3 = ($0 | 0) == ($1 | 0);
    if ($tobool3) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $arrayidx = $0 - 1 | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $cmp = $2 << 24 >> 24 == 32;
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    HEAP32[$ptr2 >> 2] = $arrayidx;
    label = 7;
    break;
   case 7:
    $ptr10 = $pool + 12 | 0;
    $3 = HEAP32[$ptr10 >> 2] | 0;
    $end11 = $pool + 8 | 0;
    $4 = HEAP32[$end11 >> 2] | 0;
    $cmp12 = ($3 | 0) == ($4 | 0);
    if ($cmp12) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $call15 = _poolGrow($pool) | 0;
    $tobool16 = $call15 << 24 >> 24 == 0;
    if ($tobool16) {
      $retval_0 = 1;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $5 = HEAP32[$ptr10 >> 2] | 0;
    $incdec_ptr18 = $5 + 1 | 0;
    HEAP32[$ptr10 >> 2] = $incdec_ptr18;
    HEAP8[$5] = 0;
    $retval_0 = 0;
    label = 10;
    break;
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _appendAttributeValue($parser, $enc, $isCdata, $ptr, $end, $pool) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $isCdata = $isCdata | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $pool = $pool | 0;
  var $next = 0, $buf = 0, $m_dtd = 0, $0 = 0, $arrayidx = 0, $charRefNumber = 0, $tobool = 0, $ptr20 = 0, $start = 0, $arraydecay = 0, $ptr41 = 0, $end42 = 0, $minBytesPerChar = 0, $tobool59 = 0, $ptr61 = 0, $start62 = 0, $ptr76 = 0, $end77 = 0, $predefinedEntityName = 0, $minBytesPerChar90 = 0, $m_temp2Pool = 0, $generalEntities = 0, $start123 = 0, $ptr125 = 0, $pool126 = 0, $cmp127 = 0, $standalone = 0, $hasParamEntityRefs = 0, $m_openInternalEntities = 0, $m_internalEncoding = 0, $hasParamEntityRefs139 = 0, $standalone141 = 0, $ptr98 = 0, $end99 = 0, $ptr_addr_0 = 0, $1 = 0, $call = 0, $m_encoding = 0, $2 = 0, $cmp = 0, $3 = 0, $m_eventPtr = 0, $m_encoding3 = 0, $4 = 0, $cmp4 = 0, $m_eventPtr6 = 0, $5 = 0, $call9 = 0, $cmp10 = 0, $m_encoding12 = 0, $6 = 0, $cmp13 = 0, $m_eventPtr15 = 0, $cmp18 = 0, $or_cond = 0, $7 = 0, $8 = 0, $cmp21 = 0, $arrayidx23 = 0, $9 = 0, $cmp24 = 0, $call28 = 0, $tobool29 = 0, $cmp39103 = 0, $m_encoding31 = 0, $10 = 0, $cmp32 = 0, $m_eventPtr35 = 0, $i_0104 = 0, $11 = 0, $12 = 0, $cmp43 = 0, $call46 = 0, $tobool47 = 0, $arrayidx48 = 0, $13 = 0, $14 = 0, $incdec_ptr = 0, $inc = 0, $cmp39 = 0, $15 = 0, $call53 = 0, $tobool54 = 0, $16 = 0, $add_ptr = 0, $17 = 0, $18 = 0, $cmp66 = 0, $arrayidx70 = 0, $19 = 0, $cmp72 = 0, $20 = 0, $21 = 0, $cmp78 = 0, $call81 = 0, $tobool82 = 0, $22 = 0, $incdec_ptr86 = 0, $23 = 0, $24 = 0, $add_ptr91 = 0, $25 = 0, $idx_neg = 0, $add_ptr93 = 0, $call94 = 0, $conv95 = 0, $tobool96 = 0, $26 = 0, $27 = 0, $cmp100 = 0, $call103 = 0, $tobool104 = 0, $28 = 0, $incdec_ptr108 = 0, $29 = 0, $add_ptr113 = 0, $30 = 0, $idx_neg115 = 0, $add_ptr116 = 0, $call117 = 0, $tobool118 = 0, $call121 = 0, $31 = 0, $32 = 0, $33 = 0, $tobool131 = 0, $34 = 0, $tobool133 = 0, $35 = 0, $tobool135 = 0, $tobool133_sink = 0, $36 = 0, $conv138 = 0, $37 = 0, $tobool140 = 0, $tobool148101 = 0, $38 = 0, $tobool143 = 0, $phitmp = 0, $checkEntityDecl_0 = 0, $tobool146 = 0, $tobool148 = 0, $is_internal = 0, $39 = 0, $tobool151 = 0, $open = 0, $40 = 0, $41 = 0, $tobool160 = 0, $m_encoding162 = 0, $42 = 0, $cmp163 = 0, $m_eventPtr166 = 0, $43 = 0, $44 = 0, $tobool169 = 0, $m_encoding171 = 0, $45 = 0, $cmp172 = 0, $m_eventPtr175 = 0, $46 = 0, $47 = 0, $tobool178 = 0, $m_encoding180 = 0, $48 = 0, $cmp181 = 0, $m_eventPtr184 = 0, $textLen = 0, $49 = 0, $50 = 0, $add_ptr188 = 0, $51 = 0, $52 = 0, $call191 = 0, $tobool193 = 0, $m_encoding197 = 0, $53 = 0, $cmp198 = 0, $m_eventPtr201 = 0, $54 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $next = __stackBase__ | 0;
    $buf = __stackBase__ + 8 | 0;
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $arrayidx = $enc + 12 | 0;
    $charRefNumber = $enc + 40 | 0;
    $tobool = $isCdata << 24 >> 24 == 0;
    $ptr20 = $pool + 12 | 0;
    $start = $pool + 16 | 0;
    $arraydecay = $buf | 0;
    $ptr41 = $pool + 12 | 0;
    $end42 = $pool + 8 | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $tobool59 = $isCdata << 24 >> 24 == 0;
    $ptr61 = $pool + 12 | 0;
    $start62 = $pool + 16 | 0;
    $ptr76 = $pool + 12 | 0;
    $end77 = $pool + 8 | 0;
    $predefinedEntityName = $enc + 44 | 0;
    $minBytesPerChar90 = $enc + 64 | 0;
    $m_temp2Pool = $parser + 424 | 0;
    $generalEntities = $0 | 0;
    $start123 = $parser + 440 | 0;
    $ptr125 = $parser + 436 | 0;
    $pool126 = $0 + 80 | 0;
    $cmp127 = ($pool126 | 0) == ($pool | 0);
    $standalone = $0 + 130 | 0;
    $hasParamEntityRefs = $0 + 129 | 0;
    $m_openInternalEntities = $parser + 284 | 0;
    $m_internalEncoding = $parser + 224 | 0;
    $hasParamEntityRefs139 = $0 + 129 | 0;
    $standalone141 = $0 + 130 | 0;
    $ptr98 = $pool + 12 | 0;
    $end99 = $pool + 8 | 0;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$1 & 1023]($enc, $ptr_addr_0, $end, $next) | 0;
    if (($call | 0) == 0) {
      label = 4;
      break;
    } else if (($call | 0) == (-1 | 0)) {
      label = 6;
      break;
    } else if (($call | 0) == 10) {
      label = 8;
      break;
    } else if (($call | 0) == 6) {
      label = 21;
      break;
    } else if (($call | 0) == (-3 | 0)) {
      label = 22;
      break;
    } else if (($call | 0) == 39 | ($call | 0) == 7) {
      label = 23;
      break;
    } else if (($call | 0) == 9) {
      label = 29;
      break;
    } else if (($call | 0) == (-4 | 0)) {
      $retval_0 = 0;
      label = 59;
      break;
    } else {
      label = 56;
      break;
    }
   case 4:
    $m_encoding = $parser + 144 | 0;
    $2 = HEAP32[$m_encoding >> 2] | 0;
    $cmp = ($2 | 0) == ($enc | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $retval_0 = 4;
      label = 59;
      break;
    }
   case 5:
    $3 = HEAP32[$next >> 2] | 0;
    $m_eventPtr = $parser + 272 | 0;
    HEAP32[$m_eventPtr >> 2] = $3;
    $retval_0 = 4;
    label = 59;
    break;
   case 6:
    $m_encoding3 = $parser + 144 | 0;
    $4 = HEAP32[$m_encoding3 >> 2] | 0;
    $cmp4 = ($4 | 0) == ($enc | 0);
    if ($cmp4) {
      label = 7;
      break;
    } else {
      $retval_0 = 4;
      label = 59;
      break;
    }
   case 7:
    $m_eventPtr6 = $parser + 272 | 0;
    HEAP32[$m_eventPtr6 >> 2] = $ptr_addr_0;
    $retval_0 = 4;
    label = 59;
    break;
   case 8:
    $5 = HEAP32[$charRefNumber >> 2] | 0;
    $call9 = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr_addr_0) | 0;
    $cmp10 = ($call9 | 0) < 0;
    if ($cmp10) {
      label = 9;
      break;
    } else {
      label = 11;
      break;
    }
   case 9:
    $m_encoding12 = $parser + 144 | 0;
    $6 = HEAP32[$m_encoding12 >> 2] | 0;
    $cmp13 = ($6 | 0) == ($enc | 0);
    if ($cmp13) {
      label = 10;
      break;
    } else {
      $retval_0 = 14;
      label = 59;
      break;
    }
   case 10:
    $m_eventPtr15 = $parser + 272 | 0;
    HEAP32[$m_eventPtr15 >> 2] = $ptr_addr_0;
    $retval_0 = 14;
    label = 59;
    break;
   case 11:
    $cmp18 = ($call9 | 0) == 32;
    $or_cond = $tobool & $cmp18;
    if ($or_cond) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    $7 = HEAP32[$ptr20 >> 2] | 0;
    $8 = HEAP32[$start >> 2] | 0;
    $cmp21 = ($7 | 0) == ($8 | 0);
    if ($cmp21) {
      label = 58;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $arrayidx23 = $7 - 1 | 0;
    $9 = HEAP8[$arrayidx23] | 0;
    $cmp24 = $9 << 24 >> 24 == 32;
    if ($cmp24) {
      label = 58;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $call28 = _XmlUtf8Encode($call9, $arraydecay) | 0;
    $tobool29 = ($call28 | 0) == 0;
    if ($tobool29) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $cmp39103 = ($call28 | 0) > 0;
    if ($cmp39103) {
      $i_0104 = 0;
      label = 18;
      break;
    } else {
      label = 58;
      break;
    }
   case 16:
    $m_encoding31 = $parser + 144 | 0;
    $10 = HEAP32[$m_encoding31 >> 2] | 0;
    $cmp32 = ($10 | 0) == ($enc | 0);
    if ($cmp32) {
      label = 17;
      break;
    } else {
      $retval_0 = 14;
      label = 59;
      break;
    }
   case 17:
    $m_eventPtr35 = $parser + 272 | 0;
    HEAP32[$m_eventPtr35 >> 2] = $ptr_addr_0;
    $retval_0 = 14;
    label = 59;
    break;
   case 18:
    $11 = HEAP32[$ptr41 >> 2] | 0;
    $12 = HEAP32[$end42 >> 2] | 0;
    $cmp43 = ($11 | 0) == ($12 | 0);
    if ($cmp43) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $call46 = _poolGrow($pool) | 0;
    $tobool47 = $call46 << 24 >> 24 == 0;
    if ($tobool47) {
      $retval_0 = 1;
      label = 59;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $arrayidx48 = $buf + $i_0104 | 0;
    $13 = HEAP8[$arrayidx48] | 0;
    $14 = HEAP32[$ptr41 >> 2] | 0;
    $incdec_ptr = $14 + 1 | 0;
    HEAP32[$ptr41 >> 2] = $incdec_ptr;
    HEAP8[$14] = $13;
    $inc = $i_0104 + 1 | 0;
    $cmp39 = ($inc | 0) < ($call28 | 0);
    if ($cmp39) {
      $i_0104 = $inc;
      label = 18;
      break;
    } else {
      label = 58;
      break;
    }
   case 21:
    $15 = HEAP32[$next >> 2] | 0;
    $call53 = _poolAppend($pool, $enc, $ptr_addr_0, $15) | 0;
    $tobool54 = ($call53 | 0) == 0;
    if ($tobool54) {
      $retval_0 = 1;
      label = 59;
      break;
    } else {
      label = 58;
      break;
    }
   case 22:
    $16 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $ptr_addr_0 + $16 | 0;
    HEAP32[$next >> 2] = $add_ptr;
    label = 23;
    break;
   case 23:
    if ($tobool59) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $17 = HEAP32[$ptr61 >> 2] | 0;
    $18 = HEAP32[$start62 >> 2] | 0;
    $cmp66 = ($17 | 0) == ($18 | 0);
    if ($cmp66) {
      label = 58;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $arrayidx70 = $17 - 1 | 0;
    $19 = HEAP8[$arrayidx70] | 0;
    $cmp72 = $19 << 24 >> 24 == 32;
    if ($cmp72) {
      label = 58;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $20 = HEAP32[$ptr76 >> 2] | 0;
    $21 = HEAP32[$end77 >> 2] | 0;
    $cmp78 = ($20 | 0) == ($21 | 0);
    if ($cmp78) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $call81 = _poolGrow($pool) | 0;
    $tobool82 = $call81 << 24 >> 24 == 0;
    if ($tobool82) {
      $retval_0 = 1;
      label = 59;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $22 = HEAP32[$ptr76 >> 2] | 0;
    $incdec_ptr86 = $22 + 1 | 0;
    HEAP32[$ptr76 >> 2] = $incdec_ptr86;
    HEAP8[$22] = 32;
    label = 58;
    break;
   case 29:
    $23 = HEAP32[$predefinedEntityName >> 2] | 0;
    $24 = HEAP32[$minBytesPerChar90 >> 2] | 0;
    $add_ptr91 = $ptr_addr_0 + $24 | 0;
    $25 = HEAP32[$next >> 2] | 0;
    $idx_neg = -$24 | 0;
    $add_ptr93 = $25 + $idx_neg | 0;
    $call94 = FUNCTION_TABLE_iiii[$23 & 1023]($enc, $add_ptr91, $add_ptr93) | 0;
    $conv95 = $call94 & 255;
    $tobool96 = $conv95 << 24 >> 24 == 0;
    if ($tobool96) {
      label = 33;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $26 = HEAP32[$ptr98 >> 2] | 0;
    $27 = HEAP32[$end99 >> 2] | 0;
    $cmp100 = ($26 | 0) == ($27 | 0);
    if ($cmp100) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    $call103 = _poolGrow($pool) | 0;
    $tobool104 = $call103 << 24 >> 24 == 0;
    if ($tobool104) {
      $retval_0 = 1;
      label = 59;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $28 = HEAP32[$ptr98 >> 2] | 0;
    $incdec_ptr108 = $28 + 1 | 0;
    HEAP32[$ptr98 >> 2] = $incdec_ptr108;
    HEAP8[$28] = $conv95;
    label = 58;
    break;
   case 33:
    $29 = HEAP32[$minBytesPerChar90 >> 2] | 0;
    $add_ptr113 = $ptr_addr_0 + $29 | 0;
    $30 = HEAP32[$next >> 2] | 0;
    $idx_neg115 = -$29 | 0;
    $add_ptr116 = $30 + $idx_neg115 | 0;
    $call117 = _poolStoreString($m_temp2Pool, $enc, $add_ptr113, $add_ptr116) | 0;
    $tobool118 = ($call117 | 0) == 0;
    if ($tobool118) {
      $retval_0 = 1;
      label = 59;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $call121 = _lookup($parser, $generalEntities, $call117, 0) | 0;
    $31 = $call121;
    $32 = HEAP32[$start123 >> 2] | 0;
    HEAP32[$ptr125 >> 2] = $32;
    if ($cmp127) {
      label = 35;
      break;
    } else {
      label = 39;
      break;
    }
   case 35:
    $33 = HEAP8[$standalone] | 0;
    $tobool131 = $33 << 24 >> 24 == 0;
    if ($tobool131) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $34 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $tobool133 = ($34 | 0) != 0;
    $tobool133_sink = $tobool133;
    label = 38;
    break;
   case 37:
    $35 = HEAP8[$hasParamEntityRefs] | 0;
    $tobool135 = $35 << 24 >> 24 != 0;
    $tobool133_sink = $tobool135;
    label = 38;
    break;
   case 38:
    $36 = $tobool133_sink & 1;
    $conv138 = $36 ^ 1;
    $checkEntityDecl_0 = $conv138;
    label = 42;
    break;
   case 39:
    $37 = HEAP8[$hasParamEntityRefs139] | 0;
    $tobool140 = $37 << 24 >> 24 == 0;
    if ($tobool140) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 40:
    $tobool148101 = ($call121 | 0) == 0;
    if ($tobool148101) {
      $retval_0 = 11;
      label = 59;
      break;
    } else {
      label = 44;
      break;
    }
   case 41:
    $38 = HEAP8[$standalone141] | 0;
    $tobool143 = $38 << 24 >> 24 != 0;
    $phitmp = $tobool143 & 1;
    $checkEntityDecl_0 = $phitmp;
    label = 42;
    break;
   case 42:
    $tobool146 = $checkEntityDecl_0 << 24 >> 24 == 0;
    $tobool148 = ($call121 | 0) != 0;
    if ($tobool146) {
      label = 45;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    if ($tobool148) {
      label = 44;
      break;
    } else {
      $retval_0 = 11;
      label = 59;
      break;
    }
   case 44:
    $is_internal = $31 + 34 | 0;
    $39 = HEAP8[$is_internal] | 0;
    $tobool151 = $39 << 24 >> 24 == 0;
    if ($tobool151) {
      $retval_0 = 24;
      label = 59;
      break;
    } else {
      label = 46;
      break;
    }
   case 45:
    if ($tobool148) {
      label = 46;
      break;
    } else {
      label = 58;
      break;
    }
   case 46:
    $open = $call121 + 32 | 0;
    $40 = $open;
    $41 = HEAP8[$40] | 0;
    $tobool160 = $41 << 24 >> 24 == 0;
    if ($tobool160) {
      label = 49;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $m_encoding162 = $parser + 144 | 0;
    $42 = HEAP32[$m_encoding162 >> 2] | 0;
    $cmp163 = ($42 | 0) == ($enc | 0);
    if ($cmp163) {
      label = 48;
      break;
    } else {
      $retval_0 = 12;
      label = 59;
      break;
    }
   case 48:
    $m_eventPtr166 = $parser + 272 | 0;
    HEAP32[$m_eventPtr166 >> 2] = $ptr_addr_0;
    $retval_0 = 12;
    label = 59;
    break;
   case 49:
    $43 = $call121 + 28 | 0;
    $44 = HEAP32[$43 >> 2] | 0;
    $tobool169 = ($44 | 0) == 0;
    if ($tobool169) {
      label = 52;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $m_encoding171 = $parser + 144 | 0;
    $45 = HEAP32[$m_encoding171 >> 2] | 0;
    $cmp172 = ($45 | 0) == ($enc | 0);
    if ($cmp172) {
      label = 51;
      break;
    } else {
      $retval_0 = 15;
      label = 59;
      break;
    }
   case 51:
    $m_eventPtr175 = $parser + 272 | 0;
    HEAP32[$m_eventPtr175 >> 2] = $ptr_addr_0;
    $retval_0 = 15;
    label = 59;
    break;
   case 52:
    $46 = $call121 + 4 | 0;
    $47 = HEAP32[$46 >> 2] | 0;
    $tobool178 = ($47 | 0) == 0;
    if ($tobool178) {
      label = 53;
      break;
    } else {
      label = 55;
      break;
    }
   case 53:
    $m_encoding180 = $parser + 144 | 0;
    $48 = HEAP32[$m_encoding180 >> 2] | 0;
    $cmp181 = ($48 | 0) == ($enc | 0);
    if ($cmp181) {
      label = 54;
      break;
    } else {
      $retval_0 = 16;
      label = 59;
      break;
    }
   case 54:
    $m_eventPtr184 = $parser + 272 | 0;
    HEAP32[$m_eventPtr184 >> 2] = $ptr_addr_0;
    $retval_0 = 16;
    label = 59;
    break;
   case 55:
    $textLen = $call121 + 8 | 0;
    $49 = $textLen;
    $50 = HEAP32[$49 >> 2] | 0;
    $add_ptr188 = $47 + $50 | 0;
    HEAP8[$40] = 1;
    $51 = HEAP32[$m_internalEncoding >> 2] | 0;
    $52 = HEAP32[$46 >> 2] | 0;
    $call191 = _appendAttributeValue($parser, $51, $isCdata, $52, $add_ptr188, $pool) | 0;
    HEAP8[$40] = 0;
    $tobool193 = ($call191 | 0) == 0;
    if ($tobool193) {
      label = 58;
      break;
    } else {
      $retval_0 = $call191;
      label = 59;
      break;
    }
   case 56:
    $m_encoding197 = $parser + 144 | 0;
    $53 = HEAP32[$m_encoding197 >> 2] | 0;
    $cmp198 = ($53 | 0) == ($enc | 0);
    if ($cmp198) {
      label = 57;
      break;
    } else {
      $retval_0 = 23;
      label = 59;
      break;
    }
   case 57:
    $m_eventPtr201 = $parser + 272 | 0;
    HEAP32[$m_eventPtr201 >> 2] = $ptr_addr_0;
    $retval_0 = 23;
    label = 59;
    break;
   case 58:
    $54 = HEAP32[$next >> 2] | 0;
    $ptr_addr_0 = $54;
    label = 3;
    break;
   case 59:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _poolAppend($pool, $enc, $ptr, $end) {
  $pool = $pool | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $ptr_addr = 0, $ptr1 = 0, $0 = 0, $tobool = 0, $call = 0, $tobool2 = 0, $utf8Convert = 0, $end4 = 0, $1 = 0, $2 = 0, $3 = 0, $cmp = 0, $call7 = 0, $tobool8 = 0, $start = 0, $4 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    $ptr1 = $pool + 12 | 0;
    $0 = HEAP32[$ptr1 >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _poolGrow($pool) | 0;
    $tobool2 = $call << 24 >> 24 == 0;
    if ($tobool2) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $utf8Convert = $enc + 56 | 0;
    $end4 = $pool + 8 | 0;
    label = 5;
    break;
   case 5:
    $1 = HEAP32[$utf8Convert >> 2] | 0;
    $2 = HEAP32[$end4 >> 2] | 0;
    FUNCTION_TABLE_viiiii[$1 & 1023]($enc, $ptr_addr, $end, $ptr1, $2);
    $3 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp = ($3 | 0) == ($end | 0);
    if ($cmp) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $call7 = _poolGrow($pool) | 0;
    $tobool8 = $call7 << 24 >> 24 == 0;
    if ($tobool8) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 7:
    $start = $pool + 16 | 0;
    $4 = HEAP32[$start >> 2] | 0;
    $retval_0 = $4;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _internalEntityProcessor($parser, $s, $end, $nextPtr) {
  $parser = $parser | 0;
  $s = $s | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  var $next = 0, $m_openInternalEntities = 0, $0 = 0, $tobool = 0, $entity1 = 0, $1 = 0, $textPtr = 0, $2 = 0, $processed = 0, $3 = 0, $add_ptr = 0, $textLen = 0, $4 = 0, $add_ptr3 = 0, $startTagLevel = 0, $5 = 0, $m_internalEncoding = 0, $6 = 0, $call = 0, $cmp = 0, $7 = 0, $cmp5 = 0, $parsing = 0, $8 = 0, $cmp6 = 0, $9 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $open = 0, $next11 = 0, $10 = 0, $m_freeInternalEntities = 0, $11 = 0, $m_processor = 0, $m_parentParser = 0, $12 = 0, $tobool17 = 0, $cond = 0, $m_encoding = 0, $13 = 0, $finalBuffer = 0, $14 = 0, $lnot = 0, $conv = 0, $call20 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $next = __stackBase__ | 0;
    $m_openInternalEntities = $parser + 284 | 0;
    $0 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 23;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $entity1 = $0 + 12 | 0;
    $1 = HEAP32[$entity1 >> 2] | 0;
    $textPtr = $1 + 4 | 0;
    $2 = HEAP32[$textPtr >> 2] | 0;
    $processed = $1 + 12 | 0;
    $3 = HEAP32[$processed >> 2] | 0;
    $add_ptr = $2 + $3 | 0;
    $textLen = $1 + 8 | 0;
    $4 = HEAP32[$textLen >> 2] | 0;
    $add_ptr3 = $2 + $4 | 0;
    $startTagLevel = $0 + 16 | 0;
    $5 = HEAP32[$startTagLevel >> 2] | 0;
    $m_internalEncoding = $parser + 224 | 0;
    $6 = HEAP32[$m_internalEncoding >> 2] | 0;
    $call = _doContent($parser, $5, $6, $add_ptr, $add_ptr3, $next, 0) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $retval_0 = $call;
      label = 8;
      break;
    }
   case 4:
    $7 = HEAP32[$next >> 2] | 0;
    $cmp5 = ($add_ptr3 | 0) == ($7 | 0);
    if ($cmp5) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $parsing = $parser + 464 | 0;
    $8 = HEAP32[$parsing >> 2] | 0;
    $cmp6 = ($8 | 0) == 3;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $9 = HEAP32[$textPtr >> 2] | 0;
    $sub_ptr_lhs_cast = $7;
    $sub_ptr_rhs_cast = $9;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    HEAP32[$processed >> 2] = $sub_ptr_sub;
    $retval_0 = $call;
    label = 8;
    break;
   case 7:
    $open = $1 + 32 | 0;
    HEAP8[$open] = 0;
    $next11 = $0 + 8 | 0;
    $10 = HEAP32[$next11 >> 2] | 0;
    HEAP32[$m_openInternalEntities >> 2] = $10;
    $m_freeInternalEntities = $parser + 288 | 0;
    $11 = HEAP32[$m_freeInternalEntities >> 2] | 0;
    HEAP32[$next11 >> 2] = $11;
    HEAP32[$m_freeInternalEntities >> 2] = $0;
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 122;
    $m_parentParser = $parser + 460 | 0;
    $12 = HEAP32[$m_parentParser >> 2] | 0;
    $tobool17 = ($12 | 0) != 0;
    $cond = $tobool17 & 1;
    $m_encoding = $parser + 144 | 0;
    $13 = HEAP32[$m_encoding >> 2] | 0;
    $finalBuffer = $parser + 468 | 0;
    $14 = HEAP8[$finalBuffer] | 0;
    $lnot = $14 << 24 >> 24 == 0;
    $conv = $lnot & 1;
    $call20 = _doContent($parser, $cond, $13, $s, $end, $nextPtr, $conv) | 0;
    $retval_0 = $call20;
    label = 8;
    break;
   case 8:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _handleUnknownEncoding($parser, $encodingName) {
  $parser = $parser | 0;
  $encodingName = $encodingName | 0;
  var $info = 0, $m_unknownEncodingHandler = 0, $0 = 0, $tobool = 0, $info15 = 0, $convert = 0, $data = 0, $release = 0, $1 = 0, $m_unknownEncodingHandlerData = 0, $2 = 0, $call = 0, $tobool2 = 0, $malloc_fcn = 0, $3 = 0, $call5 = 0, $m_unknownEncodingMem = 0, $tobool7 = 0, $4 = 0, $tobool10 = 0, $5 = 0, $arraydecay = 0, $6 = 0, $7 = 0, $call20 = 0, $tobool21 = 0, $8 = 0, $m_unknownEncodingData = 0, $9 = 0, $m_unknownEncodingRelease = 0, $m_encoding = 0, $10 = 0, $cmp28 = 0, $11 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 1040 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $info = __stackBase__ | 0;
    $m_unknownEncodingHandler = $parser + 124 | 0;
    $0 = HEAP32[$m_unknownEncodingHandler >> 2] | 0;
    $tobool = ($0 | 0) == 0;
    if ($tobool) {
      $retval_0 = 18;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $info15 = $info;
    _memset($info15 | 0, -1 | 0, 1024);
    $convert = $info + 1028 | 0;
    HEAP32[$convert >> 2] = 0;
    $data = $info + 1024 | 0;
    HEAP32[$data >> 2] = 0;
    $release = $info + 1032 | 0;
    HEAP32[$release >> 2] = 0;
    $1 = HEAP32[$m_unknownEncodingHandler >> 2] | 0;
    $m_unknownEncodingHandlerData = $parser + 244 | 0;
    $2 = HEAP32[$m_unknownEncodingHandlerData >> 2] | 0;
    $call = FUNCTION_TABLE_iiii[$1 & 1023]($2, $encodingName, $info) | 0;
    $tobool2 = ($call | 0) == 0;
    if ($tobool2) {
      label = 9;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $malloc_fcn = $parser + 12 | 0;
    $3 = HEAP32[$malloc_fcn >> 2] | 0;
    $call5 = FUNCTION_TABLE_ii[$3 & 1023](1908) | 0;
    $m_unknownEncodingMem = $parser + 236 | 0;
    HEAP32[$m_unknownEncodingMem >> 2] = $call5;
    $tobool7 = ($call5 | 0) == 0;
    if ($tobool7) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $4 = HEAP32[$release >> 2] | 0;
    $tobool10 = ($4 | 0) == 0;
    if ($tobool10) {
      $retval_0 = 1;
      label = 11;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $5 = HEAP32[$data >> 2] | 0;
    FUNCTION_TABLE_vi[$4 & 1023]($5);
    $retval_0 = 1;
    label = 11;
    break;
   case 7:
    $arraydecay = $info | 0;
    $6 = HEAP32[$convert >> 2] | 0;
    $7 = HEAP32[$data >> 2] | 0;
    $call20 = _XmlInitUnknownEncoding($call5, $arraydecay, $6, $7) | 0;
    $tobool21 = ($call20 | 0) == 0;
    if ($tobool21) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $8 = HEAP32[$data >> 2] | 0;
    $m_unknownEncodingData = $parser + 240 | 0;
    HEAP32[$m_unknownEncodingData >> 2] = $8;
    $9 = HEAP32[$release >> 2] | 0;
    $m_unknownEncodingRelease = $parser + 248 | 0;
    HEAP32[$m_unknownEncodingRelease >> 2] = $9;
    $m_encoding = $parser + 144 | 0;
    HEAP32[$m_encoding >> 2] = $call20;
    $retval_0 = 0;
    label = 11;
    break;
   case 9:
    $10 = HEAP32[$release >> 2] | 0;
    $cmp28 = ($10 | 0) == 0;
    if ($cmp28) {
      $retval_0 = 18;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $11 = HEAP32[$data >> 2] | 0;
    FUNCTION_TABLE_vi[$10 & 1023]($11);
    $retval_0 = 18;
    label = 11;
    break;
   case 11:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _generate_hash_secret_salt() {
  _srand(((_time(0) | 0) >>> 0) % 4294967295 | 0);
  return _rand() | 0;
}
function _prologInitProcessor($parser, $s, $end, $nextPtr) {
  $parser = $parser | 0;
  $s = $s | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  var $call = 0, $cmp = 0, $m_processor = 0, $call1 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _initializeEncoding($parser) | 0;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = $call;
      label = 4;
      break;
    }
   case 3:
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 106;
    $call1 = _prologProcessor($parser, $s, $end, $nextPtr) | 0;
    $retval_0 = $call1;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _prologProcessor($parser, $s, $end, $nextPtr) {
  $parser = $parser | 0;
  $s = $s | 0;
  $end = $end | 0;
  $nextPtr = $nextPtr | 0;
  var $next = 0, $m_encoding = 0, $0 = 0, $call = 0, $call3 = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  $next = __stackBase__ | 0;
  HEAP32[$next >> 2] = $s;
  $m_encoding = $parser + 144 | 0;
  $0 = HEAP32[$m_encoding >> 2] | 0;
  $call = FUNCTION_TABLE_iiiii[HEAP32[$0 >> 2] & 1023]($0, $s, $end, $next) | 0;
  $call3 = _doProlog($parser, HEAP32[$m_encoding >> 2] | 0, $s, $end, $call, HEAP32[$next >> 2] | 0, $nextPtr, (HEAP8[$parser + 468 | 0] | 0) == 0 & 1) | 0;
  STACKTOP = __stackBase__;
  return $call3 | 0;
}
function _doProlog($parser, $enc, $s, $end, $tok, $next, $nextPtr, $haveMore) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $s = $s | 0;
  $end = $end | 0;
  $tok = $tok | 0;
  $next = $next | 0;
  $nextPtr = $nextPtr | 0;
  $haveMore = $haveMore | 0;
  var $next_addr = 0, $m_dtd = 0, $0 = 0, $m_encoding = 0, $1 = 0, $cmp = 0, $m_eventPtr = 0, $m_eventEndPtr = 0, $m_openInternalEntities = 0, $2 = 0, $internalEventPtr = 0, $internalEventEndPtr = 0, $eventEndPP_0_ph = 0, $eventPP_0_ph = 0, $tobool = 0, $m_prologState = 0, $handler = 0, $m_defaultHandler = 0, $parsing = 0, $m_startDoctypeDeclHandler = 0, $m_doctypeSysid = 0, $m_tempPool = 0, $m_doctypeName = 0, $ptr = 0, $start = 0, $m_doctypePubid = 0, $m_startDoctypeDeclHandler34 = 0, $m_handlerArg = 0, $m_doctypeName38 = 0, $m_doctypeSysid39 = 0, $m_doctypePubid40 = 0, $m_tempPool42 = 0, $hasParamEntityRefs = 0, $m_startDoctypeDeclHandler45 = 0, $m_tempPool52 = 0, $ptr60 = 0, $start62 = 0, $m_doctypePubid63 = 0, $keepProcessing = 0, $m_declEntity = 0, $pool = 0, $ptr87 = 0, $start89 = 0, $m_entityDeclHandler = 0, $m_doctypeName95 = 0, $m_endDoctypeDeclHandler = 0, $m_handlerArg108 = 0, $m_startDoctypeDeclHandler98 = 0, $m_handlerArg99 = 0, $m_doctypeSysid101 = 0, $m_doctypePubid102 = 0, $m_tempPool103 = 0, $m_declElementType = 0, $keepProcessing142 = 0, $m_attlistDeclHandler = 0, $m_declAttributeId = 0, $m_declAttributeIsCdata = 0, $m_declAttributeType = 0, $m_declAttributeIsId = 0, $m_declAttributeIsCdata125 = 0, $m_declAttributeType126 = 0, $m_declAttributeIsId128 = 0, $m_declAttributeType129 = 0, $m_declAttributeType131 = 0, $m_declAttributeType133 = 0, $m_declAttributeType135 = 0, $m_declAttributeType137 = 0, $m_declAttributeType139 = 0, $m_declAttributeType141 = 0, $keepProcessing150 = 0, $m_attlistDeclHandler154 = 0, $m_declAttributeType157 = 0, $m_tempPool164 = 0, $start175 = 0, $keepProcessing179 = 0, $m_declElementType182 = 0, $m_declAttributeId183 = 0, $m_declAttributeIsCdata184 = 0, $m_declAttributeIsId185 = 0, $m_attlistDeclHandler190 = 0, $m_declAttributeType193 = 0, $m_handlerArg249 = 0, $m_tempPool256 = 0, $m_tempPool210 = 0, $ptr211 = 0, $end213 = 0, $start241 = 0, $keepProcessing260 = 0, $m_declAttributeIsCdata264 = 0, $pool270 = 0, $start276 = 0, $ptr278 = 0, $m_declElementType281 = 0, $m_declAttributeId282 = 0, $m_attlistDeclHandler288 = 0, $m_declAttributeType291 = 0, $m_handlerArg352 = 0, $m_tempPool360 = 0, $m_tempPool310 = 0, $ptr311 = 0, $end313 = 0, $start344 = 0, $keepProcessing364 = 0, $m_declEntity374 = 0, $start377 = 0, $ptr406 = 0, $ptr380 = 0, $m_entityDeclHandler388 = 0, $m_handlerArg392 = 0, $m_curBase = 0, $hasParamEntityRefs414 = 0, $m_startDoctypeDeclHandler415 = 0, $standalone = 0, $m_notStandaloneHandler = 0, $m_handlerArg441 = 0, $m_tempPool418 = 0, $m_doctypeSysid425 = 0, $ptr432 = 0, $start434 = 0, $keepProcessing447 = 0, $m_declEntity451 = 0, $pool454 = 0, $m_curBase467 = 0, $ptr470 = 0, $start472 = 0, $m_entityDeclHandler473 = 0, $keepProcessing479 = 0, $m_declEntity483 = 0, $m_entityDeclHandler486 = 0, $m_handlerArg490 = 0, $keepProcessing504 = 0, $m_declEntity508 = 0, $pool511 = 0, $ptr520 = 0, $start522 = 0, $m_unparsedEntityDeclHandler = 0, $m_entityDeclHandler538 = 0, $m_handlerArg542 = 0, $m_handlerArg526 = 0, $keepProcessing562 = 0, $start608 = 0, $ptr610 = 0, $m_declEntity611 = 0, $pool566 = 0, $generalEntities = 0, $m_declEntity572 = 0, $ptr589 = 0, $start591 = 0, $m_parentParser = 0, $m_openInternalEntities597 = 0, $m_entityDeclHandler601 = 0, $start583 = 0, $ptr585 = 0, $m_declEntity560 = 0, $m_declEntity614 = 0, $m_declNotationPublicId = 0, $m_declNotationName = 0, $m_notationDeclHandler = 0, $m_tempPool618 = 0, $ptr626 = 0, $start628 = 0, $m_declNotationName636 = 0, $m_tempPool640 = 0, $m_declNotationPublicId650 = 0, $ptr652 = 0, $start654 = 0, $m_declNotationName657 = 0, $m_tempPool680 = 0, $m_notationDeclHandler660 = 0, $m_tempPool664 = 0, $m_handlerArg675 = 0, $m_curBase677 = 0, $m_declNotationPublicId678 = 0, $m_declNotationPublicId682 = 0, $m_tempPool694 = 0, $m_notationDeclHandler685 = 0, $m_handlerArg689 = 0, $m_declNotationName690 = 0, $m_curBase691 = 0, $level = 0, $m_groupSize = 0, $m_groupConnector742 = 0, $in_eldecl = 0, $scaffLevel = 0, $scaffIndex751 = 0, $scaffold = 0, $m_elementDeclHandler = 0, $malloc_fcn = 0, $m_groupConnector733 = 0, $realloc_fcn = 0, $m_groupConnector = 0, $scaffIndex = 0, $level761 = 0, $m_groupConnector762 = 0, $in_eldecl773 = 0, $m_elementDeclHandler777 = 0, $level783 = 0, $m_groupConnector784 = 0, $in_eldecl791 = 0, $scaffLevel801 = 0, $scaffIndex803 = 0, $scaffold805 = 0, $m_elementDeclHandler818 = 0, $standalone828 = 0, $m_notStandaloneHandler831 = 0, $m_handlerArg835 = 0, $m_elementDeclHandler841 = 0, $m_declElementType845 = 0, $scaffLevel850 = 0, $scaffCount = 0, $in_eldecl851 = 0, $in_eldecl854 = 0, $m_elementDeclHandler857 = 0, $malloc_fcn861 = 0, $m_handlerArg873 = 0, $m_declElementType874 = 0, $in_eldecl880 = 0, $scaffLevel883 = 0, $scaffIndex885 = 0, $scaffold887 = 0, $m_elementDeclHandler890 = 0, $in_eldecl899 = 0, $scaffold917 = 0, $contentStringLen = 0, $m_elementDeclHandler935 = 0, $in_eldecl944 = 0, $m_elementDeclHandler947 = 0, $scaffLevel951 = 0, $scaffIndex953 = 0, $scaffold955 = 0, $contentStringLen974 = 0, $m_handlerArg969 = 0, $m_declElementType970 = 0, $m_startDoctypeDeclHandler991 = 0, $keepProcessing996 = 0, $m_entityDeclHandler1000 = 0, $m_notationDeclHandler1005 = 0, $keepProcessing1010 = 0, $m_attlistDeclHandler1014 = 0, $m_elementDeclHandler1019 = 0, $tok_addr_0 = 0, $s_addr_0 = 0, $enc_addr_0 = 0, $3 = 0, $cmp2 = 0, $cmp4 = 0, $or_cond = 0, $4 = 0, $sub = 0, $sub12 = 0, $tok_addr_1 = 0, $5 = 0, $6 = 0, $call = 0, $7 = 0, $call16 = 0, $cmp17 = 0, $8 = 0, $9 = 0, $tobool23 = 0, $10 = 0, $call25 = 0, $tobool27 = 0, $11 = 0, $handleDefault_0 = 0, $12 = 0, $tobool35 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $tobool46 = 0, $isPublicId = 0, $18 = 0, $19 = 0, $call48 = 0, $tobool49 = 0, $minBytesPerChar = 0, $20 = 0, $add_ptr = 0, $21 = 0, $idx_neg = 0, $add_ptr54 = 0, $call55 = 0, $tobool56 = 0, $22 = 0, $isPublicId66 = 0, $23 = 0, $24 = 0, $call67 = 0, $tobool68 = 0, $handleDefault_1 = 0, $25 = 0, $tobool72 = 0, $26 = 0, $tobool74 = 0, $minBytesPerChar76 = 0, $27 = 0, $add_ptr77 = 0, $28 = 0, $idx_neg79 = 0, $add_ptr80 = 0, $call81 = 0, $tobool82 = 0, $29 = 0, $publicId = 0, $30 = 0, $31 = 0, $tobool90 = 0, $handleDefault_1_ = 0, $32 = 0, $tobool96 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $handleDefault_2 = 0, $37 = 0, $tobool105 = 0, $38 = 0, $m_processor = 0, $call111 = 0, $39 = 0, $call113 = 0, $tobool115 = 0, $40 = 0, $call119 = 0, $tobool121 = 0, $41 = 0, $tobool144 = 0, $42 = 0, $tobool146 = 0, $_ = 0, $43 = 0, $tobool152 = 0, $44 = 0, $tobool155 = 0, $45 = 0, $tobool158 = 0, $cmp161 = 0, $cond = 0, $prefix_0 = 0, $call165 = 0, $tobool166 = 0, $46 = 0, $call170 = 0, $tobool171 = 0, $47 = 0, $48 = 0, $tobool180 = 0, $49 = 0, $50 = 0, $51 = 0, $52 = 0, $call186 = 0, $tobool187 = 0, $53 = 0, $tobool191 = 0, $54 = 0, $tobool194 = 0, $55 = 0, $arrayidx = 0, $56 = 0, $cmp207 = 0, $57 = 0, $58 = 0, $cmp214 = 0, $call218 = 0, $tobool219 = 0, $59 = 0, $incdec_ptr = 0, $60 = 0, $61 = 0, $cmp227 = 0, $call231 = 0, $tobool232 = 0, $62 = 0, $incdec_ptr237 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $name = 0, $68 = 0, $69 = 0, $name252 = 0, $70 = 0, $71 = 0, $cmp254 = 0, $conv255 = 0, $72 = 0, $tobool261 = 0, $73 = 0, $minBytesPerChar265 = 0, $74 = 0, $add_ptr266 = 0, $75 = 0, $idx_neg268 = 0, $add_ptr269 = 0, $call271 = 0, $tobool272 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $call284 = 0, $tobool285 = 0, $81 = 0, $tobool289 = 0, $82 = 0, $tobool292 = 0, $83 = 0, $arrayidx305 = 0, $84 = 0, $cmp307 = 0, $85 = 0, $86 = 0, $cmp314 = 0, $call318 = 0, $tobool319 = 0, $87 = 0, $incdec_ptr324 = 0, $88 = 0, $89 = 0, $cmp330 = 0, $call334 = 0, $tobool335 = 0, $90 = 0, $incdec_ptr340 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $name354 = 0, $96 = 0, $97 = 0, $name356 = 0, $98 = 0, $99 = 0, $cmp358 = 0, $conv359 = 0, $100 = 0, $tobool365 = 0, $minBytesPerChar368 = 0, $101 = 0, $add_ptr369 = 0, $102 = 0, $idx_neg371 = 0, $add_ptr372 = 0, $call373 = 0, $103 = 0, $tobool375 = 0, $104 = 0, $textPtr = 0, $105 = 0, $106 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $107 = 0, $textLen = 0, $108 = 0, $109 = 0, $tobool389 = 0, $110 = 0, $111 = 0, $112 = 0, $name394 = 0, $113 = 0, $is_param = 0, $114 = 0, $conv396 = 0, $textPtr398 = 0, $115 = 0, $textLen400 = 0, $116 = 0, $117 = 0, $handleDefault_3 = 0, $cmp408 = 0, $118 = 0, $tobool416 = 0, $minBytesPerChar419 = 0, $119 = 0, $add_ptr420 = 0, $120 = 0, $idx_neg422 = 0, $add_ptr423 = 0, $call424 = 0, $cmp427 = 0, $121 = 0, $handleDefault_4 = 0, $122 = 0, $tobool436 = 0, $123 = 0, $tobool438 = 0, $124 = 0, $call442 = 0, $tobool443 = 0, $125 = 0, $tobool449 = 0, $126 = 0, $tobool452 = 0, $minBytesPerChar455 = 0, $127 = 0, $add_ptr456 = 0, $128 = 0, $idx_neg458 = 0, $add_ptr459 = 0, $call460 = 0, $129 = 0, $systemId = 0, $130 = 0, $systemId463 = 0, $131 = 0, $tobool464 = 0, $132 = 0, $base = 0, $133 = 0, $134 = 0, $tobool474 = 0, $_515 = 0, $135 = 0, $tobool481 = 0, $136 = 0, $tobool484 = 0, $137 = 0, $tobool487 = 0, $138 = 0, $139 = 0, $140 = 0, $name492 = 0, $141 = 0, $is_param494 = 0, $142 = 0, $conv495 = 0, $base497 = 0, $143 = 0, $systemId499 = 0, $144 = 0, $publicId501 = 0, $145 = 0, $146 = 0, $tobool506 = 0, $147 = 0, $tobool509 = 0, $148 = 0, $call512 = 0, $149 = 0, $notation = 0, $150 = 0, $notation515 = 0, $151 = 0, $tobool516 = 0, $152 = 0, $153 = 0, $tobool523 = 0, $154 = 0, $155 = 0, $156 = 0, $name528 = 0, $157 = 0, $base530 = 0, $158 = 0, $systemId532 = 0, $159 = 0, $publicId534 = 0, $160 = 0, $notation536 = 0, $161 = 0, $162 = 0, $tobool539 = 0, $163 = 0, $164 = 0, $165 = 0, $name544 = 0, $166 = 0, $base546 = 0, $167 = 0, $systemId548 = 0, $168 = 0, $publicId550 = 0, $169 = 0, $notation552 = 0, $170 = 0, $predefinedEntityName = 0, $171 = 0, $172 = 0, $call557 = 0, $tobool558 = 0, $173 = 0, $tobool563 = 0, $174 = 0, $call567 = 0, $tobool568 = 0, $call571 = 0, $175 = 0, $tobool574 = 0, $name578 = 0, $176 = 0, $cmp579 = 0, $177 = 0, $178 = 0, $179 = 0, $publicId593 = 0, $180 = 0, $is_param595 = 0, $181 = 0, $tobool596 = 0, $182 = 0, $phitmp = 0, $phitmp514 = 0, $183 = 0, $184 = 0, $is_internal = 0, $185 = 0, $tobool602 = 0, $_516 = 0, $186 = 0, $187 = 0, $tobool616 = 0, $188 = 0, $call619 = 0, $tobool622 = 0, $189 = 0, $isPublicId631 = 0, $190 = 0, $191 = 0, $call632 = 0, $tobool633 = 0, $192 = 0, $tobool637 = 0, $minBytesPerChar641 = 0, $193 = 0, $add_ptr642 = 0, $194 = 0, $idx_neg644 = 0, $add_ptr645 = 0, $call646 = 0, $tobool647 = 0, $195 = 0, $196 = 0, $tobool658 = 0, $197 = 0, $tobool661 = 0, $minBytesPerChar665 = 0, $198 = 0, $add_ptr666 = 0, $199 = 0, $idx_neg668 = 0, $add_ptr669 = 0, $call670 = 0, $tobool671 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $handleDefault_5 = 0, $205 = 0, $tobool683 = 0, $206 = 0, $tobool686 = 0, $207 = 0, $208 = 0, $209 = 0, $210 = 0, $211 = 0, $handleDefault_6 = 0, $212 = 0, $213 = 0, $cmp701 = 0, $tobool705 = 0, $214 = 0, $215 = 0, $mul = 0, $call708 = 0, $cmp709 = 0, $216 = 0, $tobool714 = 0, $217 = 0, $218 = 0, $219 = 0, $mul721 = 0, $call722 = 0, $cmp723 = 0, $220 = 0, $221 = 0, $call732 = 0, $tobool735 = 0, $222 = 0, $223 = 0, $arrayidx743 = 0, $224 = 0, $tobool744 = 0, $call746 = 0, $cmp747 = 0, $225 = 0, $226 = 0, $arrayidx752 = 0, $227 = 0, $inc = 0, $228 = 0, $type = 0, $229 = 0, $tobool755 = 0, $_517 = 0, $230 = 0, $231 = 0, $arrayidx763 = 0, $232 = 0, $cmp765 = 0, $233 = 0, $tobool775 = 0, $234 = 0, $tobool778 = 0, $_518 = 0, $235 = 0, $236 = 0, $arrayidx785 = 0, $237 = 0, $cmp787 = 0, $238 = 0, $tobool793 = 0, $tobool799 = 0, $or_cond519 = 0, $239 = 0, $sub802 = 0, $240 = 0, $arrayidx804 = 0, $241 = 0, $242 = 0, $type807 = 0, $243 = 0, $cmp808 = 0, $244 = 0, $tobool819 = 0, $_520 = 0, $handleDefault_7 = 0, $245 = 0, $246 = 0, $arrayidx826 = 0, $247 = 0, $tobool829 = 0, $248 = 0, $tobool832 = 0, $249 = 0, $call836 = 0, $tobool837 = 0, $250 = 0, $tobool842 = 0, $251 = 0, $call844 = 0, $tobool847 = 0, $252 = 0, $tobool855 = 0, $253 = 0, $tobool858 = 0, $254 = 0, $call862 = 0, $tobool863 = 0, $255 = 0, $quant866 = 0, $cmp868 = 0, $cond870 = 0, $type871 = 0, $256 = 0, $257 = 0, $258 = 0, $name875 = 0, $259 = 0, $handleDefault_8 = 0, $260 = 0, $tobool881 = 0, $261 = 0, $sub884 = 0, $262 = 0, $arrayidx886 = 0, $263 = 0, $264 = 0, $type889 = 0, $265 = 0, $tobool891 = 0, $_521 = 0, $quant_0 = 0, $266 = 0, $tobool900 = 0, $cmp903 = 0, $267 = 0, $minBytesPerChar907 = 0, $268 = 0, $idx_neg908 = 0, $add_ptr909 = 0, $cond910 = 0, $call912 = 0, $cmp913 = 0, $269 = 0, $type919 = 0, $270 = 0, $quant922 = 0, $call923 = 0, $tobool924 = 0, $name927 = 0, $271 = 0, $272 = 0, $name930 = 0, $nameLen_0 = 0, $inc932 = 0, $arrayidx933 = 0, $273 = 0, $tobool934 = 0, $274 = 0, $add = 0, $275 = 0, $tobool936 = 0, $_522 = 0, $quant_1 = 0, $276 = 0, $tobool945 = 0, $277 = 0, $tobool948 = 0, $_523 = 0, $278 = 0, $dec = 0, $279 = 0, $arrayidx954 = 0, $280 = 0, $281 = 0, $quant957 = 0, $282 = 0, $cmp959 = 0, $call964 = 0, $tobool965 = 0, $283 = 0, $284 = 0, $285 = 0, $name971 = 0, $286 = 0, $287 = 0, $call978 = 0, $tobool979 = 0, $288 = 0, $call983 = 0, $tobool984 = 0, $not_cond1 = 0, $_524 = 0, $289 = 0, $tobool992 = 0, $_525 = 0, $290 = 0, $tobool998 = 0, $291 = 0, $tobool1001 = 0, $_526 = 0, $292 = 0, $tobool1006 = 0, $_527 = 0, $293 = 0, $tobool1012 = 0, $294 = 0, $tobool1015 = 0, $_528 = 0, $295 = 0, $tobool1020 = 0, $_529 = 0, $handleDefault_10 = 0, $tobool1025 = 0, $296 = 0, $tobool1027 = 0, $297 = 0, $enc_addr_1532 = 0, $298 = 0, $299 = 0, $300 = 0, $arrayidx1033 = 0, $301 = 0, $call1034 = 0, $retval_0_ph = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $next_addr = __stackBase__ | 0;
    HEAP32[$next_addr >> 2] = $next;
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $m_encoding = $parser + 144 | 0;
    $1 = HEAP32[$m_encoding >> 2] | 0;
    $cmp = ($1 | 0) == ($enc | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $m_eventPtr = $parser + 272 | 0;
    $m_eventEndPtr = $parser + 276 | 0;
    $eventPP_0_ph = $m_eventPtr;
    $eventEndPP_0_ph = $m_eventEndPtr;
    label = 5;
    break;
   case 4:
    $m_openInternalEntities = $parser + 284 | 0;
    $2 = HEAP32[$m_openInternalEntities >> 2] | 0;
    $internalEventPtr = $2 | 0;
    $internalEventEndPtr = $2 + 4 | 0;
    $eventPP_0_ph = $internalEventPtr;
    $eventEndPP_0_ph = $internalEventEndPtr;
    label = 5;
    break;
   case 5:
    $tobool = $haveMore << 24 >> 24 == 0;
    $m_prologState = $parser + 252 | 0;
    $handler = $m_prologState | 0;
    $m_defaultHandler = $parser + 80 | 0;
    $parsing = $parser + 464 | 0;
    $m_startDoctypeDeclHandler = $parser + 84 | 0;
    $m_doctypeSysid = $parser + 308 | 0;
    $m_tempPool = $parser + 400 | 0;
    $m_doctypeName = $parser + 304 | 0;
    $ptr = $parser + 412 | 0;
    $start = $parser + 416 | 0;
    $m_doctypePubid = $parser + 312 | 0;
    $m_startDoctypeDeclHandler34 = $parser + 84 | 0;
    $m_handlerArg = $parser + 4 | 0;
    $m_doctypeName38 = $parser + 304 | 0;
    $m_doctypeSysid39 = $parser + 308 | 0;
    $m_doctypePubid40 = $parser + 312 | 0;
    $m_tempPool42 = $parser + 400 | 0;
    $hasParamEntityRefs = $0 + 129 | 0;
    $m_startDoctypeDeclHandler45 = $parser + 84 | 0;
    $m_tempPool52 = $parser + 400 | 0;
    $ptr60 = $parser + 412 | 0;
    $start62 = $parser + 416 | 0;
    $m_doctypePubid63 = $parser + 312 | 0;
    $keepProcessing = $0 + 128 | 0;
    $m_declEntity = $parser + 300 | 0;
    $pool = $0 + 80 | 0;
    $ptr87 = $0 + 92 | 0;
    $start89 = $0 + 96 | 0;
    $m_entityDeclHandler = $parser + 136 | 0;
    $m_doctypeName95 = $parser + 304 | 0;
    $m_endDoctypeDeclHandler = $parser + 88 | 0;
    $m_handlerArg108 = $parser + 4 | 0;
    $m_startDoctypeDeclHandler98 = $parser + 84 | 0;
    $m_handlerArg99 = $parser + 4 | 0;
    $m_doctypeSysid101 = $parser + 308 | 0;
    $m_doctypePubid102 = $parser + 312 | 0;
    $m_tempPool103 = $parser + 400 | 0;
    $m_declElementType = $parser + 328 | 0;
    $keepProcessing142 = $0 + 128 | 0;
    $m_attlistDeclHandler = $parser + 132 | 0;
    $m_declAttributeId = $parser + 332 | 0;
    $m_declAttributeIsCdata = $parser + 336 | 0;
    $m_declAttributeType = $parser + 316 | 0;
    $m_declAttributeIsId = $parser + 337 | 0;
    $m_declAttributeIsCdata125 = $parser + 336 | 0;
    $m_declAttributeType126 = $parser + 316 | 0;
    $m_declAttributeIsId128 = $parser + 337 | 0;
    $m_declAttributeType129 = $parser + 316 | 0;
    $m_declAttributeType131 = $parser + 316 | 0;
    $m_declAttributeType133 = $parser + 316 | 0;
    $m_declAttributeType135 = $parser + 316 | 0;
    $m_declAttributeType137 = $parser + 316 | 0;
    $m_declAttributeType139 = $parser + 316 | 0;
    $m_declAttributeType141 = $parser + 316 | 0;
    $keepProcessing150 = $0 + 128 | 0;
    $m_attlistDeclHandler154 = $parser + 132 | 0;
    $m_declAttributeType157 = $parser + 316 | 0;
    $m_tempPool164 = $parser + 400 | 0;
    $start175 = $parser + 416 | 0;
    $keepProcessing179 = $0 + 128 | 0;
    $m_declElementType182 = $parser + 328 | 0;
    $m_declAttributeId183 = $parser + 332 | 0;
    $m_declAttributeIsCdata184 = $parser + 336 | 0;
    $m_declAttributeIsId185 = $parser + 337 | 0;
    $m_attlistDeclHandler190 = $parser + 132 | 0;
    $m_declAttributeType193 = $parser + 316 | 0;
    $m_handlerArg249 = $parser + 4 | 0;
    $m_tempPool256 = $parser + 400 | 0;
    $m_tempPool210 = $parser + 400 | 0;
    $ptr211 = $parser + 412 | 0;
    $end213 = $parser + 408 | 0;
    $start241 = $parser + 416 | 0;
    $keepProcessing260 = $0 + 128 | 0;
    $m_declAttributeIsCdata264 = $parser + 336 | 0;
    $pool270 = $0 + 80 | 0;
    $start276 = $0 + 96 | 0;
    $ptr278 = $0 + 92 | 0;
    $m_declElementType281 = $parser + 328 | 0;
    $m_declAttributeId282 = $parser + 332 | 0;
    $m_attlistDeclHandler288 = $parser + 132 | 0;
    $m_declAttributeType291 = $parser + 316 | 0;
    $m_handlerArg352 = $parser + 4 | 0;
    $m_tempPool360 = $parser + 400 | 0;
    $m_tempPool310 = $parser + 400 | 0;
    $ptr311 = $parser + 412 | 0;
    $end313 = $parser + 408 | 0;
    $start344 = $parser + 416 | 0;
    $keepProcessing364 = $0 + 128 | 0;
    $m_declEntity374 = $parser + 300 | 0;
    $start377 = $0 + 120 | 0;
    $ptr406 = $0 + 116 | 0;
    $ptr380 = $0 + 116 | 0;
    $m_entityDeclHandler388 = $parser + 136 | 0;
    $m_handlerArg392 = $parser + 4 | 0;
    $m_curBase = $parser + 344 | 0;
    $hasParamEntityRefs414 = $0 + 129 | 0;
    $m_startDoctypeDeclHandler415 = $parser + 84 | 0;
    $standalone = $0 + 130 | 0;
    $m_notStandaloneHandler = $parser + 108 | 0;
    $m_handlerArg441 = $parser + 4 | 0;
    $m_tempPool418 = $parser + 400 | 0;
    $m_doctypeSysid425 = $parser + 308 | 0;
    $ptr432 = $parser + 412 | 0;
    $start434 = $parser + 416 | 0;
    $keepProcessing447 = $0 + 128 | 0;
    $m_declEntity451 = $parser + 300 | 0;
    $pool454 = $0 + 80 | 0;
    $m_curBase467 = $parser + 344 | 0;
    $ptr470 = $0 + 92 | 0;
    $start472 = $0 + 96 | 0;
    $m_entityDeclHandler473 = $parser + 136 | 0;
    $keepProcessing479 = $0 + 128 | 0;
    $m_declEntity483 = $parser + 300 | 0;
    $m_entityDeclHandler486 = $parser + 136 | 0;
    $m_handlerArg490 = $parser + 4 | 0;
    $keepProcessing504 = $0 + 128 | 0;
    $m_declEntity508 = $parser + 300 | 0;
    $pool511 = $0 + 80 | 0;
    $ptr520 = $0 + 92 | 0;
    $start522 = $0 + 96 | 0;
    $m_unparsedEntityDeclHandler = $parser + 92 | 0;
    $m_entityDeclHandler538 = $parser + 136 | 0;
    $m_handlerArg542 = $parser + 4 | 0;
    $m_handlerArg526 = $parser + 4 | 0;
    $keepProcessing562 = $0 + 128 | 0;
    $start608 = $0 + 96 | 0;
    $ptr610 = $0 + 92 | 0;
    $m_declEntity611 = $parser + 300 | 0;
    $pool566 = $0 + 80 | 0;
    $generalEntities = $0 | 0;
    $m_declEntity572 = $parser + 300 | 0;
    $ptr589 = $0 + 92 | 0;
    $start591 = $0 + 96 | 0;
    $m_parentParser = $parser + 460 | 0;
    $m_openInternalEntities597 = $parser + 284 | 0;
    $m_entityDeclHandler601 = $parser + 136 | 0;
    $start583 = $0 + 96 | 0;
    $ptr585 = $0 + 92 | 0;
    $m_declEntity560 = $parser + 300 | 0;
    $m_declEntity614 = $parser + 300 | 0;
    $m_declNotationPublicId = $parser + 324 | 0;
    $m_declNotationName = $parser + 320 | 0;
    $m_notationDeclHandler = $parser + 96 | 0;
    $m_tempPool618 = $parser + 400 | 0;
    $ptr626 = $parser + 412 | 0;
    $start628 = $parser + 416 | 0;
    $m_declNotationName636 = $parser + 320 | 0;
    $m_tempPool640 = $parser + 400 | 0;
    $m_declNotationPublicId650 = $parser + 324 | 0;
    $ptr652 = $parser + 412 | 0;
    $start654 = $parser + 416 | 0;
    $m_declNotationName657 = $parser + 320 | 0;
    $m_tempPool680 = $parser + 400 | 0;
    $m_notationDeclHandler660 = $parser + 96 | 0;
    $m_tempPool664 = $parser + 400 | 0;
    $m_handlerArg675 = $parser + 4 | 0;
    $m_curBase677 = $parser + 344 | 0;
    $m_declNotationPublicId678 = $parser + 324 | 0;
    $m_declNotationPublicId682 = $parser + 324 | 0;
    $m_tempPool694 = $parser + 400 | 0;
    $m_notationDeclHandler685 = $parser + 96 | 0;
    $m_handlerArg689 = $parser + 4 | 0;
    $m_declNotationName690 = $parser + 320 | 0;
    $m_curBase691 = $parser + 344 | 0;
    $level = $parser + 256 | 0;
    $m_groupSize = $parser + 452 | 0;
    $m_groupConnector742 = $parser + 448 | 0;
    $in_eldecl = $0 + 140 | 0;
    $scaffLevel = $0 + 160 | 0;
    $scaffIndex751 = $0 + 164 | 0;
    $scaffold = $0 + 144 | 0;
    $m_elementDeclHandler = $parser + 128 | 0;
    $malloc_fcn = $parser + 12 | 0;
    $m_groupConnector733 = $parser + 448 | 0;
    $realloc_fcn = $parser + 16 | 0;
    $m_groupConnector = $parser + 448 | 0;
    $scaffIndex = $0 + 164 | 0;
    $level761 = $parser + 256 | 0;
    $m_groupConnector762 = $parser + 448 | 0;
    $in_eldecl773 = $0 + 140 | 0;
    $m_elementDeclHandler777 = $parser + 128 | 0;
    $level783 = $parser + 256 | 0;
    $m_groupConnector784 = $parser + 448 | 0;
    $in_eldecl791 = $0 + 140 | 0;
    $scaffLevel801 = $0 + 160 | 0;
    $scaffIndex803 = $0 + 164 | 0;
    $scaffold805 = $0 + 144 | 0;
    $m_elementDeclHandler818 = $parser + 128 | 0;
    $standalone828 = $0 + 130 | 0;
    $m_notStandaloneHandler831 = $parser + 108 | 0;
    $m_handlerArg835 = $parser + 4 | 0;
    $m_elementDeclHandler841 = $parser + 128 | 0;
    $m_declElementType845 = $parser + 328 | 0;
    $scaffLevel850 = $0 + 160 | 0;
    $scaffCount = $0 + 156 | 0;
    $in_eldecl851 = $0 + 140 | 0;
    $in_eldecl854 = $0 + 140 | 0;
    $m_elementDeclHandler857 = $parser + 128 | 0;
    $malloc_fcn861 = $parser + 12 | 0;
    $m_handlerArg873 = $parser + 4 | 0;
    $m_declElementType874 = $parser + 328 | 0;
    $in_eldecl880 = $0 + 140 | 0;
    $scaffLevel883 = $0 + 160 | 0;
    $scaffIndex885 = $0 + 164 | 0;
    $scaffold887 = $0 + 144 | 0;
    $m_elementDeclHandler890 = $parser + 128 | 0;
    $in_eldecl899 = $0 + 140 | 0;
    $scaffold917 = $0 + 144 | 0;
    $contentStringLen = $0 + 148 | 0;
    $m_elementDeclHandler935 = $parser + 128 | 0;
    $in_eldecl944 = $0 + 140 | 0;
    $m_elementDeclHandler947 = $parser + 128 | 0;
    $scaffLevel951 = $0 + 160 | 0;
    $scaffIndex953 = $0 + 164 | 0;
    $scaffold955 = $0 + 144 | 0;
    $contentStringLen974 = $0 + 148 | 0;
    $m_handlerArg969 = $parser + 4 | 0;
    $m_declElementType970 = $parser + 328 | 0;
    $m_startDoctypeDeclHandler991 = $parser + 84 | 0;
    $keepProcessing996 = $0 + 128 | 0;
    $m_entityDeclHandler1000 = $parser + 136 | 0;
    $m_notationDeclHandler1005 = $parser + 96 | 0;
    $keepProcessing1010 = $0 + 128 | 0;
    $m_attlistDeclHandler1014 = $parser + 132 | 0;
    $m_elementDeclHandler1019 = $parser + 128 | 0;
    $enc_addr_0 = $enc;
    $s_addr_0 = $s;
    $tok_addr_0 = $tok;
    label = 6;
    break;
   case 6:
    HEAP32[$eventPP_0_ph >> 2] = $s_addr_0;
    $3 = HEAP32[$next_addr >> 2] | 0;
    HEAP32[$eventEndPP_0_ph >> 2] = $3;
    $cmp2 = ($tok_addr_0 | 0) < 1;
    if ($cmp2) {
      label = 7;
      break;
    } else {
      $tok_addr_1 = $tok_addr_0;
      label = 14;
      break;
    }
   case 7:
    $cmp4 = ($tok_addr_0 | 0) == 0;
    $or_cond = $tobool | $cmp4;
    if ($or_cond) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    HEAP32[$nextPtr >> 2] = $s_addr_0;
    $retval_0 = 0;
    label = 208;
    break;
   case 9:
    if (($tok_addr_0 | 0) == 0) {
      label = 10;
      break;
    } else if (($tok_addr_0 | 0) == (-15 | 0)) {
      label = 11;
      break;
    } else if (($tok_addr_0 | 0) == (-4 | 0)) {
      label = 12;
      break;
    } else if (($tok_addr_0 | 0) == (-1 | 0)) {
      $retval_0_ph = 5;
      label = 207;
      break;
    } else if (($tok_addr_0 | 0) == (-2 | 0)) {
      $retval_0 = 6;
      label = 208;
      break;
    } else {
      label = 13;
      break;
    }
   case 10:
    $4 = HEAP32[$next_addr >> 2] | 0;
    HEAP32[$eventPP_0_ph >> 2] = $4;
    $retval_0 = 4;
    label = 208;
    break;
   case 11:
    $sub = -$tok_addr_0 | 0;
    $tok_addr_1 = $sub;
    label = 14;
    break;
   case 12:
    $retval_0 = 3;
    label = 208;
    break;
   case 13:
    $sub12 = -$tok_addr_0 | 0;
    HEAP32[$next_addr >> 2] = $end;
    $tok_addr_1 = $sub12;
    label = 14;
    break;
   case 14:
    $5 = HEAP32[$handler >> 2] | 0;
    $6 = HEAP32[$next_addr >> 2] | 0;
    $call = FUNCTION_TABLE_iiiiii[$5 & 1023]($m_prologState, $tok_addr_1, $s_addr_0, $6, $enc_addr_0) | 0;
    if (($call | 0) == 1) {
      label = 15;
      break;
    } else if (($call | 0) == 4) {
      label = 17;
      break;
    } else if (($call | 0) == 7) {
      label = 21;
      break;
    } else if (($call | 0) == 6) {
      label = 23;
      break;
    } else if (($call | 0) == 14) {
      label = 27;
      break;
    } else if (($call | 0) == 8) {
      label = 32;
      break;
    } else if (($call | 0) == 2) {
      label = 36;
      break;
    } else if (($call | 0) == 34) {
      label = 37;
      break;
    } else if (($call | 0) == 22) {
      label = 38;
      break;
    } else if (($call | 0) == 23) {
      label = 40;
      break;
    } else if (($call | 0) == 24) {
      label = 41;
      break;
    } else if (($call | 0) == 25) {
      label = 42;
      break;
    } else if (($call | 0) == 26) {
      label = 43;
      break;
    } else if (($call | 0) == 27) {
      label = 44;
      break;
    } else if (($call | 0) == 28) {
      label = 45;
      break;
    } else if (($call | 0) == 29) {
      label = 46;
      break;
    } else if (($call | 0) == 30) {
      label = 47;
      break;
    } else if (($call | 0) == 31 | ($call | 0) == 32) {
      label = 50;
      break;
    } else if (($call | 0) == 35 | ($call | 0) == 36) {
      label = 57;
      break;
    } else if (($call | 0) == 37 | ($call | 0) == 38) {
      label = 69;
      break;
    } else if (($call | 0) == 12) {
      label = 82;
      break;
    } else if (($call | 0) == 5) {
      label = 88;
      break;
    } else if (($call | 0) == 13) {
      label = 94;
      break;
    } else if (($call | 0) == 15) {
      label = 98;
      break;
    } else if (($call | 0) == 16) {
      label = 102;
      break;
    } else if (($call | 0) == 9) {
      label = 109;
      break;
    } else if (($call | 0) == 10) {
      label = 120;
      break;
    } else if (($call | 0) == 18) {
      label = 121;
      break;
    } else if (($call | 0) == 21) {
      label = 124;
      break;
    } else if (($call | 0) == 19) {
      label = 128;
      break;
    } else if (($call | 0) == 20) {
      label = 133;
      break;
    } else if (($call | 0) == (-1 | 0)) {
      label = 137;
      break;
    } else if (($call | 0) == 44) {
      label = 140;
      break;
    } else if (($call | 0) == 50) {
      label = 150;
      break;
    } else if (($call | 0) == 49) {
      label = 153;
      break;
    } else if (($call | 0) == 57) {
      label = 158;
      break;
    } else if (($call | 0) == 40) {
      label = 161;
      break;
    } else if (($call | 0) == 41 | ($call | 0) == 42) {
      label = 164;
      break;
    } else if (($call | 0) == 43) {
      label = 169;
      break;
    } else if (($call | 0) == 53) {
      label = 171;
      break;
    } else if (($call | 0) == 52) {
      label = 172;
      break;
    } else if (($call | 0) == 54) {
      label = 173;
      break;
    } else if (($call | 0) == 51) {
      $quant_0 = 0;
      label = 174;
      break;
    } else if (($call | 0) == 47) {
      label = 182;
      break;
    } else if (($call | 0) == 46) {
      label = 183;
      break;
    } else if (($call | 0) == 48) {
      label = 184;
      break;
    } else if (($call | 0) == 45) {
      $quant_1 = 0;
      label = 185;
      break;
    } else if (($call | 0) == 55) {
      label = 191;
      break;
    } else if (($call | 0) == 56) {
      label = 192;
      break;
    } else if (($call | 0) == 0) {
      label = 193;
      break;
    } else if (($call | 0) == 3) {
      label = 194;
      break;
    } else if (($call | 0) == 11) {
      label = 195;
      break;
    } else if (($call | 0) == 17) {
      label = 197;
      break;
    } else if (($call | 0) == 33) {
      label = 198;
      break;
    } else if (($call | 0) == 39) {
      label = 200;
      break;
    } else {
      label = 202;
      break;
    }
   case 15:
    $7 = HEAP32[$next_addr >> 2] | 0;
    $call16 = _processXmlDecl($parser, 0, $s_addr_0, $7) | 0;
    $cmp17 = ($call16 | 0) == 0;
    if ($cmp17) {
      label = 16;
      break;
    } else {
      $retval_0_ph = $call16;
      label = 207;
      break;
    }
   case 16:
    $8 = HEAP32[$m_encoding >> 2] | 0;
    $enc_addr_1532 = $8;
    label = 204;
    break;
   case 17:
    $9 = HEAP32[$m_startDoctypeDeclHandler >> 2] | 0;
    $tobool23 = ($9 | 0) == 0;
    if ($tobool23) {
      $handleDefault_0 = 1;
      label = 20;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $10 = HEAP32[$next_addr >> 2] | 0;
    $call25 = _poolStoreString($m_tempPool, $enc_addr_0, $s_addr_0, $10) | 0;
    HEAP32[$m_doctypeName >> 2] = $call25;
    $tobool27 = ($call25 | 0) == 0;
    if ($tobool27) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $11 = HEAP32[$ptr >> 2] | 0;
    HEAP32[$start >> 2] = $11;
    HEAP32[$m_doctypePubid >> 2] = 0;
    $handleDefault_0 = 0;
    label = 20;
    break;
   case 20:
    HEAP32[$m_doctypeSysid >> 2] = 0;
    $handleDefault_10 = $handleDefault_0;
    label = 201;
    break;
   case 21:
    $12 = HEAP32[$m_startDoctypeDeclHandler34 >> 2] | 0;
    $tobool35 = ($12 | 0) == 0;
    if ($tobool35) {
      label = 202;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $13 = HEAP32[$m_handlerArg >> 2] | 0;
    $14 = HEAP32[$m_doctypeName38 >> 2] | 0;
    $15 = HEAP32[$m_doctypeSysid39 >> 2] | 0;
    $16 = HEAP32[$m_doctypePubid40 >> 2] | 0;
    FUNCTION_TABLE_viiiii[$12 & 1023]($13, $14, $15, $16, 1);
    HEAP32[$m_doctypeName38 >> 2] = 0;
    _poolClear($m_tempPool42);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 23:
    HEAP8[$hasParamEntityRefs] = 1;
    $17 = HEAP32[$m_startDoctypeDeclHandler45 >> 2] | 0;
    $tobool46 = ($17 | 0) == 0;
    if ($tobool46) {
      label = 27;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $isPublicId = $enc_addr_0 + 52 | 0;
    $18 = HEAP32[$isPublicId >> 2] | 0;
    $19 = HEAP32[$next_addr >> 2] | 0;
    $call48 = FUNCTION_TABLE_iiiii[$18 & 1023]($enc_addr_0, $s_addr_0, $19, $eventPP_0_ph) | 0;
    $tobool49 = ($call48 | 0) == 0;
    if ($tobool49) {
      $retval_0_ph = 32;
      label = 207;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $minBytesPerChar = $enc_addr_0 + 64 | 0;
    $20 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $s_addr_0 + $20 | 0;
    $21 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg = -$20 | 0;
    $add_ptr54 = $21 + $idx_neg | 0;
    $call55 = _poolStoreString($m_tempPool52, $enc_addr_0, $add_ptr, $add_ptr54) | 0;
    $tobool56 = ($call55 | 0) == 0;
    if ($tobool56) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    _normalizePublicId($call55);
    $22 = HEAP32[$ptr60 >> 2] | 0;
    HEAP32[$start62 >> 2] = $22;
    HEAP32[$m_doctypePubid63 >> 2] = $call55;
    $handleDefault_1 = 0;
    label = 28;
    break;
   case 27:
    $isPublicId66 = $enc_addr_0 + 52 | 0;
    $23 = HEAP32[$isPublicId66 >> 2] | 0;
    $24 = HEAP32[$next_addr >> 2] | 0;
    $call67 = FUNCTION_TABLE_iiiii[$23 & 1023]($enc_addr_0, $s_addr_0, $24, $eventPP_0_ph) | 0;
    $tobool68 = ($call67 | 0) == 0;
    if ($tobool68) {
      $retval_0_ph = 32;
      label = 207;
      break;
    } else {
      $handleDefault_1 = 1;
      label = 28;
      break;
    }
   case 28:
    $25 = HEAP8[$keepProcessing] | 0;
    $tobool72 = $25 << 24 >> 24 == 0;
    if ($tobool72) {
      $handleDefault_10 = $handleDefault_1;
      label = 201;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $26 = HEAP32[$m_declEntity >> 2] | 0;
    $tobool74 = ($26 | 0) == 0;
    if ($tobool74) {
      $handleDefault_10 = $handleDefault_1;
      label = 201;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $minBytesPerChar76 = $enc_addr_0 + 64 | 0;
    $27 = HEAP32[$minBytesPerChar76 >> 2] | 0;
    $add_ptr77 = $s_addr_0 + $27 | 0;
    $28 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg79 = -$27 | 0;
    $add_ptr80 = $28 + $idx_neg79 | 0;
    $call81 = _poolStoreString($pool, $enc_addr_0, $add_ptr77, $add_ptr80) | 0;
    $tobool82 = ($call81 | 0) == 0;
    if ($tobool82) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    _normalizePublicId($call81);
    $29 = HEAP32[$m_declEntity >> 2] | 0;
    $publicId = $29 + 24 | 0;
    HEAP32[$publicId >> 2] = $call81;
    $30 = HEAP32[$ptr87 >> 2] | 0;
    HEAP32[$start89 >> 2] = $30;
    $31 = HEAP32[$m_entityDeclHandler >> 2] | 0;
    $tobool90 = ($31 | 0) == 0;
    $handleDefault_1_ = $tobool90 ? $handleDefault_1 : 0;
    $handleDefault_10 = $handleDefault_1_;
    label = 201;
    break;
   case 32:
    $32 = HEAP32[$m_doctypeName95 >> 2] | 0;
    $tobool96 = ($32 | 0) == 0;
    if ($tobool96) {
      $handleDefault_2 = 1;
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $33 = HEAP32[$m_startDoctypeDeclHandler98 >> 2] | 0;
    $34 = HEAP32[$m_handlerArg99 >> 2] | 0;
    $35 = HEAP32[$m_doctypeSysid101 >> 2] | 0;
    $36 = HEAP32[$m_doctypePubid102 >> 2] | 0;
    FUNCTION_TABLE_viiiii[$33 & 1023]($34, $32, $35, $36, 0);
    _poolClear($m_tempPool103);
    $handleDefault_2 = 0;
    label = 34;
    break;
   case 34:
    $37 = HEAP32[$m_endDoctypeDeclHandler >> 2] | 0;
    $tobool105 = ($37 | 0) == 0;
    if ($tobool105) {
      $handleDefault_10 = $handleDefault_2;
      label = 201;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $38 = HEAP32[$m_handlerArg108 >> 2] | 0;
    FUNCTION_TABLE_vi[$37 & 1023]($38);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 36:
    $m_processor = $parser + 264 | 0;
    HEAP32[$m_processor >> 2] = 122;
    $call111 = _contentProcessor($parser, $s_addr_0, $end, $nextPtr) | 0;
    $retval_0 = $call111;
    label = 208;
    break;
   case 37:
    $39 = HEAP32[$next_addr >> 2] | 0;
    $call113 = _getElementType($parser, $enc_addr_0, $s_addr_0, $39) | 0;
    HEAP32[$m_declElementType >> 2] = $call113;
    $tobool115 = ($call113 | 0) == 0;
    if ($tobool115) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 48;
      break;
    }
   case 38:
    $40 = HEAP32[$next_addr >> 2] | 0;
    $call119 = _getAttributeId($parser, $enc_addr_0, $s_addr_0, $40) | 0;
    HEAP32[$m_declAttributeId >> 2] = $call119;
    $tobool121 = ($call119 | 0) == 0;
    if ($tobool121) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    HEAP8[$m_declAttributeIsCdata] = 0;
    HEAP32[$m_declAttributeType >> 2] = 0;
    HEAP8[$m_declAttributeIsId] = 0;
    label = 48;
    break;
   case 40:
    HEAP8[$m_declAttributeIsCdata125] = 1;
    HEAP32[$m_declAttributeType126 >> 2] = 20616;
    label = 48;
    break;
   case 41:
    HEAP8[$m_declAttributeIsId128] = 1;
    HEAP32[$m_declAttributeType129 >> 2] = 20584;
    label = 48;
    break;
   case 42:
    HEAP32[$m_declAttributeType131 >> 2] = 20576;
    label = 48;
    break;
   case 43:
    HEAP32[$m_declAttributeType133 >> 2] = 20568;
    label = 48;
    break;
   case 44:
    HEAP32[$m_declAttributeType135 >> 2] = 20592;
    label = 48;
    break;
   case 45:
    HEAP32[$m_declAttributeType137 >> 2] = 20600;
    label = 48;
    break;
   case 46:
    HEAP32[$m_declAttributeType139 >> 2] = 20560;
    label = 48;
    break;
   case 47:
    HEAP32[$m_declAttributeType141 >> 2] = 20544;
    label = 48;
    break;
   case 48:
    $41 = HEAP8[$keepProcessing142] | 0;
    $tobool144 = $41 << 24 >> 24 == 0;
    if ($tobool144) {
      label = 202;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $42 = HEAP32[$m_attlistDeclHandler >> 2] | 0;
    $tobool146 = ($42 | 0) == 0;
    $_ = $tobool146 & 1;
    $handleDefault_10 = $_;
    label = 201;
    break;
   case 50:
    $43 = HEAP8[$keepProcessing150] | 0;
    $tobool152 = $43 << 24 >> 24 == 0;
    if ($tobool152) {
      label = 202;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $44 = HEAP32[$m_attlistDeclHandler154 >> 2] | 0;
    $tobool155 = ($44 | 0) == 0;
    if ($tobool155) {
      label = 202;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $45 = HEAP32[$m_declAttributeType157 >> 2] | 0;
    $tobool158 = ($45 | 0) == 0;
    if ($tobool158) {
      label = 53;
      break;
    } else {
      $prefix_0 = 20536;
      label = 54;
      break;
    }
   case 53:
    $cmp161 = ($call | 0) == 32;
    $cond = $cmp161 ? 20512 : 20528;
    $prefix_0 = $cond;
    label = 54;
    break;
   case 54:
    $call165 = _poolAppendString($m_tempPool164, $prefix_0) | 0;
    $tobool166 = ($call165 | 0) == 0;
    if ($tobool166) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $46 = HEAP32[$next_addr >> 2] | 0;
    $call170 = _poolAppend($m_tempPool164, $enc_addr_0, $s_addr_0, $46) | 0;
    $tobool171 = ($call170 | 0) == 0;
    if ($tobool171) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $47 = HEAP32[$start175 >> 2] | 0;
    HEAP32[$m_declAttributeType157 >> 2] = $47;
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 57:
    $48 = HEAP8[$keepProcessing179] | 0;
    $tobool180 = $48 << 24 >> 24 == 0;
    if ($tobool180) {
      label = 202;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $49 = HEAP32[$m_declElementType182 >> 2] | 0;
    $50 = HEAP32[$m_declAttributeId183 >> 2] | 0;
    $51 = HEAP8[$m_declAttributeIsCdata184] | 0;
    $52 = HEAP8[$m_declAttributeIsId185] | 0;
    $call186 = _defineAttribute($49, $50, $51, $52, 0, $parser) | 0;
    $tobool187 = ($call186 | 0) == 0;
    if ($tobool187) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $53 = HEAP32[$m_attlistDeclHandler190 >> 2] | 0;
    $tobool191 = ($53 | 0) == 0;
    if ($tobool191) {
      label = 202;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $54 = HEAP32[$m_declAttributeType193 >> 2] | 0;
    $tobool194 = ($54 | 0) == 0;
    if ($tobool194) {
      label = 202;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    $55 = HEAP8[$54] | 0;
    if (($55 << 24 >> 24 | 0) == 78) {
      label = 62;
      break;
    } else if (($55 << 24 >> 24 | 0) == 40) {
      label = 63;
      break;
    } else {
      label = 68;
      break;
    }
   case 62:
    $arrayidx = $54 + 1 | 0;
    $56 = HEAP8[$arrayidx] | 0;
    $cmp207 = $56 << 24 >> 24 == 79;
    if ($cmp207) {
      label = 63;
      break;
    } else {
      label = 68;
      break;
    }
   case 63:
    $57 = HEAP32[$ptr211 >> 2] | 0;
    $58 = HEAP32[$end213 >> 2] | 0;
    $cmp214 = ($57 | 0) == ($58 | 0);
    if ($cmp214) {
      label = 64;
      break;
    } else {
      label = 65;
      break;
    }
   case 64:
    $call218 = _poolGrow($m_tempPool210) | 0;
    $tobool219 = $call218 << 24 >> 24 == 0;
    if ($tobool219) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $59 = HEAP32[$ptr211 >> 2] | 0;
    $incdec_ptr = $59 + 1 | 0;
    HEAP32[$ptr211 >> 2] = $incdec_ptr;
    HEAP8[$59] = 41;
    $60 = HEAP32[$ptr211 >> 2] | 0;
    $61 = HEAP32[$end213 >> 2] | 0;
    $cmp227 = ($60 | 0) == ($61 | 0);
    if ($cmp227) {
      label = 66;
      break;
    } else {
      label = 67;
      break;
    }
   case 66:
    $call231 = _poolGrow($m_tempPool210) | 0;
    $tobool232 = $call231 << 24 >> 24 == 0;
    if ($tobool232) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $62 = HEAP32[$ptr211 >> 2] | 0;
    $incdec_ptr237 = $62 + 1 | 0;
    HEAP32[$ptr211 >> 2] = $incdec_ptr237;
    HEAP8[$62] = 0;
    $63 = HEAP32[$start241 >> 2] | 0;
    HEAP32[$m_declAttributeType193 >> 2] = $63;
    $64 = HEAP32[$ptr211 >> 2] | 0;
    HEAP32[$start241 >> 2] = $64;
    label = 68;
    break;
   case 68:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $65 = HEAP32[$m_attlistDeclHandler190 >> 2] | 0;
    $66 = HEAP32[$m_handlerArg249 >> 2] | 0;
    $67 = HEAP32[$m_declElementType182 >> 2] | 0;
    $name = $67 | 0;
    $68 = HEAP32[$name >> 2] | 0;
    $69 = HEAP32[$m_declAttributeId183 >> 2] | 0;
    $name252 = $69 | 0;
    $70 = HEAP32[$name252 >> 2] | 0;
    $71 = HEAP32[$m_declAttributeType193 >> 2] | 0;
    $cmp254 = ($call | 0) == 36;
    $conv255 = $cmp254 & 1;
    FUNCTION_TABLE_viiiiii[$65 & 1023]($66, $68, $70, $71, 0, $conv255);
    _poolClear($m_tempPool256);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 69:
    $72 = HEAP8[$keepProcessing260] | 0;
    $tobool261 = $72 << 24 >> 24 == 0;
    if ($tobool261) {
      label = 202;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $73 = HEAP8[$m_declAttributeIsCdata264] | 0;
    $minBytesPerChar265 = $enc_addr_0 + 64 | 0;
    $74 = HEAP32[$minBytesPerChar265 >> 2] | 0;
    $add_ptr266 = $s_addr_0 + $74 | 0;
    $75 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg268 = -$74 | 0;
    $add_ptr269 = $75 + $idx_neg268 | 0;
    $call271 = _storeAttributeValue($parser, $enc_addr_0, $73, $add_ptr266, $add_ptr269, $pool270) | 0;
    $tobool272 = ($call271 | 0) == 0;
    if ($tobool272) {
      label = 71;
      break;
    } else {
      $retval_0_ph = $call271;
      label = 207;
      break;
    }
   case 71:
    $76 = HEAP32[$start276 >> 2] | 0;
    $77 = HEAP32[$ptr278 >> 2] | 0;
    HEAP32[$start276 >> 2] = $77;
    $78 = HEAP32[$m_declElementType281 >> 2] | 0;
    $79 = HEAP32[$m_declAttributeId282 >> 2] | 0;
    $80 = HEAP8[$m_declAttributeIsCdata264] | 0;
    $call284 = _defineAttribute($78, $79, $80, 0, $76, $parser) | 0;
    $tobool285 = ($call284 | 0) == 0;
    if ($tobool285) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 72;
      break;
    }
   case 72:
    $81 = HEAP32[$m_attlistDeclHandler288 >> 2] | 0;
    $tobool289 = ($81 | 0) == 0;
    if ($tobool289) {
      label = 202;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $82 = HEAP32[$m_declAttributeType291 >> 2] | 0;
    $tobool292 = ($82 | 0) == 0;
    if ($tobool292) {
      label = 202;
      break;
    } else {
      label = 74;
      break;
    }
   case 74:
    $83 = HEAP8[$82] | 0;
    if (($83 << 24 >> 24 | 0) == 78) {
      label = 75;
      break;
    } else if (($83 << 24 >> 24 | 0) == 40) {
      label = 76;
      break;
    } else {
      label = 81;
      break;
    }
   case 75:
    $arrayidx305 = $82 + 1 | 0;
    $84 = HEAP8[$arrayidx305] | 0;
    $cmp307 = $84 << 24 >> 24 == 79;
    if ($cmp307) {
      label = 76;
      break;
    } else {
      label = 81;
      break;
    }
   case 76:
    $85 = HEAP32[$ptr311 >> 2] | 0;
    $86 = HEAP32[$end313 >> 2] | 0;
    $cmp314 = ($85 | 0) == ($86 | 0);
    if ($cmp314) {
      label = 77;
      break;
    } else {
      label = 78;
      break;
    }
   case 77:
    $call318 = _poolGrow($m_tempPool310) | 0;
    $tobool319 = $call318 << 24 >> 24 == 0;
    if ($tobool319) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $87 = HEAP32[$ptr311 >> 2] | 0;
    $incdec_ptr324 = $87 + 1 | 0;
    HEAP32[$ptr311 >> 2] = $incdec_ptr324;
    HEAP8[$87] = 41;
    $88 = HEAP32[$ptr311 >> 2] | 0;
    $89 = HEAP32[$end313 >> 2] | 0;
    $cmp330 = ($88 | 0) == ($89 | 0);
    if ($cmp330) {
      label = 79;
      break;
    } else {
      label = 80;
      break;
    }
   case 79:
    $call334 = _poolGrow($m_tempPool310) | 0;
    $tobool335 = $call334 << 24 >> 24 == 0;
    if ($tobool335) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    $90 = HEAP32[$ptr311 >> 2] | 0;
    $incdec_ptr340 = $90 + 1 | 0;
    HEAP32[$ptr311 >> 2] = $incdec_ptr340;
    HEAP8[$90] = 0;
    $91 = HEAP32[$start344 >> 2] | 0;
    HEAP32[$m_declAttributeType291 >> 2] = $91;
    $92 = HEAP32[$ptr311 >> 2] | 0;
    HEAP32[$start344 >> 2] = $92;
    label = 81;
    break;
   case 81:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $93 = HEAP32[$m_attlistDeclHandler288 >> 2] | 0;
    $94 = HEAP32[$m_handlerArg352 >> 2] | 0;
    $95 = HEAP32[$m_declElementType281 >> 2] | 0;
    $name354 = $95 | 0;
    $96 = HEAP32[$name354 >> 2] | 0;
    $97 = HEAP32[$m_declAttributeId282 >> 2] | 0;
    $name356 = $97 | 0;
    $98 = HEAP32[$name356 >> 2] | 0;
    $99 = HEAP32[$m_declAttributeType291 >> 2] | 0;
    $cmp358 = ($call | 0) == 38;
    $conv359 = $cmp358 & 1;
    FUNCTION_TABLE_viiiiii[$93 & 1023]($94, $96, $98, $99, $76, $conv359);
    _poolClear($m_tempPool360);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 82:
    $100 = HEAP8[$keepProcessing364] | 0;
    $tobool365 = $100 << 24 >> 24 == 0;
    if ($tobool365) {
      label = 202;
      break;
    } else {
      label = 83;
      break;
    }
   case 83:
    $minBytesPerChar368 = $enc_addr_0 + 64 | 0;
    $101 = HEAP32[$minBytesPerChar368 >> 2] | 0;
    $add_ptr369 = $s_addr_0 + $101 | 0;
    $102 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg371 = -$101 | 0;
    $add_ptr372 = $102 + $idx_neg371 | 0;
    $call373 = _storeEntityValue($parser, $enc_addr_0, $add_ptr369, $add_ptr372) | 0;
    $103 = HEAP32[$m_declEntity374 >> 2] | 0;
    $tobool375 = ($103 | 0) == 0;
    $104 = HEAP32[$start377 >> 2] | 0;
    if ($tobool375) {
      label = 86;
      break;
    } else {
      label = 84;
      break;
    }
   case 84:
    $textPtr = $103 + 4 | 0;
    HEAP32[$textPtr >> 2] = $104;
    $105 = HEAP32[$ptr380 >> 2] | 0;
    $106 = HEAP32[$start377 >> 2] | 0;
    $sub_ptr_lhs_cast = $105;
    $sub_ptr_rhs_cast = $106;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $107 = HEAP32[$m_declEntity374 >> 2] | 0;
    $textLen = $107 + 8 | 0;
    HEAP32[$textLen >> 2] = $sub_ptr_sub;
    $108 = HEAP32[$ptr380 >> 2] | 0;
    HEAP32[$start377 >> 2] = $108;
    $109 = HEAP32[$m_entityDeclHandler388 >> 2] | 0;
    $tobool389 = ($109 | 0) == 0;
    if ($tobool389) {
      $handleDefault_3 = 1;
      label = 87;
      break;
    } else {
      label = 85;
      break;
    }
   case 85:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $110 = HEAP32[$m_entityDeclHandler388 >> 2] | 0;
    $111 = HEAP32[$m_handlerArg392 >> 2] | 0;
    $112 = HEAP32[$m_declEntity374 >> 2] | 0;
    $name394 = $112 | 0;
    $113 = HEAP32[$name394 >> 2] | 0;
    $is_param = $112 + 33 | 0;
    $114 = HEAP8[$is_param] | 0;
    $conv396 = $114 & 255;
    $textPtr398 = $112 + 4 | 0;
    $115 = HEAP32[$textPtr398 >> 2] | 0;
    $textLen400 = $112 + 8 | 0;
    $116 = HEAP32[$textLen400 >> 2] | 0;
    $117 = HEAP32[$m_curBase >> 2] | 0;
    FUNCTION_TABLE_viiiiiiiii[$110 & 1023]($111, $113, $conv396, $115, $116, $117, 0, 0, 0);
    $handleDefault_3 = 0;
    label = 87;
    break;
   case 86:
    HEAP32[$ptr406 >> 2] = $104;
    $handleDefault_3 = 1;
    label = 87;
    break;
   case 87:
    $cmp408 = ($call373 | 0) == 0;
    if ($cmp408) {
      $handleDefault_10 = $handleDefault_3;
      label = 201;
      break;
    } else {
      $retval_0_ph = $call373;
      label = 207;
      break;
    }
   case 88:
    HEAP8[$hasParamEntityRefs414] = 1;
    $118 = HEAP32[$m_startDoctypeDeclHandler415 >> 2] | 0;
    $tobool416 = ($118 | 0) == 0;
    if ($tobool416) {
      $handleDefault_4 = 1;
      label = 91;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $minBytesPerChar419 = $enc_addr_0 + 64 | 0;
    $119 = HEAP32[$minBytesPerChar419 >> 2] | 0;
    $add_ptr420 = $s_addr_0 + $119 | 0;
    $120 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg422 = -$119 | 0;
    $add_ptr423 = $120 + $idx_neg422 | 0;
    $call424 = _poolStoreString($m_tempPool418, $enc_addr_0, $add_ptr420, $add_ptr423) | 0;
    HEAP32[$m_doctypeSysid425 >> 2] = $call424;
    $cmp427 = ($call424 | 0) == 0;
    if ($cmp427) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 90;
      break;
    }
   case 90:
    $121 = HEAP32[$ptr432 >> 2] | 0;
    HEAP32[$start434 >> 2] = $121;
    $handleDefault_4 = 0;
    label = 91;
    break;
   case 91:
    $122 = HEAP8[$standalone] | 0;
    $tobool436 = $122 << 24 >> 24 == 0;
    if ($tobool436) {
      label = 92;
      break;
    } else {
      $handleDefault_10 = $handleDefault_4;
      label = 201;
      break;
    }
   case 92:
    $123 = HEAP32[$m_notStandaloneHandler >> 2] | 0;
    $tobool438 = ($123 | 0) == 0;
    if ($tobool438) {
      $handleDefault_10 = $handleDefault_4;
      label = 201;
      break;
    } else {
      label = 93;
      break;
    }
   case 93:
    $124 = HEAP32[$m_handlerArg441 >> 2] | 0;
    $call442 = FUNCTION_TABLE_ii[$123 & 1023]($124) | 0;
    $tobool443 = ($call442 | 0) == 0;
    if ($tobool443) {
      $retval_0_ph = 22;
      label = 207;
      break;
    } else {
      $handleDefault_10 = $handleDefault_4;
      label = 201;
      break;
    }
   case 94:
    $125 = HEAP8[$keepProcessing447] | 0;
    $tobool449 = $125 << 24 >> 24 == 0;
    if ($tobool449) {
      label = 202;
      break;
    } else {
      label = 95;
      break;
    }
   case 95:
    $126 = HEAP32[$m_declEntity451 >> 2] | 0;
    $tobool452 = ($126 | 0) == 0;
    if ($tobool452) {
      label = 202;
      break;
    } else {
      label = 96;
      break;
    }
   case 96:
    $minBytesPerChar455 = $enc_addr_0 + 64 | 0;
    $127 = HEAP32[$minBytesPerChar455 >> 2] | 0;
    $add_ptr456 = $s_addr_0 + $127 | 0;
    $128 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg458 = -$127 | 0;
    $add_ptr459 = $128 + $idx_neg458 | 0;
    $call460 = _poolStoreString($pool454, $enc_addr_0, $add_ptr456, $add_ptr459) | 0;
    $129 = HEAP32[$m_declEntity451 >> 2] | 0;
    $systemId = $129 + 16 | 0;
    HEAP32[$systemId >> 2] = $call460;
    $130 = HEAP32[$m_declEntity451 >> 2] | 0;
    $systemId463 = $130 + 16 | 0;
    $131 = HEAP32[$systemId463 >> 2] | 0;
    $tobool464 = ($131 | 0) == 0;
    if ($tobool464) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 97;
      break;
    }
   case 97:
    $132 = HEAP32[$m_curBase467 >> 2] | 0;
    $base = $130 + 20 | 0;
    HEAP32[$base >> 2] = $132;
    $133 = HEAP32[$ptr470 >> 2] | 0;
    HEAP32[$start472 >> 2] = $133;
    $134 = HEAP32[$m_entityDeclHandler473 >> 2] | 0;
    $tobool474 = ($134 | 0) == 0;
    $_515 = $tobool474 & 1;
    $handleDefault_10 = $_515;
    label = 201;
    break;
   case 98:
    $135 = HEAP8[$keepProcessing479] | 0;
    $tobool481 = $135 << 24 >> 24 == 0;
    if ($tobool481) {
      label = 202;
      break;
    } else {
      label = 99;
      break;
    }
   case 99:
    $136 = HEAP32[$m_declEntity483 >> 2] | 0;
    $tobool484 = ($136 | 0) == 0;
    if ($tobool484) {
      label = 202;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $137 = HEAP32[$m_entityDeclHandler486 >> 2] | 0;
    $tobool487 = ($137 | 0) == 0;
    if ($tobool487) {
      label = 202;
      break;
    } else {
      label = 101;
      break;
    }
   case 101:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $138 = HEAP32[$m_entityDeclHandler486 >> 2] | 0;
    $139 = HEAP32[$m_handlerArg490 >> 2] | 0;
    $140 = HEAP32[$m_declEntity483 >> 2] | 0;
    $name492 = $140 | 0;
    $141 = HEAP32[$name492 >> 2] | 0;
    $is_param494 = $140 + 33 | 0;
    $142 = HEAP8[$is_param494] | 0;
    $conv495 = $142 & 255;
    $base497 = $140 + 20 | 0;
    $143 = HEAP32[$base497 >> 2] | 0;
    $systemId499 = $140 + 16 | 0;
    $144 = HEAP32[$systemId499 >> 2] | 0;
    $publicId501 = $140 + 24 | 0;
    $145 = HEAP32[$publicId501 >> 2] | 0;
    FUNCTION_TABLE_viiiiiiiii[$138 & 1023]($139, $141, $conv495, 0, 0, $143, $144, $145, 0);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 102:
    $146 = HEAP8[$keepProcessing504] | 0;
    $tobool506 = $146 << 24 >> 24 == 0;
    if ($tobool506) {
      label = 202;
      break;
    } else {
      label = 103;
      break;
    }
   case 103:
    $147 = HEAP32[$m_declEntity508 >> 2] | 0;
    $tobool509 = ($147 | 0) == 0;
    if ($tobool509) {
      label = 202;
      break;
    } else {
      label = 104;
      break;
    }
   case 104:
    $148 = HEAP32[$next_addr >> 2] | 0;
    $call512 = _poolStoreString($pool511, $enc_addr_0, $s_addr_0, $148) | 0;
    $149 = HEAP32[$m_declEntity508 >> 2] | 0;
    $notation = $149 + 28 | 0;
    HEAP32[$notation >> 2] = $call512;
    $150 = HEAP32[$m_declEntity508 >> 2] | 0;
    $notation515 = $150 + 28 | 0;
    $151 = HEAP32[$notation515 >> 2] | 0;
    $tobool516 = ($151 | 0) == 0;
    if ($tobool516) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 105;
      break;
    }
   case 105:
    $152 = HEAP32[$ptr520 >> 2] | 0;
    HEAP32[$start522 >> 2] = $152;
    $153 = HEAP32[$m_unparsedEntityDeclHandler >> 2] | 0;
    $tobool523 = ($153 | 0) == 0;
    if ($tobool523) {
      label = 107;
      break;
    } else {
      label = 106;
      break;
    }
   case 106:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $154 = HEAP32[$m_unparsedEntityDeclHandler >> 2] | 0;
    $155 = HEAP32[$m_handlerArg526 >> 2] | 0;
    $156 = HEAP32[$m_declEntity508 >> 2] | 0;
    $name528 = $156 | 0;
    $157 = HEAP32[$name528 >> 2] | 0;
    $base530 = $156 + 20 | 0;
    $158 = HEAP32[$base530 >> 2] | 0;
    $systemId532 = $156 + 16 | 0;
    $159 = HEAP32[$systemId532 >> 2] | 0;
    $publicId534 = $156 + 24 | 0;
    $160 = HEAP32[$publicId534 >> 2] | 0;
    $notation536 = $156 + 28 | 0;
    $161 = HEAP32[$notation536 >> 2] | 0;
    FUNCTION_TABLE_viiiiii[$154 & 1023]($155, $157, $158, $159, $160, $161);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 107:
    $162 = HEAP32[$m_entityDeclHandler538 >> 2] | 0;
    $tobool539 = ($162 | 0) == 0;
    if ($tobool539) {
      label = 202;
      break;
    } else {
      label = 108;
      break;
    }
   case 108:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $163 = HEAP32[$m_entityDeclHandler538 >> 2] | 0;
    $164 = HEAP32[$m_handlerArg542 >> 2] | 0;
    $165 = HEAP32[$m_declEntity508 >> 2] | 0;
    $name544 = $165 | 0;
    $166 = HEAP32[$name544 >> 2] | 0;
    $base546 = $165 + 20 | 0;
    $167 = HEAP32[$base546 >> 2] | 0;
    $systemId548 = $165 + 16 | 0;
    $168 = HEAP32[$systemId548 >> 2] | 0;
    $publicId550 = $165 + 24 | 0;
    $169 = HEAP32[$publicId550 >> 2] | 0;
    $notation552 = $165 + 28 | 0;
    $170 = HEAP32[$notation552 >> 2] | 0;
    FUNCTION_TABLE_viiiiiiiii[$163 & 1023]($164, $166, 0, 0, 0, $167, $168, $169, $170);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 109:
    $predefinedEntityName = $enc_addr_0 + 44 | 0;
    $171 = HEAP32[$predefinedEntityName >> 2] | 0;
    $172 = HEAP32[$next_addr >> 2] | 0;
    $call557 = FUNCTION_TABLE_iiii[$171 & 1023]($enc_addr_0, $s_addr_0, $172) | 0;
    $tobool558 = ($call557 | 0) == 0;
    if ($tobool558) {
      label = 111;
      break;
    } else {
      label = 110;
      break;
    }
   case 110:
    HEAP32[$m_declEntity560 >> 2] = 0;
    label = 202;
    break;
   case 111:
    $173 = HEAP8[$keepProcessing562] | 0;
    $tobool563 = $173 << 24 >> 24 == 0;
    if ($tobool563) {
      label = 119;
      break;
    } else {
      label = 112;
      break;
    }
   case 112:
    $174 = HEAP32[$next_addr >> 2] | 0;
    $call567 = _poolStoreString($pool566, $enc_addr_0, $s_addr_0, $174) | 0;
    $tobool568 = ($call567 | 0) == 0;
    if ($tobool568) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 113;
      break;
    }
   case 113:
    $call571 = _lookup($parser, $generalEntities, $call567, 36) | 0;
    $175 = $call571;
    HEAP32[$m_declEntity572 >> 2] = $175;
    $tobool574 = ($call571 | 0) == 0;
    if ($tobool574) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 114;
      break;
    }
   case 114:
    $name578 = $call571 | 0;
    $176 = HEAP32[$name578 >> 2] | 0;
    $cmp579 = ($176 | 0) == ($call567 | 0);
    if ($cmp579) {
      label = 116;
      break;
    } else {
      label = 115;
      break;
    }
   case 115:
    $177 = HEAP32[$start583 >> 2] | 0;
    HEAP32[$ptr585 >> 2] = $177;
    HEAP32[$m_declEntity572 >> 2] = 0;
    label = 202;
    break;
   case 116:
    $178 = HEAP32[$ptr589 >> 2] | 0;
    HEAP32[$start591 >> 2] = $178;
    $179 = HEAP32[$m_declEntity572 >> 2] | 0;
    $publicId593 = $179 + 24 | 0;
    HEAP32[$publicId593 >> 2] = 0;
    $180 = HEAP32[$m_declEntity572 >> 2] | 0;
    $is_param595 = $180 + 33 | 0;
    HEAP8[$is_param595] = 0;
    $181 = HEAP32[$m_parentParser >> 2] | 0;
    $tobool596 = ($181 | 0) == 0;
    if ($tobool596) {
      label = 117;
      break;
    } else {
      $183 = 0;
      label = 118;
      break;
    }
   case 117:
    $182 = HEAP32[$m_openInternalEntities597 >> 2] | 0;
    $phitmp = ($182 | 0) == 0;
    $phitmp514 = $phitmp & 1;
    $183 = $phitmp514;
    label = 118;
    break;
   case 118:
    $184 = HEAP32[$m_declEntity572 >> 2] | 0;
    $is_internal = $184 + 34 | 0;
    HEAP8[$is_internal] = $183;
    $185 = HEAP32[$m_entityDeclHandler601 >> 2] | 0;
    $tobool602 = ($185 | 0) == 0;
    $_516 = $tobool602 & 1;
    $handleDefault_10 = $_516;
    label = 201;
    break;
   case 119:
    $186 = HEAP32[$start608 >> 2] | 0;
    HEAP32[$ptr610 >> 2] = $186;
    HEAP32[$m_declEntity611 >> 2] = 0;
    label = 202;
    break;
   case 120:
    HEAP32[$m_declEntity614 >> 2] = 0;
    label = 202;
    break;
   case 121:
    HEAP32[$m_declNotationPublicId >> 2] = 0;
    HEAP32[$m_declNotationName >> 2] = 0;
    $187 = HEAP32[$m_notationDeclHandler >> 2] | 0;
    $tobool616 = ($187 | 0) == 0;
    if ($tobool616) {
      label = 202;
      break;
    } else {
      label = 122;
      break;
    }
   case 122:
    $188 = HEAP32[$next_addr >> 2] | 0;
    $call619 = _poolStoreString($m_tempPool618, $enc_addr_0, $s_addr_0, $188) | 0;
    HEAP32[$m_declNotationName >> 2] = $call619;
    $tobool622 = ($call619 | 0) == 0;
    if ($tobool622) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 123;
      break;
    }
   case 123:
    $189 = HEAP32[$ptr626 >> 2] | 0;
    HEAP32[$start628 >> 2] = $189;
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 124:
    $isPublicId631 = $enc_addr_0 + 52 | 0;
    $190 = HEAP32[$isPublicId631 >> 2] | 0;
    $191 = HEAP32[$next_addr >> 2] | 0;
    $call632 = FUNCTION_TABLE_iiiii[$190 & 1023]($enc_addr_0, $s_addr_0, $191, $eventPP_0_ph) | 0;
    $tobool633 = ($call632 | 0) == 0;
    if ($tobool633) {
      $retval_0_ph = 32;
      label = 207;
      break;
    } else {
      label = 125;
      break;
    }
   case 125:
    $192 = HEAP32[$m_declNotationName636 >> 2] | 0;
    $tobool637 = ($192 | 0) == 0;
    if ($tobool637) {
      label = 202;
      break;
    } else {
      label = 126;
      break;
    }
   case 126:
    $minBytesPerChar641 = $enc_addr_0 + 64 | 0;
    $193 = HEAP32[$minBytesPerChar641 >> 2] | 0;
    $add_ptr642 = $s_addr_0 + $193 | 0;
    $194 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg644 = -$193 | 0;
    $add_ptr645 = $194 + $idx_neg644 | 0;
    $call646 = _poolStoreString($m_tempPool640, $enc_addr_0, $add_ptr642, $add_ptr645) | 0;
    $tobool647 = ($call646 | 0) == 0;
    if ($tobool647) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 127;
      break;
    }
   case 127:
    _normalizePublicId($call646);
    HEAP32[$m_declNotationPublicId650 >> 2] = $call646;
    $195 = HEAP32[$ptr652 >> 2] | 0;
    HEAP32[$start654 >> 2] = $195;
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 128:
    $196 = HEAP32[$m_declNotationName657 >> 2] | 0;
    $tobool658 = ($196 | 0) == 0;
    if ($tobool658) {
      $handleDefault_5 = 1;
      label = 132;
      break;
    } else {
      label = 129;
      break;
    }
   case 129:
    $197 = HEAP32[$m_notationDeclHandler660 >> 2] | 0;
    $tobool661 = ($197 | 0) == 0;
    if ($tobool661) {
      $handleDefault_5 = 1;
      label = 132;
      break;
    } else {
      label = 130;
      break;
    }
   case 130:
    $minBytesPerChar665 = $enc_addr_0 + 64 | 0;
    $198 = HEAP32[$minBytesPerChar665 >> 2] | 0;
    $add_ptr666 = $s_addr_0 + $198 | 0;
    $199 = HEAP32[$next_addr >> 2] | 0;
    $idx_neg668 = -$198 | 0;
    $add_ptr669 = $199 + $idx_neg668 | 0;
    $call670 = _poolStoreString($m_tempPool664, $enc_addr_0, $add_ptr666, $add_ptr669) | 0;
    $tobool671 = ($call670 | 0) == 0;
    if ($tobool671) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 131;
      break;
    }
   case 131:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $200 = HEAP32[$m_notationDeclHandler660 >> 2] | 0;
    $201 = HEAP32[$m_handlerArg675 >> 2] | 0;
    $202 = HEAP32[$m_declNotationName657 >> 2] | 0;
    $203 = HEAP32[$m_curBase677 >> 2] | 0;
    $204 = HEAP32[$m_declNotationPublicId678 >> 2] | 0;
    FUNCTION_TABLE_viiiii[$200 & 1023]($201, $202, $203, $call670, $204);
    $handleDefault_5 = 0;
    label = 132;
    break;
   case 132:
    _poolClear($m_tempPool680);
    $handleDefault_10 = $handleDefault_5;
    label = 201;
    break;
   case 133:
    $205 = HEAP32[$m_declNotationPublicId682 >> 2] | 0;
    $tobool683 = ($205 | 0) == 0;
    if ($tobool683) {
      $handleDefault_6 = 1;
      label = 136;
      break;
    } else {
      label = 134;
      break;
    }
   case 134:
    $206 = HEAP32[$m_notationDeclHandler685 >> 2] | 0;
    $tobool686 = ($206 | 0) == 0;
    if ($tobool686) {
      $handleDefault_6 = 1;
      label = 136;
      break;
    } else {
      label = 135;
      break;
    }
   case 135:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $207 = HEAP32[$m_notationDeclHandler685 >> 2] | 0;
    $208 = HEAP32[$m_handlerArg689 >> 2] | 0;
    $209 = HEAP32[$m_declNotationName690 >> 2] | 0;
    $210 = HEAP32[$m_curBase691 >> 2] | 0;
    $211 = HEAP32[$m_declNotationPublicId682 >> 2] | 0;
    FUNCTION_TABLE_viiiii[$207 & 1023]($208, $209, $210, 0, $211);
    $handleDefault_6 = 0;
    label = 136;
    break;
   case 136:
    _poolClear($m_tempPool694);
    $handleDefault_10 = $handleDefault_6;
    label = 201;
    break;
   case 137:
    if (($tok_addr_1 | 0) == 12) {
      label = 138;
      break;
    } else if (($tok_addr_1 | 0) == 28) {
      $retval_0 = 10;
      label = 208;
      break;
    } else {
      label = 139;
      break;
    }
   case 138:
    $retval_0 = 17;
    label = 208;
    break;
   case 139:
    $retval_0 = 2;
    label = 208;
    break;
   case 140:
    $212 = HEAP32[$level >> 2] | 0;
    $213 = HEAP32[$m_groupSize >> 2] | 0;
    $cmp701 = $212 >>> 0 < $213 >>> 0;
    if ($cmp701) {
      label = 147;
      break;
    } else {
      label = 141;
      break;
    }
   case 141:
    $tobool705 = ($213 | 0) == 0;
    if ($tobool705) {
      label = 146;
      break;
    } else {
      label = 142;
      break;
    }
   case 142:
    $214 = HEAP32[$realloc_fcn >> 2] | 0;
    $215 = HEAP32[$m_groupConnector >> 2] | 0;
    $mul = $213 << 1;
    HEAP32[$m_groupSize >> 2] = $mul;
    $call708 = FUNCTION_TABLE_iii[$214 & 1023]($215, $mul) | 0;
    $cmp709 = ($call708 | 0) == 0;
    if ($cmp709) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 143;
      break;
    }
   case 143:
    HEAP32[$m_groupConnector >> 2] = $call708;
    $216 = HEAP32[$scaffIndex >> 2] | 0;
    $tobool714 = ($216 | 0) == 0;
    if ($tobool714) {
      label = 147;
      break;
    } else {
      label = 144;
      break;
    }
   case 144:
    $217 = HEAP32[$realloc_fcn >> 2] | 0;
    $218 = $216;
    $219 = HEAP32[$m_groupSize >> 2] | 0;
    $mul721 = $219 << 2;
    $call722 = FUNCTION_TABLE_iii[$217 & 1023]($218, $mul721) | 0;
    $cmp723 = ($call722 | 0) == 0;
    if ($cmp723) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 145;
      break;
    }
   case 145:
    $220 = $call722;
    HEAP32[$scaffIndex >> 2] = $220;
    label = 147;
    break;
   case 146:
    $221 = HEAP32[$malloc_fcn >> 2] | 0;
    HEAP32[$m_groupSize >> 2] = 32;
    $call732 = FUNCTION_TABLE_ii[$221 & 1023](32) | 0;
    HEAP32[$m_groupConnector733 >> 2] = $call732;
    $tobool735 = ($call732 | 0) == 0;
    if ($tobool735) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 147;
      break;
    }
   case 147:
    $222 = HEAP32[$level >> 2] | 0;
    $223 = HEAP32[$m_groupConnector742 >> 2] | 0;
    $arrayidx743 = $223 + $222 | 0;
    HEAP8[$arrayidx743] = 0;
    $224 = HEAP8[$in_eldecl] | 0;
    $tobool744 = $224 << 24 >> 24 == 0;
    if ($tobool744) {
      label = 202;
      break;
    } else {
      label = 148;
      break;
    }
   case 148:
    $call746 = _nextScaffoldPart($parser) | 0;
    $cmp747 = ($call746 | 0) < 0;
    if ($cmp747) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 149;
      break;
    }
   case 149:
    $225 = HEAP32[$scaffLevel >> 2] | 0;
    $226 = HEAP32[$scaffIndex751 >> 2] | 0;
    $arrayidx752 = $226 + ($225 << 2) | 0;
    HEAP32[$arrayidx752 >> 2] = $call746;
    $227 = HEAP32[$scaffLevel >> 2] | 0;
    $inc = $227 + 1 | 0;
    HEAP32[$scaffLevel >> 2] = $inc;
    $228 = HEAP32[$scaffold >> 2] | 0;
    $type = $228 + ($call746 * 28 & -1) | 0;
    HEAP32[$type >> 2] = 6;
    $229 = HEAP32[$m_elementDeclHandler >> 2] | 0;
    $tobool755 = ($229 | 0) == 0;
    $_517 = $tobool755 & 1;
    $handleDefault_10 = $_517;
    label = 201;
    break;
   case 150:
    $230 = HEAP32[$level761 >> 2] | 0;
    $231 = HEAP32[$m_groupConnector762 >> 2] | 0;
    $arrayidx763 = $231 + $230 | 0;
    $232 = HEAP8[$arrayidx763] | 0;
    $cmp765 = $232 << 24 >> 24 == 124;
    if ($cmp765) {
      $retval_0_ph = 2;
      label = 207;
      break;
    } else {
      label = 151;
      break;
    }
   case 151:
    HEAP8[$arrayidx763] = 44;
    $233 = HEAP8[$in_eldecl773] | 0;
    $tobool775 = $233 << 24 >> 24 == 0;
    if ($tobool775) {
      label = 202;
      break;
    } else {
      label = 152;
      break;
    }
   case 152:
    $234 = HEAP32[$m_elementDeclHandler777 >> 2] | 0;
    $tobool778 = ($234 | 0) == 0;
    $_518 = $tobool778 & 1;
    $handleDefault_10 = $_518;
    label = 201;
    break;
   case 153:
    $235 = HEAP32[$level783 >> 2] | 0;
    $236 = HEAP32[$m_groupConnector784 >> 2] | 0;
    $arrayidx785 = $236 + $235 | 0;
    $237 = HEAP8[$arrayidx785] | 0;
    $cmp787 = $237 << 24 >> 24 == 44;
    if ($cmp787) {
      $retval_0_ph = 2;
      label = 207;
      break;
    } else {
      label = 154;
      break;
    }
   case 154:
    $238 = HEAP8[$in_eldecl791] | 0;
    $tobool793 = $238 << 24 >> 24 != 0;
    $tobool799 = $237 << 24 >> 24 == 0;
    $or_cond519 = $tobool793 & $tobool799;
    if ($or_cond519) {
      label = 155;
      break;
    } else {
      $handleDefault_7 = 1;
      label = 157;
      break;
    }
   case 155:
    $239 = HEAP32[$scaffLevel801 >> 2] | 0;
    $sub802 = $239 - 1 | 0;
    $240 = HEAP32[$scaffIndex803 >> 2] | 0;
    $arrayidx804 = $240 + ($sub802 << 2) | 0;
    $241 = HEAP32[$arrayidx804 >> 2] | 0;
    $242 = HEAP32[$scaffold805 >> 2] | 0;
    $type807 = $242 + ($241 * 28 & -1) | 0;
    $243 = HEAP32[$type807 >> 2] | 0;
    $cmp808 = ($243 | 0) == 3;
    if ($cmp808) {
      $handleDefault_7 = 1;
      label = 157;
      break;
    } else {
      label = 156;
      break;
    }
   case 156:
    HEAP32[$type807 >> 2] = 5;
    $244 = HEAP32[$m_elementDeclHandler818 >> 2] | 0;
    $tobool819 = ($244 | 0) == 0;
    $_520 = $tobool819 & 1;
    $handleDefault_7 = $_520;
    label = 157;
    break;
   case 157:
    $245 = HEAP32[$level783 >> 2] | 0;
    $246 = HEAP32[$m_groupConnector784 >> 2] | 0;
    $arrayidx826 = $246 + $245 | 0;
    HEAP8[$arrayidx826] = 124;
    $handleDefault_10 = $handleDefault_7;
    label = 201;
    break;
   case 158:
    $247 = HEAP8[$standalone828] | 0;
    $tobool829 = $247 << 24 >> 24 == 0;
    if ($tobool829) {
      label = 159;
      break;
    } else {
      label = 202;
      break;
    }
   case 159:
    $248 = HEAP32[$m_notStandaloneHandler831 >> 2] | 0;
    $tobool832 = ($248 | 0) == 0;
    if ($tobool832) {
      label = 202;
      break;
    } else {
      label = 160;
      break;
    }
   case 160:
    $249 = HEAP32[$m_handlerArg835 >> 2] | 0;
    $call836 = FUNCTION_TABLE_ii[$248 & 1023]($249) | 0;
    $tobool837 = ($call836 | 0) == 0;
    if ($tobool837) {
      $retval_0_ph = 22;
      label = 207;
      break;
    } else {
      label = 202;
      break;
    }
   case 161:
    $250 = HEAP32[$m_elementDeclHandler841 >> 2] | 0;
    $tobool842 = ($250 | 0) == 0;
    if ($tobool842) {
      label = 202;
      break;
    } else {
      label = 162;
      break;
    }
   case 162:
    $251 = HEAP32[$next_addr >> 2] | 0;
    $call844 = _getElementType($parser, $enc_addr_0, $s_addr_0, $251) | 0;
    HEAP32[$m_declElementType845 >> 2] = $call844;
    $tobool847 = ($call844 | 0) == 0;
    if ($tobool847) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 163;
      break;
    }
   case 163:
    HEAP32[$scaffLevel850 >> 2] = 0;
    HEAP32[$scaffCount >> 2] = 0;
    HEAP8[$in_eldecl851] = 1;
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 164:
    $252 = HEAP8[$in_eldecl854] | 0;
    $tobool855 = $252 << 24 >> 24 == 0;
    if ($tobool855) {
      label = 202;
      break;
    } else {
      label = 165;
      break;
    }
   case 165:
    $253 = HEAP32[$m_elementDeclHandler857 >> 2] | 0;
    $tobool858 = ($253 | 0) == 0;
    if ($tobool858) {
      $handleDefault_8 = 1;
      label = 168;
      break;
    } else {
      label = 166;
      break;
    }
   case 166:
    $254 = HEAP32[$malloc_fcn861 >> 2] | 0;
    $call862 = FUNCTION_TABLE_ii[$254 & 1023](20) | 0;
    $tobool863 = ($call862 | 0) == 0;
    if ($tobool863) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 167;
      break;
    }
   case 167:
    $255 = $call862;
    $quant866 = $call862 + 4 | 0;
    $cmp868 = ($call | 0) == 41;
    $cond870 = $cmp868 ? 2 : 1;
    $type871 = $call862;
    _memset($quant866 | 0, 0, 16);
    HEAP32[$type871 >> 2] = $cond870;
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $256 = HEAP32[$m_elementDeclHandler857 >> 2] | 0;
    $257 = HEAP32[$m_handlerArg873 >> 2] | 0;
    $258 = HEAP32[$m_declElementType874 >> 2] | 0;
    $name875 = $258 | 0;
    $259 = HEAP32[$name875 >> 2] | 0;
    FUNCTION_TABLE_viii[$256 & 1023]($257, $259, $255);
    $handleDefault_8 = 0;
    label = 168;
    break;
   case 168:
    HEAP8[$in_eldecl854] = 0;
    $handleDefault_10 = $handleDefault_8;
    label = 201;
    break;
   case 169:
    $260 = HEAP8[$in_eldecl880] | 0;
    $tobool881 = $260 << 24 >> 24 == 0;
    if ($tobool881) {
      label = 202;
      break;
    } else {
      label = 170;
      break;
    }
   case 170:
    $261 = HEAP32[$scaffLevel883 >> 2] | 0;
    $sub884 = $261 - 1 | 0;
    $262 = HEAP32[$scaffIndex885 >> 2] | 0;
    $arrayidx886 = $262 + ($sub884 << 2) | 0;
    $263 = HEAP32[$arrayidx886 >> 2] | 0;
    $264 = HEAP32[$scaffold887 >> 2] | 0;
    $type889 = $264 + ($263 * 28 & -1) | 0;
    HEAP32[$type889 >> 2] = 3;
    $265 = HEAP32[$m_elementDeclHandler890 >> 2] | 0;
    $tobool891 = ($265 | 0) == 0;
    $_521 = $tobool891 & 1;
    $handleDefault_10 = $_521;
    label = 201;
    break;
   case 171:
    $quant_0 = 1;
    label = 174;
    break;
   case 172:
    $quant_0 = 2;
    label = 174;
    break;
   case 173:
    $quant_0 = 3;
    label = 174;
    break;
   case 174:
    $266 = HEAP8[$in_eldecl899] | 0;
    $tobool900 = $266 << 24 >> 24 == 0;
    if ($tobool900) {
      label = 202;
      break;
    } else {
      label = 175;
      break;
    }
   case 175:
    $cmp903 = ($quant_0 | 0) == 0;
    $267 = HEAP32[$next_addr >> 2] | 0;
    if ($cmp903) {
      $cond910 = $267;
      label = 177;
      break;
    } else {
      label = 176;
      break;
    }
   case 176:
    $minBytesPerChar907 = $enc_addr_0 + 64 | 0;
    $268 = HEAP32[$minBytesPerChar907 >> 2] | 0;
    $idx_neg908 = -$268 | 0;
    $add_ptr909 = $267 + $idx_neg908 | 0;
    $cond910 = $add_ptr909;
    label = 177;
    break;
   case 177:
    $call912 = _nextScaffoldPart($parser) | 0;
    $cmp913 = ($call912 | 0) < 0;
    if ($cmp913) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 178;
      break;
    }
   case 178:
    $269 = HEAP32[$scaffold917 >> 2] | 0;
    $type919 = $269 + ($call912 * 28 & -1) | 0;
    HEAP32[$type919 >> 2] = 4;
    $270 = HEAP32[$scaffold917 >> 2] | 0;
    $quant922 = $270 + ($call912 * 28 & -1) + 4 | 0;
    HEAP32[$quant922 >> 2] = $quant_0;
    $call923 = _getElementType($parser, $enc_addr_0, $s_addr_0, $cond910) | 0;
    $tobool924 = ($call923 | 0) == 0;
    if ($tobool924) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 179;
      break;
    }
   case 179:
    $name927 = $call923 | 0;
    $271 = HEAP32[$name927 >> 2] | 0;
    $272 = HEAP32[$scaffold917 >> 2] | 0;
    $name930 = $272 + ($call912 * 28 & -1) + 8 | 0;
    HEAP32[$name930 >> 2] = $271;
    $nameLen_0 = 0;
    label = 180;
    break;
   case 180:
    $inc932 = $nameLen_0 + 1 | 0;
    $arrayidx933 = $271 + $nameLen_0 | 0;
    $273 = HEAP8[$arrayidx933] | 0;
    $tobool934 = $273 << 24 >> 24 == 0;
    if ($tobool934) {
      label = 181;
      break;
    } else {
      $nameLen_0 = $inc932;
      label = 180;
      break;
    }
   case 181:
    $274 = HEAP32[$contentStringLen >> 2] | 0;
    $add = $274 + $inc932 | 0;
    HEAP32[$contentStringLen >> 2] = $add;
    $275 = HEAP32[$m_elementDeclHandler935 >> 2] | 0;
    $tobool936 = ($275 | 0) == 0;
    $_522 = $tobool936 & 1;
    $handleDefault_10 = $_522;
    label = 201;
    break;
   case 182:
    $quant_1 = 1;
    label = 185;
    break;
   case 183:
    $quant_1 = 2;
    label = 185;
    break;
   case 184:
    $quant_1 = 3;
    label = 185;
    break;
   case 185:
    $276 = HEAP8[$in_eldecl944] | 0;
    $tobool945 = $276 << 24 >> 24 == 0;
    if ($tobool945) {
      label = 202;
      break;
    } else {
      label = 186;
      break;
    }
   case 186:
    $277 = HEAP32[$m_elementDeclHandler947 >> 2] | 0;
    $tobool948 = ($277 | 0) == 0;
    $_523 = $tobool948 & 1;
    $278 = HEAP32[$scaffLevel951 >> 2] | 0;
    $dec = $278 - 1 | 0;
    HEAP32[$scaffLevel951 >> 2] = $dec;
    $279 = HEAP32[$scaffIndex953 >> 2] | 0;
    $arrayidx954 = $279 + ($dec << 2) | 0;
    $280 = HEAP32[$arrayidx954 >> 2] | 0;
    $281 = HEAP32[$scaffold955 >> 2] | 0;
    $quant957 = $281 + ($280 * 28 & -1) + 4 | 0;
    HEAP32[$quant957 >> 2] = $quant_1;
    $282 = HEAP32[$scaffLevel951 >> 2] | 0;
    $cmp959 = ($282 | 0) == 0;
    if ($cmp959) {
      label = 187;
      break;
    } else {
      $handleDefault_10 = $_523;
      label = 201;
      break;
    }
   case 187:
    if ($tobool948) {
      label = 190;
      break;
    } else {
      label = 188;
      break;
    }
   case 188:
    $call964 = _build_model($parser) | 0;
    $tobool965 = ($call964 | 0) == 0;
    if ($tobool965) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      label = 189;
      break;
    }
   case 189:
    HEAP32[$eventEndPP_0_ph >> 2] = $s_addr_0;
    $283 = HEAP32[$m_elementDeclHandler947 >> 2] | 0;
    $284 = HEAP32[$m_handlerArg969 >> 2] | 0;
    $285 = HEAP32[$m_declElementType970 >> 2] | 0;
    $name971 = $285 | 0;
    $286 = HEAP32[$name971 >> 2] | 0;
    FUNCTION_TABLE_viii[$283 & 1023]($284, $286, $call964);
    label = 190;
    break;
   case 190:
    HEAP8[$in_eldecl944] = 0;
    HEAP32[$contentStringLen974 >> 2] = 0;
    $handleDefault_10 = $_523;
    label = 201;
    break;
   case 191:
    $287 = HEAP32[$next_addr >> 2] | 0;
    $call978 = _reportProcessingInstruction($parser, $enc_addr_0, $s_addr_0, $287) | 0;
    $tobool979 = ($call978 | 0) == 0;
    if ($tobool979) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      $enc_addr_1532 = $enc_addr_0;
      label = 204;
      break;
    }
   case 192:
    $288 = HEAP32[$next_addr >> 2] | 0;
    $call983 = _reportComment($parser, $enc_addr_0, $s_addr_0, $288) | 0;
    $tobool984 = ($call983 | 0) == 0;
    if ($tobool984) {
      $retval_0_ph = 1;
      label = 207;
      break;
    } else {
      $enc_addr_1532 = $enc_addr_0;
      label = 204;
      break;
    }
   case 193:
    $not_cond1 = ($tok_addr_1 | 0) != 14;
    $_524 = $not_cond1 & 1;
    $handleDefault_10 = $_524;
    label = 201;
    break;
   case 194:
    $289 = HEAP32[$m_startDoctypeDeclHandler991 >> 2] | 0;
    $tobool992 = ($289 | 0) == 0;
    $_525 = $tobool992 & 1;
    $handleDefault_10 = $_525;
    label = 201;
    break;
   case 195:
    $290 = HEAP8[$keepProcessing996] | 0;
    $tobool998 = $290 << 24 >> 24 == 0;
    if ($tobool998) {
      label = 202;
      break;
    } else {
      label = 196;
      break;
    }
   case 196:
    $291 = HEAP32[$m_entityDeclHandler1000 >> 2] | 0;
    $tobool1001 = ($291 | 0) == 0;
    $_526 = $tobool1001 & 1;
    $handleDefault_10 = $_526;
    label = 201;
    break;
   case 197:
    $292 = HEAP32[$m_notationDeclHandler1005 >> 2] | 0;
    $tobool1006 = ($292 | 0) == 0;
    $_527 = $tobool1006 & 1;
    $handleDefault_10 = $_527;
    label = 201;
    break;
   case 198:
    $293 = HEAP8[$keepProcessing1010] | 0;
    $tobool1012 = $293 << 24 >> 24 == 0;
    if ($tobool1012) {
      label = 202;
      break;
    } else {
      label = 199;
      break;
    }
   case 199:
    $294 = HEAP32[$m_attlistDeclHandler1014 >> 2] | 0;
    $tobool1015 = ($294 | 0) == 0;
    $_528 = $tobool1015 & 1;
    $handleDefault_10 = $_528;
    label = 201;
    break;
   case 200:
    $295 = HEAP32[$m_elementDeclHandler1019 >> 2] | 0;
    $tobool1020 = ($295 | 0) == 0;
    $_529 = $tobool1020 & 1;
    $handleDefault_10 = $_529;
    label = 201;
    break;
   case 201:
    $tobool1025 = $handleDefault_10 << 24 >> 24 == 0;
    if ($tobool1025) {
      $enc_addr_1532 = $enc_addr_0;
      label = 204;
      break;
    } else {
      label = 202;
      break;
    }
   case 202:
    $296 = HEAP32[$m_defaultHandler >> 2] | 0;
    $tobool1027 = ($296 | 0) == 0;
    if ($tobool1027) {
      $enc_addr_1532 = $enc_addr_0;
      label = 204;
      break;
    } else {
      label = 203;
      break;
    }
   case 203:
    $297 = HEAP32[$next_addr >> 2] | 0;
    _reportDefault($parser, $enc_addr_0, $s_addr_0, $297);
    $enc_addr_1532 = $enc_addr_0;
    label = 204;
    break;
   case 204:
    $298 = HEAP32[$parsing >> 2] | 0;
    if (($298 | 0) == 3) {
      label = 205;
      break;
    } else if (($298 | 0) == 2) {
      $retval_0_ph = 35;
      label = 207;
      break;
    } else {
      label = 206;
      break;
    }
   case 205:
    $299 = HEAP32[$next_addr >> 2] | 0;
    HEAP32[$nextPtr >> 2] = $299;
    $retval_0 = 0;
    label = 208;
    break;
   case 206:
    $300 = HEAP32[$next_addr >> 2] | 0;
    $arrayidx1033 = $enc_addr_1532 | 0;
    $301 = HEAP32[$arrayidx1033 >> 2] | 0;
    $call1034 = FUNCTION_TABLE_iiiii[$301 & 1023]($enc_addr_1532, $300, $end, $next_addr) | 0;
    $enc_addr_0 = $enc_addr_1532;
    $s_addr_0 = $300;
    $tok_addr_0 = $call1034;
    label = 6;
    break;
   case 207:
    $retval_0 = $retval_0_ph;
    label = 208;
    break;
   case 208:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _error($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  return 0;
}
function _normalizePublicId($publicId) {
  $publicId = $publicId | 0;
  var $0 = 0, $tobool14 = 0, $1 = 0, $s_016 = 0, $p_015 = 0, $conv = 0, $cmp = 0, $arrayidx = 0, $2 = 0, $cmp3 = 0, $incdec_ptr = 0, $incdec_ptr5 = 0, $p_1 = 0, $incdec_ptr6 = 0, $3 = 0, $tobool = 0, $cmp7 = 0, $arrayidx10 = 0, $4 = 0, $cmp12 = 0, $arrayidx10_p_0 = 0, $p_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$publicId] | 0;
    $tobool14 = $0 << 24 >> 24 == 0;
    if ($tobool14) {
      $p_2 = $publicId;
      label = 11;
      break;
    } else {
      $p_015 = $publicId;
      $s_016 = $publicId;
      $1 = $0;
      label = 3;
      break;
    }
   case 3:
    $conv = $1 << 24 >> 24;
    if (($conv | 0) == 32 | ($conv | 0) == 13 | ($conv | 0) == 10) {
      label = 4;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $cmp = ($p_015 | 0) == ($publicId | 0);
    if ($cmp) {
      $p_1 = $p_015;
      label = 8;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $arrayidx = $p_015 - 1 | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $cmp3 = $2 << 24 >> 24 == 32;
    if ($cmp3) {
      $p_1 = $p_015;
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $incdec_ptr = $p_015 + 1 | 0;
    HEAP8[$p_015] = 32;
    $p_1 = $incdec_ptr;
    label = 8;
    break;
   case 7:
    $incdec_ptr5 = $p_015 + 1 | 0;
    HEAP8[$p_015] = $1;
    $p_1 = $incdec_ptr5;
    label = 8;
    break;
   case 8:
    $incdec_ptr6 = $s_016 + 1 | 0;
    $3 = HEAP8[$incdec_ptr6] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      $p_015 = $p_1;
      $s_016 = $incdec_ptr6;
      $1 = $3;
      label = 3;
      break;
    }
   case 9:
    $cmp7 = ($p_1 | 0) == ($publicId | 0);
    if ($cmp7) {
      $p_2 = $p_1;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $arrayidx10 = $p_1 - 1 | 0;
    $4 = HEAP8[$arrayidx10] | 0;
    $cmp12 = $4 << 24 >> 24 == 32;
    $arrayidx10_p_0 = $cmp12 ? $arrayidx10 : $p_1;
    $p_2 = $arrayidx10_p_0;
    label = 11;
    break;
   case 11:
    HEAP8[$p_2] = 0;
    return;
  }
}
function _hashTableInit($p, $ms) {
  $p = $p | 0;
  $ms = $ms | 0;
  HEAP8[$p + 4 | 0] = 0;
  HEAP32[$p + 8 >> 2] = 0;
  HEAP32[$p + 12 >> 2] = 0;
  HEAP32[$p >> 2] = 0;
  HEAP32[$p + 16 >> 2] = $ms;
  return;
}
function _XmlPrologStateInit($state) {
  $state = $state | 0;
  HEAP32[$state >> 2] = 434;
  return;
}
function _common($state) {
  $state = $state | 0;
  HEAP32[$state >> 2] = 134;
  return;
}
function _getElementType($parser, $enc, $ptr, $end) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $m_dtd = 0, $0 = 0, $pool = 0, $call = 0, $tobool = 0, $elementTypes = 0, $call1 = 0, $1 = 0, $tobool2 = 0, $name5 = 0, $2 = 0, $cmp = 0, $start = 0, $3 = 0, $ptr9 = 0, $ptr11 = 0, $4 = 0, $start13 = 0, $call14 = 0, $tobool15 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $pool = $0 + 80 | 0;
    $call = _poolStoreString($pool, $enc, $ptr, $end) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $elementTypes = $0 + 20 | 0;
    $call1 = _lookup($parser, $elementTypes, $call, 24) | 0;
    $1 = $call1;
    $tobool2 = ($call1 | 0) == 0;
    if ($tobool2) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $name5 = $call1 | 0;
    $2 = HEAP32[$name5 >> 2] | 0;
    $cmp = ($2 | 0) == ($call | 0);
    if ($cmp) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $start = $0 + 96 | 0;
    $3 = HEAP32[$start >> 2] | 0;
    $ptr9 = $0 + 92 | 0;
    HEAP32[$ptr9 >> 2] = $3;
    label = 7;
    break;
   case 6:
    $ptr11 = $0 + 92 | 0;
    $4 = HEAP32[$ptr11 >> 2] | 0;
    $start13 = $0 + 96 | 0;
    HEAP32[$start13 >> 2] = $4;
    $call14 = _setElementTypePrefix($parser, $1) | 0;
    $tobool15 = ($call14 | 0) == 0;
    if ($tobool15) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $retval_0 = $1;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _poolAppendString($pool, $s) {
  $pool = $pool | 0;
  $s = $s | 0;
  var $0 = 0, $tobool6 = 0, $ptr = 0, $end = 0, $s_addr_07 = 0, $1 = 0, $2 = 0, $cmp = 0, $call = 0, $tobool1 = 0, $3 = 0, $4 = 0, $incdec_ptr = 0, $incdec_ptr3 = 0, $5 = 0, $tobool = 0, $start = 0, $6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$s] | 0;
    $tobool6 = $0 << 24 >> 24 == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $ptr = $pool + 12 | 0;
    $end = $pool + 8 | 0;
    $s_addr_07 = $s;
    label = 4;
    break;
   case 4:
    $1 = HEAP32[$ptr >> 2] | 0;
    $2 = HEAP32[$end >> 2] | 0;
    $cmp = ($1 | 0) == ($2 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call = _poolGrow($pool) | 0;
    $tobool1 = $call << 24 >> 24 == 0;
    if ($tobool1) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP8[$s_addr_07] | 0;
    $4 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $4 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$4] = $3;
    $incdec_ptr3 = $s_addr_07 + 1 | 0;
    $5 = HEAP8[$incdec_ptr3] | 0;
    $tobool = $5 << 24 >> 24 == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      $s_addr_07 = $incdec_ptr3;
      label = 4;
      break;
    }
   case 7:
    $start = $pool + 16 | 0;
    $6 = HEAP32[$start >> 2] | 0;
    $retval_0 = $6;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _defineAttribute($type, $attId, $isCdata, $isId, $value, $parser) {
  $type = $type | 0;
  $attId = $attId | 0;
  $isCdata = $isCdata | 0;
  $isId = $isId | 0;
  $value = $value | 0;
  $parser = $parser | 0;
  var $tobool = 0, $tobool1 = 0, $or_cond = 0, $nDefaultAtts = 0, $0 = 0, $defaultAtts = 0, $i_0 = 0, $cmp = 0, $1 = 0, $id = 0, $2 = 0, $cmp3 = 0, $inc = 0, $idAtt = 0, $3 = 0, $tobool8 = 0, $xmlns = 0, $4 = 0, $tobool10 = 0, $nDefaultAtts15 = 0, $5 = 0, $allocDefaultAtts = 0, $6 = 0, $cmp16 = 0, $cmp20 = 0, $malloc_fcn = 0, $7 = 0, $call = 0, $8 = 0, $defaultAtts25 = 0, $tobool27 = 0, $realloc_fcn = 0, $9 = 0, $defaultAtts33 = 0, $10 = 0, $11 = 0, $mul34 = 0, $call35 = 0, $cmp36 = 0, $12 = 0, $mul31 = 0, $defaultAtts44 = 0, $13 = 0, $14 = 0, $id46 = 0, $value47 = 0, $isCdata48 = 0, $tobool49 = 0, $maybeTokenized = 0, $15 = 0, $add = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tobool = ($value | 0) == 0;
    $tobool1 = $isId << 24 >> 24 == 0;
    $or_cond = $tobool & $tobool1;
    if ($or_cond) {
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $nDefaultAtts = $type + 12 | 0;
    $0 = HEAP32[$nDefaultAtts >> 2] | 0;
    $defaultAtts = $type + 20 | 0;
    $i_0 = 0;
    label = 4;
    break;
   case 4:
    $cmp = ($i_0 | 0) < ($0 | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $1 = HEAP32[$defaultAtts >> 2] | 0;
    $id = $1 + ($i_0 * 12 & -1) | 0;
    $2 = HEAP32[$id >> 2] | 0;
    $cmp3 = ($2 | 0) == ($attId | 0);
    $inc = $i_0 + 1 | 0;
    if ($cmp3) {
      $retval_0 = 1;
      label = 18;
      break;
    } else {
      $i_0 = $inc;
      label = 4;
      break;
    }
   case 6:
    if ($tobool1) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $idAtt = $type + 8 | 0;
    $3 = HEAP32[$idAtt >> 2] | 0;
    $tobool8 = ($3 | 0) == 0;
    if ($tobool8) {
      label = 8;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $xmlns = $attId + 9 | 0;
    $4 = HEAP8[$xmlns] | 0;
    $tobool10 = $4 << 24 >> 24 == 0;
    if ($tobool10) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    HEAP32[$idAtt >> 2] = $attId;
    label = 10;
    break;
   case 10:
    $nDefaultAtts15 = $type + 12 | 0;
    $5 = HEAP32[$nDefaultAtts15 >> 2] | 0;
    $allocDefaultAtts = $type + 16 | 0;
    $6 = HEAP32[$allocDefaultAtts >> 2] | 0;
    $cmp16 = ($5 | 0) == ($6 | 0);
    if ($cmp16) {
      label = 11;
      break;
    } else {
      label = 15;
      break;
    }
   case 11:
    $cmp20 = ($6 | 0) == 0;
    if ($cmp20) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAP32[$allocDefaultAtts >> 2] = 8;
    $malloc_fcn = $parser + 12 | 0;
    $7 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$7 & 1023](96) | 0;
    $8 = $call;
    $defaultAtts25 = $type + 20 | 0;
    HEAP32[$defaultAtts25 >> 2] = $8;
    $tobool27 = ($call | 0) == 0;
    if ($tobool27) {
      $retval_0 = 0;
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $realloc_fcn = $parser + 16 | 0;
    $9 = HEAP32[$realloc_fcn >> 2] | 0;
    $defaultAtts33 = $type + 20 | 0;
    $10 = HEAP32[$defaultAtts33 >> 2] | 0;
    $11 = $10;
    $mul34 = $6 * 24 & -1;
    $call35 = FUNCTION_TABLE_iii[$9 & 1023]($11, $mul34) | 0;
    $cmp36 = ($call35 | 0) == 0;
    if ($cmp36) {
      $retval_0 = 0;
      label = 18;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $12 = $call35;
    $mul31 = $6 << 1;
    HEAP32[$allocDefaultAtts >> 2] = $mul31;
    HEAP32[$defaultAtts33 >> 2] = $12;
    label = 15;
    break;
   case 15:
    $defaultAtts44 = $type + 20 | 0;
    $13 = HEAP32[$defaultAtts44 >> 2] | 0;
    $14 = HEAP32[$nDefaultAtts15 >> 2] | 0;
    $id46 = $13 + ($14 * 12 & -1) | 0;
    HEAP32[$id46 >> 2] = $attId;
    $value47 = $13 + ($14 * 12 & -1) + 8 | 0;
    HEAP32[$value47 >> 2] = $value;
    $isCdata48 = $13 + ($14 * 12 & -1) + 4 | 0;
    HEAP8[$isCdata48] = $isCdata;
    $tobool49 = $isCdata << 24 >> 24 == 0;
    if ($tobool49) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $maybeTokenized = $attId + 8 | 0;
    HEAP8[$maybeTokenized] = 1;
    label = 17;
    break;
   case 17:
    $15 = HEAP32[$nDefaultAtts15 >> 2] | 0;
    $add = $15 + 1 | 0;
    HEAP32[$nDefaultAtts15 >> 2] = $add;
    $retval_0 = 1;
    label = 18;
    break;
   case 18:
    return $retval_0 | 0;
  }
  return 0;
}
function _storeEntityValue($parser, $enc, $entityTextPtr, $entityTextEnd) {
  $parser = $parser | 0;
  $enc = $enc | 0;
  $entityTextPtr = $entityTextPtr | 0;
  $entityTextEnd = $entityTextEnd | 0;
  var $next = 0, $buf = 0, $m_dtd = 0, $0 = 0, $entityValuePool = 0, $blocks = 0, $1 = 0, $tobool = 0, $call = 0, $tobool1 = 0, $arrayidx = 0, $minBytesPerChar = 0, $end = 0, $ptr = 0, $charRefNumber = 0, $arraydecay = 0, $end38 = 0, $ptr39 = 0, $entityTextPtr_addr_0 = 0, $2 = 0, $call4 = 0, $m_eventPtr = 0, $3 = 0, $call7 = 0, $tobool8 = 0, $4 = 0, $add_ptr = 0, $5 = 0, $6 = 0, $cmp = 0, $call13 = 0, $tobool14 = 0, $7 = 0, $incdec_ptr = 0, $8 = 0, $call19 = 0, $cmp20 = 0, $m_encoding = 0, $9 = 0, $cmp22 = 0, $m_eventPtr24 = 0, $call27 = 0, $tobool28 = 0, $cmp3745 = 0, $m_encoding30 = 0, $10 = 0, $cmp31 = 0, $m_eventPtr33 = 0, $i_046 = 0, $11 = 0, $12 = 0, $cmp40 = 0, $call42 = 0, $tobool43 = 0, $arrayidx46 = 0, $13 = 0, $14 = 0, $incdec_ptr48 = 0, $inc = 0, $cmp37 = 0, $m_encoding50 = 0, $15 = 0, $cmp51 = 0, $m_eventPtr53 = 0, $m_encoding56 = 0, $16 = 0, $cmp57 = 0, $17 = 0, $m_eventPtr59 = 0, $m_encoding61 = 0, $18 = 0, $cmp62 = 0, $m_eventPtr64 = 0, $19 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $next = __stackBase__ | 0;
    $buf = __stackBase__ + 8 | 0;
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $entityValuePool = $0 + 104 | 0;
    $blocks = $entityValuePool | 0;
    $1 = HEAP32[$blocks >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _poolGrow($entityValuePool) | 0;
    $tobool1 = $call << 24 >> 24 == 0;
    if ($tobool1) {
      $retval_0 = 1;
      label = 29;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $arrayidx = $enc + 16 | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $end = $0 + 112 | 0;
    $ptr = $0 + 116 | 0;
    $charRefNumber = $enc + 40 | 0;
    $arraydecay = $buf | 0;
    $end38 = $0 + 112 | 0;
    $ptr39 = $0 + 116 | 0;
    $entityTextPtr_addr_0 = $entityTextPtr;
    label = 5;
    break;
   case 5:
    $2 = HEAP32[$arrayidx >> 2] | 0;
    $call4 = FUNCTION_TABLE_iiiii[$2 & 1023]($enc, $entityTextPtr_addr_0, $entityTextEnd, $next) | 0;
    if (($call4 | 0) == 28) {
      label = 6;
      break;
    } else if (($call4 | 0) == 9 | ($call4 | 0) == 6) {
      label = 7;
      break;
    } else if (($call4 | 0) == (-3 | 0)) {
      label = 8;
      break;
    } else if (($call4 | 0) == 7) {
      label = 9;
      break;
    } else if (($call4 | 0) == 10) {
      label = 12;
      break;
    } else if (($call4 | 0) == (-1 | 0)) {
      label = 22;
      break;
    } else if (($call4 | 0) == 0) {
      label = 24;
      break;
    } else if (($call4 | 0) == (-4 | 0)) {
      $retval_0 = 0;
      label = 29;
      break;
    } else {
      label = 26;
      break;
    }
   case 6:
    $m_eventPtr = $parser + 272 | 0;
    HEAP32[$m_eventPtr >> 2] = $entityTextPtr_addr_0;
    $retval_0 = 10;
    label = 29;
    break;
   case 7:
    $3 = HEAP32[$next >> 2] | 0;
    $call7 = _poolAppend($entityValuePool, $enc, $entityTextPtr_addr_0, $3) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      $retval_0 = 1;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 8:
    $4 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $entityTextPtr_addr_0 + $4 | 0;
    HEAP32[$next >> 2] = $add_ptr;
    label = 9;
    break;
   case 9:
    $5 = HEAP32[$end >> 2] | 0;
    $6 = HEAP32[$ptr >> 2] | 0;
    $cmp = ($5 | 0) == ($6 | 0);
    if ($cmp) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $call13 = _poolGrow($entityValuePool) | 0;
    $tobool14 = $call13 << 24 >> 24 == 0;
    if ($tobool14) {
      $retval_0 = 1;
      label = 29;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $7 = HEAP32[$ptr >> 2] | 0;
    $incdec_ptr = $7 + 1 | 0;
    HEAP32[$ptr >> 2] = $incdec_ptr;
    HEAP8[$7] = 10;
    label = 28;
    break;
   case 12:
    $8 = HEAP32[$charRefNumber >> 2] | 0;
    $call19 = FUNCTION_TABLE_iii[$8 & 1023]($enc, $entityTextPtr_addr_0) | 0;
    $cmp20 = ($call19 | 0) < 0;
    if ($cmp20) {
      label = 13;
      break;
    } else {
      label = 15;
      break;
    }
   case 13:
    $m_encoding = $parser + 144 | 0;
    $9 = HEAP32[$m_encoding >> 2] | 0;
    $cmp22 = ($9 | 0) == ($enc | 0);
    if ($cmp22) {
      label = 14;
      break;
    } else {
      $retval_0 = 14;
      label = 29;
      break;
    }
   case 14:
    $m_eventPtr24 = $parser + 272 | 0;
    HEAP32[$m_eventPtr24 >> 2] = $entityTextPtr_addr_0;
    $retval_0 = 14;
    label = 29;
    break;
   case 15:
    $call27 = _XmlUtf8Encode($call19, $arraydecay) | 0;
    $tobool28 = ($call27 | 0) == 0;
    if ($tobool28) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $cmp3745 = ($call27 | 0) > 0;
    if ($cmp3745) {
      $i_046 = 0;
      label = 19;
      break;
    } else {
      label = 28;
      break;
    }
   case 17:
    $m_encoding30 = $parser + 144 | 0;
    $10 = HEAP32[$m_encoding30 >> 2] | 0;
    $cmp31 = ($10 | 0) == ($enc | 0);
    if ($cmp31) {
      label = 18;
      break;
    } else {
      $retval_0 = 14;
      label = 29;
      break;
    }
   case 18:
    $m_eventPtr33 = $parser + 272 | 0;
    HEAP32[$m_eventPtr33 >> 2] = $entityTextPtr_addr_0;
    $retval_0 = 14;
    label = 29;
    break;
   case 19:
    $11 = HEAP32[$end38 >> 2] | 0;
    $12 = HEAP32[$ptr39 >> 2] | 0;
    $cmp40 = ($11 | 0) == ($12 | 0);
    if ($cmp40) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $call42 = _poolGrow($entityValuePool) | 0;
    $tobool43 = $call42 << 24 >> 24 == 0;
    if ($tobool43) {
      $retval_0 = 1;
      label = 29;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $arrayidx46 = $buf + $i_046 | 0;
    $13 = HEAP8[$arrayidx46] | 0;
    $14 = HEAP32[$ptr39 >> 2] | 0;
    $incdec_ptr48 = $14 + 1 | 0;
    HEAP32[$ptr39 >> 2] = $incdec_ptr48;
    HEAP8[$14] = $13;
    $inc = $i_046 + 1 | 0;
    $cmp37 = ($inc | 0) < ($call27 | 0);
    if ($cmp37) {
      $i_046 = $inc;
      label = 19;
      break;
    } else {
      label = 28;
      break;
    }
   case 22:
    $m_encoding50 = $parser + 144 | 0;
    $15 = HEAP32[$m_encoding50 >> 2] | 0;
    $cmp51 = ($15 | 0) == ($enc | 0);
    if ($cmp51) {
      label = 23;
      break;
    } else {
      $retval_0 = 4;
      label = 29;
      break;
    }
   case 23:
    $m_eventPtr53 = $parser + 272 | 0;
    HEAP32[$m_eventPtr53 >> 2] = $entityTextPtr_addr_0;
    $retval_0 = 4;
    label = 29;
    break;
   case 24:
    $m_encoding56 = $parser + 144 | 0;
    $16 = HEAP32[$m_encoding56 >> 2] | 0;
    $cmp57 = ($16 | 0) == ($enc | 0);
    if ($cmp57) {
      label = 25;
      break;
    } else {
      $retval_0 = 4;
      label = 29;
      break;
    }
   case 25:
    $17 = HEAP32[$next >> 2] | 0;
    $m_eventPtr59 = $parser + 272 | 0;
    HEAP32[$m_eventPtr59 >> 2] = $17;
    $retval_0 = 4;
    label = 29;
    break;
   case 26:
    $m_encoding61 = $parser + 144 | 0;
    $18 = HEAP32[$m_encoding61 >> 2] | 0;
    $cmp62 = ($18 | 0) == ($enc | 0);
    if ($cmp62) {
      label = 27;
      break;
    } else {
      $retval_0 = 23;
      label = 29;
      break;
    }
   case 27:
    $m_eventPtr64 = $parser + 272 | 0;
    HEAP32[$m_eventPtr64 >> 2] = $entityTextPtr_addr_0;
    $retval_0 = 23;
    label = 29;
    break;
   case 28:
    $19 = HEAP32[$next >> 2] | 0;
    $entityTextPtr_addr_0 = $19;
    label = 5;
    break;
   case 29:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _nextScaffoldPart($parser) {
  $parser = $parser | 0;
  var $m_dtd = 0, $0 = 0, $scaffIndex = 0, $1 = 0, $tobool = 0, $malloc_fcn = 0, $2 = 0, $m_groupSize = 0, $3 = 0, $mul = 0, $call = 0, $4 = 0, $tobool3 = 0, $scaffCount = 0, $5 = 0, $scaffSize = 0, $6 = 0, $cmp = 0, $scaffold = 0, $7 = 0, $tobool8 = 0, $realloc_fcn = 0, $8 = 0, $9 = 0, $mul14 = 0, $call15 = 0, $cmp16 = 0, $10 = 0, $mul20 = 0, $malloc_fcn22 = 0, $11 = 0, $call23 = 0, $cmp24 = 0, $storemerge = 0, $temp_0_in = 0, $temp_0 = 0, $12 = 0, $inc = 0, $scaffold32 = 0, $13 = 0, $scaffLevel = 0, $14 = 0, $tobool34 = 0, $sub = 0, $15 = 0, $arrayidx38 = 0, $16 = 0, $lastchild = 0, $17 = 0, $tobool41 = 0, $nextsib = 0, $childcnt = 0, $18 = 0, $tobool47 = 0, $firstchild = 0, $19 = 0, $inc52 = 0, $firstchild57 = 0, $20 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $scaffIndex = $0 + 164 | 0;
    $1 = HEAP32[$scaffIndex >> 2] | 0;
    $tobool = ($1 | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $malloc_fcn = $parser + 12 | 0;
    $2 = HEAP32[$malloc_fcn >> 2] | 0;
    $m_groupSize = $parser + 452 | 0;
    $3 = HEAP32[$m_groupSize >> 2] | 0;
    $mul = $3 << 2;
    $call = FUNCTION_TABLE_ii[$2 & 1023]($mul) | 0;
    $4 = $call;
    HEAP32[$scaffIndex >> 2] = $4;
    $tobool3 = ($call | 0) == 0;
    if ($tobool3) {
      $retval_0 = -1;
      label = 18;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[$4 >> 2] = 0;
    label = 5;
    break;
   case 5:
    $scaffCount = $0 + 156 | 0;
    $5 = HEAP32[$scaffCount >> 2] | 0;
    $scaffSize = $0 + 152 | 0;
    $6 = HEAP32[$scaffSize >> 2] | 0;
    $cmp = $5 >>> 0 < $6 >>> 0;
    if ($cmp) {
      label = 11;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $scaffold = $0 + 144 | 0;
    $7 = HEAP32[$scaffold >> 2] | 0;
    $tobool8 = ($7 | 0) == 0;
    if ($tobool8) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $realloc_fcn = $parser + 16 | 0;
    $8 = HEAP32[$realloc_fcn >> 2] | 0;
    $9 = $7;
    $mul14 = $6 * 56 & -1;
    $call15 = FUNCTION_TABLE_iii[$8 & 1023]($9, $mul14) | 0;
    $cmp16 = ($call15 | 0) == 0;
    if ($cmp16) {
      $retval_0 = -1;
      label = 18;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $10 = HEAP32[$scaffSize >> 2] | 0;
    $mul20 = $10 << 1;
    $temp_0_in = $call15;
    $storemerge = $mul20;
    label = 10;
    break;
   case 9:
    $malloc_fcn22 = $parser + 12 | 0;
    $11 = HEAP32[$malloc_fcn22 >> 2] | 0;
    $call23 = FUNCTION_TABLE_ii[$11 & 1023](896) | 0;
    $cmp24 = ($call23 | 0) == 0;
    if ($cmp24) {
      $retval_0 = -1;
      label = 18;
      break;
    } else {
      $temp_0_in = $call23;
      $storemerge = 32;
      label = 10;
      break;
    }
   case 10:
    $temp_0 = $temp_0_in;
    HEAP32[$scaffSize >> 2] = $storemerge;
    HEAP32[$scaffold >> 2] = $temp_0;
    label = 11;
    break;
   case 11:
    $12 = HEAP32[$scaffCount >> 2] | 0;
    $inc = $12 + 1 | 0;
    HEAP32[$scaffCount >> 2] = $inc;
    $scaffold32 = $0 + 144 | 0;
    $13 = HEAP32[$scaffold32 >> 2] | 0;
    $scaffLevel = $0 + 160 | 0;
    $14 = HEAP32[$scaffLevel >> 2] | 0;
    $tobool34 = ($14 | 0) == 0;
    if ($tobool34) {
      label = 17;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $sub = $14 - 1 | 0;
    $15 = HEAP32[$scaffIndex >> 2] | 0;
    $arrayidx38 = $15 + ($sub << 2) | 0;
    $16 = HEAP32[$arrayidx38 >> 2] | 0;
    $lastchild = $13 + ($16 * 28 & -1) + 16 | 0;
    $17 = HEAP32[$lastchild >> 2] | 0;
    $tobool41 = ($17 | 0) == 0;
    if ($tobool41) {
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $nextsib = $13 + ($17 * 28 & -1) + 24 | 0;
    HEAP32[$nextsib >> 2] = $12;
    label = 14;
    break;
   case 14:
    $childcnt = $13 + ($16 * 28 & -1) + 20 | 0;
    $18 = HEAP32[$childcnt >> 2] | 0;
    $tobool47 = ($18 | 0) == 0;
    if ($tobool47) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $firstchild = $13 + ($16 * 28 & -1) + 12 | 0;
    HEAP32[$firstchild >> 2] = $12;
    label = 16;
    break;
   case 16:
    HEAP32[$lastchild >> 2] = $12;
    $19 = HEAP32[$childcnt >> 2] | 0;
    $inc52 = $19 + 1 | 0;
    HEAP32[$childcnt >> 2] = $inc52;
    label = 17;
    break;
   case 17:
    $firstchild57 = $13 + ($12 * 28 & -1) + 12 | 0;
    $20 = $firstchild57;
    _memset($20 | 0, 0, 16);
    $retval_0 = $12;
    label = 18;
    break;
   case 18:
    return $retval_0 | 0;
  }
  return 0;
}
function _build_model($parser) {
  $parser = $parser | 0;
  var $cpos = 0, $str = 0, $m_dtd = 0, $0 = 0, $scaffCount = 0, $1 = 0, $mul = 0, $contentStringLen = 0, $2 = 0, $add = 0, $malloc_fcn = 0, $3 = 0, $call = 0, $4 = 0, $tobool = 0, $5 = 0, $arrayidx = 0, $6 = 0, $arrayidx3 = 0, $7 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 16 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cpos = __stackBase__ | 0;
    $str = __stackBase__ + 8 | 0;
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $scaffCount = $0 + 156 | 0;
    $1 = HEAP32[$scaffCount >> 2] | 0;
    $mul = $1 * 20 & -1;
    $contentStringLen = $0 + 148 | 0;
    $2 = HEAP32[$contentStringLen >> 2] | 0;
    $add = $mul + $2 | 0;
    $malloc_fcn = $parser + 12 | 0;
    $3 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$3 & 1023]($add) | 0;
    $4 = $call;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $5 = HEAP32[$scaffCount >> 2] | 0;
    $arrayidx = $4 + ($5 * 20 & -1) | 0;
    $6 = $arrayidx;
    HEAP32[$str >> 2] = $6;
    $arrayidx3 = $call + 20 | 0;
    $7 = $arrayidx3;
    HEAP32[$cpos >> 2] = $7;
    _build_node($parser, 0, $4, $cpos, $str);
    $retval_0 = $4;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _build_node($parser, $src_node, $dest, $contpos, $strpos) {
  $parser = $parser | 0;
  $src_node = $src_node | 0;
  $dest = $dest | 0;
  $contpos = $contpos | 0;
  $strpos = $strpos | 0;
  var $m_dtd = 0, $0 = 0, $scaffold = 0, $1 = 0, $type = 0, $2 = 0, $type1 = 0, $3 = 0, $quant = 0, $4 = 0, $quant4 = 0, $5 = 0, $cmp = 0, $6 = 0, $name = 0, $7 = 0, $name8 = 0, $8 = 0, $src_0 = 0, $9 = 0, $10 = 0, $incdec_ptr = 0, $11 = 0, $tobool = 0, $incdec_ptr10 = 0, $numchildren = 0, $children = 0, $12 = 0, $childcnt = 0, $13 = 0, $numchildren13 = 0, $14 = 0, $children14 = 0, $15 = 0, $16 = 0, $add_ptr = 0, $17 = 0, $cmp2032 = 0, $18 = 0, $firstchild = 0, $cn_034_in = 0, $i_033 = 0, $cn_034 = 0, $19 = 0, $arrayidx22 = 0, $inc = 0, $20 = 0, $nextsib = 0, $21 = 0, $cmp20 = 0, $name26 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $m_dtd = $parser + 340 | 0;
    $0 = HEAP32[$m_dtd >> 2] | 0;
    $scaffold = $0 + 144 | 0;
    $1 = HEAP32[$scaffold >> 2] | 0;
    $type = $1 + ($src_node * 28 & -1) | 0;
    $2 = HEAP32[$type >> 2] | 0;
    $type1 = $dest | 0;
    HEAP32[$type1 >> 2] = $2;
    $3 = HEAP32[$scaffold >> 2] | 0;
    $quant = $3 + ($src_node * 28 & -1) + 4 | 0;
    $4 = HEAP32[$quant >> 2] | 0;
    $quant4 = $dest + 4 | 0;
    HEAP32[$quant4 >> 2] = $4;
    $5 = HEAP32[$type1 >> 2] | 0;
    $cmp = ($5 | 0) == 4;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $6 = HEAP32[$strpos >> 2] | 0;
    $name = $dest + 8 | 0;
    HEAP32[$name >> 2] = $6;
    $7 = HEAP32[$scaffold >> 2] | 0;
    $name8 = $7 + ($src_node * 28 & -1) + 8 | 0;
    $8 = HEAP32[$name8 >> 2] | 0;
    $src_0 = $8;
    label = 4;
    break;
   case 4:
    $9 = HEAP8[$src_0] | 0;
    $10 = HEAP32[$strpos >> 2] | 0;
    $incdec_ptr = $10 + 1 | 0;
    HEAP32[$strpos >> 2] = $incdec_ptr;
    HEAP8[$10] = $9;
    $11 = HEAP8[$src_0] | 0;
    $tobool = $11 << 24 >> 24 == 0;
    $incdec_ptr10 = $src_0 + 1 | 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      $src_0 = $incdec_ptr10;
      label = 4;
      break;
    }
   case 5:
    $numchildren = $dest + 12 | 0;
    HEAP32[$numchildren >> 2] = 0;
    $children = $dest + 16 | 0;
    HEAP32[$children >> 2] = 0;
    label = 10;
    break;
   case 6:
    $12 = HEAP32[$scaffold >> 2] | 0;
    $childcnt = $12 + ($src_node * 28 & -1) + 20 | 0;
    $13 = HEAP32[$childcnt >> 2] | 0;
    $numchildren13 = $dest + 12 | 0;
    HEAP32[$numchildren13 >> 2] = $13;
    $14 = HEAP32[$contpos >> 2] | 0;
    $children14 = $dest + 16 | 0;
    HEAP32[$children14 >> 2] = $14;
    $15 = HEAP32[$numchildren13 >> 2] | 0;
    $16 = HEAP32[$contpos >> 2] | 0;
    $add_ptr = $16 + ($15 * 20 & -1) | 0;
    HEAP32[$contpos >> 2] = $add_ptr;
    $17 = HEAP32[$numchildren13 >> 2] | 0;
    $cmp2032 = ($17 | 0) == 0;
    if ($cmp2032) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $18 = HEAP32[$scaffold >> 2] | 0;
    $firstchild = $18 + ($src_node * 28 & -1) + 12 | 0;
    $i_033 = 0;
    $cn_034_in = $firstchild;
    label = 8;
    break;
   case 8:
    $cn_034 = HEAP32[$cn_034_in >> 2] | 0;
    $19 = HEAP32[$children14 >> 2] | 0;
    $arrayidx22 = $19 + ($i_033 * 20 & -1) | 0;
    _build_node($parser, $cn_034, $arrayidx22, $contpos, $strpos);
    $inc = $i_033 + 1 | 0;
    $20 = HEAP32[$scaffold >> 2] | 0;
    $nextsib = $20 + ($cn_034 * 28 & -1) + 24 | 0;
    $21 = HEAP32[$numchildren13 >> 2] | 0;
    $cmp20 = $inc >>> 0 < $21 >>> 0;
    if ($cmp20) {
      $i_033 = $inc;
      $cn_034_in = $nextsib;
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $name26 = $dest + 8 | 0;
    HEAP32[$name26 >> 2] = 0;
    label = 10;
    break;
   case 10:
    return;
  }
}
function _dtdCreate($ms) {
  $ms = $ms | 0;
  var $malloc_fcn = 0, $0 = 0, $call = 0, $1 = 0, $cmp = 0, $pool = 0, $2 = 0, $entityValuePool = 0, $3 = 0, $generalEntities = 0, $elementTypes = 0, $4 = 0, $attributeIds = 0, $5 = 0, $prefixes = 0, $6 = 0, $defaultPrefix = 0, $name = 0, $binding = 0, $7 = 0, $8 = 0, $scaffold = 0, $9 = 0, $10 = 0, $11 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $malloc_fcn = $ms | 0;
    $0 = HEAP32[$malloc_fcn >> 2] | 0;
    $call = FUNCTION_TABLE_ii[$0 & 1023](168) | 0;
    $1 = $call;
    $cmp = ($call | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $pool = $call + 80 | 0;
    $2 = $pool;
    _poolInit($2, $ms);
    $entityValuePool = $call + 104 | 0;
    $3 = $entityValuePool;
    _poolInit($3, $ms);
    $generalEntities = $call;
    _hashTableInit($generalEntities, $ms);
    $elementTypes = $call + 20 | 0;
    $4 = $elementTypes;
    _hashTableInit($4, $ms);
    $attributeIds = $call + 40 | 0;
    $5 = $attributeIds;
    _hashTableInit($5, $ms);
    $prefixes = $call + 60 | 0;
    $6 = $prefixes;
    _hashTableInit($6, $ms);
    $defaultPrefix = $call + 132 | 0;
    $name = $defaultPrefix;
    HEAP32[$name >> 2] = 0;
    $binding = $call + 136 | 0;
    $7 = $binding;
    HEAP32[$7 >> 2] = 0;
    $8 = $call + 140 | 0;
    HEAP8[$8] = 0;
    $scaffold = $call + 144 | 0;
    $9 = $call + 128 | 0;
    _memset($scaffold | 0, 0, 24);
    HEAP8[$9] = 1;
    $10 = $call + 129 | 0;
    HEAP8[$10] = 0;
    $11 = $call + 130 | 0;
    HEAP8[$11] = 0;
    label = 4;
    break;
   case 4:
    return $1 | 0;
  }
  return 0;
}
function _poolInit($pool, $ms) {
  $pool = $pool | 0;
  $ms = $ms | 0;
  _memset($pool | 0, 0, 20);
  HEAP32[$pool + 20 >> 2] = $ms;
  return;
}
function _prolog0($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler2 = 0, $handler4 = 0, $handler6 = 0, $nameMatchesAscii = 0, $0 = 0, $minBytesPerChar = 0, $1 = 0, $mul = 0, $add_ptr = 0, $call = 0, $tobool = 0, $handler9 = 0, $handler11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 15) {
      label = 3;
      break;
    } else if (($tok | 0) == 12) {
      label = 4;
      break;
    } else if (($tok | 0) == 11) {
      label = 5;
      break;
    } else if (($tok | 0) == 13) {
      label = 6;
      break;
    } else if (($tok | 0) == 16) {
      label = 7;
      break;
    } else if (($tok | 0) == 29) {
      label = 9;
      break;
    } else if (($tok | 0) == 14) {
      $retval_0 = 0;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 44;
    $retval_0 = 0;
    label = 11;
    break;
   case 4:
    $handler2 = $state | 0;
    HEAP32[$handler2 >> 2] = 44;
    $retval_0 = 1;
    label = 11;
    break;
   case 5:
    $handler4 = $state | 0;
    HEAP32[$handler4 >> 2] = 44;
    $retval_0 = 55;
    label = 11;
    break;
   case 6:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 44;
    $retval_0 = 56;
    label = 11;
    break;
   case 7:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $1 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul = $1 << 1;
    $add_ptr = $ptr + $mul | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $add_ptr, $end, 166928) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 120;
    $retval_0 = 3;
    label = 11;
    break;
   case 9:
    $handler11 = $state | 0;
    HEAP32[$handler11 >> 2] = 134;
    $retval_0 = 2;
    label = 11;
    break;
   case 10:
    _common($state);
    $retval_0 = -1;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _prolog1($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $minBytesPerChar = 0, $1 = 0, $mul = 0, $add_ptr = 0, $call = 0, $tobool = 0, $handler = 0, $handler6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 11) {
      label = 3;
      break;
    } else if (($tok | 0) == 13) {
      label = 4;
      break;
    } else if (($tok | 0) == 16) {
      label = 5;
      break;
    } else if (($tok | 0) == 29) {
      label = 7;
      break;
    } else if (($tok | 0) == 15 | ($tok | 0) == 14) {
      $retval_0 = 0;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $retval_0 = 55;
    label = 9;
    break;
   case 4:
    $retval_0 = 56;
    label = 9;
    break;
   case 5:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $1 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul = $1 << 1;
    $add_ptr = $ptr + $mul | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $add_ptr, $end, 166928) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 120;
    $retval_0 = 3;
    label = 9;
    break;
   case 7:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 134;
    $retval_0 = 2;
    label = 9;
    break;
   case 8:
    _common($state);
    $retval_0 = -1;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _doctype0($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 546;
    $retval_0 = 4;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _doctype1($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler3 = 0, $nameMatchesAscii = 0, $0 = 0, $call = 0, $tobool = 0, $handler5 = 0, $1 = 0, $call7 = 0, $tobool8 = 0, $handler10 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 25) {
      label = 3;
      break;
    } else if (($tok | 0) == 17) {
      label = 4;
      break;
    } else if (($tok | 0) == 18) {
      label = 5;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 3;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 148;
    $retval_0 = 7;
    label = 10;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 22;
    $retval_0 = 8;
    label = 10;
    break;
   case 5:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166744) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler5 = $state | 0;
    HEAP32[$handler5 >> 2] = 550;
    $retval_0 = 3;
    label = 10;
    break;
   case 7:
    $1 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call7 = FUNCTION_TABLE_iiiii[$1 & 1023]($enc, $ptr, $end, 166768) | 0;
    $tobool8 = ($call7 | 0) == 0;
    if ($tobool8) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $handler10 = $state | 0;
    HEAP32[$handler10 >> 2] = 256;
    $retval_0 = 3;
    label = 10;
    break;
   case 9:
    _common($state);
    $retval_0 = -1;
    label = 10;
    break;
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _internalSubset($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $minBytesPerChar = 0, $1 = 0, $mul = 0, $add_ptr = 0, $call = 0, $tobool = 0, $handler = 0, $2 = 0, $3 = 0, $mul4 = 0, $add_ptr5 = 0, $call6 = 0, $tobool7 = 0, $handler9 = 0, $4 = 0, $5 = 0, $mul13 = 0, $add_ptr14 = 0, $call15 = 0, $tobool16 = 0, $handler18 = 0, $6 = 0, $7 = 0, $mul22 = 0, $add_ptr23 = 0, $call24 = 0, $tobool25 = 0, $handler27 = 0, $handler33 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 16) {
      label = 3;
      break;
    } else if (($tok | 0) == 11) {
      label = 11;
      break;
    } else if (($tok | 0) == 13) {
      label = 12;
      break;
    } else if (($tok | 0) == 28) {
      label = 13;
      break;
    } else if (($tok | 0) == 26) {
      label = 14;
      break;
    } else if (($tok | 0) == 15 | ($tok | 0) == (-4 | 0)) {
      $retval_0 = 0;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $1 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul = $1 << 1;
    $add_ptr = $ptr + $mul | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $add_ptr, $end, 166888) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 326;
    $retval_0 = 11;
    label = 16;
    break;
   case 5:
    $2 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $3 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul4 = $3 << 1;
    $add_ptr5 = $ptr + $mul4 | 0;
    $call6 = FUNCTION_TABLE_iiiii[$2 & 1023]($enc, $add_ptr5, $end, 166944) | 0;
    $tobool7 = ($call6 | 0) == 0;
    if ($tobool7) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 440;
    $retval_0 = 33;
    label = 16;
    break;
   case 7:
    $4 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $5 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul13 = $5 << 1;
    $add_ptr14 = $ptr + $mul13 | 0;
    $call15 = FUNCTION_TABLE_iiiii[$4 & 1023]($enc, $add_ptr14, $end, 166920) | 0;
    $tobool16 = ($call15 | 0) == 0;
    if ($tobool16) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $handler18 = $state | 0;
    HEAP32[$handler18 >> 2] = 86;
    $retval_0 = 39;
    label = 16;
    break;
   case 9:
    $6 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $7 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul22 = $7 << 1;
    $add_ptr23 = $ptr + $mul22 | 0;
    $call24 = FUNCTION_TABLE_iiiii[$6 & 1023]($enc, $add_ptr23, $end, 166784) | 0;
    $tobool25 = ($call24 | 0) == 0;
    if ($tobool25) {
      label = 15;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $handler27 = $state | 0;
    HEAP32[$handler27 >> 2] = 366;
    $retval_0 = 17;
    label = 16;
    break;
   case 11:
    $retval_0 = 55;
    label = 16;
    break;
   case 12:
    $retval_0 = 56;
    label = 16;
    break;
   case 13:
    $retval_0 = 57;
    label = 16;
    break;
   case 14:
    $handler33 = $state | 0;
    HEAP32[$handler33 >> 2] = 540;
    $retval_0 = 3;
    label = 16;
    break;
   case 15:
    _common($state);
    $retval_0 = -1;
    label = 16;
    break;
   case 16:
    return $retval_0 | 0;
  }
  return 0;
}
function _prolog2($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 11) {
      label = 3;
      break;
    } else if (($tok | 0) == 13) {
      label = 4;
      break;
    } else if (($tok | 0) == 29) {
      label = 5;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $retval_0 = 55;
    label = 7;
    break;
   case 4:
    $retval_0 = 56;
    label = 7;
    break;
   case 5:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 134;
    $retval_0 = 2;
    label = 7;
    break;
   case 6:
    _common($state);
    $retval_0 = -1;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _doctype3($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 538;
    $retval_0 = 5;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _doctype2($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 550;
    $retval_0 = 6;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _doctype4($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 25) {
      label = 3;
      break;
    } else if (($tok | 0) == 17) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 3;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 148;
    $retval_0 = 7;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 22;
    $retval_0 = 8;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity0($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 22) {
      label = 3;
      break;
    } else if (($tok | 0) == 18) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 328;
    $retval_0 = 11;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 442;
    $retval_0 = 9;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist0($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 518;
    $retval_0 = 34;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _element0($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 278;
    $retval_0 = 40;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _notation0($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 17;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 578;
    $retval_0 = 18;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _doctype5($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 17) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 3;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 22;
    $retval_0 = 8;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _notation1($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $call = 0, $tobool = 0, $handler = 0, $1 = 0, $call3 = 0, $tobool4 = 0, $handler6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 17;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166744) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 596;
    $retval_0 = 17;
    label = 8;
    break;
   case 5:
    $1 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call3 = FUNCTION_TABLE_iiiii[$1 & 1023]($enc, $ptr, $end, 166768) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 94;
    $retval_0 = 17;
    label = 8;
    break;
   case 7:
    _common($state);
    $retval_0 = -1;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _notation3($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $role_none = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 17;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 17;
    $retval_0 = 19;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _notation2($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 17;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 622;
    $retval_0 = 21;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _notation4($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $role_none = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 17) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 17;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 17;
    $retval_0 = 19;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 148;
    $retval_0 = 20;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _declClose($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $role_none = 0, $0 = 0, $handler = 0, $role_none2 = 0, $1 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 15) {
      label = 3;
      break;
    } else if (($tok | 0) == 17) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $role_none = $state + 8 | 0;
    $0 = HEAP32[$role_none >> 2] | 0;
    $retval_0 = $0;
    label = 6;
    break;
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 148;
    $role_none2 = $state + 8 | 0;
    $1 = HEAP32[$role_none2 >> 2] | 0;
    $retval_0 = $1;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _element1($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $call = 0, $tobool = 0, $handler = 0, $role_none = 0, $1 = 0, $call3 = 0, $tobool4 = 0, $handler6 = 0, $role_none7 = 0, $handler10 = 0, $level = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 23) {
      label = 7;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166912) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 39;
    $retval_0 = 42;
    label = 9;
    break;
   case 5:
    $1 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call3 = FUNCTION_TABLE_iiiii[$1 & 1023]($enc, $ptr, $end, 166952) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 206;
    $role_none7 = $state + 8 | 0;
    HEAP32[$role_none7 >> 2] = 39;
    $retval_0 = 41;
    label = 9;
    break;
   case 7:
    $handler10 = $state | 0;
    HEAP32[$handler10 >> 2] = 272;
    $level = $state + 4 | 0;
    HEAP32[$level >> 2] = 1;
    $retval_0 = 44;
    label = 9;
    break;
   case 8:
    _common($state);
    $retval_0 = -1;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _element2($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $minBytesPerChar = 0, $1 = 0, $add_ptr = 0, $call = 0, $tobool = 0, $handler = 0, $level = 0, $handler3 = 0, $handler5 = 0, $handler7 = 0, $handler9 = 0, $handler11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 20) {
      label = 3;
      break;
    } else if (($tok | 0) == 23) {
      label = 5;
      break;
    } else if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 6;
      break;
    } else if (($tok | 0) == 30) {
      label = 7;
      break;
    } else if (($tok | 0) == 31) {
      label = 8;
      break;
    } else if (($tok | 0) == 32) {
      label = 9;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $1 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $ptr + $1 | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $add_ptr, $end, 166776) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 336;
    $retval_0 = 43;
    label = 11;
    break;
   case 5:
    $level = $state + 4 | 0;
    HEAP32[$level >> 2] = 2;
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 294;
    $retval_0 = 44;
    label = 11;
    break;
   case 6:
    $handler5 = $state | 0;
    HEAP32[$handler5 >> 2] = 302;
    $retval_0 = 51;
    label = 11;
    break;
   case 7:
    $handler7 = $state | 0;
    HEAP32[$handler7 >> 2] = 302;
    $retval_0 = 53;
    label = 11;
    break;
   case 8:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 302;
    $retval_0 = 52;
    label = 11;
    break;
   case 9:
    $handler11 = $state | 0;
    HEAP32[$handler11 >> 2] = 302;
    $retval_0 = 54;
    label = 11;
    break;
   case 10:
    _common($state);
    $retval_0 = -1;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _element3($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $role_none = 0, $handler3 = 0, $role_none4 = 0, $handler6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 24) {
      label = 3;
      break;
    } else if (($tok | 0) == 36) {
      label = 4;
      break;
    } else if (($tok | 0) == 21) {
      label = 5;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 39;
    $retval_0 = 45;
    label = 7;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 206;
    $role_none4 = $state + 8 | 0;
    HEAP32[$role_none4 >> 2] = 39;
    $retval_0 = 46;
    label = 7;
    break;
   case 5:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 268;
    $retval_0 = 39;
    label = 7;
    break;
   case 6:
    _common($state);
    $retval_0 = -1;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _element6($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $level = 0, $0 = 0, $add = 0, $handler = 0, $handler4 = 0, $handler6 = 0, $handler8 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 23) {
      label = 3;
      break;
    } else if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 4;
      break;
    } else if (($tok | 0) == 30) {
      label = 5;
      break;
    } else if (($tok | 0) == 31) {
      label = 6;
      break;
    } else if (($tok | 0) == 32) {
      label = 7;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $level = $state + 4 | 0;
    $0 = HEAP32[$level >> 2] | 0;
    $add = $0 + 1 | 0;
    HEAP32[$level >> 2] = $add;
    $retval_0 = 44;
    label = 9;
    break;
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 302;
    $retval_0 = 51;
    label = 9;
    break;
   case 5:
    $handler4 = $state | 0;
    HEAP32[$handler4 >> 2] = 302;
    $retval_0 = 53;
    label = 9;
    break;
   case 6:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 302;
    $retval_0 = 52;
    label = 9;
    break;
   case 7:
    $handler8 = $state | 0;
    HEAP32[$handler8 >> 2] = 302;
    $retval_0 = 54;
    label = 9;
    break;
   case 8:
    _common($state);
    $retval_0 = -1;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _element7($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $level = 0, $0 = 0, $sub = 0, $cmp = 0, $handler = 0, $role_none = 0, $level4 = 0, $1 = 0, $sub5 = 0, $cmp7 = 0, $handler9 = 0, $role_none10 = 0, $level13 = 0, $2 = 0, $sub14 = 0, $cmp16 = 0, $handler18 = 0, $role_none19 = 0, $level22 = 0, $3 = 0, $sub23 = 0, $cmp25 = 0, $handler27 = 0, $role_none28 = 0, $handler31 = 0, $handler33 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 24) {
      label = 3;
      break;
    } else if (($tok | 0) == 36) {
      label = 5;
      break;
    } else if (($tok | 0) == 35) {
      label = 7;
      break;
    } else if (($tok | 0) == 37) {
      label = 9;
      break;
    } else if (($tok | 0) == 38) {
      label = 11;
      break;
    } else if (($tok | 0) == 21) {
      label = 12;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 14;
      break;
    } else {
      label = 13;
      break;
    }
   case 3:
    $level = $state + 4 | 0;
    $0 = HEAP32[$level >> 2] | 0;
    $sub = $0 - 1 | 0;
    HEAP32[$level >> 2] = $sub;
    $cmp = ($sub | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $retval_0 = 45;
      label = 14;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 39;
    $retval_0 = 45;
    label = 14;
    break;
   case 5:
    $level4 = $state + 4 | 0;
    $1 = HEAP32[$level4 >> 2] | 0;
    $sub5 = $1 - 1 | 0;
    HEAP32[$level4 >> 2] = $sub5;
    $cmp7 = ($sub5 | 0) == 0;
    if ($cmp7) {
      label = 6;
      break;
    } else {
      $retval_0 = 46;
      label = 14;
      break;
    }
   case 6:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 206;
    $role_none10 = $state + 8 | 0;
    HEAP32[$role_none10 >> 2] = 39;
    $retval_0 = 46;
    label = 14;
    break;
   case 7:
    $level13 = $state + 4 | 0;
    $2 = HEAP32[$level13 >> 2] | 0;
    $sub14 = $2 - 1 | 0;
    HEAP32[$level13 >> 2] = $sub14;
    $cmp16 = ($sub14 | 0) == 0;
    if ($cmp16) {
      label = 8;
      break;
    } else {
      $retval_0 = 47;
      label = 14;
      break;
    }
   case 8:
    $handler18 = $state | 0;
    HEAP32[$handler18 >> 2] = 206;
    $role_none19 = $state + 8 | 0;
    HEAP32[$role_none19 >> 2] = 39;
    $retval_0 = 47;
    label = 14;
    break;
   case 9:
    $level22 = $state + 4 | 0;
    $3 = HEAP32[$level22 >> 2] | 0;
    $sub23 = $3 - 1 | 0;
    HEAP32[$level22 >> 2] = $sub23;
    $cmp25 = ($sub23 | 0) == 0;
    if ($cmp25) {
      label = 10;
      break;
    } else {
      $retval_0 = 48;
      label = 14;
      break;
    }
   case 10:
    $handler27 = $state | 0;
    HEAP32[$handler27 >> 2] = 206;
    $role_none28 = $state + 8 | 0;
    HEAP32[$role_none28 >> 2] = 39;
    $retval_0 = 48;
    label = 14;
    break;
   case 11:
    $handler31 = $state | 0;
    HEAP32[$handler31 >> 2] = 294;
    $retval_0 = 50;
    label = 14;
    break;
   case 12:
    $handler33 = $state | 0;
    HEAP32[$handler33 >> 2] = 294;
    $retval_0 = 49;
    label = 14;
    break;
   case 13:
    _common($state);
    $retval_0 = -1;
    label = 14;
    break;
   case 14:
    return $retval_0 | 0;
  }
  return 0;
}
function _element4($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 270;
    $retval_0 = 51;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _element5($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $role_none = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 36) {
      label = 3;
      break;
    } else if (($tok | 0) == 21) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 39;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 39;
    $retval_0 = 46;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 268;
    $retval_0 = 39;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist1($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 17) {
      label = 3;
      break;
    } else if (($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 148;
    $retval_0 = 33;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 318;
    $retval_0 = 22;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist2($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $i_0 = 0, $cmp = 0, $0 = 0, $arrayidx = 0, $1 = 0, $call = 0, $tobool = 0, $inc = 0, $handler = 0, $add = 0, $call3 = 0, $tobool4 = 0, $handler6 = 0, $handler9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 23) {
      label = 9;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $i_0 = 0;
    label = 4;
    break;
   case 4:
    $cmp = ($i_0 | 0) < 8;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $arrayidx = 85864 + ($i_0 << 2) | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, $1) | 0;
    $tobool = ($call | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool) {
      $i_0 = $inc;
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 378;
    $add = $i_0 + 23 | 0;
    $retval_0 = $add;
    label = 11;
    break;
   case 7:
    $call3 = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166784) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 394;
    $retval_0 = 33;
    label = 11;
    break;
   case 9:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 522;
    $retval_0 = 33;
    label = 11;
    break;
   case 10:
    _common($state);
    $retval_0 = -1;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist8($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $minBytesPerChar = 0, $1 = 0, $add_ptr = 0, $call = 0, $tobool = 0, $handler = 0, $2 = 0, $3 = 0, $add_ptr4 = 0, $call5 = 0, $tobool6 = 0, $handler8 = 0, $4 = 0, $5 = 0, $add_ptr12 = 0, $call13 = 0, $tobool14 = 0, $handler16 = 0, $handler19 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 20) {
      label = 3;
      break;
    } else if (($tok | 0) == 27) {
      label = 9;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $minBytesPerChar = $enc + 64 | 0;
    $1 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $ptr + $1 | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $add_ptr, $end, 166848) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 518;
    $retval_0 = 35;
    label = 11;
    break;
   case 5:
    $2 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $3 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr4 = $ptr + $3 | 0;
    $call5 = FUNCTION_TABLE_iiiii[$2 & 1023]($enc, $add_ptr4, $end, 166752) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler8 = $state | 0;
    HEAP32[$handler8 >> 2] = 518;
    $retval_0 = 36;
    label = 11;
    break;
   case 7:
    $4 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $5 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr12 = $ptr + $5 | 0;
    $call13 = FUNCTION_TABLE_iiiii[$4 & 1023]($enc, $add_ptr12, $end, 166880) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $handler16 = $state | 0;
    HEAP32[$handler16 >> 2] = 504;
    $retval_0 = 33;
    label = 11;
    break;
   case 9:
    $handler19 = $state | 0;
    HEAP32[$handler19 >> 2] = 518;
    $retval_0 = 37;
    label = 11;
    break;
   case 10:
    _common($state);
    $retval_0 = -1;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist5($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 23) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 166;
    $retval_0 = 33;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist3($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 19 | ($tok | 0) == 18 | ($tok | 0) == 41) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 512;
    $retval_0 = 31;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist4($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 24) {
      label = 3;
      break;
    } else if (($tok | 0) == 21) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 378;
    $retval_0 = 33;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 522;
    $retval_0 = 33;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist6($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 412;
    $retval_0 = 32;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _XmlUtf8Encode($c, $buf) {
  $c = $c | 0;
  $buf = $buf | 0;
  var $cmp = 0, $cmp1 = 0, $conv = 0, $cmp4 = 0, $shr26 = 0, $or = 0, $conv7 = 0, $and = 0, $or9 = 0, $conv10 = 0, $arrayidx11 = 0, $cmp13 = 0, $shr1624 = 0, $or17 = 0, $conv18 = 0, $shr2025 = 0, $and21 = 0, $or22 = 0, $conv23 = 0, $arrayidx24 = 0, $and25 = 0, $or26 = 0, $conv27 = 0, $arrayidx28 = 0, $cmp30 = 0, $shr3321 = 0, $or34 = 0, $conv35 = 0, $shr3722 = 0, $and38 = 0, $or39 = 0, $conv40 = 0, $arrayidx41 = 0, $shr4223 = 0, $and43 = 0, $or44 = 0, $conv45 = 0, $arrayidx46 = 0, $and47 = 0, $or48 = 0, $conv49 = 0, $arrayidx50 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($c | 0) < 0;
    if ($cmp) {
      $retval_0 = 0;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp1 = ($c | 0) < 128;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $conv = $c & 255;
    HEAP8[$buf] = $conv;
    $retval_0 = 1;
    label = 11;
    break;
   case 5:
    $cmp4 = ($c | 0) < 2048;
    if ($cmp4) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $shr26 = $c >>> 6;
    $or = $shr26 | 192;
    $conv7 = $or & 255;
    HEAP8[$buf] = $conv7;
    $and = $c & 63;
    $or9 = $and | 128;
    $conv10 = $or9 & 255;
    $arrayidx11 = $buf + 1 | 0;
    HEAP8[$arrayidx11] = $conv10;
    $retval_0 = 2;
    label = 11;
    break;
   case 7:
    $cmp13 = ($c | 0) < 65536;
    if ($cmp13) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 8:
    $shr1624 = $c >>> 12;
    $or17 = $shr1624 | 224;
    $conv18 = $or17 & 255;
    HEAP8[$buf] = $conv18;
    $shr2025 = $c >>> 6;
    $and21 = $shr2025 & 63;
    $or22 = $and21 | 128;
    $conv23 = $or22 & 255;
    $arrayidx24 = $buf + 1 | 0;
    HEAP8[$arrayidx24] = $conv23;
    $and25 = $c & 63;
    $or26 = $and25 | 128;
    $conv27 = $or26 & 255;
    $arrayidx28 = $buf + 2 | 0;
    HEAP8[$arrayidx28] = $conv27;
    $retval_0 = 3;
    label = 11;
    break;
   case 9:
    $cmp30 = ($c | 0) < 1114112;
    if ($cmp30) {
      label = 10;
      break;
    } else {
      $retval_0 = 0;
      label = 11;
      break;
    }
   case 10:
    $shr3321 = $c >>> 18;
    $or34 = $shr3321 | 240;
    $conv35 = $or34 & 255;
    HEAP8[$buf] = $conv35;
    $shr3722 = $c >>> 12;
    $and38 = $shr3722 & 63;
    $or39 = $and38 | 128;
    $conv40 = $or39 & 255;
    $arrayidx41 = $buf + 1 | 0;
    HEAP8[$arrayidx41] = $conv40;
    $shr4223 = $c >>> 6;
    $and43 = $shr4223 & 63;
    $or44 = $and43 | 128;
    $conv45 = $or44 & 255;
    $arrayidx46 = $buf + 2 | 0;
    HEAP8[$arrayidx46] = $conv45;
    $and47 = $c & 63;
    $or48 = $and47 | 128;
    $conv49 = $or48 & 255;
    $arrayidx50 = $buf + 3 | 0;
    HEAP8[$arrayidx50] = $conv49;
    $retval_0 = 4;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _checkCharRefNumber($result) {
  $result = $result | 0;
  var $shr = 0, $arrayidx = 0, $0 = 0, $cmp = 0, $result_off = 0, $1 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $shr = $result >> 8;
    if (($shr | 0) == 0) {
      label = 3;
      break;
    } else if (($shr | 0) == 255) {
      label = 4;
      break;
    } else if (($shr | 0) == 216 | ($shr | 0) == 217 | ($shr | 0) == 218 | ($shr | 0) == 219 | ($shr | 0) == 220 | ($shr | 0) == 221 | ($shr | 0) == 222 | ($shr | 0) == 223) {
      $retval_0 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $arrayidx = $result + 11912 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      $retval_0 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $result_off = $result - 65534 | 0;
    $1 = $result_off >>> 0 < 2;
    if ($1) {
      $retval_0 = -1;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $retval_0 = $result;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist7($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 24) {
      label = 3;
      break;
    } else if (($tok | 0) == 21) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 378;
    $retval_0 = 33;
    label = 6;
    break;
   case 4:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 166;
    $retval_0 = 33;
    label = 6;
    break;
   case 5:
    _common($state);
    $retval_0 = -1;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _attlist9($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 33;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 518;
    $retval_0 = 38;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity1($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 624;
    $retval_0 = 10;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity2($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $call = 0, $tobool = 0, $handler = 0, $1 = 0, $call3 = 0, $tobool4 = 0, $handler6 = 0, $handler9 = 0, $role_none = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 27) {
      label = 7;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166744) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 334;
    $retval_0 = 11;
    label = 9;
    break;
   case 5:
    $1 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call3 = FUNCTION_TABLE_iiiii[$1 & 1023]($enc, $ptr, $end, 166768) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 324;
    $retval_0 = 11;
    label = 9;
    break;
   case 7:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 11;
    $retval_0 = 12;
    label = 9;
    break;
   case 8:
    _common($state);
    $retval_0 = -1;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity4($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 530;
    $retval_0 = 13;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity3($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 334;
    $retval_0 = 14;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity5($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $nameMatchesAscii = 0, $0 = 0, $call = 0, $tobool = 0, $handler3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 17) {
      label = 3;
      break;
    } else if (($tok | 0) == 18) {
      label = 4;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 148;
    $retval_0 = 15;
    label = 7;
    break;
   case 4:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166824) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $handler3 = $state | 0;
    HEAP32[$handler3 >> 2] = 330;
    $retval_0 = 11;
    label = 7;
    break;
   case 6:
    _common($state);
    $retval_0 = -1;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity6($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $role_none = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 11;
    $retval_0 = 16;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity7($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $nameMatchesAscii = 0, $0 = 0, $call = 0, $tobool = 0, $handler = 0, $1 = 0, $call3 = 0, $tobool4 = 0, $handler6 = 0, $handler9 = 0, $role_none = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 18) {
      label = 3;
      break;
    } else if (($tok | 0) == 27) {
      label = 7;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 3:
    $nameMatchesAscii = $enc + 24 | 0;
    $0 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$0 & 1023]($enc, $ptr, $end, 166744) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 316;
    $retval_0 = 11;
    label = 9;
    break;
   case 5:
    $1 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $call3 = FUNCTION_TABLE_iiiii[$1 & 1023]($enc, $ptr, $end, 166768) | 0;
    $tobool4 = ($call3 | 0) == 0;
    if ($tobool4) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $handler6 = $state | 0;
    HEAP32[$handler6 >> 2] = 314;
    $retval_0 = 11;
    label = 9;
    break;
   case 7:
    $handler9 = $state | 0;
    HEAP32[$handler9 >> 2] = 206;
    $role_none = $state + 8 | 0;
    HEAP32[$role_none >> 2] = 11;
    $retval_0 = 12;
    label = 9;
    break;
   case 8:
    _common($state);
    $retval_0 = -1;
    label = 9;
    break;
   case 9:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity9($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 552;
    $retval_0 = 13;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity8($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 27) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 316;
    $retval_0 = 14;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _entity10($state, $tok, $ptr, $end, $enc) {
  $state = $state | 0;
  $tok = $tok | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $enc = $enc | 0;
  var $handler = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($tok | 0) == 17) {
      label = 3;
      break;
    } else if (($tok | 0) == 15) {
      $retval_0 = 11;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $handler = $state | 0;
    HEAP32[$handler >> 2] = 148;
    $retval_0 = 15;
    label = 5;
    break;
   case 4:
    _common($state);
    $retval_0 = -1;
    label = 5;
    break;
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _XmlInitUnknownEncoding($mem, $table, $convert, $userData) {
  $mem = $mem | 0;
  $table = $table | 0;
  $convert = $convert | 0;
  $userData = $userData | 0;
  var $i_094 = 0, $arrayidx = 0, $0 = 0, $arrayidx1 = 0, $inc = 0, $cmp = 0, $utf16 = 0, $1 = 0, $utf8 = 0, $2 = 0, $utf845 = 0, $3 = 0, $utf1648 = 0, $4 = 0, $utf872 = 0, $5 = 0, $utf1682 = 0, $6 = 0, $utf1691 = 0, $7 = 0, $utf893 = 0, $8 = 0, $utf8141 = 0, $9 = 0, $utf16149 = 0, $10 = 0, $i_193 = 0, $arrayidx5 = 0, $11 = 0, $arrayidx13 = 0, $12 = 0, $cmp14 = 0, $inc17 = 0, $cmp3 = 0, $i_290 = 0, $arrayidx23 = 0, $13 = 0, $cmp24 = 0, $type_sum = 0, $arrayidx27 = 0, $arrayidx28 = 0, $arrayidx30 = 0, $arrayidx33 = 0, $cmp34 = 0, $cmp37 = 0, $sub = 0, $conv41 = 0, $type43_sum = 0, $arrayidx44 = 0, $arrayidx47 = 0, $arrayidx49 = 0, $cmp51 = 0, $arrayidx54 = 0, $14 = 0, $cmp64 = 0, $15 = 0, $type70_sum = 0, $arrayidx71 = 0, $arrayidx74 = 0, $conv75 = 0, $arrayidx78 = 0, $cmp79 = 0, $16 = 0, $conv81 = 0, $arrayidx83 = 0, $call = 0, $cmp85 = 0, $type89_sum = 0, $arrayidx90 = 0, $arrayidx92 = 0, $arrayidx95 = 0, $arrayidx98 = 0, $cmp100 = 0, $shr = 0, $arrayidx104 = 0, $17 = 0, $conv105 = 0, $shl = 0, $and = 0, $shr10689 = 0, $add107 = 0, $arrayidx108 = 0, $18 = 0, $and110 = 0, $shl111 = 0, $and112 = 0, $tobool = 0, $type115_sum = 0, $arrayidx116 = 0, $arrayidx119 = 0, $19 = 0, $conv120 = 0, $shl121 = 0, $add124 = 0, $arrayidx125 = 0, $20 = 0, $and129 = 0, $tobool130 = 0, $type133_sum = 0, $arrayidx134 = 0, $arraydecay = 0, $add_ptr = 0, $call143 = 0, $conv144 = 0, $conv148 = 0, $arrayidx150 = 0, $inc156 = 0, $cmp20 = 0, $userData158 = 0, $21 = 0, $convert159 = 0, $22 = 0, $tobool160 = 0, $isName2 = 0, $23 = 0, $isName3 = 0, $24 = 0, $isName4 = 0, $25 = 0, $isNmstrt2 = 0, $26 = 0, $isNmstrt3 = 0, $27 = 0, $isNmstrt4 = 0, $28 = 0, $isInvalid2 = 0, $29 = 0, $isInvalid3 = 0, $30 = 0, $isInvalid4 = 0, $31 = 0, $enc = 0, $utf8Convert = 0, $32 = 0, $utf16Convert = 0, $33 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $i_094 = 0;
    label = 3;
    break;
   case 3:
    $arrayidx = $i_094 + 11840 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $arrayidx1 = $mem + $i_094 | 0;
    HEAP8[$arrayidx1] = $0;
    $inc = $i_094 + 1 | 0;
    $cmp = ($inc | 0) < 364;
    if ($cmp) {
      $i_094 = $inc;
      label = 3;
      break;
    } else {
      $i_193 = 0;
      label = 5;
      break;
    }
   case 4:
    $utf16 = $mem + 372 | 0;
    $1 = $utf16;
    $utf8 = $mem + 884 | 0;
    $2 = $utf8;
    $utf845 = $mem + 884 | 0;
    $3 = $utf845;
    $utf1648 = $mem + 372 | 0;
    $4 = $utf1648;
    $utf872 = $mem + 884 | 0;
    $5 = $utf872;
    $utf1682 = $mem + 372 | 0;
    $6 = $utf1682;
    $utf1691 = $mem + 372 | 0;
    $7 = $utf1691;
    $utf893 = $mem + 884 | 0;
    $8 = $utf893;
    $utf8141 = $mem + 884 | 0;
    $9 = $utf8141;
    $utf16149 = $mem + 372 | 0;
    $10 = $utf16149;
    $i_290 = 0;
    label = 8;
    break;
   case 5:
    $arrayidx5 = $i_193 + 11912 | 0;
    $11 = HEAP8[$arrayidx5] | 0;
    if (($11 << 24 >> 24 | 0) == 28 | ($11 << 24 >> 24 | 0) == 0) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $arrayidx13 = $table + ($i_193 << 2) | 0;
    $12 = HEAP32[$arrayidx13 >> 2] | 0;
    $cmp14 = ($12 | 0) == ($i_193 | 0);
    if ($cmp14) {
      label = 7;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 7:
    $inc17 = $i_193 + 1 | 0;
    $cmp3 = ($inc17 | 0) < 128;
    if ($cmp3) {
      $i_193 = $inc17;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 8:
    $arrayidx23 = $table + ($i_290 << 2) | 0;
    $13 = HEAP32[$arrayidx23 >> 2] | 0;
    $cmp24 = ($13 | 0) == -1;
    if ($cmp24) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $type_sum = $i_290 + 72 | 0;
    $arrayidx27 = $mem + $type_sum | 0;
    HEAP8[$arrayidx27] = 1;
    $arrayidx28 = $1 + ($i_290 << 1) | 0;
    HEAP16[$arrayidx28 >> 1] = -1;
    $arrayidx30 = $2 + ($i_290 << 2) | 0;
    HEAP8[$arrayidx30] = 1;
    $arrayidx33 = $2 + ($i_290 << 2) + 1 | 0;
    HEAP8[$arrayidx33] = 0;
    label = 26;
    break;
   case 10:
    $cmp34 = ($13 | 0) < 0;
    if ($cmp34) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $cmp37 = ($13 | 0) < -4;
    if ($cmp37) {
      $retval_0 = 0;
      label = 30;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $sub = 3 - $13 | 0;
    $conv41 = $sub & 255;
    $type43_sum = $i_290 + 72 | 0;
    $arrayidx44 = $mem + $type43_sum | 0;
    HEAP8[$arrayidx44] = $conv41;
    $arrayidx47 = $3 + ($i_290 << 2) | 0;
    HEAP8[$arrayidx47] = 0;
    $arrayidx49 = $4 + ($i_290 << 1) | 0;
    HEAP16[$arrayidx49 >> 1] = 0;
    label = 26;
    break;
   case 13:
    $cmp51 = ($13 | 0) < 128;
    if ($cmp51) {
      label = 14;
      break;
    } else {
      label = 17;
      break;
    }
   case 14:
    $arrayidx54 = $13 + 11912 | 0;
    $14 = HEAP8[$arrayidx54] | 0;
    if (($14 << 24 >> 24 | 0) == 28 | ($14 << 24 >> 24 | 0) == 0) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $cmp64 = ($13 | 0) == ($i_290 | 0);
    if ($cmp64) {
      label = 16;
      break;
    } else {
      $retval_0 = 0;
      label = 30;
      break;
    }
   case 16:
    $15 = HEAP8[$arrayidx54] | 0;
    $type70_sum = $i_290 + 72 | 0;
    $arrayidx71 = $mem + $type70_sum | 0;
    HEAP8[$arrayidx71] = $15;
    $arrayidx74 = $5 + ($i_290 << 2) | 0;
    HEAP8[$arrayidx74] = 1;
    $conv75 = $13 & 255;
    $arrayidx78 = $5 + ($i_290 << 2) + 1 | 0;
    HEAP8[$arrayidx78] = $conv75;
    $cmp79 = ($13 | 0) == 0;
    $16 = $13 & 65535;
    $conv81 = $cmp79 ? -1 : $16;
    $arrayidx83 = $6 + ($i_290 << 1) | 0;
    HEAP16[$arrayidx83 >> 1] = $conv81;
    label = 26;
    break;
   case 17:
    $call = _checkCharRefNumber($13) | 0;
    $cmp85 = ($call | 0) < 0;
    if ($cmp85) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $type89_sum = $i_290 + 72 | 0;
    $arrayidx90 = $mem + $type89_sum | 0;
    HEAP8[$arrayidx90] = 0;
    $arrayidx92 = $7 + ($i_290 << 1) | 0;
    HEAP16[$arrayidx92 >> 1] = -1;
    $arrayidx95 = $8 + ($i_290 << 2) | 0;
    HEAP8[$arrayidx95] = 1;
    $arrayidx98 = $8 + ($i_290 << 2) + 1 | 0;
    HEAP8[$arrayidx98] = 0;
    label = 26;
    break;
   case 19:
    $cmp100 = ($13 | 0) > 65535;
    if ($cmp100) {
      $retval_0 = 0;
      label = 30;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $shr = $13 >> 8;
    $arrayidx104 = $shr + 9272 | 0;
    $17 = HEAP8[$arrayidx104] | 0;
    $conv105 = $17 & 255;
    $shl = $conv105 << 3;
    $and = $13 >>> 5;
    $shr10689 = $and & 7;
    $add107 = $shl | $shr10689;
    $arrayidx108 = 9544 + ($add107 << 2) | 0;
    $18 = HEAP32[$arrayidx108 >> 2] | 0;
    $and110 = $13 & 31;
    $shl111 = 1 << $and110;
    $and112 = $18 & $shl111;
    $tobool = ($and112 | 0) == 0;
    if ($tobool) {
      label = 22;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $type115_sum = $i_290 + 72 | 0;
    $arrayidx116 = $mem + $type115_sum | 0;
    HEAP8[$arrayidx116] = 22;
    label = 25;
    break;
   case 22:
    $arrayidx119 = $shr + 10824 | 0;
    $19 = HEAP8[$arrayidx119] | 0;
    $conv120 = $19 & 255;
    $shl121 = $conv120 << 3;
    $add124 = $shl121 | $shr10689;
    $arrayidx125 = 9544 + ($add124 << 2) | 0;
    $20 = HEAP32[$arrayidx125 >> 2] | 0;
    $and129 = $20 & $shl111;
    $tobool130 = ($and129 | 0) == 0;
    $type133_sum = $i_290 + 72 | 0;
    $arrayidx134 = $mem + $type133_sum | 0;
    if ($tobool130) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    HEAP8[$arrayidx134] = 26;
    label = 25;
    break;
   case 24:
    HEAP8[$arrayidx134] = 28;
    label = 25;
    break;
   case 25:
    $arraydecay = $9 + ($i_290 << 2) | 0;
    $add_ptr = $9 + ($i_290 << 2) + 1 | 0;
    $call143 = _XmlUtf8Encode($13, $add_ptr) | 0;
    $conv144 = $call143 & 255;
    HEAP8[$arraydecay] = $conv144;
    $conv148 = $13 & 65535;
    $arrayidx150 = $10 + ($i_290 << 1) | 0;
    HEAP16[$arrayidx150 >> 1] = $conv148;
    label = 26;
    break;
   case 26:
    $inc156 = $i_290 + 1 | 0;
    $cmp20 = ($inc156 | 0) < 256;
    if ($cmp20) {
      $i_290 = $inc156;
      label = 8;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $userData158 = $mem + 368 | 0;
    $21 = $userData158;
    HEAP32[$21 >> 2] = $userData;
    $convert159 = $mem + 364 | 0;
    $22 = $convert159;
    HEAP32[$22 >> 2] = $convert;
    $tobool160 = ($convert | 0) == 0;
    if ($tobool160) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $isName2 = $mem + 328 | 0;
    $23 = $isName2;
    HEAP32[$23 >> 2] = 248;
    $isName3 = $mem + 332 | 0;
    $24 = $isName3;
    HEAP32[$24 >> 2] = 248;
    $isName4 = $mem + 336 | 0;
    $25 = $isName4;
    HEAP32[$25 >> 2] = 248;
    $isNmstrt2 = $mem + 340 | 0;
    $26 = $isNmstrt2;
    HEAP32[$26 >> 2] = 162;
    $isNmstrt3 = $mem + 344 | 0;
    $27 = $isNmstrt3;
    HEAP32[$27 >> 2] = 162;
    $isNmstrt4 = $mem + 348 | 0;
    $28 = $isNmstrt4;
    HEAP32[$28 >> 2] = 162;
    $isInvalid2 = $mem + 352 | 0;
    $29 = $isInvalid2;
    HEAP32[$29 >> 2] = 376;
    $isInvalid3 = $mem + 356 | 0;
    $30 = $isInvalid3;
    HEAP32[$30 >> 2] = 376;
    $isInvalid4 = $mem + 360 | 0;
    $31 = $isInvalid4;
    HEAP32[$31 >> 2] = 376;
    label = 29;
    break;
   case 29:
    $enc = $mem;
    $utf8Convert = $mem + 56 | 0;
    $32 = $utf8Convert;
    HEAP32[$32 >> 2] = 348;
    $utf16Convert = $mem + 60 | 0;
    $33 = $utf16Convert;
    HEAP32[$33 >> 2] = 524;
    $retval_0 = $enc;
    label = 30;
    break;
   case 30:
    return $retval_0 | 0;
  }
  return 0;
}
function _unknown_isName($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $convert = 0, $0 = 0, $1 = 0, $userData = 0, $2 = 0, $3 = 0, $call = 0, $tobool = 0, $shr = 0, $arrayidx = 0, $4 = 0, $conv = 0, $shl = 0, $and1 = 0, $shr25 = 0, $add = 0, $arrayidx3 = 0, $5 = 0, $and5 = 0, $shl6 = 0, $and7 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $convert = $enc + 364 | 0;
    $0 = HEAP32[$convert >> 2] | 0;
    $1 = $0;
    $userData = $enc + 368 | 0;
    $2 = HEAP32[$userData >> 2] | 0;
    $3 = $2;
    $call = FUNCTION_TABLE_iii[$1 & 1023]($3, $p) | 0;
    $tobool = $call >>> 0 > 65535;
    if ($tobool) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $shr = $call >> 8;
    $arrayidx = $shr + 10824 | 0;
    $4 = HEAP8[$arrayidx] | 0;
    $conv = $4 & 255;
    $shl = $conv << 3;
    $and1 = $call >>> 5;
    $shr25 = $and1 & 7;
    $add = $shl | $shr25;
    $arrayidx3 = 9544 + ($add << 2) | 0;
    $5 = HEAP32[$arrayidx3 >> 2] | 0;
    $and5 = $call & 31;
    $shl6 = 1 << $and5;
    $and7 = $5 & $shl6;
    $retval_0 = $and7;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _unknown_isNmstrt($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $convert = 0, $0 = 0, $1 = 0, $userData = 0, $2 = 0, $3 = 0, $call = 0, $tobool = 0, $shr = 0, $arrayidx = 0, $4 = 0, $conv = 0, $shl = 0, $and1 = 0, $shr25 = 0, $add = 0, $arrayidx3 = 0, $5 = 0, $and5 = 0, $shl6 = 0, $and7 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $convert = $enc + 364 | 0;
    $0 = HEAP32[$convert >> 2] | 0;
    $1 = $0;
    $userData = $enc + 368 | 0;
    $2 = HEAP32[$userData >> 2] | 0;
    $3 = $2;
    $call = FUNCTION_TABLE_iii[$1 & 1023]($3, $p) | 0;
    $tobool = $call >>> 0 > 65535;
    if ($tobool) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $shr = $call >> 8;
    $arrayidx = $shr + 9272 | 0;
    $4 = HEAP8[$arrayidx] | 0;
    $conv = $4 & 255;
    $shl = $conv << 3;
    $and1 = $call >>> 5;
    $shr25 = $and1 & 7;
    $add = $shl | $shr25;
    $arrayidx3 = 9544 + ($add << 2) | 0;
    $5 = HEAP32[$arrayidx3 >> 2] | 0;
    $and5 = $call & 31;
    $shl6 = 1 << $and5;
    $and7 = $5 & $shl6;
    $retval_0 = $and7;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _unknown_isInvalid($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $convert = 0, $0 = 0, $1 = 0, $userData = 0, $2 = 0, $3 = 0, $call = 0, $tobool = 0, $call1 = 0, $call1_lobit = 0, $4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $convert = $enc + 364 | 0;
    $0 = HEAP32[$convert >> 2] | 0;
    $1 = $0;
    $userData = $enc + 368 | 0;
    $2 = HEAP32[$userData >> 2] | 0;
    $3 = $2;
    $call = FUNCTION_TABLE_iii[$1 & 1023]($3, $p) | 0;
    $tobool = $call >>> 0 > 65535;
    if ($tobool) {
      $4 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $call1 = _checkCharRefNumber($call) | 0;
    $call1_lobit = $call1 >>> 31;
    $4 = $call1_lobit;
    label = 4;
    break;
   case 4:
    return $4 | 0;
  }
  return 0;
}
function _unknown_toUtf8($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $buf = 0, $convert = 0, $0 = 0, $cmp16 = 0, $utf81 = 0, $1 = 0, $userData = 0, $arraydecay5 = 0, $sub_ptr_lhs_cast = 0, $type = 0, $2 = 0, $sub_ptr_lhs_cast15 = 0, $3 = 0, $cmp = 0, $4 = 0, $5 = 0, $idxprom = 0, $arraydecay = 0, $incdec_ptr = 0, $6 = 0, $conv = 0, $cmp2 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $call = 0, $call6 = 0, $11 = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp7 = 0, $12 = 0, $13 = 0, $idxprom12 = 0, $arrayidx13 = 0, $14 = 0, $conv14 = 0, $sub = 0, $add_ptr = 0, $15 = 0, $sub_ptr_rhs_cast16 = 0, $sub_ptr_sub17 = 0, $cmp18 = 0, $incdec_ptr22 = 0, $storemerge = 0, $n_0_ph = 0, $utf8_0_ph = 0, $n_0 = 0, $utf8_0 = 0, $incdec_ptr24 = 0, $16 = 0, $17 = 0, $incdec_ptr25 = 0, $dec = 0, $cmp26 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $buf = __stackBase__ | 0;
    $convert = $enc + 364 | 0;
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp16 = ($0 | 0) == ($fromLim | 0);
    if ($cmp16) {
      label = 12;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $utf81 = $enc + 884 | 0;
    $1 = $utf81;
    $userData = $enc + 368 | 0;
    $arraydecay5 = $buf | 0;
    $sub_ptr_lhs_cast = $toLim;
    $type = $enc + 72 | 0;
    $2 = $type;
    $sub_ptr_lhs_cast15 = $toLim;
    $4 = $0;
    label = 5;
    break;
   case 4:
    $3 = HEAP32[$fromP >> 2] | 0;
    $cmp = ($3 | 0) == ($fromLim | 0);
    if ($cmp) {
      label = 12;
      break;
    } else {
      $4 = $3;
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP8[$4] | 0;
    $idxprom = $5 & 255;
    $arraydecay = $1 + ($idxprom << 2) | 0;
    $incdec_ptr = $1 + ($idxprom << 2) + 1 | 0;
    $6 = HEAP8[$arraydecay] | 0;
    $conv = $6 << 24 >> 24;
    $cmp2 = $6 << 24 >> 24 == 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 8;
      break;
    }
   case 6:
    $7 = HEAP32[$convert >> 2] | 0;
    $8 = $7;
    $9 = HEAP32[$userData >> 2] | 0;
    $10 = $9;
    $call = FUNCTION_TABLE_iii[$8 & 1023]($10, $4) | 0;
    $call6 = _XmlUtf8Encode($call, $arraydecay5) | 0;
    $11 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast = $11;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp7 = ($call6 | 0) > ($sub_ptr_sub | 0);
    if ($cmp7) {
      label = 12;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $12 = HEAP32[$fromP >> 2] | 0;
    $13 = HEAP8[$12] | 0;
    $idxprom12 = $13 & 255;
    $arrayidx13 = $2 + $idxprom12 | 0;
    $14 = HEAP8[$arrayidx13] | 0;
    $conv14 = $14 & 255;
    $sub = $conv14 - 3 | 0;
    $add_ptr = $12 + $sub | 0;
    $utf8_0_ph = $arraydecay5;
    $n_0_ph = $call6;
    $storemerge = $add_ptr;
    label = 10;
    break;
   case 8:
    $15 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast16 = $15;
    $sub_ptr_sub17 = $sub_ptr_lhs_cast15 - $sub_ptr_rhs_cast16 | 0;
    $cmp18 = ($conv | 0) > ($sub_ptr_sub17 | 0);
    if ($cmp18) {
      label = 12;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $incdec_ptr22 = $4 + 1 | 0;
    $utf8_0_ph = $incdec_ptr;
    $n_0_ph = $conv;
    $storemerge = $incdec_ptr22;
    label = 10;
    break;
   case 10:
    HEAP32[$fromP >> 2] = $storemerge;
    $utf8_0 = $utf8_0_ph;
    $n_0 = $n_0_ph;
    label = 11;
    break;
   case 11:
    $incdec_ptr24 = $utf8_0 + 1 | 0;
    $16 = HEAP8[$utf8_0] | 0;
    $17 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr25 = $17 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr25;
    HEAP8[$17] = $16;
    $dec = $n_0 - 1 | 0;
    $cmp26 = ($dec | 0) == 0;
    if ($cmp26) {
      label = 4;
      break;
    } else {
      $utf8_0 = $incdec_ptr24;
      $n_0 = $dec;
      label = 11;
      break;
    }
   case 12:
    STACKTOP = __stackBase__;
    return;
  }
}
function _unknown_toUtf16($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $cmp11 = 0, $utf16 = 0, $1 = 0, $convert = 0, $userData = 0, $type = 0, $2 = 0, $3 = 0, $4 = 0, $cmp1 = 0, $5 = 0, $idxprom = 0, $arrayidx = 0, $6 = 0, $cmp2 = 0, $7 = 0, $8 = 0, $9 = 0, $10 = 0, $call = 0, $conv4 = 0, $11 = 0, $12 = 0, $idxprom5 = 0, $arrayidx6 = 0, $13 = 0, $conv7 = 0, $sub = 0, $add_ptr = 0, $incdec_ptr = 0, $storemerge = 0, $c_0 = 0, $14 = 0, $incdec_ptr8 = 0, $15 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp11 = ($0 | 0) == ($fromLim | 0);
    if ($cmp11) {
      label = 9;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $utf16 = $enc + 372 | 0;
    $1 = $utf16;
    $convert = $enc + 364 | 0;
    $userData = $enc + 368 | 0;
    $type = $enc + 72 | 0;
    $2 = $type;
    $3 = $0;
    label = 4;
    break;
   case 4:
    $4 = HEAP32[$toP >> 2] | 0;
    $cmp1 = ($4 | 0) == ($toLim | 0);
    if ($cmp1) {
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP8[$3] | 0;
    $idxprom = $5 & 255;
    $arrayidx = $1 + ($idxprom << 1) | 0;
    $6 = HEAP16[$arrayidx >> 1] | 0;
    $cmp2 = $6 << 16 >> 16 == 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $7 = HEAP32[$convert >> 2] | 0;
    $8 = $7;
    $9 = HEAP32[$userData >> 2] | 0;
    $10 = $9;
    $call = FUNCTION_TABLE_iii[$8 & 1023]($10, $3) | 0;
    $conv4 = $call & 65535;
    $11 = HEAP32[$fromP >> 2] | 0;
    $12 = HEAP8[$11] | 0;
    $idxprom5 = $12 & 255;
    $arrayidx6 = $2 + $idxprom5 | 0;
    $13 = HEAP8[$arrayidx6] | 0;
    $conv7 = $13 & 255;
    $sub = $conv7 - 3 | 0;
    $add_ptr = $11 + $sub | 0;
    $c_0 = $conv4;
    $storemerge = $add_ptr;
    label = 8;
    break;
   case 7:
    $incdec_ptr = $3 + 1 | 0;
    $c_0 = $6;
    $storemerge = $incdec_ptr;
    label = 8;
    break;
   case 8:
    HEAP32[$fromP >> 2] = $storemerge;
    $14 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr8 = $14 + 2 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr8;
    HEAP16[$14 >> 1] = $c_0;
    $15 = HEAP32[$fromP >> 2] | 0;
    $cmp = ($15 | 0) == ($fromLim | 0);
    if ($cmp) {
      label = 9;
      break;
    } else {
      $3 = $15;
      label = 4;
      break;
    }
   case 9:
    return;
  }
}
function _XmlInitEncoding($p, $encPtr, $name) {
  $p = $p | 0;
  $encPtr = $encPtr | 0;
  $name = $name | 0;
  var $call = 0, $cmp = 0, $conv = 0, $initEnc = 0, $isUtf16 = 0, $arrayidx = 0, $arrayidx4 = 0, $updatePosition = 0, $encPtr6 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $call = _getEncodingIndex($name) | 0;
    $cmp = ($call | 0) == -1;
    if ($cmp) {
      $retval_0 = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $conv = $call & 255;
    $initEnc = $p | 0;
    $isUtf16 = $p + 69 | 0;
    HEAP8[$isUtf16] = $conv;
    $arrayidx = $p | 0;
    HEAP32[$arrayidx >> 2] = 84;
    $arrayidx4 = $p + 4 | 0;
    HEAP32[$arrayidx4 >> 2] = 182;
    $updatePosition = $p + 48 | 0;
    HEAP32[$updatePosition >> 2] = 398;
    $encPtr6 = $p + 72 | 0;
    HEAP32[$encPtr6 >> 2] = $encPtr;
    HEAP32[$encPtr >> 2] = $initEnc;
    $retval_0 = 1;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _getEncodingIndex($name) {
  $name = $name | 0;
  var $cmp = 0, $i_0 = 0, $cmp1 = 0, $arrayidx = 0, $0 = 0, $call = 0, $tobool = 0, $inc = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($name | 0) == 0;
    if ($cmp) {
      $retval_0 = 6;
      label = 5;
      break;
    } else {
      $i_0 = 0;
      label = 3;
      break;
    }
   case 3:
    $cmp1 = ($i_0 | 0) < 6;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $retval_0 = -1;
      label = 5;
      break;
    }
   case 4:
    $arrayidx = 16296 + ($i_0 << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $call = _streqci($name, $0) | 0;
    $tobool = ($call | 0) == 0;
    $inc = $i_0 + 1 | 0;
    if ($tobool) {
      $i_0 = $inc;
      label = 3;
      break;
    } else {
      $retval_0 = $i_0;
      label = 5;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _initScanProlog($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  return _initScan($enc, 0, $ptr, $end, $nextTokPtr) | 0;
}
function _initScanContent($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  return _initScan($enc, 1, $ptr, $end, $nextTokPtr) | 0;
}
function _streqci($s1, $s2) {
  $s1 = $s1 | 0;
  $s2 = $s2 | 0;
  var $s1_addr_0 = 0, $s2_addr_0 = 0, $0 = 0, $1 = 0, $_off = 0, $2 = 0, $add = 0, $c1_0 = 0, $_off11 = 0, $3 = 0, $add17 = 0, $c2_0 = 0, $cmp22 = 0, $incdec_ptr1 = 0, $incdec_ptr = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $s2_addr_0 = $s2;
    $s1_addr_0 = $s1;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$s1_addr_0] | 0;
    $1 = HEAP8[$s2_addr_0] | 0;
    $_off = $0 - 97 & 255;
    $2 = ($_off & 255) < 26;
    $add = $0 - 32 & 255;
    $c1_0 = $2 ? $add : $0;
    $_off11 = $1 - 97 & 255;
    $3 = ($_off11 & 255) < 26;
    $add17 = $1 - 32 & 255;
    $c2_0 = $3 ? $add17 : $1;
    $cmp22 = $c1_0 << 24 >> 24 == $c2_0 << 24 >> 24;
    if ($cmp22) {
      label = 4;
      break;
    } else {
      $retval_0 = 0;
      label = 5;
      break;
    }
   case 4:
    $incdec_ptr1 = $s2_addr_0 + 1 | 0;
    $incdec_ptr = $s1_addr_0 + 1 | 0;
    $tobool = $c1_0 << 24 >> 24 == 0;
    if ($tobool) {
      $retval_0 = 1;
      label = 5;
      break;
    } else {
      $s2_addr_0 = $incdec_ptr1;
      $s1_addr_0 = $incdec_ptr;
      label = 3;
      break;
    }
   case 5:
    return $retval_0 | 0;
  }
  return 0;
}
function _initUpdatePosition($enc, $ptr, $end, $pos) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $pos = $pos | 0;
  _normal_updatePosition(528, $ptr, $end, $pos);
  return;
}
function _XmlParseXmlDecl($isGeneralTextEntity, $enc, $ptr, $end, $badPtr, $versionPtr, $versionEndPtr, $encodingName, $encoding, $standalone) {
  $isGeneralTextEntity = $isGeneralTextEntity | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $badPtr = $badPtr | 0;
  $versionPtr = $versionPtr | 0;
  $versionEndPtr = $versionEndPtr | 0;
  $encodingName = $encodingName | 0;
  $encoding = $encoding | 0;
  $standalone = $standalone | 0;
  return _doParseXmlDecl($isGeneralTextEntity, $enc, $ptr, $end, $badPtr, $versionPtr, $versionEndPtr, $encodingName, $encoding, $standalone) | 0;
}
function _doParseXmlDecl($isGeneralTextEntity, $enc, $ptr, $end, $badPtr, $versionPtr, $versionEndPtr, $encodingName, $encoding, $standalone) {
  $isGeneralTextEntity = $isGeneralTextEntity | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $badPtr = $badPtr | 0;
  $versionPtr = $versionPtr | 0;
  $versionEndPtr = $versionEndPtr | 0;
  $encodingName = $encodingName | 0;
  $encoding = $encoding | 0;
  $standalone = $standalone | 0;
  var $ptr_addr = 0, $val = 0, $name = 0, $nameEnd = 0, $minBytesPerChar = 0, $0 = 0, $mul = 0, $1 = 0, $add_ptr = 0, $2 = 0, $mul2 = 0, $idx_neg = 0, $add_ptr3 = 0, $call = 0, $tobool = 0, $3 = 0, $tobool4 = 0, $or_cond = 0, $4 = 0, $nameMatchesAscii = 0, $5 = 0, $6 = 0, $call5 = 0, $tobool6 = 0, $tobool8 = 0, $7 = 0, $tobool11 = 0, $8 = 0, $tobool14 = 0, $9 = 0, $10 = 0, $call17 = 0, $tobool18 = 0, $11 = 0, $12 = 0, $tobool21 = 0, $tobool23 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $call29 = 0, $tobool30 = 0, $17 = 0, $call32 = 0, $call32_off = 0, $18 = 0, $call32_off1 = 0, $19 = 0, $or_cond3 = 0, $20 = 0, $tobool40 = 0, $21 = 0, $tobool43 = 0, $22 = 0, $23 = 0, $24 = 0, $idx_neg46 = 0, $add_ptr47 = 0, $call48 = 0, $25 = 0, $call50 = 0, $tobool51 = 0, $26 = 0, $27 = 0, $tobool54 = 0, $28 = 0, $29 = 0, $30 = 0, $call59 = 0, $tobool60 = 0, $tobool62 = 0, $or_cond4 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $idx_neg67 = 0, $add_ptr68 = 0, $call69 = 0, $tobool70 = 0, $tobool72 = 0, $36 = 0, $call895 = 0, $call906 = 0, $tobool917 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $idx_neg78 = 0, $add_ptr79 = 0, $call80 = 0, $tobool81 = 0, $tobool83 = 0, $41 = 0, $42 = 0, $43 = 0, $add_ptr93 = 0, $call89 = 0, $call90 = 0, $tobool91 = 0, $44 = 0, $cmp94 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 32 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    $val = __stackBase__ + 8 | 0;
    $name = __stackBase__ + 16 | 0;
    $nameEnd = __stackBase__ + 24 | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    HEAP32[$val >> 2] = 0;
    HEAP32[$name >> 2] = 0;
    HEAP32[$nameEnd >> 2] = 0;
    $minBytesPerChar = $enc + 64 | 0;
    $0 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul = $0 * 5 & -1;
    $1 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr = $1 + $mul | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr;
    $2 = HEAP32[$minBytesPerChar >> 2] | 0;
    $mul2 = $2 << 1;
    $idx_neg = -$mul2 | 0;
    $add_ptr3 = $end + $idx_neg | 0;
    $call = _parsePseudoAttribute($enc, $add_ptr, $add_ptr3, $name, $nameEnd, $val, $ptr_addr) | 0;
    $tobool = ($call | 0) != 0;
    $3 = HEAP32[$name >> 2] | 0;
    $tobool4 = ($3 | 0) != 0;
    $or_cond = $tobool & $tobool4;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $4 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$badPtr >> 2] = $4;
    $retval_0 = 0;
    label = 39;
    break;
   case 4:
    $nameMatchesAscii = $enc + 24 | 0;
    $5 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $6 = HEAP32[$nameEnd >> 2] | 0;
    $call5 = FUNCTION_TABLE_iiiii[$5 & 1023]($enc, $3, $6, 166632) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $tobool8 = ($isGeneralTextEntity | 0) == 0;
    if ($tobool8) {
      label = 6;
      break;
    } else {
      label = 16;
      break;
    }
   case 6:
    $7 = HEAP32[$name >> 2] | 0;
    HEAP32[$badPtr >> 2] = $7;
    $retval_0 = 0;
    label = 39;
    break;
   case 7:
    $tobool11 = ($versionPtr | 0) == 0;
    if ($tobool11) {
      label = 9;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $8 = HEAP32[$val >> 2] | 0;
    HEAP32[$versionPtr >> 2] = $8;
    label = 9;
    break;
   case 9:
    $tobool14 = ($versionEndPtr | 0) == 0;
    if ($tobool14) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $9 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$versionEndPtr >> 2] = $9;
    label = 11;
    break;
   case 11:
    $10 = HEAP32[$ptr_addr >> 2] | 0;
    $call17 = _parsePseudoAttribute($enc, $10, $add_ptr3, $name, $nameEnd, $val, $ptr_addr) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $11 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$badPtr >> 2] = $11;
    $retval_0 = 0;
    label = 39;
    break;
   case 13:
    $12 = HEAP32[$name >> 2] | 0;
    $tobool21 = ($12 | 0) == 0;
    if ($tobool21) {
      label = 14;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $tobool23 = ($isGeneralTextEntity | 0) == 0;
    if ($tobool23) {
      $retval_0 = 1;
      label = 39;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $13 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$badPtr >> 2] = $13;
    $retval_0 = 0;
    label = 39;
    break;
   case 16:
    $14 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $15 = HEAP32[$name >> 2] | 0;
    $16 = HEAP32[$nameEnd >> 2] | 0;
    $call29 = FUNCTION_TABLE_iiiii[$14 & 1023]($enc, $15, $16, 166664) | 0;
    $tobool30 = ($call29 | 0) == 0;
    if ($tobool30) {
      label = 26;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $17 = HEAP32[$val >> 2] | 0;
    $call32 = _toAscii($enc, $17, $add_ptr3) | 0;
    $call32_off = $call32 - 97 | 0;
    $18 = $call32_off >>> 0 < 26;
    $call32_off1 = $call32 - 65 | 0;
    $19 = $call32_off1 >>> 0 < 26;
    $or_cond3 = $18 | $19;
    if ($or_cond3) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $20 = HEAP32[$val >> 2] | 0;
    HEAP32[$badPtr >> 2] = $20;
    $retval_0 = 0;
    label = 39;
    break;
   case 19:
    $tobool40 = ($encodingName | 0) == 0;
    if ($tobool40) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $21 = HEAP32[$val >> 2] | 0;
    HEAP32[$encodingName >> 2] = $21;
    label = 21;
    break;
   case 21:
    $tobool43 = ($encoding | 0) == 0;
    if ($tobool43) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $22 = HEAP32[$val >> 2] | 0;
    $23 = HEAP32[$ptr_addr >> 2] | 0;
    $24 = HEAP32[$minBytesPerChar >> 2] | 0;
    $idx_neg46 = -$24 | 0;
    $add_ptr47 = $23 + $idx_neg46 | 0;
    $call48 = _findEncoding($enc, $22, $add_ptr47) | 0;
    HEAP32[$encoding >> 2] = $call48;
    label = 23;
    break;
   case 23:
    $25 = HEAP32[$ptr_addr >> 2] | 0;
    $call50 = _parsePseudoAttribute($enc, $25, $add_ptr3, $name, $nameEnd, $val, $ptr_addr) | 0;
    $tobool51 = ($call50 | 0) == 0;
    if ($tobool51) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $26 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$badPtr >> 2] = $26;
    $retval_0 = 0;
    label = 39;
    break;
   case 25:
    $27 = HEAP32[$name >> 2] | 0;
    $tobool54 = ($27 | 0) == 0;
    if ($tobool54) {
      $retval_0 = 1;
      label = 39;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $28 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $29 = HEAP32[$name >> 2] | 0;
    $30 = HEAP32[$nameEnd >> 2] | 0;
    $call59 = FUNCTION_TABLE_iiiii[$28 & 1023]($enc, $29, $30, 166640) | 0;
    $tobool60 = ($call59 | 0) != 0;
    $tobool62 = ($isGeneralTextEntity | 0) == 0;
    $or_cond4 = $tobool60 & $tobool62;
    if ($or_cond4) {
      label = 28;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $31 = HEAP32[$name >> 2] | 0;
    HEAP32[$badPtr >> 2] = $31;
    $retval_0 = 0;
    label = 39;
    break;
   case 28:
    $32 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $33 = HEAP32[$val >> 2] | 0;
    $34 = HEAP32[$ptr_addr >> 2] | 0;
    $35 = HEAP32[$minBytesPerChar >> 2] | 0;
    $idx_neg67 = -$35 | 0;
    $add_ptr68 = $34 + $idx_neg67 | 0;
    $call69 = FUNCTION_TABLE_iiiii[$32 & 1023]($enc, $33, $add_ptr68, 166624) | 0;
    $tobool70 = ($call69 | 0) == 0;
    if ($tobool70) {
      label = 32;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $tobool72 = ($standalone | 0) == 0;
    if ($tobool72) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $36 = HEAP32[$ptr_addr >> 2] | 0;
    $call895 = _toAscii($enc, $36, $add_ptr3) | 0;
    $call906 = _isSpace($call895) | 0;
    $tobool917 = ($call906 | 0) == 0;
    if ($tobool917) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 31:
    HEAP32[$standalone >> 2] = 1;
    label = 30;
    break;
   case 32:
    $37 = HEAP32[$nameMatchesAscii >> 2] | 0;
    $38 = HEAP32[$val >> 2] | 0;
    $39 = HEAP32[$ptr_addr >> 2] | 0;
    $40 = HEAP32[$minBytesPerChar >> 2] | 0;
    $idx_neg78 = -$40 | 0;
    $add_ptr79 = $39 + $idx_neg78 | 0;
    $call80 = FUNCTION_TABLE_iiiii[$37 & 1023]($enc, $38, $add_ptr79, 166656) | 0;
    $tobool81 = ($call80 | 0) == 0;
    if ($tobool81) {
      label = 35;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $tobool83 = ($standalone | 0) == 0;
    if ($tobool83) {
      label = 30;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    HEAP32[$standalone >> 2] = 0;
    label = 30;
    break;
   case 35:
    $41 = HEAP32[$val >> 2] | 0;
    HEAP32[$badPtr >> 2] = $41;
    $retval_0 = 0;
    label = 39;
    break;
   case 36:
    $42 = HEAP32[$minBytesPerChar >> 2] | 0;
    $43 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr93 = $43 + $42 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr93;
    $call89 = _toAscii($enc, $add_ptr93, $add_ptr3) | 0;
    $call90 = _isSpace($call89) | 0;
    $tobool91 = ($call90 | 0) == 0;
    if ($tobool91) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 37:
    $44 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp94 = ($44 | 0) == ($add_ptr3 | 0);
    if ($cmp94) {
      $retval_0 = 1;
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    HEAP32[$badPtr >> 2] = $44;
    $retval_0 = 0;
    label = 39;
    break;
   case 39:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _findEncoding($enc, $ptr, $end) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $ptr_addr = 0, $buf = 0, $p = 0, $arraydecay = 0, $utf8Convert = 0, $0 = 0, $add_ptr1 = 0, $1 = 0, $cmp = 0, $2 = 0, $call = 0, $tobool = 0, $minBytesPerChar = 0, $3 = 0, $cmp3 = 0, $call7 = 0, $cmp8 = 0, $arrayidx = 0, $4 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 144 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    $buf = __stackBase__ + 8 | 0;
    $p = __stackBase__ + 136 | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    $arraydecay = $buf | 0;
    HEAP32[$p >> 2] = $arraydecay;
    $utf8Convert = $enc + 56 | 0;
    $0 = HEAP32[$utf8Convert >> 2] | 0;
    $add_ptr1 = $buf + 127 | 0;
    FUNCTION_TABLE_viiiii[$0 & 1023]($enc, $ptr_addr, $end, $p, $add_ptr1);
    $1 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp = ($1 | 0) == ($end | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 3:
    $2 = HEAP32[$p >> 2] | 0;
    HEAP8[$2] = 0;
    $call = _streqci($arraydecay, 166720) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $minBytesPerChar = $enc + 64 | 0;
    $3 = HEAP32[$minBytesPerChar >> 2] | 0;
    $cmp3 = ($3 | 0) == 2;
    if ($cmp3) {
      $retval_0 = $enc;
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $call7 = _getEncodingIndex($arraydecay) | 0;
    $cmp8 = ($call7 | 0) == -1;
    if ($cmp8) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $arrayidx = 20264 + ($call7 << 2) | 0;
    $4 = HEAP32[$arrayidx >> 2] | 0;
    $retval_0 = $4;
    label = 7;
    break;
   case 7:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_prologTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $and = 0, $tobool = 0, $and2 = 0, $cmp3 = 0, $add_ptr = 0, $end_addr_0 = 0, $arrayidx = 0, $0 = 0, $cmp7 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx9 = 0, $3 = 0, $conv10 = 0, $call = 0, $cond = 0, $add_ptr54167 = 0, $cmp55168 = 0, $type65 = 0, $4 = 0, $add_ptr13 = 0, $call14 = 0, $add_ptr16 = 0, $call17 = 0, $add_ptr19 = 0, $cmp20 = 0, $arrayidx24 = 0, $5 = 0, $cmp26 = 0, $6 = 0, $idxprom29 = 0, $type30 = 0, $7 = 0, $arrayidx31 = 0, $8 = 0, $conv32 = 0, $call36 = 0, $cond38 = 0, $add_ptr40 = 0, $call41 = 0, $add_ptr43 = 0, $call44 = 0, $add_ptr48 = 0, $cmp49 = 0, $add_ptr54170 = 0, $ptr_addr_0169 = 0, $arrayidx59 = 0, $9 = 0, $cmp61 = 0, $10 = 0, $idxprom64 = 0, $arrayidx66 = 0, $11 = 0, $conv67 = 0, $call71 = 0, $cond73 = 0, $add_ptr54 = 0, $cmp55 = 0, $add_ptr76 = 0, $cmp77 = 0, $add_ptr54_lcssa = 0, $add_ptr83 = 0, $call84 = 0, $add_ptr86 = 0, $add_ptr88 = 0, $add_ptr90 = 0, $cmp91 = 0, $arrayidx95 = 0, $12 = 0, $cmp97 = 0, $13 = 0, $cmp101 = 0, $add_ptr104 = 0, $cmp105 = 0, $arrayidx110 = 0, $14 = 0, $cmp112 = 0, $15 = 0, $cmp118 = 0, $add_ptr121 = 0, $add_ptr125 = 0, $add_ptr127 = 0, $cmp128 = 0, $arrayidx132 = 0, $16 = 0, $cmp134 = 0, $17 = 0, $idxprom137 = 0, $type138 = 0, $18 = 0, $arrayidx139 = 0, $19 = 0, $conv140 = 0, $call144 = 0, $cond146 = 0, $add_ptr148 = 0, $add_ptr150 = 0, $add_ptr152 = 0, $add_ptr156 = 0, $add_ptr158 = 0, $add_ptr160 = 0, $call161 = 0, $sub_ptr_lhs_cast163 = 0, $sub_ptr_sub165 = 0, $cmp166 = 0, $sub_ptr_lhs_cast171 = 0, $sub_ptr_sub173 = 0, $cmp174 = 0, $sub_ptr_lhs_cast179 = 0, $sub_ptr_sub181 = 0, $cmp182 = 0, $20 = 0, $idxprom192 = 0, $arrayidx193 = 0, $21 = 0, $conv194 = 0, $shl = 0, $22 = 0, $conv196 = 0, $shr164 = 0, $add = 0, $arrayidx197 = 0, $23 = 0, $and200 = 0, $shl201 = 0, $and202 = 0, $tobool203 = 0, $arrayidx209 = 0, $24 = 0, $conv210 = 0, $shl211 = 0, $add215 = 0, $arrayidx216 = 0, $25 = 0, $and221 = 0, $tobool222 = 0, $tok_0_ph = 0, $ptr_addr_1189 = 0, $cmp228190 = 0, $type236 = 0, $26 = 0, $ptr_addr_1192 = 0, $ptr_pn191 = 0, $arrayidx230 = 0, $27 = 0, $cmp232 = 0, $28 = 0, $idxprom235 = 0, $arrayidx237 = 0, $29 = 0, $conv238 = 0, $call242 = 0, $cond244 = 0, $30 = 0, $idxprom247 = 0, $arrayidx248 = 0, $31 = 0, $conv249 = 0, $shl250 = 0, $32 = 0, $conv252 = 0, $shr253165 = 0, $add254 = 0, $arrayidx255 = 0, $33 = 0, $and258 = 0, $shl259 = 0, $and260 = 0, $tobool261 = 0, $ptr_addr_1 = 0, $cmp228 = 0, $sub_ptr_lhs_cast267 = 0, $sub_ptr_rhs_cast268 = 0, $sub_ptr_sub269 = 0, $cmp270 = 0, $sub_ptr_lhs_cast275 = 0, $sub_ptr_rhs_cast276 = 0, $sub_ptr_sub277 = 0, $cmp278 = 0, $sub_ptr_lhs_cast283 = 0, $sub_ptr_rhs_cast284 = 0, $sub_ptr_sub285 = 0, $cmp286 = 0, $cmp292 = 0, $add_ptr296 = 0, $cmp298 = 0, $add_ptr302 = 0, $cmp304 = 0, $add_ptr308 = 0, $sub = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 95;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $and = $sub_ptr_sub & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $end_addr_0 = $end;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and2 = $sub_ptr_sub & -2;
    $cmp3 = ($and2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = -1;
      label = 95;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $ptr + $and2 | 0;
    $end_addr_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp7 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx9 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx9] | 0;
    $conv10 = $3 & 255;
    $cond = $conv10;
    label = 9;
    break;
   case 8:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 9;
    break;
   case 9:
    if (($cond | 0) == 21 | ($cond | 0) == 10) {
      label = 10;
      break;
    } else if (($cond | 0) == 12) {
      label = 12;
      break;
    } else if (($cond | 0) == 13) {
      label = 13;
      break;
    } else if (($cond | 0) == 2) {
      label = 14;
      break;
    } else if (($cond | 0) == 9) {
      label = 23;
      break;
    } else if (($cond | 0) == 30) {
      label = 33;
      break;
    } else if (($cond | 0) == 35) {
      label = 34;
      break;
    } else if (($cond | 0) == 20) {
      label = 35;
      break;
    } else if (($cond | 0) == 4) {
      label = 36;
      break;
    } else if (($cond | 0) == 31) {
      label = 44;
      break;
    } else if (($cond | 0) == 32) {
      label = 45;
      break;
    } else if (($cond | 0) == 36) {
      label = 55;
      break;
    } else if (($cond | 0) == 11) {
      label = 56;
      break;
    } else if (($cond | 0) == 19) {
      label = 57;
      break;
    } else if (($cond | 0) == 5) {
      label = 58;
      break;
    } else if (($cond | 0) == 6) {
      label = 60;
      break;
    } else if (($cond | 0) == 7) {
      label = 62;
      break;
    } else if (($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 64;
      break;
    } else if (($cond | 0) == 29) {
      label = 65;
      break;
    } else if (($cond | 0) == 22 | ($cond | 0) == 24) {
      $tok_0_ph = 18;
      label = 67;
      break;
    } else {
      label = 69;
      break;
    }
   case 10:
    $add_ptr54167 = $ptr + 2 | 0;
    $cmp55168 = ($add_ptr54167 | 0) == ($end_addr_0 | 0);
    if ($cmp55168) {
      $add_ptr54_lcssa = $add_ptr54167;
      label = 32;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $type65 = $enc + 72 | 0;
    $4 = $type65;
    $ptr_addr_0169 = $ptr;
    $add_ptr54170 = $add_ptr54167;
    label = 25;
    break;
   case 12:
    $add_ptr13 = $ptr + 2 | 0;
    $call14 = _little2_scanLit(12, $enc, $add_ptr13, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call14;
    label = 95;
    break;
   case 13:
    $add_ptr16 = $ptr + 2 | 0;
    $call17 = _little2_scanLit(13, $enc, $add_ptr16, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call17;
    label = 95;
    break;
   case 14:
    $add_ptr19 = $ptr + 2 | 0;
    $cmp20 = ($add_ptr19 | 0) == ($end_addr_0 | 0);
    if ($cmp20) {
      $retval_0 = -1;
      label = 95;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $arrayidx24 = $ptr + 3 | 0;
    $5 = HEAP8[$arrayidx24] | 0;
    $cmp26 = $5 << 24 >> 24 == 0;
    $6 = HEAP8[$add_ptr19] | 0;
    if ($cmp26) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $idxprom29 = $6 & 255;
    $type30 = $enc + 72 | 0;
    $7 = $type30;
    $arrayidx31 = $7 + $idxprom29 | 0;
    $8 = HEAP8[$arrayidx31] | 0;
    $conv32 = $8 & 255;
    $cond38 = $conv32;
    label = 18;
    break;
   case 17:
    $call36 = _unicode_byte_type($5, $6) | 0;
    $cond38 = $call36;
    label = 18;
    break;
   case 18:
    if (($cond38 | 0) == 16) {
      label = 19;
      break;
    } else if (($cond38 | 0) == 15) {
      label = 20;
      break;
    } else if (($cond38 | 0) == 22 | ($cond38 | 0) == 24 | ($cond38 | 0) == 29 | ($cond38 | 0) == 5 | ($cond38 | 0) == 6 | ($cond38 | 0) == 7) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 19:
    $add_ptr40 = $ptr + 4 | 0;
    $call41 = _little2_scanDecl($enc, $add_ptr40, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call41;
    label = 95;
    break;
   case 20:
    $add_ptr43 = $ptr + 4 | 0;
    $call44 = _little2_scanPi($enc, $add_ptr43, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call44;
    label = 95;
    break;
   case 21:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 29;
    label = 95;
    break;
   case 22:
    HEAP32[$nextTokPtr >> 2] = $add_ptr19;
    $retval_0 = 0;
    label = 95;
    break;
   case 23:
    $add_ptr48 = $ptr + 2 | 0;
    $cmp49 = ($add_ptr48 | 0) == ($end_addr_0 | 0);
    if ($cmp49) {
      label = 24;
      break;
    } else {
      label = 10;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $end_addr_0;
    $retval_0 = -15;
    label = 95;
    break;
   case 25:
    $arrayidx59 = $ptr_addr_0169 + 3 | 0;
    $9 = HEAP8[$arrayidx59] | 0;
    $cmp61 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$add_ptr54170] | 0;
    if ($cmp61) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $idxprom64 = $10 & 255;
    $arrayidx66 = $4 + $idxprom64 | 0;
    $11 = HEAP8[$arrayidx66] | 0;
    $conv67 = $11 & 255;
    $cond73 = $conv67;
    label = 28;
    break;
   case 27:
    $call71 = _unicode_byte_type($9, $10) | 0;
    $cond73 = $call71;
    label = 28;
    break;
   case 28:
    if (($cond73 | 0) == 21 | ($cond73 | 0) == 10) {
      label = 29;
      break;
    } else if (($cond73 | 0) == 9) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 29:
    $add_ptr54 = $add_ptr54170 + 2 | 0;
    $cmp55 = ($add_ptr54 | 0) == ($end_addr_0 | 0);
    if ($cmp55) {
      $add_ptr54_lcssa = $add_ptr54;
      label = 32;
      break;
    } else {
      $ptr_addr_0169 = $add_ptr54170;
      $add_ptr54170 = $add_ptr54;
      label = 25;
      break;
    }
   case 30:
    $add_ptr76 = $ptr_addr_0169 + 4 | 0;
    $cmp77 = ($add_ptr76 | 0) == ($end_addr_0 | 0);
    if ($cmp77) {
      label = 31;
      break;
    } else {
      label = 29;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $add_ptr54170;
    $retval_0 = 15;
    label = 95;
    break;
   case 32:
    HEAP32[$nextTokPtr >> 2] = $add_ptr54_lcssa;
    $retval_0 = 15;
    label = 95;
    break;
   case 33:
    $add_ptr83 = $ptr + 2 | 0;
    $call84 = _little2_scanPercent($enc, $add_ptr83, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call84;
    label = 95;
    break;
   case 34:
    $add_ptr86 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr86;
    $retval_0 = 38;
    label = 95;
    break;
   case 35:
    $add_ptr88 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr88;
    $retval_0 = 25;
    label = 95;
    break;
   case 36:
    $add_ptr90 = $ptr + 2 | 0;
    $cmp91 = ($add_ptr90 | 0) == ($end_addr_0 | 0);
    if ($cmp91) {
      $retval_0 = -26;
      label = 95;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $arrayidx95 = $ptr + 3 | 0;
    $12 = HEAP8[$arrayidx95] | 0;
    $cmp97 = $12 << 24 >> 24 == 0;
    if ($cmp97) {
      label = 38;
      break;
    } else {
      label = 43;
      break;
    }
   case 38:
    $13 = HEAP8[$add_ptr90] | 0;
    $cmp101 = $13 << 24 >> 24 == 93;
    if ($cmp101) {
      label = 39;
      break;
    } else {
      label = 43;
      break;
    }
   case 39:
    $add_ptr104 = $ptr + 4 | 0;
    $cmp105 = ($add_ptr104 | 0) == ($end_addr_0 | 0);
    if ($cmp105) {
      $retval_0 = -1;
      label = 95;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $arrayidx110 = $ptr + 5 | 0;
    $14 = HEAP8[$arrayidx110] | 0;
    $cmp112 = $14 << 24 >> 24 == 0;
    if ($cmp112) {
      label = 41;
      break;
    } else {
      label = 43;
      break;
    }
   case 41:
    $15 = HEAP8[$add_ptr104] | 0;
    $cmp118 = $15 << 24 >> 24 == 62;
    if ($cmp118) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    $add_ptr121 = $ptr + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr121;
    $retval_0 = 34;
    label = 95;
    break;
   case 43:
    HEAP32[$nextTokPtr >> 2] = $add_ptr90;
    $retval_0 = 26;
    label = 95;
    break;
   case 44:
    $add_ptr125 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr125;
    $retval_0 = 23;
    label = 95;
    break;
   case 45:
    $add_ptr127 = $ptr + 2 | 0;
    $cmp128 = ($add_ptr127 | 0) == ($end_addr_0 | 0);
    if ($cmp128) {
      $retval_0 = -24;
      label = 95;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $arrayidx132 = $ptr + 3 | 0;
    $16 = HEAP8[$arrayidx132] | 0;
    $cmp134 = $16 << 24 >> 24 == 0;
    $17 = HEAP8[$add_ptr127] | 0;
    if ($cmp134) {
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    $idxprom137 = $17 & 255;
    $type138 = $enc + 72 | 0;
    $18 = $type138;
    $arrayidx139 = $18 + $idxprom137 | 0;
    $19 = HEAP8[$arrayidx139] | 0;
    $conv140 = $19 & 255;
    $cond146 = $conv140;
    label = 49;
    break;
   case 48:
    $call144 = _unicode_byte_type($16, $17) | 0;
    $cond146 = $call144;
    label = 49;
    break;
   case 49:
    if (($cond146 | 0) == 33) {
      label = 50;
      break;
    } else if (($cond146 | 0) == 15) {
      label = 51;
      break;
    } else if (($cond146 | 0) == 34) {
      label = 52;
      break;
    } else if (($cond146 | 0) == 9 | ($cond146 | 0) == 10 | ($cond146 | 0) == 21 | ($cond146 | 0) == 11 | ($cond146 | 0) == 35 | ($cond146 | 0) == 36 | ($cond146 | 0) == 32) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 50:
    $add_ptr148 = $ptr + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr148;
    $retval_0 = 36;
    label = 95;
    break;
   case 51:
    $add_ptr150 = $ptr + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr150;
    $retval_0 = 35;
    label = 95;
    break;
   case 52:
    $add_ptr152 = $ptr + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr152;
    $retval_0 = 37;
    label = 95;
    break;
   case 53:
    HEAP32[$nextTokPtr >> 2] = $add_ptr127;
    $retval_0 = 24;
    label = 95;
    break;
   case 54:
    HEAP32[$nextTokPtr >> 2] = $add_ptr127;
    $retval_0 = 0;
    label = 95;
    break;
   case 55:
    $add_ptr156 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr156;
    $retval_0 = 21;
    label = 95;
    break;
   case 56:
    $add_ptr158 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr158;
    $retval_0 = 17;
    label = 95;
    break;
   case 57:
    $add_ptr160 = $ptr + 2 | 0;
    $call161 = _little2_scanPoundName($enc, $add_ptr160, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call161;
    label = 95;
    break;
   case 58:
    $sub_ptr_lhs_cast163 = $end_addr_0;
    $sub_ptr_sub165 = $sub_ptr_lhs_cast163 - $sub_ptr_rhs_cast | 0;
    $cmp166 = ($sub_ptr_sub165 | 0) < 2;
    if ($cmp166) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 60:
    $sub_ptr_lhs_cast171 = $end_addr_0;
    $sub_ptr_sub173 = $sub_ptr_lhs_cast171 - $sub_ptr_rhs_cast | 0;
    $cmp174 = ($sub_ptr_sub173 | 0) < 3;
    if ($cmp174) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 62:
    $sub_ptr_lhs_cast179 = $end_addr_0;
    $sub_ptr_sub181 = $sub_ptr_lhs_cast179 - $sub_ptr_rhs_cast | 0;
    $cmp182 = ($sub_ptr_sub181 | 0) < 4;
    if ($cmp182) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 64:
    $tok_0_ph = 19;
    label = 67;
    break;
   case 65:
    $20 = HEAP8[$arrayidx] | 0;
    $idxprom192 = $20 & 255;
    $arrayidx193 = $idxprom192 + 9272 | 0;
    $21 = HEAP8[$arrayidx193] | 0;
    $conv194 = $21 & 255;
    $shl = $conv194 << 3;
    $22 = HEAP8[$ptr] | 0;
    $conv196 = $22 & 255;
    $shr164 = $conv196 >>> 5;
    $add = $shr164 | $shl;
    $arrayidx197 = 9544 + ($add << 2) | 0;
    $23 = HEAP32[$arrayidx197 >> 2] | 0;
    $and200 = $conv196 & 31;
    $shl201 = 1 << $and200;
    $and202 = $shl201 & $23;
    $tobool203 = ($and202 | 0) == 0;
    if ($tobool203) {
      label = 66;
      break;
    } else {
      $tok_0_ph = 18;
      label = 67;
      break;
    }
   case 66:
    $arrayidx209 = $idxprom192 + 10824 | 0;
    $24 = HEAP8[$arrayidx209] | 0;
    $conv210 = $24 & 255;
    $shl211 = $conv210 << 3;
    $add215 = $shl211 | $shr164;
    $arrayidx216 = 9544 + ($add215 << 2) | 0;
    $25 = HEAP32[$arrayidx216 >> 2] | 0;
    $and221 = $25 & $shl201;
    $tobool222 = ($and221 | 0) == 0;
    if ($tobool222) {
      label = 69;
      break;
    } else {
      $tok_0_ph = 19;
      label = 67;
      break;
    }
   case 67:
    $ptr_addr_1189 = $ptr + 2 | 0;
    $cmp228190 = ($ptr_addr_1189 | 0) == ($end_addr_0 | 0);
    if ($cmp228190) {
      label = 94;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $type236 = $enc + 72 | 0;
    $26 = $type236;
    $ptr_pn191 = $ptr;
    $ptr_addr_1192 = $ptr_addr_1189;
    label = 70;
    break;
   case 69:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 70:
    $arrayidx230 = $ptr_pn191 + 3 | 0;
    $27 = HEAP8[$arrayidx230] | 0;
    $cmp232 = $27 << 24 >> 24 == 0;
    $28 = HEAP8[$ptr_addr_1192] | 0;
    if ($cmp232) {
      label = 71;
      break;
    } else {
      label = 72;
      break;
    }
   case 71:
    $idxprom235 = $28 & 255;
    $arrayidx237 = $26 + $idxprom235 | 0;
    $29 = HEAP8[$arrayidx237] | 0;
    $conv238 = $29 & 255;
    $cond244 = $conv238;
    label = 73;
    break;
   case 72:
    $call242 = _unicode_byte_type($27, $28) | 0;
    $cond244 = $call242;
    label = 73;
    break;
   case 73:
    if (($cond244 | 0) == 29) {
      label = 74;
      break;
    } else if (($cond244 | 0) == 22 | ($cond244 | 0) == 24 | ($cond244 | 0) == 25 | ($cond244 | 0) == 26 | ($cond244 | 0) == 27) {
      label = 75;
      break;
    } else if (($cond244 | 0) == 5) {
      label = 77;
      break;
    } else if (($cond244 | 0) == 6) {
      label = 79;
      break;
    } else if (($cond244 | 0) == 7) {
      label = 81;
      break;
    } else if (($cond244 | 0) == 11 | ($cond244 | 0) == 32 | ($cond244 | 0) == 35 | ($cond244 | 0) == 36 | ($cond244 | 0) == 20 | ($cond244 | 0) == 30 | ($cond244 | 0) == 21 | ($cond244 | 0) == 9 | ($cond244 | 0) == 10) {
      label = 83;
      break;
    } else if (($cond244 | 0) == 34) {
      label = 84;
      break;
    } else if (($cond244 | 0) == 33) {
      label = 87;
      break;
    } else if (($cond244 | 0) == 15) {
      label = 90;
      break;
    } else {
      label = 93;
      break;
    }
   case 74:
    $30 = HEAP8[$arrayidx230] | 0;
    $idxprom247 = $30 & 255;
    $arrayidx248 = $idxprom247 + 10824 | 0;
    $31 = HEAP8[$arrayidx248] | 0;
    $conv249 = $31 & 255;
    $shl250 = $conv249 << 3;
    $32 = HEAP8[$ptr_addr_1192] | 0;
    $conv252 = $32 & 255;
    $shr253165 = $conv252 >>> 5;
    $add254 = $shr253165 | $shl250;
    $arrayidx255 = 9544 + ($add254 << 2) | 0;
    $33 = HEAP32[$arrayidx255 >> 2] | 0;
    $and258 = $conv252 & 31;
    $shl259 = 1 << $and258;
    $and260 = $shl259 & $33;
    $tobool261 = ($and260 | 0) == 0;
    if ($tobool261) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $ptr_addr_1 = $ptr_addr_1192 + 2 | 0;
    $cmp228 = ($ptr_addr_1 | 0) == ($end_addr_0 | 0);
    if ($cmp228) {
      label = 94;
      break;
    } else {
      $ptr_pn191 = $ptr_addr_1192;
      $ptr_addr_1192 = $ptr_addr_1;
      label = 70;
      break;
    }
   case 76:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 77:
    $sub_ptr_lhs_cast267 = $end_addr_0;
    $sub_ptr_rhs_cast268 = $ptr_addr_1192;
    $sub_ptr_sub269 = $sub_ptr_lhs_cast267 - $sub_ptr_rhs_cast268 | 0;
    $cmp270 = ($sub_ptr_sub269 | 0) < 2;
    if ($cmp270) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 79:
    $sub_ptr_lhs_cast275 = $end_addr_0;
    $sub_ptr_rhs_cast276 = $ptr_addr_1192;
    $sub_ptr_sub277 = $sub_ptr_lhs_cast275 - $sub_ptr_rhs_cast276 | 0;
    $cmp278 = ($sub_ptr_sub277 | 0) < 3;
    if ($cmp278) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 81:
    $sub_ptr_lhs_cast283 = $end_addr_0;
    $sub_ptr_rhs_cast284 = $ptr_addr_1192;
    $sub_ptr_sub285 = $sub_ptr_lhs_cast283 - $sub_ptr_rhs_cast284 | 0;
    $cmp286 = ($sub_ptr_sub285 | 0) < 4;
    if ($cmp286) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 82;
      break;
    }
   case 82:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 83:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = $tok_0_ph;
    label = 95;
    break;
   case 84:
    $cmp292 = ($tok_0_ph | 0) == 19;
    if ($cmp292) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 86:
    $add_ptr296 = $ptr_pn191 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr296;
    $retval_0 = 32;
    label = 95;
    break;
   case 87:
    $cmp298 = ($tok_0_ph | 0) == 19;
    if ($cmp298) {
      label = 88;
      break;
    } else {
      label = 89;
      break;
    }
   case 88:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 89:
    $add_ptr302 = $ptr_pn191 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr302;
    $retval_0 = 31;
    label = 95;
    break;
   case 90:
    $cmp304 = ($tok_0_ph | 0) == 19;
    if ($cmp304) {
      label = 91;
      break;
    } else {
      label = 92;
      break;
    }
   case 91:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 92:
    $add_ptr308 = $ptr_pn191 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr308;
    $retval_0 = 30;
    label = 95;
    break;
   case 93:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 94:
    $sub = -$tok_0_ph | 0;
    $retval_0 = $sub;
    label = 95;
    break;
   case 95:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_contentTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $and = 0, $tobool = 0, $and2 = 0, $cmp3 = 0, $add_ptr = 0, $end_addr_0 = 0, $arrayidx = 0, $0 = 0, $cmp7 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx9 = 0, $3 = 0, $conv10 = 0, $call = 0, $cond = 0, $add_ptr13 = 0, $call14 = 0, $add_ptr16 = 0, $call17 = 0, $add_ptr19 = 0, $cmp20 = 0, $arrayidx24 = 0, $4 = 0, $cmp26 = 0, $5 = 0, $idxprom29 = 0, $type30 = 0, $6 = 0, $arrayidx31 = 0, $7 = 0, $conv32 = 0, $call36 = 0, $cond38 = 0, $cmp39 = 0, $add_ptr42 = 0, $add_ptr42_add_ptr19 = 0, $add_ptr45 = 0, $add_ptr47 = 0, $cmp48 = 0, $arrayidx52 = 0, $8 = 0, $cmp54 = 0, $9 = 0, $cmp58 = 0, $add_ptr62 = 0, $cmp63 = 0, $arrayidx67 = 0, $10 = 0, $cmp69 = 0, $11 = 0, $cmp74 = 0, $sub_ptr_lhs_cast80 = 0, $sub_ptr_sub82 = 0, $cmp83 = 0, $add_ptr87 = 0, $sub_ptr_lhs_cast89 = 0, $sub_ptr_sub91 = 0, $cmp92 = 0, $add_ptr96 = 0, $sub_ptr_lhs_cast98 = 0, $sub_ptr_sub100 = 0, $cmp101 = 0, $add_ptr105 = 0, $add_ptr107 = 0, $ptr_addr_1_ph = 0, $cmp10893 = 0, $type116 = 0, $12 = 0, $sub_ptr_lhs_cast126 = 0, $sub_ptr_lhs_cast135 = 0, $sub_ptr_lhs_cast144 = 0, $ptr_addr_194 = 0, $arrayidx110 = 0, $13 = 0, $cmp112 = 0, $14 = 0, $idxprom115 = 0, $arrayidx117 = 0, $15 = 0, $conv118 = 0, $call122 = 0, $cond124 = 0, $sub_ptr_rhs_cast127 = 0, $sub_ptr_sub128 = 0, $cmp129 = 0, $add_ptr133 = 0, $sub_ptr_rhs_cast136 = 0, $sub_ptr_sub137 = 0, $cmp138 = 0, $add_ptr142 = 0, $sub_ptr_rhs_cast145 = 0, $sub_ptr_sub146 = 0, $cmp147 = 0, $add_ptr151 = 0, $add_ptr153 = 0, $cmp154 = 0, $arrayidx158 = 0, $16 = 0, $cmp160 = 0, $17 = 0, $cmp166 = 0, $add_ptr171 = 0, $cmp172 = 0, $arrayidx176 = 0, $18 = 0, $cmp178 = 0, $19 = 0, $cmp184 = 0, $add_ptr194 = 0, $ptr_addr_1_be = 0, $cmp108 = 0, $ptr_addr_1_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 59;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $and = $sub_ptr_sub & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $end_addr_0 = $end;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and2 = $sub_ptr_sub & -2;
    $cmp3 = ($and2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $ptr + $and2 | 0;
    $end_addr_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp7 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx9 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx9] | 0;
    $conv10 = $3 & 255;
    $cond = $conv10;
    label = 9;
    break;
   case 8:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 9;
    break;
   case 9:
    if (($cond | 0) == 2) {
      label = 10;
      break;
    } else if (($cond | 0) == 3) {
      label = 11;
      break;
    } else if (($cond | 0) == 9) {
      label = 12;
      break;
    } else if (($cond | 0) == 10) {
      label = 17;
      break;
    } else if (($cond | 0) == 4) {
      label = 18;
      break;
    } else if (($cond | 0) == 5) {
      label = 25;
      break;
    } else if (($cond | 0) == 6) {
      label = 27;
      break;
    } else if (($cond | 0) == 7) {
      label = 29;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 10:
    $add_ptr13 = $ptr + 2 | 0;
    $call14 = _little2_scanLt($enc, $add_ptr13, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call14;
    label = 59;
    break;
   case 11:
    $add_ptr16 = $ptr + 2 | 0;
    $call17 = _little2_scanRef($enc, $add_ptr16, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call17;
    label = 59;
    break;
   case 12:
    $add_ptr19 = $ptr + 2 | 0;
    $cmp20 = ($add_ptr19 | 0) == ($end_addr_0 | 0);
    if ($cmp20) {
      $retval_0 = -3;
      label = 59;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $arrayidx24 = $ptr + 3 | 0;
    $4 = HEAP8[$arrayidx24] | 0;
    $cmp26 = $4 << 24 >> 24 == 0;
    $5 = HEAP8[$add_ptr19] | 0;
    if ($cmp26) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $idxprom29 = $5 & 255;
    $type30 = $enc + 72 | 0;
    $6 = $type30;
    $arrayidx31 = $6 + $idxprom29 | 0;
    $7 = HEAP8[$arrayidx31] | 0;
    $conv32 = $7 & 255;
    $cond38 = $conv32;
    label = 16;
    break;
   case 15:
    $call36 = _unicode_byte_type($4, $5) | 0;
    $cond38 = $call36;
    label = 16;
    break;
   case 16:
    $cmp39 = ($cond38 | 0) == 10;
    $add_ptr42 = $ptr + 4 | 0;
    $add_ptr42_add_ptr19 = $cmp39 ? $add_ptr42 : $add_ptr19;
    HEAP32[$nextTokPtr >> 2] = $add_ptr42_add_ptr19;
    $retval_0 = 7;
    label = 59;
    break;
   case 17:
    $add_ptr45 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr45;
    $retval_0 = 7;
    label = 59;
    break;
   case 18:
    $add_ptr47 = $ptr + 2 | 0;
    $cmp48 = ($add_ptr47 | 0) == ($end_addr_0 | 0);
    if ($cmp48) {
      $retval_0 = -5;
      label = 59;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $arrayidx52 = $ptr + 3 | 0;
    $8 = HEAP8[$arrayidx52] | 0;
    $cmp54 = $8 << 24 >> 24 == 0;
    if ($cmp54) {
      label = 20;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr47;
      label = 33;
      break;
    }
   case 20:
    $9 = HEAP8[$add_ptr47] | 0;
    $cmp58 = $9 << 24 >> 24 == 93;
    if ($cmp58) {
      label = 21;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr47;
      label = 33;
      break;
    }
   case 21:
    $add_ptr62 = $ptr + 4 | 0;
    $cmp63 = ($add_ptr62 | 0) == ($end_addr_0 | 0);
    if ($cmp63) {
      $retval_0 = -5;
      label = 59;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $arrayidx67 = $ptr + 5 | 0;
    $10 = HEAP8[$arrayidx67] | 0;
    $cmp69 = $10 << 24 >> 24 == 0;
    if ($cmp69) {
      label = 23;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr47;
      label = 33;
      break;
    }
   case 23:
    $11 = HEAP8[$add_ptr62] | 0;
    $cmp74 = $11 << 24 >> 24 == 62;
    if ($cmp74) {
      label = 24;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr47;
      label = 33;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $add_ptr62;
    $retval_0 = 0;
    label = 59;
    break;
   case 25:
    $sub_ptr_lhs_cast80 = $end_addr_0;
    $sub_ptr_sub82 = $sub_ptr_lhs_cast80 - $sub_ptr_rhs_cast | 0;
    $cmp83 = ($sub_ptr_sub82 | 0) < 2;
    if ($cmp83) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $add_ptr87 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr87;
    label = 33;
    break;
   case 27:
    $sub_ptr_lhs_cast89 = $end_addr_0;
    $sub_ptr_sub91 = $sub_ptr_lhs_cast89 - $sub_ptr_rhs_cast | 0;
    $cmp92 = ($sub_ptr_sub91 | 0) < 3;
    if ($cmp92) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add_ptr96 = $ptr + 3 | 0;
    $ptr_addr_1_ph = $add_ptr96;
    label = 33;
    break;
   case 29:
    $sub_ptr_lhs_cast98 = $end_addr_0;
    $sub_ptr_sub100 = $sub_ptr_lhs_cast98 - $sub_ptr_rhs_cast | 0;
    $cmp101 = ($sub_ptr_sub100 | 0) < 4;
    if ($cmp101) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $add_ptr105 = $ptr + 4 | 0;
    $ptr_addr_1_ph = $add_ptr105;
    label = 33;
    break;
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 32:
    $add_ptr107 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr107;
    label = 33;
    break;
   case 33:
    $cmp10893 = ($ptr_addr_1_ph | 0) == ($end_addr_0 | 0);
    if ($cmp10893) {
      $ptr_addr_1_lcssa = $ptr_addr_1_ph;
      label = 58;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $type116 = $enc + 72 | 0;
    $12 = $type116;
    $sub_ptr_lhs_cast126 = $end_addr_0;
    $sub_ptr_lhs_cast135 = $end_addr_0;
    $sub_ptr_lhs_cast144 = $end_addr_0;
    $ptr_addr_194 = $ptr_addr_1_ph;
    label = 35;
    break;
   case 35:
    $arrayidx110 = $ptr_addr_194 + 1 | 0;
    $13 = HEAP8[$arrayidx110] | 0;
    $cmp112 = $13 << 24 >> 24 == 0;
    $14 = HEAP8[$ptr_addr_194] | 0;
    if ($cmp112) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    $idxprom115 = $14 & 255;
    $arrayidx117 = $12 + $idxprom115 | 0;
    $15 = HEAP8[$arrayidx117] | 0;
    $conv118 = $15 & 255;
    $cond124 = $conv118;
    label = 38;
    break;
   case 37:
    $call122 = _unicode_byte_type($13, $14) | 0;
    $cond124 = $call122;
    label = 38;
    break;
   case 38:
    if (($cond124 | 0) == 5) {
      label = 39;
      break;
    } else if (($cond124 | 0) == 6) {
      label = 42;
      break;
    } else if (($cond124 | 0) == 7) {
      label = 45;
      break;
    } else if (($cond124 | 0) == 4) {
      label = 48;
      break;
    } else if (($cond124 | 0) == 3 | ($cond124 | 0) == 2 | ($cond124 | 0) == 0 | ($cond124 | 0) == 1 | ($cond124 | 0) == 8 | ($cond124 | 0) == 9 | ($cond124 | 0) == 10) {
      label = 55;
      break;
    } else {
      label = 56;
      break;
    }
   case 39:
    $sub_ptr_rhs_cast127 = $ptr_addr_194;
    $sub_ptr_sub128 = $sub_ptr_lhs_cast126 - $sub_ptr_rhs_cast127 | 0;
    $cmp129 = ($sub_ptr_sub128 | 0) < 2;
    if ($cmp129) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 40:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 41:
    $add_ptr133 = $ptr_addr_194 + 2 | 0;
    $ptr_addr_1_be = $add_ptr133;
    label = 57;
    break;
   case 42:
    $sub_ptr_rhs_cast136 = $ptr_addr_194;
    $sub_ptr_sub137 = $sub_ptr_lhs_cast135 - $sub_ptr_rhs_cast136 | 0;
    $cmp138 = ($sub_ptr_sub137 | 0) < 3;
    if ($cmp138) {
      label = 43;
      break;
    } else {
      label = 44;
      break;
    }
   case 43:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 44:
    $add_ptr142 = $ptr_addr_194 + 3 | 0;
    $ptr_addr_1_be = $add_ptr142;
    label = 57;
    break;
   case 45:
    $sub_ptr_rhs_cast145 = $ptr_addr_194;
    $sub_ptr_sub146 = $sub_ptr_lhs_cast144 - $sub_ptr_rhs_cast145 | 0;
    $cmp147 = ($sub_ptr_sub146 | 0) < 4;
    if ($cmp147) {
      label = 46;
      break;
    } else {
      label = 47;
      break;
    }
   case 46:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 47:
    $add_ptr151 = $ptr_addr_194 + 4 | 0;
    $ptr_addr_1_be = $add_ptr151;
    label = 57;
    break;
   case 48:
    $add_ptr153 = $ptr_addr_194 + 2 | 0;
    $cmp154 = ($add_ptr153 | 0) == ($end_addr_0 | 0);
    if ($cmp154) {
      label = 55;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $arrayidx158 = $ptr_addr_194 + 3 | 0;
    $16 = HEAP8[$arrayidx158] | 0;
    $cmp160 = $16 << 24 >> 24 == 0;
    if ($cmp160) {
      label = 50;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr153;
      label = 57;
      break;
    }
   case 50:
    $17 = HEAP8[$add_ptr153] | 0;
    $cmp166 = $17 << 24 >> 24 == 93;
    if ($cmp166) {
      label = 51;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr153;
      label = 57;
      break;
    }
   case 51:
    $add_ptr171 = $ptr_addr_194 + 4 | 0;
    $cmp172 = ($add_ptr171 | 0) == ($end_addr_0 | 0);
    if ($cmp172) {
      label = 55;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $arrayidx176 = $ptr_addr_194 + 5 | 0;
    $18 = HEAP8[$arrayidx176] | 0;
    $cmp178 = $18 << 24 >> 24 == 0;
    if ($cmp178) {
      label = 53;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr153;
      label = 57;
      break;
    }
   case 53:
    $19 = HEAP8[$add_ptr171] | 0;
    $cmp184 = $19 << 24 >> 24 == 62;
    if ($cmp184) {
      label = 54;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr153;
      label = 57;
      break;
    }
   case 54:
    HEAP32[$nextTokPtr >> 2] = $add_ptr171;
    $retval_0 = 0;
    label = 59;
    break;
   case 55:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 56:
    $add_ptr194 = $ptr_addr_194 + 2 | 0;
    $ptr_addr_1_be = $add_ptr194;
    label = 57;
    break;
   case 57:
    $cmp108 = ($ptr_addr_1_be | 0) == ($end_addr_0 | 0);
    if ($cmp108) {
      $ptr_addr_1_lcssa = $ptr_addr_1_be;
      label = 58;
      break;
    } else {
      $ptr_addr_194 = $ptr_addr_1_be;
      label = 35;
      break;
    }
   case 58:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1_lcssa;
    $retval_0 = 6;
    label = 59;
    break;
   case 59:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_cdataSectionTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $and = 0, $tobool = 0, $and2 = 0, $cmp3 = 0, $add_ptr = 0, $end_addr_0 = 0, $arrayidx = 0, $0 = 0, $cmp7 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx9 = 0, $3 = 0, $conv10 = 0, $call = 0, $cond = 0, $add_ptr13 = 0, $cmp14 = 0, $arrayidx18 = 0, $4 = 0, $cmp20 = 0, $5 = 0, $cmp24 = 0, $add_ptr28 = 0, $cmp29 = 0, $arrayidx33 = 0, $6 = 0, $cmp35 = 0, $7 = 0, $cmp40 = 0, $add_ptr45 = 0, $add_ptr47 = 0, $cmp48 = 0, $arrayidx52 = 0, $8 = 0, $cmp54 = 0, $9 = 0, $idxprom57 = 0, $type58 = 0, $10 = 0, $arrayidx59 = 0, $11 = 0, $conv60 = 0, $call64 = 0, $cond66 = 0, $cmp67 = 0, $add_ptr70 = 0, $add_ptr70_add_ptr47 = 0, $add_ptr73 = 0, $sub_ptr_lhs_cast75 = 0, $sub_ptr_sub77 = 0, $cmp78 = 0, $add_ptr82 = 0, $sub_ptr_lhs_cast84 = 0, $sub_ptr_sub86 = 0, $cmp87 = 0, $add_ptr91 = 0, $sub_ptr_lhs_cast93 = 0, $sub_ptr_sub95 = 0, $cmp96 = 0, $add_ptr100 = 0, $add_ptr102 = 0, $ptr_addr_1_ph = 0, $cmp10372 = 0, $type111 = 0, $12 = 0, $sub_ptr_lhs_cast121 = 0, $sub_ptr_lhs_cast130 = 0, $sub_ptr_lhs_cast139 = 0, $ptr_addr_173 = 0, $arrayidx105 = 0, $13 = 0, $cmp107 = 0, $14 = 0, $idxprom110 = 0, $arrayidx112 = 0, $15 = 0, $conv113 = 0, $call117 = 0, $cond119 = 0, $sub_ptr_rhs_cast122 = 0, $sub_ptr_sub123 = 0, $cmp124 = 0, $add_ptr128 = 0, $sub_ptr_rhs_cast131 = 0, $sub_ptr_sub132 = 0, $cmp133 = 0, $add_ptr137 = 0, $sub_ptr_rhs_cast140 = 0, $sub_ptr_sub141 = 0, $cmp142 = 0, $add_ptr146 = 0, $add_ptr149 = 0, $ptr_addr_1_be = 0, $cmp103 = 0, $ptr_addr_1_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 50;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $and = $sub_ptr_sub & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $end_addr_0 = $end;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and2 = $sub_ptr_sub & -2;
    $cmp3 = ($and2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $ptr + $and2 | 0;
    $end_addr_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp7 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx9 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx9] | 0;
    $conv10 = $3 & 255;
    $cond = $conv10;
    label = 9;
    break;
   case 8:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 9;
    break;
   case 9:
    if (($cond | 0) == 4) {
      label = 10;
      break;
    } else if (($cond | 0) == 9) {
      label = 17;
      break;
    } else if (($cond | 0) == 10) {
      label = 22;
      break;
    } else if (($cond | 0) == 5) {
      label = 23;
      break;
    } else if (($cond | 0) == 6) {
      label = 25;
      break;
    } else if (($cond | 0) == 7) {
      label = 27;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 10:
    $add_ptr13 = $ptr + 2 | 0;
    $cmp14 = ($add_ptr13 | 0) == ($end_addr_0 | 0);
    if ($cmp14) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $arrayidx18 = $ptr + 3 | 0;
    $4 = HEAP8[$arrayidx18] | 0;
    $cmp20 = $4 << 24 >> 24 == 0;
    if ($cmp20) {
      label = 12;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr13;
      label = 31;
      break;
    }
   case 12:
    $5 = HEAP8[$add_ptr13] | 0;
    $cmp24 = $5 << 24 >> 24 == 93;
    if ($cmp24) {
      label = 13;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr13;
      label = 31;
      break;
    }
   case 13:
    $add_ptr28 = $ptr + 4 | 0;
    $cmp29 = ($add_ptr28 | 0) == ($end_addr_0 | 0);
    if ($cmp29) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $arrayidx33 = $ptr + 5 | 0;
    $6 = HEAP8[$arrayidx33] | 0;
    $cmp35 = $6 << 24 >> 24 == 0;
    if ($cmp35) {
      label = 15;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr13;
      label = 31;
      break;
    }
   case 15:
    $7 = HEAP8[$add_ptr28] | 0;
    $cmp40 = $7 << 24 >> 24 == 62;
    if ($cmp40) {
      label = 16;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr13;
      label = 31;
      break;
    }
   case 16:
    $add_ptr45 = $ptr + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr45;
    $retval_0 = 40;
    label = 50;
    break;
   case 17:
    $add_ptr47 = $ptr + 2 | 0;
    $cmp48 = ($add_ptr47 | 0) == ($end_addr_0 | 0);
    if ($cmp48) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $arrayidx52 = $ptr + 3 | 0;
    $8 = HEAP8[$arrayidx52] | 0;
    $cmp54 = $8 << 24 >> 24 == 0;
    $9 = HEAP8[$add_ptr47] | 0;
    if ($cmp54) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom57 = $9 & 255;
    $type58 = $enc + 72 | 0;
    $10 = $type58;
    $arrayidx59 = $10 + $idxprom57 | 0;
    $11 = HEAP8[$arrayidx59] | 0;
    $conv60 = $11 & 255;
    $cond66 = $conv60;
    label = 21;
    break;
   case 20:
    $call64 = _unicode_byte_type($8, $9) | 0;
    $cond66 = $call64;
    label = 21;
    break;
   case 21:
    $cmp67 = ($cond66 | 0) == 10;
    $add_ptr70 = $ptr + 4 | 0;
    $add_ptr70_add_ptr47 = $cmp67 ? $add_ptr70 : $add_ptr47;
    HEAP32[$nextTokPtr >> 2] = $add_ptr70_add_ptr47;
    $retval_0 = 7;
    label = 50;
    break;
   case 22:
    $add_ptr73 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr73;
    $retval_0 = 7;
    label = 50;
    break;
   case 23:
    $sub_ptr_lhs_cast75 = $end_addr_0;
    $sub_ptr_sub77 = $sub_ptr_lhs_cast75 - $sub_ptr_rhs_cast | 0;
    $cmp78 = ($sub_ptr_sub77 | 0) < 2;
    if ($cmp78) {
      $retval_0 = -2;
      label = 50;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $add_ptr82 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr82;
    label = 31;
    break;
   case 25:
    $sub_ptr_lhs_cast84 = $end_addr_0;
    $sub_ptr_sub86 = $sub_ptr_lhs_cast84 - $sub_ptr_rhs_cast | 0;
    $cmp87 = ($sub_ptr_sub86 | 0) < 3;
    if ($cmp87) {
      $retval_0 = -2;
      label = 50;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $add_ptr91 = $ptr + 3 | 0;
    $ptr_addr_1_ph = $add_ptr91;
    label = 31;
    break;
   case 27:
    $sub_ptr_lhs_cast93 = $end_addr_0;
    $sub_ptr_sub95 = $sub_ptr_lhs_cast93 - $sub_ptr_rhs_cast | 0;
    $cmp96 = ($sub_ptr_sub95 | 0) < 4;
    if ($cmp96) {
      $retval_0 = -2;
      label = 50;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add_ptr100 = $ptr + 4 | 0;
    $ptr_addr_1_ph = $add_ptr100;
    label = 31;
    break;
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 50;
    break;
   case 30:
    $add_ptr102 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr102;
    label = 31;
    break;
   case 31:
    $cmp10372 = ($ptr_addr_1_ph | 0) == ($end_addr_0 | 0);
    if ($cmp10372) {
      $ptr_addr_1_lcssa = $ptr_addr_1_ph;
      label = 49;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $type111 = $enc + 72 | 0;
    $12 = $type111;
    $sub_ptr_lhs_cast121 = $end_addr_0;
    $sub_ptr_lhs_cast130 = $end_addr_0;
    $sub_ptr_lhs_cast139 = $end_addr_0;
    $ptr_addr_173 = $ptr_addr_1_ph;
    label = 33;
    break;
   case 33:
    $arrayidx105 = $ptr_addr_173 + 1 | 0;
    $13 = HEAP8[$arrayidx105] | 0;
    $cmp107 = $13 << 24 >> 24 == 0;
    $14 = HEAP8[$ptr_addr_173] | 0;
    if ($cmp107) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    $idxprom110 = $14 & 255;
    $arrayidx112 = $12 + $idxprom110 | 0;
    $15 = HEAP8[$arrayidx112] | 0;
    $conv113 = $15 & 255;
    $cond119 = $conv113;
    label = 36;
    break;
   case 35:
    $call117 = _unicode_byte_type($13, $14) | 0;
    $cond119 = $call117;
    label = 36;
    break;
   case 36:
    if (($cond119 | 0) == 5) {
      label = 37;
      break;
    } else if (($cond119 | 0) == 6) {
      label = 40;
      break;
    } else if (($cond119 | 0) == 7) {
      label = 43;
      break;
    } else if (($cond119 | 0) == 0 | ($cond119 | 0) == 1 | ($cond119 | 0) == 8 | ($cond119 | 0) == 9 | ($cond119 | 0) == 10 | ($cond119 | 0) == 4) {
      label = 46;
      break;
    } else {
      label = 47;
      break;
    }
   case 37:
    $sub_ptr_rhs_cast122 = $ptr_addr_173;
    $sub_ptr_sub123 = $sub_ptr_lhs_cast121 - $sub_ptr_rhs_cast122 | 0;
    $cmp124 = ($sub_ptr_sub123 | 0) < 2;
    if ($cmp124) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 39:
    $add_ptr128 = $ptr_addr_173 + 2 | 0;
    $ptr_addr_1_be = $add_ptr128;
    label = 48;
    break;
   case 40:
    $sub_ptr_rhs_cast131 = $ptr_addr_173;
    $sub_ptr_sub132 = $sub_ptr_lhs_cast130 - $sub_ptr_rhs_cast131 | 0;
    $cmp133 = ($sub_ptr_sub132 | 0) < 3;
    if ($cmp133) {
      label = 41;
      break;
    } else {
      label = 42;
      break;
    }
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 42:
    $add_ptr137 = $ptr_addr_173 + 3 | 0;
    $ptr_addr_1_be = $add_ptr137;
    label = 48;
    break;
   case 43:
    $sub_ptr_rhs_cast140 = $ptr_addr_173;
    $sub_ptr_sub141 = $sub_ptr_lhs_cast139 - $sub_ptr_rhs_cast140 | 0;
    $cmp142 = ($sub_ptr_sub141 | 0) < 4;
    if ($cmp142) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 45:
    $add_ptr146 = $ptr_addr_173 + 4 | 0;
    $ptr_addr_1_be = $add_ptr146;
    label = 48;
    break;
   case 46:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 47:
    $add_ptr149 = $ptr_addr_173 + 2 | 0;
    $ptr_addr_1_be = $add_ptr149;
    label = 48;
    break;
   case 48:
    $cmp103 = ($ptr_addr_1_be | 0) == ($end_addr_0 | 0);
    if ($cmp103) {
      $ptr_addr_1_lcssa = $ptr_addr_1_be;
      label = 49;
      break;
    } else {
      $ptr_addr_173 = $ptr_addr_1_be;
      label = 33;
      break;
    }
   case 49:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1_lcssa;
    $retval_0 = 6;
    label = 50;
    break;
   case 50:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_attributeValueTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $cmp148 = 0, $type = 0, $0 = 0, $ptr_addr_049 = 0, $arrayidx = 0, $1 = 0, $cmp2 = 0, $2 = 0, $idxprom = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr9 = 0, $add_ptr11 = 0, $cmp13 = 0, $add_ptr16 = 0, $call17 = 0, $cmp21 = 0, $add_ptr24 = 0, $cmp27 = 0, $add_ptr30 = 0, $cmp31 = 0, $arrayidx35 = 0, $4 = 0, $cmp37 = 0, $5 = 0, $idxprom40 = 0, $type41 = 0, $6 = 0, $arrayidx42 = 0, $7 = 0, $conv43 = 0, $call47 = 0, $cond49 = 0, $cmp50 = 0, $add_ptr53 = 0, $add_ptr53_add_ptr30 = 0, $cmp57 = 0, $add_ptr60 = 0, $add_ptr62 = 0, $ptr_addr_0_be = 0, $cmp1 = 0, $ptr_addr_0_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 32;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp148 = ($ptr | 0) == ($end | 0);
    if ($cmp148) {
      $ptr_addr_0_lcssa = $ptr;
      label = 31;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_049 = $ptr;
    label = 5;
    break;
   case 5:
    $arrayidx = $ptr_addr_049 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp2 = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr_addr_049] | 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $idxprom = $2 & 255;
    $arrayidx4 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 8;
    break;
   case 7:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 8;
    break;
   case 8:
    if (($cond | 0) == 5) {
      label = 9;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 11;
      break;
    } else if (($cond | 0) == 3) {
      label = 12;
      break;
    } else if (($cond | 0) == 2) {
      label = 15;
      break;
    } else if (($cond | 0) == 10) {
      label = 16;
      break;
    } else if (($cond | 0) == 9) {
      label = 19;
      break;
    } else if (($cond | 0) == 21) {
      label = 26;
      break;
    } else {
      label = 29;
      break;
    }
   case 9:
    $add_ptr = $ptr_addr_049 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 30;
    break;
   case 10:
    $add_ptr9 = $ptr_addr_049 + 3 | 0;
    $ptr_addr_0_be = $add_ptr9;
    label = 30;
    break;
   case 11:
    $add_ptr11 = $ptr_addr_049 + 4 | 0;
    $ptr_addr_0_be = $add_ptr11;
    label = 30;
    break;
   case 12:
    $cmp13 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp13) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add_ptr16 = $ptr_addr_049 + 2 | 0;
    $call17 = _little2_scanRef($enc, $add_ptr16, $end, $nextTokPtr) | 0;
    $retval_0 = $call17;
    label = 32;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 15:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 0;
    label = 32;
    break;
   case 16:
    $cmp21 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp21) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add_ptr24 = $ptr_addr_049 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr24;
    $retval_0 = 7;
    label = 32;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 19:
    $cmp27 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp27) {
      label = 20;
      break;
    } else {
      label = 25;
      break;
    }
   case 20:
    $add_ptr30 = $ptr_addr_049 + 2 | 0;
    $cmp31 = ($add_ptr30 | 0) == ($end | 0);
    if ($cmp31) {
      $retval_0 = -3;
      label = 32;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $arrayidx35 = $ptr_addr_049 + 3 | 0;
    $4 = HEAP8[$arrayidx35] | 0;
    $cmp37 = $4 << 24 >> 24 == 0;
    $5 = HEAP8[$add_ptr30] | 0;
    if ($cmp37) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $idxprom40 = $5 & 255;
    $type41 = $enc + 72 | 0;
    $6 = $type41;
    $arrayidx42 = $6 + $idxprom40 | 0;
    $7 = HEAP8[$arrayidx42] | 0;
    $conv43 = $7 & 255;
    $cond49 = $conv43;
    label = 24;
    break;
   case 23:
    $call47 = _unicode_byte_type($4, $5) | 0;
    $cond49 = $call47;
    label = 24;
    break;
   case 24:
    $cmp50 = ($cond49 | 0) == 10;
    $add_ptr53 = $ptr_addr_049 + 4 | 0;
    $add_ptr53_add_ptr30 = $cmp50 ? $add_ptr53 : $add_ptr30;
    HEAP32[$nextTokPtr >> 2] = $add_ptr53_add_ptr30;
    $retval_0 = 7;
    label = 32;
    break;
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 26:
    $cmp57 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp57) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $add_ptr60 = $ptr_addr_049 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr60;
    $retval_0 = 39;
    label = 32;
    break;
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 29:
    $add_ptr62 = $ptr_addr_049 + 2 | 0;
    $ptr_addr_0_be = $add_ptr62;
    label = 30;
    break;
   case 30:
    $cmp1 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp1) {
      $ptr_addr_0_lcssa = $ptr_addr_0_be;
      label = 31;
      break;
    } else {
      $ptr_addr_049 = $ptr_addr_0_be;
      label = 5;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0_lcssa;
    $retval_0 = 6;
    label = 32;
    break;
   case 32:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_entityValueTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $cmp149 = 0, $type = 0, $0 = 0, $ptr_addr_050 = 0, $arrayidx = 0, $1 = 0, $cmp2 = 0, $2 = 0, $idxprom = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr9 = 0, $add_ptr11 = 0, $cmp13 = 0, $add_ptr16 = 0, $call17 = 0, $cmp20 = 0, $add_ptr23 = 0, $call24 = 0, $cmp25 = 0, $cond30 = 0, $cmp33 = 0, $add_ptr36 = 0, $cmp39 = 0, $add_ptr42 = 0, $cmp43 = 0, $arrayidx47 = 0, $4 = 0, $cmp49 = 0, $5 = 0, $idxprom52 = 0, $type53 = 0, $6 = 0, $arrayidx54 = 0, $7 = 0, $conv55 = 0, $call59 = 0, $cond61 = 0, $cmp62 = 0, $add_ptr65 = 0, $add_ptr65_add_ptr42 = 0, $add_ptr68 = 0, $ptr_addr_0_be = 0, $cmp1 = 0, $ptr_addr_0_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 31;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp149 = ($ptr | 0) == ($end | 0);
    if ($cmp149) {
      $ptr_addr_0_lcssa = $ptr;
      label = 30;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_050 = $ptr;
    label = 5;
    break;
   case 5:
    $arrayidx = $ptr_addr_050 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp2 = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr_addr_050] | 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $idxprom = $2 & 255;
    $arrayidx4 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 8;
    break;
   case 7:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 8;
    break;
   case 8:
    if (($cond | 0) == 5) {
      label = 9;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 11;
      break;
    } else if (($cond | 0) == 3) {
      label = 12;
      break;
    } else if (($cond | 0) == 30) {
      label = 15;
      break;
    } else if (($cond | 0) == 10) {
      label = 18;
      break;
    } else if (($cond | 0) == 9) {
      label = 21;
      break;
    } else {
      label = 28;
      break;
    }
   case 9:
    $add_ptr = $ptr_addr_050 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 29;
    break;
   case 10:
    $add_ptr9 = $ptr_addr_050 + 3 | 0;
    $ptr_addr_0_be = $add_ptr9;
    label = 29;
    break;
   case 11:
    $add_ptr11 = $ptr_addr_050 + 4 | 0;
    $ptr_addr_0_be = $add_ptr11;
    label = 29;
    break;
   case 12:
    $cmp13 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp13) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add_ptr16 = $ptr_addr_050 + 2 | 0;
    $call17 = _little2_scanRef($enc, $add_ptr16, $end, $nextTokPtr) | 0;
    $retval_0 = $call17;
    label = 31;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 15:
    $cmp20 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp20) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $add_ptr23 = $ptr_addr_050 + 2 | 0;
    $call24 = _little2_scanPercent($enc, $add_ptr23, $end, $nextTokPtr) | 0;
    $cmp25 = ($call24 | 0) == 22;
    $cond30 = $cmp25 ? 0 : $call24;
    $retval_0 = $cond30;
    label = 31;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 18:
    $cmp33 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp33) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $add_ptr36 = $ptr_addr_050 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr36;
    $retval_0 = 7;
    label = 31;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 21:
    $cmp39 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp39) {
      label = 22;
      break;
    } else {
      label = 27;
      break;
    }
   case 22:
    $add_ptr42 = $ptr_addr_050 + 2 | 0;
    $cmp43 = ($add_ptr42 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -3;
      label = 31;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $arrayidx47 = $ptr_addr_050 + 3 | 0;
    $4 = HEAP8[$arrayidx47] | 0;
    $cmp49 = $4 << 24 >> 24 == 0;
    $5 = HEAP8[$add_ptr42] | 0;
    if ($cmp49) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $idxprom52 = $5 & 255;
    $type53 = $enc + 72 | 0;
    $6 = $type53;
    $arrayidx54 = $6 + $idxprom52 | 0;
    $7 = HEAP8[$arrayidx54] | 0;
    $conv55 = $7 & 255;
    $cond61 = $conv55;
    label = 26;
    break;
   case 25:
    $call59 = _unicode_byte_type($4, $5) | 0;
    $cond61 = $call59;
    label = 26;
    break;
   case 26:
    $cmp62 = ($cond61 | 0) == 10;
    $add_ptr65 = $ptr_addr_050 + 4 | 0;
    $add_ptr65_add_ptr42 = $cmp62 ? $add_ptr65 : $add_ptr42;
    HEAP32[$nextTokPtr >> 2] = $add_ptr65_add_ptr42;
    $retval_0 = 7;
    label = 31;
    break;
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 28:
    $add_ptr68 = $ptr_addr_050 + 2 | 0;
    $ptr_addr_0_be = $add_ptr68;
    label = 29;
    break;
   case 29:
    $cmp1 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp1) {
      $ptr_addr_0_lcssa = $ptr_addr_0_be;
      label = 30;
      break;
    } else {
      $ptr_addr_050 = $ptr_addr_0_be;
      label = 5;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0_lcssa;
    $retval_0 = 6;
    label = 31;
    break;
   case 31:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_nameMatchesAscii($enc, $ptr1, $end1, $ptr2) {
  $enc = $enc | 0;
  $ptr1 = $ptr1 | 0;
  $end1 = $end1 | 0;
  $ptr2 = $ptr2 | 0;
  var $0 = 0, $tobool7 = 0, $cmp8 = 0, $cmp11 = 0, $1 = 0, $ptr2_addr_010 = 0, $ptr1_addr_09 = 0, $arrayidx = 0, $2 = 0, $cmp1 = 0, $3 = 0, $cmp6 = 0, $add_ptr = 0, $incdec_ptr = 0, $4 = 0, $tobool = 0, $cmp = 0, $cmp_lcssa = 0, $conv11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$ptr2] | 0;
    $tobool7 = $0 << 24 >> 24 == 0;
    $cmp8 = ($ptr1 | 0) == ($end1 | 0);
    if ($tobool7) {
      $cmp_lcssa = $cmp8;
      label = 7;
      break;
    } else {
      $ptr1_addr_09 = $ptr1;
      $ptr2_addr_010 = $ptr2;
      $1 = $0;
      $cmp11 = $cmp8;
      label = 3;
      break;
    }
   case 3:
    if ($cmp11) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $arrayidx = $ptr1_addr_09 + 1 | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $cmp1 = $2 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 8;
      break;
    }
   case 5:
    $3 = HEAP8[$ptr1_addr_09] | 0;
    $cmp6 = $3 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 8;
      break;
    }
   case 6:
    $add_ptr = $ptr1_addr_09 + 2 | 0;
    $incdec_ptr = $ptr2_addr_010 + 1 | 0;
    $4 = HEAP8[$incdec_ptr] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    $cmp = ($add_ptr | 0) == ($end1 | 0);
    if ($tobool) {
      $cmp_lcssa = $cmp;
      label = 7;
      break;
    } else {
      $ptr1_addr_09 = $add_ptr;
      $ptr2_addr_010 = $incdec_ptr;
      $1 = $4;
      $cmp11 = $cmp;
      label = 3;
      break;
    }
   case 7:
    $conv11 = $cmp_lcssa & 1;
    $retval_0 = $conv11;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_predefinedEntityName($enc, $ptr, $end) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $div = 0, $arrayidx = 0, $0 = 0, $cmp = 0, $add_ptr = 0, $1 = 0, $cmp5 = 0, $arrayidx7 = 0, $2 = 0, $cmp9 = 0, $3 = 0, $conv12 = 0, $arrayidx16 = 0, $4 = 0, $cmp18 = 0, $5 = 0, $cmp23 = 0, $arrayidx27 = 0, $6 = 0, $cmp29 = 0, $add_ptr26 = 0, $7 = 0, $cmp34 = 0, $arrayidx38 = 0, $8 = 0, $cmp40 = 0, $add_ptr37 = 0, $9 = 0, $cmp45 = 0, $arrayidx52 = 0, $10 = 0, $cmp54 = 0, $11 = 0, $conv58 = 0, $arrayidx64 = 0, $12 = 0, $cmp66 = 0, $add_ptr63 = 0, $13 = 0, $cmp71 = 0, $arrayidx75 = 0, $14 = 0, $cmp77 = 0, $add_ptr74 = 0, $15 = 0, $cmp82 = 0, $arrayidx86 = 0, $16 = 0, $cmp88 = 0, $add_ptr85 = 0, $17 = 0, $cmp93 = 0, $arrayidx101 = 0, $18 = 0, $cmp103 = 0, $add_ptr100 = 0, $19 = 0, $cmp108 = 0, $arrayidx112 = 0, $20 = 0, $cmp114 = 0, $add_ptr111 = 0, $21 = 0, $cmp119 = 0, $arrayidx123 = 0, $22 = 0, $cmp125 = 0, $add_ptr122 = 0, $23 = 0, $cmp130 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $div = ($sub_ptr_sub | 0) / 2 & -1;
    if (($div | 0) == 2) {
      label = 3;
      break;
    } else if (($div | 0) == 3) {
      label = 8;
      break;
    } else if (($div | 0) == 4) {
      label = 14;
      break;
    } else {
      label = 28;
      break;
    }
   case 3:
    $arrayidx = $ptr + 3 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 28;
      break;
    }
   case 4:
    $add_ptr = $ptr + 2 | 0;
    $1 = HEAP8[$add_ptr] | 0;
    $cmp5 = $1 << 24 >> 24 == 116;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 28;
      break;
    }
   case 5:
    $arrayidx7 = $ptr + 1 | 0;
    $2 = HEAP8[$arrayidx7] | 0;
    $cmp9 = $2 << 24 >> 24 == 0;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 28;
      break;
    }
   case 6:
    $3 = HEAP8[$ptr] | 0;
    $conv12 = $3 << 24 >> 24;
    if (($conv12 | 0) == 103) {
      label = 7;
      break;
    } else if (($conv12 | 0) == 108) {
      $retval_0 = 60;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 7:
    $retval_0 = 62;
    label = 29;
    break;
   case 8:
    $arrayidx16 = $ptr + 1 | 0;
    $4 = HEAP8[$arrayidx16] | 0;
    $cmp18 = $4 << 24 >> 24 == 0;
    if ($cmp18) {
      label = 9;
      break;
    } else {
      label = 28;
      break;
    }
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $cmp23 = $5 << 24 >> 24 == 97;
    if ($cmp23) {
      label = 10;
      break;
    } else {
      label = 28;
      break;
    }
   case 10:
    $arrayidx27 = $ptr + 3 | 0;
    $6 = HEAP8[$arrayidx27] | 0;
    $cmp29 = $6 << 24 >> 24 == 0;
    if ($cmp29) {
      label = 11;
      break;
    } else {
      label = 28;
      break;
    }
   case 11:
    $add_ptr26 = $ptr + 2 | 0;
    $7 = HEAP8[$add_ptr26] | 0;
    $cmp34 = $7 << 24 >> 24 == 109;
    if ($cmp34) {
      label = 12;
      break;
    } else {
      label = 28;
      break;
    }
   case 12:
    $arrayidx38 = $ptr + 5 | 0;
    $8 = HEAP8[$arrayidx38] | 0;
    $cmp40 = $8 << 24 >> 24 == 0;
    if ($cmp40) {
      label = 13;
      break;
    } else {
      label = 28;
      break;
    }
   case 13:
    $add_ptr37 = $ptr + 4 | 0;
    $9 = HEAP8[$add_ptr37] | 0;
    $cmp45 = $9 << 24 >> 24 == 112;
    if ($cmp45) {
      $retval_0 = 38;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 14:
    $arrayidx52 = $ptr + 1 | 0;
    $10 = HEAP8[$arrayidx52] | 0;
    $cmp54 = $10 << 24 >> 24 == 0;
    if ($cmp54) {
      label = 15;
      break;
    } else {
      label = 28;
      break;
    }
   case 15:
    $11 = HEAP8[$ptr] | 0;
    $conv58 = $11 << 24 >> 24;
    if (($conv58 | 0) == 113) {
      label = 16;
      break;
    } else if (($conv58 | 0) == 97) {
      label = 22;
      break;
    } else {
      label = 28;
      break;
    }
   case 16:
    $arrayidx64 = $ptr + 3 | 0;
    $12 = HEAP8[$arrayidx64] | 0;
    $cmp66 = $12 << 24 >> 24 == 0;
    if ($cmp66) {
      label = 17;
      break;
    } else {
      label = 28;
      break;
    }
   case 17:
    $add_ptr63 = $ptr + 2 | 0;
    $13 = HEAP8[$add_ptr63] | 0;
    $cmp71 = $13 << 24 >> 24 == 117;
    if ($cmp71) {
      label = 18;
      break;
    } else {
      label = 28;
      break;
    }
   case 18:
    $arrayidx75 = $ptr + 5 | 0;
    $14 = HEAP8[$arrayidx75] | 0;
    $cmp77 = $14 << 24 >> 24 == 0;
    if ($cmp77) {
      label = 19;
      break;
    } else {
      label = 28;
      break;
    }
   case 19:
    $add_ptr74 = $ptr + 4 | 0;
    $15 = HEAP8[$add_ptr74] | 0;
    $cmp82 = $15 << 24 >> 24 == 111;
    if ($cmp82) {
      label = 20;
      break;
    } else {
      label = 28;
      break;
    }
   case 20:
    $arrayidx86 = $ptr + 7 | 0;
    $16 = HEAP8[$arrayidx86] | 0;
    $cmp88 = $16 << 24 >> 24 == 0;
    if ($cmp88) {
      label = 21;
      break;
    } else {
      label = 28;
      break;
    }
   case 21:
    $add_ptr85 = $ptr + 6 | 0;
    $17 = HEAP8[$add_ptr85] | 0;
    $cmp93 = $17 << 24 >> 24 == 116;
    if ($cmp93) {
      $retval_0 = 34;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 22:
    $arrayidx101 = $ptr + 3 | 0;
    $18 = HEAP8[$arrayidx101] | 0;
    $cmp103 = $18 << 24 >> 24 == 0;
    if ($cmp103) {
      label = 23;
      break;
    } else {
      label = 28;
      break;
    }
   case 23:
    $add_ptr100 = $ptr + 2 | 0;
    $19 = HEAP8[$add_ptr100] | 0;
    $cmp108 = $19 << 24 >> 24 == 112;
    if ($cmp108) {
      label = 24;
      break;
    } else {
      label = 28;
      break;
    }
   case 24:
    $arrayidx112 = $ptr + 5 | 0;
    $20 = HEAP8[$arrayidx112] | 0;
    $cmp114 = $20 << 24 >> 24 == 0;
    if ($cmp114) {
      label = 25;
      break;
    } else {
      label = 28;
      break;
    }
   case 25:
    $add_ptr111 = $ptr + 4 | 0;
    $21 = HEAP8[$add_ptr111] | 0;
    $cmp119 = $21 << 24 >> 24 == 111;
    if ($cmp119) {
      label = 26;
      break;
    } else {
      label = 28;
      break;
    }
   case 26:
    $arrayidx123 = $ptr + 7 | 0;
    $22 = HEAP8[$arrayidx123] | 0;
    $cmp125 = $22 << 24 >> 24 == 0;
    if ($cmp125) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $add_ptr122 = $ptr + 6 | 0;
    $23 = HEAP8[$add_ptr122] | 0;
    $cmp130 = $23 << 24 >> 24 == 115;
    if ($cmp130) {
      $retval_0 = 39;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $retval_0 = 0;
    label = 29;
    break;
   case 29:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_sameName($enc, $ptr1, $ptr2) {
  $enc = $enc | 0;
  $ptr1 = $ptr1 | 0;
  $ptr2 = $ptr2 | 0;
  var $type = 0, $0 = 0, $ptr1_addr_0 = 0, $ptr2_addr_0 = 0, $arrayidx = 0, $1 = 0, $cmp = 0, $2 = 0, $idxprom = 0, $arrayidx2 = 0, $3 = 0, $conv3 = 0, $call = 0, $cond = 0, $4 = 0, $incdec_ptr7 = 0, $5 = 0, $cmp9 = 0, $ptr1_addr_1 = 0, $ptr2_addr_1 = 0, $incdec_ptr12 = 0, $6 = 0, $incdec_ptr14 = 0, $7 = 0, $cmp16 = 0, $ptr1_addr_2 = 0, $ptr2_addr_2 = 0, $8 = 0, $9 = 0, $cmp25 = 0, $incdec_ptr23 = 0, $incdec_ptr21 = 0, $10 = 0, $11 = 0, $cmp33 = 0, $12 = 0, $13 = 0, $cmp42 = 0, $incdec_ptr38 = 0, $14 = 0, $15 = 0, $cmp50 = 0, $ptr1_addr_0_pn = 0, $ptr2_addr_0_pn = 0, $ptr2_addr_0_be = 0, $ptr1_addr_0_be = 0, $arrayidx54 = 0, $16 = 0, $cmp56 = 0, $17 = 0, $idxprom59 = 0, $type60 = 0, $18 = 0, $arrayidx61 = 0, $19 = 0, $conv62 = 0, $call66 = 0, $cond68 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr2_addr_0 = $ptr2;
    $ptr1_addr_0 = $ptr1;
    label = 3;
    break;
   case 3:
    $arrayidx = $ptr1_addr_0 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr1_addr_0] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $2 & 255;
    $arrayidx2 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx2] | 0;
    $conv3 = $3 & 255;
    $cond = $conv3;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 7) {
      label = 7;
      break;
    } else if (($cond | 0) == 6) {
      $ptr2_addr_1 = $ptr2_addr_0;
      $ptr1_addr_1 = $ptr1_addr_0;
      label = 8;
      break;
    } else if (($cond | 0) == 5) {
      $ptr2_addr_2 = $ptr2_addr_0;
      $ptr1_addr_2 = $ptr1_addr_0;
      label = 9;
      break;
    } else if (($cond | 0) == 29 | ($cond | 0) == 22 | ($cond | 0) == 24 | ($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 11;
      break;
    } else {
      label = 14;
      break;
    }
   case 7:
    $4 = HEAP8[$ptr1_addr_0] | 0;
    $incdec_ptr7 = $ptr2_addr_0 + 1 | 0;
    $5 = HEAP8[$ptr2_addr_0] | 0;
    $cmp9 = $4 << 24 >> 24 == $5 << 24 >> 24;
    if ($cmp9) {
      $ptr2_addr_1 = $incdec_ptr7;
      $ptr1_addr_1 = $arrayidx;
      label = 8;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 8:
    $incdec_ptr12 = $ptr1_addr_1 + 1 | 0;
    $6 = HEAP8[$ptr1_addr_1] | 0;
    $incdec_ptr14 = $ptr2_addr_1 + 1 | 0;
    $7 = HEAP8[$ptr2_addr_1] | 0;
    $cmp16 = $6 << 24 >> 24 == $7 << 24 >> 24;
    if ($cmp16) {
      $ptr2_addr_2 = $incdec_ptr14;
      $ptr1_addr_2 = $incdec_ptr12;
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 9:
    $8 = HEAP8[$ptr1_addr_2] | 0;
    $9 = HEAP8[$ptr2_addr_2] | 0;
    $cmp25 = $8 << 24 >> 24 == $9 << 24 >> 24;
    if ($cmp25) {
      label = 10;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 10:
    $incdec_ptr23 = $ptr2_addr_2 + 1 | 0;
    $incdec_ptr21 = $ptr1_addr_2 + 1 | 0;
    $10 = HEAP8[$incdec_ptr21] | 0;
    $11 = HEAP8[$incdec_ptr23] | 0;
    $cmp33 = $10 << 24 >> 24 == $11 << 24 >> 24;
    if ($cmp33) {
      $ptr2_addr_0_pn = $ptr2_addr_2;
      $ptr1_addr_0_pn = $ptr1_addr_2;
      label = 13;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 11:
    $12 = HEAP8[$ptr2_addr_0] | 0;
    $13 = HEAP8[$ptr1_addr_0] | 0;
    $cmp42 = $12 << 24 >> 24 == $13 << 24 >> 24;
    if ($cmp42) {
      label = 12;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 12:
    $incdec_ptr38 = $ptr2_addr_0 + 1 | 0;
    $14 = HEAP8[$incdec_ptr38] | 0;
    $15 = HEAP8[$arrayidx] | 0;
    $cmp50 = $14 << 24 >> 24 == $15 << 24 >> 24;
    if ($cmp50) {
      $ptr2_addr_0_pn = $ptr2_addr_0;
      $ptr1_addr_0_pn = $ptr1_addr_0;
      label = 13;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 13:
    $ptr2_addr_0_be = $ptr2_addr_0_pn + 2 | 0;
    $ptr1_addr_0_be = $ptr1_addr_0_pn + 2 | 0;
    $ptr2_addr_0 = $ptr2_addr_0_be;
    $ptr1_addr_0 = $ptr1_addr_0_be;
    label = 3;
    break;
   case 14:
    $arrayidx54 = $ptr2_addr_0 + 1 | 0;
    $16 = HEAP8[$arrayidx54] | 0;
    $cmp56 = $16 << 24 >> 24 == 0;
    $17 = HEAP8[$ptr2_addr_0] | 0;
    if ($cmp56) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $idxprom59 = $17 & 255;
    $type60 = $enc + 72 | 0;
    $18 = $type60;
    $arrayidx61 = $18 + $idxprom59 | 0;
    $19 = HEAP8[$arrayidx61] | 0;
    $conv62 = $19 & 255;
    $cond68 = $conv62;
    label = 17;
    break;
   case 16:
    $call66 = _unicode_byte_type($16, $17) | 0;
    $cond68 = $call66;
    label = 17;
    break;
   case 17:
    if (($cond68 | 0) == 5 | ($cond68 | 0) == 6 | ($cond68 | 0) == 7 | ($cond68 | 0) == 29 | ($cond68 | 0) == 22 | ($cond68 | 0) == 24 | ($cond68 | 0) == 25 | ($cond68 | 0) == 26 | ($cond68 | 0) == 27) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $retval_0 = 1;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_nameLength($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $type = 0, $0 = 0, $ptr_addr_0 = 0, $arrayidx = 0, $1 = 0, $cmp = 0, $2 = 0, $idxprom = 0, $arrayidx2 = 0, $3 = 0, $conv3 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr7 = 0, $add_ptr9 = 0, $add_ptr11 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $arrayidx = $ptr_addr_0 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr_addr_0] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $2 & 255;
    $arrayidx2 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx2] | 0;
    $conv3 = $3 & 255;
    $cond = $conv3;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 5) {
      label = 7;
      break;
    } else if (($cond | 0) == 6) {
      label = 8;
      break;
    } else if (($cond | 0) == 7) {
      label = 9;
      break;
    } else if (($cond | 0) == 29 | ($cond | 0) == 22 | ($cond | 0) == 24 | ($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $add_ptr = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr;
    label = 3;
    break;
   case 8:
    $add_ptr7 = $ptr_addr_0 + 3 | 0;
    $ptr_addr_0 = $add_ptr7;
    label = 3;
    break;
   case 9:
    $add_ptr9 = $ptr_addr_0 + 4 | 0;
    $ptr_addr_0 = $add_ptr9;
    label = 3;
    break;
   case 10:
    $add_ptr11 = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr11;
    label = 3;
    break;
   case 11:
    $sub_ptr_lhs_cast = $ptr_addr_0;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    return $sub_ptr_sub | 0;
  }
  return 0;
}
function _little2_skipS($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $type = 0, $0 = 0, $ptr_addr_0 = 0, $arrayidx = 0, $1 = 0, $cmp = 0, $2 = 0, $idxprom = 0, $arrayidx2 = 0, $3 = 0, $conv3 = 0, $call = 0, $cond = 0, $add_ptr = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $arrayidx = $ptr_addr_0 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr_addr_0] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $2 & 255;
    $arrayidx2 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx2] | 0;
    $conv3 = $3 & 255;
    $cond = $conv3;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 10 | ($cond | 0) == 9 | ($cond | 0) == 21) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $add_ptr = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr;
    label = 3;
    break;
   case 8:
    return $ptr_addr_0 | 0;
  }
  return 0;
}
function _little2_getAtts($enc, $ptr, $attsMax, $atts) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $attsMax = $attsMax | 0;
  $atts = $atts | 0;
  var $type = 0, $0 = 0, $type161 = 0, $1 = 0, $ptr_pn = 0, $state_0 = 0, $nAtts_0 = 0, $open_0 = 0, $ptr_addr_0 = 0, $arrayidx = 0, $2 = 0, $cmp = 0, $3 = 0, $idxprom = 0, $arrayidx2 = 0, $4 = 0, $conv3 = 0, $call = 0, $cond = 0, $cmp6 = 0, $cmp8 = 0, $name = 0, $normalized = 0, $cmp16 = 0, $cmp19 = 0, $name23 = 0, $normalized25 = 0, $cmp30 = 0, $cmp33 = 0, $name37 = 0, $normalized39 = 0, $state_3 = 0, $add_ptr42 = 0, $cmp44 = 0, $cmp47 = 0, $name51 = 0, $normalized53 = 0, $cmp57 = 0, $cmp60 = 0, $add_ptr63 = 0, $valuePtr = 0, $cmp66 = 0, $cmp69 = 0, $valueEnd = 0, $inc = 0, $cmp77 = 0, $cmp80 = 0, $add_ptr83 = 0, $valuePtr85 = 0, $cmp88 = 0, $cmp91 = 0, $valueEnd95 = 0, $inc97 = 0, $cmp101 = 0, $normalized105 = 0, $cmp108 = 0, $cmp112 = 0, $cmp114 = 0, $or_cond = 0, $normalized118 = 0, $5 = 0, $tobool = 0, $valuePtr122 = 0, $6 = 0, $cmp123 = 0, $7 = 0, $cmp127 = 0, $8 = 0, $phitmp = 0, $add_ptr138 = 0, $arrayidx139 = 0, $9 = 0, $cmp141 = 0, $10 = 0, $phitmp93 = 0, $_pr = 0, $cmp156 = 0, $11 = 0, $idxprom160 = 0, $arrayidx162 = 0, $12 = 0, $conv163 = 0, $13 = 0, $14 = 0, $call169 = 0, $cond171 = 0, $cmp172 = 0, $cmp180 = 0, $cmp184 = 0, $cmp187 = 0, $or_cond94 = 0, $normalized191 = 0, $cmp195 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $type161 = $enc + 72 | 0;
    $1 = $type161;
    $open_0 = 0;
    $nAtts_0 = 0;
    $state_0 = 1;
    $ptr_pn = $ptr;
    label = 3;
    break;
   case 3:
    $ptr_addr_0 = $ptr_pn + 2 | 0;
    $arrayidx = $ptr_pn + 3 | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $cmp = $2 << 24 >> 24 == 0;
    $3 = HEAP8[$ptr_addr_0] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $3 & 255;
    $arrayidx2 = $0 + $idxprom | 0;
    $4 = HEAP8[$arrayidx2] | 0;
    $conv3 = $4 & 255;
    $cond = $conv3;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($2, $3) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 5) {
      label = 7;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 13;
      break;
    } else if (($cond | 0) == 29 | ($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 17;
      break;
    } else if (($cond | 0) == 12) {
      label = 20;
      break;
    } else if (($cond | 0) == 13) {
      label = 27;
      break;
    } else if (($cond | 0) == 3) {
      label = 34;
      break;
    } else if (($cond | 0) == 21) {
      label = 36;
      break;
    } else if (($cond | 0) == 9 | ($cond | 0) == 10) {
      label = 49;
      break;
    } else if (($cond | 0) == 11 | ($cond | 0) == 17) {
      label = 52;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 7:
    $cmp6 = ($state_0 | 0) == 0;
    if ($cmp6) {
      label = 8;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 8:
    $cmp8 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp8) {
      label = 9;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 9:
    $name = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name >> 2] = $ptr_addr_0;
    $normalized = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 10:
    $cmp16 = ($state_0 | 0) == 0;
    if ($cmp16) {
      label = 11;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $arrayidx;
      label = 3;
      break;
    }
   case 11:
    $cmp19 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp19) {
      label = 12;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $arrayidx;
      label = 3;
      break;
    }
   case 12:
    $name23 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name23 >> 2] = $ptr_addr_0;
    $normalized25 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized25] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $arrayidx;
    label = 3;
    break;
   case 13:
    $cmp30 = ($state_0 | 0) == 0;
    if ($cmp30) {
      label = 14;
      break;
    } else {
      $state_3 = $state_0;
      label = 16;
      break;
    }
   case 14:
    $cmp33 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp33) {
      label = 15;
      break;
    } else {
      $state_3 = 1;
      label = 16;
      break;
    }
   case 15:
    $name37 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name37 >> 2] = $ptr_addr_0;
    $normalized39 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized39] = 1;
    $state_3 = 1;
    label = 16;
    break;
   case 16:
    $add_ptr42 = $ptr_pn + 4 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_3;
    $ptr_pn = $add_ptr42;
    label = 3;
    break;
   case 17:
    $cmp44 = ($state_0 | 0) == 0;
    if ($cmp44) {
      label = 18;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 18:
    $cmp47 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp47) {
      label = 19;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 19:
    $name51 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name51 >> 2] = $ptr_addr_0;
    $normalized53 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized53] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 20:
    $cmp57 = ($state_0 | 0) == 2;
    if ($cmp57) {
      label = 23;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $cmp60 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp60) {
      label = 22;
      break;
    } else {
      $open_0 = 12;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 22:
    $add_ptr63 = $ptr_pn + 4 | 0;
    $valuePtr = $atts + ($nAtts_0 << 4) + 4 | 0;
    HEAP32[$valuePtr >> 2] = $add_ptr63;
    $open_0 = 12;
    $nAtts_0 = $nAtts_0;
    $state_0 = 2;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 23:
    $cmp66 = ($open_0 | 0) == 12;
    if ($cmp66) {
      label = 24;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 24:
    $cmp69 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp69) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $valueEnd = $atts + ($nAtts_0 << 4) + 8 | 0;
    HEAP32[$valueEnd >> 2] = $ptr_addr_0;
    label = 26;
    break;
   case 26:
    $inc = $nAtts_0 + 1 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $inc;
    $state_0 = 0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 27:
    $cmp77 = ($state_0 | 0) == 2;
    if ($cmp77) {
      label = 30;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $cmp80 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp80) {
      label = 29;
      break;
    } else {
      $open_0 = 13;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 29:
    $add_ptr83 = $ptr_pn + 4 | 0;
    $valuePtr85 = $atts + ($nAtts_0 << 4) + 4 | 0;
    HEAP32[$valuePtr85 >> 2] = $add_ptr83;
    $open_0 = 13;
    $nAtts_0 = $nAtts_0;
    $state_0 = 2;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 30:
    $cmp88 = ($open_0 | 0) == 13;
    if ($cmp88) {
      label = 31;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 31:
    $cmp91 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp91) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 32:
    $valueEnd95 = $atts + ($nAtts_0 << 4) + 8 | 0;
    HEAP32[$valueEnd95 >> 2] = $ptr_addr_0;
    label = 33;
    break;
   case 33:
    $inc97 = $nAtts_0 + 1 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $inc97;
    $state_0 = 0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 34:
    $cmp101 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp101) {
      label = 35;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 35:
    $normalized105 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized105] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 36:
    $cmp108 = ($state_0 | 0) == 1;
    if ($cmp108) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $cmp112 = ($state_0 | 0) == 2;
    $cmp114 = ($nAtts_0 | 0) < ($attsMax | 0);
    $or_cond = $cmp112 & $cmp114;
    if ($or_cond) {
      label = 38;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 38:
    $normalized118 = $atts + ($nAtts_0 << 4) + 12 | 0;
    $5 = HEAP8[$normalized118] | 0;
    $tobool = $5 << 24 >> 24 == 0;
    if ($tobool) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $valuePtr122 = $atts + ($nAtts_0 << 4) + 4 | 0;
    $6 = HEAP32[$valuePtr122 >> 2] | 0;
    $cmp123 = ($ptr_addr_0 | 0) == ($6 | 0);
    if ($cmp123) {
      label = 48;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $7 = HEAP8[$arrayidx] | 0;
    $cmp127 = $7 << 24 >> 24 == 0;
    if ($cmp127) {
      label = 41;
      break;
    } else {
      label = 48;
      break;
    }
   case 41:
    $8 = HEAP8[$ptr_addr_0] | 0;
    $phitmp = $8 << 24 >> 24 == 32;
    if ($phitmp) {
      label = 42;
      break;
    } else {
      label = 48;
      break;
    }
   case 42:
    $add_ptr138 = $ptr_pn + 4 | 0;
    $arrayidx139 = $ptr_pn + 5 | 0;
    $9 = HEAP8[$arrayidx139] | 0;
    $cmp141 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$add_ptr138] | 0;
    if ($cmp141) {
      label = 43;
      break;
    } else {
      $14 = $9;
      $13 = $10;
      label = 46;
      break;
    }
   case 43:
    $phitmp93 = $10 << 24 >> 24 == 32;
    if ($phitmp93) {
      label = 48;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $_pr = HEAP8[$arrayidx139] | 0;
    $cmp156 = $_pr << 24 >> 24 == 0;
    $11 = HEAP8[$add_ptr138] | 0;
    if ($cmp156) {
      label = 45;
      break;
    } else {
      $14 = $_pr;
      $13 = $11;
      label = 46;
      break;
    }
   case 45:
    $idxprom160 = $11 & 255;
    $arrayidx162 = $1 + $idxprom160 | 0;
    $12 = HEAP8[$arrayidx162] | 0;
    $conv163 = $12 & 255;
    $cond171 = $conv163;
    label = 47;
    break;
   case 46:
    $call169 = _unicode_byte_type($14, $13) | 0;
    $cond171 = $call169;
    label = 47;
    break;
   case 47:
    $cmp172 = ($cond171 | 0) == ($open_0 | 0);
    if ($cmp172) {
      label = 48;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 48:
    HEAP8[$normalized118] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 49:
    $cmp180 = ($state_0 | 0) == 1;
    if ($cmp180) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $cmp184 = ($state_0 | 0) == 2;
    $cmp187 = ($nAtts_0 | 0) < ($attsMax | 0);
    $or_cond94 = $cmp184 & $cmp187;
    if ($or_cond94) {
      label = 51;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 51:
    $normalized191 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized191] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 52:
    $cmp195 = ($state_0 | 0) == 2;
    if ($cmp195) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    return $nAtts_0 | 0;
  }
  return 0;
}
function _little2_charRefNumber($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $add_ptr = 0, $arrayidx = 0, $0 = 0, $cmp = 0, $1 = 0, $cmp4 = 0, $add_ptr6 = 0, $result_0 = 0, $ptr_addr_0 = 0, $arrayidx7 = 0, $2 = 0, $cmp9 = 0, $3 = 0, $phitmp28 = 0, $_pr = 0, $cmp17 = 0, $4 = 0, $conv20 = 0, $shl = 0, $sub = 0, $or = 0, $shl22 = 0, $add = 0, $add24 = 0, $shl26 = 0, $add28 = 0, $add29 = 0, $result_1 = 0, $cmp30 = 0, $add_ptr33 = 0, $result_2 = 0, $ptr_addr_1 = 0, $arrayidx35 = 0, $5 = 0, $cmp37 = 0, $6 = 0, $phitmp = 0, $_pr30 = 0, $cmp50 = 0, $7 = 0, $conv54 = 0, $phitmp27 = 0, $cond57 = 0, $mul = 0, $add59 = 0, $cmp60 = 0, $add_ptr65 = 0, $result_3 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr = $ptr + 4 | 0;
    $arrayidx = $ptr + 5 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $ptr_addr_1 = $add_ptr;
      $result_2 = 0;
      label = 13;
      break;
    }
   case 3:
    $1 = HEAP8[$add_ptr] | 0;
    $cmp4 = $1 << 24 >> 24 == 120;
    if ($cmp4) {
      label = 4;
      break;
    } else {
      $ptr_addr_1 = $add_ptr;
      $result_2 = 0;
      label = 13;
      break;
    }
   case 4:
    $add_ptr6 = $ptr + 6 | 0;
    $ptr_addr_0 = $add_ptr6;
    $result_0 = 0;
    label = 5;
    break;
   case 5:
    $arrayidx7 = $ptr_addr_0 + 1 | 0;
    $2 = HEAP8[$arrayidx7] | 0;
    $cmp9 = $2 << 24 >> 24 == 0;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      $result_1 = $result_0;
      label = 12;
      break;
    }
   case 6:
    $3 = HEAP8[$ptr_addr_0] | 0;
    $phitmp28 = $3 << 24 >> 24 == 59;
    if ($phitmp28) {
      $result_3 = $result_0;
      label = 18;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $_pr = HEAP8[$arrayidx7] | 0;
    $cmp17 = $_pr << 24 >> 24 == 0;
    if ($cmp17) {
      label = 8;
      break;
    } else {
      $result_1 = $result_0;
      label = 12;
      break;
    }
   case 8:
    $4 = HEAP8[$ptr_addr_0] | 0;
    $conv20 = $4 << 24 >> 24;
    if (($conv20 | 0) == 48 | ($conv20 | 0) == 49 | ($conv20 | 0) == 50 | ($conv20 | 0) == 51 | ($conv20 | 0) == 52 | ($conv20 | 0) == 53 | ($conv20 | 0) == 54 | ($conv20 | 0) == 55 | ($conv20 | 0) == 56 | ($conv20 | 0) == 57) {
      label = 9;
      break;
    } else if (($conv20 | 0) == 65 | ($conv20 | 0) == 66 | ($conv20 | 0) == 67 | ($conv20 | 0) == 68 | ($conv20 | 0) == 69 | ($conv20 | 0) == 70) {
      label = 10;
      break;
    } else if (($conv20 | 0) == 97 | ($conv20 | 0) == 98 | ($conv20 | 0) == 99 | ($conv20 | 0) == 100 | ($conv20 | 0) == 101 | ($conv20 | 0) == 102) {
      label = 11;
      break;
    } else {
      $result_1 = $result_0;
      label = 12;
      break;
    }
   case 9:
    $shl = $result_0 << 4;
    $sub = $conv20 - 48 | 0;
    $or = $sub | $shl;
    $result_1 = $or;
    label = 12;
    break;
   case 10:
    $shl22 = $result_0 << 4;
    $add = $shl22 - 55 | 0;
    $add24 = $add + $conv20 | 0;
    $result_1 = $add24;
    label = 12;
    break;
   case 11:
    $shl26 = $result_0 << 4;
    $add28 = $shl26 - 87 | 0;
    $add29 = $add28 + $conv20 | 0;
    $result_1 = $add29;
    label = 12;
    break;
   case 12:
    $cmp30 = ($result_1 | 0) > 1114111;
    $add_ptr33 = $ptr_addr_0 + 2 | 0;
    if ($cmp30) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      $ptr_addr_0 = $add_ptr33;
      $result_0 = $result_1;
      label = 5;
      break;
    }
   case 13:
    $arrayidx35 = $ptr_addr_1 + 1 | 0;
    $5 = HEAP8[$arrayidx35] | 0;
    $cmp37 = $5 << 24 >> 24 == 0;
    if ($cmp37) {
      label = 14;
      break;
    } else {
      $cond57 = -49;
      label = 17;
      break;
    }
   case 14:
    $6 = HEAP8[$ptr_addr_1] | 0;
    $phitmp = $6 << 24 >> 24 == 59;
    if ($phitmp) {
      $result_3 = $result_2;
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $_pr30 = HEAP8[$arrayidx35] | 0;
    $cmp50 = $_pr30 << 24 >> 24 == 0;
    if ($cmp50) {
      label = 16;
      break;
    } else {
      $cond57 = -49;
      label = 17;
      break;
    }
   case 16:
    $7 = HEAP8[$ptr_addr_1] | 0;
    $conv54 = $7 << 24 >> 24;
    $phitmp27 = $conv54 - 48 | 0;
    $cond57 = $phitmp27;
    label = 17;
    break;
   case 17:
    $mul = $result_2 * 10 & -1;
    $add59 = $cond57 + $mul | 0;
    $cmp60 = ($add59 | 0) > 1114111;
    $add_ptr65 = $ptr_addr_1 + 2 | 0;
    if ($cmp60) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      $ptr_addr_1 = $add_ptr65;
      $result_2 = $add59;
      label = 13;
      break;
    }
   case 18:
    $call = _checkCharRefNumber($result_3) | 0;
    $retval_0 = $call;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_updatePosition($enc, $ptr, $end, $pos) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $pos = $pos | 0;
  var $cmp22 = 0, $type = 0, $0 = 0, $columnNumber39 = 0, $columnNumber = 0, $lineNumber = 0, $lineNumber14 = 0, $columnNumber37 = 0, $type25 = 0, $1 = 0, $ptr_addr_023 = 0, $arrayidx = 0, $2 = 0, $cmp1 = 0, $3 = 0, $idxprom = 0, $arrayidx3 = 0, $4 = 0, $conv4 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr8 = 0, $add_ptr10 = 0, $5 = 0, $inc = 0, $add_ptr12 = 0, $6 = 0, $inc15 = 0, $add_ptr16 = 0, $cmp17 = 0, $arrayidx19 = 0, $7 = 0, $cmp21 = 0, $8 = 0, $idxprom24 = 0, $arrayidx26 = 0, $9 = 0, $conv27 = 0, $call31 = 0, $cond33 = 0, $cmp34 = 0, $add_ptr36 = 0, $add_ptr36_add_ptr16 = 0, $ptr_addr_1 = 0, $add_ptr38 = 0, $ptr_addr_2 = 0, $10 = 0, $inc40 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp22 = $ptr >>> 0 < $end >>> 0;
    if ($cmp22) {
      label = 3;
      break;
    } else {
      label = 20;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $columnNumber39 = $pos + 4 | 0;
    $columnNumber = $pos + 4 | 0;
    $lineNumber = $pos | 0;
    $lineNumber14 = $pos | 0;
    $columnNumber37 = $pos + 4 | 0;
    $type25 = $enc + 72 | 0;
    $1 = $type25;
    $ptr_addr_023 = $ptr;
    label = 4;
    break;
   case 4:
    $arrayidx = $ptr_addr_023 + 1 | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $cmp1 = $2 << 24 >> 24 == 0;
    $3 = HEAP8[$ptr_addr_023] | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $3 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $4 = HEAP8[$arrayidx3] | 0;
    $conv4 = $4 & 255;
    $cond = $conv4;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($2, $3) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 5) {
      label = 8;
      break;
    } else if (($cond | 0) == 6) {
      label = 9;
      break;
    } else if (($cond | 0) == 7) {
      label = 10;
      break;
    } else if (($cond | 0) == 10) {
      label = 11;
      break;
    } else if (($cond | 0) == 9) {
      label = 12;
      break;
    } else {
      label = 18;
      break;
    }
   case 8:
    $add_ptr = $ptr_addr_023 + 2 | 0;
    $ptr_addr_2 = $add_ptr;
    label = 19;
    break;
   case 9:
    $add_ptr8 = $ptr_addr_023 + 3 | 0;
    $ptr_addr_2 = $add_ptr8;
    label = 19;
    break;
   case 10:
    $add_ptr10 = $ptr_addr_023 + 4 | 0;
    $ptr_addr_2 = $add_ptr10;
    label = 19;
    break;
   case 11:
    HEAP32[$columnNumber >> 2] = -1;
    $5 = HEAP32[$lineNumber >> 2] | 0;
    $inc = $5 + 1 | 0;
    HEAP32[$lineNumber >> 2] = $inc;
    $add_ptr12 = $ptr_addr_023 + 2 | 0;
    $ptr_addr_2 = $add_ptr12;
    label = 19;
    break;
   case 12:
    $6 = HEAP32[$lineNumber14 >> 2] | 0;
    $inc15 = $6 + 1 | 0;
    HEAP32[$lineNumber14 >> 2] = $inc15;
    $add_ptr16 = $ptr_addr_023 + 2 | 0;
    $cmp17 = ($add_ptr16 | 0) == ($end | 0);
    if ($cmp17) {
      $ptr_addr_1 = $add_ptr16;
      label = 17;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $arrayidx19 = $ptr_addr_023 + 3 | 0;
    $7 = HEAP8[$arrayidx19] | 0;
    $cmp21 = $7 << 24 >> 24 == 0;
    $8 = HEAP8[$add_ptr16] | 0;
    if ($cmp21) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $idxprom24 = $8 & 255;
    $arrayidx26 = $1 + $idxprom24 | 0;
    $9 = HEAP8[$arrayidx26] | 0;
    $conv27 = $9 & 255;
    $cond33 = $conv27;
    label = 16;
    break;
   case 15:
    $call31 = _unicode_byte_type($7, $8) | 0;
    $cond33 = $call31;
    label = 16;
    break;
   case 16:
    $cmp34 = ($cond33 | 0) == 10;
    $add_ptr36 = $ptr_addr_023 + 4 | 0;
    $add_ptr36_add_ptr16 = $cmp34 ? $add_ptr36 : $add_ptr16;
    $ptr_addr_1 = $add_ptr36_add_ptr16;
    label = 17;
    break;
   case 17:
    HEAP32[$columnNumber37 >> 2] = -1;
    $ptr_addr_2 = $ptr_addr_1;
    label = 19;
    break;
   case 18:
    $add_ptr38 = $ptr_addr_023 + 2 | 0;
    $ptr_addr_2 = $add_ptr38;
    label = 19;
    break;
   case 19:
    $10 = HEAP32[$columnNumber39 >> 2] | 0;
    $inc40 = $10 + 1 | 0;
    HEAP32[$columnNumber39 >> 2] = $inc40;
    $cmp = $ptr_addr_2 >>> 0 < $end >>> 0;
    if ($cmp) {
      $ptr_addr_023 = $ptr_addr_2;
      label = 4;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    return;
  }
}
function _unicode_byte_type($hi, $lo) {
  $hi = $hi | 0;
  $lo = $lo | 0;
  var $conv = 0, $conv3 = 0, $conv3_off = 0, $switch = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $conv = $hi & 255;
    if (($conv | 0) == 220 | ($conv | 0) == 221 | ($conv | 0) == 222 | ($conv | 0) == 223) {
      label = 3;
      break;
    } else if (($conv | 0) == 255) {
      label = 4;
      break;
    } else if (($conv | 0) == 216 | ($conv | 0) == 217 | ($conv | 0) == 218 | ($conv | 0) == 219) {
      $retval_0 = 7;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 3:
    $retval_0 = 8;
    label = 6;
    break;
   case 4:
    $conv3 = $lo & 255;
    $conv3_off = $conv3 - 254 | 0;
    $switch = $conv3_off >>> 0 < 2;
    if ($switch) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $retval_0 = 29;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_toUtf8($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $cmp57 = 0, $sub_ptr_lhs_cast23 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_lhs_cast50 = 0, $from_058 = 0, $1 = 0, $arrayidx1 = 0, $2 = 0, $conv = 0, $cmp3 = 0, $3 = 0, $cmp5 = 0, $incdec_ptr = 0, $4 = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp10 = 0, $shr50 = 0, $shl = 0, $or = 0, $or16 = 0, $incdec_ptr18 = 0, $and = 0, $or20 = 0, $5 = 0, $incdec_ptr22 = 0, $6 = 0, $sub_ptr_rhs_cast24 = 0, $sub_ptr_sub25 = 0, $cmp26 = 0, $shr3151 = 0, $or32 = 0, $incdec_ptr34 = 0, $and36 = 0, $shl37 = 0, $shr3952 = 0, $or40 = 0, $or41 = 0, $7 = 0, $incdec_ptr43 = 0, $and45 = 0, $or46 = 0, $8 = 0, $incdec_ptr48 = 0, $9 = 0, $sub_ptr_rhs_cast51 = 0, $sub_ptr_sub52 = 0, $cmp53 = 0, $and58 = 0, $shl59 = 0, $conv60 = 0, $shr6146 = 0, $or63 = 0, $add = 0, $shr6447 = 0, $or65 = 0, $conv66 = 0, $incdec_ptr67 = 0, $shr6948 = 0, $and70 = 0, $and71 = 0, $shl72 = 0, $or73 = 0, $or74 = 0, $conv75 = 0, $10 = 0, $incdec_ptr76 = 0, $add_ptr = 0, $11 = 0, $and79 = 0, $shl80 = 0, $arrayidx81 = 0, $12 = 0, $and83 = 0, $shl84 = 0, $shr8749 = 0, $or85 = 0, $or88 = 0, $or89 = 0, $13 = 0, $incdec_ptr91 = 0, $and93 = 0, $or94 = 0, $14 = 0, $incdec_ptr96 = 0, $from_1 = 0, $add_ptr97 = 0, $cmp = 0, $from_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp57 = ($0 | 0) == ($fromLim | 0);
    if ($cmp57) {
      $from_0_lcssa = $0;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast23 = $toLim;
    $sub_ptr_lhs_cast = $toLim;
    $sub_ptr_lhs_cast50 = $toLim;
    $from_058 = $0;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$from_058] | 0;
    $arrayidx1 = $from_058 + 1 | 0;
    $2 = HEAP8[$arrayidx1] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 0) {
      label = 5;
      break;
    } else if (($conv | 0) == 1 | ($conv | 0) == 2 | ($conv | 0) == 3 | ($conv | 0) == 4 | ($conv | 0) == 5 | ($conv | 0) == 6 | ($conv | 0) == 7) {
      label = 9;
      break;
    } else if (($conv | 0) == 216 | ($conv | 0) == 217 | ($conv | 0) == 218 | ($conv | 0) == 219) {
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 5:
    $cmp3 = $1 << 24 >> 24 > -1;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $3 = HEAP32[$toP >> 2] | 0;
    $cmp5 = ($3 | 0) == ($toLim | 0);
    if ($cmp5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 8:
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr;
    HEAP8[$3] = $1;
    $from_1 = $from_058;
    label = 18;
    break;
   case 9:
    $4 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast = $4;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp10 = ($sub_ptr_sub | 0) < 2;
    if ($cmp10) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 11:
    $shr50 = ($1 & 255) >>> 6;
    $shl = $2 << 2;
    $or = $shr50 | $shl;
    $or16 = $or | -64;
    $incdec_ptr18 = $4 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr18;
    HEAP8[$4] = $or16;
    $and = $1 & 63;
    $or20 = $and | -128;
    $5 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr22 = $5 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr22;
    HEAP8[$5] = $or20;
    $from_1 = $from_058;
    label = 18;
    break;
   case 12:
    $6 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast24 = $6;
    $sub_ptr_sub25 = $sub_ptr_lhs_cast23 - $sub_ptr_rhs_cast24 | 0;
    $cmp26 = ($sub_ptr_sub25 | 0) < 3;
    if ($cmp26) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 14:
    $shr3151 = ($2 & 255) >>> 4;
    $or32 = $shr3151 | -32;
    $incdec_ptr34 = $6 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr34;
    HEAP8[$6] = $or32;
    $and36 = $2 << 2;
    $shl37 = $and36 & 60;
    $shr3952 = ($1 & 255) >>> 6;
    $or40 = $shr3952 | $shl37;
    $or41 = $or40 | -128;
    $7 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr43 = $7 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr43;
    HEAP8[$7] = $or41;
    $and45 = $1 & 63;
    $or46 = $and45 | -128;
    $8 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr48 = $8 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr48;
    HEAP8[$8] = $or46;
    $from_1 = $from_058;
    label = 18;
    break;
   case 15:
    $9 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast51 = $9;
    $sub_ptr_sub52 = $sub_ptr_lhs_cast50 - $sub_ptr_rhs_cast51 | 0;
    $cmp53 = ($sub_ptr_sub52 | 0) < 4;
    if ($cmp53) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 17:
    $and58 = $conv << 2;
    $shl59 = $and58 & 12;
    $conv60 = $1 & 255;
    $shr6146 = $conv60 >>> 6;
    $or63 = $shl59 | $shr6146;
    $add = $or63 + 1 | 0;
    $shr6447 = $add >>> 2;
    $or65 = $shr6447 | 240;
    $conv66 = $or65 & 255;
    $incdec_ptr67 = $9 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr67;
    HEAP8[$9] = $conv66;
    $shr6948 = $conv60 >>> 2;
    $and70 = $shr6948 & 15;
    $and71 = $add << 4;
    $shl72 = $and71 & 48;
    $or73 = $and70 | $shl72;
    $or74 = $or73 | 128;
    $conv75 = $or74 & 255;
    $10 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr76 = $10 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr76;
    HEAP8[$10] = $conv75;
    $add_ptr = $from_058 + 2 | 0;
    $11 = HEAP8[$add_ptr] | 0;
    $and79 = $1 << 4;
    $shl80 = $and79 & 48;
    $arrayidx81 = $from_058 + 3 | 0;
    $12 = HEAP8[$arrayidx81] | 0;
    $and83 = $12 << 2;
    $shl84 = $and83 & 12;
    $shr8749 = ($11 & 255) >>> 6;
    $or85 = $shl80 | $shr8749;
    $or88 = $or85 | $shl84;
    $or89 = $or88 | -128;
    $13 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr91 = $13 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr91;
    HEAP8[$13] = $or89;
    $and93 = $11 & 63;
    $or94 = $and93 | -128;
    $14 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr96 = $14 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr96;
    HEAP8[$14] = $or94;
    $from_1 = $add_ptr;
    label = 18;
    break;
   case 18:
    $add_ptr97 = $from_1 + 2 | 0;
    $cmp = ($add_ptr97 | 0) == ($fromLim | 0);
    if ($cmp) {
      $from_0_lcssa = $add_ptr97;
      label = 19;
      break;
    } else {
      $from_058 = $add_ptr97;
      label = 4;
      break;
    }
   case 19:
    HEAP32[$fromP >> 2] = $from_0_lcssa;
    label = 20;
    break;
   case 20:
    return;
  }
}
function _little2_toUtf16($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $1 = 0, $sub_ptr_lhs_cast1 = 0, $sub_ptr_rhs_cast2 = 0, $sub_ptr_sub3 = 0, $cmp = 0, $arrayidx = 0, $2 = 0, $and = 0, $cmp4 = 0, $add_ptr = 0, $add_ptr_fromLim = 0, $fromLim_addr_0_ph = 0, $3 = 0, $cmp711 = 0, $4 = 0, $5 = 0, $cmp9 = 0, $arrayidx11 = 0, $6 = 0, $conv12 = 0, $shl13 = 0, $7 = 0, $conv15 = 0, $or = 0, $incdec_ptr = 0, $8 = 0, $add_ptr17 = 0, $cmp7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $sub_ptr_lhs_cast = $fromLim;
    $sub_ptr_rhs_cast = $0;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $1 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_lhs_cast1 = $toLim;
    $sub_ptr_rhs_cast2 = $1;
    $sub_ptr_sub3 = $sub_ptr_lhs_cast1 - $sub_ptr_rhs_cast2 | 0;
    $cmp = ($sub_ptr_sub | 0) > ($sub_ptr_sub3 | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $fromLim_addr_0_ph = $fromLim;
      label = 4;
      break;
    }
   case 3:
    $arrayidx = $fromLim - 1 | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $and = $2 & -8;
    $cmp4 = $and << 24 >> 24 == -40;
    $add_ptr = $fromLim - 2 | 0;
    $add_ptr_fromLim = $cmp4 ? $add_ptr : $fromLim;
    $fromLim_addr_0_ph = $add_ptr_fromLim;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$fromP >> 2] | 0;
    $cmp711 = ($3 | 0) == ($fromLim_addr_0_ph | 0);
    if ($cmp711) {
      label = 7;
      break;
    } else {
      $4 = $3;
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP32[$toP >> 2] | 0;
    $cmp9 = ($5 | 0) == ($toLim | 0);
    if ($cmp9) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $arrayidx11 = $4 + 1 | 0;
    $6 = HEAP8[$arrayidx11] | 0;
    $conv12 = $6 & 255;
    $shl13 = $conv12 << 8;
    $7 = HEAP8[$4] | 0;
    $conv15 = $7 & 255;
    $or = $shl13 | $conv15;
    $incdec_ptr = $5 + 2 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr;
    HEAP16[$5 >> 1] = $or;
    $8 = HEAP32[$fromP >> 2] | 0;
    $add_ptr17 = $8 + 2 | 0;
    HEAP32[$fromP >> 2] = $add_ptr17;
    $cmp7 = ($add_ptr17 | 0) == ($fromLim_addr_0_ph | 0);
    if ($cmp7) {
      label = 7;
      break;
    } else {
      $4 = $add_ptr17;
      label = 5;
      break;
    }
   case 7:
    return;
  }
}
function _little2_isPublicId($enc, $ptr, $end, $badPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $badPtr = $badPtr | 0;
  var $add_ptr1 = 0, $ptr_addr_020 = 0, $cmp21 = 0, $type = 0, $0 = 0, $ptr_addr_023 = 0, $ptr_pn22 = 0, $arrayidx = 0, $1 = 0, $cmp2 = 0, $2 = 0, $idxprom = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_0 = 0, $cmp = 0, $4 = 0, $cmp11 = 0, $5 = 0, $cmp15 = 0, $6 = 0, $cmp20 = 0, $7 = 0, $phitmp16 = 0, $_pr = 0, $cmp32 = 0, $8 = 0, $conv36 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr1 = $end - 2 | 0;
    $ptr_addr_020 = $ptr + 2 | 0;
    $cmp21 = ($ptr_addr_020 | 0) == ($add_ptr1 | 0);
    if ($cmp21) {
      $retval_0 = 1;
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_pn22 = $ptr;
    $ptr_addr_023 = $ptr_addr_020;
    label = 4;
    break;
   case 4:
    $arrayidx = $ptr_pn22 + 3 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp2 = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr_addr_023] | 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $2 & 255;
    $arrayidx4 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 25 | ($cond | 0) == 24 | ($cond | 0) == 27 | ($cond | 0) == 13 | ($cond | 0) == 31 | ($cond | 0) == 32 | ($cond | 0) == 34 | ($cond | 0) == 35 | ($cond | 0) == 17 | ($cond | 0) == 14 | ($cond | 0) == 15 | ($cond | 0) == 9 | ($cond | 0) == 10 | ($cond | 0) == 18 | ($cond | 0) == 16 | ($cond | 0) == 33 | ($cond | 0) == 30 | ($cond | 0) == 19) {
      label = 8;
      break;
    } else if (($cond | 0) == 21) {
      label = 9;
      break;
    } else if (($cond | 0) == 26 | ($cond | 0) == 22) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 8:
    $ptr_addr_0 = $ptr_addr_023 + 2 | 0;
    $cmp = ($ptr_addr_0 | 0) == ($add_ptr1 | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 17;
      break;
    } else {
      $ptr_pn22 = $ptr_addr_023;
      $ptr_addr_023 = $ptr_addr_0;
      label = 4;
      break;
    }
   case 9:
    $4 = HEAP8[$arrayidx] | 0;
    $cmp11 = $4 << 24 >> 24 == 0;
    if ($cmp11) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 10:
    $5 = HEAP8[$ptr_addr_023] | 0;
    $cmp15 = $5 << 24 >> 24 == 9;
    if ($cmp15) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 11:
    HEAP32[$badPtr >> 2] = $ptr_addr_023;
    $retval_0 = 0;
    label = 17;
    break;
   case 12:
    $6 = HEAP8[$arrayidx] | 0;
    $cmp20 = $6 << 24 >> 24 == 0;
    if ($cmp20) {
      label = 13;
      break;
    } else {
      label = 16;
      break;
    }
   case 13:
    $7 = HEAP8[$ptr_addr_023] | 0;
    $phitmp16 = $7 << 24 >> 24 < 0;
    if ($phitmp16) {
      label = 14;
      break;
    } else {
      label = 8;
      break;
    }
   case 14:
    $_pr = HEAP8[$arrayidx] | 0;
    $cmp32 = $_pr << 24 >> 24 == 0;
    if ($cmp32) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $8 = HEAP8[$ptr_addr_023] | 0;
    $conv36 = $8 << 24 >> 24;
    if (($conv36 | 0) == 36 | ($conv36 | 0) == 64) {
      label = 8;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$badPtr >> 2] = $ptr_addr_023;
    $retval_0 = 0;
    label = 17;
    break;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_069 = 0, $cmp4570 = 0, $type53 = 0, $4 = 0, $5 = 0, $idxprom8 = 0, $arrayidx9 = 0, $6 = 0, $conv10 = 0, $shl = 0, $7 = 0, $conv12 = 0, $shr56 = 0, $add = 0, $arrayidx13 = 0, $8 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp22 = 0, $sub_ptr_lhs_cast27 = 0, $sub_ptr_rhs_cast28 = 0, $sub_ptr_sub29 = 0, $cmp30 = 0, $sub_ptr_lhs_cast35 = 0, $sub_ptr_rhs_cast36 = 0, $sub_ptr_sub37 = 0, $cmp38 = 0, $add_ptr43 = 0, $call44 = 0, $ptr_addr_072 = 0, $ptr_pn71 = 0, $arrayidx47 = 0, $9 = 0, $cmp49 = 0, $10 = 0, $idxprom52 = 0, $arrayidx54 = 0, $11 = 0, $conv55 = 0, $call59 = 0, $cond61 = 0, $12 = 0, $idxprom64 = 0, $arrayidx65 = 0, $13 = 0, $conv66 = 0, $shl67 = 0, $14 = 0, $conv69 = 0, $shr7055 = 0, $add71 = 0, $arrayidx72 = 0, $15 = 0, $and75 = 0, $shl76 = 0, $and77 = 0, $tobool78 = 0, $ptr_addr_0 = 0, $cmp45 = 0, $sub_ptr_lhs_cast84 = 0, $sub_ptr_rhs_cast85 = 0, $sub_ptr_sub86 = 0, $cmp87 = 0, $sub_ptr_lhs_cast92 = 0, $sub_ptr_rhs_cast93 = 0, $sub_ptr_sub94 = 0, $cmp95 = 0, $sub_ptr_lhs_cast100 = 0, $sub_ptr_rhs_cast101 = 0, $sub_ptr_sub102 = 0, $cmp103 = 0, $add_ptr108 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 19) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 7:
    $ptr_addr_069 = $ptr + 2 | 0;
    $cmp4570 = ($ptr_addr_069 | 0) == ($end | 0);
    if ($cmp4570) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type53 = $enc + 72 | 0;
    $4 = $type53;
    $ptr_pn71 = $ptr;
    $ptr_addr_072 = $ptr_addr_069;
    label = 19;
    break;
   case 9:
    $5 = HEAP8[$arrayidx] | 0;
    $idxprom8 = $5 & 255;
    $arrayidx9 = $idxprom8 + 9272 | 0;
    $6 = HEAP8[$arrayidx9] | 0;
    $conv10 = $6 & 255;
    $shl = $conv10 << 3;
    $7 = HEAP8[$ptr] | 0;
    $conv12 = $7 & 255;
    $shr56 = $conv12 >>> 5;
    $add = $shr56 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $8;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp22 = ($sub_ptr_sub | 0) < 2;
    if ($cmp22) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 13:
    $sub_ptr_lhs_cast27 = $end;
    $sub_ptr_rhs_cast28 = $ptr;
    $sub_ptr_sub29 = $sub_ptr_lhs_cast27 - $sub_ptr_rhs_cast28 | 0;
    $cmp30 = ($sub_ptr_sub29 | 0) < 3;
    if ($cmp30) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 15:
    $sub_ptr_lhs_cast35 = $end;
    $sub_ptr_rhs_cast36 = $ptr;
    $sub_ptr_sub37 = $sub_ptr_lhs_cast35 - $sub_ptr_rhs_cast36 | 0;
    $cmp38 = ($sub_ptr_sub37 | 0) < 4;
    if ($cmp38) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 17:
    $add_ptr43 = $ptr + 2 | 0;
    $call44 = _little2_scanCharRef($enc, $add_ptr43, $end, $nextTokPtr) | 0;
    $retval_0 = $call44;
    label = 34;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 19:
    $arrayidx47 = $ptr_pn71 + 3 | 0;
    $9 = HEAP8[$arrayidx47] | 0;
    $cmp49 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$ptr_addr_072] | 0;
    if ($cmp49) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $idxprom52 = $10 & 255;
    $arrayidx54 = $4 + $idxprom52 | 0;
    $11 = HEAP8[$arrayidx54] | 0;
    $conv55 = $11 & 255;
    $cond61 = $conv55;
    label = 22;
    break;
   case 21:
    $call59 = _unicode_byte_type($9, $10) | 0;
    $cond61 = $call59;
    label = 22;
    break;
   case 22:
    if (($cond61 | 0) == 29) {
      label = 23;
      break;
    } else if (($cond61 | 0) == 22 | ($cond61 | 0) == 24 | ($cond61 | 0) == 25 | ($cond61 | 0) == 26 | ($cond61 | 0) == 27) {
      label = 24;
      break;
    } else if (($cond61 | 0) == 5) {
      label = 26;
      break;
    } else if (($cond61 | 0) == 6) {
      label = 28;
      break;
    } else if (($cond61 | 0) == 7) {
      label = 30;
      break;
    } else if (($cond61 | 0) == 18) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 23:
    $12 = HEAP8[$arrayidx47] | 0;
    $idxprom64 = $12 & 255;
    $arrayidx65 = $idxprom64 + 10824 | 0;
    $13 = HEAP8[$arrayidx65] | 0;
    $conv66 = $13 & 255;
    $shl67 = $conv66 << 3;
    $14 = HEAP8[$ptr_addr_072] | 0;
    $conv69 = $14 & 255;
    $shr7055 = $conv69 >>> 5;
    $add71 = $shr7055 | $shl67;
    $arrayidx72 = 9544 + ($add71 << 2) | 0;
    $15 = HEAP32[$arrayidx72 >> 2] | 0;
    $and75 = $conv69 & 31;
    $shl76 = 1 << $and75;
    $and77 = $shl76 & $15;
    $tobool78 = ($and77 | 0) == 0;
    if ($tobool78) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $ptr_addr_0 = $ptr_addr_072 + 2 | 0;
    $cmp45 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp45) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      $ptr_pn71 = $ptr_addr_072;
      $ptr_addr_072 = $ptr_addr_0;
      label = 19;
      break;
    }
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 26:
    $sub_ptr_lhs_cast84 = $end;
    $sub_ptr_rhs_cast85 = $ptr_addr_072;
    $sub_ptr_sub86 = $sub_ptr_lhs_cast84 - $sub_ptr_rhs_cast85 | 0;
    $cmp87 = ($sub_ptr_sub86 | 0) < 2;
    if ($cmp87) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 28:
    $sub_ptr_lhs_cast92 = $end;
    $sub_ptr_rhs_cast93 = $ptr_addr_072;
    $sub_ptr_sub94 = $sub_ptr_lhs_cast92 - $sub_ptr_rhs_cast93 | 0;
    $cmp95 = ($sub_ptr_sub94 | 0) < 3;
    if ($cmp95) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 30:
    $sub_ptr_lhs_cast100 = $end;
    $sub_ptr_rhs_cast101 = $ptr_addr_072;
    $sub_ptr_sub102 = $sub_ptr_lhs_cast100 - $sub_ptr_rhs_cast101 | 0;
    $cmp103 = ($sub_ptr_sub102 | 0) < 4;
    if ($cmp103) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 32:
    $add_ptr108 = $ptr_pn71 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr108;
    $retval_0 = 9;
    label = 34;
    break;
   case 33:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 34:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanPercent($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_067 = 0, $cmp4368 = 0, $type51 = 0, $4 = 0, $5 = 0, $idxprom8 = 0, $arrayidx9 = 0, $6 = 0, $conv10 = 0, $shl = 0, $7 = 0, $conv12 = 0, $shr54 = 0, $add = 0, $arrayidx13 = 0, $8 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp22 = 0, $sub_ptr_lhs_cast27 = 0, $sub_ptr_rhs_cast28 = 0, $sub_ptr_sub29 = 0, $cmp30 = 0, $sub_ptr_lhs_cast35 = 0, $sub_ptr_rhs_cast36 = 0, $sub_ptr_sub37 = 0, $cmp38 = 0, $ptr_addr_070 = 0, $ptr_pn69 = 0, $arrayidx45 = 0, $9 = 0, $cmp47 = 0, $10 = 0, $idxprom50 = 0, $arrayidx52 = 0, $11 = 0, $conv53 = 0, $call57 = 0, $cond59 = 0, $12 = 0, $idxprom62 = 0, $arrayidx63 = 0, $13 = 0, $conv64 = 0, $shl65 = 0, $14 = 0, $conv67 = 0, $shr6853 = 0, $add69 = 0, $arrayidx70 = 0, $15 = 0, $and73 = 0, $shl74 = 0, $and75 = 0, $tobool76 = 0, $ptr_addr_0 = 0, $cmp43 = 0, $sub_ptr_lhs_cast82 = 0, $sub_ptr_rhs_cast83 = 0, $sub_ptr_sub84 = 0, $cmp85 = 0, $sub_ptr_lhs_cast90 = 0, $sub_ptr_rhs_cast91 = 0, $sub_ptr_sub92 = 0, $cmp93 = 0, $sub_ptr_lhs_cast98 = 0, $sub_ptr_rhs_cast99 = 0, $sub_ptr_sub100 = 0, $cmp101 = 0, $add_ptr106 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 21 | ($cond | 0) == 10 | ($cond | 0) == 9 | ($cond | 0) == 30) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 7:
    $ptr_addr_067 = $ptr + 2 | 0;
    $cmp4368 = ($ptr_addr_067 | 0) == ($end | 0);
    if ($cmp4368) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type51 = $enc + 72 | 0;
    $4 = $type51;
    $ptr_pn69 = $ptr;
    $ptr_addr_070 = $ptr_addr_067;
    label = 19;
    break;
   case 9:
    $5 = HEAP8[$arrayidx] | 0;
    $idxprom8 = $5 & 255;
    $arrayidx9 = $idxprom8 + 9272 | 0;
    $6 = HEAP8[$arrayidx9] | 0;
    $conv10 = $6 & 255;
    $shl = $conv10 << 3;
    $7 = HEAP8[$ptr] | 0;
    $conv12 = $7 & 255;
    $shr54 = $conv12 >>> 5;
    $add = $shr54 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $8;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp22 = ($sub_ptr_sub | 0) < 2;
    if ($cmp22) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 13:
    $sub_ptr_lhs_cast27 = $end;
    $sub_ptr_rhs_cast28 = $ptr;
    $sub_ptr_sub29 = $sub_ptr_lhs_cast27 - $sub_ptr_rhs_cast28 | 0;
    $cmp30 = ($sub_ptr_sub29 | 0) < 3;
    if ($cmp30) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 15:
    $sub_ptr_lhs_cast35 = $end;
    $sub_ptr_rhs_cast36 = $ptr;
    $sub_ptr_sub37 = $sub_ptr_lhs_cast35 - $sub_ptr_rhs_cast36 | 0;
    $cmp38 = ($sub_ptr_sub37 | 0) < 4;
    if ($cmp38) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 22;
    label = 34;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 19:
    $arrayidx45 = $ptr_pn69 + 3 | 0;
    $9 = HEAP8[$arrayidx45] | 0;
    $cmp47 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$ptr_addr_070] | 0;
    if ($cmp47) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $idxprom50 = $10 & 255;
    $arrayidx52 = $4 + $idxprom50 | 0;
    $11 = HEAP8[$arrayidx52] | 0;
    $conv53 = $11 & 255;
    $cond59 = $conv53;
    label = 22;
    break;
   case 21:
    $call57 = _unicode_byte_type($9, $10) | 0;
    $cond59 = $call57;
    label = 22;
    break;
   case 22:
    if (($cond59 | 0) == 29) {
      label = 23;
      break;
    } else if (($cond59 | 0) == 22 | ($cond59 | 0) == 24 | ($cond59 | 0) == 25 | ($cond59 | 0) == 26 | ($cond59 | 0) == 27) {
      label = 24;
      break;
    } else if (($cond59 | 0) == 5) {
      label = 26;
      break;
    } else if (($cond59 | 0) == 6) {
      label = 28;
      break;
    } else if (($cond59 | 0) == 7) {
      label = 30;
      break;
    } else if (($cond59 | 0) == 18) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 23:
    $12 = HEAP8[$arrayidx45] | 0;
    $idxprom62 = $12 & 255;
    $arrayidx63 = $idxprom62 + 10824 | 0;
    $13 = HEAP8[$arrayidx63] | 0;
    $conv64 = $13 & 255;
    $shl65 = $conv64 << 3;
    $14 = HEAP8[$ptr_addr_070] | 0;
    $conv67 = $14 & 255;
    $shr6853 = $conv67 >>> 5;
    $add69 = $shr6853 | $shl65;
    $arrayidx70 = 9544 + ($add69 << 2) | 0;
    $15 = HEAP32[$arrayidx70 >> 2] | 0;
    $and73 = $conv67 & 31;
    $shl74 = 1 << $and73;
    $and75 = $shl74 & $15;
    $tobool76 = ($and75 | 0) == 0;
    if ($tobool76) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $ptr_addr_0 = $ptr_addr_070 + 2 | 0;
    $cmp43 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      $ptr_pn69 = $ptr_addr_070;
      $ptr_addr_070 = $ptr_addr_0;
      label = 19;
      break;
    }
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 26:
    $sub_ptr_lhs_cast82 = $end;
    $sub_ptr_rhs_cast83 = $ptr_addr_070;
    $sub_ptr_sub84 = $sub_ptr_lhs_cast82 - $sub_ptr_rhs_cast83 | 0;
    $cmp85 = ($sub_ptr_sub84 | 0) < 2;
    if ($cmp85) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 28:
    $sub_ptr_lhs_cast90 = $end;
    $sub_ptr_rhs_cast91 = $ptr_addr_070;
    $sub_ptr_sub92 = $sub_ptr_lhs_cast90 - $sub_ptr_rhs_cast91 | 0;
    $cmp93 = ($sub_ptr_sub92 | 0) < 3;
    if ($cmp93) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 30:
    $sub_ptr_lhs_cast98 = $end;
    $sub_ptr_rhs_cast99 = $ptr_addr_070;
    $sub_ptr_sub100 = $sub_ptr_lhs_cast98 - $sub_ptr_rhs_cast99 | 0;
    $cmp101 = ($sub_ptr_sub100 | 0) < 4;
    if ($cmp101) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 32:
    $add_ptr106 = $ptr_pn69 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr106;
    $retval_0 = 28;
    label = 34;
    break;
   case 33:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 34:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanCharRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $cmp5 = 0, $add_ptr = 0, $call = 0, $_pr = 0, $cmp10 = 0, $2 = 0, $idxprom = 0, $type = 0, $3 = 0, $arrayidx12 = 0, $4 = 0, $conv13 = 0, $5 = 0, $6 = 0, $call16 = 0, $cond = 0, $cond1 = 0, $type26 = 0, $7 = 0, $ptr_pn = 0, $ptr_addr_0 = 0, $cmp18 = 0, $arrayidx20 = 0, $8 = 0, $cmp22 = 0, $9 = 0, $idxprom25 = 0, $arrayidx27 = 0, $10 = 0, $conv28 = 0, $call32 = 0, $cond34 = 0, $add_ptr37 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $6 = $0;
      $5 = $1;
      label = 8;
      break;
    }
   case 4:
    $cmp5 = $1 << 24 >> 24 == 120;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $add_ptr = $ptr + 2 | 0;
    $call = _little2_scanHexCharRef($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 19;
    break;
   case 6:
    $_pr = HEAP8[$arrayidx] | 0;
    $cmp10 = $_pr << 24 >> 24 == 0;
    $2 = HEAP8[$ptr] | 0;
    if ($cmp10) {
      label = 7;
      break;
    } else {
      $6 = $_pr;
      $5 = $2;
      label = 8;
      break;
    }
   case 7:
    $idxprom = $2 & 255;
    $type = $enc + 72 | 0;
    $3 = $type;
    $arrayidx12 = $3 + $idxprom | 0;
    $4 = HEAP8[$arrayidx12] | 0;
    $conv13 = $4 & 255;
    $cond = $conv13;
    label = 9;
    break;
   case 8:
    $call16 = _unicode_byte_type($6, $5) | 0;
    $cond = $call16;
    label = 9;
    break;
   case 9:
    $cond1 = ($cond | 0) == 25;
    if ($cond1) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $type26 = $enc + 72 | 0;
    $7 = $type26;
    $ptr_pn = $ptr;
    label = 12;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 19;
    break;
   case 12:
    $ptr_addr_0 = $ptr_pn + 2 | 0;
    $cmp18 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp18) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $arrayidx20 = $ptr_pn + 3 | 0;
    $8 = HEAP8[$arrayidx20] | 0;
    $cmp22 = $8 << 24 >> 24 == 0;
    $9 = HEAP8[$ptr_addr_0] | 0;
    if ($cmp22) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $idxprom25 = $9 & 255;
    $arrayidx27 = $7 + $idxprom25 | 0;
    $10 = HEAP8[$arrayidx27] | 0;
    $conv28 = $10 & 255;
    $cond34 = $conv28;
    label = 16;
    break;
   case 15:
    $call32 = _unicode_byte_type($8, $9) | 0;
    $cond34 = $call32;
    label = 16;
    break;
   case 16:
    if (($cond34 | 0) == 25) {
      $ptr_pn = $ptr_addr_0;
      label = 12;
      break;
    } else if (($cond34 | 0) == 18) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add_ptr37 = $ptr_pn + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr37;
    $retval_0 = 10;
    label = 19;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0;
    $retval_0 = 0;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanCdataSection($ptr, $end, $nextTokPtr) {
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $arrayidx = 0, $0 = 0, $cmp2 = 0, $1 = 0, $cmp8 = 0, $ptr_addr_02_lcssa = 0, $add_ptr = 0, $arrayidx_1 = 0, $2 = 0, $cmp2_1 = 0, $retval_0 = 0, $3 = 0, $cmp8_1 = 0, $add_ptr_1 = 0, $arrayidx_2 = 0, $4 = 0, $cmp2_2 = 0, $5 = 0, $cmp8_2 = 0, $add_ptr_2 = 0, $arrayidx_3 = 0, $6 = 0, $cmp2_3 = 0, $7 = 0, $cmp8_3 = 0, $add_ptr_3 = 0, $arrayidx_4 = 0, $8 = 0, $cmp2_4 = 0, $9 = 0, $cmp8_4 = 0, $add_ptr_4 = 0, $arrayidx_5 = 0, $10 = 0, $cmp2_5 = 0, $11 = 0, $cmp8_5 = 0, $add_ptr_5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) < 12;
    if ($cmp) {
      $retval_0 = -1;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp2 = $0 << 24 >> 24 == 0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      $ptr_addr_02_lcssa = $ptr;
      label = 5;
      break;
    }
   case 4:
    $1 = HEAP8[$ptr] | 0;
    $cmp8 = $1 << 24 >> 24 == 67;
    if ($cmp8) {
      label = 6;
      break;
    } else {
      $ptr_addr_02_lcssa = $ptr;
      label = 5;
      break;
    }
   case 5:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_02_lcssa;
    $retval_0 = 0;
    label = 7;
    break;
   case 6:
    $add_ptr = $ptr + 2 | 0;
    $arrayidx_1 = $ptr + 3 | 0;
    $2 = HEAP8[$arrayidx_1] | 0;
    $cmp2_1 = $2 << 24 >> 24 == 0;
    if ($cmp2_1) {
      label = 8;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr;
      label = 5;
      break;
    }
   case 7:
    return $retval_0 | 0;
   case 8:
    $3 = HEAP8[$add_ptr] | 0;
    $cmp8_1 = $3 << 24 >> 24 == 68;
    if ($cmp8_1) {
      label = 9;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr;
      label = 5;
      break;
    }
   case 9:
    $add_ptr_1 = $ptr + 4 | 0;
    $arrayidx_2 = $ptr + 5 | 0;
    $4 = HEAP8[$arrayidx_2] | 0;
    $cmp2_2 = $4 << 24 >> 24 == 0;
    if ($cmp2_2) {
      label = 10;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_1;
      label = 5;
      break;
    }
   case 10:
    $5 = HEAP8[$add_ptr_1] | 0;
    $cmp8_2 = $5 << 24 >> 24 == 65;
    if ($cmp8_2) {
      label = 11;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_1;
      label = 5;
      break;
    }
   case 11:
    $add_ptr_2 = $ptr + 6 | 0;
    $arrayidx_3 = $ptr + 7 | 0;
    $6 = HEAP8[$arrayidx_3] | 0;
    $cmp2_3 = $6 << 24 >> 24 == 0;
    if ($cmp2_3) {
      label = 12;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_2;
      label = 5;
      break;
    }
   case 12:
    $7 = HEAP8[$add_ptr_2] | 0;
    $cmp8_3 = $7 << 24 >> 24 == 84;
    if ($cmp8_3) {
      label = 13;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_2;
      label = 5;
      break;
    }
   case 13:
    $add_ptr_3 = $ptr + 8 | 0;
    $arrayidx_4 = $ptr + 9 | 0;
    $8 = HEAP8[$arrayidx_4] | 0;
    $cmp2_4 = $8 << 24 >> 24 == 0;
    if ($cmp2_4) {
      label = 14;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_3;
      label = 5;
      break;
    }
   case 14:
    $9 = HEAP8[$add_ptr_3] | 0;
    $cmp8_4 = $9 << 24 >> 24 == 65;
    if ($cmp8_4) {
      label = 15;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_3;
      label = 5;
      break;
    }
   case 15:
    $add_ptr_4 = $ptr + 10 | 0;
    $arrayidx_5 = $ptr + 11 | 0;
    $10 = HEAP8[$arrayidx_5] | 0;
    $cmp2_5 = $10 << 24 >> 24 == 0;
    if ($cmp2_5) {
      label = 16;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_4;
      label = 5;
      break;
    }
   case 16:
    $11 = HEAP8[$add_ptr_4] | 0;
    $cmp8_5 = $11 << 24 >> 24 == 91;
    if ($cmp8_5) {
      label = 17;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_4;
      label = 5;
      break;
    }
   case 17:
    $add_ptr_5 = $ptr + 12 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr_5;
    $retval_0 = 8;
    label = 7;
    break;
  }
  return 0;
}
function _little2_scanHexCharRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $cond_off = 0, $switch = 0, $ptr_addr_020 = 0, $cmp721 = 0, $type15 = 0, $4 = 0, $ptr_addr_023 = 0, $ptr_pn22 = 0, $arrayidx9 = 0, $5 = 0, $cmp11 = 0, $6 = 0, $idxprom14 = 0, $arrayidx16 = 0, $7 = 0, $conv17 = 0, $call21 = 0, $cond23 = 0, $ptr_addr_0 = 0, $cmp7 = 0, $add_ptr26 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    $cond_off = $cond - 24 | 0;
    $switch = $cond_off >>> 0 < 2;
    if ($switch) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $ptr_addr_020 = $ptr + 2 | 0;
    $cmp721 = ($ptr_addr_020 | 0) == ($end | 0);
    if ($cmp721) {
      $retval_0 = -1;
      label = 17;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type15 = $enc + 72 | 0;
    $4 = $type15;
    $ptr_pn22 = $ptr;
    $ptr_addr_023 = $ptr_addr_020;
    label = 10;
    break;
   case 9:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 17;
    break;
   case 10:
    $arrayidx9 = $ptr_pn22 + 3 | 0;
    $5 = HEAP8[$arrayidx9] | 0;
    $cmp11 = $5 << 24 >> 24 == 0;
    $6 = HEAP8[$ptr_addr_023] | 0;
    if ($cmp11) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $idxprom14 = $6 & 255;
    $arrayidx16 = $4 + $idxprom14 | 0;
    $7 = HEAP8[$arrayidx16] | 0;
    $conv17 = $7 & 255;
    $cond23 = $conv17;
    label = 13;
    break;
   case 12:
    $call21 = _unicode_byte_type($5, $6) | 0;
    $cond23 = $call21;
    label = 13;
    break;
   case 13:
    if (($cond23 | 0) == 25 | ($cond23 | 0) == 24) {
      label = 14;
      break;
    } else if (($cond23 | 0) == 18) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $ptr_addr_0 = $ptr_addr_023 + 2 | 0;
    $cmp7 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp7) {
      $retval_0 = -1;
      label = 17;
      break;
    } else {
      $ptr_pn22 = $ptr_addr_023;
      $ptr_addr_023 = $ptr_addr_0;
      label = 10;
      break;
    }
   case 15:
    $add_ptr26 = $ptr_pn22 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr26;
    $retval_0 = 10;
    label = 17;
    break;
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_023;
    $retval_0 = 0;
    label = 17;
    break;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanLt($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_0156 = 0, $cmp76157 = 0, $type84 = 0, $4 = 0, $5 = 0, $idxprom8 = 0, $arrayidx9 = 0, $6 = 0, $conv10 = 0, $shl = 0, $7 = 0, $conv12 = 0, $shr118 = 0, $add = 0, $arrayidx13 = 0, $8 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp22 = 0, $sub_ptr_lhs_cast27 = 0, $sub_ptr_rhs_cast28 = 0, $sub_ptr_sub29 = 0, $cmp30 = 0, $sub_ptr_lhs_cast35 = 0, $sub_ptr_rhs_cast36 = 0, $sub_ptr_sub37 = 0, $cmp38 = 0, $add_ptr43 = 0, $cmp44 = 0, $arrayidx48 = 0, $9 = 0, $cmp50 = 0, $10 = 0, $idxprom53 = 0, $type54 = 0, $11 = 0, $arrayidx55 = 0, $12 = 0, $conv56 = 0, $call60 = 0, $cond62 = 0, $add_ptr64 = 0, $call65 = 0, $add_ptr67 = 0, $call68 = 0, $add_ptr70 = 0, $call71 = 0, $add_ptr73 = 0, $call74 = 0, $ptr_addr_0159 = 0, $ptr_pn158 = 0, $arrayidx78 = 0, $13 = 0, $cmp80 = 0, $14 = 0, $idxprom83 = 0, $arrayidx85 = 0, $15 = 0, $conv86 = 0, $call90 = 0, $cond92 = 0, $16 = 0, $idxprom95 = 0, $arrayidx96 = 0, $17 = 0, $conv97 = 0, $shl98 = 0, $18 = 0, $conv100 = 0, $shr101117 = 0, $add102 = 0, $arrayidx103 = 0, $19 = 0, $and106 = 0, $shl107 = 0, $and108 = 0, $tobool109 = 0, $ptr_addr_0 = 0, $cmp76 = 0, $sub_ptr_lhs_cast115 = 0, $sub_ptr_rhs_cast116 = 0, $sub_ptr_sub117 = 0, $cmp118 = 0, $sub_ptr_lhs_cast123 = 0, $sub_ptr_rhs_cast124 = 0, $sub_ptr_sub125 = 0, $cmp126 = 0, $sub_ptr_lhs_cast131 = 0, $sub_ptr_rhs_cast132 = 0, $sub_ptr_sub133 = 0, $cmp134 = 0, $add_ptr139 = 0, $cmp141135 = 0, $type150 = 0, $20 = 0, $ptr_addr_1136 = 0, $arrayidx144 = 0, $21 = 0, $cmp146 = 0, $22 = 0, $idxprom149 = 0, $arrayidx151 = 0, $23 = 0, $conv152 = 0, $call156 = 0, $cond158 = 0, $24 = 0, $idxprom161 = 0, $arrayidx162 = 0, $25 = 0, $conv163 = 0, $shl164 = 0, $26 = 0, $conv166 = 0, $shr167116 = 0, $add168 = 0, $arrayidx169 = 0, $27 = 0, $and172 = 0, $shl173 = 0, $and174 = 0, $tobool175 = 0, $add_ptr179 = 0, $call210 = 0, $sub_ptr_lhs_cast181 = 0, $sub_ptr_rhs_cast182 = 0, $sub_ptr_sub183 = 0, $cmp184 = 0, $sub_ptr_lhs_cast189 = 0, $sub_ptr_rhs_cast190 = 0, $sub_ptr_sub191 = 0, $cmp192 = 0, $sub_ptr_lhs_cast197 = 0, $sub_ptr_rhs_cast198 = 0, $sub_ptr_sub199 = 0, $cmp200 = 0, $add_ptr207 = 0, $cmp141 = 0, $ptr_addr_2 = 0, $add_ptr212 = 0, $ptr_addr_3 = 0, $add_ptr214 = 0, $cmp215 = 0, $arrayidx219 = 0, $28 = 0, $cmp221 = 0, $29 = 0, $cmp225 = 0, $add_ptr229 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 16) {
      label = 17;
      break;
    } else if (($cond | 0) == 15) {
      label = 25;
      break;
    } else if (($cond | 0) == 17) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 7:
    $ptr_addr_0156 = $ptr + 2 | 0;
    $cmp76157 = ($ptr_addr_0156 | 0) == ($end | 0);
    if ($cmp76157) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type84 = $enc + 72 | 0;
    $4 = $type84;
    $ptr_pn158 = $ptr;
    $ptr_addr_0159 = $ptr_addr_0156;
    label = 28;
    break;
   case 9:
    $5 = HEAP8[$arrayidx] | 0;
    $idxprom8 = $5 & 255;
    $arrayidx9 = $idxprom8 + 9272 | 0;
    $6 = HEAP8[$arrayidx9] | 0;
    $conv10 = $6 & 255;
    $shl = $conv10 << 3;
    $7 = HEAP8[$ptr] | 0;
    $conv12 = $7 & 255;
    $shr118 = $conv12 >>> 5;
    $add = $shr118 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $8;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp22 = ($sub_ptr_sub | 0) < 2;
    if ($cmp22) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 13:
    $sub_ptr_lhs_cast27 = $end;
    $sub_ptr_rhs_cast28 = $ptr;
    $sub_ptr_sub29 = $sub_ptr_lhs_cast27 - $sub_ptr_rhs_cast28 | 0;
    $cmp30 = ($sub_ptr_sub29 | 0) < 3;
    if ($cmp30) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 15:
    $sub_ptr_lhs_cast35 = $end;
    $sub_ptr_rhs_cast36 = $ptr;
    $sub_ptr_sub37 = $sub_ptr_lhs_cast35 - $sub_ptr_rhs_cast36 | 0;
    $cmp38 = ($sub_ptr_sub37 | 0) < 4;
    if ($cmp38) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 17:
    $add_ptr43 = $ptr + 2 | 0;
    $cmp44 = ($add_ptr43 | 0) == ($end | 0);
    if ($cmp44) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $arrayidx48 = $ptr + 3 | 0;
    $9 = HEAP8[$arrayidx48] | 0;
    $cmp50 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$add_ptr43] | 0;
    if ($cmp50) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom53 = $10 & 255;
    $type54 = $enc + 72 | 0;
    $11 = $type54;
    $arrayidx55 = $11 + $idxprom53 | 0;
    $12 = HEAP8[$arrayidx55] | 0;
    $conv56 = $12 & 255;
    $cond62 = $conv56;
    label = 21;
    break;
   case 20:
    $call60 = _unicode_byte_type($9, $10) | 0;
    $cond62 = $call60;
    label = 21;
    break;
   case 21:
    if (($cond62 | 0) == 27) {
      label = 22;
      break;
    } else if (($cond62 | 0) == 20) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 22:
    $add_ptr64 = $ptr + 4 | 0;
    $call65 = _little2_scanComment($enc, $add_ptr64, $end, $nextTokPtr) | 0;
    $retval_0 = $call65;
    label = 65;
    break;
   case 23:
    $add_ptr67 = $ptr + 4 | 0;
    $call68 = _little2_scanCdataSection($add_ptr67, $end, $nextTokPtr) | 0;
    $retval_0 = $call68;
    label = 65;
    break;
   case 24:
    HEAP32[$nextTokPtr >> 2] = $add_ptr43;
    $retval_0 = 0;
    label = 65;
    break;
   case 25:
    $add_ptr70 = $ptr + 2 | 0;
    $call71 = _little2_scanPi($enc, $add_ptr70, $end, $nextTokPtr) | 0;
    $retval_0 = $call71;
    label = 65;
    break;
   case 26:
    $add_ptr73 = $ptr + 2 | 0;
    $call74 = _little2_scanEndTag($enc, $add_ptr73, $end, $nextTokPtr) | 0;
    $retval_0 = $call74;
    label = 65;
    break;
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 28:
    $arrayidx78 = $ptr_pn158 + 3 | 0;
    $13 = HEAP8[$arrayidx78] | 0;
    $cmp80 = $13 << 24 >> 24 == 0;
    $14 = HEAP8[$ptr_addr_0159] | 0;
    if ($cmp80) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $idxprom83 = $14 & 255;
    $arrayidx85 = $4 + $idxprom83 | 0;
    $15 = HEAP8[$arrayidx85] | 0;
    $conv86 = $15 & 255;
    $cond92 = $conv86;
    label = 31;
    break;
   case 30:
    $call90 = _unicode_byte_type($13, $14) | 0;
    $cond92 = $call90;
    label = 31;
    break;
   case 31:
    if (($cond92 | 0) == 29) {
      label = 32;
      break;
    } else if (($cond92 | 0) == 22 | ($cond92 | 0) == 24 | ($cond92 | 0) == 25 | ($cond92 | 0) == 26 | ($cond92 | 0) == 27) {
      label = 33;
      break;
    } else if (($cond92 | 0) == 5) {
      label = 35;
      break;
    } else if (($cond92 | 0) == 6) {
      label = 37;
      break;
    } else if (($cond92 | 0) == 7) {
      label = 39;
      break;
    } else if (($cond92 | 0) == 21 | ($cond92 | 0) == 9 | ($cond92 | 0) == 10) {
      label = 41;
      break;
    } else if (($cond92 | 0) == 11) {
      $ptr_addr_2 = $ptr_addr_0159;
      label = 58;
      break;
    } else if (($cond92 | 0) == 17) {
      $ptr_addr_3 = $ptr_addr_0159;
      label = 59;
      break;
    } else {
      label = 64;
      break;
    }
   case 32:
    $16 = HEAP8[$arrayidx78] | 0;
    $idxprom95 = $16 & 255;
    $arrayidx96 = $idxprom95 + 10824 | 0;
    $17 = HEAP8[$arrayidx96] | 0;
    $conv97 = $17 & 255;
    $shl98 = $conv97 << 3;
    $18 = HEAP8[$ptr_addr_0159] | 0;
    $conv100 = $18 & 255;
    $shr101117 = $conv100 >>> 5;
    $add102 = $shr101117 | $shl98;
    $arrayidx103 = 9544 + ($add102 << 2) | 0;
    $19 = HEAP32[$arrayidx103 >> 2] | 0;
    $and106 = $conv100 & 31;
    $shl107 = 1 << $and106;
    $and108 = $shl107 & $19;
    $tobool109 = ($and108 | 0) == 0;
    if ($tobool109) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $ptr_addr_0 = $ptr_addr_0159 + 2 | 0;
    $cmp76 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp76) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      $ptr_pn158 = $ptr_addr_0159;
      $ptr_addr_0159 = $ptr_addr_0;
      label = 28;
      break;
    }
   case 34:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 35:
    $sub_ptr_lhs_cast115 = $end;
    $sub_ptr_rhs_cast116 = $ptr_addr_0159;
    $sub_ptr_sub117 = $sub_ptr_lhs_cast115 - $sub_ptr_rhs_cast116 | 0;
    $cmp118 = ($sub_ptr_sub117 | 0) < 2;
    if ($cmp118) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 37:
    $sub_ptr_lhs_cast123 = $end;
    $sub_ptr_rhs_cast124 = $ptr_addr_0159;
    $sub_ptr_sub125 = $sub_ptr_lhs_cast123 - $sub_ptr_rhs_cast124 | 0;
    $cmp126 = ($sub_ptr_sub125 | 0) < 3;
    if ($cmp126) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 39:
    $sub_ptr_lhs_cast131 = $end;
    $sub_ptr_rhs_cast132 = $ptr_addr_0159;
    $sub_ptr_sub133 = $sub_ptr_lhs_cast131 - $sub_ptr_rhs_cast132 | 0;
    $cmp134 = ($sub_ptr_sub133 | 0) < 4;
    if ($cmp134) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 41:
    $add_ptr139 = $ptr_pn158 + 4 | 0;
    $cmp141135 = ($add_ptr139 | 0) == ($end | 0);
    if ($cmp141135) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $type150 = $enc + 72 | 0;
    $20 = $type150;
    $ptr_addr_1136 = $add_ptr139;
    label = 43;
    break;
   case 43:
    $arrayidx144 = $ptr_addr_1136 + 1 | 0;
    $21 = HEAP8[$arrayidx144] | 0;
    $cmp146 = $21 << 24 >> 24 == 0;
    $22 = HEAP8[$ptr_addr_1136] | 0;
    if ($cmp146) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    $idxprom149 = $22 & 255;
    $arrayidx151 = $20 + $idxprom149 | 0;
    $23 = HEAP8[$arrayidx151] | 0;
    $conv152 = $23 & 255;
    $cond158 = $conv152;
    label = 46;
    break;
   case 45:
    $call156 = _unicode_byte_type($21, $22) | 0;
    $cond158 = $call156;
    label = 46;
    break;
   case 46:
    if (($cond158 | 0) == 29) {
      label = 47;
      break;
    } else if (($cond158 | 0) == 22 | ($cond158 | 0) == 24) {
      label = 49;
      break;
    } else if (($cond158 | 0) == 5) {
      label = 50;
      break;
    } else if (($cond158 | 0) == 6) {
      label = 52;
      break;
    } else if (($cond158 | 0) == 7) {
      label = 54;
      break;
    } else if (($cond158 | 0) == 21 | ($cond158 | 0) == 9 | ($cond158 | 0) == 10) {
      label = 56;
      break;
    } else if (($cond158 | 0) == 11) {
      $ptr_addr_2 = $ptr_addr_1136;
      label = 58;
      break;
    } else if (($cond158 | 0) == 17) {
      $ptr_addr_3 = $ptr_addr_1136;
      label = 59;
      break;
    } else {
      label = 57;
      break;
    }
   case 47:
    $24 = HEAP8[$arrayidx144] | 0;
    $idxprom161 = $24 & 255;
    $arrayidx162 = $idxprom161 + 9272 | 0;
    $25 = HEAP8[$arrayidx162] | 0;
    $conv163 = $25 & 255;
    $shl164 = $conv163 << 3;
    $26 = HEAP8[$ptr_addr_1136] | 0;
    $conv166 = $26 & 255;
    $shr167116 = $conv166 >>> 5;
    $add168 = $shr167116 | $shl164;
    $arrayidx169 = 9544 + ($add168 << 2) | 0;
    $27 = HEAP32[$arrayidx169 >> 2] | 0;
    $and172 = $conv166 & 31;
    $shl173 = 1 << $and172;
    $and174 = $shl173 & $27;
    $tobool175 = ($and174 | 0) == 0;
    if ($tobool175) {
      label = 48;
      break;
    } else {
      label = 49;
      break;
    }
   case 48:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 49:
    $add_ptr179 = $ptr_addr_1136 + 2 | 0;
    $call210 = _little2_scanAtts($enc, $add_ptr179, $end, $nextTokPtr) | 0;
    $retval_0 = $call210;
    label = 65;
    break;
   case 50:
    $sub_ptr_lhs_cast181 = $end;
    $sub_ptr_rhs_cast182 = $ptr_addr_1136;
    $sub_ptr_sub183 = $sub_ptr_lhs_cast181 - $sub_ptr_rhs_cast182 | 0;
    $cmp184 = ($sub_ptr_sub183 | 0) < 2;
    if ($cmp184) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 52:
    $sub_ptr_lhs_cast189 = $end;
    $sub_ptr_rhs_cast190 = $ptr_addr_1136;
    $sub_ptr_sub191 = $sub_ptr_lhs_cast189 - $sub_ptr_rhs_cast190 | 0;
    $cmp192 = ($sub_ptr_sub191 | 0) < 3;
    if ($cmp192) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 54:
    $sub_ptr_lhs_cast197 = $end;
    $sub_ptr_rhs_cast198 = $ptr_addr_1136;
    $sub_ptr_sub199 = $sub_ptr_lhs_cast197 - $sub_ptr_rhs_cast198 | 0;
    $cmp200 = ($sub_ptr_sub199 | 0) < 4;
    if ($cmp200) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 56:
    $add_ptr207 = $ptr_addr_1136 + 2 | 0;
    $cmp141 = ($add_ptr207 | 0) == ($end | 0);
    if ($cmp141) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      $ptr_addr_1136 = $add_ptr207;
      label = 43;
      break;
    }
   case 57:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 58:
    $add_ptr212 = $ptr_addr_2 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr212;
    $retval_0 = 2;
    label = 65;
    break;
   case 59:
    $add_ptr214 = $ptr_addr_3 + 2 | 0;
    $cmp215 = ($add_ptr214 | 0) == ($end | 0);
    if ($cmp215) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $arrayidx219 = $ptr_addr_3 + 3 | 0;
    $28 = HEAP8[$arrayidx219] | 0;
    $cmp221 = $28 << 24 >> 24 == 0;
    if ($cmp221) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 61:
    $29 = HEAP8[$add_ptr214] | 0;
    $cmp225 = $29 << 24 >> 24 == 62;
    if ($cmp225) {
      label = 63;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    HEAP32[$nextTokPtr >> 2] = $add_ptr214;
    $retval_0 = 0;
    label = 65;
    break;
   case 63:
    $add_ptr229 = $ptr_addr_3 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr229;
    $retval_0 = 4;
    label = 65;
    break;
   case 64:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 65:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanComment($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $cmp5 = 0, $add_ptr = 0, $cmp836 = 0, $type = 0, $2 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_lhs_cast33 = 0, $ptr_addr_037 = 0, $arrayidx10 = 0, $3 = 0, $cmp12 = 0, $4 = 0, $idxprom = 0, $arrayidx14 = 0, $5 = 0, $conv15 = 0, $call = 0, $cond = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp18 = 0, $add_ptr22 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $add_ptr31 = 0, $sub_ptr_rhs_cast34 = 0, $sub_ptr_sub35 = 0, $cmp36 = 0, $add_ptr40 = 0, $add_ptr43 = 0, $cmp44 = 0, $arrayidx48 = 0, $6 = 0, $cmp50 = 0, $ptr_addr_0_be = 0, $cmp8 = 0, $7 = 0, $cmp55 = 0, $add_ptr58 = 0, $cmp59 = 0, $arrayidx63 = 0, $8 = 0, $cmp65 = 0, $9 = 0, $cmp70 = 0, $add_ptr74 = 0, $add_ptr76 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $1 = HEAP8[$ptr] | 0;
    $cmp5 = $1 << 24 >> 24 == 45;
    if ($cmp5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 29;
    break;
   case 6:
    $add_ptr = $ptr + 2 | 0;
    $cmp836 = ($add_ptr | 0) == ($end | 0);
    if ($cmp836) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $type = $enc + 72 | 0;
    $2 = $type;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_lhs_cast33 = $end;
    $ptr_addr_037 = $add_ptr;
    label = 8;
    break;
   case 8:
    $arrayidx10 = $ptr_addr_037 + 1 | 0;
    $3 = HEAP8[$arrayidx10] | 0;
    $cmp12 = $3 << 24 >> 24 == 0;
    $4 = HEAP8[$ptr_addr_037] | 0;
    if ($cmp12) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $idxprom = $4 & 255;
    $arrayidx14 = $2 + $idxprom | 0;
    $5 = HEAP8[$arrayidx14] | 0;
    $conv15 = $5 & 255;
    $cond = $conv15;
    label = 11;
    break;
   case 10:
    $call = _unicode_byte_type($3, $4) | 0;
    $cond = $call;
    label = 11;
    break;
   case 11:
    if (($cond | 0) == 5) {
      label = 12;
      break;
    } else if (($cond | 0) == 6) {
      label = 14;
      break;
    } else if (($cond | 0) == 7) {
      label = 16;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 18;
      break;
    } else if (($cond | 0) == 27) {
      label = 19;
      break;
    } else {
      label = 28;
      break;
    }
   case 12:
    $sub_ptr_rhs_cast = $ptr_addr_037;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp18 = ($sub_ptr_sub | 0) < 2;
    if ($cmp18) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $add_ptr22 = $ptr_addr_037 + 2 | 0;
    $ptr_addr_0_be = $add_ptr22;
    label = 21;
    break;
   case 14:
    $sub_ptr_rhs_cast25 = $ptr_addr_037;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 3;
    if ($cmp27) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add_ptr31 = $ptr_addr_037 + 3 | 0;
    $ptr_addr_0_be = $add_ptr31;
    label = 21;
    break;
   case 16:
    $sub_ptr_rhs_cast34 = $ptr_addr_037;
    $sub_ptr_sub35 = $sub_ptr_lhs_cast33 - $sub_ptr_rhs_cast34 | 0;
    $cmp36 = ($sub_ptr_sub35 | 0) < 4;
    if ($cmp36) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $add_ptr40 = $ptr_addr_037 + 4 | 0;
    $ptr_addr_0_be = $add_ptr40;
    label = 21;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_037;
    $retval_0 = 0;
    label = 29;
    break;
   case 19:
    $add_ptr43 = $ptr_addr_037 + 2 | 0;
    $cmp44 = ($add_ptr43 | 0) == ($end | 0);
    if ($cmp44) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $arrayidx48 = $ptr_addr_037 + 3 | 0;
    $6 = HEAP8[$arrayidx48] | 0;
    $cmp50 = $6 << 24 >> 24 == 0;
    if ($cmp50) {
      label = 22;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr43;
      label = 21;
      break;
    }
   case 21:
    $cmp8 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp8) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      $ptr_addr_037 = $ptr_addr_0_be;
      label = 8;
      break;
    }
   case 22:
    $7 = HEAP8[$add_ptr43] | 0;
    $cmp55 = $7 << 24 >> 24 == 45;
    if ($cmp55) {
      label = 23;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr43;
      label = 21;
      break;
    }
   case 23:
    $add_ptr58 = $ptr_addr_037 + 4 | 0;
    $cmp59 = ($add_ptr58 | 0) == ($end | 0);
    if ($cmp59) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $arrayidx63 = $ptr_addr_037 + 5 | 0;
    $8 = HEAP8[$arrayidx63] | 0;
    $cmp65 = $8 << 24 >> 24 == 0;
    if ($cmp65) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $9 = HEAP8[$add_ptr58] | 0;
    $cmp70 = $9 << 24 >> 24 == 62;
    if ($cmp70) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $add_ptr58;
    $retval_0 = 0;
    label = 29;
    break;
   case 27:
    $add_ptr74 = $ptr_addr_037 + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr74;
    $retval_0 = 13;
    label = 29;
    break;
   case 28:
    $add_ptr76 = $ptr_addr_037 + 2 | 0;
    $ptr_addr_0_be = $add_ptr76;
    label = 21;
    break;
   case 29:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanPi($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $tok = 0, $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_0111 = 0, $cmp42112 = 0, $type50 = 0, $4 = 0, $5 = 0, $idxprom8 = 0, $arrayidx9 = 0, $6 = 0, $conv10 = 0, $shl = 0, $7 = 0, $conv12 = 0, $shr91 = 0, $add = 0, $arrayidx13 = 0, $8 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp22 = 0, $sub_ptr_lhs_cast27 = 0, $sub_ptr_rhs_cast28 = 0, $sub_ptr_sub29 = 0, $cmp30 = 0, $sub_ptr_lhs_cast35 = 0, $sub_ptr_rhs_cast36 = 0, $sub_ptr_sub37 = 0, $cmp38 = 0, $ptr_addr_0114 = 0, $ptr_pn113 = 0, $arrayidx44 = 0, $9 = 0, $cmp46 = 0, $10 = 0, $idxprom49 = 0, $arrayidx51 = 0, $11 = 0, $conv52 = 0, $call56 = 0, $cond58 = 0, $12 = 0, $idxprom61 = 0, $arrayidx62 = 0, $13 = 0, $conv63 = 0, $shl64 = 0, $14 = 0, $conv66 = 0, $shr6790 = 0, $add68 = 0, $arrayidx69 = 0, $15 = 0, $and72 = 0, $shl73 = 0, $and74 = 0, $tobool75 = 0, $ptr_addr_0 = 0, $cmp42 = 0, $sub_ptr_lhs_cast81 = 0, $sub_ptr_rhs_cast82 = 0, $sub_ptr_sub83 = 0, $cmp84 = 0, $sub_ptr_lhs_cast89 = 0, $sub_ptr_rhs_cast90 = 0, $sub_ptr_sub91 = 0, $cmp92 = 0, $sub_ptr_lhs_cast97 = 0, $sub_ptr_rhs_cast98 = 0, $sub_ptr_sub99 = 0, $cmp100 = 0, $call105 = 0, $tobool106 = 0, $add_ptr109 = 0, $cmp11194 = 0, $type120 = 0, $16 = 0, $sub_ptr_lhs_cast130 = 0, $sub_ptr_lhs_cast139 = 0, $sub_ptr_lhs_cast148 = 0, $ptr_addr_195 = 0, $arrayidx114 = 0, $17 = 0, $cmp116 = 0, $18 = 0, $idxprom119 = 0, $arrayidx121 = 0, $19 = 0, $conv122 = 0, $call126 = 0, $cond128 = 0, $sub_ptr_rhs_cast131 = 0, $sub_ptr_sub132 = 0, $cmp133 = 0, $add_ptr137 = 0, $sub_ptr_rhs_cast140 = 0, $sub_ptr_sub141 = 0, $cmp142 = 0, $add_ptr146 = 0, $sub_ptr_rhs_cast149 = 0, $sub_ptr_sub150 = 0, $cmp151 = 0, $add_ptr155 = 0, $add_ptr158 = 0, $cmp159 = 0, $arrayidx163 = 0, $20 = 0, $cmp165 = 0, $ptr_addr_1_be = 0, $cmp111 = 0, $21 = 0, $cmp169 = 0, $add_ptr172 = 0, $22 = 0, $add_ptr175 = 0, $call178 = 0, $tobool179 = 0, $add_ptr182 = 0, $cmp183 = 0, $arrayidx187 = 0, $23 = 0, $cmp189 = 0, $24 = 0, $cmp194 = 0, $add_ptr197 = 0, $25 = 0, $ptr_addr_2 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tok = __stackBase__ | 0;
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 7:
    $ptr_addr_0111 = $ptr + 2 | 0;
    $cmp42112 = ($ptr_addr_0111 | 0) == ($end | 0);
    if ($cmp42112) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type50 = $enc + 72 | 0;
    $4 = $type50;
    $ptr_pn113 = $ptr;
    $ptr_addr_0114 = $ptr_addr_0111;
    label = 18;
    break;
   case 9:
    $5 = HEAP8[$arrayidx] | 0;
    $idxprom8 = $5 & 255;
    $arrayidx9 = $idxprom8 + 9272 | 0;
    $6 = HEAP8[$arrayidx9] | 0;
    $conv10 = $6 & 255;
    $shl = $conv10 << 3;
    $7 = HEAP8[$ptr] | 0;
    $conv12 = $7 & 255;
    $shr91 = $conv12 >>> 5;
    $add = $shr91 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $8;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp22 = ($sub_ptr_sub | 0) < 2;
    if ($cmp22) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 13:
    $sub_ptr_lhs_cast27 = $end;
    $sub_ptr_rhs_cast28 = $ptr;
    $sub_ptr_sub29 = $sub_ptr_lhs_cast27 - $sub_ptr_rhs_cast28 | 0;
    $cmp30 = ($sub_ptr_sub29 | 0) < 3;
    if ($cmp30) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 15:
    $sub_ptr_lhs_cast35 = $end;
    $sub_ptr_rhs_cast36 = $ptr;
    $sub_ptr_sub37 = $sub_ptr_lhs_cast35 - $sub_ptr_rhs_cast36 | 0;
    $cmp38 = ($sub_ptr_sub37 | 0) < 4;
    if ($cmp38) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 18:
    $arrayidx44 = $ptr_pn113 + 3 | 0;
    $9 = HEAP8[$arrayidx44] | 0;
    $cmp46 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$ptr_addr_0114] | 0;
    if ($cmp46) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom49 = $10 & 255;
    $arrayidx51 = $4 + $idxprom49 | 0;
    $11 = HEAP8[$arrayidx51] | 0;
    $conv52 = $11 & 255;
    $cond58 = $conv52;
    label = 21;
    break;
   case 20:
    $call56 = _unicode_byte_type($9, $10) | 0;
    $cond58 = $call56;
    label = 21;
    break;
   case 21:
    if (($cond58 | 0) == 29) {
      label = 22;
      break;
    } else if (($cond58 | 0) == 22 | ($cond58 | 0) == 24 | ($cond58 | 0) == 25 | ($cond58 | 0) == 26 | ($cond58 | 0) == 27) {
      label = 23;
      break;
    } else if (($cond58 | 0) == 5) {
      label = 25;
      break;
    } else if (($cond58 | 0) == 6) {
      label = 27;
      break;
    } else if (($cond58 | 0) == 7) {
      label = 29;
      break;
    } else if (($cond58 | 0) == 21 | ($cond58 | 0) == 9 | ($cond58 | 0) == 10) {
      label = 31;
      break;
    } else if (($cond58 | 0) == 15) {
      label = 52;
      break;
    } else {
      $ptr_addr_2 = $ptr_addr_0114;
      label = 58;
      break;
    }
   case 22:
    $12 = HEAP8[$arrayidx44] | 0;
    $idxprom61 = $12 & 255;
    $arrayidx62 = $idxprom61 + 10824 | 0;
    $13 = HEAP8[$arrayidx62] | 0;
    $conv63 = $13 & 255;
    $shl64 = $conv63 << 3;
    $14 = HEAP8[$ptr_addr_0114] | 0;
    $conv66 = $14 & 255;
    $shr6790 = $conv66 >>> 5;
    $add68 = $shr6790 | $shl64;
    $arrayidx69 = 9544 + ($add68 << 2) | 0;
    $15 = HEAP32[$arrayidx69 >> 2] | 0;
    $and72 = $conv66 & 31;
    $shl73 = 1 << $and72;
    $and74 = $shl73 & $15;
    $tobool75 = ($and74 | 0) == 0;
    if ($tobool75) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $ptr_addr_0 = $ptr_addr_0114 + 2 | 0;
    $cmp42 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp42) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      $ptr_pn113 = $ptr_addr_0114;
      $ptr_addr_0114 = $ptr_addr_0;
      label = 18;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 25:
    $sub_ptr_lhs_cast81 = $end;
    $sub_ptr_rhs_cast82 = $ptr_addr_0114;
    $sub_ptr_sub83 = $sub_ptr_lhs_cast81 - $sub_ptr_rhs_cast82 | 0;
    $cmp84 = ($sub_ptr_sub83 | 0) < 2;
    if ($cmp84) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 27:
    $sub_ptr_lhs_cast89 = $end;
    $sub_ptr_rhs_cast90 = $ptr_addr_0114;
    $sub_ptr_sub91 = $sub_ptr_lhs_cast89 - $sub_ptr_rhs_cast90 | 0;
    $cmp92 = ($sub_ptr_sub91 | 0) < 3;
    if ($cmp92) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 29:
    $sub_ptr_lhs_cast97 = $end;
    $sub_ptr_rhs_cast98 = $ptr_addr_0114;
    $sub_ptr_sub99 = $sub_ptr_lhs_cast97 - $sub_ptr_rhs_cast98 | 0;
    $cmp100 = ($sub_ptr_sub99 | 0) < 4;
    if ($cmp100) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 31:
    $call105 = _little2_checkPiTarget($ptr, $ptr_addr_0114, $tok) | 0;
    $tobool106 = ($call105 | 0) == 0;
    if ($tobool106) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 32:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 33:
    $add_ptr109 = $ptr_pn113 + 4 | 0;
    $cmp11194 = ($add_ptr109 | 0) == ($end | 0);
    if ($cmp11194) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $type120 = $enc + 72 | 0;
    $16 = $type120;
    $sub_ptr_lhs_cast130 = $end;
    $sub_ptr_lhs_cast139 = $end;
    $sub_ptr_lhs_cast148 = $end;
    $ptr_addr_195 = $add_ptr109;
    label = 35;
    break;
   case 35:
    $arrayidx114 = $ptr_addr_195 + 1 | 0;
    $17 = HEAP8[$arrayidx114] | 0;
    $cmp116 = $17 << 24 >> 24 == 0;
    $18 = HEAP8[$ptr_addr_195] | 0;
    if ($cmp116) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    $idxprom119 = $18 & 255;
    $arrayidx121 = $16 + $idxprom119 | 0;
    $19 = HEAP8[$arrayidx121] | 0;
    $conv122 = $19 & 255;
    $cond128 = $conv122;
    label = 38;
    break;
   case 37:
    $call126 = _unicode_byte_type($17, $18) | 0;
    $cond128 = $call126;
    label = 38;
    break;
   case 38:
    if (($cond128 | 0) == 5) {
      label = 39;
      break;
    } else if (($cond128 | 0) == 6) {
      label = 41;
      break;
    } else if (($cond128 | 0) == 7) {
      label = 43;
      break;
    } else if (($cond128 | 0) == 0 | ($cond128 | 0) == 1 | ($cond128 | 0) == 8) {
      label = 45;
      break;
    } else if (($cond128 | 0) == 15) {
      label = 46;
      break;
    } else {
      label = 51;
      break;
    }
   case 39:
    $sub_ptr_rhs_cast131 = $ptr_addr_195;
    $sub_ptr_sub132 = $sub_ptr_lhs_cast130 - $sub_ptr_rhs_cast131 | 0;
    $cmp133 = ($sub_ptr_sub132 | 0) < 2;
    if ($cmp133) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $add_ptr137 = $ptr_addr_195 + 2 | 0;
    $ptr_addr_1_be = $add_ptr137;
    label = 48;
    break;
   case 41:
    $sub_ptr_rhs_cast140 = $ptr_addr_195;
    $sub_ptr_sub141 = $sub_ptr_lhs_cast139 - $sub_ptr_rhs_cast140 | 0;
    $cmp142 = ($sub_ptr_sub141 | 0) < 3;
    if ($cmp142) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $add_ptr146 = $ptr_addr_195 + 3 | 0;
    $ptr_addr_1_be = $add_ptr146;
    label = 48;
    break;
   case 43:
    $sub_ptr_rhs_cast149 = $ptr_addr_195;
    $sub_ptr_sub150 = $sub_ptr_lhs_cast148 - $sub_ptr_rhs_cast149 | 0;
    $cmp151 = ($sub_ptr_sub150 | 0) < 4;
    if ($cmp151) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $add_ptr155 = $ptr_addr_195 + 4 | 0;
    $ptr_addr_1_be = $add_ptr155;
    label = 48;
    break;
   case 45:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_195;
    $retval_0 = 0;
    label = 59;
    break;
   case 46:
    $add_ptr158 = $ptr_addr_195 + 2 | 0;
    $cmp159 = ($add_ptr158 | 0) == ($end | 0);
    if ($cmp159) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $arrayidx163 = $ptr_addr_195 + 3 | 0;
    $20 = HEAP8[$arrayidx163] | 0;
    $cmp165 = $20 << 24 >> 24 == 0;
    if ($cmp165) {
      label = 49;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr158;
      label = 48;
      break;
    }
   case 48:
    $cmp111 = ($ptr_addr_1_be | 0) == ($end | 0);
    if ($cmp111) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      $ptr_addr_195 = $ptr_addr_1_be;
      label = 35;
      break;
    }
   case 49:
    $21 = HEAP8[$add_ptr158] | 0;
    $cmp169 = $21 << 24 >> 24 == 62;
    if ($cmp169) {
      label = 50;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr158;
      label = 48;
      break;
    }
   case 50:
    $add_ptr172 = $ptr_addr_195 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr172;
    $22 = HEAP32[$tok >> 2] | 0;
    $retval_0 = $22;
    label = 59;
    break;
   case 51:
    $add_ptr175 = $ptr_addr_195 + 2 | 0;
    $ptr_addr_1_be = $add_ptr175;
    label = 48;
    break;
   case 52:
    $call178 = _little2_checkPiTarget($ptr, $ptr_addr_0114, $tok) | 0;
    $tobool179 = ($call178 | 0) == 0;
    if ($tobool179) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 54:
    $add_ptr182 = $ptr_pn113 + 4 | 0;
    $cmp183 = ($add_ptr182 | 0) == ($end | 0);
    if ($cmp183) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $arrayidx187 = $ptr_pn113 + 5 | 0;
    $23 = HEAP8[$arrayidx187] | 0;
    $cmp189 = $23 << 24 >> 24 == 0;
    if ($cmp189) {
      label = 56;
      break;
    } else {
      $ptr_addr_2 = $add_ptr182;
      label = 58;
      break;
    }
   case 56:
    $24 = HEAP8[$add_ptr182] | 0;
    $cmp194 = $24 << 24 >> 24 == 62;
    if ($cmp194) {
      label = 57;
      break;
    } else {
      $ptr_addr_2 = $add_ptr182;
      label = 58;
      break;
    }
   case 57:
    $add_ptr197 = $ptr_pn113 + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr197;
    $25 = HEAP32[$tok >> 2] | 0;
    $retval_0 = $25;
    label = 59;
    break;
   case 58:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_2;
    $retval_0 = 0;
    label = 59;
    break;
   case 59:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanEndTag($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_084 = 0, $cmp4285 = 0, $type50 = 0, $4 = 0, $5 = 0, $idxprom8 = 0, $arrayidx9 = 0, $6 = 0, $conv10 = 0, $shl = 0, $7 = 0, $conv12 = 0, $shr64 = 0, $add = 0, $arrayidx13 = 0, $8 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp22 = 0, $sub_ptr_lhs_cast27 = 0, $sub_ptr_rhs_cast28 = 0, $sub_ptr_sub29 = 0, $cmp30 = 0, $sub_ptr_lhs_cast35 = 0, $sub_ptr_rhs_cast36 = 0, $sub_ptr_sub37 = 0, $cmp38 = 0, $ptr_addr_087 = 0, $ptr_pn86 = 0, $arrayidx44 = 0, $9 = 0, $cmp46 = 0, $10 = 0, $idxprom49 = 0, $arrayidx51 = 0, $11 = 0, $conv52 = 0, $call56 = 0, $cond58 = 0, $12 = 0, $idxprom61 = 0, $arrayidx62 = 0, $13 = 0, $conv63 = 0, $shl64 = 0, $14 = 0, $conv66 = 0, $shr6763 = 0, $add68 = 0, $arrayidx69 = 0, $15 = 0, $and72 = 0, $shl73 = 0, $and74 = 0, $tobool75 = 0, $ptr_addr_0 = 0, $cmp42 = 0, $sub_ptr_lhs_cast81 = 0, $sub_ptr_rhs_cast82 = 0, $sub_ptr_sub83 = 0, $cmp84 = 0, $sub_ptr_lhs_cast89 = 0, $sub_ptr_rhs_cast90 = 0, $sub_ptr_sub91 = 0, $cmp92 = 0, $sub_ptr_lhs_cast97 = 0, $sub_ptr_rhs_cast98 = 0, $sub_ptr_sub99 = 0, $cmp100 = 0, $add_ptr105 = 0, $cmp10667 = 0, $type114 = 0, $16 = 0, $ptr_addr_168 = 0, $arrayidx108 = 0, $17 = 0, $cmp110 = 0, $18 = 0, $idxprom113 = 0, $arrayidx115 = 0, $19 = 0, $conv116 = 0, $call120 = 0, $cond122 = 0, $add_ptr125 = 0, $add_ptr128 = 0, $cmp106 = 0, $add_ptr130 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 7:
    $ptr_addr_084 = $ptr + 2 | 0;
    $cmp4285 = ($ptr_addr_084 | 0) == ($end | 0);
    if ($cmp4285) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type50 = $enc + 72 | 0;
    $4 = $type50;
    $ptr_pn86 = $ptr;
    $ptr_addr_087 = $ptr_addr_084;
    label = 18;
    break;
   case 9:
    $5 = HEAP8[$arrayidx] | 0;
    $idxprom8 = $5 & 255;
    $arrayidx9 = $idxprom8 + 9272 | 0;
    $6 = HEAP8[$arrayidx9] | 0;
    $conv10 = $6 & 255;
    $shl = $conv10 << 3;
    $7 = HEAP8[$ptr] | 0;
    $conv12 = $7 & 255;
    $shr64 = $conv12 >>> 5;
    $add = $shr64 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $8;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp22 = ($sub_ptr_sub | 0) < 2;
    if ($cmp22) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 13:
    $sub_ptr_lhs_cast27 = $end;
    $sub_ptr_rhs_cast28 = $ptr;
    $sub_ptr_sub29 = $sub_ptr_lhs_cast27 - $sub_ptr_rhs_cast28 | 0;
    $cmp30 = ($sub_ptr_sub29 | 0) < 3;
    if ($cmp30) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 15:
    $sub_ptr_lhs_cast35 = $end;
    $sub_ptr_rhs_cast36 = $ptr;
    $sub_ptr_sub37 = $sub_ptr_lhs_cast35 - $sub_ptr_rhs_cast36 | 0;
    $cmp38 = ($sub_ptr_sub37 | 0) < 4;
    if ($cmp38) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 18:
    $arrayidx44 = $ptr_pn86 + 3 | 0;
    $9 = HEAP8[$arrayidx44] | 0;
    $cmp46 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$ptr_addr_087] | 0;
    if ($cmp46) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom49 = $10 & 255;
    $arrayidx51 = $4 + $idxprom49 | 0;
    $11 = HEAP8[$arrayidx51] | 0;
    $conv52 = $11 & 255;
    $cond58 = $conv52;
    label = 21;
    break;
   case 20:
    $call56 = _unicode_byte_type($9, $10) | 0;
    $cond58 = $call56;
    label = 21;
    break;
   case 21:
    if (($cond58 | 0) == 29) {
      label = 22;
      break;
    } else if (($cond58 | 0) == 22 | ($cond58 | 0) == 24 | ($cond58 | 0) == 25 | ($cond58 | 0) == 26 | ($cond58 | 0) == 27) {
      label = 23;
      break;
    } else if (($cond58 | 0) == 5) {
      label = 25;
      break;
    } else if (($cond58 | 0) == 6) {
      label = 27;
      break;
    } else if (($cond58 | 0) == 7) {
      label = 29;
      break;
    } else if (($cond58 | 0) == 21 | ($cond58 | 0) == 9 | ($cond58 | 0) == 10) {
      label = 31;
      break;
    } else if (($cond58 | 0) == 11) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 22:
    $12 = HEAP8[$arrayidx44] | 0;
    $idxprom61 = $12 & 255;
    $arrayidx62 = $idxprom61 + 10824 | 0;
    $13 = HEAP8[$arrayidx62] | 0;
    $conv63 = $13 & 255;
    $shl64 = $conv63 << 3;
    $14 = HEAP8[$ptr_addr_087] | 0;
    $conv66 = $14 & 255;
    $shr6763 = $conv66 >>> 5;
    $add68 = $shr6763 | $shl64;
    $arrayidx69 = 9544 + ($add68 << 2) | 0;
    $15 = HEAP32[$arrayidx69 >> 2] | 0;
    $and72 = $conv66 & 31;
    $shl73 = 1 << $and72;
    $and74 = $shl73 & $15;
    $tobool75 = ($and74 | 0) == 0;
    if ($tobool75) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $ptr_addr_0 = $ptr_addr_087 + 2 | 0;
    $cmp42 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp42) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      $ptr_pn86 = $ptr_addr_087;
      $ptr_addr_087 = $ptr_addr_0;
      label = 18;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 25:
    $sub_ptr_lhs_cast81 = $end;
    $sub_ptr_rhs_cast82 = $ptr_addr_087;
    $sub_ptr_sub83 = $sub_ptr_lhs_cast81 - $sub_ptr_rhs_cast82 | 0;
    $cmp84 = ($sub_ptr_sub83 | 0) < 2;
    if ($cmp84) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 27:
    $sub_ptr_lhs_cast89 = $end;
    $sub_ptr_rhs_cast90 = $ptr_addr_087;
    $sub_ptr_sub91 = $sub_ptr_lhs_cast89 - $sub_ptr_rhs_cast90 | 0;
    $cmp92 = ($sub_ptr_sub91 | 0) < 3;
    if ($cmp92) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 29:
    $sub_ptr_lhs_cast97 = $end;
    $sub_ptr_rhs_cast98 = $ptr_addr_087;
    $sub_ptr_sub99 = $sub_ptr_lhs_cast97 - $sub_ptr_rhs_cast98 | 0;
    $cmp100 = ($sub_ptr_sub99 | 0) < 4;
    if ($cmp100) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 31:
    $add_ptr105 = $ptr_pn86 + 4 | 0;
    $cmp10667 = ($add_ptr105 | 0) == ($end | 0);
    if ($cmp10667) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $type114 = $enc + 72 | 0;
    $16 = $type114;
    $ptr_addr_168 = $add_ptr105;
    label = 33;
    break;
   case 33:
    $arrayidx108 = $ptr_addr_168 + 1 | 0;
    $17 = HEAP8[$arrayidx108] | 0;
    $cmp110 = $17 << 24 >> 24 == 0;
    $18 = HEAP8[$ptr_addr_168] | 0;
    if ($cmp110) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    $idxprom113 = $18 & 255;
    $arrayidx115 = $16 + $idxprom113 | 0;
    $19 = HEAP8[$arrayidx115] | 0;
    $conv116 = $19 & 255;
    $cond122 = $conv116;
    label = 36;
    break;
   case 35:
    $call120 = _unicode_byte_type($17, $18) | 0;
    $cond122 = $call120;
    label = 36;
    break;
   case 36:
    if (($cond122 | 0) == 11) {
      label = 37;
      break;
    } else if (($cond122 | 0) == 21 | ($cond122 | 0) == 9 | ($cond122 | 0) == 10) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $add_ptr125 = $ptr_addr_168 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr125;
    $retval_0 = 5;
    label = 42;
    break;
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_168;
    $retval_0 = 0;
    label = 42;
    break;
   case 39:
    $add_ptr128 = $ptr_addr_168 + 2 | 0;
    $cmp106 = ($add_ptr128 | 0) == ($end | 0);
    if ($cmp106) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      $ptr_addr_168 = $add_ptr128;
      label = 33;
      break;
    }
   case 40:
    $add_ptr130 = $ptr_pn86 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr130;
    $retval_0 = 5;
    label = 42;
    break;
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 42:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_checkPiTarget($ptr, $end, $tokPtr) {
  $ptr = $ptr | 0;
  $end = $end | 0;
  $tokPtr = $tokPtr | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $conv4 = 0, $upper_0 = 0, $arrayidx6 = 0, $2 = 0, $cmp8 = 0, $add_ptr = 0, $3 = 0, $conv12 = 0, $upper_1 = 0, $arrayidx21 = 0, $4 = 0, $cmp23 = 0, $add_ptr20 = 0, $5 = 0, $conv27 = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[$tokPtr >> 2] = 11;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) == 6;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 4:
    $1 = HEAP8[$ptr] | 0;
    $conv4 = $1 << 24 >> 24;
    if (($conv4 | 0) == 88) {
      label = 5;
      break;
    } else if (($conv4 | 0) == 120) {
      $upper_0 = 0;
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 5:
    $upper_0 = 1;
    label = 6;
    break;
   case 6:
    $arrayidx6 = $ptr + 3 | 0;
    $2 = HEAP8[$arrayidx6] | 0;
    $cmp8 = $2 << 24 >> 24 == 0;
    if ($cmp8) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 7:
    $add_ptr = $ptr + 2 | 0;
    $3 = HEAP8[$add_ptr] | 0;
    $conv12 = $3 << 24 >> 24;
    if (($conv12 | 0) == 77) {
      label = 8;
      break;
    } else if (($conv12 | 0) == 109) {
      $upper_1 = $upper_0;
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 8:
    $upper_1 = 1;
    label = 9;
    break;
   case 9:
    $arrayidx21 = $ptr + 5 | 0;
    $4 = HEAP8[$arrayidx21] | 0;
    $cmp23 = $4 << 24 >> 24 == 0;
    if ($cmp23) {
      label = 10;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 10:
    $add_ptr20 = $ptr + 4 | 0;
    $5 = HEAP8[$add_ptr20] | 0;
    $conv27 = $5 << 24 >> 24;
    if (($conv27 | 0) == 76) {
      label = 11;
      break;
    } else if (($conv27 | 0) == 108) {
      label = 12;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 11:
    $retval_0 = 0;
    label = 14;
    break;
   case 12:
    $tobool = ($upper_1 | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      $retval_0 = 0;
      label = 14;
      break;
    }
   case 13:
    HEAP32[$tokPtr >> 2] = 12;
    $retval_0 = 1;
    label = 14;
    break;
   case 14:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanAtts($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $ptr_addr = 0, $cmp68 = 0, $type = 0, $0 = 0, $type52 = 0, $1 = 0, $type79 = 0, $2 = 0, $type111 = 0, $3 = 0, $sub_ptr_lhs_cast125 = 0, $sub_ptr_lhs_cast134 = 0, $sub_ptr_lhs_cast143 = 0, $type179 = 0, $4 = 0, $type205 = 0, $5 = 0, $6 = 0, $arrayidx = 0, $7 = 0, $cmp1 = 0, $8 = 0, $idxprom = 0, $arrayidx3 = 0, $9 = 0, $conv4 = 0, $call = 0, $cond = 0, $10 = 0, $add_ptr4150 = 0, $cmp4251 = 0, $11 = 0, $arrayidx7 = 0, $12 = 0, $idxprom8 = 0, $arrayidx9 = 0, $13 = 0, $conv10 = 0, $shl = 0, $14 = 0, $conv12 = 0, $shr49 = 0, $add = 0, $arrayidx13 = 0, $15 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $16 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp20 = 0, $17 = 0, $sub_ptr_lhs_cast25 = 0, $sub_ptr_rhs_cast26 = 0, $sub_ptr_sub27 = 0, $cmp28 = 0, $18 = 0, $sub_ptr_lhs_cast33 = 0, $sub_ptr_rhs_cast34 = 0, $sub_ptr_sub35 = 0, $cmp36 = 0, $add_ptr4152 = 0, $19 = 0, $arrayidx46 = 0, $20 = 0, $cmp48 = 0, $21 = 0, $idxprom51 = 0, $arrayidx53 = 0, $22 = 0, $conv54 = 0, $call58 = 0, $cond60 = 0, $23 = 0, $add_ptr41 = 0, $cmp42 = 0, $24 = 0, $25 = 0, $add_ptr6855 = 0, $cmp6956 = 0, $add_ptr6857 = 0, $26 = 0, $arrayidx73 = 0, $27 = 0, $cmp75 = 0, $28 = 0, $idxprom78 = 0, $arrayidx80 = 0, $29 = 0, $conv81 = 0, $call85 = 0, $cond87 = 0, $cond87_off = 0, $30 = 0, $31 = 0, $add_ptr68 = 0, $cmp69 = 0, $32 = 0, $33 = 0, $add_ptr98 = 0, $cmp10159 = 0, $34 = 0, $arrayidx105 = 0, $35 = 0, $cmp107 = 0, $36 = 0, $idxprom110 = 0, $arrayidx112 = 0, $37 = 0, $conv113 = 0, $call117 = 0, $cond119 = 0, $cmp120 = 0, $38 = 0, $sub_ptr_rhs_cast126 = 0, $sub_ptr_sub127 = 0, $cmp128 = 0, $add_ptr132 = 0, $39 = 0, $sub_ptr_rhs_cast135 = 0, $sub_ptr_sub136 = 0, $cmp137 = 0, $add_ptr141 = 0, $40 = 0, $sub_ptr_rhs_cast144 = 0, $sub_ptr_sub145 = 0, $cmp146 = 0, $add_ptr150 = 0, $41 = 0, $42 = 0, $add_ptr153 = 0, $call154 = 0, $cmp155 = 0, $43 = 0, $cmp101 = 0, $cmp158 = 0, $44 = 0, $45 = 0, $46 = 0, $add_ptr165 = 0, $47 = 0, $add_ptr168 = 0, $cmp169 = 0, $arrayidx173 = 0, $48 = 0, $cmp175 = 0, $49 = 0, $idxprom178 = 0, $arrayidx180 = 0, $50 = 0, $conv181 = 0, $call185 = 0, $cond187 = 0, $51 = 0, $add_ptr19461 = 0, $cmp19562 = 0, $52 = 0, $add_ptr19463 = 0, $53 = 0, $arrayidx199 = 0, $54 = 0, $cmp201 = 0, $55 = 0, $idxprom204 = 0, $arrayidx206 = 0, $56 = 0, $conv207 = 0, $call211 = 0, $cond213 = 0, $57 = 0, $add_ptr194 = 0, $cmp195 = 0, $58 = 0, $arrayidx215 = 0, $59 = 0, $idxprom216 = 0, $arrayidx217 = 0, $60 = 0, $conv218 = 0, $shl219 = 0, $61 = 0, $conv221 = 0, $shr22248 = 0, $add223 = 0, $arrayidx224 = 0, $62 = 0, $and227 = 0, $shl228 = 0, $and229 = 0, $tobool230 = 0, $_pn = 0, $storemerge = 0, $cmp = 0, $63 = 0, $sub_ptr_lhs_cast236 = 0, $sub_ptr_rhs_cast237 = 0, $sub_ptr_sub238 = 0, $cmp239 = 0, $64 = 0, $sub_ptr_lhs_cast244 = 0, $sub_ptr_rhs_cast245 = 0, $sub_ptr_sub246 = 0, $cmp247 = 0, $65 = 0, $sub_ptr_lhs_cast252 = 0, $sub_ptr_rhs_cast253 = 0, $sub_ptr_sub254 = 0, $cmp255 = 0, $66 = 0, $add_ptr261 = 0, $67 = 0, $add_ptr263 = 0, $cmp264 = 0, $arrayidx268 = 0, $68 = 0, $cmp270 = 0, $69 = 0, $cmp274 = 0, $70 = 0, $add_ptr278 = 0, $71 = 0, $72 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    $cmp68 = ($ptr | 0) == ($end | 0);
    if ($cmp68) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $type52 = $enc + 72 | 0;
    $1 = $type52;
    $type79 = $enc + 72 | 0;
    $2 = $type79;
    $type111 = $enc + 72 | 0;
    $3 = $type111;
    $sub_ptr_lhs_cast125 = $end;
    $sub_ptr_lhs_cast134 = $end;
    $sub_ptr_lhs_cast143 = $end;
    $type179 = $enc + 72 | 0;
    $4 = $type179;
    $type205 = $enc + 72 | 0;
    $5 = $type205;
    $6 = $ptr;
    label = 4;
    break;
   case 4:
    $arrayidx = $6 + 1 | 0;
    $7 = HEAP8[$arrayidx] | 0;
    $cmp1 = $7 << 24 >> 24 == 0;
    $8 = HEAP8[$6] | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $8 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $9 = HEAP8[$arrayidx3] | 0;
    $conv4 = $9 & 255;
    $cond = $conv4;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($7, $8) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 21 | ($cond | 0) == 9 | ($cond | 0) == 10) {
      label = 8;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 14) {
      label = 23;
      break;
    } else if (($cond | 0) == 22 | ($cond | 0) == 24 | ($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 64;
      break;
    } else {
      label = 78;
      break;
    }
   case 8:
    $10 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr4150 = $10 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr4150;
    $cmp4251 = ($add_ptr4150 | 0) == ($end | 0);
    if ($cmp4251) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $19 = $10;
      $add_ptr4152 = $add_ptr4150;
      label = 17;
      break;
    }
   case 9:
    $11 = HEAP32[$ptr_addr >> 2] | 0;
    $arrayidx7 = $11 + 1 | 0;
    $12 = HEAP8[$arrayidx7] | 0;
    $idxprom8 = $12 & 255;
    $arrayidx9 = $idxprom8 + 10824 | 0;
    $13 = HEAP8[$arrayidx9] | 0;
    $conv10 = $13 & 255;
    $shl = $conv10 << 3;
    $14 = HEAP8[$11] | 0;
    $conv12 = $14 & 255;
    $shr49 = $conv12 >>> 5;
    $add = $shr49 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $15 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $15;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 64;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $11;
    $retval_0 = 0;
    label = 79;
    break;
   case 11:
    $16 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $16;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp20 = ($sub_ptr_sub | 0) < 2;
    if ($cmp20) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $16;
    $retval_0 = 0;
    label = 79;
    break;
   case 13:
    $17 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast25 = $end;
    $sub_ptr_rhs_cast26 = $17;
    $sub_ptr_sub27 = $sub_ptr_lhs_cast25 - $sub_ptr_rhs_cast26 | 0;
    $cmp28 = ($sub_ptr_sub27 | 0) < 3;
    if ($cmp28) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $17;
    $retval_0 = 0;
    label = 79;
    break;
   case 15:
    $18 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast33 = $end;
    $sub_ptr_rhs_cast34 = $18;
    $sub_ptr_sub35 = $sub_ptr_lhs_cast33 - $sub_ptr_rhs_cast34 | 0;
    $cmp36 = ($sub_ptr_sub35 | 0) < 4;
    if ($cmp36) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $18;
    $retval_0 = 0;
    label = 79;
    break;
   case 17:
    $arrayidx46 = $19 + 3 | 0;
    $20 = HEAP8[$arrayidx46] | 0;
    $cmp48 = $20 << 24 >> 24 == 0;
    $21 = HEAP8[$add_ptr4152] | 0;
    if ($cmp48) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $idxprom51 = $21 & 255;
    $arrayidx53 = $1 + $idxprom51 | 0;
    $22 = HEAP8[$arrayidx53] | 0;
    $conv54 = $22 & 255;
    $cond60 = $conv54;
    label = 20;
    break;
   case 19:
    $call58 = _unicode_byte_type($20, $21) | 0;
    $cond60 = $call58;
    label = 20;
    break;
   case 20:
    if (($cond60 | 0) == 21 | ($cond60 | 0) == 10 | ($cond60 | 0) == 9) {
      label = 21;
      break;
    } else if (($cond60 | 0) == 14) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $23 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr41 = $23 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr41;
    $cmp42 = ($add_ptr41 | 0) == ($end | 0);
    if ($cmp42) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $19 = $23;
      $add_ptr4152 = $add_ptr41;
      label = 17;
      break;
    }
   case 22:
    $24 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $24;
    $retval_0 = 0;
    label = 79;
    break;
   case 23:
    $25 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr6855 = $25 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr6855;
    $cmp6956 = ($add_ptr6855 | 0) == ($end | 0);
    if ($cmp6956) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $26 = $25;
      $add_ptr6857 = $add_ptr6855;
      label = 24;
      break;
    }
   case 24:
    $arrayidx73 = $26 + 3 | 0;
    $27 = HEAP8[$arrayidx73] | 0;
    $cmp75 = $27 << 24 >> 24 == 0;
    $28 = HEAP8[$add_ptr6857] | 0;
    if ($cmp75) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $idxprom78 = $28 & 255;
    $arrayidx80 = $2 + $idxprom78 | 0;
    $29 = HEAP8[$arrayidx80] | 0;
    $conv81 = $29 & 255;
    $cond87 = $conv81;
    label = 27;
    break;
   case 26:
    $call85 = _unicode_byte_type($27, $28) | 0;
    $cond87 = $call85;
    label = 27;
    break;
   case 27:
    $cond87_off = $cond87 - 12 | 0;
    $30 = $cond87_off >>> 0 < 2;
    if ($30) {
      label = 31;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    if (($cond87 | 0) == 21 | ($cond87 | 0) == 10 | ($cond87 | 0) == 9) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $31 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr68 = $31 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr68;
    $cmp69 = ($add_ptr68 | 0) == ($end | 0);
    if ($cmp69) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $26 = $31;
      $add_ptr6857 = $add_ptr68;
      label = 24;
      break;
    }
   case 30:
    $32 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $32;
    $retval_0 = 0;
    label = 79;
    break;
   case 31:
    $33 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr98 = $33 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr98;
    $cmp10159 = ($add_ptr98 | 0) == ($end | 0);
    if ($cmp10159) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $34 = $add_ptr98;
      label = 32;
      break;
    }
   case 32:
    $arrayidx105 = $34 + 1 | 0;
    $35 = HEAP8[$arrayidx105] | 0;
    $cmp107 = $35 << 24 >> 24 == 0;
    $36 = HEAP8[$34] | 0;
    if ($cmp107) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $idxprom110 = $36 & 255;
    $arrayidx112 = $3 + $idxprom110 | 0;
    $37 = HEAP8[$arrayidx112] | 0;
    $conv113 = $37 & 255;
    $cond119 = $conv113;
    label = 35;
    break;
   case 34:
    $call117 = _unicode_byte_type($35, $36) | 0;
    $cond119 = $call117;
    label = 35;
    break;
   case 35:
    $cmp120 = ($cond119 | 0) == ($cond87 | 0);
    if ($cmp120) {
      label = 50;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    if (($cond119 | 0) == 5) {
      label = 37;
      break;
    } else if (($cond119 | 0) == 6) {
      label = 39;
      break;
    } else if (($cond119 | 0) == 7) {
      label = 41;
      break;
    } else if (($cond119 | 0) == 0 | ($cond119 | 0) == 1 | ($cond119 | 0) == 8) {
      label = 43;
      break;
    } else if (($cond119 | 0) == 3) {
      label = 44;
      break;
    } else if (($cond119 | 0) == 2) {
      label = 48;
      break;
    } else {
      label = 49;
      break;
    }
   case 37:
    $38 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_rhs_cast126 = $38;
    $sub_ptr_sub127 = $sub_ptr_lhs_cast125 - $sub_ptr_rhs_cast126 | 0;
    $cmp128 = ($sub_ptr_sub127 | 0) < 2;
    if ($cmp128) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $add_ptr132 = $38 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr132;
    label = 45;
    break;
   case 39:
    $39 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_rhs_cast135 = $39;
    $sub_ptr_sub136 = $sub_ptr_lhs_cast134 - $sub_ptr_rhs_cast135 | 0;
    $cmp137 = ($sub_ptr_sub136 | 0) < 3;
    if ($cmp137) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $add_ptr141 = $39 + 3 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr141;
    label = 45;
    break;
   case 41:
    $40 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_rhs_cast144 = $40;
    $sub_ptr_sub145 = $sub_ptr_lhs_cast143 - $sub_ptr_rhs_cast144 | 0;
    $cmp146 = ($sub_ptr_sub145 | 0) < 4;
    if ($cmp146) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $add_ptr150 = $40 + 4 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr150;
    label = 45;
    break;
   case 43:
    $41 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $41;
    $retval_0 = 0;
    label = 79;
    break;
   case 44:
    $42 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr153 = $42 + 2 | 0;
    $call154 = _little2_scanRef($enc, $add_ptr153, $end, $ptr_addr) | 0;
    $cmp155 = ($call154 | 0) < 1;
    if ($cmp155) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $43 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp101 = ($43 | 0) == ($end | 0);
    if ($cmp101) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $34 = $43;
      label = 32;
      break;
    }
   case 46:
    $cmp158 = ($call154 | 0) == 0;
    if ($cmp158) {
      label = 47;
      break;
    } else {
      $retval_0 = $call154;
      label = 79;
      break;
    }
   case 47:
    $44 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $44;
    $retval_0 = 0;
    label = 79;
    break;
   case 48:
    $45 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $45;
    $retval_0 = 0;
    label = 79;
    break;
   case 49:
    $46 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr165 = $46 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr165;
    label = 45;
    break;
   case 50:
    $47 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr168 = $47 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr168;
    $cmp169 = ($add_ptr168 | 0) == ($end | 0);
    if ($cmp169) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $arrayidx173 = $47 + 3 | 0;
    $48 = HEAP8[$arrayidx173] | 0;
    $cmp175 = $48 << 24 >> 24 == 0;
    $49 = HEAP8[$add_ptr168] | 0;
    if ($cmp175) {
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 52:
    $idxprom178 = $49 & 255;
    $arrayidx180 = $4 + $idxprom178 | 0;
    $50 = HEAP8[$arrayidx180] | 0;
    $conv181 = $50 & 255;
    $cond187 = $conv181;
    label = 54;
    break;
   case 53:
    $call185 = _unicode_byte_type($48, $49) | 0;
    $cond187 = $call185;
    label = 54;
    break;
   case 54:
    if (($cond187 | 0) == 21 | ($cond187 | 0) == 9 | ($cond187 | 0) == 10) {
      label = 55;
      break;
    } else if (($cond187 | 0) == 11) {
      label = 71;
      break;
    } else if (($cond187 | 0) == 17) {
      label = 72;
      break;
    } else {
      label = 56;
      break;
    }
   case 55:
    $51 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr19461 = $51 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr19461;
    $cmp19562 = ($add_ptr19461 | 0) == ($end | 0);
    if ($cmp19562) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $53 = $51;
      $add_ptr19463 = $add_ptr19461;
      label = 57;
      break;
    }
   case 56:
    $52 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $52;
    $retval_0 = 0;
    label = 79;
    break;
   case 57:
    $arrayidx199 = $53 + 3 | 0;
    $54 = HEAP8[$arrayidx199] | 0;
    $cmp201 = $54 << 24 >> 24 == 0;
    $55 = HEAP8[$add_ptr19463] | 0;
    if ($cmp201) {
      label = 58;
      break;
    } else {
      label = 59;
      break;
    }
   case 58:
    $idxprom204 = $55 & 255;
    $arrayidx206 = $5 + $idxprom204 | 0;
    $56 = HEAP8[$arrayidx206] | 0;
    $conv207 = $56 & 255;
    $cond213 = $conv207;
    label = 60;
    break;
   case 59:
    $call211 = _unicode_byte_type($54, $55) | 0;
    $cond213 = $call211;
    label = 60;
    break;
   case 60:
    if (($cond213 | 0) == 21 | ($cond213 | 0) == 9 | ($cond213 | 0) == 10) {
      label = 61;
      break;
    } else if (($cond213 | 0) == 29) {
      label = 62;
      break;
    } else if (($cond213 | 0) == 22 | ($cond213 | 0) == 24) {
      label = 64;
      break;
    } else if (($cond213 | 0) == 5) {
      label = 65;
      break;
    } else if (($cond213 | 0) == 6) {
      label = 67;
      break;
    } else if (($cond213 | 0) == 7) {
      label = 69;
      break;
    } else if (($cond213 | 0) == 11) {
      label = 71;
      break;
    } else if (($cond213 | 0) == 17) {
      label = 72;
      break;
    } else {
      label = 77;
      break;
    }
   case 61:
    $57 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr194 = $57 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr194;
    $cmp195 = ($add_ptr194 | 0) == ($end | 0);
    if ($cmp195) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $53 = $57;
      $add_ptr19463 = $add_ptr194;
      label = 57;
      break;
    }
   case 62:
    $58 = HEAP32[$ptr_addr >> 2] | 0;
    $arrayidx215 = $58 + 1 | 0;
    $59 = HEAP8[$arrayidx215] | 0;
    $idxprom216 = $59 & 255;
    $arrayidx217 = $idxprom216 + 9272 | 0;
    $60 = HEAP8[$arrayidx217] | 0;
    $conv218 = $60 & 255;
    $shl219 = $conv218 << 3;
    $61 = HEAP8[$58] | 0;
    $conv221 = $61 & 255;
    $shr22248 = $conv221 >>> 5;
    $add223 = $shr22248 | $shl219;
    $arrayidx224 = 9544 + ($add223 << 2) | 0;
    $62 = HEAP32[$arrayidx224 >> 2] | 0;
    $and227 = $conv221 & 31;
    $shl228 = 1 << $and227;
    $and229 = $shl228 & $62;
    $tobool230 = ($and229 | 0) == 0;
    if ($tobool230) {
      label = 63;
      break;
    } else {
      label = 64;
      break;
    }
   case 63:
    HEAP32[$nextTokPtr >> 2] = $58;
    $retval_0 = 0;
    label = 79;
    break;
   case 64:
    $_pn = HEAP32[$ptr_addr >> 2] | 0;
    $storemerge = $_pn + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $storemerge;
    $cmp = ($storemerge | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $6 = $storemerge;
      label = 4;
      break;
    }
   case 65:
    $63 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast236 = $end;
    $sub_ptr_rhs_cast237 = $63;
    $sub_ptr_sub238 = $sub_ptr_lhs_cast236 - $sub_ptr_rhs_cast237 | 0;
    $cmp239 = ($sub_ptr_sub238 | 0) < 2;
    if ($cmp239) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    HEAP32[$nextTokPtr >> 2] = $63;
    $retval_0 = 0;
    label = 79;
    break;
   case 67:
    $64 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast244 = $end;
    $sub_ptr_rhs_cast245 = $64;
    $sub_ptr_sub246 = $sub_ptr_lhs_cast244 - $sub_ptr_rhs_cast245 | 0;
    $cmp247 = ($sub_ptr_sub246 | 0) < 3;
    if ($cmp247) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    HEAP32[$nextTokPtr >> 2] = $64;
    $retval_0 = 0;
    label = 79;
    break;
   case 69:
    $65 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast252 = $end;
    $sub_ptr_rhs_cast253 = $65;
    $sub_ptr_sub254 = $sub_ptr_lhs_cast252 - $sub_ptr_rhs_cast253 | 0;
    $cmp255 = ($sub_ptr_sub254 | 0) < 4;
    if ($cmp255) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    HEAP32[$nextTokPtr >> 2] = $65;
    $retval_0 = 0;
    label = 79;
    break;
   case 71:
    $66 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr261 = $66 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr261;
    $retval_0 = 1;
    label = 79;
    break;
   case 72:
    $67 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr263 = $67 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr263;
    $cmp264 = ($add_ptr263 | 0) == ($end | 0);
    if ($cmp264) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $arrayidx268 = $67 + 3 | 0;
    $68 = HEAP8[$arrayidx268] | 0;
    $cmp270 = $68 << 24 >> 24 == 0;
    if ($cmp270) {
      label = 74;
      break;
    } else {
      label = 75;
      break;
    }
   case 74:
    $69 = HEAP8[$add_ptr263] | 0;
    $cmp274 = $69 << 24 >> 24 == 62;
    if ($cmp274) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $70 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $70;
    $retval_0 = 0;
    label = 79;
    break;
   case 76:
    $add_ptr278 = $67 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr278;
    $retval_0 = 3;
    label = 79;
    break;
   case 77:
    $71 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $71;
    $retval_0 = 0;
    label = 79;
    break;
   case 78:
    $72 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $72;
    $retval_0 = 0;
    label = 79;
    break;
   case 79:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanLit($open, $enc, $ptr, $end, $nextTokPtr) {
  $open = $open | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp27 = 0, $type = 0, $0 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_lhs_cast10 = 0, $sub_ptr_lhs_cast19 = 0, $ptr_addr_028 = 0, $arrayidx = 0, $1 = 0, $cmp1 = 0, $2 = 0, $idxprom = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp7 = 0, $add_ptr = 0, $sub_ptr_rhs_cast11 = 0, $sub_ptr_sub12 = 0, $cmp13 = 0, $add_ptr17 = 0, $sub_ptr_rhs_cast20 = 0, $sub_ptr_sub21 = 0, $cmp22 = 0, $add_ptr26 = 0, $add_ptr29 = 0, $cmp30 = 0, $cmp34 = 0, $arrayidx38 = 0, $4 = 0, $cmp40 = 0, $5 = 0, $idxprom43 = 0, $type44 = 0, $6 = 0, $arrayidx45 = 0, $7 = 0, $conv46 = 0, $call50 = 0, $cond52 = 0, $add_ptr55 = 0, $ptr_addr_0_be = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp27 = ($ptr | 0) == ($end | 0);
    if ($cmp27) {
      $retval_0 = -1;
      label = 24;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_lhs_cast10 = $end;
    $sub_ptr_lhs_cast19 = $end;
    $ptr_addr_028 = $ptr;
    label = 4;
    break;
   case 4:
    $arrayidx = $ptr_addr_028 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $cmp1 = $1 << 24 >> 24 == 0;
    $2 = HEAP8[$ptr_addr_028] | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $2 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 5) {
      label = 8;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 12;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 14;
      break;
    } else if (($cond | 0) == 12 | ($cond | 0) == 13) {
      label = 15;
      break;
    } else {
      label = 22;
      break;
    }
   case 8:
    $sub_ptr_rhs_cast = $ptr_addr_028;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp7 = ($sub_ptr_sub | 0) < 2;
    if ($cmp7) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add_ptr = $ptr_addr_028 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 23;
    break;
   case 10:
    $sub_ptr_rhs_cast11 = $ptr_addr_028;
    $sub_ptr_sub12 = $sub_ptr_lhs_cast10 - $sub_ptr_rhs_cast11 | 0;
    $cmp13 = ($sub_ptr_sub12 | 0) < 3;
    if ($cmp13) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $add_ptr17 = $ptr_addr_028 + 3 | 0;
    $ptr_addr_0_be = $add_ptr17;
    label = 23;
    break;
   case 12:
    $sub_ptr_rhs_cast20 = $ptr_addr_028;
    $sub_ptr_sub21 = $sub_ptr_lhs_cast19 - $sub_ptr_rhs_cast20 | 0;
    $cmp22 = ($sub_ptr_sub21 | 0) < 4;
    if ($cmp22) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $add_ptr26 = $ptr_addr_028 + 4 | 0;
    $ptr_addr_0_be = $add_ptr26;
    label = 23;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_028;
    $retval_0 = 0;
    label = 24;
    break;
   case 15:
    $add_ptr29 = $ptr_addr_028 + 2 | 0;
    $cmp30 = ($cond | 0) == ($open | 0);
    if ($cmp30) {
      label = 16;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr29;
      label = 23;
      break;
    }
   case 16:
    $cmp34 = ($add_ptr29 | 0) == ($end | 0);
    if ($cmp34) {
      $retval_0 = -27;
      label = 24;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    HEAP32[$nextTokPtr >> 2] = $add_ptr29;
    $arrayidx38 = $ptr_addr_028 + 3 | 0;
    $4 = HEAP8[$arrayidx38] | 0;
    $cmp40 = $4 << 24 >> 24 == 0;
    $5 = HEAP8[$add_ptr29] | 0;
    if ($cmp40) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $idxprom43 = $5 & 255;
    $type44 = $enc + 72 | 0;
    $6 = $type44;
    $arrayidx45 = $6 + $idxprom43 | 0;
    $7 = HEAP8[$arrayidx45] | 0;
    $conv46 = $7 & 255;
    $cond52 = $conv46;
    label = 20;
    break;
   case 19:
    $call50 = _unicode_byte_type($4, $5) | 0;
    $cond52 = $call50;
    label = 20;
    break;
   case 20:
    if (($cond52 | 0) == 21 | ($cond52 | 0) == 9 | ($cond52 | 0) == 10 | ($cond52 | 0) == 11 | ($cond52 | 0) == 30 | ($cond52 | 0) == 20) {
      $retval_0 = 27;
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $retval_0 = 0;
    label = 24;
    break;
   case 22:
    $add_ptr55 = $ptr_addr_028 + 2 | 0;
    $ptr_addr_0_be = $add_ptr55;
    label = 23;
    break;
   case 23:
    $cmp = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 24;
      break;
    } else {
      $ptr_addr_028 = $ptr_addr_0_be;
      label = 4;
      break;
    }
   case 24:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanDecl($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_038 = 0, $cmp1239 = 0, $type20 = 0, $4 = 0, $add_ptr = 0, $call7 = 0, $add_ptr9 = 0, $ptr_addr_041 = 0, $ptr_pn40 = 0, $arrayidx14 = 0, $5 = 0, $cmp16 = 0, $6 = 0, $idxprom19 = 0, $arrayidx21 = 0, $7 = 0, $conv22 = 0, $call26 = 0, $cond28 = 0, $ptr_addr_0 = 0, $cmp12 = 0, $add_ptr30 = 0, $cmp31 = 0, $arrayidx36 = 0, $8 = 0, $cmp38 = 0, $9 = 0, $idxprom42 = 0, $type43 = 0, $10 = 0, $arrayidx44 = 0, $11 = 0, $conv45 = 0, $call51 = 0, $cond53 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 27) {
      label = 9;
      break;
    } else if (($cond | 0) == 20) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $ptr_addr_038 = $ptr + 2 | 0;
    $cmp1239 = ($ptr_addr_038 | 0) == ($end | 0);
    if ($cmp1239) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type20 = $enc + 72 | 0;
    $4 = $type20;
    $ptr_pn40 = $ptr;
    $ptr_addr_041 = $ptr_addr_038;
    label = 12;
    break;
   case 9:
    $add_ptr = $ptr + 2 | 0;
    $call7 = _little2_scanComment($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call7;
    label = 25;
    break;
   case 10:
    $add_ptr9 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr9;
    $retval_0 = 33;
    label = 25;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 25;
    break;
   case 12:
    $arrayidx14 = $ptr_pn40 + 3 | 0;
    $5 = HEAP8[$arrayidx14] | 0;
    $cmp16 = $5 << 24 >> 24 == 0;
    $6 = HEAP8[$ptr_addr_041] | 0;
    if ($cmp16) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $idxprom19 = $6 & 255;
    $arrayidx21 = $4 + $idxprom19 | 0;
    $7 = HEAP8[$arrayidx21] | 0;
    $conv22 = $7 & 255;
    $cond28 = $conv22;
    label = 15;
    break;
   case 14:
    $call26 = _unicode_byte_type($5, $6) | 0;
    $cond28 = $call26;
    label = 15;
    break;
   case 15:
    if (($cond28 | 0) == 22 | ($cond28 | 0) == 24) {
      label = 16;
      break;
    } else if (($cond28 | 0) == 30) {
      label = 17;
      break;
    } else if (($cond28 | 0) == 21 | ($cond28 | 0) == 9 | ($cond28 | 0) == 10) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 16:
    $ptr_addr_0 = $ptr_addr_041 + 2 | 0;
    $cmp12 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp12) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      $ptr_pn40 = $ptr_addr_041;
      $ptr_addr_041 = $ptr_addr_0;
      label = 12;
      break;
    }
   case 17:
    $add_ptr30 = $ptr_pn40 + 4 | 0;
    $cmp31 = ($add_ptr30 | 0) == ($end | 0);
    if ($cmp31) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $arrayidx36 = $ptr_pn40 + 5 | 0;
    $8 = HEAP8[$arrayidx36] | 0;
    $cmp38 = $8 << 24 >> 24 == 0;
    $9 = HEAP8[$add_ptr30] | 0;
    if ($cmp38) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom42 = $9 & 255;
    $type43 = $enc + 72 | 0;
    $10 = $type43;
    $arrayidx44 = $10 + $idxprom42 | 0;
    $11 = HEAP8[$arrayidx44] | 0;
    $conv45 = $11 & 255;
    $cond53 = $conv45;
    label = 21;
    break;
   case 20:
    $call51 = _unicode_byte_type($8, $9) | 0;
    $cond53 = $call51;
    label = 21;
    break;
   case 21:
    if (($cond53 | 0) == 21 | ($cond53 | 0) == 9 | ($cond53 | 0) == 10 | ($cond53 | 0) == 30) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_041;
    $retval_0 = 0;
    label = 25;
    break;
   case 23:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_041;
    $retval_0 = 16;
    label = 25;
    break;
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_041;
    $retval_0 = 0;
    label = 25;
    break;
   case 25:
    return $retval_0 | 0;
  }
  return 0;
}
function _little2_scanPoundName($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $arrayidx = 0, $0 = 0, $cmp1 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $ptr_addr_059 = 0, $cmp4260 = 0, $type50 = 0, $4 = 0, $5 = 0, $idxprom8 = 0, $arrayidx9 = 0, $6 = 0, $conv10 = 0, $shl = 0, $7 = 0, $conv12 = 0, $shr52 = 0, $add = 0, $arrayidx13 = 0, $8 = 0, $and = 0, $shl16 = 0, $and17 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp22 = 0, $sub_ptr_lhs_cast27 = 0, $sub_ptr_rhs_cast28 = 0, $sub_ptr_sub29 = 0, $cmp30 = 0, $sub_ptr_lhs_cast35 = 0, $sub_ptr_rhs_cast36 = 0, $sub_ptr_sub37 = 0, $cmp38 = 0, $ptr_addr_062 = 0, $ptr_pn61 = 0, $arrayidx44 = 0, $9 = 0, $cmp46 = 0, $10 = 0, $idxprom49 = 0, $arrayidx51 = 0, $11 = 0, $conv52 = 0, $call56 = 0, $cond58 = 0, $12 = 0, $idxprom61 = 0, $arrayidx62 = 0, $13 = 0, $conv63 = 0, $shl64 = 0, $14 = 0, $conv66 = 0, $shr6751 = 0, $add68 = 0, $arrayidx69 = 0, $15 = 0, $and72 = 0, $shl73 = 0, $and74 = 0, $tobool75 = 0, $ptr_addr_0 = 0, $cmp42 = 0, $sub_ptr_lhs_cast81 = 0, $sub_ptr_rhs_cast82 = 0, $sub_ptr_sub83 = 0, $cmp84 = 0, $sub_ptr_lhs_cast89 = 0, $sub_ptr_rhs_cast90 = 0, $sub_ptr_sub91 = 0, $cmp92 = 0, $sub_ptr_lhs_cast97 = 0, $sub_ptr_rhs_cast98 = 0, $sub_ptr_sub99 = 0, $cmp100 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 33;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $ptr + 1 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $1 = HEAP8[$ptr] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx3 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 7:
    $ptr_addr_059 = $ptr + 2 | 0;
    $cmp4260 = ($ptr_addr_059 | 0) == ($end | 0);
    if ($cmp4260) {
      $retval_0 = -20;
      label = 33;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type50 = $enc + 72 | 0;
    $4 = $type50;
    $ptr_pn61 = $ptr;
    $ptr_addr_062 = $ptr_addr_059;
    label = 18;
    break;
   case 9:
    $5 = HEAP8[$arrayidx] | 0;
    $idxprom8 = $5 & 255;
    $arrayidx9 = $idxprom8 + 9272 | 0;
    $6 = HEAP8[$arrayidx9] | 0;
    $conv10 = $6 & 255;
    $shl = $conv10 << 3;
    $7 = HEAP8[$ptr] | 0;
    $conv12 = $7 & 255;
    $shr52 = $conv12 >>> 5;
    $add = $shr52 | $shl;
    $arrayidx13 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx13 >> 2] | 0;
    $and = $conv12 & 31;
    $shl16 = 1 << $and;
    $and17 = $shl16 & $8;
    $tobool = ($and17 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp22 = ($sub_ptr_sub | 0) < 2;
    if ($cmp22) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 13:
    $sub_ptr_lhs_cast27 = $end;
    $sub_ptr_rhs_cast28 = $ptr;
    $sub_ptr_sub29 = $sub_ptr_lhs_cast27 - $sub_ptr_rhs_cast28 | 0;
    $cmp30 = ($sub_ptr_sub29 | 0) < 3;
    if ($cmp30) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 15:
    $sub_ptr_lhs_cast35 = $end;
    $sub_ptr_rhs_cast36 = $ptr;
    $sub_ptr_sub37 = $sub_ptr_lhs_cast35 - $sub_ptr_rhs_cast36 | 0;
    $cmp38 = ($sub_ptr_sub37 | 0) < 4;
    if ($cmp38) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 18:
    $arrayidx44 = $ptr_pn61 + 3 | 0;
    $9 = HEAP8[$arrayidx44] | 0;
    $cmp46 = $9 << 24 >> 24 == 0;
    $10 = HEAP8[$ptr_addr_062] | 0;
    if ($cmp46) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom49 = $10 & 255;
    $arrayidx51 = $4 + $idxprom49 | 0;
    $11 = HEAP8[$arrayidx51] | 0;
    $conv52 = $11 & 255;
    $cond58 = $conv52;
    label = 21;
    break;
   case 20:
    $call56 = _unicode_byte_type($9, $10) | 0;
    $cond58 = $call56;
    label = 21;
    break;
   case 21:
    if (($cond58 | 0) == 29) {
      label = 22;
      break;
    } else if (($cond58 | 0) == 22 | ($cond58 | 0) == 24 | ($cond58 | 0) == 25 | ($cond58 | 0) == 26 | ($cond58 | 0) == 27) {
      label = 23;
      break;
    } else if (($cond58 | 0) == 5) {
      label = 25;
      break;
    } else if (($cond58 | 0) == 6) {
      label = 27;
      break;
    } else if (($cond58 | 0) == 7) {
      label = 29;
      break;
    } else if (($cond58 | 0) == 9 | ($cond58 | 0) == 10 | ($cond58 | 0) == 21 | ($cond58 | 0) == 32 | ($cond58 | 0) == 11 | ($cond58 | 0) == 30 | ($cond58 | 0) == 36) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 22:
    $12 = HEAP8[$arrayidx44] | 0;
    $idxprom61 = $12 & 255;
    $arrayidx62 = $idxprom61 + 10824 | 0;
    $13 = HEAP8[$arrayidx62] | 0;
    $conv63 = $13 & 255;
    $shl64 = $conv63 << 3;
    $14 = HEAP8[$ptr_addr_062] | 0;
    $conv66 = $14 & 255;
    $shr6751 = $conv66 >>> 5;
    $add68 = $shr6751 | $shl64;
    $arrayidx69 = 9544 + ($add68 << 2) | 0;
    $15 = HEAP32[$arrayidx69 >> 2] | 0;
    $and72 = $conv66 & 31;
    $shl73 = 1 << $and72;
    $and74 = $shl73 & $15;
    $tobool75 = ($and74 | 0) == 0;
    if ($tobool75) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $ptr_addr_0 = $ptr_addr_062 + 2 | 0;
    $cmp42 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp42) {
      $retval_0 = -20;
      label = 33;
      break;
    } else {
      $ptr_pn61 = $ptr_addr_062;
      $ptr_addr_062 = $ptr_addr_0;
      label = 18;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 25:
    $sub_ptr_lhs_cast81 = $end;
    $sub_ptr_rhs_cast82 = $ptr_addr_062;
    $sub_ptr_sub83 = $sub_ptr_lhs_cast81 - $sub_ptr_rhs_cast82 | 0;
    $cmp84 = ($sub_ptr_sub83 | 0) < 2;
    if ($cmp84) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 27:
    $sub_ptr_lhs_cast89 = $end;
    $sub_ptr_rhs_cast90 = $ptr_addr_062;
    $sub_ptr_sub91 = $sub_ptr_lhs_cast89 - $sub_ptr_rhs_cast90 | 0;
    $cmp92 = ($sub_ptr_sub91 | 0) < 3;
    if ($cmp92) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 29:
    $sub_ptr_lhs_cast97 = $end;
    $sub_ptr_rhs_cast98 = $ptr_addr_062;
    $sub_ptr_sub99 = $sub_ptr_lhs_cast97 - $sub_ptr_rhs_cast98 | 0;
    $cmp100 = ($sub_ptr_sub99 | 0) < 4;
    if ($cmp100) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 20;
    label = 33;
    break;
   case 32:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 33:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_prologTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $and = 0, $tobool = 0, $and2 = 0, $cmp3 = 0, $add_ptr = 0, $end_addr_0 = 0, $0 = 0, $cmp7 = 0, $arrayidx9 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx10 = 0, $3 = 0, $conv11 = 0, $call = 0, $cond = 0, $add_ptr56167 = 0, $cmp57168 = 0, $type68 = 0, $4 = 0, $add_ptr14 = 0, $call15 = 0, $add_ptr17 = 0, $call18 = 0, $add_ptr20 = 0, $cmp21 = 0, $5 = 0, $cmp27 = 0, $arrayidx30 = 0, $6 = 0, $idxprom31 = 0, $type32 = 0, $7 = 0, $arrayidx33 = 0, $8 = 0, $conv34 = 0, $call38 = 0, $cond40 = 0, $add_ptr42 = 0, $call43 = 0, $add_ptr45 = 0, $call46 = 0, $add_ptr50 = 0, $cmp51 = 0, $add_ptr56170 = 0, $ptr_addr_0169 = 0, $9 = 0, $cmp63 = 0, $arrayidx66 = 0, $10 = 0, $idxprom67 = 0, $arrayidx69 = 0, $11 = 0, $conv70 = 0, $call74 = 0, $cond76 = 0, $add_ptr56 = 0, $cmp57 = 0, $add_ptr79 = 0, $cmp80 = 0, $add_ptr56_lcssa = 0, $add_ptr86 = 0, $call87 = 0, $add_ptr89 = 0, $add_ptr91 = 0, $add_ptr93 = 0, $cmp94 = 0, $12 = 0, $cmp100 = 0, $arrayidx102 = 0, $13 = 0, $cmp104 = 0, $add_ptr107 = 0, $cmp108 = 0, $14 = 0, $cmp115 = 0, $arrayidx119 = 0, $15 = 0, $cmp121 = 0, $add_ptr124 = 0, $add_ptr128 = 0, $add_ptr130 = 0, $cmp131 = 0, $16 = 0, $cmp137 = 0, $arrayidx140 = 0, $17 = 0, $idxprom141 = 0, $type142 = 0, $18 = 0, $arrayidx143 = 0, $19 = 0, $conv144 = 0, $call148 = 0, $cond150 = 0, $add_ptr152 = 0, $add_ptr154 = 0, $add_ptr156 = 0, $add_ptr160 = 0, $add_ptr162 = 0, $add_ptr164 = 0, $call165 = 0, $sub_ptr_lhs_cast167 = 0, $sub_ptr_sub169 = 0, $cmp170 = 0, $sub_ptr_lhs_cast175 = 0, $sub_ptr_sub177 = 0, $cmp178 = 0, $sub_ptr_lhs_cast183 = 0, $sub_ptr_sub185 = 0, $cmp186 = 0, $20 = 0, $idxprom196 = 0, $arrayidx197 = 0, $21 = 0, $conv198 = 0, $shl = 0, $22 = 0, $conv200 = 0, $shr164 = 0, $add = 0, $arrayidx201 = 0, $23 = 0, $and204 = 0, $shl205 = 0, $and206 = 0, $tobool207 = 0, $arrayidx213 = 0, $24 = 0, $conv214 = 0, $shl215 = 0, $add219 = 0, $arrayidx220 = 0, $25 = 0, $and225 = 0, $tobool226 = 0, $tok_0_ph = 0, $ptr_addr_1189 = 0, $cmp232190 = 0, $type241 = 0, $26 = 0, $ptr_addr_1192 = 0, $ptr_pn191 = 0, $27 = 0, $cmp236 = 0, $arrayidx239 = 0, $28 = 0, $idxprom240 = 0, $arrayidx242 = 0, $29 = 0, $conv243 = 0, $call247 = 0, $cond249 = 0, $30 = 0, $idxprom252 = 0, $arrayidx253 = 0, $31 = 0, $conv254 = 0, $shl255 = 0, $32 = 0, $conv257 = 0, $shr258165 = 0, $add259 = 0, $arrayidx260 = 0, $33 = 0, $and263 = 0, $shl264 = 0, $and265 = 0, $tobool266 = 0, $ptr_addr_1 = 0, $cmp232 = 0, $sub_ptr_lhs_cast272 = 0, $sub_ptr_rhs_cast273 = 0, $sub_ptr_sub274 = 0, $cmp275 = 0, $sub_ptr_lhs_cast280 = 0, $sub_ptr_rhs_cast281 = 0, $sub_ptr_sub282 = 0, $cmp283 = 0, $sub_ptr_lhs_cast288 = 0, $sub_ptr_rhs_cast289 = 0, $sub_ptr_sub290 = 0, $cmp291 = 0, $cmp297 = 0, $add_ptr301 = 0, $cmp303 = 0, $add_ptr307 = 0, $cmp309 = 0, $add_ptr313 = 0, $sub = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 95;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $and = $sub_ptr_sub & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $end_addr_0 = $end;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and2 = $sub_ptr_sub & -2;
    $cmp3 = ($and2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = -1;
      label = 95;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $ptr + $and2 | 0;
    $end_addr_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    $0 = HEAP8[$ptr] | 0;
    $cmp7 = $0 << 24 >> 24 == 0;
    $arrayidx9 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx9] | 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx10 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx10] | 0;
    $conv11 = $3 & 255;
    $cond = $conv11;
    label = 9;
    break;
   case 8:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 9;
    break;
   case 9:
    if (($cond | 0) == 21 | ($cond | 0) == 10) {
      label = 10;
      break;
    } else if (($cond | 0) == 12) {
      label = 12;
      break;
    } else if (($cond | 0) == 13) {
      label = 13;
      break;
    } else if (($cond | 0) == 2) {
      label = 14;
      break;
    } else if (($cond | 0) == 9) {
      label = 23;
      break;
    } else if (($cond | 0) == 30) {
      label = 33;
      break;
    } else if (($cond | 0) == 35) {
      label = 34;
      break;
    } else if (($cond | 0) == 20) {
      label = 35;
      break;
    } else if (($cond | 0) == 4) {
      label = 36;
      break;
    } else if (($cond | 0) == 31) {
      label = 44;
      break;
    } else if (($cond | 0) == 32) {
      label = 45;
      break;
    } else if (($cond | 0) == 36) {
      label = 55;
      break;
    } else if (($cond | 0) == 11) {
      label = 56;
      break;
    } else if (($cond | 0) == 19) {
      label = 57;
      break;
    } else if (($cond | 0) == 5) {
      label = 58;
      break;
    } else if (($cond | 0) == 6) {
      label = 60;
      break;
    } else if (($cond | 0) == 7) {
      label = 62;
      break;
    } else if (($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 64;
      break;
    } else if (($cond | 0) == 29) {
      label = 65;
      break;
    } else if (($cond | 0) == 22 | ($cond | 0) == 24) {
      $tok_0_ph = 18;
      label = 67;
      break;
    } else {
      label = 69;
      break;
    }
   case 10:
    $add_ptr56167 = $ptr + 2 | 0;
    $cmp57168 = ($add_ptr56167 | 0) == ($end_addr_0 | 0);
    if ($cmp57168) {
      $add_ptr56_lcssa = $add_ptr56167;
      label = 32;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $type68 = $enc + 72 | 0;
    $4 = $type68;
    $ptr_addr_0169 = $ptr;
    $add_ptr56170 = $add_ptr56167;
    label = 25;
    break;
   case 12:
    $add_ptr14 = $ptr + 2 | 0;
    $call15 = _big2_scanLit(12, $enc, $add_ptr14, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call15;
    label = 95;
    break;
   case 13:
    $add_ptr17 = $ptr + 2 | 0;
    $call18 = _big2_scanLit(13, $enc, $add_ptr17, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call18;
    label = 95;
    break;
   case 14:
    $add_ptr20 = $ptr + 2 | 0;
    $cmp21 = ($add_ptr20 | 0) == ($end_addr_0 | 0);
    if ($cmp21) {
      $retval_0 = -1;
      label = 95;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $5 = HEAP8[$add_ptr20] | 0;
    $cmp27 = $5 << 24 >> 24 == 0;
    $arrayidx30 = $ptr + 3 | 0;
    $6 = HEAP8[$arrayidx30] | 0;
    if ($cmp27) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $idxprom31 = $6 & 255;
    $type32 = $enc + 72 | 0;
    $7 = $type32;
    $arrayidx33 = $7 + $idxprom31 | 0;
    $8 = HEAP8[$arrayidx33] | 0;
    $conv34 = $8 & 255;
    $cond40 = $conv34;
    label = 18;
    break;
   case 17:
    $call38 = _unicode_byte_type($5, $6) | 0;
    $cond40 = $call38;
    label = 18;
    break;
   case 18:
    if (($cond40 | 0) == 16) {
      label = 19;
      break;
    } else if (($cond40 | 0) == 15) {
      label = 20;
      break;
    } else if (($cond40 | 0) == 22 | ($cond40 | 0) == 24 | ($cond40 | 0) == 29 | ($cond40 | 0) == 5 | ($cond40 | 0) == 6 | ($cond40 | 0) == 7) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 19:
    $add_ptr42 = $ptr + 4 | 0;
    $call43 = _big2_scanDecl($enc, $add_ptr42, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call43;
    label = 95;
    break;
   case 20:
    $add_ptr45 = $ptr + 4 | 0;
    $call46 = _big2_scanPi($enc, $add_ptr45, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call46;
    label = 95;
    break;
   case 21:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 29;
    label = 95;
    break;
   case 22:
    HEAP32[$nextTokPtr >> 2] = $add_ptr20;
    $retval_0 = 0;
    label = 95;
    break;
   case 23:
    $add_ptr50 = $ptr + 2 | 0;
    $cmp51 = ($add_ptr50 | 0) == ($end_addr_0 | 0);
    if ($cmp51) {
      label = 24;
      break;
    } else {
      label = 10;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $end_addr_0;
    $retval_0 = -15;
    label = 95;
    break;
   case 25:
    $9 = HEAP8[$add_ptr56170] | 0;
    $cmp63 = $9 << 24 >> 24 == 0;
    $arrayidx66 = $ptr_addr_0169 + 3 | 0;
    $10 = HEAP8[$arrayidx66] | 0;
    if ($cmp63) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $idxprom67 = $10 & 255;
    $arrayidx69 = $4 + $idxprom67 | 0;
    $11 = HEAP8[$arrayidx69] | 0;
    $conv70 = $11 & 255;
    $cond76 = $conv70;
    label = 28;
    break;
   case 27:
    $call74 = _unicode_byte_type($9, $10) | 0;
    $cond76 = $call74;
    label = 28;
    break;
   case 28:
    if (($cond76 | 0) == 21 | ($cond76 | 0) == 10) {
      label = 29;
      break;
    } else if (($cond76 | 0) == 9) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 29:
    $add_ptr56 = $add_ptr56170 + 2 | 0;
    $cmp57 = ($add_ptr56 | 0) == ($end_addr_0 | 0);
    if ($cmp57) {
      $add_ptr56_lcssa = $add_ptr56;
      label = 32;
      break;
    } else {
      $ptr_addr_0169 = $add_ptr56170;
      $add_ptr56170 = $add_ptr56;
      label = 25;
      break;
    }
   case 30:
    $add_ptr79 = $ptr_addr_0169 + 4 | 0;
    $cmp80 = ($add_ptr79 | 0) == ($end_addr_0 | 0);
    if ($cmp80) {
      label = 31;
      break;
    } else {
      label = 29;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $add_ptr56170;
    $retval_0 = 15;
    label = 95;
    break;
   case 32:
    HEAP32[$nextTokPtr >> 2] = $add_ptr56_lcssa;
    $retval_0 = 15;
    label = 95;
    break;
   case 33:
    $add_ptr86 = $ptr + 2 | 0;
    $call87 = _big2_scanPercent($enc, $add_ptr86, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call87;
    label = 95;
    break;
   case 34:
    $add_ptr89 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr89;
    $retval_0 = 38;
    label = 95;
    break;
   case 35:
    $add_ptr91 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr91;
    $retval_0 = 25;
    label = 95;
    break;
   case 36:
    $add_ptr93 = $ptr + 2 | 0;
    $cmp94 = ($add_ptr93 | 0) == ($end_addr_0 | 0);
    if ($cmp94) {
      $retval_0 = -26;
      label = 95;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $12 = HEAP8[$add_ptr93] | 0;
    $cmp100 = $12 << 24 >> 24 == 0;
    if ($cmp100) {
      label = 38;
      break;
    } else {
      label = 43;
      break;
    }
   case 38:
    $arrayidx102 = $ptr + 3 | 0;
    $13 = HEAP8[$arrayidx102] | 0;
    $cmp104 = $13 << 24 >> 24 == 93;
    if ($cmp104) {
      label = 39;
      break;
    } else {
      label = 43;
      break;
    }
   case 39:
    $add_ptr107 = $ptr + 4 | 0;
    $cmp108 = ($add_ptr107 | 0) == ($end_addr_0 | 0);
    if ($cmp108) {
      $retval_0 = -1;
      label = 95;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $14 = HEAP8[$add_ptr107] | 0;
    $cmp115 = $14 << 24 >> 24 == 0;
    if ($cmp115) {
      label = 41;
      break;
    } else {
      label = 43;
      break;
    }
   case 41:
    $arrayidx119 = $ptr + 5 | 0;
    $15 = HEAP8[$arrayidx119] | 0;
    $cmp121 = $15 << 24 >> 24 == 62;
    if ($cmp121) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    $add_ptr124 = $ptr + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr124;
    $retval_0 = 34;
    label = 95;
    break;
   case 43:
    HEAP32[$nextTokPtr >> 2] = $add_ptr93;
    $retval_0 = 26;
    label = 95;
    break;
   case 44:
    $add_ptr128 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr128;
    $retval_0 = 23;
    label = 95;
    break;
   case 45:
    $add_ptr130 = $ptr + 2 | 0;
    $cmp131 = ($add_ptr130 | 0) == ($end_addr_0 | 0);
    if ($cmp131) {
      $retval_0 = -24;
      label = 95;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $16 = HEAP8[$add_ptr130] | 0;
    $cmp137 = $16 << 24 >> 24 == 0;
    $arrayidx140 = $ptr + 3 | 0;
    $17 = HEAP8[$arrayidx140] | 0;
    if ($cmp137) {
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    $idxprom141 = $17 & 255;
    $type142 = $enc + 72 | 0;
    $18 = $type142;
    $arrayidx143 = $18 + $idxprom141 | 0;
    $19 = HEAP8[$arrayidx143] | 0;
    $conv144 = $19 & 255;
    $cond150 = $conv144;
    label = 49;
    break;
   case 48:
    $call148 = _unicode_byte_type($16, $17) | 0;
    $cond150 = $call148;
    label = 49;
    break;
   case 49:
    if (($cond150 | 0) == 33) {
      label = 50;
      break;
    } else if (($cond150 | 0) == 15) {
      label = 51;
      break;
    } else if (($cond150 | 0) == 34) {
      label = 52;
      break;
    } else if (($cond150 | 0) == 9 | ($cond150 | 0) == 10 | ($cond150 | 0) == 21 | ($cond150 | 0) == 11 | ($cond150 | 0) == 35 | ($cond150 | 0) == 36 | ($cond150 | 0) == 32) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 50:
    $add_ptr152 = $ptr + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr152;
    $retval_0 = 36;
    label = 95;
    break;
   case 51:
    $add_ptr154 = $ptr + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr154;
    $retval_0 = 35;
    label = 95;
    break;
   case 52:
    $add_ptr156 = $ptr + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr156;
    $retval_0 = 37;
    label = 95;
    break;
   case 53:
    HEAP32[$nextTokPtr >> 2] = $add_ptr130;
    $retval_0 = 24;
    label = 95;
    break;
   case 54:
    HEAP32[$nextTokPtr >> 2] = $add_ptr130;
    $retval_0 = 0;
    label = 95;
    break;
   case 55:
    $add_ptr160 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr160;
    $retval_0 = 21;
    label = 95;
    break;
   case 56:
    $add_ptr162 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr162;
    $retval_0 = 17;
    label = 95;
    break;
   case 57:
    $add_ptr164 = $ptr + 2 | 0;
    $call165 = _big2_scanPoundName($enc, $add_ptr164, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call165;
    label = 95;
    break;
   case 58:
    $sub_ptr_lhs_cast167 = $end_addr_0;
    $sub_ptr_sub169 = $sub_ptr_lhs_cast167 - $sub_ptr_rhs_cast | 0;
    $cmp170 = ($sub_ptr_sub169 | 0) < 2;
    if ($cmp170) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 60:
    $sub_ptr_lhs_cast175 = $end_addr_0;
    $sub_ptr_sub177 = $sub_ptr_lhs_cast175 - $sub_ptr_rhs_cast | 0;
    $cmp178 = ($sub_ptr_sub177 | 0) < 3;
    if ($cmp178) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 61;
      break;
    }
   case 61:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 62:
    $sub_ptr_lhs_cast183 = $end_addr_0;
    $sub_ptr_sub185 = $sub_ptr_lhs_cast183 - $sub_ptr_rhs_cast | 0;
    $cmp186 = ($sub_ptr_sub185 | 0) < 4;
    if ($cmp186) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 64:
    $tok_0_ph = 19;
    label = 67;
    break;
   case 65:
    $20 = HEAP8[$ptr] | 0;
    $idxprom196 = $20 & 255;
    $arrayidx197 = $idxprom196 + 9272 | 0;
    $21 = HEAP8[$arrayidx197] | 0;
    $conv198 = $21 & 255;
    $shl = $conv198 << 3;
    $22 = HEAP8[$arrayidx9] | 0;
    $conv200 = $22 & 255;
    $shr164 = $conv200 >>> 5;
    $add = $shr164 | $shl;
    $arrayidx201 = 9544 + ($add << 2) | 0;
    $23 = HEAP32[$arrayidx201 >> 2] | 0;
    $and204 = $conv200 & 31;
    $shl205 = 1 << $and204;
    $and206 = $shl205 & $23;
    $tobool207 = ($and206 | 0) == 0;
    if ($tobool207) {
      label = 66;
      break;
    } else {
      $tok_0_ph = 18;
      label = 67;
      break;
    }
   case 66:
    $arrayidx213 = $idxprom196 + 10824 | 0;
    $24 = HEAP8[$arrayidx213] | 0;
    $conv214 = $24 & 255;
    $shl215 = $conv214 << 3;
    $add219 = $shl215 | $shr164;
    $arrayidx220 = 9544 + ($add219 << 2) | 0;
    $25 = HEAP32[$arrayidx220 >> 2] | 0;
    $and225 = $25 & $shl205;
    $tobool226 = ($and225 | 0) == 0;
    if ($tobool226) {
      label = 69;
      break;
    } else {
      $tok_0_ph = 19;
      label = 67;
      break;
    }
   case 67:
    $ptr_addr_1189 = $ptr + 2 | 0;
    $cmp232190 = ($ptr_addr_1189 | 0) == ($end_addr_0 | 0);
    if ($cmp232190) {
      label = 94;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $type241 = $enc + 72 | 0;
    $26 = $type241;
    $ptr_pn191 = $ptr;
    $ptr_addr_1192 = $ptr_addr_1189;
    label = 70;
    break;
   case 69:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 95;
    break;
   case 70:
    $27 = HEAP8[$ptr_addr_1192] | 0;
    $cmp236 = $27 << 24 >> 24 == 0;
    $arrayidx239 = $ptr_pn191 + 3 | 0;
    $28 = HEAP8[$arrayidx239] | 0;
    if ($cmp236) {
      label = 71;
      break;
    } else {
      label = 72;
      break;
    }
   case 71:
    $idxprom240 = $28 & 255;
    $arrayidx242 = $26 + $idxprom240 | 0;
    $29 = HEAP8[$arrayidx242] | 0;
    $conv243 = $29 & 255;
    $cond249 = $conv243;
    label = 73;
    break;
   case 72:
    $call247 = _unicode_byte_type($27, $28) | 0;
    $cond249 = $call247;
    label = 73;
    break;
   case 73:
    if (($cond249 | 0) == 29) {
      label = 74;
      break;
    } else if (($cond249 | 0) == 22 | ($cond249 | 0) == 24 | ($cond249 | 0) == 25 | ($cond249 | 0) == 26 | ($cond249 | 0) == 27) {
      label = 75;
      break;
    } else if (($cond249 | 0) == 5) {
      label = 77;
      break;
    } else if (($cond249 | 0) == 6) {
      label = 79;
      break;
    } else if (($cond249 | 0) == 7) {
      label = 81;
      break;
    } else if (($cond249 | 0) == 11 | ($cond249 | 0) == 32 | ($cond249 | 0) == 35 | ($cond249 | 0) == 36 | ($cond249 | 0) == 20 | ($cond249 | 0) == 30 | ($cond249 | 0) == 21 | ($cond249 | 0) == 9 | ($cond249 | 0) == 10) {
      label = 83;
      break;
    } else if (($cond249 | 0) == 34) {
      label = 84;
      break;
    } else if (($cond249 | 0) == 33) {
      label = 87;
      break;
    } else if (($cond249 | 0) == 15) {
      label = 90;
      break;
    } else {
      label = 93;
      break;
    }
   case 74:
    $30 = HEAP8[$ptr_addr_1192] | 0;
    $idxprom252 = $30 & 255;
    $arrayidx253 = $idxprom252 + 10824 | 0;
    $31 = HEAP8[$arrayidx253] | 0;
    $conv254 = $31 & 255;
    $shl255 = $conv254 << 3;
    $32 = HEAP8[$arrayidx239] | 0;
    $conv257 = $32 & 255;
    $shr258165 = $conv257 >>> 5;
    $add259 = $shr258165 | $shl255;
    $arrayidx260 = 9544 + ($add259 << 2) | 0;
    $33 = HEAP32[$arrayidx260 >> 2] | 0;
    $and263 = $conv257 & 31;
    $shl264 = 1 << $and263;
    $and265 = $shl264 & $33;
    $tobool266 = ($and265 | 0) == 0;
    if ($tobool266) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $ptr_addr_1 = $ptr_addr_1192 + 2 | 0;
    $cmp232 = ($ptr_addr_1 | 0) == ($end_addr_0 | 0);
    if ($cmp232) {
      label = 94;
      break;
    } else {
      $ptr_pn191 = $ptr_addr_1192;
      $ptr_addr_1192 = $ptr_addr_1;
      label = 70;
      break;
    }
   case 76:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 77:
    $sub_ptr_lhs_cast272 = $end_addr_0;
    $sub_ptr_rhs_cast273 = $ptr_addr_1192;
    $sub_ptr_sub274 = $sub_ptr_lhs_cast272 - $sub_ptr_rhs_cast273 | 0;
    $cmp275 = ($sub_ptr_sub274 | 0) < 2;
    if ($cmp275) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 79:
    $sub_ptr_lhs_cast280 = $end_addr_0;
    $sub_ptr_rhs_cast281 = $ptr_addr_1192;
    $sub_ptr_sub282 = $sub_ptr_lhs_cast280 - $sub_ptr_rhs_cast281 | 0;
    $cmp283 = ($sub_ptr_sub282 | 0) < 3;
    if ($cmp283) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 81:
    $sub_ptr_lhs_cast288 = $end_addr_0;
    $sub_ptr_rhs_cast289 = $ptr_addr_1192;
    $sub_ptr_sub290 = $sub_ptr_lhs_cast288 - $sub_ptr_rhs_cast289 | 0;
    $cmp291 = ($sub_ptr_sub290 | 0) < 4;
    if ($cmp291) {
      $retval_0 = -2;
      label = 95;
      break;
    } else {
      label = 82;
      break;
    }
   case 82:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 83:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = $tok_0_ph;
    label = 95;
    break;
   case 84:
    $cmp297 = ($tok_0_ph | 0) == 19;
    if ($cmp297) {
      label = 85;
      break;
    } else {
      label = 86;
      break;
    }
   case 85:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 86:
    $add_ptr301 = $ptr_pn191 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr301;
    $retval_0 = 32;
    label = 95;
    break;
   case 87:
    $cmp303 = ($tok_0_ph | 0) == 19;
    if ($cmp303) {
      label = 88;
      break;
    } else {
      label = 89;
      break;
    }
   case 88:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 89:
    $add_ptr307 = $ptr_pn191 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr307;
    $retval_0 = 31;
    label = 95;
    break;
   case 90:
    $cmp309 = ($tok_0_ph | 0) == 19;
    if ($cmp309) {
      label = 91;
      break;
    } else {
      label = 92;
      break;
    }
   case 91:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 92:
    $add_ptr313 = $ptr_pn191 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr313;
    $retval_0 = 30;
    label = 95;
    break;
   case 93:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1192;
    $retval_0 = 0;
    label = 95;
    break;
   case 94:
    $sub = -$tok_0_ph | 0;
    $retval_0 = $sub;
    label = 95;
    break;
   case 95:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_contentTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $and = 0, $tobool = 0, $and2 = 0, $cmp3 = 0, $add_ptr = 0, $end_addr_0 = 0, $0 = 0, $cmp7 = 0, $arrayidx9 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx10 = 0, $3 = 0, $conv11 = 0, $call = 0, $cond = 0, $add_ptr14 = 0, $call15 = 0, $add_ptr17 = 0, $call18 = 0, $add_ptr20 = 0, $cmp21 = 0, $4 = 0, $cmp27 = 0, $arrayidx30 = 0, $5 = 0, $idxprom31 = 0, $type32 = 0, $6 = 0, $arrayidx33 = 0, $7 = 0, $conv34 = 0, $call38 = 0, $cond40 = 0, $cmp41 = 0, $add_ptr44 = 0, $add_ptr44_add_ptr20 = 0, $add_ptr47 = 0, $add_ptr49 = 0, $cmp50 = 0, $8 = 0, $cmp56 = 0, $arrayidx58 = 0, $9 = 0, $cmp60 = 0, $add_ptr64 = 0, $cmp65 = 0, $10 = 0, $cmp71 = 0, $arrayidx74 = 0, $11 = 0, $cmp76 = 0, $sub_ptr_lhs_cast82 = 0, $sub_ptr_sub84 = 0, $cmp85 = 0, $add_ptr89 = 0, $sub_ptr_lhs_cast91 = 0, $sub_ptr_sub93 = 0, $cmp94 = 0, $add_ptr98 = 0, $sub_ptr_lhs_cast100 = 0, $sub_ptr_sub102 = 0, $cmp103 = 0, $add_ptr107 = 0, $add_ptr109 = 0, $ptr_addr_1_ph = 0, $cmp11093 = 0, $type119 = 0, $12 = 0, $sub_ptr_lhs_cast129 = 0, $sub_ptr_lhs_cast138 = 0, $sub_ptr_lhs_cast147 = 0, $ptr_addr_194 = 0, $13 = 0, $cmp114 = 0, $arrayidx117 = 0, $14 = 0, $idxprom118 = 0, $arrayidx120 = 0, $15 = 0, $conv121 = 0, $call125 = 0, $cond127 = 0, $sub_ptr_rhs_cast130 = 0, $sub_ptr_sub131 = 0, $cmp132 = 0, $add_ptr136 = 0, $sub_ptr_rhs_cast139 = 0, $sub_ptr_sub140 = 0, $cmp141 = 0, $add_ptr145 = 0, $sub_ptr_rhs_cast148 = 0, $sub_ptr_sub149 = 0, $cmp150 = 0, $add_ptr154 = 0, $add_ptr156 = 0, $cmp157 = 0, $16 = 0, $cmp163 = 0, $arrayidx167 = 0, $17 = 0, $cmp169 = 0, $add_ptr174 = 0, $cmp175 = 0, $18 = 0, $cmp181 = 0, $arrayidx185 = 0, $19 = 0, $cmp187 = 0, $add_ptr197 = 0, $ptr_addr_1_be = 0, $cmp110 = 0, $ptr_addr_1_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 59;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $and = $sub_ptr_sub & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $end_addr_0 = $end;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and2 = $sub_ptr_sub & -2;
    $cmp3 = ($and2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $ptr + $and2 | 0;
    $end_addr_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    $0 = HEAP8[$ptr] | 0;
    $cmp7 = $0 << 24 >> 24 == 0;
    $arrayidx9 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx9] | 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx10 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx10] | 0;
    $conv11 = $3 & 255;
    $cond = $conv11;
    label = 9;
    break;
   case 8:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 9;
    break;
   case 9:
    if (($cond | 0) == 2) {
      label = 10;
      break;
    } else if (($cond | 0) == 3) {
      label = 11;
      break;
    } else if (($cond | 0) == 9) {
      label = 12;
      break;
    } else if (($cond | 0) == 10) {
      label = 17;
      break;
    } else if (($cond | 0) == 4) {
      label = 18;
      break;
    } else if (($cond | 0) == 5) {
      label = 25;
      break;
    } else if (($cond | 0) == 6) {
      label = 27;
      break;
    } else if (($cond | 0) == 7) {
      label = 29;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 10:
    $add_ptr14 = $ptr + 2 | 0;
    $call15 = _big2_scanLt($enc, $add_ptr14, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call15;
    label = 59;
    break;
   case 11:
    $add_ptr17 = $ptr + 2 | 0;
    $call18 = _big2_scanRef($enc, $add_ptr17, $end_addr_0, $nextTokPtr) | 0;
    $retval_0 = $call18;
    label = 59;
    break;
   case 12:
    $add_ptr20 = $ptr + 2 | 0;
    $cmp21 = ($add_ptr20 | 0) == ($end_addr_0 | 0);
    if ($cmp21) {
      $retval_0 = -3;
      label = 59;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $4 = HEAP8[$add_ptr20] | 0;
    $cmp27 = $4 << 24 >> 24 == 0;
    $arrayidx30 = $ptr + 3 | 0;
    $5 = HEAP8[$arrayidx30] | 0;
    if ($cmp27) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $idxprom31 = $5 & 255;
    $type32 = $enc + 72 | 0;
    $6 = $type32;
    $arrayidx33 = $6 + $idxprom31 | 0;
    $7 = HEAP8[$arrayidx33] | 0;
    $conv34 = $7 & 255;
    $cond40 = $conv34;
    label = 16;
    break;
   case 15:
    $call38 = _unicode_byte_type($4, $5) | 0;
    $cond40 = $call38;
    label = 16;
    break;
   case 16:
    $cmp41 = ($cond40 | 0) == 10;
    $add_ptr44 = $ptr + 4 | 0;
    $add_ptr44_add_ptr20 = $cmp41 ? $add_ptr44 : $add_ptr20;
    HEAP32[$nextTokPtr >> 2] = $add_ptr44_add_ptr20;
    $retval_0 = 7;
    label = 59;
    break;
   case 17:
    $add_ptr47 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr47;
    $retval_0 = 7;
    label = 59;
    break;
   case 18:
    $add_ptr49 = $ptr + 2 | 0;
    $cmp50 = ($add_ptr49 | 0) == ($end_addr_0 | 0);
    if ($cmp50) {
      $retval_0 = -5;
      label = 59;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $8 = HEAP8[$add_ptr49] | 0;
    $cmp56 = $8 << 24 >> 24 == 0;
    if ($cmp56) {
      label = 20;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr49;
      label = 33;
      break;
    }
   case 20:
    $arrayidx58 = $ptr + 3 | 0;
    $9 = HEAP8[$arrayidx58] | 0;
    $cmp60 = $9 << 24 >> 24 == 93;
    if ($cmp60) {
      label = 21;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr49;
      label = 33;
      break;
    }
   case 21:
    $add_ptr64 = $ptr + 4 | 0;
    $cmp65 = ($add_ptr64 | 0) == ($end_addr_0 | 0);
    if ($cmp65) {
      $retval_0 = -5;
      label = 59;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $10 = HEAP8[$add_ptr64] | 0;
    $cmp71 = $10 << 24 >> 24 == 0;
    if ($cmp71) {
      label = 23;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr49;
      label = 33;
      break;
    }
   case 23:
    $arrayidx74 = $ptr + 5 | 0;
    $11 = HEAP8[$arrayidx74] | 0;
    $cmp76 = $11 << 24 >> 24 == 62;
    if ($cmp76) {
      label = 24;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr49;
      label = 33;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $add_ptr64;
    $retval_0 = 0;
    label = 59;
    break;
   case 25:
    $sub_ptr_lhs_cast82 = $end_addr_0;
    $sub_ptr_sub84 = $sub_ptr_lhs_cast82 - $sub_ptr_rhs_cast | 0;
    $cmp85 = ($sub_ptr_sub84 | 0) < 2;
    if ($cmp85) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $add_ptr89 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr89;
    label = 33;
    break;
   case 27:
    $sub_ptr_lhs_cast91 = $end_addr_0;
    $sub_ptr_sub93 = $sub_ptr_lhs_cast91 - $sub_ptr_rhs_cast | 0;
    $cmp94 = ($sub_ptr_sub93 | 0) < 3;
    if ($cmp94) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add_ptr98 = $ptr + 3 | 0;
    $ptr_addr_1_ph = $add_ptr98;
    label = 33;
    break;
   case 29:
    $sub_ptr_lhs_cast100 = $end_addr_0;
    $sub_ptr_sub102 = $sub_ptr_lhs_cast100 - $sub_ptr_rhs_cast | 0;
    $cmp103 = ($sub_ptr_sub102 | 0) < 4;
    if ($cmp103) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $add_ptr107 = $ptr + 4 | 0;
    $ptr_addr_1_ph = $add_ptr107;
    label = 33;
    break;
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 32:
    $add_ptr109 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr109;
    label = 33;
    break;
   case 33:
    $cmp11093 = ($ptr_addr_1_ph | 0) == ($end_addr_0 | 0);
    if ($cmp11093) {
      $ptr_addr_1_lcssa = $ptr_addr_1_ph;
      label = 58;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $type119 = $enc + 72 | 0;
    $12 = $type119;
    $sub_ptr_lhs_cast129 = $end_addr_0;
    $sub_ptr_lhs_cast138 = $end_addr_0;
    $sub_ptr_lhs_cast147 = $end_addr_0;
    $ptr_addr_194 = $ptr_addr_1_ph;
    label = 35;
    break;
   case 35:
    $13 = HEAP8[$ptr_addr_194] | 0;
    $cmp114 = $13 << 24 >> 24 == 0;
    $arrayidx117 = $ptr_addr_194 + 1 | 0;
    $14 = HEAP8[$arrayidx117] | 0;
    if ($cmp114) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    $idxprom118 = $14 & 255;
    $arrayidx120 = $12 + $idxprom118 | 0;
    $15 = HEAP8[$arrayidx120] | 0;
    $conv121 = $15 & 255;
    $cond127 = $conv121;
    label = 38;
    break;
   case 37:
    $call125 = _unicode_byte_type($13, $14) | 0;
    $cond127 = $call125;
    label = 38;
    break;
   case 38:
    if (($cond127 | 0) == 5) {
      label = 39;
      break;
    } else if (($cond127 | 0) == 6) {
      label = 42;
      break;
    } else if (($cond127 | 0) == 7) {
      label = 45;
      break;
    } else if (($cond127 | 0) == 4) {
      label = 48;
      break;
    } else if (($cond127 | 0) == 3 | ($cond127 | 0) == 2 | ($cond127 | 0) == 0 | ($cond127 | 0) == 1 | ($cond127 | 0) == 8 | ($cond127 | 0) == 9 | ($cond127 | 0) == 10) {
      label = 55;
      break;
    } else {
      label = 56;
      break;
    }
   case 39:
    $sub_ptr_rhs_cast130 = $ptr_addr_194;
    $sub_ptr_sub131 = $sub_ptr_lhs_cast129 - $sub_ptr_rhs_cast130 | 0;
    $cmp132 = ($sub_ptr_sub131 | 0) < 2;
    if ($cmp132) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 40:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 41:
    $add_ptr136 = $ptr_addr_194 + 2 | 0;
    $ptr_addr_1_be = $add_ptr136;
    label = 57;
    break;
   case 42:
    $sub_ptr_rhs_cast139 = $ptr_addr_194;
    $sub_ptr_sub140 = $sub_ptr_lhs_cast138 - $sub_ptr_rhs_cast139 | 0;
    $cmp141 = ($sub_ptr_sub140 | 0) < 3;
    if ($cmp141) {
      label = 43;
      break;
    } else {
      label = 44;
      break;
    }
   case 43:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 44:
    $add_ptr145 = $ptr_addr_194 + 3 | 0;
    $ptr_addr_1_be = $add_ptr145;
    label = 57;
    break;
   case 45:
    $sub_ptr_rhs_cast148 = $ptr_addr_194;
    $sub_ptr_sub149 = $sub_ptr_lhs_cast147 - $sub_ptr_rhs_cast148 | 0;
    $cmp150 = ($sub_ptr_sub149 | 0) < 4;
    if ($cmp150) {
      label = 46;
      break;
    } else {
      label = 47;
      break;
    }
   case 46:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 47:
    $add_ptr154 = $ptr_addr_194 + 4 | 0;
    $ptr_addr_1_be = $add_ptr154;
    label = 57;
    break;
   case 48:
    $add_ptr156 = $ptr_addr_194 + 2 | 0;
    $cmp157 = ($add_ptr156 | 0) == ($end_addr_0 | 0);
    if ($cmp157) {
      label = 55;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $16 = HEAP8[$add_ptr156] | 0;
    $cmp163 = $16 << 24 >> 24 == 0;
    if ($cmp163) {
      label = 50;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr156;
      label = 57;
      break;
    }
   case 50:
    $arrayidx167 = $ptr_addr_194 + 3 | 0;
    $17 = HEAP8[$arrayidx167] | 0;
    $cmp169 = $17 << 24 >> 24 == 93;
    if ($cmp169) {
      label = 51;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr156;
      label = 57;
      break;
    }
   case 51:
    $add_ptr174 = $ptr_addr_194 + 4 | 0;
    $cmp175 = ($add_ptr174 | 0) == ($end_addr_0 | 0);
    if ($cmp175) {
      label = 55;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $18 = HEAP8[$add_ptr174] | 0;
    $cmp181 = $18 << 24 >> 24 == 0;
    if ($cmp181) {
      label = 53;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr156;
      label = 57;
      break;
    }
   case 53:
    $arrayidx185 = $ptr_addr_194 + 5 | 0;
    $19 = HEAP8[$arrayidx185] | 0;
    $cmp187 = $19 << 24 >> 24 == 62;
    if ($cmp187) {
      label = 54;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr156;
      label = 57;
      break;
    }
   case 54:
    HEAP32[$nextTokPtr >> 2] = $add_ptr174;
    $retval_0 = 0;
    label = 59;
    break;
   case 55:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_194;
    $retval_0 = 6;
    label = 59;
    break;
   case 56:
    $add_ptr197 = $ptr_addr_194 + 2 | 0;
    $ptr_addr_1_be = $add_ptr197;
    label = 57;
    break;
   case 57:
    $cmp110 = ($ptr_addr_1_be | 0) == ($end_addr_0 | 0);
    if ($cmp110) {
      $ptr_addr_1_lcssa = $ptr_addr_1_be;
      label = 58;
      break;
    } else {
      $ptr_addr_194 = $ptr_addr_1_be;
      label = 35;
      break;
    }
   case 58:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1_lcssa;
    $retval_0 = 6;
    label = 59;
    break;
   case 59:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_cdataSectionTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $and = 0, $tobool = 0, $and2 = 0, $cmp3 = 0, $add_ptr = 0, $end_addr_0 = 0, $0 = 0, $cmp7 = 0, $arrayidx9 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx10 = 0, $3 = 0, $conv11 = 0, $call = 0, $cond = 0, $add_ptr14 = 0, $cmp15 = 0, $4 = 0, $cmp21 = 0, $arrayidx23 = 0, $5 = 0, $cmp25 = 0, $add_ptr29 = 0, $cmp30 = 0, $6 = 0, $cmp36 = 0, $arrayidx39 = 0, $7 = 0, $cmp41 = 0, $add_ptr46 = 0, $add_ptr48 = 0, $cmp49 = 0, $8 = 0, $cmp55 = 0, $arrayidx58 = 0, $9 = 0, $idxprom59 = 0, $type60 = 0, $10 = 0, $arrayidx61 = 0, $11 = 0, $conv62 = 0, $call66 = 0, $cond68 = 0, $cmp69 = 0, $add_ptr72 = 0, $add_ptr72_add_ptr48 = 0, $add_ptr75 = 0, $sub_ptr_lhs_cast77 = 0, $sub_ptr_sub79 = 0, $cmp80 = 0, $add_ptr84 = 0, $sub_ptr_lhs_cast86 = 0, $sub_ptr_sub88 = 0, $cmp89 = 0, $add_ptr93 = 0, $sub_ptr_lhs_cast95 = 0, $sub_ptr_sub97 = 0, $cmp98 = 0, $add_ptr102 = 0, $add_ptr104 = 0, $ptr_addr_1_ph = 0, $cmp10572 = 0, $type114 = 0, $12 = 0, $sub_ptr_lhs_cast124 = 0, $sub_ptr_lhs_cast133 = 0, $sub_ptr_lhs_cast142 = 0, $ptr_addr_173 = 0, $13 = 0, $cmp109 = 0, $arrayidx112 = 0, $14 = 0, $idxprom113 = 0, $arrayidx115 = 0, $15 = 0, $conv116 = 0, $call120 = 0, $cond122 = 0, $sub_ptr_rhs_cast125 = 0, $sub_ptr_sub126 = 0, $cmp127 = 0, $add_ptr131 = 0, $sub_ptr_rhs_cast134 = 0, $sub_ptr_sub135 = 0, $cmp136 = 0, $add_ptr140 = 0, $sub_ptr_rhs_cast143 = 0, $sub_ptr_sub144 = 0, $cmp145 = 0, $add_ptr149 = 0, $add_ptr152 = 0, $ptr_addr_1_be = 0, $cmp105 = 0, $ptr_addr_1_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 50;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $and = $sub_ptr_sub & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      $end_addr_0 = $end;
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and2 = $sub_ptr_sub & -2;
    $cmp3 = ($and2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $add_ptr = $ptr + $and2 | 0;
    $end_addr_0 = $add_ptr;
    label = 6;
    break;
   case 6:
    $0 = HEAP8[$ptr] | 0;
    $cmp7 = $0 << 24 >> 24 == 0;
    $arrayidx9 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx9] | 0;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx10 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx10] | 0;
    $conv11 = $3 & 255;
    $cond = $conv11;
    label = 9;
    break;
   case 8:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 9;
    break;
   case 9:
    if (($cond | 0) == 4) {
      label = 10;
      break;
    } else if (($cond | 0) == 9) {
      label = 17;
      break;
    } else if (($cond | 0) == 10) {
      label = 22;
      break;
    } else if (($cond | 0) == 5) {
      label = 23;
      break;
    } else if (($cond | 0) == 6) {
      label = 25;
      break;
    } else if (($cond | 0) == 7) {
      label = 27;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 10:
    $add_ptr14 = $ptr + 2 | 0;
    $cmp15 = ($add_ptr14 | 0) == ($end_addr_0 | 0);
    if ($cmp15) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $4 = HEAP8[$add_ptr14] | 0;
    $cmp21 = $4 << 24 >> 24 == 0;
    if ($cmp21) {
      label = 12;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr14;
      label = 31;
      break;
    }
   case 12:
    $arrayidx23 = $ptr + 3 | 0;
    $5 = HEAP8[$arrayidx23] | 0;
    $cmp25 = $5 << 24 >> 24 == 93;
    if ($cmp25) {
      label = 13;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr14;
      label = 31;
      break;
    }
   case 13:
    $add_ptr29 = $ptr + 4 | 0;
    $cmp30 = ($add_ptr29 | 0) == ($end_addr_0 | 0);
    if ($cmp30) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $6 = HEAP8[$add_ptr29] | 0;
    $cmp36 = $6 << 24 >> 24 == 0;
    if ($cmp36) {
      label = 15;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr14;
      label = 31;
      break;
    }
   case 15:
    $arrayidx39 = $ptr + 5 | 0;
    $7 = HEAP8[$arrayidx39] | 0;
    $cmp41 = $7 << 24 >> 24 == 62;
    if ($cmp41) {
      label = 16;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr14;
      label = 31;
      break;
    }
   case 16:
    $add_ptr46 = $ptr + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr46;
    $retval_0 = 40;
    label = 50;
    break;
   case 17:
    $add_ptr48 = $ptr + 2 | 0;
    $cmp49 = ($add_ptr48 | 0) == ($end_addr_0 | 0);
    if ($cmp49) {
      $retval_0 = -1;
      label = 50;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $8 = HEAP8[$add_ptr48] | 0;
    $cmp55 = $8 << 24 >> 24 == 0;
    $arrayidx58 = $ptr + 3 | 0;
    $9 = HEAP8[$arrayidx58] | 0;
    if ($cmp55) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom59 = $9 & 255;
    $type60 = $enc + 72 | 0;
    $10 = $type60;
    $arrayidx61 = $10 + $idxprom59 | 0;
    $11 = HEAP8[$arrayidx61] | 0;
    $conv62 = $11 & 255;
    $cond68 = $conv62;
    label = 21;
    break;
   case 20:
    $call66 = _unicode_byte_type($8, $9) | 0;
    $cond68 = $call66;
    label = 21;
    break;
   case 21:
    $cmp69 = ($cond68 | 0) == 10;
    $add_ptr72 = $ptr + 4 | 0;
    $add_ptr72_add_ptr48 = $cmp69 ? $add_ptr72 : $add_ptr48;
    HEAP32[$nextTokPtr >> 2] = $add_ptr72_add_ptr48;
    $retval_0 = 7;
    label = 50;
    break;
   case 22:
    $add_ptr75 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr75;
    $retval_0 = 7;
    label = 50;
    break;
   case 23:
    $sub_ptr_lhs_cast77 = $end_addr_0;
    $sub_ptr_sub79 = $sub_ptr_lhs_cast77 - $sub_ptr_rhs_cast | 0;
    $cmp80 = ($sub_ptr_sub79 | 0) < 2;
    if ($cmp80) {
      $retval_0 = -2;
      label = 50;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $add_ptr84 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr84;
    label = 31;
    break;
   case 25:
    $sub_ptr_lhs_cast86 = $end_addr_0;
    $sub_ptr_sub88 = $sub_ptr_lhs_cast86 - $sub_ptr_rhs_cast | 0;
    $cmp89 = ($sub_ptr_sub88 | 0) < 3;
    if ($cmp89) {
      $retval_0 = -2;
      label = 50;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $add_ptr93 = $ptr + 3 | 0;
    $ptr_addr_1_ph = $add_ptr93;
    label = 31;
    break;
   case 27:
    $sub_ptr_lhs_cast95 = $end_addr_0;
    $sub_ptr_sub97 = $sub_ptr_lhs_cast95 - $sub_ptr_rhs_cast | 0;
    $cmp98 = ($sub_ptr_sub97 | 0) < 4;
    if ($cmp98) {
      $retval_0 = -2;
      label = 50;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $add_ptr102 = $ptr + 4 | 0;
    $ptr_addr_1_ph = $add_ptr102;
    label = 31;
    break;
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 50;
    break;
   case 30:
    $add_ptr104 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr104;
    label = 31;
    break;
   case 31:
    $cmp10572 = ($ptr_addr_1_ph | 0) == ($end_addr_0 | 0);
    if ($cmp10572) {
      $ptr_addr_1_lcssa = $ptr_addr_1_ph;
      label = 49;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $type114 = $enc + 72 | 0;
    $12 = $type114;
    $sub_ptr_lhs_cast124 = $end_addr_0;
    $sub_ptr_lhs_cast133 = $end_addr_0;
    $sub_ptr_lhs_cast142 = $end_addr_0;
    $ptr_addr_173 = $ptr_addr_1_ph;
    label = 33;
    break;
   case 33:
    $13 = HEAP8[$ptr_addr_173] | 0;
    $cmp109 = $13 << 24 >> 24 == 0;
    $arrayidx112 = $ptr_addr_173 + 1 | 0;
    $14 = HEAP8[$arrayidx112] | 0;
    if ($cmp109) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    $idxprom113 = $14 & 255;
    $arrayidx115 = $12 + $idxprom113 | 0;
    $15 = HEAP8[$arrayidx115] | 0;
    $conv116 = $15 & 255;
    $cond122 = $conv116;
    label = 36;
    break;
   case 35:
    $call120 = _unicode_byte_type($13, $14) | 0;
    $cond122 = $call120;
    label = 36;
    break;
   case 36:
    if (($cond122 | 0) == 5) {
      label = 37;
      break;
    } else if (($cond122 | 0) == 6) {
      label = 40;
      break;
    } else if (($cond122 | 0) == 7) {
      label = 43;
      break;
    } else if (($cond122 | 0) == 0 | ($cond122 | 0) == 1 | ($cond122 | 0) == 8 | ($cond122 | 0) == 9 | ($cond122 | 0) == 10 | ($cond122 | 0) == 4) {
      label = 46;
      break;
    } else {
      label = 47;
      break;
    }
   case 37:
    $sub_ptr_rhs_cast125 = $ptr_addr_173;
    $sub_ptr_sub126 = $sub_ptr_lhs_cast124 - $sub_ptr_rhs_cast125 | 0;
    $cmp127 = ($sub_ptr_sub126 | 0) < 2;
    if ($cmp127) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 39:
    $add_ptr131 = $ptr_addr_173 + 2 | 0;
    $ptr_addr_1_be = $add_ptr131;
    label = 48;
    break;
   case 40:
    $sub_ptr_rhs_cast134 = $ptr_addr_173;
    $sub_ptr_sub135 = $sub_ptr_lhs_cast133 - $sub_ptr_rhs_cast134 | 0;
    $cmp136 = ($sub_ptr_sub135 | 0) < 3;
    if ($cmp136) {
      label = 41;
      break;
    } else {
      label = 42;
      break;
    }
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 42:
    $add_ptr140 = $ptr_addr_173 + 3 | 0;
    $ptr_addr_1_be = $add_ptr140;
    label = 48;
    break;
   case 43:
    $sub_ptr_rhs_cast143 = $ptr_addr_173;
    $sub_ptr_sub144 = $sub_ptr_lhs_cast142 - $sub_ptr_rhs_cast143 | 0;
    $cmp145 = ($sub_ptr_sub144 | 0) < 4;
    if ($cmp145) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 45:
    $add_ptr149 = $ptr_addr_173 + 4 | 0;
    $ptr_addr_1_be = $add_ptr149;
    label = 48;
    break;
   case 46:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_173;
    $retval_0 = 6;
    label = 50;
    break;
   case 47:
    $add_ptr152 = $ptr_addr_173 + 2 | 0;
    $ptr_addr_1_be = $add_ptr152;
    label = 48;
    break;
   case 48:
    $cmp105 = ($ptr_addr_1_be | 0) == ($end_addr_0 | 0);
    if ($cmp105) {
      $ptr_addr_1_lcssa = $ptr_addr_1_be;
      label = 49;
      break;
    } else {
      $ptr_addr_173 = $ptr_addr_1_be;
      label = 33;
      break;
    }
   case 49:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1_lcssa;
    $retval_0 = 6;
    label = 50;
    break;
   case 50:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_attributeValueTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $cmp148 = 0, $type = 0, $0 = 0, $ptr_addr_049 = 0, $1 = 0, $cmp2 = 0, $arrayidx4 = 0, $2 = 0, $idxprom = 0, $arrayidx5 = 0, $3 = 0, $conv6 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr10 = 0, $add_ptr12 = 0, $cmp14 = 0, $add_ptr17 = 0, $call18 = 0, $cmp22 = 0, $add_ptr25 = 0, $cmp28 = 0, $add_ptr31 = 0, $cmp32 = 0, $4 = 0, $cmp38 = 0, $arrayidx41 = 0, $5 = 0, $idxprom42 = 0, $type43 = 0, $6 = 0, $arrayidx44 = 0, $7 = 0, $conv45 = 0, $call49 = 0, $cond51 = 0, $cmp52 = 0, $add_ptr55 = 0, $add_ptr55_add_ptr31 = 0, $cmp59 = 0, $add_ptr62 = 0, $add_ptr64 = 0, $ptr_addr_0_be = 0, $cmp1 = 0, $ptr_addr_0_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 32;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp148 = ($ptr | 0) == ($end | 0);
    if ($cmp148) {
      $ptr_addr_0_lcssa = $ptr;
      label = 31;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_049 = $ptr;
    label = 5;
    break;
   case 5:
    $1 = HEAP8[$ptr_addr_049] | 0;
    $cmp2 = $1 << 24 >> 24 == 0;
    $arrayidx4 = $ptr_addr_049 + 1 | 0;
    $2 = HEAP8[$arrayidx4] | 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $idxprom = $2 & 255;
    $arrayidx5 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx5] | 0;
    $conv6 = $3 & 255;
    $cond = $conv6;
    label = 8;
    break;
   case 7:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 8;
    break;
   case 8:
    if (($cond | 0) == 5) {
      label = 9;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 11;
      break;
    } else if (($cond | 0) == 3) {
      label = 12;
      break;
    } else if (($cond | 0) == 2) {
      label = 15;
      break;
    } else if (($cond | 0) == 10) {
      label = 16;
      break;
    } else if (($cond | 0) == 9) {
      label = 19;
      break;
    } else if (($cond | 0) == 21) {
      label = 26;
      break;
    } else {
      label = 29;
      break;
    }
   case 9:
    $add_ptr = $ptr_addr_049 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 30;
    break;
   case 10:
    $add_ptr10 = $ptr_addr_049 + 3 | 0;
    $ptr_addr_0_be = $add_ptr10;
    label = 30;
    break;
   case 11:
    $add_ptr12 = $ptr_addr_049 + 4 | 0;
    $ptr_addr_0_be = $add_ptr12;
    label = 30;
    break;
   case 12:
    $cmp14 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp14) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add_ptr17 = $ptr_addr_049 + 2 | 0;
    $call18 = _big2_scanRef($enc, $add_ptr17, $end, $nextTokPtr) | 0;
    $retval_0 = $call18;
    label = 32;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 15:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 0;
    label = 32;
    break;
   case 16:
    $cmp22 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp22) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add_ptr25 = $ptr_addr_049 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr25;
    $retval_0 = 7;
    label = 32;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 19:
    $cmp28 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp28) {
      label = 20;
      break;
    } else {
      label = 25;
      break;
    }
   case 20:
    $add_ptr31 = $ptr_addr_049 + 2 | 0;
    $cmp32 = ($add_ptr31 | 0) == ($end | 0);
    if ($cmp32) {
      $retval_0 = -3;
      label = 32;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $4 = HEAP8[$add_ptr31] | 0;
    $cmp38 = $4 << 24 >> 24 == 0;
    $arrayidx41 = $ptr_addr_049 + 3 | 0;
    $5 = HEAP8[$arrayidx41] | 0;
    if ($cmp38) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $idxprom42 = $5 & 255;
    $type43 = $enc + 72 | 0;
    $6 = $type43;
    $arrayidx44 = $6 + $idxprom42 | 0;
    $7 = HEAP8[$arrayidx44] | 0;
    $conv45 = $7 & 255;
    $cond51 = $conv45;
    label = 24;
    break;
   case 23:
    $call49 = _unicode_byte_type($4, $5) | 0;
    $cond51 = $call49;
    label = 24;
    break;
   case 24:
    $cmp52 = ($cond51 | 0) == 10;
    $add_ptr55 = $ptr_addr_049 + 4 | 0;
    $add_ptr55_add_ptr31 = $cmp52 ? $add_ptr55 : $add_ptr31;
    HEAP32[$nextTokPtr >> 2] = $add_ptr55_add_ptr31;
    $retval_0 = 7;
    label = 32;
    break;
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 26:
    $cmp59 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp59) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $add_ptr62 = $ptr_addr_049 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr62;
    $retval_0 = 39;
    label = 32;
    break;
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 32;
    break;
   case 29:
    $add_ptr64 = $ptr_addr_049 + 2 | 0;
    $ptr_addr_0_be = $add_ptr64;
    label = 30;
    break;
   case 30:
    $cmp1 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp1) {
      $ptr_addr_0_lcssa = $ptr_addr_0_be;
      label = 31;
      break;
    } else {
      $ptr_addr_049 = $ptr_addr_0_be;
      label = 5;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0_lcssa;
    $retval_0 = 6;
    label = 32;
    break;
   case 32:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_entityValueTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $cmp149 = 0, $type = 0, $0 = 0, $ptr_addr_050 = 0, $1 = 0, $cmp2 = 0, $arrayidx4 = 0, $2 = 0, $idxprom = 0, $arrayidx5 = 0, $3 = 0, $conv6 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr10 = 0, $add_ptr12 = 0, $cmp14 = 0, $add_ptr17 = 0, $call18 = 0, $cmp21 = 0, $add_ptr24 = 0, $call25 = 0, $cmp26 = 0, $cond31 = 0, $cmp34 = 0, $add_ptr37 = 0, $cmp40 = 0, $add_ptr43 = 0, $cmp44 = 0, $4 = 0, $cmp50 = 0, $arrayidx53 = 0, $5 = 0, $idxprom54 = 0, $type55 = 0, $6 = 0, $arrayidx56 = 0, $7 = 0, $conv57 = 0, $call61 = 0, $cond63 = 0, $cmp64 = 0, $add_ptr67 = 0, $add_ptr67_add_ptr43 = 0, $add_ptr70 = 0, $ptr_addr_0_be = 0, $cmp1 = 0, $ptr_addr_0_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 31;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp149 = ($ptr | 0) == ($end | 0);
    if ($cmp149) {
      $ptr_addr_0_lcssa = $ptr;
      label = 30;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_050 = $ptr;
    label = 5;
    break;
   case 5:
    $1 = HEAP8[$ptr_addr_050] | 0;
    $cmp2 = $1 << 24 >> 24 == 0;
    $arrayidx4 = $ptr_addr_050 + 1 | 0;
    $2 = HEAP8[$arrayidx4] | 0;
    if ($cmp2) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $idxprom = $2 & 255;
    $arrayidx5 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx5] | 0;
    $conv6 = $3 & 255;
    $cond = $conv6;
    label = 8;
    break;
   case 7:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 8;
    break;
   case 8:
    if (($cond | 0) == 5) {
      label = 9;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 11;
      break;
    } else if (($cond | 0) == 3) {
      label = 12;
      break;
    } else if (($cond | 0) == 30) {
      label = 15;
      break;
    } else if (($cond | 0) == 10) {
      label = 18;
      break;
    } else if (($cond | 0) == 9) {
      label = 21;
      break;
    } else {
      label = 28;
      break;
    }
   case 9:
    $add_ptr = $ptr_addr_050 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 29;
    break;
   case 10:
    $add_ptr10 = $ptr_addr_050 + 3 | 0;
    $ptr_addr_0_be = $add_ptr10;
    label = 29;
    break;
   case 11:
    $add_ptr12 = $ptr_addr_050 + 4 | 0;
    $ptr_addr_0_be = $add_ptr12;
    label = 29;
    break;
   case 12:
    $cmp14 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp14) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add_ptr17 = $ptr_addr_050 + 2 | 0;
    $call18 = _big2_scanRef($enc, $add_ptr17, $end, $nextTokPtr) | 0;
    $retval_0 = $call18;
    label = 31;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 15:
    $cmp21 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp21) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $add_ptr24 = $ptr_addr_050 + 2 | 0;
    $call25 = _big2_scanPercent($enc, $add_ptr24, $end, $nextTokPtr) | 0;
    $cmp26 = ($call25 | 0) == 22;
    $cond31 = $cmp26 ? 0 : $call25;
    $retval_0 = $cond31;
    label = 31;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 18:
    $cmp34 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp34) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $add_ptr37 = $ptr_addr_050 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr37;
    $retval_0 = 7;
    label = 31;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 21:
    $cmp40 = ($ptr_addr_050 | 0) == ($ptr | 0);
    if ($cmp40) {
      label = 22;
      break;
    } else {
      label = 27;
      break;
    }
   case 22:
    $add_ptr43 = $ptr_addr_050 + 2 | 0;
    $cmp44 = ($add_ptr43 | 0) == ($end | 0);
    if ($cmp44) {
      $retval_0 = -3;
      label = 31;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $4 = HEAP8[$add_ptr43] | 0;
    $cmp50 = $4 << 24 >> 24 == 0;
    $arrayidx53 = $ptr_addr_050 + 3 | 0;
    $5 = HEAP8[$arrayidx53] | 0;
    if ($cmp50) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $idxprom54 = $5 & 255;
    $type55 = $enc + 72 | 0;
    $6 = $type55;
    $arrayidx56 = $6 + $idxprom54 | 0;
    $7 = HEAP8[$arrayidx56] | 0;
    $conv57 = $7 & 255;
    $cond63 = $conv57;
    label = 26;
    break;
   case 25:
    $call61 = _unicode_byte_type($4, $5) | 0;
    $cond63 = $call61;
    label = 26;
    break;
   case 26:
    $cmp64 = ($cond63 | 0) == 10;
    $add_ptr67 = $ptr_addr_050 + 4 | 0;
    $add_ptr67_add_ptr43 = $cmp64 ? $add_ptr67 : $add_ptr43;
    HEAP32[$nextTokPtr >> 2] = $add_ptr67_add_ptr43;
    $retval_0 = 7;
    label = 31;
    break;
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_050;
    $retval_0 = 6;
    label = 31;
    break;
   case 28:
    $add_ptr70 = $ptr_addr_050 + 2 | 0;
    $ptr_addr_0_be = $add_ptr70;
    label = 29;
    break;
   case 29:
    $cmp1 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp1) {
      $ptr_addr_0_lcssa = $ptr_addr_0_be;
      label = 30;
      break;
    } else {
      $ptr_addr_050 = $ptr_addr_0_be;
      label = 5;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0_lcssa;
    $retval_0 = 6;
    label = 31;
    break;
   case 31:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_nameMatchesAscii($enc, $ptr1, $end1, $ptr2) {
  $enc = $enc | 0;
  $ptr1 = $ptr1 | 0;
  $end1 = $end1 | 0;
  $ptr2 = $ptr2 | 0;
  var $0 = 0, $tobool7 = 0, $cmp8 = 0, $cmp11 = 0, $1 = 0, $ptr2_addr_010 = 0, $ptr1_addr_09 = 0, $2 = 0, $cmp1 = 0, $arrayidx3 = 0, $3 = 0, $cmp6 = 0, $add_ptr = 0, $incdec_ptr = 0, $4 = 0, $tobool = 0, $cmp = 0, $cmp_lcssa = 0, $conv11 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$ptr2] | 0;
    $tobool7 = $0 << 24 >> 24 == 0;
    $cmp8 = ($ptr1 | 0) == ($end1 | 0);
    if ($tobool7) {
      $cmp_lcssa = $cmp8;
      label = 7;
      break;
    } else {
      $ptr1_addr_09 = $ptr1;
      $ptr2_addr_010 = $ptr2;
      $1 = $0;
      $cmp11 = $cmp8;
      label = 3;
      break;
    }
   case 3:
    if ($cmp11) {
      $retval_0 = 0;
      label = 8;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP8[$ptr1_addr_09] | 0;
    $cmp1 = $2 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 8;
      break;
    }
   case 5:
    $arrayidx3 = $ptr1_addr_09 + 1 | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $cmp6 = $3 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 8;
      break;
    }
   case 6:
    $add_ptr = $ptr1_addr_09 + 2 | 0;
    $incdec_ptr = $ptr2_addr_010 + 1 | 0;
    $4 = HEAP8[$incdec_ptr] | 0;
    $tobool = $4 << 24 >> 24 == 0;
    $cmp = ($add_ptr | 0) == ($end1 | 0);
    if ($tobool) {
      $cmp_lcssa = $cmp;
      label = 7;
      break;
    } else {
      $ptr1_addr_09 = $add_ptr;
      $ptr2_addr_010 = $incdec_ptr;
      $1 = $4;
      $cmp11 = $cmp;
      label = 3;
      break;
    }
   case 7:
    $conv11 = $cmp_lcssa & 1;
    $retval_0 = $conv11;
    label = 8;
    break;
   case 8:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_predefinedEntityName($enc, $ptr, $end) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $div = 0, $add_ptr = 0, $0 = 0, $cmp = 0, $arrayidx3 = 0, $1 = 0, $cmp5 = 0, $2 = 0, $cmp9 = 0, $arrayidx11 = 0, $3 = 0, $conv12 = 0, $4 = 0, $cmp18 = 0, $arrayidx21 = 0, $5 = 0, $cmp23 = 0, $add_ptr26 = 0, $6 = 0, $cmp29 = 0, $arrayidx32 = 0, $7 = 0, $cmp34 = 0, $add_ptr37 = 0, $8 = 0, $cmp40 = 0, $arrayidx43 = 0, $9 = 0, $cmp45 = 0, $10 = 0, $cmp54 = 0, $arrayidx57 = 0, $11 = 0, $conv58 = 0, $add_ptr63 = 0, $12 = 0, $cmp66 = 0, $arrayidx69 = 0, $13 = 0, $cmp71 = 0, $add_ptr74 = 0, $14 = 0, $cmp77 = 0, $arrayidx80 = 0, $15 = 0, $cmp82 = 0, $add_ptr85 = 0, $16 = 0, $cmp88 = 0, $arrayidx91 = 0, $17 = 0, $cmp93 = 0, $add_ptr100 = 0, $18 = 0, $cmp103 = 0, $arrayidx106 = 0, $19 = 0, $cmp108 = 0, $add_ptr111 = 0, $20 = 0, $cmp114 = 0, $arrayidx117 = 0, $21 = 0, $cmp119 = 0, $add_ptr122 = 0, $22 = 0, $cmp125 = 0, $arrayidx128 = 0, $23 = 0, $cmp130 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $div = ($sub_ptr_sub | 0) / 2 & -1;
    if (($div | 0) == 2) {
      label = 3;
      break;
    } else if (($div | 0) == 3) {
      label = 8;
      break;
    } else if (($div | 0) == 4) {
      label = 14;
      break;
    } else {
      label = 28;
      break;
    }
   case 3:
    $add_ptr = $ptr + 2 | 0;
    $0 = HEAP8[$add_ptr] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 28;
      break;
    }
   case 4:
    $arrayidx3 = $ptr + 3 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    $cmp5 = $1 << 24 >> 24 == 116;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 28;
      break;
    }
   case 5:
    $2 = HEAP8[$ptr] | 0;
    $cmp9 = $2 << 24 >> 24 == 0;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      label = 28;
      break;
    }
   case 6:
    $arrayidx11 = $ptr + 1 | 0;
    $3 = HEAP8[$arrayidx11] | 0;
    $conv12 = $3 << 24 >> 24;
    if (($conv12 | 0) == 103) {
      label = 7;
      break;
    } else if (($conv12 | 0) == 108) {
      $retval_0 = 60;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 7:
    $retval_0 = 62;
    label = 29;
    break;
   case 8:
    $4 = HEAP8[$ptr] | 0;
    $cmp18 = $4 << 24 >> 24 == 0;
    if ($cmp18) {
      label = 9;
      break;
    } else {
      label = 28;
      break;
    }
   case 9:
    $arrayidx21 = $ptr + 1 | 0;
    $5 = HEAP8[$arrayidx21] | 0;
    $cmp23 = $5 << 24 >> 24 == 97;
    if ($cmp23) {
      label = 10;
      break;
    } else {
      label = 28;
      break;
    }
   case 10:
    $add_ptr26 = $ptr + 2 | 0;
    $6 = HEAP8[$add_ptr26] | 0;
    $cmp29 = $6 << 24 >> 24 == 0;
    if ($cmp29) {
      label = 11;
      break;
    } else {
      label = 28;
      break;
    }
   case 11:
    $arrayidx32 = $ptr + 3 | 0;
    $7 = HEAP8[$arrayidx32] | 0;
    $cmp34 = $7 << 24 >> 24 == 109;
    if ($cmp34) {
      label = 12;
      break;
    } else {
      label = 28;
      break;
    }
   case 12:
    $add_ptr37 = $ptr + 4 | 0;
    $8 = HEAP8[$add_ptr37] | 0;
    $cmp40 = $8 << 24 >> 24 == 0;
    if ($cmp40) {
      label = 13;
      break;
    } else {
      label = 28;
      break;
    }
   case 13:
    $arrayidx43 = $ptr + 5 | 0;
    $9 = HEAP8[$arrayidx43] | 0;
    $cmp45 = $9 << 24 >> 24 == 112;
    if ($cmp45) {
      $retval_0 = 38;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 14:
    $10 = HEAP8[$ptr] | 0;
    $cmp54 = $10 << 24 >> 24 == 0;
    if ($cmp54) {
      label = 15;
      break;
    } else {
      label = 28;
      break;
    }
   case 15:
    $arrayidx57 = $ptr + 1 | 0;
    $11 = HEAP8[$arrayidx57] | 0;
    $conv58 = $11 << 24 >> 24;
    if (($conv58 | 0) == 113) {
      label = 16;
      break;
    } else if (($conv58 | 0) == 97) {
      label = 22;
      break;
    } else {
      label = 28;
      break;
    }
   case 16:
    $add_ptr63 = $ptr + 2 | 0;
    $12 = HEAP8[$add_ptr63] | 0;
    $cmp66 = $12 << 24 >> 24 == 0;
    if ($cmp66) {
      label = 17;
      break;
    } else {
      label = 28;
      break;
    }
   case 17:
    $arrayidx69 = $ptr + 3 | 0;
    $13 = HEAP8[$arrayidx69] | 0;
    $cmp71 = $13 << 24 >> 24 == 117;
    if ($cmp71) {
      label = 18;
      break;
    } else {
      label = 28;
      break;
    }
   case 18:
    $add_ptr74 = $ptr + 4 | 0;
    $14 = HEAP8[$add_ptr74] | 0;
    $cmp77 = $14 << 24 >> 24 == 0;
    if ($cmp77) {
      label = 19;
      break;
    } else {
      label = 28;
      break;
    }
   case 19:
    $arrayidx80 = $ptr + 5 | 0;
    $15 = HEAP8[$arrayidx80] | 0;
    $cmp82 = $15 << 24 >> 24 == 111;
    if ($cmp82) {
      label = 20;
      break;
    } else {
      label = 28;
      break;
    }
   case 20:
    $add_ptr85 = $ptr + 6 | 0;
    $16 = HEAP8[$add_ptr85] | 0;
    $cmp88 = $16 << 24 >> 24 == 0;
    if ($cmp88) {
      label = 21;
      break;
    } else {
      label = 28;
      break;
    }
   case 21:
    $arrayidx91 = $ptr + 7 | 0;
    $17 = HEAP8[$arrayidx91] | 0;
    $cmp93 = $17 << 24 >> 24 == 116;
    if ($cmp93) {
      $retval_0 = 34;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 22:
    $add_ptr100 = $ptr + 2 | 0;
    $18 = HEAP8[$add_ptr100] | 0;
    $cmp103 = $18 << 24 >> 24 == 0;
    if ($cmp103) {
      label = 23;
      break;
    } else {
      label = 28;
      break;
    }
   case 23:
    $arrayidx106 = $ptr + 3 | 0;
    $19 = HEAP8[$arrayidx106] | 0;
    $cmp108 = $19 << 24 >> 24 == 112;
    if ($cmp108) {
      label = 24;
      break;
    } else {
      label = 28;
      break;
    }
   case 24:
    $add_ptr111 = $ptr + 4 | 0;
    $20 = HEAP8[$add_ptr111] | 0;
    $cmp114 = $20 << 24 >> 24 == 0;
    if ($cmp114) {
      label = 25;
      break;
    } else {
      label = 28;
      break;
    }
   case 25:
    $arrayidx117 = $ptr + 5 | 0;
    $21 = HEAP8[$arrayidx117] | 0;
    $cmp119 = $21 << 24 >> 24 == 111;
    if ($cmp119) {
      label = 26;
      break;
    } else {
      label = 28;
      break;
    }
   case 26:
    $add_ptr122 = $ptr + 6 | 0;
    $22 = HEAP8[$add_ptr122] | 0;
    $cmp125 = $22 << 24 >> 24 == 0;
    if ($cmp125) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $arrayidx128 = $ptr + 7 | 0;
    $23 = HEAP8[$arrayidx128] | 0;
    $cmp130 = $23 << 24 >> 24 == 115;
    if ($cmp130) {
      $retval_0 = 39;
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $retval_0 = 0;
    label = 29;
    break;
   case 29:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_sameName($enc, $ptr1, $ptr2) {
  $enc = $enc | 0;
  $ptr1 = $ptr1 | 0;
  $ptr2 = $ptr2 | 0;
  var $type = 0, $0 = 0, $ptr1_addr_0 = 0, $ptr2_addr_0 = 0, $1 = 0, $cmp = 0, $arrayidx2 = 0, $2 = 0, $idxprom = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $4 = 0, $incdec_ptr8 = 0, $5 = 0, $cmp10 = 0, $ptr1_addr_1 = 0, $ptr2_addr_1 = 0, $incdec_ptr13 = 0, $6 = 0, $incdec_ptr15 = 0, $7 = 0, $cmp17 = 0, $ptr1_addr_2 = 0, $ptr2_addr_2 = 0, $8 = 0, $9 = 0, $cmp26 = 0, $incdec_ptr24 = 0, $incdec_ptr22 = 0, $10 = 0, $11 = 0, $cmp34 = 0, $12 = 0, $13 = 0, $cmp43 = 0, $incdec_ptr39 = 0, $14 = 0, $15 = 0, $cmp51 = 0, $ptr1_addr_0_pn = 0, $ptr2_addr_0_pn = 0, $ptr2_addr_0_be = 0, $ptr1_addr_0_be = 0, $16 = 0, $cmp57 = 0, $arrayidx60 = 0, $17 = 0, $idxprom61 = 0, $type62 = 0, $18 = 0, $arrayidx63 = 0, $19 = 0, $conv64 = 0, $call68 = 0, $cond70 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr2_addr_0 = $ptr2;
    $ptr1_addr_0 = $ptr1;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$ptr1_addr_0] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $arrayidx2 = $ptr1_addr_0 + 1 | 0;
    $2 = HEAP8[$arrayidx2] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $2 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 7) {
      label = 7;
      break;
    } else if (($cond | 0) == 6) {
      $ptr2_addr_1 = $ptr2_addr_0;
      $ptr1_addr_1 = $ptr1_addr_0;
      label = 8;
      break;
    } else if (($cond | 0) == 5) {
      $ptr2_addr_2 = $ptr2_addr_0;
      $ptr1_addr_2 = $ptr1_addr_0;
      label = 9;
      break;
    } else if (($cond | 0) == 29 | ($cond | 0) == 22 | ($cond | 0) == 24 | ($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 11;
      break;
    } else {
      label = 14;
      break;
    }
   case 7:
    $4 = HEAP8[$ptr1_addr_0] | 0;
    $incdec_ptr8 = $ptr2_addr_0 + 1 | 0;
    $5 = HEAP8[$ptr2_addr_0] | 0;
    $cmp10 = $4 << 24 >> 24 == $5 << 24 >> 24;
    if ($cmp10) {
      $ptr2_addr_1 = $incdec_ptr8;
      $ptr1_addr_1 = $arrayidx2;
      label = 8;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 8:
    $incdec_ptr13 = $ptr1_addr_1 + 1 | 0;
    $6 = HEAP8[$ptr1_addr_1] | 0;
    $incdec_ptr15 = $ptr2_addr_1 + 1 | 0;
    $7 = HEAP8[$ptr2_addr_1] | 0;
    $cmp17 = $6 << 24 >> 24 == $7 << 24 >> 24;
    if ($cmp17) {
      $ptr2_addr_2 = $incdec_ptr15;
      $ptr1_addr_2 = $incdec_ptr13;
      label = 9;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 9:
    $8 = HEAP8[$ptr1_addr_2] | 0;
    $9 = HEAP8[$ptr2_addr_2] | 0;
    $cmp26 = $8 << 24 >> 24 == $9 << 24 >> 24;
    if ($cmp26) {
      label = 10;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 10:
    $incdec_ptr24 = $ptr2_addr_2 + 1 | 0;
    $incdec_ptr22 = $ptr1_addr_2 + 1 | 0;
    $10 = HEAP8[$incdec_ptr22] | 0;
    $11 = HEAP8[$incdec_ptr24] | 0;
    $cmp34 = $10 << 24 >> 24 == $11 << 24 >> 24;
    if ($cmp34) {
      $ptr2_addr_0_pn = $ptr2_addr_2;
      $ptr1_addr_0_pn = $ptr1_addr_2;
      label = 13;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 11:
    $12 = HEAP8[$ptr2_addr_0] | 0;
    $13 = HEAP8[$ptr1_addr_0] | 0;
    $cmp43 = $12 << 24 >> 24 == $13 << 24 >> 24;
    if ($cmp43) {
      label = 12;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 12:
    $incdec_ptr39 = $ptr2_addr_0 + 1 | 0;
    $14 = HEAP8[$incdec_ptr39] | 0;
    $15 = HEAP8[$arrayidx2] | 0;
    $cmp51 = $14 << 24 >> 24 == $15 << 24 >> 24;
    if ($cmp51) {
      $ptr2_addr_0_pn = $ptr2_addr_0;
      $ptr1_addr_0_pn = $ptr1_addr_0;
      label = 13;
      break;
    } else {
      $retval_0 = 0;
      label = 19;
      break;
    }
   case 13:
    $ptr2_addr_0_be = $ptr2_addr_0_pn + 2 | 0;
    $ptr1_addr_0_be = $ptr1_addr_0_pn + 2 | 0;
    $ptr2_addr_0 = $ptr2_addr_0_be;
    $ptr1_addr_0 = $ptr1_addr_0_be;
    label = 3;
    break;
   case 14:
    $16 = HEAP8[$ptr2_addr_0] | 0;
    $cmp57 = $16 << 24 >> 24 == 0;
    $arrayidx60 = $ptr2_addr_0 + 1 | 0;
    $17 = HEAP8[$arrayidx60] | 0;
    if ($cmp57) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $idxprom61 = $17 & 255;
    $type62 = $enc + 72 | 0;
    $18 = $type62;
    $arrayidx63 = $18 + $idxprom61 | 0;
    $19 = HEAP8[$arrayidx63] | 0;
    $conv64 = $19 & 255;
    $cond70 = $conv64;
    label = 17;
    break;
   case 16:
    $call68 = _unicode_byte_type($16, $17) | 0;
    $cond70 = $call68;
    label = 17;
    break;
   case 17:
    if (($cond70 | 0) == 5 | ($cond70 | 0) == 6 | ($cond70 | 0) == 7 | ($cond70 | 0) == 29 | ($cond70 | 0) == 22 | ($cond70 | 0) == 24 | ($cond70 | 0) == 25 | ($cond70 | 0) == 26 | ($cond70 | 0) == 27) {
      $retval_0 = 0;
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $retval_0 = 1;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_nameLength($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $type = 0, $0 = 0, $ptr_addr_0 = 0, $1 = 0, $cmp = 0, $arrayidx2 = 0, $2 = 0, $idxprom = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr8 = 0, $add_ptr10 = 0, $add_ptr12 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$ptr_addr_0] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $arrayidx2 = $ptr_addr_0 + 1 | 0;
    $2 = HEAP8[$arrayidx2] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $2 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 5) {
      label = 7;
      break;
    } else if (($cond | 0) == 6) {
      label = 8;
      break;
    } else if (($cond | 0) == 7) {
      label = 9;
      break;
    } else if (($cond | 0) == 29 | ($cond | 0) == 22 | ($cond | 0) == 24 | ($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $add_ptr = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr;
    label = 3;
    break;
   case 8:
    $add_ptr8 = $ptr_addr_0 + 3 | 0;
    $ptr_addr_0 = $add_ptr8;
    label = 3;
    break;
   case 9:
    $add_ptr10 = $ptr_addr_0 + 4 | 0;
    $ptr_addr_0 = $add_ptr10;
    label = 3;
    break;
   case 10:
    $add_ptr12 = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr12;
    label = 3;
    break;
   case 11:
    $sub_ptr_lhs_cast = $ptr_addr_0;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    return $sub_ptr_sub | 0;
  }
  return 0;
}
function _big2_skipS($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $type = 0, $0 = 0, $ptr_addr_0 = 0, $1 = 0, $cmp = 0, $arrayidx2 = 0, $2 = 0, $idxprom = 0, $arrayidx3 = 0, $3 = 0, $conv4 = 0, $call = 0, $cond = 0, $add_ptr = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$ptr_addr_0] | 0;
    $cmp = $1 << 24 >> 24 == 0;
    $arrayidx2 = $ptr_addr_0 + 1 | 0;
    $2 = HEAP8[$arrayidx2] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $2 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    $conv4 = $3 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 10 | ($cond | 0) == 9 | ($cond | 0) == 21) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $add_ptr = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr;
    label = 3;
    break;
   case 8:
    return $ptr_addr_0 | 0;
  }
  return 0;
}
function _big2_getAtts($enc, $ptr, $attsMax, $atts) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $attsMax = $attsMax | 0;
  $atts = $atts | 0;
  var $type = 0, $0 = 0, $type163 = 0, $1 = 0, $ptr_pn = 0, $state_0 = 0, $nAtts_0 = 0, $open_0 = 0, $ptr_addr_0 = 0, $2 = 0, $cmp = 0, $arrayidx2 = 0, $3 = 0, $idxprom = 0, $arrayidx3 = 0, $4 = 0, $conv4 = 0, $call = 0, $cond = 0, $cmp7 = 0, $cmp9 = 0, $name = 0, $normalized = 0, $cmp17 = 0, $cmp20 = 0, $name24 = 0, $normalized26 = 0, $cmp31 = 0, $cmp34 = 0, $name38 = 0, $normalized40 = 0, $state_3 = 0, $add_ptr43 = 0, $cmp45 = 0, $cmp48 = 0, $name52 = 0, $normalized54 = 0, $cmp58 = 0, $cmp61 = 0, $add_ptr64 = 0, $valuePtr = 0, $cmp67 = 0, $cmp70 = 0, $valueEnd = 0, $inc = 0, $cmp78 = 0, $cmp81 = 0, $add_ptr84 = 0, $valuePtr86 = 0, $cmp89 = 0, $cmp92 = 0, $valueEnd96 = 0, $inc98 = 0, $cmp102 = 0, $normalized106 = 0, $cmp109 = 0, $cmp113 = 0, $cmp115 = 0, $or_cond = 0, $normalized119 = 0, $5 = 0, $tobool = 0, $valuePtr123 = 0, $6 = 0, $cmp124 = 0, $7 = 0, $cmp128 = 0, $8 = 0, $phitmp = 0, $add_ptr139 = 0, $9 = 0, $cmp142 = 0, $arrayidx146 = 0, $10 = 0, $phitmp93 = 0, $_pr = 0, $cmp157 = 0, $arrayidx161 = 0, $11 = 0, $idxprom162 = 0, $arrayidx164 = 0, $12 = 0, $conv165 = 0, $13 = 0, $14 = 0, $call171 = 0, $cond173 = 0, $cmp174 = 0, $cmp182 = 0, $cmp186 = 0, $cmp189 = 0, $or_cond94 = 0, $normalized193 = 0, $cmp197 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $type163 = $enc + 72 | 0;
    $1 = $type163;
    $open_0 = 0;
    $nAtts_0 = 0;
    $state_0 = 1;
    $ptr_pn = $ptr;
    label = 3;
    break;
   case 3:
    $ptr_addr_0 = $ptr_pn + 2 | 0;
    $2 = HEAP8[$ptr_addr_0] | 0;
    $cmp = $2 << 24 >> 24 == 0;
    $arrayidx2 = $ptr_pn + 3 | 0;
    $3 = HEAP8[$arrayidx2] | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $3 & 255;
    $arrayidx3 = $0 + $idxprom | 0;
    $4 = HEAP8[$arrayidx3] | 0;
    $conv4 = $4 & 255;
    $cond = $conv4;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($2, $3) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 5) {
      label = 7;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 13;
      break;
    } else if (($cond | 0) == 29 | ($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 17;
      break;
    } else if (($cond | 0) == 12) {
      label = 20;
      break;
    } else if (($cond | 0) == 13) {
      label = 27;
      break;
    } else if (($cond | 0) == 3) {
      label = 34;
      break;
    } else if (($cond | 0) == 21) {
      label = 36;
      break;
    } else if (($cond | 0) == 9 | ($cond | 0) == 10) {
      label = 49;
      break;
    } else if (($cond | 0) == 11 | ($cond | 0) == 17) {
      label = 52;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 7:
    $cmp7 = ($state_0 | 0) == 0;
    if ($cmp7) {
      label = 8;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 8:
    $cmp9 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp9) {
      label = 9;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 9:
    $name = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name >> 2] = $ptr_addr_0;
    $normalized = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 10:
    $cmp17 = ($state_0 | 0) == 0;
    if ($cmp17) {
      label = 11;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $arrayidx2;
      label = 3;
      break;
    }
   case 11:
    $cmp20 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp20) {
      label = 12;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $arrayidx2;
      label = 3;
      break;
    }
   case 12:
    $name24 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name24 >> 2] = $ptr_addr_0;
    $normalized26 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized26] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $arrayidx2;
    label = 3;
    break;
   case 13:
    $cmp31 = ($state_0 | 0) == 0;
    if ($cmp31) {
      label = 14;
      break;
    } else {
      $state_3 = $state_0;
      label = 16;
      break;
    }
   case 14:
    $cmp34 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp34) {
      label = 15;
      break;
    } else {
      $state_3 = 1;
      label = 16;
      break;
    }
   case 15:
    $name38 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name38 >> 2] = $ptr_addr_0;
    $normalized40 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized40] = 1;
    $state_3 = 1;
    label = 16;
    break;
   case 16:
    $add_ptr43 = $ptr_pn + 4 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_3;
    $ptr_pn = $add_ptr43;
    label = 3;
    break;
   case 17:
    $cmp45 = ($state_0 | 0) == 0;
    if ($cmp45) {
      label = 18;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 18:
    $cmp48 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp48) {
      label = 19;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 19:
    $name52 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name52 >> 2] = $ptr_addr_0;
    $normalized54 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized54] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 20:
    $cmp58 = ($state_0 | 0) == 2;
    if ($cmp58) {
      label = 23;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $cmp61 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp61) {
      label = 22;
      break;
    } else {
      $open_0 = 12;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 22:
    $add_ptr64 = $ptr_pn + 4 | 0;
    $valuePtr = $atts + ($nAtts_0 << 4) + 4 | 0;
    HEAP32[$valuePtr >> 2] = $add_ptr64;
    $open_0 = 12;
    $nAtts_0 = $nAtts_0;
    $state_0 = 2;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 23:
    $cmp67 = ($open_0 | 0) == 12;
    if ($cmp67) {
      label = 24;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 24:
    $cmp70 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp70) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $valueEnd = $atts + ($nAtts_0 << 4) + 8 | 0;
    HEAP32[$valueEnd >> 2] = $ptr_addr_0;
    label = 26;
    break;
   case 26:
    $inc = $nAtts_0 + 1 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $inc;
    $state_0 = 0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 27:
    $cmp78 = ($state_0 | 0) == 2;
    if ($cmp78) {
      label = 30;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $cmp81 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp81) {
      label = 29;
      break;
    } else {
      $open_0 = 13;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 29:
    $add_ptr84 = $ptr_pn + 4 | 0;
    $valuePtr86 = $atts + ($nAtts_0 << 4) + 4 | 0;
    HEAP32[$valuePtr86 >> 2] = $add_ptr84;
    $open_0 = 13;
    $nAtts_0 = $nAtts_0;
    $state_0 = 2;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 30:
    $cmp89 = ($open_0 | 0) == 13;
    if ($cmp89) {
      label = 31;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 31:
    $cmp92 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp92) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 32:
    $valueEnd96 = $atts + ($nAtts_0 << 4) + 8 | 0;
    HEAP32[$valueEnd96 >> 2] = $ptr_addr_0;
    label = 33;
    break;
   case 33:
    $inc98 = $nAtts_0 + 1 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $inc98;
    $state_0 = 0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 34:
    $cmp102 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp102) {
      label = 35;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 35:
    $normalized106 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized106] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 36:
    $cmp109 = ($state_0 | 0) == 1;
    if ($cmp109) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $cmp113 = ($state_0 | 0) == 2;
    $cmp115 = ($nAtts_0 | 0) < ($attsMax | 0);
    $or_cond = $cmp113 & $cmp115;
    if ($or_cond) {
      label = 38;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 38:
    $normalized119 = $atts + ($nAtts_0 << 4) + 12 | 0;
    $5 = HEAP8[$normalized119] | 0;
    $tobool = $5 << 24 >> 24 == 0;
    if ($tobool) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $valuePtr123 = $atts + ($nAtts_0 << 4) + 4 | 0;
    $6 = HEAP32[$valuePtr123 >> 2] | 0;
    $cmp124 = ($ptr_addr_0 | 0) == ($6 | 0);
    if ($cmp124) {
      label = 48;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $7 = HEAP8[$ptr_addr_0] | 0;
    $cmp128 = $7 << 24 >> 24 == 0;
    if ($cmp128) {
      label = 41;
      break;
    } else {
      label = 48;
      break;
    }
   case 41:
    $8 = HEAP8[$arrayidx2] | 0;
    $phitmp = $8 << 24 >> 24 == 32;
    if ($phitmp) {
      label = 42;
      break;
    } else {
      label = 48;
      break;
    }
   case 42:
    $add_ptr139 = $ptr_pn + 4 | 0;
    $9 = HEAP8[$add_ptr139] | 0;
    $cmp142 = $9 << 24 >> 24 == 0;
    $arrayidx146 = $ptr_pn + 5 | 0;
    $10 = HEAP8[$arrayidx146] | 0;
    if ($cmp142) {
      label = 43;
      break;
    } else {
      $14 = $9;
      $13 = $10;
      label = 46;
      break;
    }
   case 43:
    $phitmp93 = $10 << 24 >> 24 == 32;
    if ($phitmp93) {
      label = 48;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $_pr = HEAP8[$add_ptr139] | 0;
    $cmp157 = $_pr << 24 >> 24 == 0;
    $arrayidx161 = $ptr_pn + 5 | 0;
    $11 = HEAP8[$arrayidx161] | 0;
    if ($cmp157) {
      label = 45;
      break;
    } else {
      $14 = $_pr;
      $13 = $11;
      label = 46;
      break;
    }
   case 45:
    $idxprom162 = $11 & 255;
    $arrayidx164 = $1 + $idxprom162 | 0;
    $12 = HEAP8[$arrayidx164] | 0;
    $conv165 = $12 & 255;
    $cond173 = $conv165;
    label = 47;
    break;
   case 46:
    $call171 = _unicode_byte_type($14, $13) | 0;
    $cond173 = $call171;
    label = 47;
    break;
   case 47:
    $cmp174 = ($cond173 | 0) == ($open_0 | 0);
    if ($cmp174) {
      label = 48;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 48:
    HEAP8[$normalized119] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 49:
    $cmp182 = ($state_0 | 0) == 1;
    if ($cmp182) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $cmp186 = ($state_0 | 0) == 2;
    $cmp189 = ($nAtts_0 | 0) < ($attsMax | 0);
    $or_cond94 = $cmp186 & $cmp189;
    if ($or_cond94) {
      label = 51;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 51:
    $normalized193 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized193] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 52:
    $cmp197 = ($state_0 | 0) == 2;
    if ($cmp197) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    return $nAtts_0 | 0;
  }
  return 0;
}
function _big2_charRefNumber($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $add_ptr = 0, $0 = 0, $cmp = 0, $arrayidx2 = 0, $1 = 0, $cmp4 = 0, $add_ptr6 = 0, $result_0 = 0, $ptr_addr_0 = 0, $2 = 0, $cmp9 = 0, $arrayidx11 = 0, $3 = 0, $phitmp28 = 0, $_pr = 0, $cmp17 = 0, $arrayidx19 = 0, $4 = 0, $conv20 = 0, $shl = 0, $sub = 0, $or = 0, $shl22 = 0, $add = 0, $add24 = 0, $shl26 = 0, $add28 = 0, $add29 = 0, $result_1 = 0, $cmp30 = 0, $add_ptr33 = 0, $result_2 = 0, $ptr_addr_1 = 0, $5 = 0, $cmp37 = 0, $arrayidx40 = 0, $6 = 0, $phitmp = 0, $_pr30 = 0, $cmp50 = 0, $arrayidx53 = 0, $7 = 0, $conv54 = 0, $phitmp27 = 0, $cond57 = 0, $mul = 0, $add59 = 0, $cmp60 = 0, $add_ptr65 = 0, $result_3 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr = $ptr + 4 | 0;
    $0 = HEAP8[$add_ptr] | 0;
    $cmp = $0 << 24 >> 24 == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $ptr_addr_1 = $add_ptr;
      $result_2 = 0;
      label = 13;
      break;
    }
   case 3:
    $arrayidx2 = $ptr + 5 | 0;
    $1 = HEAP8[$arrayidx2] | 0;
    $cmp4 = $1 << 24 >> 24 == 120;
    if ($cmp4) {
      label = 4;
      break;
    } else {
      $ptr_addr_1 = $add_ptr;
      $result_2 = 0;
      label = 13;
      break;
    }
   case 4:
    $add_ptr6 = $ptr + 6 | 0;
    $ptr_addr_0 = $add_ptr6;
    $result_0 = 0;
    label = 5;
    break;
   case 5:
    $2 = HEAP8[$ptr_addr_0] | 0;
    $cmp9 = $2 << 24 >> 24 == 0;
    if ($cmp9) {
      label = 6;
      break;
    } else {
      $result_1 = $result_0;
      label = 12;
      break;
    }
   case 6:
    $arrayidx11 = $ptr_addr_0 + 1 | 0;
    $3 = HEAP8[$arrayidx11] | 0;
    $phitmp28 = $3 << 24 >> 24 == 59;
    if ($phitmp28) {
      $result_3 = $result_0;
      label = 18;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $_pr = HEAP8[$ptr_addr_0] | 0;
    $cmp17 = $_pr << 24 >> 24 == 0;
    if ($cmp17) {
      label = 8;
      break;
    } else {
      $result_1 = $result_0;
      label = 12;
      break;
    }
   case 8:
    $arrayidx19 = $ptr_addr_0 + 1 | 0;
    $4 = HEAP8[$arrayidx19] | 0;
    $conv20 = $4 << 24 >> 24;
    if (($conv20 | 0) == 48 | ($conv20 | 0) == 49 | ($conv20 | 0) == 50 | ($conv20 | 0) == 51 | ($conv20 | 0) == 52 | ($conv20 | 0) == 53 | ($conv20 | 0) == 54 | ($conv20 | 0) == 55 | ($conv20 | 0) == 56 | ($conv20 | 0) == 57) {
      label = 9;
      break;
    } else if (($conv20 | 0) == 65 | ($conv20 | 0) == 66 | ($conv20 | 0) == 67 | ($conv20 | 0) == 68 | ($conv20 | 0) == 69 | ($conv20 | 0) == 70) {
      label = 10;
      break;
    } else if (($conv20 | 0) == 97 | ($conv20 | 0) == 98 | ($conv20 | 0) == 99 | ($conv20 | 0) == 100 | ($conv20 | 0) == 101 | ($conv20 | 0) == 102) {
      label = 11;
      break;
    } else {
      $result_1 = $result_0;
      label = 12;
      break;
    }
   case 9:
    $shl = $result_0 << 4;
    $sub = $conv20 - 48 | 0;
    $or = $sub | $shl;
    $result_1 = $or;
    label = 12;
    break;
   case 10:
    $shl22 = $result_0 << 4;
    $add = $shl22 - 55 | 0;
    $add24 = $add + $conv20 | 0;
    $result_1 = $add24;
    label = 12;
    break;
   case 11:
    $shl26 = $result_0 << 4;
    $add28 = $shl26 - 87 | 0;
    $add29 = $add28 + $conv20 | 0;
    $result_1 = $add29;
    label = 12;
    break;
   case 12:
    $cmp30 = ($result_1 | 0) > 1114111;
    $add_ptr33 = $ptr_addr_0 + 2 | 0;
    if ($cmp30) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      $ptr_addr_0 = $add_ptr33;
      $result_0 = $result_1;
      label = 5;
      break;
    }
   case 13:
    $5 = HEAP8[$ptr_addr_1] | 0;
    $cmp37 = $5 << 24 >> 24 == 0;
    if ($cmp37) {
      label = 14;
      break;
    } else {
      $cond57 = -49;
      label = 17;
      break;
    }
   case 14:
    $arrayidx40 = $ptr_addr_1 + 1 | 0;
    $6 = HEAP8[$arrayidx40] | 0;
    $phitmp = $6 << 24 >> 24 == 59;
    if ($phitmp) {
      $result_3 = $result_2;
      label = 18;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $_pr30 = HEAP8[$ptr_addr_1] | 0;
    $cmp50 = $_pr30 << 24 >> 24 == 0;
    if ($cmp50) {
      label = 16;
      break;
    } else {
      $cond57 = -49;
      label = 17;
      break;
    }
   case 16:
    $arrayidx53 = $ptr_addr_1 + 1 | 0;
    $7 = HEAP8[$arrayidx53] | 0;
    $conv54 = $7 << 24 >> 24;
    $phitmp27 = $conv54 - 48 | 0;
    $cond57 = $phitmp27;
    label = 17;
    break;
   case 17:
    $mul = $result_2 * 10 & -1;
    $add59 = $cond57 + $mul | 0;
    $cmp60 = ($add59 | 0) > 1114111;
    $add_ptr65 = $ptr_addr_1 + 2 | 0;
    if ($cmp60) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      $ptr_addr_1 = $add_ptr65;
      $result_2 = $add59;
      label = 13;
      break;
    }
   case 18:
    $call = _checkCharRefNumber($result_3) | 0;
    $retval_0 = $call;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_updatePosition($enc, $ptr, $end, $pos) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $pos = $pos | 0;
  var $cmp21 = 0, $type = 0, $0 = 0, $columnNumber41 = 0, $columnNumber = 0, $lineNumber = 0, $lineNumber15 = 0, $columnNumber39 = 0, $type27 = 0, $1 = 0, $ptr_addr_022 = 0, $2 = 0, $cmp1 = 0, $arrayidx3 = 0, $3 = 0, $idxprom = 0, $arrayidx4 = 0, $4 = 0, $conv5 = 0, $call = 0, $cond = 0, $add_ptr = 0, $add_ptr9 = 0, $add_ptr11 = 0, $5 = 0, $inc = 0, $add_ptr13 = 0, $6 = 0, $inc16 = 0, $add_ptr17 = 0, $cmp18 = 0, $7 = 0, $cmp22 = 0, $arrayidx25 = 0, $8 = 0, $idxprom26 = 0, $arrayidx28 = 0, $9 = 0, $conv29 = 0, $call33 = 0, $cond35 = 0, $cmp36 = 0, $add_ptr38 = 0, $add_ptr38_add_ptr17 = 0, $ptr_addr_1 = 0, $add_ptr40 = 0, $ptr_addr_2 = 0, $10 = 0, $inc42 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp21 = $ptr >>> 0 < $end >>> 0;
    if ($cmp21) {
      label = 3;
      break;
    } else {
      label = 20;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $columnNumber41 = $pos + 4 | 0;
    $columnNumber = $pos + 4 | 0;
    $lineNumber = $pos | 0;
    $lineNumber15 = $pos | 0;
    $columnNumber39 = $pos + 4 | 0;
    $type27 = $enc + 72 | 0;
    $1 = $type27;
    $ptr_addr_022 = $ptr;
    label = 4;
    break;
   case 4:
    $2 = HEAP8[$ptr_addr_022] | 0;
    $cmp1 = $2 << 24 >> 24 == 0;
    $arrayidx3 = $ptr_addr_022 + 1 | 0;
    $3 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $3 & 255;
    $arrayidx4 = $0 + $idxprom | 0;
    $4 = HEAP8[$arrayidx4] | 0;
    $conv5 = $4 & 255;
    $cond = $conv5;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($2, $3) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 5) {
      label = 8;
      break;
    } else if (($cond | 0) == 6) {
      label = 9;
      break;
    } else if (($cond | 0) == 7) {
      label = 10;
      break;
    } else if (($cond | 0) == 10) {
      label = 11;
      break;
    } else if (($cond | 0) == 9) {
      label = 12;
      break;
    } else {
      label = 18;
      break;
    }
   case 8:
    $add_ptr = $ptr_addr_022 + 2 | 0;
    $ptr_addr_2 = $add_ptr;
    label = 19;
    break;
   case 9:
    $add_ptr9 = $ptr_addr_022 + 3 | 0;
    $ptr_addr_2 = $add_ptr9;
    label = 19;
    break;
   case 10:
    $add_ptr11 = $ptr_addr_022 + 4 | 0;
    $ptr_addr_2 = $add_ptr11;
    label = 19;
    break;
   case 11:
    HEAP32[$columnNumber >> 2] = -1;
    $5 = HEAP32[$lineNumber >> 2] | 0;
    $inc = $5 + 1 | 0;
    HEAP32[$lineNumber >> 2] = $inc;
    $add_ptr13 = $ptr_addr_022 + 2 | 0;
    $ptr_addr_2 = $add_ptr13;
    label = 19;
    break;
   case 12:
    $6 = HEAP32[$lineNumber15 >> 2] | 0;
    $inc16 = $6 + 1 | 0;
    HEAP32[$lineNumber15 >> 2] = $inc16;
    $add_ptr17 = $ptr_addr_022 + 2 | 0;
    $cmp18 = ($add_ptr17 | 0) == ($end | 0);
    if ($cmp18) {
      $ptr_addr_1 = $add_ptr17;
      label = 17;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $7 = HEAP8[$add_ptr17] | 0;
    $cmp22 = $7 << 24 >> 24 == 0;
    $arrayidx25 = $ptr_addr_022 + 3 | 0;
    $8 = HEAP8[$arrayidx25] | 0;
    if ($cmp22) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $idxprom26 = $8 & 255;
    $arrayidx28 = $1 + $idxprom26 | 0;
    $9 = HEAP8[$arrayidx28] | 0;
    $conv29 = $9 & 255;
    $cond35 = $conv29;
    label = 16;
    break;
   case 15:
    $call33 = _unicode_byte_type($7, $8) | 0;
    $cond35 = $call33;
    label = 16;
    break;
   case 16:
    $cmp36 = ($cond35 | 0) == 10;
    $add_ptr38 = $ptr_addr_022 + 4 | 0;
    $add_ptr38_add_ptr17 = $cmp36 ? $add_ptr38 : $add_ptr17;
    $ptr_addr_1 = $add_ptr38_add_ptr17;
    label = 17;
    break;
   case 17:
    HEAP32[$columnNumber39 >> 2] = -1;
    $ptr_addr_2 = $ptr_addr_1;
    label = 19;
    break;
   case 18:
    $add_ptr40 = $ptr_addr_022 + 2 | 0;
    $ptr_addr_2 = $add_ptr40;
    label = 19;
    break;
   case 19:
    $10 = HEAP32[$columnNumber41 >> 2] | 0;
    $inc42 = $10 + 1 | 0;
    HEAP32[$columnNumber41 >> 2] = $inc42;
    $cmp = $ptr_addr_2 >>> 0 < $end >>> 0;
    if ($cmp) {
      $ptr_addr_022 = $ptr_addr_2;
      label = 4;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    return;
  }
}
function _big2_toUtf8($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $cmp57 = 0, $sub_ptr_lhs_cast23 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_lhs_cast50 = 0, $from_058 = 0, $arrayidx = 0, $1 = 0, $2 = 0, $conv = 0, $cmp3 = 0, $3 = 0, $cmp5 = 0, $incdec_ptr = 0, $4 = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp10 = 0, $shr50 = 0, $shl = 0, $or = 0, $or16 = 0, $incdec_ptr18 = 0, $and = 0, $or20 = 0, $5 = 0, $incdec_ptr22 = 0, $6 = 0, $sub_ptr_rhs_cast24 = 0, $sub_ptr_sub25 = 0, $cmp26 = 0, $shr3151 = 0, $or32 = 0, $incdec_ptr34 = 0, $and36 = 0, $shl37 = 0, $shr3952 = 0, $or40 = 0, $or41 = 0, $7 = 0, $incdec_ptr43 = 0, $and45 = 0, $or46 = 0, $8 = 0, $incdec_ptr48 = 0, $9 = 0, $sub_ptr_rhs_cast51 = 0, $sub_ptr_sub52 = 0, $cmp53 = 0, $and58 = 0, $shl59 = 0, $conv60 = 0, $shr6146 = 0, $or63 = 0, $add = 0, $shr6447 = 0, $or65 = 0, $conv66 = 0, $incdec_ptr67 = 0, $shr6948 = 0, $and70 = 0, $and71 = 0, $shl72 = 0, $or73 = 0, $or74 = 0, $conv75 = 0, $10 = 0, $incdec_ptr76 = 0, $add_ptr = 0, $arrayidx77 = 0, $11 = 0, $and79 = 0, $shl80 = 0, $12 = 0, $and83 = 0, $shl84 = 0, $shr8749 = 0, $or85 = 0, $or88 = 0, $or89 = 0, $13 = 0, $incdec_ptr91 = 0, $and93 = 0, $or94 = 0, $14 = 0, $incdec_ptr96 = 0, $from_1 = 0, $add_ptr97 = 0, $cmp = 0, $from_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp57 = ($0 | 0) == ($fromLim | 0);
    if ($cmp57) {
      $from_0_lcssa = $0;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $sub_ptr_lhs_cast23 = $toLim;
    $sub_ptr_lhs_cast = $toLim;
    $sub_ptr_lhs_cast50 = $toLim;
    $from_058 = $0;
    label = 4;
    break;
   case 4:
    $arrayidx = $from_058 + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $2 = HEAP8[$from_058] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 0) {
      label = 5;
      break;
    } else if (($conv | 0) == 1 | ($conv | 0) == 2 | ($conv | 0) == 3 | ($conv | 0) == 4 | ($conv | 0) == 5 | ($conv | 0) == 6 | ($conv | 0) == 7) {
      label = 9;
      break;
    } else if (($conv | 0) == 216 | ($conv | 0) == 217 | ($conv | 0) == 218 | ($conv | 0) == 219) {
      label = 15;
      break;
    } else {
      label = 12;
      break;
    }
   case 5:
    $cmp3 = $1 << 24 >> 24 > -1;
    if ($cmp3) {
      label = 6;
      break;
    } else {
      label = 9;
      break;
    }
   case 6:
    $3 = HEAP32[$toP >> 2] | 0;
    $cmp5 = ($3 | 0) == ($toLim | 0);
    if ($cmp5) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 8:
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr;
    HEAP8[$3] = $1;
    $from_1 = $from_058;
    label = 18;
    break;
   case 9:
    $4 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast = $4;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp10 = ($sub_ptr_sub | 0) < 2;
    if ($cmp10) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 11:
    $shr50 = ($1 & 255) >>> 6;
    $shl = $2 << 2;
    $or = $shr50 | $shl;
    $or16 = $or | -64;
    $incdec_ptr18 = $4 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr18;
    HEAP8[$4] = $or16;
    $and = $1 & 63;
    $or20 = $and | -128;
    $5 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr22 = $5 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr22;
    HEAP8[$5] = $or20;
    $from_1 = $from_058;
    label = 18;
    break;
   case 12:
    $6 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast24 = $6;
    $sub_ptr_sub25 = $sub_ptr_lhs_cast23 - $sub_ptr_rhs_cast24 | 0;
    $cmp26 = ($sub_ptr_sub25 | 0) < 3;
    if ($cmp26) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 14:
    $shr3151 = ($2 & 255) >>> 4;
    $or32 = $shr3151 | -32;
    $incdec_ptr34 = $6 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr34;
    HEAP8[$6] = $or32;
    $and36 = $2 << 2;
    $shl37 = $and36 & 60;
    $shr3952 = ($1 & 255) >>> 6;
    $or40 = $shr3952 | $shl37;
    $or41 = $or40 | -128;
    $7 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr43 = $7 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr43;
    HEAP8[$7] = $or41;
    $and45 = $1 & 63;
    $or46 = $and45 | -128;
    $8 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr48 = $8 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr48;
    HEAP8[$8] = $or46;
    $from_1 = $from_058;
    label = 18;
    break;
   case 15:
    $9 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_rhs_cast51 = $9;
    $sub_ptr_sub52 = $sub_ptr_lhs_cast50 - $sub_ptr_rhs_cast51 | 0;
    $cmp53 = ($sub_ptr_sub52 | 0) < 4;
    if ($cmp53) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    HEAP32[$fromP >> 2] = $from_058;
    label = 20;
    break;
   case 17:
    $and58 = $conv << 2;
    $shl59 = $and58 & 12;
    $conv60 = $1 & 255;
    $shr6146 = $conv60 >>> 6;
    $or63 = $shl59 | $shr6146;
    $add = $or63 + 1 | 0;
    $shr6447 = $add >>> 2;
    $or65 = $shr6447 | 240;
    $conv66 = $or65 & 255;
    $incdec_ptr67 = $9 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr67;
    HEAP8[$9] = $conv66;
    $shr6948 = $conv60 >>> 2;
    $and70 = $shr6948 & 15;
    $and71 = $add << 4;
    $shl72 = $and71 & 48;
    $or73 = $and70 | $shl72;
    $or74 = $or73 | 128;
    $conv75 = $or74 & 255;
    $10 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr76 = $10 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr76;
    HEAP8[$10] = $conv75;
    $add_ptr = $from_058 + 2 | 0;
    $arrayidx77 = $from_058 + 3 | 0;
    $11 = HEAP8[$arrayidx77] | 0;
    $and79 = $1 << 4;
    $shl80 = $and79 & 48;
    $12 = HEAP8[$add_ptr] | 0;
    $and83 = $12 << 2;
    $shl84 = $and83 & 12;
    $shr8749 = ($11 & 255) >>> 6;
    $or85 = $shl80 | $shr8749;
    $or88 = $or85 | $shl84;
    $or89 = $or88 | -128;
    $13 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr91 = $13 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr91;
    HEAP8[$13] = $or89;
    $and93 = $11 & 63;
    $or94 = $and93 | -128;
    $14 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr96 = $14 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr96;
    HEAP8[$14] = $or94;
    $from_1 = $add_ptr;
    label = 18;
    break;
   case 18:
    $add_ptr97 = $from_1 + 2 | 0;
    $cmp = ($add_ptr97 | 0) == ($fromLim | 0);
    if ($cmp) {
      $from_0_lcssa = $add_ptr97;
      label = 19;
      break;
    } else {
      $from_058 = $add_ptr97;
      label = 4;
      break;
    }
   case 19:
    HEAP32[$fromP >> 2] = $from_0_lcssa;
    label = 20;
    break;
   case 20:
    return;
  }
}
function _big2_toUtf16($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $1 = 0, $sub_ptr_lhs_cast1 = 0, $sub_ptr_rhs_cast2 = 0, $sub_ptr_sub3 = 0, $cmp = 0, $add_ptr = 0, $2 = 0, $and = 0, $cmp4 = 0, $add_ptr_fromLim = 0, $fromLim_addr_0_ph = 0, $3 = 0, $cmp711 = 0, $4 = 0, $5 = 0, $cmp9 = 0, $6 = 0, $conv12 = 0, $shl13 = 0, $arrayidx14 = 0, $7 = 0, $conv15 = 0, $or = 0, $incdec_ptr = 0, $8 = 0, $add_ptr17 = 0, $cmp7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $sub_ptr_lhs_cast = $fromLim;
    $sub_ptr_rhs_cast = $0;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $1 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_lhs_cast1 = $toLim;
    $sub_ptr_rhs_cast2 = $1;
    $sub_ptr_sub3 = $sub_ptr_lhs_cast1 - $sub_ptr_rhs_cast2 | 0;
    $cmp = ($sub_ptr_sub | 0) > ($sub_ptr_sub3 | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $fromLim_addr_0_ph = $fromLim;
      label = 4;
      break;
    }
   case 3:
    $add_ptr = $fromLim - 2 | 0;
    $2 = HEAP8[$add_ptr] | 0;
    $and = $2 & -8;
    $cmp4 = $and << 24 >> 24 == -40;
    $add_ptr_fromLim = $cmp4 ? $add_ptr : $fromLim;
    $fromLim_addr_0_ph = $add_ptr_fromLim;
    label = 4;
    break;
   case 4:
    $3 = HEAP32[$fromP >> 2] | 0;
    $cmp711 = ($3 | 0) == ($fromLim_addr_0_ph | 0);
    if ($cmp711) {
      label = 7;
      break;
    } else {
      $4 = $3;
      label = 5;
      break;
    }
   case 5:
    $5 = HEAP32[$toP >> 2] | 0;
    $cmp9 = ($5 | 0) == ($toLim | 0);
    if ($cmp9) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $6 = HEAP8[$4] | 0;
    $conv12 = $6 & 255;
    $shl13 = $conv12 << 8;
    $arrayidx14 = $4 + 1 | 0;
    $7 = HEAP8[$arrayidx14] | 0;
    $conv15 = $7 & 255;
    $or = $shl13 | $conv15;
    $incdec_ptr = $5 + 2 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr;
    HEAP16[$5 >> 1] = $or;
    $8 = HEAP32[$fromP >> 2] | 0;
    $add_ptr17 = $8 + 2 | 0;
    HEAP32[$fromP >> 2] = $add_ptr17;
    $cmp7 = ($add_ptr17 | 0) == ($fromLim_addr_0_ph | 0);
    if ($cmp7) {
      label = 7;
      break;
    } else {
      $4 = $add_ptr17;
      label = 5;
      break;
    }
   case 7:
    return;
  }
}
function _big2_isPublicId($enc, $ptr, $end, $badPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $badPtr = $badPtr | 0;
  var $add_ptr1 = 0, $ptr_addr_020 = 0, $cmp22 = 0, $type = 0, $0 = 0, $ptr_addr_024 = 0, $ptr_pn23 = 0, $1 = 0, $cmp2 = 0, $arrayidx4 = 0, $2 = 0, $idxprom = 0, $arrayidx5 = 0, $3 = 0, $conv6 = 0, $call = 0, $cond = 0, $ptr_addr_0 = 0, $cmp = 0, $4 = 0, $cmp12 = 0, $5 = 0, $cmp16 = 0, $6 = 0, $cmp21 = 0, $7 = 0, $phitmp16 = 0, $_pr = 0, $cmp33 = 0, $8 = 0, $conv37 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr1 = $end - 2 | 0;
    $ptr_addr_020 = $ptr + 2 | 0;
    $cmp22 = ($ptr_addr_020 | 0) == ($add_ptr1 | 0);
    if ($cmp22) {
      $retval_0 = 1;
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_pn23 = $ptr;
    $ptr_addr_024 = $ptr_addr_020;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$ptr_addr_024] | 0;
    $cmp2 = $1 << 24 >> 24 == 0;
    $arrayidx4 = $ptr_pn23 + 3 | 0;
    $2 = HEAP8[$arrayidx4] | 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $2 & 255;
    $arrayidx5 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx5] | 0;
    $conv6 = $3 & 255;
    $cond = $conv6;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 25 | ($cond | 0) == 24 | ($cond | 0) == 27 | ($cond | 0) == 13 | ($cond | 0) == 31 | ($cond | 0) == 32 | ($cond | 0) == 34 | ($cond | 0) == 35 | ($cond | 0) == 17 | ($cond | 0) == 14 | ($cond | 0) == 15 | ($cond | 0) == 9 | ($cond | 0) == 10 | ($cond | 0) == 18 | ($cond | 0) == 16 | ($cond | 0) == 33 | ($cond | 0) == 30 | ($cond | 0) == 19) {
      label = 8;
      break;
    } else if (($cond | 0) == 21) {
      label = 9;
      break;
    } else if (($cond | 0) == 26 | ($cond | 0) == 22) {
      label = 12;
      break;
    } else {
      label = 14;
      break;
    }
   case 8:
    $ptr_addr_0 = $ptr_addr_024 + 2 | 0;
    $cmp = ($ptr_addr_0 | 0) == ($add_ptr1 | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 17;
      break;
    } else {
      $ptr_pn23 = $ptr_addr_024;
      $ptr_addr_024 = $ptr_addr_0;
      label = 4;
      break;
    }
   case 9:
    $4 = HEAP8[$ptr_addr_024] | 0;
    $cmp12 = $4 << 24 >> 24 == 0;
    if ($cmp12) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 10:
    $5 = HEAP8[$arrayidx4] | 0;
    $cmp16 = $5 << 24 >> 24 == 9;
    if ($cmp16) {
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 11:
    HEAP32[$badPtr >> 2] = $ptr_addr_024;
    $retval_0 = 0;
    label = 17;
    break;
   case 12:
    $6 = HEAP8[$ptr_addr_024] | 0;
    $cmp21 = $6 << 24 >> 24 == 0;
    if ($cmp21) {
      label = 13;
      break;
    } else {
      label = 16;
      break;
    }
   case 13:
    $7 = HEAP8[$arrayidx4] | 0;
    $phitmp16 = $7 << 24 >> 24 < 0;
    if ($phitmp16) {
      label = 14;
      break;
    } else {
      label = 8;
      break;
    }
   case 14:
    $_pr = HEAP8[$ptr_addr_024] | 0;
    $cmp33 = $_pr << 24 >> 24 == 0;
    if ($cmp33) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $8 = HEAP8[$arrayidx4] | 0;
    $conv37 = $8 << 24 >> 24;
    if (($conv37 | 0) == 36 | ($conv37 | 0) == 64) {
      label = 8;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$badPtr >> 2] = $ptr_addr_024;
    $retval_0 = 0;
    label = 17;
    break;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_069 = 0, $cmp4670 = 0, $type55 = 0, $4 = 0, $5 = 0, $idxprom9 = 0, $arrayidx10 = 0, $6 = 0, $conv11 = 0, $shl = 0, $7 = 0, $conv13 = 0, $shr56 = 0, $add = 0, $arrayidx14 = 0, $8 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp23 = 0, $sub_ptr_lhs_cast28 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $sub_ptr_lhs_cast36 = 0, $sub_ptr_rhs_cast37 = 0, $sub_ptr_sub38 = 0, $cmp39 = 0, $add_ptr44 = 0, $call45 = 0, $ptr_addr_072 = 0, $ptr_pn71 = 0, $9 = 0, $cmp50 = 0, $arrayidx53 = 0, $10 = 0, $idxprom54 = 0, $arrayidx56 = 0, $11 = 0, $conv57 = 0, $call61 = 0, $cond63 = 0, $12 = 0, $idxprom66 = 0, $arrayidx67 = 0, $13 = 0, $conv68 = 0, $shl69 = 0, $14 = 0, $conv71 = 0, $shr7255 = 0, $add73 = 0, $arrayidx74 = 0, $15 = 0, $and77 = 0, $shl78 = 0, $and79 = 0, $tobool80 = 0, $ptr_addr_0 = 0, $cmp46 = 0, $sub_ptr_lhs_cast86 = 0, $sub_ptr_rhs_cast87 = 0, $sub_ptr_sub88 = 0, $cmp89 = 0, $sub_ptr_lhs_cast94 = 0, $sub_ptr_rhs_cast95 = 0, $sub_ptr_sub96 = 0, $cmp97 = 0, $sub_ptr_lhs_cast102 = 0, $sub_ptr_rhs_cast103 = 0, $sub_ptr_sub104 = 0, $cmp105 = 0, $add_ptr110 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 19) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 7:
    $ptr_addr_069 = $ptr + 2 | 0;
    $cmp4670 = ($ptr_addr_069 | 0) == ($end | 0);
    if ($cmp4670) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type55 = $enc + 72 | 0;
    $4 = $type55;
    $ptr_pn71 = $ptr;
    $ptr_addr_072 = $ptr_addr_069;
    label = 19;
    break;
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $idxprom9 = $5 & 255;
    $arrayidx10 = $idxprom9 + 9272 | 0;
    $6 = HEAP8[$arrayidx10] | 0;
    $conv11 = $6 & 255;
    $shl = $conv11 << 3;
    $7 = HEAP8[$arrayidx3] | 0;
    $conv13 = $7 & 255;
    $shr56 = $conv13 >>> 5;
    $add = $shr56 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $8;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp23 = ($sub_ptr_sub | 0) < 2;
    if ($cmp23) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 13:
    $sub_ptr_lhs_cast28 = $end;
    $sub_ptr_rhs_cast29 = $ptr;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 3;
    if ($cmp31) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 15:
    $sub_ptr_lhs_cast36 = $end;
    $sub_ptr_rhs_cast37 = $ptr;
    $sub_ptr_sub38 = $sub_ptr_lhs_cast36 - $sub_ptr_rhs_cast37 | 0;
    $cmp39 = ($sub_ptr_sub38 | 0) < 4;
    if ($cmp39) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 17:
    $add_ptr44 = $ptr + 2 | 0;
    $call45 = _big2_scanCharRef($enc, $add_ptr44, $end, $nextTokPtr) | 0;
    $retval_0 = $call45;
    label = 34;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 19:
    $9 = HEAP8[$ptr_addr_072] | 0;
    $cmp50 = $9 << 24 >> 24 == 0;
    $arrayidx53 = $ptr_pn71 + 3 | 0;
    $10 = HEAP8[$arrayidx53] | 0;
    if ($cmp50) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $idxprom54 = $10 & 255;
    $arrayidx56 = $4 + $idxprom54 | 0;
    $11 = HEAP8[$arrayidx56] | 0;
    $conv57 = $11 & 255;
    $cond63 = $conv57;
    label = 22;
    break;
   case 21:
    $call61 = _unicode_byte_type($9, $10) | 0;
    $cond63 = $call61;
    label = 22;
    break;
   case 22:
    if (($cond63 | 0) == 29) {
      label = 23;
      break;
    } else if (($cond63 | 0) == 22 | ($cond63 | 0) == 24 | ($cond63 | 0) == 25 | ($cond63 | 0) == 26 | ($cond63 | 0) == 27) {
      label = 24;
      break;
    } else if (($cond63 | 0) == 5) {
      label = 26;
      break;
    } else if (($cond63 | 0) == 6) {
      label = 28;
      break;
    } else if (($cond63 | 0) == 7) {
      label = 30;
      break;
    } else if (($cond63 | 0) == 18) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 23:
    $12 = HEAP8[$ptr_addr_072] | 0;
    $idxprom66 = $12 & 255;
    $arrayidx67 = $idxprom66 + 10824 | 0;
    $13 = HEAP8[$arrayidx67] | 0;
    $conv68 = $13 & 255;
    $shl69 = $conv68 << 3;
    $14 = HEAP8[$arrayidx53] | 0;
    $conv71 = $14 & 255;
    $shr7255 = $conv71 >>> 5;
    $add73 = $shr7255 | $shl69;
    $arrayidx74 = 9544 + ($add73 << 2) | 0;
    $15 = HEAP32[$arrayidx74 >> 2] | 0;
    $and77 = $conv71 & 31;
    $shl78 = 1 << $and77;
    $and79 = $shl78 & $15;
    $tobool80 = ($and79 | 0) == 0;
    if ($tobool80) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $ptr_addr_0 = $ptr_addr_072 + 2 | 0;
    $cmp46 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp46) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      $ptr_pn71 = $ptr_addr_072;
      $ptr_addr_072 = $ptr_addr_0;
      label = 19;
      break;
    }
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 26:
    $sub_ptr_lhs_cast86 = $end;
    $sub_ptr_rhs_cast87 = $ptr_addr_072;
    $sub_ptr_sub88 = $sub_ptr_lhs_cast86 - $sub_ptr_rhs_cast87 | 0;
    $cmp89 = ($sub_ptr_sub88 | 0) < 2;
    if ($cmp89) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 28:
    $sub_ptr_lhs_cast94 = $end;
    $sub_ptr_rhs_cast95 = $ptr_addr_072;
    $sub_ptr_sub96 = $sub_ptr_lhs_cast94 - $sub_ptr_rhs_cast95 | 0;
    $cmp97 = ($sub_ptr_sub96 | 0) < 3;
    if ($cmp97) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 30:
    $sub_ptr_lhs_cast102 = $end;
    $sub_ptr_rhs_cast103 = $ptr_addr_072;
    $sub_ptr_sub104 = $sub_ptr_lhs_cast102 - $sub_ptr_rhs_cast103 | 0;
    $cmp105 = ($sub_ptr_sub104 | 0) < 4;
    if ($cmp105) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 32:
    $add_ptr110 = $ptr_pn71 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr110;
    $retval_0 = 9;
    label = 34;
    break;
   case 33:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_072;
    $retval_0 = 0;
    label = 34;
    break;
   case 34:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanPercent($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_067 = 0, $cmp4468 = 0, $type53 = 0, $4 = 0, $5 = 0, $idxprom9 = 0, $arrayidx10 = 0, $6 = 0, $conv11 = 0, $shl = 0, $7 = 0, $conv13 = 0, $shr54 = 0, $add = 0, $arrayidx14 = 0, $8 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp23 = 0, $sub_ptr_lhs_cast28 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $sub_ptr_lhs_cast36 = 0, $sub_ptr_rhs_cast37 = 0, $sub_ptr_sub38 = 0, $cmp39 = 0, $ptr_addr_070 = 0, $ptr_pn69 = 0, $9 = 0, $cmp48 = 0, $arrayidx51 = 0, $10 = 0, $idxprom52 = 0, $arrayidx54 = 0, $11 = 0, $conv55 = 0, $call59 = 0, $cond61 = 0, $12 = 0, $idxprom64 = 0, $arrayidx65 = 0, $13 = 0, $conv66 = 0, $shl67 = 0, $14 = 0, $conv69 = 0, $shr7053 = 0, $add71 = 0, $arrayidx72 = 0, $15 = 0, $and75 = 0, $shl76 = 0, $and77 = 0, $tobool78 = 0, $ptr_addr_0 = 0, $cmp44 = 0, $sub_ptr_lhs_cast84 = 0, $sub_ptr_rhs_cast85 = 0, $sub_ptr_sub86 = 0, $cmp87 = 0, $sub_ptr_lhs_cast92 = 0, $sub_ptr_rhs_cast93 = 0, $sub_ptr_sub94 = 0, $cmp95 = 0, $sub_ptr_lhs_cast100 = 0, $sub_ptr_rhs_cast101 = 0, $sub_ptr_sub102 = 0, $cmp103 = 0, $add_ptr108 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 21 | ($cond | 0) == 10 | ($cond | 0) == 9 | ($cond | 0) == 30) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 7:
    $ptr_addr_067 = $ptr + 2 | 0;
    $cmp4468 = ($ptr_addr_067 | 0) == ($end | 0);
    if ($cmp4468) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type53 = $enc + 72 | 0;
    $4 = $type53;
    $ptr_pn69 = $ptr;
    $ptr_addr_070 = $ptr_addr_067;
    label = 19;
    break;
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $idxprom9 = $5 & 255;
    $arrayidx10 = $idxprom9 + 9272 | 0;
    $6 = HEAP8[$arrayidx10] | 0;
    $conv11 = $6 & 255;
    $shl = $conv11 << 3;
    $7 = HEAP8[$arrayidx3] | 0;
    $conv13 = $7 & 255;
    $shr54 = $conv13 >>> 5;
    $add = $shr54 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $8;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp23 = ($sub_ptr_sub | 0) < 2;
    if ($cmp23) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 13:
    $sub_ptr_lhs_cast28 = $end;
    $sub_ptr_rhs_cast29 = $ptr;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 3;
    if ($cmp31) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 15:
    $sub_ptr_lhs_cast36 = $end;
    $sub_ptr_rhs_cast37 = $ptr;
    $sub_ptr_sub38 = $sub_ptr_lhs_cast36 - $sub_ptr_rhs_cast37 | 0;
    $cmp39 = ($sub_ptr_sub38 | 0) < 4;
    if ($cmp39) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 22;
    label = 34;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 34;
    break;
   case 19:
    $9 = HEAP8[$ptr_addr_070] | 0;
    $cmp48 = $9 << 24 >> 24 == 0;
    $arrayidx51 = $ptr_pn69 + 3 | 0;
    $10 = HEAP8[$arrayidx51] | 0;
    if ($cmp48) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $idxprom52 = $10 & 255;
    $arrayidx54 = $4 + $idxprom52 | 0;
    $11 = HEAP8[$arrayidx54] | 0;
    $conv55 = $11 & 255;
    $cond61 = $conv55;
    label = 22;
    break;
   case 21:
    $call59 = _unicode_byte_type($9, $10) | 0;
    $cond61 = $call59;
    label = 22;
    break;
   case 22:
    if (($cond61 | 0) == 29) {
      label = 23;
      break;
    } else if (($cond61 | 0) == 22 | ($cond61 | 0) == 24 | ($cond61 | 0) == 25 | ($cond61 | 0) == 26 | ($cond61 | 0) == 27) {
      label = 24;
      break;
    } else if (($cond61 | 0) == 5) {
      label = 26;
      break;
    } else if (($cond61 | 0) == 6) {
      label = 28;
      break;
    } else if (($cond61 | 0) == 7) {
      label = 30;
      break;
    } else if (($cond61 | 0) == 18) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 23:
    $12 = HEAP8[$ptr_addr_070] | 0;
    $idxprom64 = $12 & 255;
    $arrayidx65 = $idxprom64 + 10824 | 0;
    $13 = HEAP8[$arrayidx65] | 0;
    $conv66 = $13 & 255;
    $shl67 = $conv66 << 3;
    $14 = HEAP8[$arrayidx51] | 0;
    $conv69 = $14 & 255;
    $shr7053 = $conv69 >>> 5;
    $add71 = $shr7053 | $shl67;
    $arrayidx72 = 9544 + ($add71 << 2) | 0;
    $15 = HEAP32[$arrayidx72 >> 2] | 0;
    $and75 = $conv69 & 31;
    $shl76 = 1 << $and75;
    $and77 = $shl76 & $15;
    $tobool78 = ($and77 | 0) == 0;
    if ($tobool78) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $ptr_addr_0 = $ptr_addr_070 + 2 | 0;
    $cmp44 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp44) {
      $retval_0 = -1;
      label = 34;
      break;
    } else {
      $ptr_pn69 = $ptr_addr_070;
      $ptr_addr_070 = $ptr_addr_0;
      label = 19;
      break;
    }
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 26:
    $sub_ptr_lhs_cast84 = $end;
    $sub_ptr_rhs_cast85 = $ptr_addr_070;
    $sub_ptr_sub86 = $sub_ptr_lhs_cast84 - $sub_ptr_rhs_cast85 | 0;
    $cmp87 = ($sub_ptr_sub86 | 0) < 2;
    if ($cmp87) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 28:
    $sub_ptr_lhs_cast92 = $end;
    $sub_ptr_rhs_cast93 = $ptr_addr_070;
    $sub_ptr_sub94 = $sub_ptr_lhs_cast92 - $sub_ptr_rhs_cast93 | 0;
    $cmp95 = ($sub_ptr_sub94 | 0) < 3;
    if ($cmp95) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 30:
    $sub_ptr_lhs_cast100 = $end;
    $sub_ptr_rhs_cast101 = $ptr_addr_070;
    $sub_ptr_sub102 = $sub_ptr_lhs_cast100 - $sub_ptr_rhs_cast101 | 0;
    $cmp103 = ($sub_ptr_sub102 | 0) < 4;
    if ($cmp103) {
      $retval_0 = -2;
      label = 34;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 32:
    $add_ptr108 = $ptr_pn69 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr108;
    $retval_0 = 28;
    label = 34;
    break;
   case 33:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 34;
    break;
   case 34:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanCharRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $cmp5 = 0, $add_ptr = 0, $call = 0, $_pr = 0, $cmp10 = 0, $arrayidx12 = 0, $2 = 0, $idxprom = 0, $type = 0, $3 = 0, $arrayidx13 = 0, $4 = 0, $conv14 = 0, $5 = 0, $6 = 0, $call17 = 0, $cond = 0, $cond1 = 0, $type28 = 0, $7 = 0, $ptr_pn = 0, $ptr_addr_0 = 0, $cmp19 = 0, $8 = 0, $cmp23 = 0, $arrayidx26 = 0, $9 = 0, $idxprom27 = 0, $arrayidx29 = 0, $10 = 0, $conv30 = 0, $call34 = 0, $cond36 = 0, $add_ptr39 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $6 = $0;
      $5 = $1;
      label = 8;
      break;
    }
   case 4:
    $cmp5 = $1 << 24 >> 24 == 120;
    if ($cmp5) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $add_ptr = $ptr + 2 | 0;
    $call = _big2_scanHexCharRef($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 19;
    break;
   case 6:
    $_pr = HEAP8[$ptr] | 0;
    $cmp10 = $_pr << 24 >> 24 == 0;
    $arrayidx12 = $ptr + 1 | 0;
    $2 = HEAP8[$arrayidx12] | 0;
    if ($cmp10) {
      label = 7;
      break;
    } else {
      $6 = $_pr;
      $5 = $2;
      label = 8;
      break;
    }
   case 7:
    $idxprom = $2 & 255;
    $type = $enc + 72 | 0;
    $3 = $type;
    $arrayidx13 = $3 + $idxprom | 0;
    $4 = HEAP8[$arrayidx13] | 0;
    $conv14 = $4 & 255;
    $cond = $conv14;
    label = 9;
    break;
   case 8:
    $call17 = _unicode_byte_type($6, $5) | 0;
    $cond = $call17;
    label = 9;
    break;
   case 9:
    $cond1 = ($cond | 0) == 25;
    if ($cond1) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $type28 = $enc + 72 | 0;
    $7 = $type28;
    $ptr_pn = $ptr;
    label = 12;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 19;
    break;
   case 12:
    $ptr_addr_0 = $ptr_pn + 2 | 0;
    $cmp19 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp19) {
      $retval_0 = -1;
      label = 19;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $8 = HEAP8[$ptr_addr_0] | 0;
    $cmp23 = $8 << 24 >> 24 == 0;
    $arrayidx26 = $ptr_pn + 3 | 0;
    $9 = HEAP8[$arrayidx26] | 0;
    if ($cmp23) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $idxprom27 = $9 & 255;
    $arrayidx29 = $7 + $idxprom27 | 0;
    $10 = HEAP8[$arrayidx29] | 0;
    $conv30 = $10 & 255;
    $cond36 = $conv30;
    label = 16;
    break;
   case 15:
    $call34 = _unicode_byte_type($8, $9) | 0;
    $cond36 = $call34;
    label = 16;
    break;
   case 16:
    if (($cond36 | 0) == 25) {
      $ptr_pn = $ptr_addr_0;
      label = 12;
      break;
    } else if (($cond36 | 0) == 18) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $add_ptr39 = $ptr_pn + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr39;
    $retval_0 = 10;
    label = 19;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0;
    $retval_0 = 0;
    label = 19;
    break;
   case 19:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanHexCharRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $cond_off = 0, $switch = 0, $ptr_addr_020 = 0, $cmp821 = 0, $type17 = 0, $4 = 0, $ptr_addr_023 = 0, $ptr_pn22 = 0, $5 = 0, $cmp12 = 0, $arrayidx15 = 0, $6 = 0, $idxprom16 = 0, $arrayidx18 = 0, $7 = 0, $conv19 = 0, $call23 = 0, $cond25 = 0, $ptr_addr_0 = 0, $cmp8 = 0, $add_ptr28 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 17;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    $cond_off = $cond - 24 | 0;
    $switch = $cond_off >>> 0 < 2;
    if ($switch) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $ptr_addr_020 = $ptr + 2 | 0;
    $cmp821 = ($ptr_addr_020 | 0) == ($end | 0);
    if ($cmp821) {
      $retval_0 = -1;
      label = 17;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type17 = $enc + 72 | 0;
    $4 = $type17;
    $ptr_pn22 = $ptr;
    $ptr_addr_023 = $ptr_addr_020;
    label = 10;
    break;
   case 9:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 17;
    break;
   case 10:
    $5 = HEAP8[$ptr_addr_023] | 0;
    $cmp12 = $5 << 24 >> 24 == 0;
    $arrayidx15 = $ptr_pn22 + 3 | 0;
    $6 = HEAP8[$arrayidx15] | 0;
    if ($cmp12) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $idxprom16 = $6 & 255;
    $arrayidx18 = $4 + $idxprom16 | 0;
    $7 = HEAP8[$arrayidx18] | 0;
    $conv19 = $7 & 255;
    $cond25 = $conv19;
    label = 13;
    break;
   case 12:
    $call23 = _unicode_byte_type($5, $6) | 0;
    $cond25 = $call23;
    label = 13;
    break;
   case 13:
    if (($cond25 | 0) == 25 | ($cond25 | 0) == 24) {
      label = 14;
      break;
    } else if (($cond25 | 0) == 18) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $ptr_addr_0 = $ptr_addr_023 + 2 | 0;
    $cmp8 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp8) {
      $retval_0 = -1;
      label = 17;
      break;
    } else {
      $ptr_pn22 = $ptr_addr_023;
      $ptr_addr_023 = $ptr_addr_0;
      label = 10;
      break;
    }
   case 15:
    $add_ptr28 = $ptr_pn22 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr28;
    $retval_0 = 10;
    label = 17;
    break;
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_023;
    $retval_0 = 0;
    label = 17;
    break;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanCdataSection($ptr, $end, $nextTokPtr) {
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $0 = 0, $cmp2 = 0, $arrayidx4 = 0, $1 = 0, $cmp8 = 0, $ptr_addr_02_lcssa = 0, $add_ptr = 0, $2 = 0, $cmp2_1 = 0, $retval_0 = 0, $arrayidx4_1 = 0, $3 = 0, $cmp8_1 = 0, $add_ptr_1 = 0, $4 = 0, $cmp2_2 = 0, $arrayidx4_2 = 0, $5 = 0, $cmp8_2 = 0, $add_ptr_2 = 0, $6 = 0, $cmp2_3 = 0, $arrayidx4_3 = 0, $7 = 0, $cmp8_3 = 0, $add_ptr_3 = 0, $8 = 0, $cmp2_4 = 0, $arrayidx4_4 = 0, $9 = 0, $cmp8_4 = 0, $add_ptr_4 = 0, $10 = 0, $cmp2_5 = 0, $arrayidx4_5 = 0, $11 = 0, $cmp8_5 = 0, $add_ptr_5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) < 12;
    if ($cmp) {
      $retval_0 = -1;
      label = 7;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp2 = $0 << 24 >> 24 == 0;
    if ($cmp2) {
      label = 4;
      break;
    } else {
      $ptr_addr_02_lcssa = $ptr;
      label = 5;
      break;
    }
   case 4:
    $arrayidx4 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx4] | 0;
    $cmp8 = $1 << 24 >> 24 == 67;
    if ($cmp8) {
      label = 6;
      break;
    } else {
      $ptr_addr_02_lcssa = $ptr;
      label = 5;
      break;
    }
   case 5:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_02_lcssa;
    $retval_0 = 0;
    label = 7;
    break;
   case 6:
    $add_ptr = $ptr + 2 | 0;
    $2 = HEAP8[$add_ptr] | 0;
    $cmp2_1 = $2 << 24 >> 24 == 0;
    if ($cmp2_1) {
      label = 8;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr;
      label = 5;
      break;
    }
   case 7:
    return $retval_0 | 0;
   case 8:
    $arrayidx4_1 = $ptr + 3 | 0;
    $3 = HEAP8[$arrayidx4_1] | 0;
    $cmp8_1 = $3 << 24 >> 24 == 68;
    if ($cmp8_1) {
      label = 9;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr;
      label = 5;
      break;
    }
   case 9:
    $add_ptr_1 = $ptr + 4 | 0;
    $4 = HEAP8[$add_ptr_1] | 0;
    $cmp2_2 = $4 << 24 >> 24 == 0;
    if ($cmp2_2) {
      label = 10;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_1;
      label = 5;
      break;
    }
   case 10:
    $arrayidx4_2 = $ptr + 5 | 0;
    $5 = HEAP8[$arrayidx4_2] | 0;
    $cmp8_2 = $5 << 24 >> 24 == 65;
    if ($cmp8_2) {
      label = 11;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_1;
      label = 5;
      break;
    }
   case 11:
    $add_ptr_2 = $ptr + 6 | 0;
    $6 = HEAP8[$add_ptr_2] | 0;
    $cmp2_3 = $6 << 24 >> 24 == 0;
    if ($cmp2_3) {
      label = 12;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_2;
      label = 5;
      break;
    }
   case 12:
    $arrayidx4_3 = $ptr + 7 | 0;
    $7 = HEAP8[$arrayidx4_3] | 0;
    $cmp8_3 = $7 << 24 >> 24 == 84;
    if ($cmp8_3) {
      label = 13;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_2;
      label = 5;
      break;
    }
   case 13:
    $add_ptr_3 = $ptr + 8 | 0;
    $8 = HEAP8[$add_ptr_3] | 0;
    $cmp2_4 = $8 << 24 >> 24 == 0;
    if ($cmp2_4) {
      label = 14;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_3;
      label = 5;
      break;
    }
   case 14:
    $arrayidx4_4 = $ptr + 9 | 0;
    $9 = HEAP8[$arrayidx4_4] | 0;
    $cmp8_4 = $9 << 24 >> 24 == 65;
    if ($cmp8_4) {
      label = 15;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_3;
      label = 5;
      break;
    }
   case 15:
    $add_ptr_4 = $ptr + 10 | 0;
    $10 = HEAP8[$add_ptr_4] | 0;
    $cmp2_5 = $10 << 24 >> 24 == 0;
    if ($cmp2_5) {
      label = 16;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_4;
      label = 5;
      break;
    }
   case 16:
    $arrayidx4_5 = $ptr + 11 | 0;
    $11 = HEAP8[$arrayidx4_5] | 0;
    $cmp8_5 = $11 << 24 >> 24 == 91;
    if ($cmp8_5) {
      label = 17;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_4;
      label = 5;
      break;
    }
   case 17:
    $add_ptr_5 = $ptr + 12 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr_5;
    $retval_0 = 8;
    label = 7;
    break;
  }
  return 0;
}
function _big2_scanLt($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_0156 = 0, $cmp78157 = 0, $type87 = 0, $4 = 0, $5 = 0, $idxprom9 = 0, $arrayidx10 = 0, $6 = 0, $conv11 = 0, $shl = 0, $7 = 0, $conv13 = 0, $shr118 = 0, $add = 0, $arrayidx14 = 0, $8 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp23 = 0, $sub_ptr_lhs_cast28 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $sub_ptr_lhs_cast36 = 0, $sub_ptr_rhs_cast37 = 0, $sub_ptr_sub38 = 0, $cmp39 = 0, $add_ptr44 = 0, $cmp45 = 0, $9 = 0, $cmp51 = 0, $arrayidx54 = 0, $10 = 0, $idxprom55 = 0, $type56 = 0, $11 = 0, $arrayidx57 = 0, $12 = 0, $conv58 = 0, $call62 = 0, $cond64 = 0, $add_ptr66 = 0, $call67 = 0, $add_ptr69 = 0, $call70 = 0, $add_ptr72 = 0, $call73 = 0, $add_ptr75 = 0, $call76 = 0, $ptr_addr_0159 = 0, $ptr_pn158 = 0, $13 = 0, $cmp82 = 0, $arrayidx85 = 0, $14 = 0, $idxprom86 = 0, $arrayidx88 = 0, $15 = 0, $conv89 = 0, $call93 = 0, $cond95 = 0, $16 = 0, $idxprom98 = 0, $arrayidx99 = 0, $17 = 0, $conv100 = 0, $shl101 = 0, $18 = 0, $conv103 = 0, $shr104117 = 0, $add105 = 0, $arrayidx106 = 0, $19 = 0, $and109 = 0, $shl110 = 0, $and111 = 0, $tobool112 = 0, $ptr_addr_0 = 0, $cmp78 = 0, $sub_ptr_lhs_cast118 = 0, $sub_ptr_rhs_cast119 = 0, $sub_ptr_sub120 = 0, $cmp121 = 0, $sub_ptr_lhs_cast126 = 0, $sub_ptr_rhs_cast127 = 0, $sub_ptr_sub128 = 0, $cmp129 = 0, $sub_ptr_lhs_cast134 = 0, $sub_ptr_rhs_cast135 = 0, $sub_ptr_sub136 = 0, $cmp137 = 0, $add_ptr142 = 0, $cmp144135 = 0, $type154 = 0, $20 = 0, $ptr_addr_1136 = 0, $21 = 0, $cmp149 = 0, $arrayidx152 = 0, $22 = 0, $idxprom153 = 0, $arrayidx155 = 0, $23 = 0, $conv156 = 0, $call160 = 0, $cond162 = 0, $24 = 0, $idxprom165 = 0, $arrayidx166 = 0, $25 = 0, $conv167 = 0, $shl168 = 0, $26 = 0, $conv170 = 0, $shr171116 = 0, $add172 = 0, $arrayidx173 = 0, $27 = 0, $and176 = 0, $shl177 = 0, $and178 = 0, $tobool179 = 0, $add_ptr183 = 0, $call214 = 0, $sub_ptr_lhs_cast185 = 0, $sub_ptr_rhs_cast186 = 0, $sub_ptr_sub187 = 0, $cmp188 = 0, $sub_ptr_lhs_cast193 = 0, $sub_ptr_rhs_cast194 = 0, $sub_ptr_sub195 = 0, $cmp196 = 0, $sub_ptr_lhs_cast201 = 0, $sub_ptr_rhs_cast202 = 0, $sub_ptr_sub203 = 0, $cmp204 = 0, $add_ptr211 = 0, $cmp144 = 0, $ptr_addr_2 = 0, $add_ptr216 = 0, $ptr_addr_3 = 0, $add_ptr218 = 0, $cmp219 = 0, $28 = 0, $cmp225 = 0, $arrayidx227 = 0, $29 = 0, $cmp229 = 0, $add_ptr233 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 16) {
      label = 17;
      break;
    } else if (($cond | 0) == 15) {
      label = 25;
      break;
    } else if (($cond | 0) == 17) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 7:
    $ptr_addr_0156 = $ptr + 2 | 0;
    $cmp78157 = ($ptr_addr_0156 | 0) == ($end | 0);
    if ($cmp78157) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type87 = $enc + 72 | 0;
    $4 = $type87;
    $ptr_pn158 = $ptr;
    $ptr_addr_0159 = $ptr_addr_0156;
    label = 28;
    break;
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $idxprom9 = $5 & 255;
    $arrayidx10 = $idxprom9 + 9272 | 0;
    $6 = HEAP8[$arrayidx10] | 0;
    $conv11 = $6 & 255;
    $shl = $conv11 << 3;
    $7 = HEAP8[$arrayidx3] | 0;
    $conv13 = $7 & 255;
    $shr118 = $conv13 >>> 5;
    $add = $shr118 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $8;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp23 = ($sub_ptr_sub | 0) < 2;
    if ($cmp23) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 13:
    $sub_ptr_lhs_cast28 = $end;
    $sub_ptr_rhs_cast29 = $ptr;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 3;
    if ($cmp31) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 15:
    $sub_ptr_lhs_cast36 = $end;
    $sub_ptr_rhs_cast37 = $ptr;
    $sub_ptr_sub38 = $sub_ptr_lhs_cast36 - $sub_ptr_rhs_cast37 | 0;
    $cmp39 = ($sub_ptr_sub38 | 0) < 4;
    if ($cmp39) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 17:
    $add_ptr44 = $ptr + 2 | 0;
    $cmp45 = ($add_ptr44 | 0) == ($end | 0);
    if ($cmp45) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $9 = HEAP8[$add_ptr44] | 0;
    $cmp51 = $9 << 24 >> 24 == 0;
    $arrayidx54 = $ptr + 3 | 0;
    $10 = HEAP8[$arrayidx54] | 0;
    if ($cmp51) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom55 = $10 & 255;
    $type56 = $enc + 72 | 0;
    $11 = $type56;
    $arrayidx57 = $11 + $idxprom55 | 0;
    $12 = HEAP8[$arrayidx57] | 0;
    $conv58 = $12 & 255;
    $cond64 = $conv58;
    label = 21;
    break;
   case 20:
    $call62 = _unicode_byte_type($9, $10) | 0;
    $cond64 = $call62;
    label = 21;
    break;
   case 21:
    if (($cond64 | 0) == 27) {
      label = 22;
      break;
    } else if (($cond64 | 0) == 20) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 22:
    $add_ptr66 = $ptr + 4 | 0;
    $call67 = _big2_scanComment($enc, $add_ptr66, $end, $nextTokPtr) | 0;
    $retval_0 = $call67;
    label = 65;
    break;
   case 23:
    $add_ptr69 = $ptr + 4 | 0;
    $call70 = _big2_scanCdataSection($add_ptr69, $end, $nextTokPtr) | 0;
    $retval_0 = $call70;
    label = 65;
    break;
   case 24:
    HEAP32[$nextTokPtr >> 2] = $add_ptr44;
    $retval_0 = 0;
    label = 65;
    break;
   case 25:
    $add_ptr72 = $ptr + 2 | 0;
    $call73 = _big2_scanPi($enc, $add_ptr72, $end, $nextTokPtr) | 0;
    $retval_0 = $call73;
    label = 65;
    break;
   case 26:
    $add_ptr75 = $ptr + 2 | 0;
    $call76 = _big2_scanEndTag($enc, $add_ptr75, $end, $nextTokPtr) | 0;
    $retval_0 = $call76;
    label = 65;
    break;
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 65;
    break;
   case 28:
    $13 = HEAP8[$ptr_addr_0159] | 0;
    $cmp82 = $13 << 24 >> 24 == 0;
    $arrayidx85 = $ptr_pn158 + 3 | 0;
    $14 = HEAP8[$arrayidx85] | 0;
    if ($cmp82) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $idxprom86 = $14 & 255;
    $arrayidx88 = $4 + $idxprom86 | 0;
    $15 = HEAP8[$arrayidx88] | 0;
    $conv89 = $15 & 255;
    $cond95 = $conv89;
    label = 31;
    break;
   case 30:
    $call93 = _unicode_byte_type($13, $14) | 0;
    $cond95 = $call93;
    label = 31;
    break;
   case 31:
    if (($cond95 | 0) == 29) {
      label = 32;
      break;
    } else if (($cond95 | 0) == 22 | ($cond95 | 0) == 24 | ($cond95 | 0) == 25 | ($cond95 | 0) == 26 | ($cond95 | 0) == 27) {
      label = 33;
      break;
    } else if (($cond95 | 0) == 5) {
      label = 35;
      break;
    } else if (($cond95 | 0) == 6) {
      label = 37;
      break;
    } else if (($cond95 | 0) == 7) {
      label = 39;
      break;
    } else if (($cond95 | 0) == 21 | ($cond95 | 0) == 9 | ($cond95 | 0) == 10) {
      label = 41;
      break;
    } else if (($cond95 | 0) == 11) {
      $ptr_addr_2 = $ptr_addr_0159;
      label = 58;
      break;
    } else if (($cond95 | 0) == 17) {
      $ptr_addr_3 = $ptr_addr_0159;
      label = 59;
      break;
    } else {
      label = 64;
      break;
    }
   case 32:
    $16 = HEAP8[$ptr_addr_0159] | 0;
    $idxprom98 = $16 & 255;
    $arrayidx99 = $idxprom98 + 10824 | 0;
    $17 = HEAP8[$arrayidx99] | 0;
    $conv100 = $17 & 255;
    $shl101 = $conv100 << 3;
    $18 = HEAP8[$arrayidx85] | 0;
    $conv103 = $18 & 255;
    $shr104117 = $conv103 >>> 5;
    $add105 = $shr104117 | $shl101;
    $arrayidx106 = 9544 + ($add105 << 2) | 0;
    $19 = HEAP32[$arrayidx106 >> 2] | 0;
    $and109 = $conv103 & 31;
    $shl110 = 1 << $and109;
    $and111 = $shl110 & $19;
    $tobool112 = ($and111 | 0) == 0;
    if ($tobool112) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $ptr_addr_0 = $ptr_addr_0159 + 2 | 0;
    $cmp78 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp78) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      $ptr_pn158 = $ptr_addr_0159;
      $ptr_addr_0159 = $ptr_addr_0;
      label = 28;
      break;
    }
   case 34:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 35:
    $sub_ptr_lhs_cast118 = $end;
    $sub_ptr_rhs_cast119 = $ptr_addr_0159;
    $sub_ptr_sub120 = $sub_ptr_lhs_cast118 - $sub_ptr_rhs_cast119 | 0;
    $cmp121 = ($sub_ptr_sub120 | 0) < 2;
    if ($cmp121) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 37:
    $sub_ptr_lhs_cast126 = $end;
    $sub_ptr_rhs_cast127 = $ptr_addr_0159;
    $sub_ptr_sub128 = $sub_ptr_lhs_cast126 - $sub_ptr_rhs_cast127 | 0;
    $cmp129 = ($sub_ptr_sub128 | 0) < 3;
    if ($cmp129) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 39:
    $sub_ptr_lhs_cast134 = $end;
    $sub_ptr_rhs_cast135 = $ptr_addr_0159;
    $sub_ptr_sub136 = $sub_ptr_lhs_cast134 - $sub_ptr_rhs_cast135 | 0;
    $cmp137 = ($sub_ptr_sub136 | 0) < 4;
    if ($cmp137) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 41:
    $add_ptr142 = $ptr_pn158 + 4 | 0;
    $cmp144135 = ($add_ptr142 | 0) == ($end | 0);
    if ($cmp144135) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $type154 = $enc + 72 | 0;
    $20 = $type154;
    $ptr_addr_1136 = $add_ptr142;
    label = 43;
    break;
   case 43:
    $21 = HEAP8[$ptr_addr_1136] | 0;
    $cmp149 = $21 << 24 >> 24 == 0;
    $arrayidx152 = $ptr_addr_1136 + 1 | 0;
    $22 = HEAP8[$arrayidx152] | 0;
    if ($cmp149) {
      label = 44;
      break;
    } else {
      label = 45;
      break;
    }
   case 44:
    $idxprom153 = $22 & 255;
    $arrayidx155 = $20 + $idxprom153 | 0;
    $23 = HEAP8[$arrayidx155] | 0;
    $conv156 = $23 & 255;
    $cond162 = $conv156;
    label = 46;
    break;
   case 45:
    $call160 = _unicode_byte_type($21, $22) | 0;
    $cond162 = $call160;
    label = 46;
    break;
   case 46:
    if (($cond162 | 0) == 29) {
      label = 47;
      break;
    } else if (($cond162 | 0) == 22 | ($cond162 | 0) == 24) {
      label = 49;
      break;
    } else if (($cond162 | 0) == 5) {
      label = 50;
      break;
    } else if (($cond162 | 0) == 6) {
      label = 52;
      break;
    } else if (($cond162 | 0) == 7) {
      label = 54;
      break;
    } else if (($cond162 | 0) == 21 | ($cond162 | 0) == 9 | ($cond162 | 0) == 10) {
      label = 56;
      break;
    } else if (($cond162 | 0) == 11) {
      $ptr_addr_2 = $ptr_addr_1136;
      label = 58;
      break;
    } else if (($cond162 | 0) == 17) {
      $ptr_addr_3 = $ptr_addr_1136;
      label = 59;
      break;
    } else {
      label = 57;
      break;
    }
   case 47:
    $24 = HEAP8[$ptr_addr_1136] | 0;
    $idxprom165 = $24 & 255;
    $arrayidx166 = $idxprom165 + 9272 | 0;
    $25 = HEAP8[$arrayidx166] | 0;
    $conv167 = $25 & 255;
    $shl168 = $conv167 << 3;
    $26 = HEAP8[$arrayidx152] | 0;
    $conv170 = $26 & 255;
    $shr171116 = $conv170 >>> 5;
    $add172 = $shr171116 | $shl168;
    $arrayidx173 = 9544 + ($add172 << 2) | 0;
    $27 = HEAP32[$arrayidx173 >> 2] | 0;
    $and176 = $conv170 & 31;
    $shl177 = 1 << $and176;
    $and178 = $shl177 & $27;
    $tobool179 = ($and178 | 0) == 0;
    if ($tobool179) {
      label = 48;
      break;
    } else {
      label = 49;
      break;
    }
   case 48:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 49:
    $add_ptr183 = $ptr_addr_1136 + 2 | 0;
    $call214 = _big2_scanAtts($enc, $add_ptr183, $end, $nextTokPtr) | 0;
    $retval_0 = $call214;
    label = 65;
    break;
   case 50:
    $sub_ptr_lhs_cast185 = $end;
    $sub_ptr_rhs_cast186 = $ptr_addr_1136;
    $sub_ptr_sub187 = $sub_ptr_lhs_cast185 - $sub_ptr_rhs_cast186 | 0;
    $cmp188 = ($sub_ptr_sub187 | 0) < 2;
    if ($cmp188) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 52:
    $sub_ptr_lhs_cast193 = $end;
    $sub_ptr_rhs_cast194 = $ptr_addr_1136;
    $sub_ptr_sub195 = $sub_ptr_lhs_cast193 - $sub_ptr_rhs_cast194 | 0;
    $cmp196 = ($sub_ptr_sub195 | 0) < 3;
    if ($cmp196) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 54:
    $sub_ptr_lhs_cast201 = $end;
    $sub_ptr_rhs_cast202 = $ptr_addr_1136;
    $sub_ptr_sub203 = $sub_ptr_lhs_cast201 - $sub_ptr_rhs_cast202 | 0;
    $cmp204 = ($sub_ptr_sub203 | 0) < 4;
    if ($cmp204) {
      $retval_0 = -2;
      label = 65;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 56:
    $add_ptr211 = $ptr_addr_1136 + 2 | 0;
    $cmp144 = ($add_ptr211 | 0) == ($end | 0);
    if ($cmp144) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      $ptr_addr_1136 = $add_ptr211;
      label = 43;
      break;
    }
   case 57:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1136;
    $retval_0 = 0;
    label = 65;
    break;
   case 58:
    $add_ptr216 = $ptr_addr_2 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr216;
    $retval_0 = 2;
    label = 65;
    break;
   case 59:
    $add_ptr218 = $ptr_addr_3 + 2 | 0;
    $cmp219 = ($add_ptr218 | 0) == ($end | 0);
    if ($cmp219) {
      $retval_0 = -1;
      label = 65;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $28 = HEAP8[$add_ptr218] | 0;
    $cmp225 = $28 << 24 >> 24 == 0;
    if ($cmp225) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 61:
    $arrayidx227 = $ptr_addr_3 + 3 | 0;
    $29 = HEAP8[$arrayidx227] | 0;
    $cmp229 = $29 << 24 >> 24 == 62;
    if ($cmp229) {
      label = 63;
      break;
    } else {
      label = 62;
      break;
    }
   case 62:
    HEAP32[$nextTokPtr >> 2] = $add_ptr218;
    $retval_0 = 0;
    label = 65;
    break;
   case 63:
    $add_ptr233 = $ptr_addr_3 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr233;
    $retval_0 = 4;
    label = 65;
    break;
   case 64:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0159;
    $retval_0 = 0;
    label = 65;
    break;
   case 65:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanComment($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $cmp5 = 0, $add_ptr = 0, $cmp836 = 0, $type = 0, $2 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_lhs_cast25 = 0, $sub_ptr_lhs_cast34 = 0, $ptr_addr_037 = 0, $3 = 0, $cmp12 = 0, $arrayidx14 = 0, $4 = 0, $idxprom = 0, $arrayidx15 = 0, $5 = 0, $conv16 = 0, $call = 0, $cond = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp19 = 0, $add_ptr23 = 0, $sub_ptr_rhs_cast26 = 0, $sub_ptr_sub27 = 0, $cmp28 = 0, $add_ptr32 = 0, $sub_ptr_rhs_cast35 = 0, $sub_ptr_sub36 = 0, $cmp37 = 0, $add_ptr41 = 0, $add_ptr44 = 0, $cmp45 = 0, $6 = 0, $cmp51 = 0, $ptr_addr_0_be = 0, $cmp8 = 0, $arrayidx54 = 0, $7 = 0, $cmp56 = 0, $add_ptr59 = 0, $cmp60 = 0, $8 = 0, $cmp66 = 0, $arrayidx69 = 0, $9 = 0, $cmp71 = 0, $add_ptr75 = 0, $add_ptr77 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    $cmp5 = $1 << 24 >> 24 == 45;
    if ($cmp5) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 29;
    break;
   case 6:
    $add_ptr = $ptr + 2 | 0;
    $cmp836 = ($add_ptr | 0) == ($end | 0);
    if ($cmp836) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $type = $enc + 72 | 0;
    $2 = $type;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_lhs_cast25 = $end;
    $sub_ptr_lhs_cast34 = $end;
    $ptr_addr_037 = $add_ptr;
    label = 8;
    break;
   case 8:
    $3 = HEAP8[$ptr_addr_037] | 0;
    $cmp12 = $3 << 24 >> 24 == 0;
    $arrayidx14 = $ptr_addr_037 + 1 | 0;
    $4 = HEAP8[$arrayidx14] | 0;
    if ($cmp12) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $idxprom = $4 & 255;
    $arrayidx15 = $2 + $idxprom | 0;
    $5 = HEAP8[$arrayidx15] | 0;
    $conv16 = $5 & 255;
    $cond = $conv16;
    label = 11;
    break;
   case 10:
    $call = _unicode_byte_type($3, $4) | 0;
    $cond = $call;
    label = 11;
    break;
   case 11:
    if (($cond | 0) == 5) {
      label = 12;
      break;
    } else if (($cond | 0) == 6) {
      label = 14;
      break;
    } else if (($cond | 0) == 7) {
      label = 16;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 18;
      break;
    } else if (($cond | 0) == 27) {
      label = 19;
      break;
    } else {
      label = 28;
      break;
    }
   case 12:
    $sub_ptr_rhs_cast = $ptr_addr_037;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp19 = ($sub_ptr_sub | 0) < 2;
    if ($cmp19) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $add_ptr23 = $ptr_addr_037 + 2 | 0;
    $ptr_addr_0_be = $add_ptr23;
    label = 21;
    break;
   case 14:
    $sub_ptr_rhs_cast26 = $ptr_addr_037;
    $sub_ptr_sub27 = $sub_ptr_lhs_cast25 - $sub_ptr_rhs_cast26 | 0;
    $cmp28 = ($sub_ptr_sub27 | 0) < 3;
    if ($cmp28) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $add_ptr32 = $ptr_addr_037 + 3 | 0;
    $ptr_addr_0_be = $add_ptr32;
    label = 21;
    break;
   case 16:
    $sub_ptr_rhs_cast35 = $ptr_addr_037;
    $sub_ptr_sub36 = $sub_ptr_lhs_cast34 - $sub_ptr_rhs_cast35 | 0;
    $cmp37 = ($sub_ptr_sub36 | 0) < 4;
    if ($cmp37) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $add_ptr41 = $ptr_addr_037 + 4 | 0;
    $ptr_addr_0_be = $add_ptr41;
    label = 21;
    break;
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_037;
    $retval_0 = 0;
    label = 29;
    break;
   case 19:
    $add_ptr44 = $ptr_addr_037 + 2 | 0;
    $cmp45 = ($add_ptr44 | 0) == ($end | 0);
    if ($cmp45) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $6 = HEAP8[$add_ptr44] | 0;
    $cmp51 = $6 << 24 >> 24 == 0;
    if ($cmp51) {
      label = 22;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr44;
      label = 21;
      break;
    }
   case 21:
    $cmp8 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp8) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      $ptr_addr_037 = $ptr_addr_0_be;
      label = 8;
      break;
    }
   case 22:
    $arrayidx54 = $ptr_addr_037 + 3 | 0;
    $7 = HEAP8[$arrayidx54] | 0;
    $cmp56 = $7 << 24 >> 24 == 45;
    if ($cmp56) {
      label = 23;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr44;
      label = 21;
      break;
    }
   case 23:
    $add_ptr59 = $ptr_addr_037 + 4 | 0;
    $cmp60 = ($add_ptr59 | 0) == ($end | 0);
    if ($cmp60) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $8 = HEAP8[$add_ptr59] | 0;
    $cmp66 = $8 << 24 >> 24 == 0;
    if ($cmp66) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $arrayidx69 = $ptr_addr_037 + 5 | 0;
    $9 = HEAP8[$arrayidx69] | 0;
    $cmp71 = $9 << 24 >> 24 == 62;
    if ($cmp71) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $add_ptr59;
    $retval_0 = 0;
    label = 29;
    break;
   case 27:
    $add_ptr75 = $ptr_addr_037 + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr75;
    $retval_0 = 13;
    label = 29;
    break;
   case 28:
    $add_ptr77 = $ptr_addr_037 + 2 | 0;
    $ptr_addr_0_be = $add_ptr77;
    label = 21;
    break;
   case 29:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanPi($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $tok = 0, $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_0111 = 0, $cmp43112 = 0, $type52 = 0, $4 = 0, $5 = 0, $idxprom9 = 0, $arrayidx10 = 0, $6 = 0, $conv11 = 0, $shl = 0, $7 = 0, $conv13 = 0, $shr91 = 0, $add = 0, $arrayidx14 = 0, $8 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp23 = 0, $sub_ptr_lhs_cast28 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $sub_ptr_lhs_cast36 = 0, $sub_ptr_rhs_cast37 = 0, $sub_ptr_sub38 = 0, $cmp39 = 0, $ptr_addr_0114 = 0, $ptr_pn113 = 0, $9 = 0, $cmp47 = 0, $arrayidx50 = 0, $10 = 0, $idxprom51 = 0, $arrayidx53 = 0, $11 = 0, $conv54 = 0, $call58 = 0, $cond60 = 0, $12 = 0, $idxprom63 = 0, $arrayidx64 = 0, $13 = 0, $conv65 = 0, $shl66 = 0, $14 = 0, $conv68 = 0, $shr6990 = 0, $add70 = 0, $arrayidx71 = 0, $15 = 0, $and74 = 0, $shl75 = 0, $and76 = 0, $tobool77 = 0, $ptr_addr_0 = 0, $cmp43 = 0, $sub_ptr_lhs_cast83 = 0, $sub_ptr_rhs_cast84 = 0, $sub_ptr_sub85 = 0, $cmp86 = 0, $sub_ptr_lhs_cast91 = 0, $sub_ptr_rhs_cast92 = 0, $sub_ptr_sub93 = 0, $cmp94 = 0, $sub_ptr_lhs_cast99 = 0, $sub_ptr_rhs_cast100 = 0, $sub_ptr_sub101 = 0, $cmp102 = 0, $call107 = 0, $tobool108 = 0, $add_ptr111 = 0, $cmp11394 = 0, $type123 = 0, $16 = 0, $sub_ptr_lhs_cast133 = 0, $sub_ptr_lhs_cast142 = 0, $sub_ptr_lhs_cast151 = 0, $ptr_addr_195 = 0, $17 = 0, $cmp118 = 0, $arrayidx121 = 0, $18 = 0, $idxprom122 = 0, $arrayidx124 = 0, $19 = 0, $conv125 = 0, $call129 = 0, $cond131 = 0, $sub_ptr_rhs_cast134 = 0, $sub_ptr_sub135 = 0, $cmp136 = 0, $add_ptr140 = 0, $sub_ptr_rhs_cast143 = 0, $sub_ptr_sub144 = 0, $cmp145 = 0, $add_ptr149 = 0, $sub_ptr_rhs_cast152 = 0, $sub_ptr_sub153 = 0, $cmp154 = 0, $add_ptr158 = 0, $add_ptr161 = 0, $cmp162 = 0, $20 = 0, $cmp168 = 0, $ptr_addr_1_be = 0, $cmp113 = 0, $arrayidx170 = 0, $21 = 0, $cmp172 = 0, $add_ptr175 = 0, $22 = 0, $add_ptr178 = 0, $call181 = 0, $tobool182 = 0, $add_ptr185 = 0, $cmp186 = 0, $23 = 0, $cmp192 = 0, $arrayidx195 = 0, $24 = 0, $cmp197 = 0, $add_ptr200 = 0, $25 = 0, $ptr_addr_2 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tok = __stackBase__ | 0;
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 7:
    $ptr_addr_0111 = $ptr + 2 | 0;
    $cmp43112 = ($ptr_addr_0111 | 0) == ($end | 0);
    if ($cmp43112) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type52 = $enc + 72 | 0;
    $4 = $type52;
    $ptr_pn113 = $ptr;
    $ptr_addr_0114 = $ptr_addr_0111;
    label = 18;
    break;
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $idxprom9 = $5 & 255;
    $arrayidx10 = $idxprom9 + 9272 | 0;
    $6 = HEAP8[$arrayidx10] | 0;
    $conv11 = $6 & 255;
    $shl = $conv11 << 3;
    $7 = HEAP8[$arrayidx3] | 0;
    $conv13 = $7 & 255;
    $shr91 = $conv13 >>> 5;
    $add = $shr91 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $8;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp23 = ($sub_ptr_sub | 0) < 2;
    if ($cmp23) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 13:
    $sub_ptr_lhs_cast28 = $end;
    $sub_ptr_rhs_cast29 = $ptr;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 3;
    if ($cmp31) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 15:
    $sub_ptr_lhs_cast36 = $end;
    $sub_ptr_rhs_cast37 = $ptr;
    $sub_ptr_sub38 = $sub_ptr_lhs_cast36 - $sub_ptr_rhs_cast37 | 0;
    $cmp39 = ($sub_ptr_sub38 | 0) < 4;
    if ($cmp39) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 59;
    break;
   case 18:
    $9 = HEAP8[$ptr_addr_0114] | 0;
    $cmp47 = $9 << 24 >> 24 == 0;
    $arrayidx50 = $ptr_pn113 + 3 | 0;
    $10 = HEAP8[$arrayidx50] | 0;
    if ($cmp47) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom51 = $10 & 255;
    $arrayidx53 = $4 + $idxprom51 | 0;
    $11 = HEAP8[$arrayidx53] | 0;
    $conv54 = $11 & 255;
    $cond60 = $conv54;
    label = 21;
    break;
   case 20:
    $call58 = _unicode_byte_type($9, $10) | 0;
    $cond60 = $call58;
    label = 21;
    break;
   case 21:
    if (($cond60 | 0) == 29) {
      label = 22;
      break;
    } else if (($cond60 | 0) == 22 | ($cond60 | 0) == 24 | ($cond60 | 0) == 25 | ($cond60 | 0) == 26 | ($cond60 | 0) == 27) {
      label = 23;
      break;
    } else if (($cond60 | 0) == 5) {
      label = 25;
      break;
    } else if (($cond60 | 0) == 6) {
      label = 27;
      break;
    } else if (($cond60 | 0) == 7) {
      label = 29;
      break;
    } else if (($cond60 | 0) == 21 | ($cond60 | 0) == 9 | ($cond60 | 0) == 10) {
      label = 31;
      break;
    } else if (($cond60 | 0) == 15) {
      label = 52;
      break;
    } else {
      $ptr_addr_2 = $ptr_addr_0114;
      label = 58;
      break;
    }
   case 22:
    $12 = HEAP8[$ptr_addr_0114] | 0;
    $idxprom63 = $12 & 255;
    $arrayidx64 = $idxprom63 + 10824 | 0;
    $13 = HEAP8[$arrayidx64] | 0;
    $conv65 = $13 & 255;
    $shl66 = $conv65 << 3;
    $14 = HEAP8[$arrayidx50] | 0;
    $conv68 = $14 & 255;
    $shr6990 = $conv68 >>> 5;
    $add70 = $shr6990 | $shl66;
    $arrayidx71 = 9544 + ($add70 << 2) | 0;
    $15 = HEAP32[$arrayidx71 >> 2] | 0;
    $and74 = $conv68 & 31;
    $shl75 = 1 << $and74;
    $and76 = $shl75 & $15;
    $tobool77 = ($and76 | 0) == 0;
    if ($tobool77) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $ptr_addr_0 = $ptr_addr_0114 + 2 | 0;
    $cmp43 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      $ptr_pn113 = $ptr_addr_0114;
      $ptr_addr_0114 = $ptr_addr_0;
      label = 18;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 25:
    $sub_ptr_lhs_cast83 = $end;
    $sub_ptr_rhs_cast84 = $ptr_addr_0114;
    $sub_ptr_sub85 = $sub_ptr_lhs_cast83 - $sub_ptr_rhs_cast84 | 0;
    $cmp86 = ($sub_ptr_sub85 | 0) < 2;
    if ($cmp86) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 27:
    $sub_ptr_lhs_cast91 = $end;
    $sub_ptr_rhs_cast92 = $ptr_addr_0114;
    $sub_ptr_sub93 = $sub_ptr_lhs_cast91 - $sub_ptr_rhs_cast92 | 0;
    $cmp94 = ($sub_ptr_sub93 | 0) < 3;
    if ($cmp94) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 29:
    $sub_ptr_lhs_cast99 = $end;
    $sub_ptr_rhs_cast100 = $ptr_addr_0114;
    $sub_ptr_sub101 = $sub_ptr_lhs_cast99 - $sub_ptr_rhs_cast100 | 0;
    $cmp102 = ($sub_ptr_sub101 | 0) < 4;
    if ($cmp102) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 31:
    $call107 = _big2_checkPiTarget($ptr, $ptr_addr_0114, $tok) | 0;
    $tobool108 = ($call107 | 0) == 0;
    if ($tobool108) {
      label = 32;
      break;
    } else {
      label = 33;
      break;
    }
   case 32:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 33:
    $add_ptr111 = $ptr_pn113 + 4 | 0;
    $cmp11394 = ($add_ptr111 | 0) == ($end | 0);
    if ($cmp11394) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $type123 = $enc + 72 | 0;
    $16 = $type123;
    $sub_ptr_lhs_cast133 = $end;
    $sub_ptr_lhs_cast142 = $end;
    $sub_ptr_lhs_cast151 = $end;
    $ptr_addr_195 = $add_ptr111;
    label = 35;
    break;
   case 35:
    $17 = HEAP8[$ptr_addr_195] | 0;
    $cmp118 = $17 << 24 >> 24 == 0;
    $arrayidx121 = $ptr_addr_195 + 1 | 0;
    $18 = HEAP8[$arrayidx121] | 0;
    if ($cmp118) {
      label = 36;
      break;
    } else {
      label = 37;
      break;
    }
   case 36:
    $idxprom122 = $18 & 255;
    $arrayidx124 = $16 + $idxprom122 | 0;
    $19 = HEAP8[$arrayidx124] | 0;
    $conv125 = $19 & 255;
    $cond131 = $conv125;
    label = 38;
    break;
   case 37:
    $call129 = _unicode_byte_type($17, $18) | 0;
    $cond131 = $call129;
    label = 38;
    break;
   case 38:
    if (($cond131 | 0) == 5) {
      label = 39;
      break;
    } else if (($cond131 | 0) == 6) {
      label = 41;
      break;
    } else if (($cond131 | 0) == 7) {
      label = 43;
      break;
    } else if (($cond131 | 0) == 0 | ($cond131 | 0) == 1 | ($cond131 | 0) == 8) {
      label = 45;
      break;
    } else if (($cond131 | 0) == 15) {
      label = 46;
      break;
    } else {
      label = 51;
      break;
    }
   case 39:
    $sub_ptr_rhs_cast134 = $ptr_addr_195;
    $sub_ptr_sub135 = $sub_ptr_lhs_cast133 - $sub_ptr_rhs_cast134 | 0;
    $cmp136 = ($sub_ptr_sub135 | 0) < 2;
    if ($cmp136) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $add_ptr140 = $ptr_addr_195 + 2 | 0;
    $ptr_addr_1_be = $add_ptr140;
    label = 48;
    break;
   case 41:
    $sub_ptr_rhs_cast143 = $ptr_addr_195;
    $sub_ptr_sub144 = $sub_ptr_lhs_cast142 - $sub_ptr_rhs_cast143 | 0;
    $cmp145 = ($sub_ptr_sub144 | 0) < 3;
    if ($cmp145) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $add_ptr149 = $ptr_addr_195 + 3 | 0;
    $ptr_addr_1_be = $add_ptr149;
    label = 48;
    break;
   case 43:
    $sub_ptr_rhs_cast152 = $ptr_addr_195;
    $sub_ptr_sub153 = $sub_ptr_lhs_cast151 - $sub_ptr_rhs_cast152 | 0;
    $cmp154 = ($sub_ptr_sub153 | 0) < 4;
    if ($cmp154) {
      $retval_0 = -2;
      label = 59;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $add_ptr158 = $ptr_addr_195 + 4 | 0;
    $ptr_addr_1_be = $add_ptr158;
    label = 48;
    break;
   case 45:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_195;
    $retval_0 = 0;
    label = 59;
    break;
   case 46:
    $add_ptr161 = $ptr_addr_195 + 2 | 0;
    $cmp162 = ($add_ptr161 | 0) == ($end | 0);
    if ($cmp162) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $20 = HEAP8[$add_ptr161] | 0;
    $cmp168 = $20 << 24 >> 24 == 0;
    if ($cmp168) {
      label = 49;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr161;
      label = 48;
      break;
    }
   case 48:
    $cmp113 = ($ptr_addr_1_be | 0) == ($end | 0);
    if ($cmp113) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      $ptr_addr_195 = $ptr_addr_1_be;
      label = 35;
      break;
    }
   case 49:
    $arrayidx170 = $ptr_addr_195 + 3 | 0;
    $21 = HEAP8[$arrayidx170] | 0;
    $cmp172 = $21 << 24 >> 24 == 62;
    if ($cmp172) {
      label = 50;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr161;
      label = 48;
      break;
    }
   case 50:
    $add_ptr175 = $ptr_addr_195 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr175;
    $22 = HEAP32[$tok >> 2] | 0;
    $retval_0 = $22;
    label = 59;
    break;
   case 51:
    $add_ptr178 = $ptr_addr_195 + 2 | 0;
    $ptr_addr_1_be = $add_ptr178;
    label = 48;
    break;
   case 52:
    $call181 = _big2_checkPiTarget($ptr, $ptr_addr_0114, $tok) | 0;
    $tobool182 = ($call181 | 0) == 0;
    if ($tobool182) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0114;
    $retval_0 = 0;
    label = 59;
    break;
   case 54:
    $add_ptr185 = $ptr_pn113 + 4 | 0;
    $cmp186 = ($add_ptr185 | 0) == ($end | 0);
    if ($cmp186) {
      $retval_0 = -1;
      label = 59;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $23 = HEAP8[$add_ptr185] | 0;
    $cmp192 = $23 << 24 >> 24 == 0;
    if ($cmp192) {
      label = 56;
      break;
    } else {
      $ptr_addr_2 = $add_ptr185;
      label = 58;
      break;
    }
   case 56:
    $arrayidx195 = $ptr_pn113 + 5 | 0;
    $24 = HEAP8[$arrayidx195] | 0;
    $cmp197 = $24 << 24 >> 24 == 62;
    if ($cmp197) {
      label = 57;
      break;
    } else {
      $ptr_addr_2 = $add_ptr185;
      label = 58;
      break;
    }
   case 57:
    $add_ptr200 = $ptr_pn113 + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr200;
    $25 = HEAP32[$tok >> 2] | 0;
    $retval_0 = $25;
    label = 59;
    break;
   case 58:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_2;
    $retval_0 = 0;
    label = 59;
    break;
   case 59:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanEndTag($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_084 = 0, $cmp4385 = 0, $type52 = 0, $4 = 0, $5 = 0, $idxprom9 = 0, $arrayidx10 = 0, $6 = 0, $conv11 = 0, $shl = 0, $7 = 0, $conv13 = 0, $shr64 = 0, $add = 0, $arrayidx14 = 0, $8 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp23 = 0, $sub_ptr_lhs_cast28 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $sub_ptr_lhs_cast36 = 0, $sub_ptr_rhs_cast37 = 0, $sub_ptr_sub38 = 0, $cmp39 = 0, $ptr_addr_087 = 0, $ptr_pn86 = 0, $9 = 0, $cmp47 = 0, $arrayidx50 = 0, $10 = 0, $idxprom51 = 0, $arrayidx53 = 0, $11 = 0, $conv54 = 0, $call58 = 0, $cond60 = 0, $12 = 0, $idxprom63 = 0, $arrayidx64 = 0, $13 = 0, $conv65 = 0, $shl66 = 0, $14 = 0, $conv68 = 0, $shr6963 = 0, $add70 = 0, $arrayidx71 = 0, $15 = 0, $and74 = 0, $shl75 = 0, $and76 = 0, $tobool77 = 0, $ptr_addr_0 = 0, $cmp43 = 0, $sub_ptr_lhs_cast83 = 0, $sub_ptr_rhs_cast84 = 0, $sub_ptr_sub85 = 0, $cmp86 = 0, $sub_ptr_lhs_cast91 = 0, $sub_ptr_rhs_cast92 = 0, $sub_ptr_sub93 = 0, $cmp94 = 0, $sub_ptr_lhs_cast99 = 0, $sub_ptr_rhs_cast100 = 0, $sub_ptr_sub101 = 0, $cmp102 = 0, $add_ptr107 = 0, $cmp10867 = 0, $type117 = 0, $16 = 0, $ptr_addr_168 = 0, $17 = 0, $cmp112 = 0, $arrayidx115 = 0, $18 = 0, $idxprom116 = 0, $arrayidx118 = 0, $19 = 0, $conv119 = 0, $call123 = 0, $cond125 = 0, $add_ptr128 = 0, $add_ptr131 = 0, $cmp108 = 0, $add_ptr133 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 7:
    $ptr_addr_084 = $ptr + 2 | 0;
    $cmp4385 = ($ptr_addr_084 | 0) == ($end | 0);
    if ($cmp4385) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type52 = $enc + 72 | 0;
    $4 = $type52;
    $ptr_pn86 = $ptr;
    $ptr_addr_087 = $ptr_addr_084;
    label = 18;
    break;
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $idxprom9 = $5 & 255;
    $arrayidx10 = $idxprom9 + 9272 | 0;
    $6 = HEAP8[$arrayidx10] | 0;
    $conv11 = $6 & 255;
    $shl = $conv11 << 3;
    $7 = HEAP8[$arrayidx3] | 0;
    $conv13 = $7 & 255;
    $shr64 = $conv13 >>> 5;
    $add = $shr64 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $8;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp23 = ($sub_ptr_sub | 0) < 2;
    if ($cmp23) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 13:
    $sub_ptr_lhs_cast28 = $end;
    $sub_ptr_rhs_cast29 = $ptr;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 3;
    if ($cmp31) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 15:
    $sub_ptr_lhs_cast36 = $end;
    $sub_ptr_rhs_cast37 = $ptr;
    $sub_ptr_sub38 = $sub_ptr_lhs_cast36 - $sub_ptr_rhs_cast37 | 0;
    $cmp39 = ($sub_ptr_sub38 | 0) < 4;
    if ($cmp39) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 42;
    break;
   case 18:
    $9 = HEAP8[$ptr_addr_087] | 0;
    $cmp47 = $9 << 24 >> 24 == 0;
    $arrayidx50 = $ptr_pn86 + 3 | 0;
    $10 = HEAP8[$arrayidx50] | 0;
    if ($cmp47) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom51 = $10 & 255;
    $arrayidx53 = $4 + $idxprom51 | 0;
    $11 = HEAP8[$arrayidx53] | 0;
    $conv54 = $11 & 255;
    $cond60 = $conv54;
    label = 21;
    break;
   case 20:
    $call58 = _unicode_byte_type($9, $10) | 0;
    $cond60 = $call58;
    label = 21;
    break;
   case 21:
    if (($cond60 | 0) == 29) {
      label = 22;
      break;
    } else if (($cond60 | 0) == 22 | ($cond60 | 0) == 24 | ($cond60 | 0) == 25 | ($cond60 | 0) == 26 | ($cond60 | 0) == 27) {
      label = 23;
      break;
    } else if (($cond60 | 0) == 5) {
      label = 25;
      break;
    } else if (($cond60 | 0) == 6) {
      label = 27;
      break;
    } else if (($cond60 | 0) == 7) {
      label = 29;
      break;
    } else if (($cond60 | 0) == 21 | ($cond60 | 0) == 9 | ($cond60 | 0) == 10) {
      label = 31;
      break;
    } else if (($cond60 | 0) == 11) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 22:
    $12 = HEAP8[$ptr_addr_087] | 0;
    $idxprom63 = $12 & 255;
    $arrayidx64 = $idxprom63 + 10824 | 0;
    $13 = HEAP8[$arrayidx64] | 0;
    $conv65 = $13 & 255;
    $shl66 = $conv65 << 3;
    $14 = HEAP8[$arrayidx50] | 0;
    $conv68 = $14 & 255;
    $shr6963 = $conv68 >>> 5;
    $add70 = $shr6963 | $shl66;
    $arrayidx71 = 9544 + ($add70 << 2) | 0;
    $15 = HEAP32[$arrayidx71 >> 2] | 0;
    $and74 = $conv68 & 31;
    $shl75 = 1 << $and74;
    $and76 = $shl75 & $15;
    $tobool77 = ($and76 | 0) == 0;
    if ($tobool77) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $ptr_addr_0 = $ptr_addr_087 + 2 | 0;
    $cmp43 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      $ptr_pn86 = $ptr_addr_087;
      $ptr_addr_087 = $ptr_addr_0;
      label = 18;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 25:
    $sub_ptr_lhs_cast83 = $end;
    $sub_ptr_rhs_cast84 = $ptr_addr_087;
    $sub_ptr_sub85 = $sub_ptr_lhs_cast83 - $sub_ptr_rhs_cast84 | 0;
    $cmp86 = ($sub_ptr_sub85 | 0) < 2;
    if ($cmp86) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 27:
    $sub_ptr_lhs_cast91 = $end;
    $sub_ptr_rhs_cast92 = $ptr_addr_087;
    $sub_ptr_sub93 = $sub_ptr_lhs_cast91 - $sub_ptr_rhs_cast92 | 0;
    $cmp94 = ($sub_ptr_sub93 | 0) < 3;
    if ($cmp94) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 29:
    $sub_ptr_lhs_cast99 = $end;
    $sub_ptr_rhs_cast100 = $ptr_addr_087;
    $sub_ptr_sub101 = $sub_ptr_lhs_cast99 - $sub_ptr_rhs_cast100 | 0;
    $cmp102 = ($sub_ptr_sub101 | 0) < 4;
    if ($cmp102) {
      $retval_0 = -2;
      label = 42;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 31:
    $add_ptr107 = $ptr_pn86 + 4 | 0;
    $cmp10867 = ($add_ptr107 | 0) == ($end | 0);
    if ($cmp10867) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $type117 = $enc + 72 | 0;
    $16 = $type117;
    $ptr_addr_168 = $add_ptr107;
    label = 33;
    break;
   case 33:
    $17 = HEAP8[$ptr_addr_168] | 0;
    $cmp112 = $17 << 24 >> 24 == 0;
    $arrayidx115 = $ptr_addr_168 + 1 | 0;
    $18 = HEAP8[$arrayidx115] | 0;
    if ($cmp112) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    $idxprom116 = $18 & 255;
    $arrayidx118 = $16 + $idxprom116 | 0;
    $19 = HEAP8[$arrayidx118] | 0;
    $conv119 = $19 & 255;
    $cond125 = $conv119;
    label = 36;
    break;
   case 35:
    $call123 = _unicode_byte_type($17, $18) | 0;
    $cond125 = $call123;
    label = 36;
    break;
   case 36:
    if (($cond125 | 0) == 11) {
      label = 37;
      break;
    } else if (($cond125 | 0) == 21 | ($cond125 | 0) == 9 | ($cond125 | 0) == 10) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    $add_ptr128 = $ptr_addr_168 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr128;
    $retval_0 = 5;
    label = 42;
    break;
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_168;
    $retval_0 = 0;
    label = 42;
    break;
   case 39:
    $add_ptr131 = $ptr_addr_168 + 2 | 0;
    $cmp108 = ($add_ptr131 | 0) == ($end | 0);
    if ($cmp108) {
      $retval_0 = -1;
      label = 42;
      break;
    } else {
      $ptr_addr_168 = $add_ptr131;
      label = 33;
      break;
    }
   case 40:
    $add_ptr133 = $ptr_pn86 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr133;
    $retval_0 = 5;
    label = 42;
    break;
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_087;
    $retval_0 = 0;
    label = 42;
    break;
   case 42:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_checkPiTarget($ptr, $end, $tokPtr) {
  $ptr = $ptr | 0;
  $end = $end | 0;
  $tokPtr = $tokPtr | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $conv4 = 0, $upper_0 = 0, $add_ptr = 0, $2 = 0, $cmp8 = 0, $arrayidx11 = 0, $3 = 0, $conv12 = 0, $upper_1 = 0, $add_ptr20 = 0, $4 = 0, $cmp23 = 0, $arrayidx26 = 0, $5 = 0, $conv27 = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[$tokPtr >> 2] = 11;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) == 6;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 4:
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    $conv4 = $1 << 24 >> 24;
    if (($conv4 | 0) == 88) {
      label = 5;
      break;
    } else if (($conv4 | 0) == 120) {
      $upper_0 = 0;
      label = 6;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 5:
    $upper_0 = 1;
    label = 6;
    break;
   case 6:
    $add_ptr = $ptr + 2 | 0;
    $2 = HEAP8[$add_ptr] | 0;
    $cmp8 = $2 << 24 >> 24 == 0;
    if ($cmp8) {
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 7:
    $arrayidx11 = $ptr + 3 | 0;
    $3 = HEAP8[$arrayidx11] | 0;
    $conv12 = $3 << 24 >> 24;
    if (($conv12 | 0) == 77) {
      label = 8;
      break;
    } else if (($conv12 | 0) == 109) {
      $upper_1 = $upper_0;
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 8:
    $upper_1 = 1;
    label = 9;
    break;
   case 9:
    $add_ptr20 = $ptr + 4 | 0;
    $4 = HEAP8[$add_ptr20] | 0;
    $cmp23 = $4 << 24 >> 24 == 0;
    if ($cmp23) {
      label = 10;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 10:
    $arrayidx26 = $ptr + 5 | 0;
    $5 = HEAP8[$arrayidx26] | 0;
    $conv27 = $5 << 24 >> 24;
    if (($conv27 | 0) == 76) {
      label = 11;
      break;
    } else if (($conv27 | 0) == 108) {
      label = 12;
      break;
    } else {
      $retval_0 = 1;
      label = 14;
      break;
    }
   case 11:
    $retval_0 = 0;
    label = 14;
    break;
   case 12:
    $tobool = ($upper_1 | 0) == 0;
    if ($tobool) {
      label = 13;
      break;
    } else {
      $retval_0 = 0;
      label = 14;
      break;
    }
   case 13:
    HEAP32[$tokPtr >> 2] = 12;
    $retval_0 = 1;
    label = 14;
    break;
   case 14:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanAtts($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $ptr_addr = 0, $cmp68 = 0, $type = 0, $0 = 0, $type54 = 0, $1 = 0, $type82 = 0, $2 = 0, $type115 = 0, $3 = 0, $sub_ptr_lhs_cast129 = 0, $sub_ptr_lhs_cast138 = 0, $sub_ptr_lhs_cast147 = 0, $type184 = 0, $4 = 0, $type211 = 0, $5 = 0, $6 = 0, $7 = 0, $cmp1 = 0, $arrayidx3 = 0, $8 = 0, $idxprom = 0, $arrayidx4 = 0, $9 = 0, $conv5 = 0, $call = 0, $cond = 0, $10 = 0, $add_ptr4250 = 0, $cmp4351 = 0, $11 = 0, $12 = 0, $idxprom9 = 0, $arrayidx10 = 0, $13 = 0, $conv11 = 0, $shl = 0, $arrayidx12 = 0, $14 = 0, $conv13 = 0, $shr49 = 0, $add = 0, $arrayidx14 = 0, $15 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $16 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp21 = 0, $17 = 0, $sub_ptr_lhs_cast26 = 0, $sub_ptr_rhs_cast27 = 0, $sub_ptr_sub28 = 0, $cmp29 = 0, $18 = 0, $sub_ptr_lhs_cast34 = 0, $sub_ptr_rhs_cast35 = 0, $sub_ptr_sub36 = 0, $cmp37 = 0, $add_ptr4252 = 0, $19 = 0, $20 = 0, $cmp49 = 0, $arrayidx52 = 0, $21 = 0, $idxprom53 = 0, $arrayidx55 = 0, $22 = 0, $conv56 = 0, $call60 = 0, $cond62 = 0, $23 = 0, $add_ptr42 = 0, $cmp43 = 0, $24 = 0, $25 = 0, $add_ptr7055 = 0, $cmp7156 = 0, $add_ptr7057 = 0, $26 = 0, $27 = 0, $cmp77 = 0, $arrayidx80 = 0, $28 = 0, $idxprom81 = 0, $arrayidx83 = 0, $29 = 0, $conv84 = 0, $call88 = 0, $cond90 = 0, $cond90_off = 0, $30 = 0, $31 = 0, $add_ptr70 = 0, $cmp71 = 0, $32 = 0, $33 = 0, $add_ptr101 = 0, $cmp10459 = 0, $34 = 0, $35 = 0, $cmp110 = 0, $arrayidx113 = 0, $36 = 0, $idxprom114 = 0, $arrayidx116 = 0, $37 = 0, $conv117 = 0, $call121 = 0, $cond123 = 0, $cmp124 = 0, $38 = 0, $sub_ptr_rhs_cast130 = 0, $sub_ptr_sub131 = 0, $cmp132 = 0, $add_ptr136 = 0, $39 = 0, $sub_ptr_rhs_cast139 = 0, $sub_ptr_sub140 = 0, $cmp141 = 0, $add_ptr145 = 0, $40 = 0, $sub_ptr_rhs_cast148 = 0, $sub_ptr_sub149 = 0, $cmp150 = 0, $add_ptr154 = 0, $41 = 0, $42 = 0, $add_ptr157 = 0, $call158 = 0, $cmp159 = 0, $43 = 0, $cmp104 = 0, $cmp162 = 0, $44 = 0, $45 = 0, $46 = 0, $add_ptr169 = 0, $47 = 0, $add_ptr172 = 0, $cmp173 = 0, $48 = 0, $cmp179 = 0, $arrayidx182 = 0, $49 = 0, $idxprom183 = 0, $arrayidx185 = 0, $50 = 0, $conv186 = 0, $call190 = 0, $cond192 = 0, $51 = 0, $add_ptr19961 = 0, $cmp20062 = 0, $52 = 0, $add_ptr19963 = 0, $53 = 0, $54 = 0, $cmp206 = 0, $arrayidx209 = 0, $55 = 0, $idxprom210 = 0, $arrayidx212 = 0, $56 = 0, $conv213 = 0, $call217 = 0, $cond219 = 0, $57 = 0, $add_ptr199 = 0, $cmp200 = 0, $58 = 0, $59 = 0, $idxprom222 = 0, $arrayidx223 = 0, $60 = 0, $conv224 = 0, $shl225 = 0, $arrayidx226 = 0, $61 = 0, $conv227 = 0, $shr22848 = 0, $add229 = 0, $arrayidx230 = 0, $62 = 0, $and233 = 0, $shl234 = 0, $and235 = 0, $tobool236 = 0, $_pn = 0, $storemerge = 0, $cmp = 0, $63 = 0, $sub_ptr_lhs_cast242 = 0, $sub_ptr_rhs_cast243 = 0, $sub_ptr_sub244 = 0, $cmp245 = 0, $64 = 0, $sub_ptr_lhs_cast250 = 0, $sub_ptr_rhs_cast251 = 0, $sub_ptr_sub252 = 0, $cmp253 = 0, $65 = 0, $sub_ptr_lhs_cast258 = 0, $sub_ptr_rhs_cast259 = 0, $sub_ptr_sub260 = 0, $cmp261 = 0, $66 = 0, $add_ptr267 = 0, $67 = 0, $add_ptr269 = 0, $cmp270 = 0, $68 = 0, $cmp276 = 0, $arrayidx278 = 0, $69 = 0, $cmp280 = 0, $70 = 0, $add_ptr284 = 0, $71 = 0, $72 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    $cmp68 = ($ptr | 0) == ($end | 0);
    if ($cmp68) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $type54 = $enc + 72 | 0;
    $1 = $type54;
    $type82 = $enc + 72 | 0;
    $2 = $type82;
    $type115 = $enc + 72 | 0;
    $3 = $type115;
    $sub_ptr_lhs_cast129 = $end;
    $sub_ptr_lhs_cast138 = $end;
    $sub_ptr_lhs_cast147 = $end;
    $type184 = $enc + 72 | 0;
    $4 = $type184;
    $type211 = $enc + 72 | 0;
    $5 = $type211;
    $6 = $ptr;
    label = 4;
    break;
   case 4:
    $7 = HEAP8[$6] | 0;
    $cmp1 = $7 << 24 >> 24 == 0;
    $arrayidx3 = $6 + 1 | 0;
    $8 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $8 & 255;
    $arrayidx4 = $0 + $idxprom | 0;
    $9 = HEAP8[$arrayidx4] | 0;
    $conv5 = $9 & 255;
    $cond = $conv5;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($7, $8) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 21 | ($cond | 0) == 9 | ($cond | 0) == 10) {
      label = 8;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else if (($cond | 0) == 14) {
      label = 23;
      break;
    } else if (($cond | 0) == 22 | ($cond | 0) == 24 | ($cond | 0) == 25 | ($cond | 0) == 26 | ($cond | 0) == 27) {
      label = 64;
      break;
    } else {
      label = 78;
      break;
    }
   case 8:
    $10 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr4250 = $10 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr4250;
    $cmp4351 = ($add_ptr4250 | 0) == ($end | 0);
    if ($cmp4351) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $19 = $10;
      $add_ptr4252 = $add_ptr4250;
      label = 17;
      break;
    }
   case 9:
    $11 = HEAP32[$ptr_addr >> 2] | 0;
    $12 = HEAP8[$11] | 0;
    $idxprom9 = $12 & 255;
    $arrayidx10 = $idxprom9 + 10824 | 0;
    $13 = HEAP8[$arrayidx10] | 0;
    $conv11 = $13 & 255;
    $shl = $conv11 << 3;
    $arrayidx12 = $11 + 1 | 0;
    $14 = HEAP8[$arrayidx12] | 0;
    $conv13 = $14 & 255;
    $shr49 = $conv13 >>> 5;
    $add = $shr49 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $15 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $15;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 64;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $11;
    $retval_0 = 0;
    label = 79;
    break;
   case 11:
    $16 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $16;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp21 = ($sub_ptr_sub | 0) < 2;
    if ($cmp21) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $16;
    $retval_0 = 0;
    label = 79;
    break;
   case 13:
    $17 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast26 = $end;
    $sub_ptr_rhs_cast27 = $17;
    $sub_ptr_sub28 = $sub_ptr_lhs_cast26 - $sub_ptr_rhs_cast27 | 0;
    $cmp29 = ($sub_ptr_sub28 | 0) < 3;
    if ($cmp29) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $17;
    $retval_0 = 0;
    label = 79;
    break;
   case 15:
    $18 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast34 = $end;
    $sub_ptr_rhs_cast35 = $18;
    $sub_ptr_sub36 = $sub_ptr_lhs_cast34 - $sub_ptr_rhs_cast35 | 0;
    $cmp37 = ($sub_ptr_sub36 | 0) < 4;
    if ($cmp37) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $18;
    $retval_0 = 0;
    label = 79;
    break;
   case 17:
    $20 = HEAP8[$add_ptr4252] | 0;
    $cmp49 = $20 << 24 >> 24 == 0;
    $arrayidx52 = $19 + 3 | 0;
    $21 = HEAP8[$arrayidx52] | 0;
    if ($cmp49) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $idxprom53 = $21 & 255;
    $arrayidx55 = $1 + $idxprom53 | 0;
    $22 = HEAP8[$arrayidx55] | 0;
    $conv56 = $22 & 255;
    $cond62 = $conv56;
    label = 20;
    break;
   case 19:
    $call60 = _unicode_byte_type($20, $21) | 0;
    $cond62 = $call60;
    label = 20;
    break;
   case 20:
    if (($cond62 | 0) == 21 | ($cond62 | 0) == 10 | ($cond62 | 0) == 9) {
      label = 21;
      break;
    } else if (($cond62 | 0) == 14) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $23 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr42 = $23 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr42;
    $cmp43 = ($add_ptr42 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $19 = $23;
      $add_ptr4252 = $add_ptr42;
      label = 17;
      break;
    }
   case 22:
    $24 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $24;
    $retval_0 = 0;
    label = 79;
    break;
   case 23:
    $25 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr7055 = $25 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr7055;
    $cmp7156 = ($add_ptr7055 | 0) == ($end | 0);
    if ($cmp7156) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $26 = $25;
      $add_ptr7057 = $add_ptr7055;
      label = 24;
      break;
    }
   case 24:
    $27 = HEAP8[$add_ptr7057] | 0;
    $cmp77 = $27 << 24 >> 24 == 0;
    $arrayidx80 = $26 + 3 | 0;
    $28 = HEAP8[$arrayidx80] | 0;
    if ($cmp77) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    $idxprom81 = $28 & 255;
    $arrayidx83 = $2 + $idxprom81 | 0;
    $29 = HEAP8[$arrayidx83] | 0;
    $conv84 = $29 & 255;
    $cond90 = $conv84;
    label = 27;
    break;
   case 26:
    $call88 = _unicode_byte_type($27, $28) | 0;
    $cond90 = $call88;
    label = 27;
    break;
   case 27:
    $cond90_off = $cond90 - 12 | 0;
    $30 = $cond90_off >>> 0 < 2;
    if ($30) {
      label = 31;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    if (($cond90 | 0) == 21 | ($cond90 | 0) == 10 | ($cond90 | 0) == 9) {
      label = 29;
      break;
    } else {
      label = 30;
      break;
    }
   case 29:
    $31 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr70 = $31 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr70;
    $cmp71 = ($add_ptr70 | 0) == ($end | 0);
    if ($cmp71) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $26 = $31;
      $add_ptr7057 = $add_ptr70;
      label = 24;
      break;
    }
   case 30:
    $32 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $32;
    $retval_0 = 0;
    label = 79;
    break;
   case 31:
    $33 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr101 = $33 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr101;
    $cmp10459 = ($add_ptr101 | 0) == ($end | 0);
    if ($cmp10459) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $34 = $add_ptr101;
      label = 32;
      break;
    }
   case 32:
    $35 = HEAP8[$34] | 0;
    $cmp110 = $35 << 24 >> 24 == 0;
    $arrayidx113 = $34 + 1 | 0;
    $36 = HEAP8[$arrayidx113] | 0;
    if ($cmp110) {
      label = 33;
      break;
    } else {
      label = 34;
      break;
    }
   case 33:
    $idxprom114 = $36 & 255;
    $arrayidx116 = $3 + $idxprom114 | 0;
    $37 = HEAP8[$arrayidx116] | 0;
    $conv117 = $37 & 255;
    $cond123 = $conv117;
    label = 35;
    break;
   case 34:
    $call121 = _unicode_byte_type($35, $36) | 0;
    $cond123 = $call121;
    label = 35;
    break;
   case 35:
    $cmp124 = ($cond123 | 0) == ($cond90 | 0);
    if ($cmp124) {
      label = 50;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    if (($cond123 | 0) == 5) {
      label = 37;
      break;
    } else if (($cond123 | 0) == 6) {
      label = 39;
      break;
    } else if (($cond123 | 0) == 7) {
      label = 41;
      break;
    } else if (($cond123 | 0) == 0 | ($cond123 | 0) == 1 | ($cond123 | 0) == 8) {
      label = 43;
      break;
    } else if (($cond123 | 0) == 3) {
      label = 44;
      break;
    } else if (($cond123 | 0) == 2) {
      label = 48;
      break;
    } else {
      label = 49;
      break;
    }
   case 37:
    $38 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_rhs_cast130 = $38;
    $sub_ptr_sub131 = $sub_ptr_lhs_cast129 - $sub_ptr_rhs_cast130 | 0;
    $cmp132 = ($sub_ptr_sub131 | 0) < 2;
    if ($cmp132) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $add_ptr136 = $38 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr136;
    label = 45;
    break;
   case 39:
    $39 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_rhs_cast139 = $39;
    $sub_ptr_sub140 = $sub_ptr_lhs_cast138 - $sub_ptr_rhs_cast139 | 0;
    $cmp141 = ($sub_ptr_sub140 | 0) < 3;
    if ($cmp141) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $add_ptr145 = $39 + 3 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr145;
    label = 45;
    break;
   case 41:
    $40 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_rhs_cast148 = $40;
    $sub_ptr_sub149 = $sub_ptr_lhs_cast147 - $sub_ptr_rhs_cast148 | 0;
    $cmp150 = ($sub_ptr_sub149 | 0) < 4;
    if ($cmp150) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $add_ptr154 = $40 + 4 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr154;
    label = 45;
    break;
   case 43:
    $41 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $41;
    $retval_0 = 0;
    label = 79;
    break;
   case 44:
    $42 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr157 = $42 + 2 | 0;
    $call158 = _big2_scanRef($enc, $add_ptr157, $end, $ptr_addr) | 0;
    $cmp159 = ($call158 | 0) < 1;
    if ($cmp159) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $43 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp104 = ($43 | 0) == ($end | 0);
    if ($cmp104) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $34 = $43;
      label = 32;
      break;
    }
   case 46:
    $cmp162 = ($call158 | 0) == 0;
    if ($cmp162) {
      label = 47;
      break;
    } else {
      $retval_0 = $call158;
      label = 79;
      break;
    }
   case 47:
    $44 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $44;
    $retval_0 = 0;
    label = 79;
    break;
   case 48:
    $45 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $45;
    $retval_0 = 0;
    label = 79;
    break;
   case 49:
    $46 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr169 = $46 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr169;
    label = 45;
    break;
   case 50:
    $47 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr172 = $47 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr172;
    $cmp173 = ($add_ptr172 | 0) == ($end | 0);
    if ($cmp173) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $48 = HEAP8[$add_ptr172] | 0;
    $cmp179 = $48 << 24 >> 24 == 0;
    $arrayidx182 = $47 + 3 | 0;
    $49 = HEAP8[$arrayidx182] | 0;
    if ($cmp179) {
      label = 52;
      break;
    } else {
      label = 53;
      break;
    }
   case 52:
    $idxprom183 = $49 & 255;
    $arrayidx185 = $4 + $idxprom183 | 0;
    $50 = HEAP8[$arrayidx185] | 0;
    $conv186 = $50 & 255;
    $cond192 = $conv186;
    label = 54;
    break;
   case 53:
    $call190 = _unicode_byte_type($48, $49) | 0;
    $cond192 = $call190;
    label = 54;
    break;
   case 54:
    if (($cond192 | 0) == 21 | ($cond192 | 0) == 9 | ($cond192 | 0) == 10) {
      label = 55;
      break;
    } else if (($cond192 | 0) == 11) {
      label = 71;
      break;
    } else if (($cond192 | 0) == 17) {
      label = 72;
      break;
    } else {
      label = 56;
      break;
    }
   case 55:
    $51 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr19961 = $51 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr19961;
    $cmp20062 = ($add_ptr19961 | 0) == ($end | 0);
    if ($cmp20062) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $53 = $51;
      $add_ptr19963 = $add_ptr19961;
      label = 57;
      break;
    }
   case 56:
    $52 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $52;
    $retval_0 = 0;
    label = 79;
    break;
   case 57:
    $54 = HEAP8[$add_ptr19963] | 0;
    $cmp206 = $54 << 24 >> 24 == 0;
    $arrayidx209 = $53 + 3 | 0;
    $55 = HEAP8[$arrayidx209] | 0;
    if ($cmp206) {
      label = 58;
      break;
    } else {
      label = 59;
      break;
    }
   case 58:
    $idxprom210 = $55 & 255;
    $arrayidx212 = $5 + $idxprom210 | 0;
    $56 = HEAP8[$arrayidx212] | 0;
    $conv213 = $56 & 255;
    $cond219 = $conv213;
    label = 60;
    break;
   case 59:
    $call217 = _unicode_byte_type($54, $55) | 0;
    $cond219 = $call217;
    label = 60;
    break;
   case 60:
    if (($cond219 | 0) == 21 | ($cond219 | 0) == 9 | ($cond219 | 0) == 10) {
      label = 61;
      break;
    } else if (($cond219 | 0) == 29) {
      label = 62;
      break;
    } else if (($cond219 | 0) == 22 | ($cond219 | 0) == 24) {
      label = 64;
      break;
    } else if (($cond219 | 0) == 5) {
      label = 65;
      break;
    } else if (($cond219 | 0) == 6) {
      label = 67;
      break;
    } else if (($cond219 | 0) == 7) {
      label = 69;
      break;
    } else if (($cond219 | 0) == 11) {
      label = 71;
      break;
    } else if (($cond219 | 0) == 17) {
      label = 72;
      break;
    } else {
      label = 77;
      break;
    }
   case 61:
    $57 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr199 = $57 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr199;
    $cmp200 = ($add_ptr199 | 0) == ($end | 0);
    if ($cmp200) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $53 = $57;
      $add_ptr19963 = $add_ptr199;
      label = 57;
      break;
    }
   case 62:
    $58 = HEAP32[$ptr_addr >> 2] | 0;
    $59 = HEAP8[$58] | 0;
    $idxprom222 = $59 & 255;
    $arrayidx223 = $idxprom222 + 9272 | 0;
    $60 = HEAP8[$arrayidx223] | 0;
    $conv224 = $60 & 255;
    $shl225 = $conv224 << 3;
    $arrayidx226 = $58 + 1 | 0;
    $61 = HEAP8[$arrayidx226] | 0;
    $conv227 = $61 & 255;
    $shr22848 = $conv227 >>> 5;
    $add229 = $shr22848 | $shl225;
    $arrayidx230 = 9544 + ($add229 << 2) | 0;
    $62 = HEAP32[$arrayidx230 >> 2] | 0;
    $and233 = $conv227 & 31;
    $shl234 = 1 << $and233;
    $and235 = $shl234 & $62;
    $tobool236 = ($and235 | 0) == 0;
    if ($tobool236) {
      label = 63;
      break;
    } else {
      label = 64;
      break;
    }
   case 63:
    HEAP32[$nextTokPtr >> 2] = $58;
    $retval_0 = 0;
    label = 79;
    break;
   case 64:
    $_pn = HEAP32[$ptr_addr >> 2] | 0;
    $storemerge = $_pn + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $storemerge;
    $cmp = ($storemerge | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $6 = $storemerge;
      label = 4;
      break;
    }
   case 65:
    $63 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast242 = $end;
    $sub_ptr_rhs_cast243 = $63;
    $sub_ptr_sub244 = $sub_ptr_lhs_cast242 - $sub_ptr_rhs_cast243 | 0;
    $cmp245 = ($sub_ptr_sub244 | 0) < 2;
    if ($cmp245) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    HEAP32[$nextTokPtr >> 2] = $63;
    $retval_0 = 0;
    label = 79;
    break;
   case 67:
    $64 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast250 = $end;
    $sub_ptr_rhs_cast251 = $64;
    $sub_ptr_sub252 = $sub_ptr_lhs_cast250 - $sub_ptr_rhs_cast251 | 0;
    $cmp253 = ($sub_ptr_sub252 | 0) < 3;
    if ($cmp253) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    HEAP32[$nextTokPtr >> 2] = $64;
    $retval_0 = 0;
    label = 79;
    break;
   case 69:
    $65 = HEAP32[$ptr_addr >> 2] | 0;
    $sub_ptr_lhs_cast258 = $end;
    $sub_ptr_rhs_cast259 = $65;
    $sub_ptr_sub260 = $sub_ptr_lhs_cast258 - $sub_ptr_rhs_cast259 | 0;
    $cmp261 = ($sub_ptr_sub260 | 0) < 4;
    if ($cmp261) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    HEAP32[$nextTokPtr >> 2] = $65;
    $retval_0 = 0;
    label = 79;
    break;
   case 71:
    $66 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr267 = $66 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr267;
    $retval_0 = 1;
    label = 79;
    break;
   case 72:
    $67 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr269 = $67 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr269;
    $cmp270 = ($add_ptr269 | 0) == ($end | 0);
    if ($cmp270) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $68 = HEAP8[$add_ptr269] | 0;
    $cmp276 = $68 << 24 >> 24 == 0;
    if ($cmp276) {
      label = 74;
      break;
    } else {
      label = 75;
      break;
    }
   case 74:
    $arrayidx278 = $67 + 3 | 0;
    $69 = HEAP8[$arrayidx278] | 0;
    $cmp280 = $69 << 24 >> 24 == 62;
    if ($cmp280) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $70 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $70;
    $retval_0 = 0;
    label = 79;
    break;
   case 76:
    $add_ptr284 = $67 + 4 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr284;
    $retval_0 = 3;
    label = 79;
    break;
   case 77:
    $71 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $71;
    $retval_0 = 0;
    label = 79;
    break;
   case 78:
    $72 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $72;
    $retval_0 = 0;
    label = 79;
    break;
   case 79:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanLit($open, $enc, $ptr, $end, $nextTokPtr) {
  $open = $open | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp27 = 0, $type = 0, $0 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_lhs_cast20 = 0, $ptr_addr_028 = 0, $1 = 0, $cmp1 = 0, $arrayidx3 = 0, $2 = 0, $idxprom = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp8 = 0, $add_ptr = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $add_ptr18 = 0, $sub_ptr_rhs_cast21 = 0, $sub_ptr_sub22 = 0, $cmp23 = 0, $add_ptr27 = 0, $add_ptr30 = 0, $cmp31 = 0, $cmp35 = 0, $4 = 0, $cmp41 = 0, $arrayidx44 = 0, $5 = 0, $idxprom45 = 0, $type46 = 0, $6 = 0, $arrayidx47 = 0, $7 = 0, $conv48 = 0, $call52 = 0, $cond54 = 0, $add_ptr57 = 0, $ptr_addr_0_be = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp27 = ($ptr | 0) == ($end | 0);
    if ($cmp27) {
      $retval_0 = -1;
      label = 24;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_lhs_cast20 = $end;
    $ptr_addr_028 = $ptr;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$ptr_addr_028] | 0;
    $cmp1 = $1 << 24 >> 24 == 0;
    $arrayidx3 = $ptr_addr_028 + 1 | 0;
    $2 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $idxprom = $2 & 255;
    $arrayidx4 = $0 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 7;
    break;
   case 6:
    $call = _unicode_byte_type($1, $2) | 0;
    $cond = $call;
    label = 7;
    break;
   case 7:
    if (($cond | 0) == 5) {
      label = 8;
      break;
    } else if (($cond | 0) == 6) {
      label = 10;
      break;
    } else if (($cond | 0) == 7) {
      label = 12;
      break;
    } else if (($cond | 0) == 0 | ($cond | 0) == 1 | ($cond | 0) == 8) {
      label = 14;
      break;
    } else if (($cond | 0) == 12 | ($cond | 0) == 13) {
      label = 15;
      break;
    } else {
      label = 22;
      break;
    }
   case 8:
    $sub_ptr_rhs_cast = $ptr_addr_028;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp8 = ($sub_ptr_sub | 0) < 2;
    if ($cmp8) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add_ptr = $ptr_addr_028 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 23;
    break;
   case 10:
    $sub_ptr_rhs_cast12 = $ptr_addr_028;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $add_ptr18 = $ptr_addr_028 + 3 | 0;
    $ptr_addr_0_be = $add_ptr18;
    label = 23;
    break;
   case 12:
    $sub_ptr_rhs_cast21 = $ptr_addr_028;
    $sub_ptr_sub22 = $sub_ptr_lhs_cast20 - $sub_ptr_rhs_cast21 | 0;
    $cmp23 = ($sub_ptr_sub22 | 0) < 4;
    if ($cmp23) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $add_ptr27 = $ptr_addr_028 + 4 | 0;
    $ptr_addr_0_be = $add_ptr27;
    label = 23;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_028;
    $retval_0 = 0;
    label = 24;
    break;
   case 15:
    $add_ptr30 = $ptr_addr_028 + 2 | 0;
    $cmp31 = ($cond | 0) == ($open | 0);
    if ($cmp31) {
      label = 16;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr30;
      label = 23;
      break;
    }
   case 16:
    $cmp35 = ($add_ptr30 | 0) == ($end | 0);
    if ($cmp35) {
      $retval_0 = -27;
      label = 24;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    HEAP32[$nextTokPtr >> 2] = $add_ptr30;
    $4 = HEAP8[$add_ptr30] | 0;
    $cmp41 = $4 << 24 >> 24 == 0;
    $arrayidx44 = $ptr_addr_028 + 3 | 0;
    $5 = HEAP8[$arrayidx44] | 0;
    if ($cmp41) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $idxprom45 = $5 & 255;
    $type46 = $enc + 72 | 0;
    $6 = $type46;
    $arrayidx47 = $6 + $idxprom45 | 0;
    $7 = HEAP8[$arrayidx47] | 0;
    $conv48 = $7 & 255;
    $cond54 = $conv48;
    label = 20;
    break;
   case 19:
    $call52 = _unicode_byte_type($4, $5) | 0;
    $cond54 = $call52;
    label = 20;
    break;
   case 20:
    if (($cond54 | 0) == 21 | ($cond54 | 0) == 9 | ($cond54 | 0) == 10 | ($cond54 | 0) == 11 | ($cond54 | 0) == 30 | ($cond54 | 0) == 20) {
      $retval_0 = 27;
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $retval_0 = 0;
    label = 24;
    break;
   case 22:
    $add_ptr57 = $ptr_addr_028 + 2 | 0;
    $ptr_addr_0_be = $add_ptr57;
    label = 23;
    break;
   case 23:
    $cmp = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 24;
      break;
    } else {
      $ptr_addr_028 = $ptr_addr_0_be;
      label = 4;
      break;
    }
   case 24:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanDecl($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_038 = 0, $cmp1339 = 0, $type22 = 0, $4 = 0, $add_ptr = 0, $call8 = 0, $add_ptr10 = 0, $ptr_addr_041 = 0, $ptr_pn40 = 0, $5 = 0, $cmp17 = 0, $arrayidx20 = 0, $6 = 0, $idxprom21 = 0, $arrayidx23 = 0, $7 = 0, $conv24 = 0, $call28 = 0, $cond30 = 0, $ptr_addr_0 = 0, $cmp13 = 0, $add_ptr32 = 0, $cmp33 = 0, $8 = 0, $cmp40 = 0, $arrayidx44 = 0, $9 = 0, $idxprom45 = 0, $type46 = 0, $10 = 0, $arrayidx47 = 0, $11 = 0, $conv48 = 0, $call54 = 0, $cond56 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 27) {
      label = 9;
      break;
    } else if (($cond | 0) == 20) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 7:
    $ptr_addr_038 = $ptr + 2 | 0;
    $cmp1339 = ($ptr_addr_038 | 0) == ($end | 0);
    if ($cmp1339) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type22 = $enc + 72 | 0;
    $4 = $type22;
    $ptr_pn40 = $ptr;
    $ptr_addr_041 = $ptr_addr_038;
    label = 12;
    break;
   case 9:
    $add_ptr = $ptr + 2 | 0;
    $call8 = _big2_scanComment($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call8;
    label = 25;
    break;
   case 10:
    $add_ptr10 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr10;
    $retval_0 = 33;
    label = 25;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 25;
    break;
   case 12:
    $5 = HEAP8[$ptr_addr_041] | 0;
    $cmp17 = $5 << 24 >> 24 == 0;
    $arrayidx20 = $ptr_pn40 + 3 | 0;
    $6 = HEAP8[$arrayidx20] | 0;
    if ($cmp17) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $idxprom21 = $6 & 255;
    $arrayidx23 = $4 + $idxprom21 | 0;
    $7 = HEAP8[$arrayidx23] | 0;
    $conv24 = $7 & 255;
    $cond30 = $conv24;
    label = 15;
    break;
   case 14:
    $call28 = _unicode_byte_type($5, $6) | 0;
    $cond30 = $call28;
    label = 15;
    break;
   case 15:
    if (($cond30 | 0) == 22 | ($cond30 | 0) == 24) {
      label = 16;
      break;
    } else if (($cond30 | 0) == 30) {
      label = 17;
      break;
    } else if (($cond30 | 0) == 21 | ($cond30 | 0) == 9 | ($cond30 | 0) == 10) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 16:
    $ptr_addr_0 = $ptr_addr_041 + 2 | 0;
    $cmp13 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp13) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      $ptr_pn40 = $ptr_addr_041;
      $ptr_addr_041 = $ptr_addr_0;
      label = 12;
      break;
    }
   case 17:
    $add_ptr32 = $ptr_pn40 + 4 | 0;
    $cmp33 = ($add_ptr32 | 0) == ($end | 0);
    if ($cmp33) {
      $retval_0 = -1;
      label = 25;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $8 = HEAP8[$add_ptr32] | 0;
    $cmp40 = $8 << 24 >> 24 == 0;
    $arrayidx44 = $ptr_pn40 + 5 | 0;
    $9 = HEAP8[$arrayidx44] | 0;
    if ($cmp40) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom45 = $9 & 255;
    $type46 = $enc + 72 | 0;
    $10 = $type46;
    $arrayidx47 = $10 + $idxprom45 | 0;
    $11 = HEAP8[$arrayidx47] | 0;
    $conv48 = $11 & 255;
    $cond56 = $conv48;
    label = 21;
    break;
   case 20:
    $call54 = _unicode_byte_type($8, $9) | 0;
    $cond56 = $call54;
    label = 21;
    break;
   case 21:
    if (($cond56 | 0) == 21 | ($cond56 | 0) == 9 | ($cond56 | 0) == 10 | ($cond56 | 0) == 30) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_041;
    $retval_0 = 0;
    label = 25;
    break;
   case 23:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_041;
    $retval_0 = 16;
    label = 25;
    break;
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_041;
    $retval_0 = 0;
    label = 25;
    break;
   case 25:
    return $retval_0 | 0;
  }
  return 0;
}
function _big2_scanPoundName($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $arrayidx3 = 0, $1 = 0, $idxprom = 0, $type = 0, $2 = 0, $arrayidx4 = 0, $3 = 0, $conv5 = 0, $call = 0, $cond = 0, $ptr_addr_059 = 0, $cmp4360 = 0, $type52 = 0, $4 = 0, $5 = 0, $idxprom9 = 0, $arrayidx10 = 0, $6 = 0, $conv11 = 0, $shl = 0, $7 = 0, $conv13 = 0, $shr52 = 0, $add = 0, $arrayidx14 = 0, $8 = 0, $and = 0, $shl17 = 0, $and18 = 0, $tobool = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp23 = 0, $sub_ptr_lhs_cast28 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $sub_ptr_lhs_cast36 = 0, $sub_ptr_rhs_cast37 = 0, $sub_ptr_sub38 = 0, $cmp39 = 0, $ptr_addr_062 = 0, $ptr_pn61 = 0, $9 = 0, $cmp47 = 0, $arrayidx50 = 0, $10 = 0, $idxprom51 = 0, $arrayidx53 = 0, $11 = 0, $conv54 = 0, $call58 = 0, $cond60 = 0, $12 = 0, $idxprom63 = 0, $arrayidx64 = 0, $13 = 0, $conv65 = 0, $shl66 = 0, $14 = 0, $conv68 = 0, $shr6951 = 0, $add70 = 0, $arrayidx71 = 0, $15 = 0, $and74 = 0, $shl75 = 0, $and76 = 0, $tobool77 = 0, $ptr_addr_0 = 0, $cmp43 = 0, $sub_ptr_lhs_cast83 = 0, $sub_ptr_rhs_cast84 = 0, $sub_ptr_sub85 = 0, $cmp86 = 0, $sub_ptr_lhs_cast91 = 0, $sub_ptr_rhs_cast92 = 0, $sub_ptr_sub93 = 0, $cmp94 = 0, $sub_ptr_lhs_cast99 = 0, $sub_ptr_rhs_cast100 = 0, $sub_ptr_sub101 = 0, $cmp102 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 33;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 0;
    $arrayidx3 = $ptr + 1 | 0;
    $1 = HEAP8[$arrayidx3] | 0;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $idxprom = $1 & 255;
    $type = $enc + 72 | 0;
    $2 = $type;
    $arrayidx4 = $2 + $idxprom | 0;
    $3 = HEAP8[$arrayidx4] | 0;
    $conv5 = $3 & 255;
    $cond = $conv5;
    label = 6;
    break;
   case 5:
    $call = _unicode_byte_type($0, $1) | 0;
    $cond = $call;
    label = 6;
    break;
   case 6:
    if (($cond | 0) == 22 | ($cond | 0) == 24) {
      label = 7;
      break;
    } else if (($cond | 0) == 29) {
      label = 9;
      break;
    } else if (($cond | 0) == 5) {
      label = 11;
      break;
    } else if (($cond | 0) == 6) {
      label = 13;
      break;
    } else if (($cond | 0) == 7) {
      label = 15;
      break;
    } else {
      label = 17;
      break;
    }
   case 7:
    $ptr_addr_059 = $ptr + 2 | 0;
    $cmp4360 = ($ptr_addr_059 | 0) == ($end | 0);
    if ($cmp4360) {
      $retval_0 = -20;
      label = 33;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $type52 = $enc + 72 | 0;
    $4 = $type52;
    $ptr_pn61 = $ptr;
    $ptr_addr_062 = $ptr_addr_059;
    label = 18;
    break;
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $idxprom9 = $5 & 255;
    $arrayidx10 = $idxprom9 + 9272 | 0;
    $6 = HEAP8[$arrayidx10] | 0;
    $conv11 = $6 & 255;
    $shl = $conv11 << 3;
    $7 = HEAP8[$arrayidx3] | 0;
    $conv13 = $7 & 255;
    $shr52 = $conv13 >>> 5;
    $add = $shr52 | $shl;
    $arrayidx14 = 9544 + ($add << 2) | 0;
    $8 = HEAP32[$arrayidx14 >> 2] | 0;
    $and = $conv13 & 31;
    $shl17 = 1 << $and;
    $and18 = $shl17 & $8;
    $tobool = ($and18 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 7;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 11:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp23 = ($sub_ptr_sub | 0) < 2;
    if ($cmp23) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 13:
    $sub_ptr_lhs_cast28 = $end;
    $sub_ptr_rhs_cast29 = $ptr;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 3;
    if ($cmp31) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 15:
    $sub_ptr_lhs_cast36 = $end;
    $sub_ptr_rhs_cast37 = $ptr;
    $sub_ptr_sub38 = $sub_ptr_lhs_cast36 - $sub_ptr_rhs_cast37 | 0;
    $cmp39 = ($sub_ptr_sub38 | 0) < 4;
    if ($cmp39) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 33;
    break;
   case 18:
    $9 = HEAP8[$ptr_addr_062] | 0;
    $cmp47 = $9 << 24 >> 24 == 0;
    $arrayidx50 = $ptr_pn61 + 3 | 0;
    $10 = HEAP8[$arrayidx50] | 0;
    if ($cmp47) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    $idxprom51 = $10 & 255;
    $arrayidx53 = $4 + $idxprom51 | 0;
    $11 = HEAP8[$arrayidx53] | 0;
    $conv54 = $11 & 255;
    $cond60 = $conv54;
    label = 21;
    break;
   case 20:
    $call58 = _unicode_byte_type($9, $10) | 0;
    $cond60 = $call58;
    label = 21;
    break;
   case 21:
    if (($cond60 | 0) == 29) {
      label = 22;
      break;
    } else if (($cond60 | 0) == 22 | ($cond60 | 0) == 24 | ($cond60 | 0) == 25 | ($cond60 | 0) == 26 | ($cond60 | 0) == 27) {
      label = 23;
      break;
    } else if (($cond60 | 0) == 5) {
      label = 25;
      break;
    } else if (($cond60 | 0) == 6) {
      label = 27;
      break;
    } else if (($cond60 | 0) == 7) {
      label = 29;
      break;
    } else if (($cond60 | 0) == 9 | ($cond60 | 0) == 10 | ($cond60 | 0) == 21 | ($cond60 | 0) == 32 | ($cond60 | 0) == 11 | ($cond60 | 0) == 30 | ($cond60 | 0) == 36) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 22:
    $12 = HEAP8[$ptr_addr_062] | 0;
    $idxprom63 = $12 & 255;
    $arrayidx64 = $idxprom63 + 10824 | 0;
    $13 = HEAP8[$arrayidx64] | 0;
    $conv65 = $13 & 255;
    $shl66 = $conv65 << 3;
    $14 = HEAP8[$arrayidx50] | 0;
    $conv68 = $14 & 255;
    $shr6951 = $conv68 >>> 5;
    $add70 = $shr6951 | $shl66;
    $arrayidx71 = 9544 + ($add70 << 2) | 0;
    $15 = HEAP32[$arrayidx71 >> 2] | 0;
    $and74 = $conv68 & 31;
    $shl75 = 1 << $and74;
    $and76 = $shl75 & $15;
    $tobool77 = ($and76 | 0) == 0;
    if ($tobool77) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $ptr_addr_0 = $ptr_addr_062 + 2 | 0;
    $cmp43 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -20;
      label = 33;
      break;
    } else {
      $ptr_pn61 = $ptr_addr_062;
      $ptr_addr_062 = $ptr_addr_0;
      label = 18;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 25:
    $sub_ptr_lhs_cast83 = $end;
    $sub_ptr_rhs_cast84 = $ptr_addr_062;
    $sub_ptr_sub85 = $sub_ptr_lhs_cast83 - $sub_ptr_rhs_cast84 | 0;
    $cmp86 = ($sub_ptr_sub85 | 0) < 2;
    if ($cmp86) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 27:
    $sub_ptr_lhs_cast91 = $end;
    $sub_ptr_rhs_cast92 = $ptr_addr_062;
    $sub_ptr_sub93 = $sub_ptr_lhs_cast91 - $sub_ptr_rhs_cast92 | 0;
    $cmp94 = ($sub_ptr_sub93 | 0) < 3;
    if ($cmp94) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 29:
    $sub_ptr_lhs_cast99 = $end;
    $sub_ptr_rhs_cast100 = $ptr_addr_062;
    $sub_ptr_sub101 = $sub_ptr_lhs_cast99 - $sub_ptr_rhs_cast100 | 0;
    $cmp102 = ($sub_ptr_sub101 | 0) < 4;
    if ($cmp102) {
      $retval_0 = -2;
      label = 33;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 20;
    label = 33;
    break;
   case 32:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_062;
    $retval_0 = 0;
    label = 33;
    break;
   case 33:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_prologTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr29167 = 0, $cmp30168 = 0, $add_ptr = 0, $call = 0, $add_ptr2 = 0, $call3 = 0, $add_ptr5 = 0, $cmp6 = 0, $3 = 0, $idxprom10 = 0, $arrayidx12 = 0, $4 = 0, $conv13 = 0, $add_ptr15 = 0, $call16 = 0, $add_ptr18 = 0, $call19 = 0, $add_ptr23 = 0, $cmp24 = 0, $add_ptr29170 = 0, $ptr_addr_0169 = 0, $5 = 0, $idxprom34 = 0, $arrayidx36 = 0, $6 = 0, $conv37 = 0, $add_ptr29 = 0, $cmp30 = 0, $add_ptr40 = 0, $cmp41 = 0, $add_ptr29_lcssa = 0, $add_ptr47 = 0, $call48 = 0, $add_ptr50 = 0, $add_ptr52 = 0, $add_ptr54 = 0, $cmp55 = 0, $7 = 0, $cmp60 = 0, $add_ptr63 = 0, $cmp64 = 0, $8 = 0, $cmp70 = 0, $add_ptr73 = 0, $add_ptr77 = 0, $add_ptr79 = 0, $cmp80 = 0, $9 = 0, $idxprom84 = 0, $arrayidx86 = 0, $10 = 0, $conv87 = 0, $add_ptr89 = 0, $add_ptr91 = 0, $add_ptr93 = 0, $add_ptr97 = 0, $add_ptr99 = 0, $add_ptr101 = 0, $call102 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp104 = 0, $isNmstrt2 = 0, $11 = 0, $12 = 0, $call108 = 0, $tobool = 0, $add_ptr110 = 0, $ptr_addr_1_ph = 0, $tok_0_ph = 0, $cmp160181 = 0, $sub_ptr_lhs_cast170 = 0, $13 = 0, $sub_ptr_lhs_cast184 = 0, $isName3191 = 0, $sub_ptr_lhs_cast198 = 0, $isName4205 = 0, $14 = 0, $15 = 0, $call112 = 0, $tobool113 = 0, $add_ptr115 = 0, $sub_ptr_lhs_cast118 = 0, $sub_ptr_rhs_cast119 = 0, $sub_ptr_sub120 = 0, $cmp121 = 0, $isNmstrt3 = 0, $16 = 0, $17 = 0, $call125 = 0, $tobool126 = 0, $add_ptr128 = 0, $isName3 = 0, $18 = 0, $19 = 0, $call130 = 0, $tobool131 = 0, $add_ptr133 = 0, $sub_ptr_lhs_cast136 = 0, $sub_ptr_rhs_cast137 = 0, $sub_ptr_sub138 = 0, $cmp139 = 0, $isNmstrt4 = 0, $20 = 0, $21 = 0, $call143 = 0, $tobool144 = 0, $add_ptr146 = 0, $isName4 = 0, $22 = 0, $23 = 0, $call148 = 0, $tobool149 = 0, $add_ptr151 = 0, $add_ptr154 = 0, $add_ptr156 = 0, $ptr_addr_1182 = 0, $24 = 0, $idxprom162 = 0, $arrayidx164 = 0, $25 = 0, $conv165 = 0, $add_ptr168 = 0, $sub_ptr_rhs_cast171 = 0, $sub_ptr_sub172 = 0, $cmp173 = 0, $26 = 0, $call178 = 0, $tobool179 = 0, $add_ptr182 = 0, $sub_ptr_rhs_cast185 = 0, $sub_ptr_sub186 = 0, $cmp187 = 0, $27 = 0, $28 = 0, $call192 = 0, $tobool193 = 0, $add_ptr196 = 0, $sub_ptr_rhs_cast199 = 0, $sub_ptr_sub200 = 0, $cmp201 = 0, $29 = 0, $30 = 0, $call206 = 0, $tobool207 = 0, $add_ptr210 = 0, $ptr_addr_1_be = 0, $cmp160 = 0, $cmp213 = 0, $add_ptr217 = 0, $cmp219 = 0, $add_ptr223 = 0, $cmp225 = 0, $add_ptr229 = 0, $sub = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 91;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 21 | ($conv | 0) == 10) {
      label = 4;
      break;
    } else if (($conv | 0) == 12) {
      label = 5;
      break;
    } else if (($conv | 0) == 13) {
      label = 6;
      break;
    } else if (($conv | 0) == 2) {
      label = 7;
      break;
    } else if (($conv | 0) == 9) {
      label = 13;
      break;
    } else if (($conv | 0) == 30) {
      label = 20;
      break;
    } else if (($conv | 0) == 35) {
      label = 21;
      break;
    } else if (($conv | 0) == 20) {
      label = 22;
      break;
    } else if (($conv | 0) == 4) {
      label = 23;
      break;
    } else if (($conv | 0) == 31) {
      label = 29;
      break;
    } else if (($conv | 0) == 32) {
      label = 30;
      break;
    } else if (($conv | 0) == 36) {
      label = 37;
      break;
    } else if (($conv | 0) == 11) {
      label = 38;
      break;
    } else if (($conv | 0) == 19) {
      label = 39;
      break;
    } else if (($conv | 0) == 5) {
      label = 40;
      break;
    } else if (($conv | 0) == 6) {
      label = 48;
      break;
    } else if (($conv | 0) == 7) {
      label = 54;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 60;
      break;
    } else if (($conv | 0) == 25 | ($conv | 0) == 26 | ($conv | 0) == 27) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 4:
    $add_ptr29167 = $ptr + 1 | 0;
    $cmp30168 = ($add_ptr29167 | 0) == ($end | 0);
    if ($cmp30168) {
      $add_ptr29_lcssa = $add_ptr29167;
      label = 19;
      break;
    } else {
      $ptr_addr_0169 = $ptr;
      $add_ptr29170 = $add_ptr29167;
      label = 15;
      break;
    }
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $call = _normal_scanLit(12, $enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 91;
    break;
   case 6:
    $add_ptr2 = $ptr + 1 | 0;
    $call3 = _normal_scanLit(13, $enc, $add_ptr2, $end, $nextTokPtr) | 0;
    $retval_0 = $call3;
    label = 91;
    break;
   case 7:
    $add_ptr5 = $ptr + 1 | 0;
    $cmp6 = ($add_ptr5 | 0) == ($end | 0);
    if ($cmp6) {
      $retval_0 = -1;
      label = 91;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $3 = HEAP8[$add_ptr5] | 0;
    $idxprom10 = $3 & 255;
    $arrayidx12 = $1 + $idxprom10 | 0;
    $4 = HEAP8[$arrayidx12] | 0;
    $conv13 = $4 & 255;
    if (($conv13 | 0) == 16) {
      label = 9;
      break;
    } else if (($conv13 | 0) == 15) {
      label = 10;
      break;
    } else if (($conv13 | 0) == 22 | ($conv13 | 0) == 24 | ($conv13 | 0) == 29 | ($conv13 | 0) == 5 | ($conv13 | 0) == 6 | ($conv13 | 0) == 7) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 9:
    $add_ptr15 = $ptr + 2 | 0;
    $call16 = _normal_scanDecl($enc, $add_ptr15, $end, $nextTokPtr) | 0;
    $retval_0 = $call16;
    label = 91;
    break;
   case 10:
    $add_ptr18 = $ptr + 2 | 0;
    $call19 = _normal_scanPi($enc, $add_ptr18, $end, $nextTokPtr) | 0;
    $retval_0 = $call19;
    label = 91;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 29;
    label = 91;
    break;
   case 12:
    HEAP32[$nextTokPtr >> 2] = $add_ptr5;
    $retval_0 = 0;
    label = 91;
    break;
   case 13:
    $add_ptr23 = $ptr + 1 | 0;
    $cmp24 = ($add_ptr23 | 0) == ($end | 0);
    if ($cmp24) {
      label = 14;
      break;
    } else {
      label = 4;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $end;
    $retval_0 = -15;
    label = 91;
    break;
   case 15:
    $5 = HEAP8[$add_ptr29170] | 0;
    $idxprom34 = $5 & 255;
    $arrayidx36 = $1 + $idxprom34 | 0;
    $6 = HEAP8[$arrayidx36] | 0;
    $conv37 = $6 & 255;
    if (($conv37 | 0) == 21 | ($conv37 | 0) == 10) {
      label = 16;
      break;
    } else if (($conv37 | 0) == 9) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 16:
    $add_ptr29 = $add_ptr29170 + 1 | 0;
    $cmp30 = ($add_ptr29 | 0) == ($end | 0);
    if ($cmp30) {
      $add_ptr29_lcssa = $add_ptr29;
      label = 19;
      break;
    } else {
      $ptr_addr_0169 = $add_ptr29170;
      $add_ptr29170 = $add_ptr29;
      label = 15;
      break;
    }
   case 17:
    $add_ptr40 = $ptr_addr_0169 + 2 | 0;
    $cmp41 = ($add_ptr40 | 0) == ($end | 0);
    if ($cmp41) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $add_ptr29170;
    $retval_0 = 15;
    label = 91;
    break;
   case 19:
    HEAP32[$nextTokPtr >> 2] = $add_ptr29_lcssa;
    $retval_0 = 15;
    label = 91;
    break;
   case 20:
    $add_ptr47 = $ptr + 1 | 0;
    $call48 = _normal_scanPercent($enc, $add_ptr47, $end, $nextTokPtr) | 0;
    $retval_0 = $call48;
    label = 91;
    break;
   case 21:
    $add_ptr50 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr50;
    $retval_0 = 38;
    label = 91;
    break;
   case 22:
    $add_ptr52 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr52;
    $retval_0 = 25;
    label = 91;
    break;
   case 23:
    $add_ptr54 = $ptr + 1 | 0;
    $cmp55 = ($add_ptr54 | 0) == ($end | 0);
    if ($cmp55) {
      $retval_0 = -26;
      label = 91;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $7 = HEAP8[$add_ptr54] | 0;
    $cmp60 = $7 << 24 >> 24 == 93;
    if ($cmp60) {
      label = 25;
      break;
    } else {
      label = 28;
      break;
    }
   case 25:
    $add_ptr63 = $ptr + 2 | 0;
    $cmp64 = ($add_ptr63 | 0) == ($end | 0);
    if ($cmp64) {
      $retval_0 = -1;
      label = 91;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $8 = HEAP8[$add_ptr63] | 0;
    $cmp70 = $8 << 24 >> 24 == 62;
    if ($cmp70) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $add_ptr73 = $ptr + 3 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr73;
    $retval_0 = 34;
    label = 91;
    break;
   case 28:
    HEAP32[$nextTokPtr >> 2] = $add_ptr54;
    $retval_0 = 26;
    label = 91;
    break;
   case 29:
    $add_ptr77 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr77;
    $retval_0 = 23;
    label = 91;
    break;
   case 30:
    $add_ptr79 = $ptr + 1 | 0;
    $cmp80 = ($add_ptr79 | 0) == ($end | 0);
    if ($cmp80) {
      $retval_0 = -24;
      label = 91;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $9 = HEAP8[$add_ptr79] | 0;
    $idxprom84 = $9 & 255;
    $arrayidx86 = $1 + $idxprom84 | 0;
    $10 = HEAP8[$arrayidx86] | 0;
    $conv87 = $10 & 255;
    if (($conv87 | 0) == 33) {
      label = 32;
      break;
    } else if (($conv87 | 0) == 15) {
      label = 33;
      break;
    } else if (($conv87 | 0) == 34) {
      label = 34;
      break;
    } else if (($conv87 | 0) == 9 | ($conv87 | 0) == 10 | ($conv87 | 0) == 21 | ($conv87 | 0) == 11 | ($conv87 | 0) == 35 | ($conv87 | 0) == 36 | ($conv87 | 0) == 32) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 32:
    $add_ptr89 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr89;
    $retval_0 = 36;
    label = 91;
    break;
   case 33:
    $add_ptr91 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr91;
    $retval_0 = 35;
    label = 91;
    break;
   case 34:
    $add_ptr93 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr93;
    $retval_0 = 37;
    label = 91;
    break;
   case 35:
    HEAP32[$nextTokPtr >> 2] = $add_ptr79;
    $retval_0 = 24;
    label = 91;
    break;
   case 36:
    HEAP32[$nextTokPtr >> 2] = $add_ptr79;
    $retval_0 = 0;
    label = 91;
    break;
   case 37:
    $add_ptr97 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr97;
    $retval_0 = 21;
    label = 91;
    break;
   case 38:
    $add_ptr99 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr99;
    $retval_0 = 17;
    label = 91;
    break;
   case 39:
    $add_ptr101 = $ptr + 1 | 0;
    $call102 = _normal_scanPoundName($enc, $add_ptr101, $end, $nextTokPtr) | 0;
    $retval_0 = $call102;
    label = 91;
    break;
   case 40:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp104 = ($sub_ptr_sub | 0) < 2;
    if ($cmp104) {
      $retval_0 = -2;
      label = 91;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $isNmstrt2 = $enc + 340 | 0;
    $11 = HEAP32[$isNmstrt2 >> 2] | 0;
    $12 = $11;
    $call108 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr) | 0;
    $tobool = ($call108 | 0) == 0;
    if ($tobool) {
      label = 45;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $add_ptr110 = $ptr + 2 | 0;
    $tok_0_ph = 18;
    $ptr_addr_1_ph = $add_ptr110;
    label = 43;
    break;
   case 43:
    $cmp160181 = ($ptr_addr_1_ph | 0) == ($end | 0);
    if ($cmp160181) {
      label = 90;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $sub_ptr_lhs_cast170 = $end;
    $13 = $enc + 328 | 0;
    $sub_ptr_lhs_cast184 = $end;
    $isName3191 = $enc + 332 | 0;
    $sub_ptr_lhs_cast198 = $end;
    $isName4205 = $enc + 336 | 0;
    $ptr_addr_1182 = $ptr_addr_1_ph;
    label = 63;
    break;
   case 45:
    $14 = $enc + 328 | 0;
    $15 = HEAP32[$14 >> 2] | 0;
    $call112 = FUNCTION_TABLE_iii[$15 & 1023]($enc, $ptr) | 0;
    $tobool113 = ($call112 | 0) == 0;
    if ($tobool113) {
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $add_ptr115 = $ptr + 2 | 0;
    $tok_0_ph = 19;
    $ptr_addr_1_ph = $add_ptr115;
    label = 43;
    break;
   case 47:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 91;
    break;
   case 48:
    $sub_ptr_lhs_cast118 = $end;
    $sub_ptr_rhs_cast119 = $ptr;
    $sub_ptr_sub120 = $sub_ptr_lhs_cast118 - $sub_ptr_rhs_cast119 | 0;
    $cmp121 = ($sub_ptr_sub120 | 0) < 3;
    if ($cmp121) {
      $retval_0 = -2;
      label = 91;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $isNmstrt3 = $enc + 344 | 0;
    $16 = HEAP32[$isNmstrt3 >> 2] | 0;
    $17 = $16;
    $call125 = FUNCTION_TABLE_iii[$17 & 1023]($enc, $ptr) | 0;
    $tobool126 = ($call125 | 0) == 0;
    if ($tobool126) {
      label = 51;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $add_ptr128 = $ptr + 3 | 0;
    $tok_0_ph = 18;
    $ptr_addr_1_ph = $add_ptr128;
    label = 43;
    break;
   case 51:
    $isName3 = $enc + 332 | 0;
    $18 = HEAP32[$isName3 >> 2] | 0;
    $19 = $18;
    $call130 = FUNCTION_TABLE_iii[$19 & 1023]($enc, $ptr) | 0;
    $tobool131 = ($call130 | 0) == 0;
    if ($tobool131) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $add_ptr133 = $ptr + 3 | 0;
    $tok_0_ph = 19;
    $ptr_addr_1_ph = $add_ptr133;
    label = 43;
    break;
   case 53:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 91;
    break;
   case 54:
    $sub_ptr_lhs_cast136 = $end;
    $sub_ptr_rhs_cast137 = $ptr;
    $sub_ptr_sub138 = $sub_ptr_lhs_cast136 - $sub_ptr_rhs_cast137 | 0;
    $cmp139 = ($sub_ptr_sub138 | 0) < 4;
    if ($cmp139) {
      $retval_0 = -2;
      label = 91;
      break;
    } else {
      label = 55;
      break;
    }
   case 55:
    $isNmstrt4 = $enc + 348 | 0;
    $20 = HEAP32[$isNmstrt4 >> 2] | 0;
    $21 = $20;
    $call143 = FUNCTION_TABLE_iii[$21 & 1023]($enc, $ptr) | 0;
    $tobool144 = ($call143 | 0) == 0;
    if ($tobool144) {
      label = 57;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $add_ptr146 = $ptr + 4 | 0;
    $tok_0_ph = 18;
    $ptr_addr_1_ph = $add_ptr146;
    label = 43;
    break;
   case 57:
    $isName4 = $enc + 336 | 0;
    $22 = HEAP32[$isName4 >> 2] | 0;
    $23 = $22;
    $call148 = FUNCTION_TABLE_iii[$23 & 1023]($enc, $ptr) | 0;
    $tobool149 = ($call148 | 0) == 0;
    if ($tobool149) {
      label = 59;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $add_ptr151 = $ptr + 4 | 0;
    $tok_0_ph = 19;
    $ptr_addr_1_ph = $add_ptr151;
    label = 43;
    break;
   case 59:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 91;
    break;
   case 60:
    $add_ptr154 = $ptr + 1 | 0;
    $tok_0_ph = 18;
    $ptr_addr_1_ph = $add_ptr154;
    label = 43;
    break;
   case 61:
    $add_ptr156 = $ptr + 1 | 0;
    $tok_0_ph = 19;
    $ptr_addr_1_ph = $add_ptr156;
    label = 43;
    break;
   case 62:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 91;
    break;
   case 63:
    $24 = HEAP8[$ptr_addr_1182] | 0;
    $idxprom162 = $24 & 255;
    $arrayidx164 = $1 + $idxprom162 | 0;
    $25 = HEAP8[$arrayidx164] | 0;
    $conv165 = $25 & 255;
    if (($conv165 | 0) == 29) {
      label = 64;
      break;
    } else if (($conv165 | 0) == 22 | ($conv165 | 0) == 24 | ($conv165 | 0) == 25 | ($conv165 | 0) == 26 | ($conv165 | 0) == 27) {
      label = 65;
      break;
    } else if (($conv165 | 0) == 5) {
      label = 66;
      break;
    } else if (($conv165 | 0) == 6) {
      label = 70;
      break;
    } else if (($conv165 | 0) == 7) {
      label = 74;
      break;
    } else if (($conv165 | 0) == 11 | ($conv165 | 0) == 32 | ($conv165 | 0) == 35 | ($conv165 | 0) == 36 | ($conv165 | 0) == 20 | ($conv165 | 0) == 30 | ($conv165 | 0) == 21 | ($conv165 | 0) == 9 | ($conv165 | 0) == 10) {
      label = 79;
      break;
    } else if (($conv165 | 0) == 34) {
      label = 80;
      break;
    } else if (($conv165 | 0) == 33) {
      label = 83;
      break;
    } else if (($conv165 | 0) == 15) {
      label = 86;
      break;
    } else {
      label = 89;
      break;
    }
   case 64:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 65:
    $add_ptr168 = $ptr_addr_1182 + 1 | 0;
    $ptr_addr_1_be = $add_ptr168;
    label = 78;
    break;
   case 66:
    $sub_ptr_rhs_cast171 = $ptr_addr_1182;
    $sub_ptr_sub172 = $sub_ptr_lhs_cast170 - $sub_ptr_rhs_cast171 | 0;
    $cmp173 = ($sub_ptr_sub172 | 0) < 2;
    if ($cmp173) {
      $retval_0 = -2;
      label = 91;
      break;
    } else {
      label = 67;
      break;
    }
   case 67:
    $26 = HEAP32[$13 >> 2] | 0;
    $call178 = FUNCTION_TABLE_iii[$26 & 1023]($enc, $ptr_addr_1182) | 0;
    $tobool179 = ($call178 | 0) == 0;
    if ($tobool179) {
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 68:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 69:
    $add_ptr182 = $ptr_addr_1182 + 2 | 0;
    $ptr_addr_1_be = $add_ptr182;
    label = 78;
    break;
   case 70:
    $sub_ptr_rhs_cast185 = $ptr_addr_1182;
    $sub_ptr_sub186 = $sub_ptr_lhs_cast184 - $sub_ptr_rhs_cast185 | 0;
    $cmp187 = ($sub_ptr_sub186 | 0) < 3;
    if ($cmp187) {
      $retval_0 = -2;
      label = 91;
      break;
    } else {
      label = 71;
      break;
    }
   case 71:
    $27 = HEAP32[$isName3191 >> 2] | 0;
    $28 = $27;
    $call192 = FUNCTION_TABLE_iii[$28 & 1023]($enc, $ptr_addr_1182) | 0;
    $tobool193 = ($call192 | 0) == 0;
    if ($tobool193) {
      label = 72;
      break;
    } else {
      label = 73;
      break;
    }
   case 72:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 73:
    $add_ptr196 = $ptr_addr_1182 + 3 | 0;
    $ptr_addr_1_be = $add_ptr196;
    label = 78;
    break;
   case 74:
    $sub_ptr_rhs_cast199 = $ptr_addr_1182;
    $sub_ptr_sub200 = $sub_ptr_lhs_cast198 - $sub_ptr_rhs_cast199 | 0;
    $cmp201 = ($sub_ptr_sub200 | 0) < 4;
    if ($cmp201) {
      $retval_0 = -2;
      label = 91;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $29 = HEAP32[$isName4205 >> 2] | 0;
    $30 = $29;
    $call206 = FUNCTION_TABLE_iii[$30 & 1023]($enc, $ptr_addr_1182) | 0;
    $tobool207 = ($call206 | 0) == 0;
    if ($tobool207) {
      label = 76;
      break;
    } else {
      label = 77;
      break;
    }
   case 76:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 77:
    $add_ptr210 = $ptr_addr_1182 + 4 | 0;
    $ptr_addr_1_be = $add_ptr210;
    label = 78;
    break;
   case 78:
    $cmp160 = ($ptr_addr_1_be | 0) == ($end | 0);
    if ($cmp160) {
      label = 90;
      break;
    } else {
      $ptr_addr_1182 = $ptr_addr_1_be;
      label = 63;
      break;
    }
   case 79:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = $tok_0_ph;
    label = 91;
    break;
   case 80:
    $cmp213 = ($tok_0_ph | 0) == 19;
    if ($cmp213) {
      label = 81;
      break;
    } else {
      label = 82;
      break;
    }
   case 81:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 82:
    $add_ptr217 = $ptr_addr_1182 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr217;
    $retval_0 = 32;
    label = 91;
    break;
   case 83:
    $cmp219 = ($tok_0_ph | 0) == 19;
    if ($cmp219) {
      label = 84;
      break;
    } else {
      label = 85;
      break;
    }
   case 84:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 85:
    $add_ptr223 = $ptr_addr_1182 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr223;
    $retval_0 = 31;
    label = 91;
    break;
   case 86:
    $cmp225 = ($tok_0_ph | 0) == 19;
    if ($cmp225) {
      label = 87;
      break;
    } else {
      label = 88;
      break;
    }
   case 87:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 88:
    $add_ptr229 = $ptr_addr_1182 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr229;
    $retval_0 = 30;
    label = 91;
    break;
   case 89:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1182;
    $retval_0 = 0;
    label = 91;
    break;
   case 90:
    $sub = -$tok_0_ph | 0;
    $retval_0 = $sub;
    label = 91;
    break;
   case 91:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_sameName($enc, $ptr1, $ptr2) {
  $enc = $enc | 0;
  $ptr1 = $ptr1 | 0;
  $ptr2 = $ptr2 | 0;
  var $type = 0, $0 = 0, $ptr1_addr_0 = 0, $ptr2_addr_0 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $incdec_ptr = 0, $incdec_ptr2 = 0, $3 = 0, $cmp = 0, $ptr1_addr_1 = 0, $ptr2_addr_1 = 0, $incdec_ptr6 = 0, $4 = 0, $incdec_ptr8 = 0, $5 = 0, $cmp10 = 0, $ptr1_addr_2 = 0, $ptr2_addr_2 = 0, $6 = 0, $7 = 0, $cmp19 = 0, $incdec_ptr17 = 0, $incdec_ptr15 = 0, $incdec_ptr23 = 0, $8 = 0, $incdec_ptr25 = 0, $9 = 0, $cmp27 = 0, $incdec_ptr32 = 0, $10 = 0, $incdec_ptr34 = 0, $11 = 0, $cmp36 = 0, $12 = 0, $cmp42 = 0, $idxprom46 = 0, $arrayidx48 = 0, $13 = 0, $conv49 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr2_addr_0 = $ptr2;
    $ptr1_addr_0 = $ptr1;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$ptr1_addr_0] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 7) {
      label = 4;
      break;
    } else if (($conv | 0) == 6) {
      $ptr2_addr_1 = $ptr2_addr_0;
      $ptr1_addr_1 = $ptr1_addr_0;
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      $ptr2_addr_2 = $ptr2_addr_0;
      $ptr1_addr_2 = $ptr1_addr_0;
      label = 6;
      break;
    } else if (($conv | 0) == 29 | ($conv | 0) == 22 | ($conv | 0) == 24 | ($conv | 0) == 25 | ($conv | 0) == 26 | ($conv | 0) == 27) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 4:
    $incdec_ptr = $ptr1_addr_0 + 1 | 0;
    $incdec_ptr2 = $ptr2_addr_0 + 1 | 0;
    $3 = HEAP8[$ptr2_addr_0] | 0;
    $cmp = $1 << 24 >> 24 == $3 << 24 >> 24;
    if ($cmp) {
      $ptr2_addr_1 = $incdec_ptr2;
      $ptr1_addr_1 = $incdec_ptr;
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 5:
    $incdec_ptr6 = $ptr1_addr_1 + 1 | 0;
    $4 = HEAP8[$ptr1_addr_1] | 0;
    $incdec_ptr8 = $ptr2_addr_1 + 1 | 0;
    $5 = HEAP8[$ptr2_addr_1] | 0;
    $cmp10 = $4 << 24 >> 24 == $5 << 24 >> 24;
    if ($cmp10) {
      $ptr2_addr_2 = $incdec_ptr8;
      $ptr1_addr_2 = $incdec_ptr6;
      label = 6;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 6:
    $6 = HEAP8[$ptr1_addr_2] | 0;
    $7 = HEAP8[$ptr2_addr_2] | 0;
    $cmp19 = $6 << 24 >> 24 == $7 << 24 >> 24;
    if ($cmp19) {
      label = 7;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 7:
    $incdec_ptr17 = $ptr2_addr_2 + 1 | 0;
    $incdec_ptr15 = $ptr1_addr_2 + 1 | 0;
    $incdec_ptr23 = $ptr1_addr_2 + 2 | 0;
    $8 = HEAP8[$incdec_ptr15] | 0;
    $incdec_ptr25 = $ptr2_addr_2 + 2 | 0;
    $9 = HEAP8[$incdec_ptr17] | 0;
    $cmp27 = $8 << 24 >> 24 == $9 << 24 >> 24;
    if ($cmp27) {
      $ptr2_addr_0 = $incdec_ptr25;
      $ptr1_addr_0 = $incdec_ptr23;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 8:
    $incdec_ptr32 = $ptr2_addr_0 + 1 | 0;
    $10 = HEAP8[$ptr2_addr_0] | 0;
    $incdec_ptr34 = $ptr1_addr_0 + 1 | 0;
    $11 = HEAP8[$ptr1_addr_0] | 0;
    $cmp36 = $10 << 24 >> 24 == $11 << 24 >> 24;
    if ($cmp36) {
      $ptr2_addr_0 = $incdec_ptr32;
      $ptr1_addr_0 = $incdec_ptr34;
      label = 3;
      break;
    } else {
      $retval_0 = 0;
      label = 12;
      break;
    }
   case 9:
    $12 = HEAP8[$ptr2_addr_0] | 0;
    $cmp42 = $1 << 24 >> 24 == $12 << 24 >> 24;
    if ($cmp42) {
      $retval_0 = 1;
      label = 12;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $idxprom46 = $12 & 255;
    $arrayidx48 = $0 + $idxprom46 | 0;
    $13 = HEAP8[$arrayidx48] | 0;
    $conv49 = $13 & 255;
    if (($conv49 | 0) == 5 | ($conv49 | 0) == 6 | ($conv49 | 0) == 7 | ($conv49 | 0) == 29 | ($conv49 | 0) == 22 | ($conv49 | 0) == 24 | ($conv49 | 0) == 25 | ($conv49 | 0) == 26 | ($conv49 | 0) == 27) {
      $retval_0 = 0;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $retval_0 = 1;
    label = 12;
    break;
   case 12:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_nameMatchesAscii($enc, $ptr1, $end1, $ptr2) {
  $enc = $enc | 0;
  $ptr1 = $ptr1 | 0;
  $end1 = $end1 | 0;
  $ptr2 = $ptr2 | 0;
  var $0 = 0, $tobool6 = 0, $cmp7 = 0, $cmp10 = 0, $1 = 0, $ptr2_addr_09 = 0, $ptr1_addr_08 = 0, $2 = 0, $cmp2 = 0, $add_ptr = 0, $incdec_ptr = 0, $3 = 0, $tobool = 0, $cmp = 0, $cmp_lcssa = 0, $conv7 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$ptr2] | 0;
    $tobool6 = $0 << 24 >> 24 == 0;
    $cmp7 = ($ptr1 | 0) == ($end1 | 0);
    if ($tobool6) {
      $cmp_lcssa = $cmp7;
      label = 6;
      break;
    } else {
      $ptr1_addr_08 = $ptr1;
      $ptr2_addr_09 = $ptr2;
      $1 = $0;
      $cmp10 = $cmp7;
      label = 3;
      break;
    }
   case 3:
    if ($cmp10) {
      $retval_0 = 0;
      label = 7;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP8[$ptr1_addr_08] | 0;
    $cmp2 = $2 << 24 >> 24 == $1 << 24 >> 24;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 7;
      break;
    }
   case 5:
    $add_ptr = $ptr1_addr_08 + 1 | 0;
    $incdec_ptr = $ptr2_addr_09 + 1 | 0;
    $3 = HEAP8[$incdec_ptr] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    $cmp = ($add_ptr | 0) == ($end1 | 0);
    if ($tobool) {
      $cmp_lcssa = $cmp;
      label = 6;
      break;
    } else {
      $ptr1_addr_08 = $add_ptr;
      $ptr2_addr_09 = $incdec_ptr;
      $1 = $3;
      $cmp10 = $cmp;
      label = 3;
      break;
    }
   case 6:
    $conv7 = $cmp_lcssa & 1;
    $retval_0 = $conv7;
    label = 7;
    break;
   case 7:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_contentTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $call = 0, $add_ptr2 = 0, $call3 = 0, $add_ptr5 = 0, $cmp6 = 0, $3 = 0, $idxprom10 = 0, $arrayidx12 = 0, $4 = 0, $cmp14 = 0, $add_ptr17 = 0, $add_ptr17_add_ptr5 = 0, $add_ptr20 = 0, $add_ptr22 = 0, $cmp23 = 0, $5 = 0, $cmp28 = 0, $add_ptr32 = 0, $cmp33 = 0, $6 = 0, $cmp38 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp44 = 0, $isInvalid2 = 0, $7 = 0, $8 = 0, $call48 = 0, $tobool = 0, $add_ptr51 = 0, $sub_ptr_lhs_cast53 = 0, $sub_ptr_rhs_cast54 = 0, $sub_ptr_sub55 = 0, $cmp56 = 0, $isInvalid3 = 0, $9 = 0, $10 = 0, $call60 = 0, $tobool61 = 0, $add_ptr64 = 0, $sub_ptr_lhs_cast66 = 0, $sub_ptr_rhs_cast67 = 0, $sub_ptr_sub68 = 0, $cmp69 = 0, $isInvalid4 = 0, $11 = 0, $12 = 0, $call73 = 0, $tobool74 = 0, $add_ptr77 = 0, $add_ptr79 = 0, $ptr_addr_1_ph = 0, $cmp8098 = 0, $sub_ptr_lhs_cast87 = 0, $isInvalid292 = 0, $13 = 0, $sub_ptr_lhs_cast99 = 0, $isInvalid3105 = 0, $14 = 0, $sub_ptr_lhs_cast112 = 0, $isInvalid4118 = 0, $15 = 0, $ptr_addr_199 = 0, $16 = 0, $idxprom82 = 0, $arrayidx84 = 0, $17 = 0, $conv85 = 0, $sub_ptr_rhs_cast88 = 0, $sub_ptr_sub89 = 0, $cmp90 = 0, $18 = 0, $call93 = 0, $tobool94 = 0, $add_ptr97 = 0, $sub_ptr_rhs_cast100 = 0, $sub_ptr_sub101 = 0, $cmp102 = 0, $19 = 0, $call106 = 0, $tobool107 = 0, $add_ptr110 = 0, $sub_ptr_rhs_cast113 = 0, $sub_ptr_sub114 = 0, $cmp115 = 0, $20 = 0, $call119 = 0, $tobool120 = 0, $add_ptr123 = 0, $add_ptr125 = 0, $cmp126 = 0, $21 = 0, $cmp131 = 0, $add_ptr136 = 0, $cmp137 = 0, $22 = 0, $cmp142 = 0, $add_ptr152 = 0, $ptr_addr_1_be = 0, $cmp80 = 0, $ptr_addr_1_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 52;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 2) {
      label = 4;
      break;
    } else if (($conv | 0) == 3) {
      label = 5;
      break;
    } else if (($conv | 0) == 9) {
      label = 6;
      break;
    } else if (($conv | 0) == 10) {
      label = 8;
      break;
    } else if (($conv | 0) == 4) {
      label = 9;
      break;
    } else if (($conv | 0) == 5) {
      label = 14;
      break;
    } else if (($conv | 0) == 6) {
      label = 18;
      break;
    } else if (($conv | 0) == 7) {
      label = 22;
      break;
    } else if (($conv | 0) == 0 | ($conv | 0) == 1 | ($conv | 0) == 8) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 4:
    $add_ptr = $ptr + 1 | 0;
    $call = _normal_scanLt($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 52;
    break;
   case 5:
    $add_ptr2 = $ptr + 1 | 0;
    $call3 = _normal_scanRef($enc, $add_ptr2, $end, $nextTokPtr) | 0;
    $retval_0 = $call3;
    label = 52;
    break;
   case 6:
    $add_ptr5 = $ptr + 1 | 0;
    $cmp6 = ($add_ptr5 | 0) == ($end | 0);
    if ($cmp6) {
      $retval_0 = -3;
      label = 52;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $3 = HEAP8[$add_ptr5] | 0;
    $idxprom10 = $3 & 255;
    $arrayidx12 = $1 + $idxprom10 | 0;
    $4 = HEAP8[$arrayidx12] | 0;
    $cmp14 = $4 << 24 >> 24 == 10;
    $add_ptr17 = $ptr + 2 | 0;
    $add_ptr17_add_ptr5 = $cmp14 ? $add_ptr17 : $add_ptr5;
    HEAP32[$nextTokPtr >> 2] = $add_ptr17_add_ptr5;
    $retval_0 = 7;
    label = 52;
    break;
   case 8:
    $add_ptr20 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr20;
    $retval_0 = 7;
    label = 52;
    break;
   case 9:
    $add_ptr22 = $ptr + 1 | 0;
    $cmp23 = ($add_ptr22 | 0) == ($end | 0);
    if ($cmp23) {
      $retval_0 = -5;
      label = 52;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $5 = HEAP8[$add_ptr22] | 0;
    $cmp28 = $5 << 24 >> 24 == 93;
    if ($cmp28) {
      label = 11;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr22;
      label = 28;
      break;
    }
   case 11:
    $add_ptr32 = $ptr + 2 | 0;
    $cmp33 = ($add_ptr32 | 0) == ($end | 0);
    if ($cmp33) {
      $retval_0 = -5;
      label = 52;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $6 = HEAP8[$add_ptr32] | 0;
    $cmp38 = $6 << 24 >> 24 == 62;
    if ($cmp38) {
      label = 13;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr22;
      label = 28;
      break;
    }
   case 13:
    HEAP32[$nextTokPtr >> 2] = $add_ptr32;
    $retval_0 = 0;
    label = 52;
    break;
   case 14:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp44 = ($sub_ptr_sub | 0) < 2;
    if ($cmp44) {
      $retval_0 = -2;
      label = 52;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $isInvalid2 = $enc + 352 | 0;
    $7 = $isInvalid2;
    $8 = HEAP32[$7 >> 2] | 0;
    $call48 = FUNCTION_TABLE_iii[$8 & 1023]($enc, $ptr) | 0;
    $tobool = ($call48 | 0) == 0;
    if ($tobool) {
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 52;
    break;
   case 17:
    $add_ptr51 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr51;
    label = 28;
    break;
   case 18:
    $sub_ptr_lhs_cast53 = $end;
    $sub_ptr_rhs_cast54 = $ptr;
    $sub_ptr_sub55 = $sub_ptr_lhs_cast53 - $sub_ptr_rhs_cast54 | 0;
    $cmp56 = ($sub_ptr_sub55 | 0) < 3;
    if ($cmp56) {
      $retval_0 = -2;
      label = 52;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $isInvalid3 = $enc + 356 | 0;
    $9 = $isInvalid3;
    $10 = HEAP32[$9 >> 2] | 0;
    $call60 = FUNCTION_TABLE_iii[$10 & 1023]($enc, $ptr) | 0;
    $tobool61 = ($call60 | 0) == 0;
    if ($tobool61) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 52;
    break;
   case 21:
    $add_ptr64 = $ptr + 3 | 0;
    $ptr_addr_1_ph = $add_ptr64;
    label = 28;
    break;
   case 22:
    $sub_ptr_lhs_cast66 = $end;
    $sub_ptr_rhs_cast67 = $ptr;
    $sub_ptr_sub68 = $sub_ptr_lhs_cast66 - $sub_ptr_rhs_cast67 | 0;
    $cmp69 = ($sub_ptr_sub68 | 0) < 4;
    if ($cmp69) {
      $retval_0 = -2;
      label = 52;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $isInvalid4 = $enc + 360 | 0;
    $11 = $isInvalid4;
    $12 = HEAP32[$11 >> 2] | 0;
    $call73 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr) | 0;
    $tobool74 = ($call73 | 0) == 0;
    if ($tobool74) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 52;
    break;
   case 25:
    $add_ptr77 = $ptr + 4 | 0;
    $ptr_addr_1_ph = $add_ptr77;
    label = 28;
    break;
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 52;
    break;
   case 27:
    $add_ptr79 = $ptr + 1 | 0;
    $ptr_addr_1_ph = $add_ptr79;
    label = 28;
    break;
   case 28:
    $cmp8098 = ($ptr_addr_1_ph | 0) == ($end | 0);
    if ($cmp8098) {
      $ptr_addr_1_lcssa = $ptr_addr_1_ph;
      label = 51;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $sub_ptr_lhs_cast87 = $end;
    $isInvalid292 = $enc + 352 | 0;
    $13 = $isInvalid292;
    $sub_ptr_lhs_cast99 = $end;
    $isInvalid3105 = $enc + 356 | 0;
    $14 = $isInvalid3105;
    $sub_ptr_lhs_cast112 = $end;
    $isInvalid4118 = $enc + 360 | 0;
    $15 = $isInvalid4118;
    $ptr_addr_199 = $ptr_addr_1_ph;
    label = 30;
    break;
   case 30:
    $16 = HEAP8[$ptr_addr_199] | 0;
    $idxprom82 = $16 & 255;
    $arrayidx84 = $1 + $idxprom82 | 0;
    $17 = HEAP8[$arrayidx84] | 0;
    $conv85 = $17 & 255;
    if (($conv85 | 0) == 5) {
      label = 31;
      break;
    } else if (($conv85 | 0) == 6) {
      label = 35;
      break;
    } else if (($conv85 | 0) == 7) {
      label = 39;
      break;
    } else if (($conv85 | 0) == 4) {
      label = 43;
      break;
    } else if (($conv85 | 0) == 3 | ($conv85 | 0) == 2 | ($conv85 | 0) == 0 | ($conv85 | 0) == 1 | ($conv85 | 0) == 8 | ($conv85 | 0) == 9 | ($conv85 | 0) == 10) {
      label = 48;
      break;
    } else {
      label = 49;
      break;
    }
   case 31:
    $sub_ptr_rhs_cast88 = $ptr_addr_199;
    $sub_ptr_sub89 = $sub_ptr_lhs_cast87 - $sub_ptr_rhs_cast88 | 0;
    $cmp90 = ($sub_ptr_sub89 | 0) < 2;
    if ($cmp90) {
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $18 = HEAP32[$13 >> 2] | 0;
    $call93 = FUNCTION_TABLE_iii[$18 & 1023]($enc, $ptr_addr_199) | 0;
    $tobool94 = ($call93 | 0) == 0;
    if ($tobool94) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_199;
    $retval_0 = 6;
    label = 52;
    break;
   case 34:
    $add_ptr97 = $ptr_addr_199 + 2 | 0;
    $ptr_addr_1_be = $add_ptr97;
    label = 50;
    break;
   case 35:
    $sub_ptr_rhs_cast100 = $ptr_addr_199;
    $sub_ptr_sub101 = $sub_ptr_lhs_cast99 - $sub_ptr_rhs_cast100 | 0;
    $cmp102 = ($sub_ptr_sub101 | 0) < 3;
    if ($cmp102) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $19 = HEAP32[$14 >> 2] | 0;
    $call106 = FUNCTION_TABLE_iii[$19 & 1023]($enc, $ptr_addr_199) | 0;
    $tobool107 = ($call106 | 0) == 0;
    if ($tobool107) {
      label = 38;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_199;
    $retval_0 = 6;
    label = 52;
    break;
   case 38:
    $add_ptr110 = $ptr_addr_199 + 3 | 0;
    $ptr_addr_1_be = $add_ptr110;
    label = 50;
    break;
   case 39:
    $sub_ptr_rhs_cast113 = $ptr_addr_199;
    $sub_ptr_sub114 = $sub_ptr_lhs_cast112 - $sub_ptr_rhs_cast113 | 0;
    $cmp115 = ($sub_ptr_sub114 | 0) < 4;
    if ($cmp115) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $20 = HEAP32[$15 >> 2] | 0;
    $call119 = FUNCTION_TABLE_iii[$20 & 1023]($enc, $ptr_addr_199) | 0;
    $tobool120 = ($call119 | 0) == 0;
    if ($tobool120) {
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_199;
    $retval_0 = 6;
    label = 52;
    break;
   case 42:
    $add_ptr123 = $ptr_addr_199 + 4 | 0;
    $ptr_addr_1_be = $add_ptr123;
    label = 50;
    break;
   case 43:
    $add_ptr125 = $ptr_addr_199 + 1 | 0;
    $cmp126 = ($add_ptr125 | 0) == ($end | 0);
    if ($cmp126) {
      label = 48;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $21 = HEAP8[$add_ptr125] | 0;
    $cmp131 = $21 << 24 >> 24 == 93;
    if ($cmp131) {
      label = 45;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr125;
      label = 50;
      break;
    }
   case 45:
    $add_ptr136 = $ptr_addr_199 + 2 | 0;
    $cmp137 = ($add_ptr136 | 0) == ($end | 0);
    if ($cmp137) {
      label = 48;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $22 = HEAP8[$add_ptr136] | 0;
    $cmp142 = $22 << 24 >> 24 == 62;
    if ($cmp142) {
      label = 47;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr125;
      label = 50;
      break;
    }
   case 47:
    HEAP32[$nextTokPtr >> 2] = $add_ptr136;
    $retval_0 = 0;
    label = 52;
    break;
   case 48:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_199;
    $retval_0 = 6;
    label = 52;
    break;
   case 49:
    $add_ptr152 = $ptr_addr_199 + 1 | 0;
    $ptr_addr_1_be = $add_ptr152;
    label = 50;
    break;
   case 50:
    $cmp80 = ($ptr_addr_1_be | 0) == ($end | 0);
    if ($cmp80) {
      $ptr_addr_1_lcssa = $ptr_addr_1_be;
      label = 51;
      break;
    } else {
      $ptr_addr_199 = $ptr_addr_1_be;
      label = 30;
      break;
    }
   case 51:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1_lcssa;
    $retval_0 = 6;
    label = 52;
    break;
   case 52:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_cdataSectionTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $cmp1 = 0, $3 = 0, $cmp6 = 0, $add_ptr10 = 0, $cmp11 = 0, $4 = 0, $cmp16 = 0, $add_ptr21 = 0, $add_ptr23 = 0, $cmp24 = 0, $5 = 0, $idxprom28 = 0, $arrayidx30 = 0, $6 = 0, $cmp32 = 0, $add_ptr35 = 0, $add_ptr35_add_ptr23 = 0, $add_ptr38 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp40 = 0, $isInvalid2 = 0, $7 = 0, $8 = 0, $call = 0, $tobool = 0, $add_ptr46 = 0, $sub_ptr_lhs_cast48 = 0, $sub_ptr_rhs_cast49 = 0, $sub_ptr_sub50 = 0, $cmp51 = 0, $isInvalid3 = 0, $9 = 0, $10 = 0, $call55 = 0, $tobool56 = 0, $add_ptr59 = 0, $sub_ptr_lhs_cast61 = 0, $sub_ptr_rhs_cast62 = 0, $sub_ptr_sub63 = 0, $cmp64 = 0, $isInvalid4 = 0, $11 = 0, $12 = 0, $call68 = 0, $tobool69 = 0, $add_ptr72 = 0, $add_ptr74 = 0, $ptr_addr_1_ph = 0, $cmp7581 = 0, $sub_ptr_lhs_cast82 = 0, $isInvalid287 = 0, $13 = 0, $sub_ptr_lhs_cast94 = 0, $isInvalid3100 = 0, $14 = 0, $sub_ptr_lhs_cast107 = 0, $isInvalid4113 = 0, $15 = 0, $ptr_addr_182 = 0, $16 = 0, $idxprom77 = 0, $arrayidx79 = 0, $17 = 0, $conv80 = 0, $sub_ptr_rhs_cast83 = 0, $sub_ptr_sub84 = 0, $cmp85 = 0, $18 = 0, $call88 = 0, $tobool89 = 0, $add_ptr92 = 0, $sub_ptr_rhs_cast95 = 0, $sub_ptr_sub96 = 0, $cmp97 = 0, $19 = 0, $call101 = 0, $tobool102 = 0, $add_ptr105 = 0, $sub_ptr_rhs_cast108 = 0, $sub_ptr_sub109 = 0, $cmp110 = 0, $20 = 0, $call114 = 0, $tobool115 = 0, $add_ptr118 = 0, $add_ptr121 = 0, $ptr_addr_1_be = 0, $cmp75 = 0, $ptr_addr_1_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 45;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 4) {
      label = 4;
      break;
    } else if (($conv | 0) == 9) {
      label = 9;
      break;
    } else if (($conv | 0) == 10) {
      label = 11;
      break;
    } else if (($conv | 0) == 5) {
      label = 12;
      break;
    } else if (($conv | 0) == 6) {
      label = 16;
      break;
    } else if (($conv | 0) == 7) {
      label = 20;
      break;
    } else if (($conv | 0) == 0 | ($conv | 0) == 1 | ($conv | 0) == 8) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 4:
    $add_ptr = $ptr + 1 | 0;
    $cmp1 = ($add_ptr | 0) == ($end | 0);
    if ($cmp1) {
      $retval_0 = -1;
      label = 45;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = HEAP8[$add_ptr] | 0;
    $cmp6 = $3 << 24 >> 24 == 93;
    if ($cmp6) {
      label = 6;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr;
      label = 26;
      break;
    }
   case 6:
    $add_ptr10 = $ptr + 2 | 0;
    $cmp11 = ($add_ptr10 | 0) == ($end | 0);
    if ($cmp11) {
      $retval_0 = -1;
      label = 45;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $4 = HEAP8[$add_ptr10] | 0;
    $cmp16 = $4 << 24 >> 24 == 62;
    if ($cmp16) {
      label = 8;
      break;
    } else {
      $ptr_addr_1_ph = $add_ptr;
      label = 26;
      break;
    }
   case 8:
    $add_ptr21 = $ptr + 3 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr21;
    $retval_0 = 40;
    label = 45;
    break;
   case 9:
    $add_ptr23 = $ptr + 1 | 0;
    $cmp24 = ($add_ptr23 | 0) == ($end | 0);
    if ($cmp24) {
      $retval_0 = -1;
      label = 45;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $5 = HEAP8[$add_ptr23] | 0;
    $idxprom28 = $5 & 255;
    $arrayidx30 = $1 + $idxprom28 | 0;
    $6 = HEAP8[$arrayidx30] | 0;
    $cmp32 = $6 << 24 >> 24 == 10;
    $add_ptr35 = $ptr + 2 | 0;
    $add_ptr35_add_ptr23 = $cmp32 ? $add_ptr35 : $add_ptr23;
    HEAP32[$nextTokPtr >> 2] = $add_ptr35_add_ptr23;
    $retval_0 = 7;
    label = 45;
    break;
   case 11:
    $add_ptr38 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr38;
    $retval_0 = 7;
    label = 45;
    break;
   case 12:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp40 = ($sub_ptr_sub | 0) < 2;
    if ($cmp40) {
      $retval_0 = -2;
      label = 45;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isInvalid2 = $enc + 352 | 0;
    $7 = $isInvalid2;
    $8 = HEAP32[$7 >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$8 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 45;
    break;
   case 15:
    $add_ptr46 = $ptr + 2 | 0;
    $ptr_addr_1_ph = $add_ptr46;
    label = 26;
    break;
   case 16:
    $sub_ptr_lhs_cast48 = $end;
    $sub_ptr_rhs_cast49 = $ptr;
    $sub_ptr_sub50 = $sub_ptr_lhs_cast48 - $sub_ptr_rhs_cast49 | 0;
    $cmp51 = ($sub_ptr_sub50 | 0) < 3;
    if ($cmp51) {
      $retval_0 = -2;
      label = 45;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isInvalid3 = $enc + 356 | 0;
    $9 = $isInvalid3;
    $10 = HEAP32[$9 >> 2] | 0;
    $call55 = FUNCTION_TABLE_iii[$10 & 1023]($enc, $ptr) | 0;
    $tobool56 = ($call55 | 0) == 0;
    if ($tobool56) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 45;
    break;
   case 19:
    $add_ptr59 = $ptr + 3 | 0;
    $ptr_addr_1_ph = $add_ptr59;
    label = 26;
    break;
   case 20:
    $sub_ptr_lhs_cast61 = $end;
    $sub_ptr_rhs_cast62 = $ptr;
    $sub_ptr_sub63 = $sub_ptr_lhs_cast61 - $sub_ptr_rhs_cast62 | 0;
    $cmp64 = ($sub_ptr_sub63 | 0) < 4;
    if ($cmp64) {
      $retval_0 = -2;
      label = 45;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $isInvalid4 = $enc + 360 | 0;
    $11 = $isInvalid4;
    $12 = HEAP32[$11 >> 2] | 0;
    $call68 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr) | 0;
    $tobool69 = ($call68 | 0) == 0;
    if ($tobool69) {
      label = 23;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 45;
    break;
   case 23:
    $add_ptr72 = $ptr + 4 | 0;
    $ptr_addr_1_ph = $add_ptr72;
    label = 26;
    break;
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 45;
    break;
   case 25:
    $add_ptr74 = $ptr + 1 | 0;
    $ptr_addr_1_ph = $add_ptr74;
    label = 26;
    break;
   case 26:
    $cmp7581 = ($ptr_addr_1_ph | 0) == ($end | 0);
    if ($cmp7581) {
      $ptr_addr_1_lcssa = $ptr_addr_1_ph;
      label = 44;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $sub_ptr_lhs_cast82 = $end;
    $isInvalid287 = $enc + 352 | 0;
    $13 = $isInvalid287;
    $sub_ptr_lhs_cast94 = $end;
    $isInvalid3100 = $enc + 356 | 0;
    $14 = $isInvalid3100;
    $sub_ptr_lhs_cast107 = $end;
    $isInvalid4113 = $enc + 360 | 0;
    $15 = $isInvalid4113;
    $ptr_addr_182 = $ptr_addr_1_ph;
    label = 28;
    break;
   case 28:
    $16 = HEAP8[$ptr_addr_182] | 0;
    $idxprom77 = $16 & 255;
    $arrayidx79 = $1 + $idxprom77 | 0;
    $17 = HEAP8[$arrayidx79] | 0;
    $conv80 = $17 & 255;
    if (($conv80 | 0) == 5) {
      label = 29;
      break;
    } else if (($conv80 | 0) == 6) {
      label = 33;
      break;
    } else if (($conv80 | 0) == 7) {
      label = 37;
      break;
    } else if (($conv80 | 0) == 0 | ($conv80 | 0) == 1 | ($conv80 | 0) == 8 | ($conv80 | 0) == 9 | ($conv80 | 0) == 10 | ($conv80 | 0) == 4) {
      label = 41;
      break;
    } else {
      label = 42;
      break;
    }
   case 29:
    $sub_ptr_rhs_cast83 = $ptr_addr_182;
    $sub_ptr_sub84 = $sub_ptr_lhs_cast82 - $sub_ptr_rhs_cast83 | 0;
    $cmp85 = ($sub_ptr_sub84 | 0) < 2;
    if ($cmp85) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $18 = HEAP32[$13 >> 2] | 0;
    $call88 = FUNCTION_TABLE_iii[$18 & 1023]($enc, $ptr_addr_182) | 0;
    $tobool89 = ($call88 | 0) == 0;
    if ($tobool89) {
      label = 32;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_182;
    $retval_0 = 6;
    label = 45;
    break;
   case 32:
    $add_ptr92 = $ptr_addr_182 + 2 | 0;
    $ptr_addr_1_be = $add_ptr92;
    label = 43;
    break;
   case 33:
    $sub_ptr_rhs_cast95 = $ptr_addr_182;
    $sub_ptr_sub96 = $sub_ptr_lhs_cast94 - $sub_ptr_rhs_cast95 | 0;
    $cmp97 = ($sub_ptr_sub96 | 0) < 3;
    if ($cmp97) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $19 = HEAP32[$14 >> 2] | 0;
    $call101 = FUNCTION_TABLE_iii[$19 & 1023]($enc, $ptr_addr_182) | 0;
    $tobool102 = ($call101 | 0) == 0;
    if ($tobool102) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_182;
    $retval_0 = 6;
    label = 45;
    break;
   case 36:
    $add_ptr105 = $ptr_addr_182 + 3 | 0;
    $ptr_addr_1_be = $add_ptr105;
    label = 43;
    break;
   case 37:
    $sub_ptr_rhs_cast108 = $ptr_addr_182;
    $sub_ptr_sub109 = $sub_ptr_lhs_cast107 - $sub_ptr_rhs_cast108 | 0;
    $cmp110 = ($sub_ptr_sub109 | 0) < 4;
    if ($cmp110) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $20 = HEAP32[$15 >> 2] | 0;
    $call114 = FUNCTION_TABLE_iii[$20 & 1023]($enc, $ptr_addr_182) | 0;
    $tobool115 = ($call114 | 0) == 0;
    if ($tobool115) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_182;
    $retval_0 = 6;
    label = 45;
    break;
   case 40:
    $add_ptr118 = $ptr_addr_182 + 4 | 0;
    $ptr_addr_1_be = $add_ptr118;
    label = 43;
    break;
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_182;
    $retval_0 = 6;
    label = 45;
    break;
   case 42:
    $add_ptr121 = $ptr_addr_182 + 1 | 0;
    $ptr_addr_1_be = $add_ptr121;
    label = 43;
    break;
   case 43:
    $cmp75 = ($ptr_addr_1_be | 0) == ($end | 0);
    if ($cmp75) {
      $ptr_addr_1_lcssa = $ptr_addr_1_be;
      label = 44;
      break;
    } else {
      $ptr_addr_182 = $ptr_addr_1_be;
      label = 28;
      break;
    }
   case 44:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1_lcssa;
    $retval_0 = 6;
    label = 45;
    break;
   case 45:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_attributeValueTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $cmp148 = 0, $type = 0, $0 = 0, $ptr_addr_049 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $add_ptr3 = 0, $add_ptr5 = 0, $cmp7 = 0, $add_ptr10 = 0, $call = 0, $cmp14 = 0, $add_ptr17 = 0, $cmp20 = 0, $add_ptr23 = 0, $cmp24 = 0, $3 = 0, $idxprom28 = 0, $arrayidx30 = 0, $4 = 0, $cmp32 = 0, $add_ptr35 = 0, $add_ptr35_add_ptr23 = 0, $cmp39 = 0, $add_ptr42 = 0, $add_ptr44 = 0, $ptr_addr_0_be = 0, $cmp1 = 0, $ptr_addr_0_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 26;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp148 = ($ptr | 0) == ($end | 0);
    if ($cmp148) {
      $ptr_addr_0_lcssa = $ptr;
      label = 25;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_049 = $ptr;
    label = 5;
    break;
   case 5:
    $1 = HEAP8[$ptr_addr_049] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 5) {
      label = 6;
      break;
    } else if (($conv | 0) == 6) {
      label = 7;
      break;
    } else if (($conv | 0) == 7) {
      label = 8;
      break;
    } else if (($conv | 0) == 3) {
      label = 9;
      break;
    } else if (($conv | 0) == 2) {
      label = 12;
      break;
    } else if (($conv | 0) == 10) {
      label = 13;
      break;
    } else if (($conv | 0) == 9) {
      label = 16;
      break;
    } else if (($conv | 0) == 21) {
      label = 20;
      break;
    } else {
      label = 23;
      break;
    }
   case 6:
    $add_ptr = $ptr_addr_049 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 24;
    break;
   case 7:
    $add_ptr3 = $ptr_addr_049 + 3 | 0;
    $ptr_addr_0_be = $add_ptr3;
    label = 24;
    break;
   case 8:
    $add_ptr5 = $ptr_addr_049 + 4 | 0;
    $ptr_addr_0_be = $add_ptr5;
    label = 24;
    break;
   case 9:
    $cmp7 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp7) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $add_ptr10 = $ptr_addr_049 + 1 | 0;
    $call = _normal_scanRef($enc, $add_ptr10, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 26;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 26;
    break;
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 0;
    label = 26;
    break;
   case 13:
    $cmp14 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp14) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $add_ptr17 = $ptr_addr_049 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr17;
    $retval_0 = 7;
    label = 26;
    break;
   case 15:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 26;
    break;
   case 16:
    $cmp20 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp20) {
      label = 17;
      break;
    } else {
      label = 19;
      break;
    }
   case 17:
    $add_ptr23 = $ptr_addr_049 + 1 | 0;
    $cmp24 = ($add_ptr23 | 0) == ($end | 0);
    if ($cmp24) {
      $retval_0 = -3;
      label = 26;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $3 = HEAP8[$add_ptr23] | 0;
    $idxprom28 = $3 & 255;
    $arrayidx30 = $0 + $idxprom28 | 0;
    $4 = HEAP8[$arrayidx30] | 0;
    $cmp32 = $4 << 24 >> 24 == 10;
    $add_ptr35 = $ptr_addr_049 + 2 | 0;
    $add_ptr35_add_ptr23 = $cmp32 ? $add_ptr35 : $add_ptr23;
    HEAP32[$nextTokPtr >> 2] = $add_ptr35_add_ptr23;
    $retval_0 = 7;
    label = 26;
    break;
   case 19:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 26;
    break;
   case 20:
    $cmp39 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp39) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    $add_ptr42 = $ptr_addr_049 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr42;
    $retval_0 = 39;
    label = 26;
    break;
   case 22:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 26;
    break;
   case 23:
    $add_ptr44 = $ptr_addr_049 + 1 | 0;
    $ptr_addr_0_be = $add_ptr44;
    label = 24;
    break;
   case 24:
    $cmp1 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp1) {
      $ptr_addr_0_lcssa = $ptr_addr_0_be;
      label = 25;
      break;
    } else {
      $ptr_addr_049 = $ptr_addr_0_be;
      label = 5;
      break;
    }
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0_lcssa;
    $retval_0 = 6;
    label = 26;
    break;
   case 26:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_entityValueTok($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $cmp148 = 0, $type = 0, $0 = 0, $ptr_addr_049 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $add_ptr3 = 0, $add_ptr5 = 0, $cmp7 = 0, $add_ptr10 = 0, $call = 0, $cmp13 = 0, $add_ptr16 = 0, $call17 = 0, $cmp18 = 0, $cond = 0, $cmp22 = 0, $add_ptr25 = 0, $cmp28 = 0, $add_ptr31 = 0, $cmp32 = 0, $3 = 0, $idxprom36 = 0, $arrayidx38 = 0, $4 = 0, $cmp40 = 0, $add_ptr43 = 0, $add_ptr43_add_ptr31 = 0, $add_ptr46 = 0, $ptr_addr_0_be = 0, $cmp1 = 0, $ptr_addr_0_lcssa = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 25;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp148 = ($ptr | 0) == ($end | 0);
    if ($cmp148) {
      $ptr_addr_0_lcssa = $ptr;
      label = 24;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_049 = $ptr;
    label = 5;
    break;
   case 5:
    $1 = HEAP8[$ptr_addr_049] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 5) {
      label = 6;
      break;
    } else if (($conv | 0) == 6) {
      label = 7;
      break;
    } else if (($conv | 0) == 7) {
      label = 8;
      break;
    } else if (($conv | 0) == 3) {
      label = 9;
      break;
    } else if (($conv | 0) == 30) {
      label = 12;
      break;
    } else if (($conv | 0) == 10) {
      label = 15;
      break;
    } else if (($conv | 0) == 9) {
      label = 18;
      break;
    } else {
      label = 22;
      break;
    }
   case 6:
    $add_ptr = $ptr_addr_049 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 23;
    break;
   case 7:
    $add_ptr3 = $ptr_addr_049 + 3 | 0;
    $ptr_addr_0_be = $add_ptr3;
    label = 23;
    break;
   case 8:
    $add_ptr5 = $ptr_addr_049 + 4 | 0;
    $ptr_addr_0_be = $add_ptr5;
    label = 23;
    break;
   case 9:
    $cmp7 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp7) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    $add_ptr10 = $ptr_addr_049 + 1 | 0;
    $call = _normal_scanRef($enc, $add_ptr10, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 25;
    break;
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 25;
    break;
   case 12:
    $cmp13 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp13) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $add_ptr16 = $ptr_addr_049 + 1 | 0;
    $call17 = _normal_scanPercent($enc, $add_ptr16, $end, $nextTokPtr) | 0;
    $cmp18 = ($call17 | 0) == 22;
    $cond = $cmp18 ? 0 : $call17;
    $retval_0 = $cond;
    label = 25;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 25;
    break;
   case 15:
    $cmp22 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp22) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $add_ptr25 = $ptr_addr_049 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr25;
    $retval_0 = 7;
    label = 25;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 25;
    break;
   case 18:
    $cmp28 = ($ptr_addr_049 | 0) == ($ptr | 0);
    if ($cmp28) {
      label = 19;
      break;
    } else {
      label = 21;
      break;
    }
   case 19:
    $add_ptr31 = $ptr_addr_049 + 1 | 0;
    $cmp32 = ($add_ptr31 | 0) == ($end | 0);
    if ($cmp32) {
      $retval_0 = -3;
      label = 25;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $3 = HEAP8[$add_ptr31] | 0;
    $idxprom36 = $3 & 255;
    $arrayidx38 = $0 + $idxprom36 | 0;
    $4 = HEAP8[$arrayidx38] | 0;
    $cmp40 = $4 << 24 >> 24 == 10;
    $add_ptr43 = $ptr_addr_049 + 2 | 0;
    $add_ptr43_add_ptr31 = $cmp40 ? $add_ptr43 : $add_ptr31;
    HEAP32[$nextTokPtr >> 2] = $add_ptr43_add_ptr31;
    $retval_0 = 7;
    label = 25;
    break;
   case 21:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_049;
    $retval_0 = 6;
    label = 25;
    break;
   case 22:
    $add_ptr46 = $ptr_addr_049 + 1 | 0;
    $ptr_addr_0_be = $add_ptr46;
    label = 23;
    break;
   case 23:
    $cmp1 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp1) {
      $ptr_addr_0_lcssa = $ptr_addr_0_be;
      label = 24;
      break;
    } else {
      $ptr_addr_049 = $ptr_addr_0_be;
      label = 5;
      break;
    }
   case 24:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0_lcssa;
    $retval_0 = 6;
    label = 25;
    break;
   case 25:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_nameLength($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $type = 0, $0 = 0, $ptr_addr_0 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $add_ptr2 = 0, $add_ptr4 = 0, $add_ptr6 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$ptr_addr_0] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 5) {
      label = 4;
      break;
    } else if (($conv | 0) == 6) {
      label = 5;
      break;
    } else if (($conv | 0) == 7) {
      label = 6;
      break;
    } else if (($conv | 0) == 29 | ($conv | 0) == 22 | ($conv | 0) == 24 | ($conv | 0) == 25 | ($conv | 0) == 26 | ($conv | 0) == 27) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $add_ptr = $ptr_addr_0 + 2 | 0;
    $ptr_addr_0 = $add_ptr;
    label = 3;
    break;
   case 5:
    $add_ptr2 = $ptr_addr_0 + 3 | 0;
    $ptr_addr_0 = $add_ptr2;
    label = 3;
    break;
   case 6:
    $add_ptr4 = $ptr_addr_0 + 4 | 0;
    $ptr_addr_0 = $add_ptr4;
    label = 3;
    break;
   case 7:
    $add_ptr6 = $ptr_addr_0 + 1 | 0;
    $ptr_addr_0 = $add_ptr6;
    label = 3;
    break;
   case 8:
    $sub_ptr_lhs_cast = $ptr_addr_0;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    return $sub_ptr_sub | 0;
  }
  return 0;
}
function _normal_skipS($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $type = 0, $0 = 0, $ptr_addr_0 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_0 = $ptr;
    label = 3;
    break;
   case 3:
    $1 = HEAP8[$ptr_addr_0] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 10 | ($conv | 0) == 9 | ($conv | 0) == 21) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $add_ptr = $ptr_addr_0 + 1 | 0;
    $ptr_addr_0 = $add_ptr;
    label = 3;
    break;
   case 5:
    return $ptr_addr_0 | 0;
  }
  return 0;
}
function _normal_getAtts($enc, $ptr, $attsMax, $atts) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $attsMax = $attsMax | 0;
  $atts = $atts | 0;
  var $type = 0, $0 = 0, $ptr_pn = 0, $state_0 = 0, $nAtts_0 = 0, $open_0 = 0, $ptr_addr_0 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $cmp = 0, $cmp2 = 0, $name = 0, $normalized = 0, $state_1 = 0, $add_ptr8 = 0, $cmp10 = 0, $cmp13 = 0, $name17 = 0, $normalized19 = 0, $state_2 = 0, $add_ptr22 = 0, $cmp24 = 0, $cmp27 = 0, $name31 = 0, $normalized33 = 0, $state_3 = 0, $add_ptr36 = 0, $cmp38 = 0, $cmp41 = 0, $name45 = 0, $normalized47 = 0, $cmp51 = 0, $cmp54 = 0, $add_ptr57 = 0, $valuePtr = 0, $cmp60 = 0, $cmp63 = 0, $valueEnd = 0, $inc = 0, $cmp71 = 0, $cmp74 = 0, $add_ptr77 = 0, $valuePtr79 = 0, $cmp82 = 0, $cmp85 = 0, $valueEnd89 = 0, $inc91 = 0, $cmp95 = 0, $normalized99 = 0, $cmp102 = 0, $cmp106 = 0, $cmp108 = 0, $or_cond = 0, $normalized112 = 0, $3 = 0, $tobool = 0, $valuePtr116 = 0, $4 = 0, $cmp117 = 0, $cmp120 = 0, $or_cond87 = 0, $add_ptr123 = 0, $5 = 0, $cmp125 = 0, $idxprom129 = 0, $arrayidx131 = 0, $6 = 0, $conv132 = 0, $cmp133 = 0, $cmp141 = 0, $cmp145 = 0, $cmp148 = 0, $or_cond88 = 0, $normalized152 = 0, $cmp156 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $type = $enc + 72 | 0;
    $0 = $type;
    $open_0 = 0;
    $nAtts_0 = 0;
    $state_0 = 1;
    $ptr_pn = $ptr;
    label = 3;
    break;
   case 3:
    $ptr_addr_0 = $ptr_pn + 1 | 0;
    $1 = HEAP8[$ptr_addr_0] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 5) {
      label = 4;
      break;
    } else if (($conv | 0) == 6) {
      label = 8;
      break;
    } else if (($conv | 0) == 7) {
      label = 12;
      break;
    } else if (($conv | 0) == 29 | ($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 16;
      break;
    } else if (($conv | 0) == 12) {
      label = 19;
      break;
    } else if (($conv | 0) == 13) {
      label = 26;
      break;
    } else if (($conv | 0) == 3) {
      label = 33;
      break;
    } else if (($conv | 0) == 21) {
      label = 35;
      break;
    } else if (($conv | 0) == 9 | ($conv | 0) == 10) {
      label = 42;
      break;
    } else if (($conv | 0) == 11 | ($conv | 0) == 17) {
      label = 45;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 4:
    $cmp = ($state_0 | 0) == 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      $state_1 = $state_0;
      label = 7;
      break;
    }
   case 5:
    $cmp2 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp2) {
      label = 6;
      break;
    } else {
      $state_1 = 1;
      label = 7;
      break;
    }
   case 6:
    $name = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name >> 2] = $ptr_addr_0;
    $normalized = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized] = 1;
    $state_1 = 1;
    label = 7;
    break;
   case 7:
    $add_ptr8 = $ptr_pn + 2 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_1;
    $ptr_pn = $add_ptr8;
    label = 3;
    break;
   case 8:
    $cmp10 = ($state_0 | 0) == 0;
    if ($cmp10) {
      label = 9;
      break;
    } else {
      $state_2 = $state_0;
      label = 11;
      break;
    }
   case 9:
    $cmp13 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp13) {
      label = 10;
      break;
    } else {
      $state_2 = 1;
      label = 11;
      break;
    }
   case 10:
    $name17 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name17 >> 2] = $ptr_addr_0;
    $normalized19 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized19] = 1;
    $state_2 = 1;
    label = 11;
    break;
   case 11:
    $add_ptr22 = $ptr_pn + 3 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_2;
    $ptr_pn = $add_ptr22;
    label = 3;
    break;
   case 12:
    $cmp24 = ($state_0 | 0) == 0;
    if ($cmp24) {
      label = 13;
      break;
    } else {
      $state_3 = $state_0;
      label = 15;
      break;
    }
   case 13:
    $cmp27 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp27) {
      label = 14;
      break;
    } else {
      $state_3 = 1;
      label = 15;
      break;
    }
   case 14:
    $name31 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name31 >> 2] = $ptr_addr_0;
    $normalized33 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized33] = 1;
    $state_3 = 1;
    label = 15;
    break;
   case 15:
    $add_ptr36 = $ptr_pn + 4 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_3;
    $ptr_pn = $add_ptr36;
    label = 3;
    break;
   case 16:
    $cmp38 = ($state_0 | 0) == 0;
    if ($cmp38) {
      label = 17;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 17:
    $cmp41 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp41) {
      label = 18;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 1;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 18:
    $name45 = $atts + ($nAtts_0 << 4) | 0;
    HEAP32[$name45 >> 2] = $ptr_addr_0;
    $normalized47 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized47] = 1;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = 1;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 19:
    $cmp51 = ($state_0 | 0) == 2;
    if ($cmp51) {
      label = 22;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $cmp54 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp54) {
      label = 21;
      break;
    } else {
      $open_0 = 12;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 21:
    $add_ptr57 = $ptr_pn + 2 | 0;
    $valuePtr = $atts + ($nAtts_0 << 4) + 4 | 0;
    HEAP32[$valuePtr >> 2] = $add_ptr57;
    $open_0 = 12;
    $nAtts_0 = $nAtts_0;
    $state_0 = 2;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 22:
    $cmp60 = ($open_0 | 0) == 12;
    if ($cmp60) {
      label = 23;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 23:
    $cmp63 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp63) {
      label = 24;
      break;
    } else {
      label = 25;
      break;
    }
   case 24:
    $valueEnd = $atts + ($nAtts_0 << 4) + 8 | 0;
    HEAP32[$valueEnd >> 2] = $ptr_addr_0;
    label = 25;
    break;
   case 25:
    $inc = $nAtts_0 + 1 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $inc;
    $state_0 = 0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 26:
    $cmp71 = ($state_0 | 0) == 2;
    if ($cmp71) {
      label = 29;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $cmp74 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp74) {
      label = 28;
      break;
    } else {
      $open_0 = 13;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 28:
    $add_ptr77 = $ptr_pn + 2 | 0;
    $valuePtr79 = $atts + ($nAtts_0 << 4) + 4 | 0;
    HEAP32[$valuePtr79 >> 2] = $add_ptr77;
    $open_0 = 13;
    $nAtts_0 = $nAtts_0;
    $state_0 = 2;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 29:
    $cmp82 = ($open_0 | 0) == 13;
    if ($cmp82) {
      label = 30;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 30:
    $cmp85 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp85) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    $valueEnd89 = $atts + ($nAtts_0 << 4) + 8 | 0;
    HEAP32[$valueEnd89 >> 2] = $ptr_addr_0;
    label = 32;
    break;
   case 32:
    $inc91 = $nAtts_0 + 1 | 0;
    $open_0 = $open_0;
    $nAtts_0 = $inc91;
    $state_0 = 0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 33:
    $cmp95 = ($nAtts_0 | 0) < ($attsMax | 0);
    if ($cmp95) {
      label = 34;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 34:
    $normalized99 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized99] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 35:
    $cmp102 = ($state_0 | 0) == 1;
    if ($cmp102) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $cmp106 = ($state_0 | 0) == 2;
    $cmp108 = ($nAtts_0 | 0) < ($attsMax | 0);
    $or_cond = $cmp106 & $cmp108;
    if ($or_cond) {
      label = 37;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 37:
    $normalized112 = $atts + ($nAtts_0 << 4) + 12 | 0;
    $3 = HEAP8[$normalized112] | 0;
    $tobool = $3 << 24 >> 24 == 0;
    if ($tobool) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $valuePtr116 = $atts + ($nAtts_0 << 4) + 4 | 0;
    $4 = HEAP32[$valuePtr116 >> 2] | 0;
    $cmp117 = ($ptr_addr_0 | 0) != ($4 | 0);
    $cmp120 = $1 << 24 >> 24 == 32;
    $or_cond87 = $cmp117 & $cmp120;
    if ($or_cond87) {
      label = 39;
      break;
    } else {
      label = 41;
      break;
    }
   case 39:
    $add_ptr123 = $ptr_pn + 2 | 0;
    $5 = HEAP8[$add_ptr123] | 0;
    $cmp125 = $5 << 24 >> 24 == 32;
    if ($cmp125) {
      label = 41;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $idxprom129 = $5 & 255;
    $arrayidx131 = $0 + $idxprom129 | 0;
    $6 = HEAP8[$arrayidx131] | 0;
    $conv132 = $6 & 255;
    $cmp133 = ($conv132 | 0) == ($open_0 | 0);
    if ($cmp133) {
      label = 41;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 41:
    HEAP8[$normalized112] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 42:
    $cmp141 = ($state_0 | 0) == 1;
    if ($cmp141) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $cmp145 = ($state_0 | 0) == 2;
    $cmp148 = ($nAtts_0 | 0) < ($attsMax | 0);
    $or_cond88 = $cmp145 & $cmp148;
    if ($or_cond88) {
      label = 44;
      break;
    } else {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = $state_0;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    }
   case 44:
    $normalized152 = $atts + ($nAtts_0 << 4) + 12 | 0;
    HEAP8[$normalized152] = 0;
    $open_0 = $open_0;
    $nAtts_0 = $nAtts_0;
    $state_0 = $state_0;
    $ptr_pn = $ptr_addr_0;
    label = 3;
    break;
   case 45:
    $cmp156 = ($state_0 | 0) == 2;
    if ($cmp156) {
      $open_0 = $open_0;
      $nAtts_0 = $nAtts_0;
      $state_0 = 2;
      $ptr_pn = $ptr_addr_0;
      label = 3;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    return $nAtts_0 | 0;
  }
  return 0;
}
function _normal_predefinedEntityName($enc, $ptr, $end) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $add_ptr = 0, $0 = 0, $cmp = 0, $1 = 0, $conv2 = 0, $2 = 0, $cmp7 = 0, $add_ptr10 = 0, $3 = 0, $cmp12 = 0, $add_ptr15 = 0, $4 = 0, $cmp17 = 0, $5 = 0, $conv24 = 0, $add_ptr26 = 0, $6 = 0, $cmp28 = 0, $add_ptr31 = 0, $7 = 0, $cmp33 = 0, $add_ptr36 = 0, $8 = 0, $cmp38 = 0, $add_ptr45 = 0, $9 = 0, $cmp47 = 0, $add_ptr50 = 0, $10 = 0, $cmp52 = 0, $add_ptr55 = 0, $11 = 0, $cmp57 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    if (($sub_ptr_sub | 0) == 2) {
      label = 3;
      break;
    } else if (($sub_ptr_sub | 0) == 3) {
      label = 6;
      break;
    } else if (($sub_ptr_sub | 0) == 4) {
      label = 9;
      break;
    } else {
      label = 16;
      break;
    }
   case 3:
    $add_ptr = $ptr + 1 | 0;
    $0 = HEAP8[$add_ptr] | 0;
    $cmp = $0 << 24 >> 24 == 116;
    if ($cmp) {
      label = 4;
      break;
    } else {
      label = 16;
      break;
    }
   case 4:
    $1 = HEAP8[$ptr] | 0;
    $conv2 = $1 << 24 >> 24;
    if (($conv2 | 0) == 103) {
      label = 5;
      break;
    } else if (($conv2 | 0) == 108) {
      $retval_0 = 60;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 5:
    $retval_0 = 62;
    label = 17;
    break;
   case 6:
    $2 = HEAP8[$ptr] | 0;
    $cmp7 = $2 << 24 >> 24 == 97;
    if ($cmp7) {
      label = 7;
      break;
    } else {
      label = 16;
      break;
    }
   case 7:
    $add_ptr10 = $ptr + 1 | 0;
    $3 = HEAP8[$add_ptr10] | 0;
    $cmp12 = $3 << 24 >> 24 == 109;
    if ($cmp12) {
      label = 8;
      break;
    } else {
      label = 16;
      break;
    }
   case 8:
    $add_ptr15 = $ptr + 2 | 0;
    $4 = HEAP8[$add_ptr15] | 0;
    $cmp17 = $4 << 24 >> 24 == 112;
    if ($cmp17) {
      $retval_0 = 38;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 9:
    $5 = HEAP8[$ptr] | 0;
    $conv24 = $5 << 24 >> 24;
    if (($conv24 | 0) == 113) {
      label = 10;
      break;
    } else if (($conv24 | 0) == 97) {
      label = 13;
      break;
    } else {
      label = 16;
      break;
    }
   case 10:
    $add_ptr26 = $ptr + 1 | 0;
    $6 = HEAP8[$add_ptr26] | 0;
    $cmp28 = $6 << 24 >> 24 == 117;
    if ($cmp28) {
      label = 11;
      break;
    } else {
      label = 16;
      break;
    }
   case 11:
    $add_ptr31 = $ptr + 2 | 0;
    $7 = HEAP8[$add_ptr31] | 0;
    $cmp33 = $7 << 24 >> 24 == 111;
    if ($cmp33) {
      label = 12;
      break;
    } else {
      label = 16;
      break;
    }
   case 12:
    $add_ptr36 = $ptr + 3 | 0;
    $8 = HEAP8[$add_ptr36] | 0;
    $cmp38 = $8 << 24 >> 24 == 116;
    if ($cmp38) {
      $retval_0 = 34;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 13:
    $add_ptr45 = $ptr + 1 | 0;
    $9 = HEAP8[$add_ptr45] | 0;
    $cmp47 = $9 << 24 >> 24 == 112;
    if ($cmp47) {
      label = 14;
      break;
    } else {
      label = 16;
      break;
    }
   case 14:
    $add_ptr50 = $ptr + 2 | 0;
    $10 = HEAP8[$add_ptr50] | 0;
    $cmp52 = $10 << 24 >> 24 == 111;
    if ($cmp52) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $add_ptr55 = $ptr + 3 | 0;
    $11 = HEAP8[$add_ptr55] | 0;
    $cmp57 = $11 << 24 >> 24 == 115;
    if ($cmp57) {
      $retval_0 = 39;
      label = 17;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $retval_0 = 0;
    label = 17;
    break;
   case 17:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_updatePosition($enc, $ptr, $end, $pos) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $pos = $pos | 0;
  var $cmp18 = 0, $type = 0, $0 = 0, $columnNumber22 = 0, $columnNumber = 0, $lineNumber = 0, $lineNumber8 = 0, $columnNumber20 = 0, $ptr_addr_019 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $add_ptr2 = 0, $add_ptr4 = 0, $3 = 0, $inc = 0, $add_ptr6 = 0, $4 = 0, $inc9 = 0, $add_ptr10 = 0, $cmp11 = 0, $5 = 0, $idxprom13 = 0, $arrayidx15 = 0, $6 = 0, $cmp17 = 0, $add_ptr19 = 0, $add_ptr19_add_ptr10 = 0, $ptr_addr_1 = 0, $add_ptr21 = 0, $ptr_addr_2 = 0, $7 = 0, $inc23 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp18 = $ptr >>> 0 < $end >>> 0;
    if ($cmp18) {
      label = 3;
      break;
    } else {
      label = 14;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $columnNumber22 = $pos + 4 | 0;
    $columnNumber = $pos + 4 | 0;
    $lineNumber = $pos | 0;
    $lineNumber8 = $pos | 0;
    $columnNumber20 = $pos + 4 | 0;
    $ptr_addr_019 = $ptr;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$ptr_addr_019] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 5) {
      label = 5;
      break;
    } else if (($conv | 0) == 6) {
      label = 6;
      break;
    } else if (($conv | 0) == 7) {
      label = 7;
      break;
    } else if (($conv | 0) == 10) {
      label = 8;
      break;
    } else if (($conv | 0) == 9) {
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 5:
    $add_ptr = $ptr_addr_019 + 2 | 0;
    $ptr_addr_2 = $add_ptr;
    label = 13;
    break;
   case 6:
    $add_ptr2 = $ptr_addr_019 + 3 | 0;
    $ptr_addr_2 = $add_ptr2;
    label = 13;
    break;
   case 7:
    $add_ptr4 = $ptr_addr_019 + 4 | 0;
    $ptr_addr_2 = $add_ptr4;
    label = 13;
    break;
   case 8:
    HEAP32[$columnNumber >> 2] = -1;
    $3 = HEAP32[$lineNumber >> 2] | 0;
    $inc = $3 + 1 | 0;
    HEAP32[$lineNumber >> 2] = $inc;
    $add_ptr6 = $ptr_addr_019 + 1 | 0;
    $ptr_addr_2 = $add_ptr6;
    label = 13;
    break;
   case 9:
    $4 = HEAP32[$lineNumber8 >> 2] | 0;
    $inc9 = $4 + 1 | 0;
    HEAP32[$lineNumber8 >> 2] = $inc9;
    $add_ptr10 = $ptr_addr_019 + 1 | 0;
    $cmp11 = ($add_ptr10 | 0) == ($end | 0);
    if ($cmp11) {
      $ptr_addr_1 = $add_ptr10;
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $5 = HEAP8[$add_ptr10] | 0;
    $idxprom13 = $5 & 255;
    $arrayidx15 = $0 + $idxprom13 | 0;
    $6 = HEAP8[$arrayidx15] | 0;
    $cmp17 = $6 << 24 >> 24 == 10;
    $add_ptr19 = $ptr_addr_019 + 2 | 0;
    $add_ptr19_add_ptr10 = $cmp17 ? $add_ptr19 : $add_ptr10;
    $ptr_addr_1 = $add_ptr19_add_ptr10;
    label = 11;
    break;
   case 11:
    HEAP32[$columnNumber20 >> 2] = -1;
    $ptr_addr_2 = $ptr_addr_1;
    label = 13;
    break;
   case 12:
    $add_ptr21 = $ptr_addr_019 + 1 | 0;
    $ptr_addr_2 = $add_ptr21;
    label = 13;
    break;
   case 13:
    $7 = HEAP32[$columnNumber22 >> 2] | 0;
    $inc23 = $7 + 1 | 0;
    HEAP32[$columnNumber22 >> 2] = $inc23;
    $cmp = $ptr_addr_2 >>> 0 < $end >>> 0;
    if ($cmp) {
      $ptr_addr_019 = $ptr_addr_2;
      label = 4;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    return;
  }
}
function _normal_charRefNumber($enc, $ptr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  var $add_ptr = 0, $0 = 0, $cmp = 0, $add_ptr2 = 0, $result_0 = 0, $ptr_addr_0 = 0, $1 = 0, $conv3 = 0, $lnot = 0, $shl = 0, $sub = 0, $or = 0, $shl8 = 0, $add = 0, $add10 = 0, $shl12 = 0, $add14 = 0, $add15 = 0, $result_1 = 0, $cmp16 = 0, $add_ptr19 = 0, $result_2 = 0, $ptr_addr_1 = 0, $2 = 0, $lnot24 = 0, $conv21 = 0, $mul = 0, $sub28 = 0, $add29 = 0, $cmp30 = 0, $add_ptr35 = 0, $result_3 = 0, $call = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr = $ptr + 2 | 0;
    $0 = HEAP8[$add_ptr] | 0;
    $cmp = $0 << 24 >> 24 == 120;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $ptr_addr_1 = $add_ptr;
      $result_2 = 0;
      label = 10;
      break;
    }
   case 3:
    $add_ptr2 = $ptr + 3 | 0;
    $ptr_addr_0 = $add_ptr2;
    $result_0 = 0;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$ptr_addr_0] | 0;
    $conv3 = $1 << 24 >> 24;
    $lnot = $1 << 24 >> 24 == 59;
    if ($lnot) {
      $result_3 = $result_0;
      label = 12;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    if (($conv3 | 0) == 48 | ($conv3 | 0) == 49 | ($conv3 | 0) == 50 | ($conv3 | 0) == 51 | ($conv3 | 0) == 52 | ($conv3 | 0) == 53 | ($conv3 | 0) == 54 | ($conv3 | 0) == 55 | ($conv3 | 0) == 56 | ($conv3 | 0) == 57) {
      label = 6;
      break;
    } else if (($conv3 | 0) == 65 | ($conv3 | 0) == 66 | ($conv3 | 0) == 67 | ($conv3 | 0) == 68 | ($conv3 | 0) == 69 | ($conv3 | 0) == 70) {
      label = 7;
      break;
    } else if (($conv3 | 0) == 97 | ($conv3 | 0) == 98 | ($conv3 | 0) == 99 | ($conv3 | 0) == 100 | ($conv3 | 0) == 101 | ($conv3 | 0) == 102) {
      label = 8;
      break;
    } else {
      $result_1 = $result_0;
      label = 9;
      break;
    }
   case 6:
    $shl = $result_0 << 4;
    $sub = $conv3 - 48 | 0;
    $or = $sub | $shl;
    $result_1 = $or;
    label = 9;
    break;
   case 7:
    $shl8 = $result_0 << 4;
    $add = $shl8 - 55 | 0;
    $add10 = $add + $conv3 | 0;
    $result_1 = $add10;
    label = 9;
    break;
   case 8:
    $shl12 = $result_0 << 4;
    $add14 = $shl12 - 87 | 0;
    $add15 = $add14 + $conv3 | 0;
    $result_1 = $add15;
    label = 9;
    break;
   case 9:
    $cmp16 = ($result_1 | 0) > 1114111;
    $add_ptr19 = $ptr_addr_0 + 1 | 0;
    if ($cmp16) {
      $retval_0 = -1;
      label = 13;
      break;
    } else {
      $ptr_addr_0 = $add_ptr19;
      $result_0 = $result_1;
      label = 4;
      break;
    }
   case 10:
    $2 = HEAP8[$ptr_addr_1] | 0;
    $lnot24 = $2 << 24 >> 24 == 59;
    if ($lnot24) {
      $result_3 = $result_2;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $conv21 = $2 << 24 >> 24;
    $mul = $result_2 * 10 & -1;
    $sub28 = $mul - 48 | 0;
    $add29 = $sub28 + $conv21 | 0;
    $cmp30 = ($add29 | 0) > 1114111;
    $add_ptr35 = $ptr_addr_1 + 1 | 0;
    if ($cmp30) {
      $retval_0 = -1;
      label = 13;
      break;
    } else {
      $ptr_addr_1 = $add_ptr35;
      $result_2 = $add29;
      label = 10;
      break;
    }
   case 12:
    $call = _checkCharRefNumber($result_3) | 0;
    $retval_0 = $call;
    label = 13;
    break;
   case 13:
    return $retval_0 | 0;
  }
  return 0;
}
function _isNever($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  return 0;
}
function _normal_isPublicId($enc, $ptr, $end, $badPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $badPtr = $badPtr | 0;
  var $add_ptr1 = 0, $ptr_addr_013 = 0, $cmp14 = 0, $type = 0, $0 = 0, $ptr_addr_015 = 0, $1 = 0, $idxprom = 0, $arrayidx = 0, $2 = 0, $conv = 0, $ptr_addr_0 = 0, $cmp = 0, $cmp4 = 0, $tobool = 0, $3 = 0, $conv10 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr1 = $end - 1 | 0;
    $ptr_addr_013 = $ptr + 1 | 0;
    $cmp14 = ($ptr_addr_013 | 0) == ($add_ptr1 | 0);
    if ($cmp14) {
      $retval_0 = 1;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $ptr_addr_015 = $ptr_addr_013;
    label = 4;
    break;
   case 4:
    $1 = HEAP8[$ptr_addr_015] | 0;
    $idxprom = $1 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 25 | ($conv | 0) == 24 | ($conv | 0) == 27 | ($conv | 0) == 13 | ($conv | 0) == 31 | ($conv | 0) == 32 | ($conv | 0) == 34 | ($conv | 0) == 35 | ($conv | 0) == 17 | ($conv | 0) == 14 | ($conv | 0) == 15 | ($conv | 0) == 9 | ($conv | 0) == 10 | ($conv | 0) == 18 | ($conv | 0) == 16 | ($conv | 0) == 33 | ($conv | 0) == 30 | ($conv | 0) == 19) {
      label = 5;
      break;
    } else if (($conv | 0) == 21) {
      label = 6;
      break;
    } else if (($conv | 0) == 26 | ($conv | 0) == 22) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 5:
    $ptr_addr_0 = $ptr_addr_015 + 1 | 0;
    $cmp = ($ptr_addr_0 | 0) == ($add_ptr1 | 0);
    if ($cmp) {
      $retval_0 = 1;
      label = 11;
      break;
    } else {
      $ptr_addr_015 = $ptr_addr_0;
      label = 4;
      break;
    }
   case 6:
    $cmp4 = $1 << 24 >> 24 == 9;
    if ($cmp4) {
      label = 7;
      break;
    } else {
      label = 5;
      break;
    }
   case 7:
    HEAP32[$badPtr >> 2] = $ptr_addr_015;
    $retval_0 = 0;
    label = 11;
    break;
   case 8:
    $tobool = $1 << 24 >> 24 < 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 9:
    $3 = HEAP8[$ptr_addr_015] | 0;
    $conv10 = $3 << 24 >> 24;
    if (($conv10 | 0) == 36 | ($conv10 | 0) == 64) {
      label = 5;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP32[$badPtr >> 2] = $ptr_addr_015;
    $retval_0 = 0;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _utf8_toUtf8($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $1 = 0, $sub_ptr_lhs_cast1 = 0, $sub_ptr_rhs_cast2 = 0, $sub_ptr_sub3 = 0, $cmp = 0, $add_ptr = 0, $2 = 0, $fromLim_addr_0 = 0, $cmp7 = 0, $arrayidx = 0, $3 = 0, $and = 0, $cmp8 = 0, $fromLim_addr_1 = 0, $4 = 0, $5 = 0, $cmp1317 = 0, $from_019 = 0, $to_018 = 0, $6 = 0, $incdec_ptr17 = 0, $incdec_ptr18 = 0, $cmp13 = 0, $from_0_lcssa = 0, $to_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $sub_ptr_lhs_cast = $fromLim;
    $sub_ptr_rhs_cast = $0;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $1 = HEAP32[$toP >> 2] | 0;
    $sub_ptr_lhs_cast1 = $toLim;
    $sub_ptr_rhs_cast2 = $1;
    $sub_ptr_sub3 = $sub_ptr_lhs_cast1 - $sub_ptr_rhs_cast2 | 0;
    $cmp = ($sub_ptr_sub | 0) > ($sub_ptr_sub3 | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      $fromLim_addr_1 = $fromLim;
      label = 6;
      break;
    }
   case 3:
    $add_ptr = $0 + $sub_ptr_sub3 | 0;
    $2 = HEAP32[$fromP >> 2] | 0;
    $fromLim_addr_0 = $add_ptr;
    label = 4;
    break;
   case 4:
    $cmp7 = $fromLim_addr_0 >>> 0 > $2 >>> 0;
    if ($cmp7) {
      label = 5;
      break;
    } else {
      $fromLim_addr_1 = $fromLim_addr_0;
      label = 6;
      break;
    }
   case 5:
    $arrayidx = $fromLim_addr_0 - 1 | 0;
    $3 = HEAP8[$arrayidx] | 0;
    $and = $3 & -64;
    $cmp8 = $and << 24 >> 24 == -128;
    if ($cmp8) {
      $fromLim_addr_0 = $arrayidx;
      label = 4;
      break;
    } else {
      $fromLim_addr_1 = $fromLim_addr_0;
      label = 6;
      break;
    }
   case 6:
    $4 = HEAP32[$toP >> 2] | 0;
    $5 = HEAP32[$fromP >> 2] | 0;
    $cmp1317 = ($5 | 0) == ($fromLim_addr_1 | 0);
    if ($cmp1317) {
      $to_0_lcssa = $4;
      $from_0_lcssa = $5;
      label = 8;
      break;
    } else {
      $to_018 = $4;
      $from_019 = $5;
      label = 7;
      break;
    }
   case 7:
    $6 = HEAP8[$from_019] | 0;
    HEAP8[$to_018] = $6;
    $incdec_ptr17 = $from_019 + 1 | 0;
    $incdec_ptr18 = $to_018 + 1 | 0;
    $cmp13 = ($incdec_ptr17 | 0) == ($fromLim_addr_1 | 0);
    if ($cmp13) {
      $to_0_lcssa = $incdec_ptr18;
      $from_0_lcssa = $incdec_ptr17;
      label = 8;
      break;
    } else {
      $to_018 = $incdec_ptr18;
      $from_019 = $incdec_ptr17;
      label = 7;
      break;
    }
   case 8:
    HEAP32[$fromP >> 2] = $from_0_lcssa;
    HEAP32[$toP >> 2] = $to_0_lcssa;
    return;
  }
}
function _utf8_toUtf16($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $1 = 0, $cmp38 = 0, $cmp139 = 0, $or_cond40 = 0, $type = 0, $2 = 0, $to_042 = 0, $from_041 = 0, $3 = 0, $idxprom = 0, $arrayidx = 0, $4 = 0, $conv = 0, $conv336 = 0, $and = 0, $shl = 0, $arrayidx4 = 0, $5 = 0, $conv537 = 0, $and6 = 0, $or = 0, $incdec_ptr = 0, $add_ptr = 0, $conv1033 = 0, $and11 = 0, $arrayidx13 = 0, $6 = 0, $conv1434 = 0, $and15 = 0, $shl16 = 0, $or17 = 0, $arrayidx18 = 0, $7 = 0, $conv1935 = 0, $and20 = 0, $or21 = 0, $incdec_ptr23 = 0, $add_ptr24 = 0, $add_ptr26 = 0, $cmp27 = 0, $and31 = 0, $shl32 = 0, $arrayidx33 = 0, $8 = 0, $conv3430 = 0, $and35 = 0, $shl36 = 0, $or37 = 0, $arrayidx38 = 0, $9 = 0, $conv3931 = 0, $and40 = 0, $shl41 = 0, $or42 = 0, $arrayidx43 = 0, $10 = 0, $conv4432 = 0, $and45 = 0, $or46 = 0, $sub = 0, $shr = 0, $or47 = 0, $conv48 = 0, $and50 = 0, $or51 = 0, $conv52 = 0, $add_ptr54 = 0, $add_ptr55 = 0, $incdec_ptr56 = 0, $conv57 = 0, $incdec_ptr58 = 0, $from_0_be = 0, $to_0_be = 0, $cmp = 0, $cmp1 = 0, $or_cond = 0, $to_0_lcssa = 0, $from_0_lcssa = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$toP >> 2] | 0;
    $1 = HEAP32[$fromP >> 2] | 0;
    $cmp38 = ($1 | 0) == ($fromLim | 0);
    $cmp139 = ($0 | 0) == ($toLim | 0);
    $or_cond40 = $cmp38 | $cmp139;
    if ($or_cond40) {
      $from_0_lcssa = $1;
      $to_0_lcssa = $0;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $2 = $type;
    $from_041 = $1;
    $to_042 = $0;
    label = 4;
    break;
   case 4:
    $3 = HEAP8[$from_041] | 0;
    $idxprom = $3 & 255;
    $arrayidx = $2 + $idxprom | 0;
    $4 = HEAP8[$arrayidx] | 0;
    $conv = $4 & 255;
    if (($conv | 0) == 5) {
      label = 5;
      break;
    } else if (($conv | 0) == 6) {
      label = 6;
      break;
    } else if (($conv | 0) == 7) {
      label = 7;
      break;
    } else {
      label = 9;
      break;
    }
   case 5:
    $conv336 = $3 & 255;
    $and = $conv336 << 6;
    $shl = $and & 1984;
    $arrayidx4 = $from_041 + 1 | 0;
    $5 = HEAP8[$arrayidx4] | 0;
    $conv537 = $5 & 255;
    $and6 = $conv537 & 63;
    $or = $and6 | $shl;
    $incdec_ptr = $to_042 + 2 | 0;
    HEAP16[$to_042 >> 1] = $or;
    $add_ptr = $from_041 + 2 | 0;
    $to_0_be = $incdec_ptr;
    $from_0_be = $add_ptr;
    label = 10;
    break;
   case 6:
    $conv1033 = $3 & 255;
    $and11 = $conv1033 << 12;
    $arrayidx13 = $from_041 + 1 | 0;
    $6 = HEAP8[$arrayidx13] | 0;
    $conv1434 = $6 & 255;
    $and15 = $conv1434 << 6;
    $shl16 = $and15 & 4032;
    $or17 = $shl16 | $and11;
    $arrayidx18 = $from_041 + 2 | 0;
    $7 = HEAP8[$arrayidx18] | 0;
    $conv1935 = $7 & 255;
    $and20 = $conv1935 & 63;
    $or21 = $or17 | $and20;
    $incdec_ptr23 = $to_042 + 2 | 0;
    HEAP16[$to_042 >> 1] = $or21;
    $add_ptr24 = $from_041 + 3 | 0;
    $to_0_be = $incdec_ptr23;
    $from_0_be = $add_ptr24;
    label = 10;
    break;
   case 7:
    $add_ptr26 = $to_042 + 2 | 0;
    $cmp27 = ($add_ptr26 | 0) == ($toLim | 0);
    if ($cmp27) {
      $from_0_lcssa = $from_041;
      $to_0_lcssa = $to_042;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $and31 = $idxprom << 18;
    $shl32 = $and31 & 1835008;
    $arrayidx33 = $from_041 + 1 | 0;
    $8 = HEAP8[$arrayidx33] | 0;
    $conv3430 = $8 & 255;
    $and35 = $conv3430 << 12;
    $shl36 = $and35 & 258048;
    $or37 = $shl36 | $shl32;
    $arrayidx38 = $from_041 + 2 | 0;
    $9 = HEAP8[$arrayidx38] | 0;
    $conv3931 = $9 & 255;
    $and40 = $conv3931 << 6;
    $shl41 = $and40 & 4032;
    $or42 = $or37 | $shl41;
    $arrayidx43 = $from_041 + 3 | 0;
    $10 = HEAP8[$arrayidx43] | 0;
    $conv4432 = $10 & 255;
    $and45 = $conv4432 & 63;
    $or46 = $or42 | $and45;
    $sub = $or46 - 65536 | 0;
    $shr = $sub >>> 10;
    $or47 = $shr | 55296;
    $conv48 = $or47 & 65535;
    HEAP16[$to_042 >> 1] = $conv48;
    $and50 = $sub & 1023;
    $or51 = $and50 | 56320;
    $conv52 = $or51 & 65535;
    HEAP16[$add_ptr26 >> 1] = $conv52;
    $add_ptr54 = $to_042 + 4 | 0;
    $add_ptr55 = $from_041 + 4 | 0;
    $to_0_be = $add_ptr54;
    $from_0_be = $add_ptr55;
    label = 10;
    break;
   case 9:
    $incdec_ptr56 = $from_041 + 1 | 0;
    $conv57 = $3 << 24 >> 24;
    $incdec_ptr58 = $to_042 + 2 | 0;
    HEAP16[$to_042 >> 1] = $conv57;
    $to_0_be = $incdec_ptr58;
    $from_0_be = $incdec_ptr56;
    label = 10;
    break;
   case 10:
    $cmp = ($from_0_be | 0) == ($fromLim | 0);
    $cmp1 = ($to_0_be | 0) == ($toLim | 0);
    $or_cond = $cmp | $cmp1;
    if ($or_cond) {
      $from_0_lcssa = $from_0_be;
      $to_0_lcssa = $to_0_be;
      label = 11;
      break;
    } else {
      $from_041 = $from_0_be;
      $to_042 = $to_0_be;
      label = 4;
      break;
    }
   case 11:
    HEAP32[$fromP >> 2] = $from_0_lcssa;
    HEAP32[$toP >> 2] = $to_0_lcssa;
    return;
  }
}
function _utf8_isName2($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $conv = 0, $conv8 = 0;
  $conv = HEAPU8[$p] | 0;
  $conv8 = HEAPU8[$p + 1 | 0] | 0;
  return 1 << ($conv8 & 31) & HEAP32[9544 + (((HEAPU8[10824 + ($conv >>> 2 & 7) | 0] | 0) << 3 | $conv << 1 & 6 | $conv8 >>> 5 & 1) << 2) >> 2] | 0;
}
function _utf8_isName3($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $conv2 = 0, $conv13 = 0;
  $conv2 = HEAPU8[$p + 1 | 0] | 0;
  $conv13 = HEAPU8[$p + 2 | 0] | 0;
  return 1 << ($conv13 & 31) & HEAP32[9544 + (((HEAPU8[10824 + ($conv2 >>> 2 & 15 | (HEAPU8[$p] | 0) << 4 & 240) | 0] | 0) << 3 | $conv2 << 1 & 6 | $conv13 >>> 5 & 1) << 2) >> 2] | 0;
}
function _utf8_isNmstrt2($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $conv = 0, $conv8 = 0;
  $conv = HEAPU8[$p] | 0;
  $conv8 = HEAPU8[$p + 1 | 0] | 0;
  return 1 << ($conv8 & 31) & HEAP32[9544 + (((HEAPU8[9272 + ($conv >>> 2 & 7) | 0] | 0) << 3 | $conv << 1 & 6 | $conv8 >>> 5 & 1) << 2) >> 2] | 0;
}
function _utf8_isNmstrt3($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $conv2 = 0, $conv13 = 0;
  $conv2 = HEAPU8[$p + 1 | 0] | 0;
  $conv13 = HEAPU8[$p + 2 | 0] | 0;
  return 1 << ($conv13 & 31) & HEAP32[9544 + (((HEAPU8[9272 + ($conv2 >>> 2 & 15 | (HEAPU8[$p] | 0) << 4 & 240) | 0] | 0) << 3 | $conv2 << 1 & 6 | $conv13 >>> 5 & 1) << 2) >> 2] | 0;
}
function _utf8_isInvalid2($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $0 = 0, $cmp = 0, $arrayidx = 0, $1 = 0, $conv2 = 0, $and = 0, $cmp3 = 0, $and7 = 0, $cmp8 = 0, $phitmp = 0, $2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP8[$p] | 0;
    $cmp = ($0 & 255) < 194;
    if ($cmp) {
      $2 = 1;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx = $p + 1 | 0;
    $1 = HEAP8[$arrayidx] | 0;
    $conv2 = $1 & 255;
    $and = $conv2 & 128;
    $cmp3 = ($and | 0) == 0;
    if ($cmp3) {
      $2 = 1;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $and7 = $conv2 & 192;
    $cmp8 = ($and7 | 0) == 192;
    $phitmp = $cmp8 & 1;
    $2 = $phitmp;
    label = 5;
    break;
   case 5:
    return $2 | 0;
  }
  return 0;
}
function _utf8_isInvalid3($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $arrayidx = 0, $0 = 0, $cmp = 0, $1 = 0, $cmp3 = 0, $arrayidx5 = 0, $2 = 0, $cmp7 = 0, $cmp11 = 0, $3 = 0, $and15 = 0, $cmp16 = 0, $4 = 0, $cmp19 = 0, $arrayidx22 = 0, $5 = 0, $conv23 = 0, $cmp24 = 0, $and29 = 0, $cmp30 = 0, $and35 = 0, $cmp36 = 0, $cmp40 = 0, $cmp45 = 0, $and50 = 0, $cmp51 = 0, $6 = 0, $lor_ext59 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrayidx = $p + 2 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $cmp = $0 << 24 >> 24 > -1;
    if ($cmp) {
      $6 = 1;
      label = 14;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = HEAP8[$p] | 0;
    $cmp3 = $1 << 24 >> 24 == -17;
    if ($cmp3) {
      label = 4;
      break;
    } else {
      label = 6;
      break;
    }
   case 4:
    $arrayidx5 = $p + 1 | 0;
    $2 = HEAP8[$arrayidx5] | 0;
    $cmp7 = $2 << 24 >> 24 == -65;
    if ($cmp7) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $cmp11 = ($0 & 255) > 189;
    if ($cmp11) {
      $6 = 1;
      label = 14;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $3 = HEAP8[$arrayidx] | 0;
    $and15 = $3 & -64;
    $cmp16 = $and15 << 24 >> 24 == -64;
    if ($cmp16) {
      $6 = 1;
      label = 14;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $4 = HEAP8[$p] | 0;
    $cmp19 = $4 << 24 >> 24 == -32;
    $arrayidx22 = $p + 1 | 0;
    $5 = HEAP8[$arrayidx22] | 0;
    $conv23 = $5 & 255;
    if ($cmp19) {
      label = 8;
      break;
    } else {
      label = 10;
      break;
    }
   case 8:
    $cmp24 = ($5 & 255) < 160;
    if ($cmp24) {
      $6 = 1;
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $and29 = $conv23 & 192;
    $cmp30 = ($and29 | 0) == 192;
    $6 = $cmp30;
    label = 14;
    break;
   case 10:
    $and35 = $conv23 & 128;
    $cmp36 = ($and35 | 0) == 0;
    if ($cmp36) {
      $6 = 1;
      label = 14;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $cmp40 = $4 << 24 >> 24 == -19;
    if ($cmp40) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    $cmp45 = ($5 & 255) > 159;
    $6 = $cmp45;
    label = 14;
    break;
   case 13:
    $and50 = $conv23 & 192;
    $cmp51 = ($and50 | 0) == 192;
    $6 = $cmp51;
    label = 14;
    break;
   case 14:
    $lor_ext59 = $6 & 1;
    return $lor_ext59 | 0;
  }
  return 0;
}
function _utf8_isInvalid4($enc, $p) {
  $enc = $enc | 0;
  $p = $p | 0;
  var $arrayidx = 0, $0 = 0, $conv = 0, $and = 0, $cmp = 0, $and4 = 0, $cmp5 = 0, $or_cond = 0, $arrayidx8 = 0, $1 = 0, $conv9 = 0, $and10 = 0, $cmp11 = 0, $and16 = 0, $cmp17 = 0, $or_cond9 = 0, $2 = 0, $cmp20 = 0, $arrayidx22 = 0, $3 = 0, $conv23 = 0, $cmp24 = 0, $and29 = 0, $cmp30 = 0, $and34 = 0, $cmp35 = 0, $cmp39 = 0, $cmp44 = 0, $and49 = 0, $cmp50 = 0, $4 = 0, $lor_ext58 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $arrayidx = $p + 3 | 0;
    $0 = HEAP8[$arrayidx] | 0;
    $conv = $0 & 255;
    $and = $conv & 128;
    $cmp = ($and | 0) == 0;
    $and4 = $conv & 192;
    $cmp5 = ($and4 | 0) == 192;
    $or_cond = $cmp | $cmp5;
    if ($or_cond) {
      $4 = 1;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $arrayidx8 = $p + 2 | 0;
    $1 = HEAP8[$arrayidx8] | 0;
    $conv9 = $1 & 255;
    $and10 = $conv9 & 128;
    $cmp11 = ($and10 | 0) == 0;
    $and16 = $conv9 & 192;
    $cmp17 = ($and16 | 0) == 192;
    $or_cond9 = $cmp11 | $cmp17;
    if ($or_cond9) {
      $4 = 1;
      label = 11;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $2 = HEAP8[$p] | 0;
    $cmp20 = $2 << 24 >> 24 == -16;
    $arrayidx22 = $p + 1 | 0;
    $3 = HEAP8[$arrayidx22] | 0;
    $conv23 = $3 & 255;
    if ($cmp20) {
      label = 5;
      break;
    } else {
      label = 7;
      break;
    }
   case 5:
    $cmp24 = ($3 & 255) < 144;
    if ($cmp24) {
      $4 = 1;
      label = 11;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $and29 = $conv23 & 192;
    $cmp30 = ($and29 | 0) == 192;
    $4 = $cmp30;
    label = 11;
    break;
   case 7:
    $and34 = $conv23 & 128;
    $cmp35 = ($and34 | 0) == 0;
    if ($cmp35) {
      $4 = 1;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $cmp39 = $2 << 24 >> 24 == -12;
    if ($cmp39) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $cmp44 = ($3 & 255) > 143;
    $4 = $cmp44;
    label = 11;
    break;
   case 10:
    $and49 = $conv23 & 192;
    $cmp50 = ($and49 | 0) == 192;
    $4 = $cmp50;
    label = 11;
    break;
   case 11:
    $lor_ext58 = $4 & 1;
    return $lor_ext58 | 0;
  }
  return 0;
}
function _normal_scanRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $ptr_addr_0_ph = 0, $cmp3969 = 0, $sub_ptr_lhs_cast49 = 0, $3 = 0, $sub_ptr_lhs_cast62 = 0, $isName3 = 0, $sub_ptr_lhs_cast75 = 0, $isName4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $isNmstrt2 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $add_ptr9 = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $isNmstrt3 = 0, $6 = 0, $7 = 0, $call18 = 0, $tobool19 = 0, $add_ptr22 = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $isNmstrt4 = 0, $8 = 0, $9 = 0, $call31 = 0, $tobool32 = 0, $add_ptr35 = 0, $add_ptr37 = 0, $call38 = 0, $ptr_addr_070 = 0, $10 = 0, $idxprom41 = 0, $arrayidx43 = 0, $11 = 0, $conv44 = 0, $add_ptr47 = 0, $sub_ptr_rhs_cast50 = 0, $sub_ptr_sub51 = 0, $cmp52 = 0, $12 = 0, $call56 = 0, $tobool57 = 0, $add_ptr60 = 0, $sub_ptr_rhs_cast63 = 0, $sub_ptr_sub64 = 0, $cmp65 = 0, $13 = 0, $14 = 0, $call69 = 0, $tobool70 = 0, $add_ptr73 = 0, $sub_ptr_rhs_cast76 = 0, $sub_ptr_sub77 = 0, $cmp78 = 0, $15 = 0, $16 = 0, $call82 = 0, $tobool83 = 0, $add_ptr86 = 0, $ptr_addr_0_be = 0, $cmp39 = 0, $add_ptr88 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 40;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 29) {
      label = 4;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else if (($conv | 0) == 19) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $ptr_addr_0_ph = $add_ptr;
    label = 6;
    break;
   case 6:
    $cmp3969 = ($ptr_addr_0_ph | 0) == ($end | 0);
    if ($cmp3969) {
      $retval_0 = -1;
      label = 40;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast49 = $end;
    $3 = $enc + 328 | 0;
    $sub_ptr_lhs_cast62 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast75 = $end;
    $isName4 = $enc + 336 | 0;
    $ptr_addr_070 = $ptr_addr_0_ph;
    label = 22;
    break;
   case 8:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $isNmstrt2 = $enc + 340 | 0;
    $4 = HEAP32[$isNmstrt2 >> 2] | 0;
    $5 = $4;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 11:
    $add_ptr9 = $ptr + 2 | 0;
    $ptr_addr_0_ph = $add_ptr9;
    label = 6;
    break;
   case 12:
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_rhs_cast12 = $ptr;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isNmstrt3 = $enc + 344 | 0;
    $6 = HEAP32[$isNmstrt3 >> 2] | 0;
    $7 = $6;
    $call18 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 15:
    $add_ptr22 = $ptr + 3 | 0;
    $ptr_addr_0_ph = $add_ptr22;
    label = 6;
    break;
   case 16:
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_rhs_cast25 = $ptr;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 4;
    if ($cmp27) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isNmstrt4 = $enc + 348 | 0;
    $8 = HEAP32[$isNmstrt4 >> 2] | 0;
    $9 = $8;
    $call31 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 19:
    $add_ptr35 = $ptr + 4 | 0;
    $ptr_addr_0_ph = $add_ptr35;
    label = 6;
    break;
   case 20:
    $add_ptr37 = $ptr + 1 | 0;
    $call38 = _normal_scanCharRef($enc, $add_ptr37, $end, $nextTokPtr) | 0;
    $retval_0 = $call38;
    label = 40;
    break;
   case 21:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 22:
    $10 = HEAP8[$ptr_addr_070] | 0;
    $idxprom41 = $10 & 255;
    $arrayidx43 = $1 + $idxprom41 | 0;
    $11 = HEAP8[$arrayidx43] | 0;
    $conv44 = $11 & 255;
    if (($conv44 | 0) == 29) {
      label = 23;
      break;
    } else if (($conv44 | 0) == 22 | ($conv44 | 0) == 24 | ($conv44 | 0) == 25 | ($conv44 | 0) == 26 | ($conv44 | 0) == 27) {
      label = 24;
      break;
    } else if (($conv44 | 0) == 5) {
      label = 25;
      break;
    } else if (($conv44 | 0) == 6) {
      label = 29;
      break;
    } else if (($conv44 | 0) == 7) {
      label = 33;
      break;
    } else if (($conv44 | 0) == 18) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 23:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 40;
    break;
   case 24:
    $add_ptr47 = $ptr_addr_070 + 1 | 0;
    $ptr_addr_0_be = $add_ptr47;
    label = 37;
    break;
   case 25:
    $sub_ptr_rhs_cast50 = $ptr_addr_070;
    $sub_ptr_sub51 = $sub_ptr_lhs_cast49 - $sub_ptr_rhs_cast50 | 0;
    $cmp52 = ($sub_ptr_sub51 | 0) < 2;
    if ($cmp52) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $12 = HEAP32[$3 >> 2] | 0;
    $call56 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr_addr_070) | 0;
    $tobool57 = ($call56 | 0) == 0;
    if ($tobool57) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 40;
    break;
   case 28:
    $add_ptr60 = $ptr_addr_070 + 2 | 0;
    $ptr_addr_0_be = $add_ptr60;
    label = 37;
    break;
   case 29:
    $sub_ptr_rhs_cast63 = $ptr_addr_070;
    $sub_ptr_sub64 = $sub_ptr_lhs_cast62 - $sub_ptr_rhs_cast63 | 0;
    $cmp65 = ($sub_ptr_sub64 | 0) < 3;
    if ($cmp65) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $13 = HEAP32[$isName3 >> 2] | 0;
    $14 = $13;
    $call69 = FUNCTION_TABLE_iii[$14 & 1023]($enc, $ptr_addr_070) | 0;
    $tobool70 = ($call69 | 0) == 0;
    if ($tobool70) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 40;
    break;
   case 32:
    $add_ptr73 = $ptr_addr_070 + 3 | 0;
    $ptr_addr_0_be = $add_ptr73;
    label = 37;
    break;
   case 33:
    $sub_ptr_rhs_cast76 = $ptr_addr_070;
    $sub_ptr_sub77 = $sub_ptr_lhs_cast75 - $sub_ptr_rhs_cast76 | 0;
    $cmp78 = ($sub_ptr_sub77 | 0) < 4;
    if ($cmp78) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $15 = HEAP32[$isName4 >> 2] | 0;
    $16 = $15;
    $call82 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $ptr_addr_070) | 0;
    $tobool83 = ($call82 | 0) == 0;
    if ($tobool83) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 40;
    break;
   case 36:
    $add_ptr86 = $ptr_addr_070 + 4 | 0;
    $ptr_addr_0_be = $add_ptr86;
    label = 37;
    break;
   case 37:
    $cmp39 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp39) {
      $retval_0 = -1;
      label = 40;
      break;
    } else {
      $ptr_addr_070 = $ptr_addr_0_be;
      label = 22;
      break;
    }
   case 38:
    $add_ptr88 = $ptr_addr_070 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr88;
    $retval_0 = 9;
    label = 40;
    break;
   case 39:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_070;
    $retval_0 = 0;
    label = 40;
    break;
   case 40:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanPercent($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $ptr_addr_0_ph = 0, $cmp3767 = 0, $sub_ptr_lhs_cast47 = 0, $3 = 0, $sub_ptr_lhs_cast60 = 0, $isName3 = 0, $sub_ptr_lhs_cast73 = 0, $isName4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $isNmstrt2 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $add_ptr9 = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $isNmstrt3 = 0, $6 = 0, $7 = 0, $call18 = 0, $tobool19 = 0, $add_ptr22 = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $isNmstrt4 = 0, $8 = 0, $9 = 0, $call31 = 0, $tobool32 = 0, $add_ptr35 = 0, $ptr_addr_068 = 0, $10 = 0, $idxprom39 = 0, $arrayidx41 = 0, $11 = 0, $conv42 = 0, $add_ptr45 = 0, $sub_ptr_rhs_cast48 = 0, $sub_ptr_sub49 = 0, $cmp50 = 0, $12 = 0, $call54 = 0, $tobool55 = 0, $add_ptr58 = 0, $sub_ptr_rhs_cast61 = 0, $sub_ptr_sub62 = 0, $cmp63 = 0, $13 = 0, $14 = 0, $call67 = 0, $tobool68 = 0, $add_ptr71 = 0, $sub_ptr_rhs_cast74 = 0, $sub_ptr_sub75 = 0, $cmp76 = 0, $15 = 0, $16 = 0, $call80 = 0, $tobool81 = 0, $add_ptr84 = 0, $ptr_addr_0_be = 0, $cmp37 = 0, $add_ptr86 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 40;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 29) {
      label = 4;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else if (($conv | 0) == 21 | ($conv | 0) == 10 | ($conv | 0) == 9 | ($conv | 0) == 30) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $ptr_addr_0_ph = $add_ptr;
    label = 6;
    break;
   case 6:
    $cmp3767 = ($ptr_addr_0_ph | 0) == ($end | 0);
    if ($cmp3767) {
      $retval_0 = -1;
      label = 40;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast47 = $end;
    $3 = $enc + 328 | 0;
    $sub_ptr_lhs_cast60 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast73 = $end;
    $isName4 = $enc + 336 | 0;
    $ptr_addr_068 = $ptr_addr_0_ph;
    label = 22;
    break;
   case 8:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $isNmstrt2 = $enc + 340 | 0;
    $4 = HEAP32[$isNmstrt2 >> 2] | 0;
    $5 = $4;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 11:
    $add_ptr9 = $ptr + 2 | 0;
    $ptr_addr_0_ph = $add_ptr9;
    label = 6;
    break;
   case 12:
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_rhs_cast12 = $ptr;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isNmstrt3 = $enc + 344 | 0;
    $6 = HEAP32[$isNmstrt3 >> 2] | 0;
    $7 = $6;
    $call18 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 15:
    $add_ptr22 = $ptr + 3 | 0;
    $ptr_addr_0_ph = $add_ptr22;
    label = 6;
    break;
   case 16:
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_rhs_cast25 = $ptr;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 4;
    if ($cmp27) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isNmstrt4 = $enc + 348 | 0;
    $8 = HEAP32[$isNmstrt4 >> 2] | 0;
    $9 = $8;
    $call31 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 19:
    $add_ptr35 = $ptr + 4 | 0;
    $ptr_addr_0_ph = $add_ptr35;
    label = 6;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 22;
    label = 40;
    break;
   case 21:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 40;
    break;
   case 22:
    $10 = HEAP8[$ptr_addr_068] | 0;
    $idxprom39 = $10 & 255;
    $arrayidx41 = $1 + $idxprom39 | 0;
    $11 = HEAP8[$arrayidx41] | 0;
    $conv42 = $11 & 255;
    if (($conv42 | 0) == 29) {
      label = 23;
      break;
    } else if (($conv42 | 0) == 22 | ($conv42 | 0) == 24 | ($conv42 | 0) == 25 | ($conv42 | 0) == 26 | ($conv42 | 0) == 27) {
      label = 24;
      break;
    } else if (($conv42 | 0) == 5) {
      label = 25;
      break;
    } else if (($conv42 | 0) == 6) {
      label = 29;
      break;
    } else if (($conv42 | 0) == 7) {
      label = 33;
      break;
    } else if (($conv42 | 0) == 18) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 23:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_068;
    $retval_0 = 0;
    label = 40;
    break;
   case 24:
    $add_ptr45 = $ptr_addr_068 + 1 | 0;
    $ptr_addr_0_be = $add_ptr45;
    label = 37;
    break;
   case 25:
    $sub_ptr_rhs_cast48 = $ptr_addr_068;
    $sub_ptr_sub49 = $sub_ptr_lhs_cast47 - $sub_ptr_rhs_cast48 | 0;
    $cmp50 = ($sub_ptr_sub49 | 0) < 2;
    if ($cmp50) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $12 = HEAP32[$3 >> 2] | 0;
    $call54 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr_addr_068) | 0;
    $tobool55 = ($call54 | 0) == 0;
    if ($tobool55) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_068;
    $retval_0 = 0;
    label = 40;
    break;
   case 28:
    $add_ptr58 = $ptr_addr_068 + 2 | 0;
    $ptr_addr_0_be = $add_ptr58;
    label = 37;
    break;
   case 29:
    $sub_ptr_rhs_cast61 = $ptr_addr_068;
    $sub_ptr_sub62 = $sub_ptr_lhs_cast60 - $sub_ptr_rhs_cast61 | 0;
    $cmp63 = ($sub_ptr_sub62 | 0) < 3;
    if ($cmp63) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $13 = HEAP32[$isName3 >> 2] | 0;
    $14 = $13;
    $call67 = FUNCTION_TABLE_iii[$14 & 1023]($enc, $ptr_addr_068) | 0;
    $tobool68 = ($call67 | 0) == 0;
    if ($tobool68) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_068;
    $retval_0 = 0;
    label = 40;
    break;
   case 32:
    $add_ptr71 = $ptr_addr_068 + 3 | 0;
    $ptr_addr_0_be = $add_ptr71;
    label = 37;
    break;
   case 33:
    $sub_ptr_rhs_cast74 = $ptr_addr_068;
    $sub_ptr_sub75 = $sub_ptr_lhs_cast73 - $sub_ptr_rhs_cast74 | 0;
    $cmp76 = ($sub_ptr_sub75 | 0) < 4;
    if ($cmp76) {
      $retval_0 = -2;
      label = 40;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $15 = HEAP32[$isName4 >> 2] | 0;
    $16 = $15;
    $call80 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $ptr_addr_068) | 0;
    $tobool81 = ($call80 | 0) == 0;
    if ($tobool81) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_068;
    $retval_0 = 0;
    label = 40;
    break;
   case 36:
    $add_ptr84 = $ptr_addr_068 + 4 | 0;
    $ptr_addr_0_be = $add_ptr84;
    label = 37;
    break;
   case 37:
    $cmp37 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp37) {
      $retval_0 = -1;
      label = 40;
      break;
    } else {
      $ptr_addr_068 = $ptr_addr_0_be;
      label = 22;
      break;
    }
   case 38:
    $add_ptr86 = $ptr_addr_068 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr86;
    $retval_0 = 28;
    label = 40;
    break;
   case 39:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_068;
    $retval_0 = 0;
    label = 40;
    break;
   case 40:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanHexCharRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $conv_off = 0, $switch = 0, $ptr_addr_016 = 0, $cmp117 = 0, $ptr_addr_019 = 0, $ptr_pn18 = 0, $3 = 0, $idxprom3 = 0, $arrayidx5 = 0, $4 = 0, $conv6 = 0, $ptr_addr_0 = 0, $cmp1 = 0, $add_ptr9 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 10;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    $conv_off = $conv - 24 | 0;
    $switch = $conv_off >>> 0 < 2;
    if ($switch) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $ptr_addr_016 = $ptr + 1 | 0;
    $cmp117 = ($ptr_addr_016 | 0) == ($end | 0);
    if ($cmp117) {
      $retval_0 = -1;
      label = 10;
      break;
    } else {
      $ptr_pn18 = $ptr;
      $ptr_addr_019 = $ptr_addr_016;
      label = 6;
      break;
    }
   case 5:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 10;
    break;
   case 6:
    $3 = HEAP8[$ptr_addr_019] | 0;
    $idxprom3 = $3 & 255;
    $arrayidx5 = $1 + $idxprom3 | 0;
    $4 = HEAP8[$arrayidx5] | 0;
    $conv6 = $4 & 255;
    if (($conv6 | 0) == 25 | ($conv6 | 0) == 24) {
      label = 7;
      break;
    } else if (($conv6 | 0) == 18) {
      label = 8;
      break;
    } else {
      label = 9;
      break;
    }
   case 7:
    $ptr_addr_0 = $ptr_addr_019 + 1 | 0;
    $cmp1 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp1) {
      $retval_0 = -1;
      label = 10;
      break;
    } else {
      $ptr_pn18 = $ptr_addr_019;
      $ptr_addr_019 = $ptr_addr_0;
      label = 6;
      break;
    }
   case 8:
    $add_ptr9 = $ptr_pn18 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr9;
    $retval_0 = 10;
    label = 10;
    break;
   case 9:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_019;
    $retval_0 = 0;
    label = 10;
    break;
   case 10:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanCdataSection($ptr, $end, $nextTokPtr) {
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $0 = 0, $cmp3 = 0, $ptr_addr_02_lcssa = 0, $add_ptr = 0, $1 = 0, $cmp3_1 = 0, $retval_0 = 0, $add_ptr_1 = 0, $2 = 0, $cmp3_2 = 0, $add_ptr_2 = 0, $3 = 0, $cmp3_3 = 0, $add_ptr_3 = 0, $4 = 0, $cmp3_4 = 0, $add_ptr_4 = 0, $5 = 0, $cmp3_5 = 0, $add_ptr_5 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) < 6;
    if ($cmp) {
      $retval_0 = -1;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp3 = $0 << 24 >> 24 == 67;
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $ptr_addr_02_lcssa = $ptr;
      label = 4;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_02_lcssa;
    $retval_0 = 0;
    label = 6;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $1 = HEAP8[$add_ptr] | 0;
    $cmp3_1 = $1 << 24 >> 24 == 68;
    if ($cmp3_1) {
      label = 7;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr;
      label = 4;
      break;
    }
   case 6:
    return $retval_0 | 0;
   case 7:
    $add_ptr_1 = $ptr + 2 | 0;
    $2 = HEAP8[$add_ptr_1] | 0;
    $cmp3_2 = $2 << 24 >> 24 == 65;
    if ($cmp3_2) {
      label = 8;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_1;
      label = 4;
      break;
    }
   case 8:
    $add_ptr_2 = $ptr + 3 | 0;
    $3 = HEAP8[$add_ptr_2] | 0;
    $cmp3_3 = $3 << 24 >> 24 == 84;
    if ($cmp3_3) {
      label = 9;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_2;
      label = 4;
      break;
    }
   case 9:
    $add_ptr_3 = $ptr + 4 | 0;
    $4 = HEAP8[$add_ptr_3] | 0;
    $cmp3_4 = $4 << 24 >> 24 == 65;
    if ($cmp3_4) {
      label = 10;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_3;
      label = 4;
      break;
    }
   case 10:
    $add_ptr_4 = $ptr + 5 | 0;
    $5 = HEAP8[$add_ptr_4] | 0;
    $cmp3_5 = $5 << 24 >> 24 == 91;
    if ($cmp3_5) {
      label = 11;
      break;
    } else {
      $ptr_addr_02_lcssa = $add_ptr_4;
      label = 4;
      break;
    }
   case 11:
    $add_ptr_5 = $ptr + 6 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr_5;
    $retval_0 = 8;
    label = 6;
    break;
  }
  return 0;
}
function _normal_scanCharRef($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $add_ptr = 0, $call = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $cond = 0, $ptr_pn = 0, $ptr_addr_0 = 0, $cmp6 = 0, $3 = 0, $idxprom8 = 0, $arrayidx10 = 0, $4 = 0, $conv11 = 0, $add_ptr14 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 11;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 120;
    if ($cmp1) {
      label = 4;
      break;
    } else {
      label = 5;
      break;
    }
   case 4:
    $add_ptr = $ptr + 1 | 0;
    $call = _normal_scanHexCharRef($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 11;
    break;
   case 5:
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $cond = $2 << 24 >> 24 == 25;
    if ($cond) {
      $ptr_pn = $ptr;
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 11;
    break;
   case 7:
    $ptr_addr_0 = $ptr_pn + 1 | 0;
    $cmp6 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp6) {
      $retval_0 = -1;
      label = 11;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $3 = HEAP8[$ptr_addr_0] | 0;
    $idxprom8 = $3 & 255;
    $arrayidx10 = $1 + $idxprom8 | 0;
    $4 = HEAP8[$arrayidx10] | 0;
    $conv11 = $4 & 255;
    if (($conv11 | 0) == 25) {
      $ptr_pn = $ptr_addr_0;
      label = 7;
      break;
    } else if (($conv11 | 0) == 18) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $add_ptr14 = $ptr_pn + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr14;
    $retval_0 = 10;
    label = 11;
    break;
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0;
    $retval_0 = 0;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanLt($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $ptr_addr_0_ph = 0, $cmp59155 = 0, $sub_ptr_lhs_cast69 = 0, $3 = 0, $sub_ptr_lhs_cast82 = 0, $isName3 = 0, $sub_ptr_lhs_cast95 = 0, $isName4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $isNmstrt2 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $add_ptr9 = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $isNmstrt3 = 0, $6 = 0, $7 = 0, $call18 = 0, $tobool19 = 0, $add_ptr22 = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $isNmstrt4 = 0, $8 = 0, $9 = 0, $call31 = 0, $tobool32 = 0, $add_ptr35 = 0, $add_ptr37 = 0, $cmp38 = 0, $10 = 0, $idxprom42 = 0, $arrayidx44 = 0, $11 = 0, $conv45 = 0, $add_ptr47 = 0, $call48 = 0, $add_ptr50 = 0, $call51 = 0, $add_ptr53 = 0, $call54 = 0, $add_ptr56 = 0, $call57 = 0, $ptr_addr_0156 = 0, $12 = 0, $idxprom61 = 0, $arrayidx63 = 0, $13 = 0, $conv64 = 0, $ptr_addr_1140 = 0, $cmp110141 = 0, $add_ptr67 = 0, $sub_ptr_rhs_cast70 = 0, $sub_ptr_sub71 = 0, $cmp72 = 0, $14 = 0, $call76 = 0, $tobool77 = 0, $add_ptr80 = 0, $sub_ptr_rhs_cast83 = 0, $sub_ptr_sub84 = 0, $cmp85 = 0, $15 = 0, $16 = 0, $call89 = 0, $tobool90 = 0, $add_ptr93 = 0, $sub_ptr_rhs_cast96 = 0, $sub_ptr_sub97 = 0, $cmp98 = 0, $17 = 0, $18 = 0, $call102 = 0, $tobool103 = 0, $add_ptr106 = 0, $ptr_addr_0_be = 0, $cmp59 = 0, $ptr_addr_1143 = 0, $ptr_addr_0_pn142 = 0, $19 = 0, $idxprom113 = 0, $arrayidx115 = 0, $20 = 0, $conv116 = 0, $ptr_addr_1 = 0, $cmp110 = 0, $add_ptr119 = 0, $sub_ptr_lhs_cast121 = 0, $sub_ptr_rhs_cast122 = 0, $sub_ptr_sub123 = 0, $cmp124 = 0, $isNmstrt2128 = 0, $21 = 0, $22 = 0, $call129 = 0, $tobool130 = 0, $add_ptr133 = 0, $sub_ptr_lhs_cast135 = 0, $sub_ptr_rhs_cast136 = 0, $sub_ptr_sub137 = 0, $cmp138 = 0, $isNmstrt3142 = 0, $23 = 0, $24 = 0, $call143 = 0, $tobool144 = 0, $add_ptr147 = 0, $sub_ptr_lhs_cast149 = 0, $sub_ptr_rhs_cast150 = 0, $sub_ptr_sub151 = 0, $cmp152 = 0, $isNmstrt4156 = 0, $25 = 0, $26 = 0, $call157 = 0, $tobool158 = 0, $add_ptr161 = 0, $ptr_addr_2 = 0, $call168 = 0, $ptr_addr_3 = 0, $add_ptr170 = 0, $ptr_addr_4 = 0, $add_ptr172 = 0, $cmp173 = 0, $27 = 0, $cmp178 = 0, $add_ptr182 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 29) {
      label = 4;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else if (($conv | 0) == 16) {
      label = 20;
      break;
    } else if (($conv | 0) == 15) {
      label = 25;
      break;
    } else if (($conv | 0) == 17) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 69;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $ptr_addr_0_ph = $add_ptr;
    label = 6;
    break;
   case 6:
    $cmp59155 = ($ptr_addr_0_ph | 0) == ($end | 0);
    if ($cmp59155) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast69 = $end;
    $3 = $enc + 328 | 0;
    $sub_ptr_lhs_cast82 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast95 = $end;
    $isName4 = $enc + 336 | 0;
    $ptr_addr_0156 = $ptr_addr_0_ph;
    label = 28;
    break;
   case 8:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $isNmstrt2 = $enc + 340 | 0;
    $4 = HEAP32[$isNmstrt2 >> 2] | 0;
    $5 = $4;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 69;
    break;
   case 11:
    $add_ptr9 = $ptr + 2 | 0;
    $ptr_addr_0_ph = $add_ptr9;
    label = 6;
    break;
   case 12:
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_rhs_cast12 = $ptr;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isNmstrt3 = $enc + 344 | 0;
    $6 = HEAP32[$isNmstrt3 >> 2] | 0;
    $7 = $6;
    $call18 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 69;
    break;
   case 15:
    $add_ptr22 = $ptr + 3 | 0;
    $ptr_addr_0_ph = $add_ptr22;
    label = 6;
    break;
   case 16:
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_rhs_cast25 = $ptr;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 4;
    if ($cmp27) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isNmstrt4 = $enc + 348 | 0;
    $8 = HEAP32[$isNmstrt4 >> 2] | 0;
    $9 = $8;
    $call31 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 69;
    break;
   case 19:
    $add_ptr35 = $ptr + 4 | 0;
    $ptr_addr_0_ph = $add_ptr35;
    label = 6;
    break;
   case 20:
    $add_ptr37 = $ptr + 1 | 0;
    $cmp38 = ($add_ptr37 | 0) == ($end | 0);
    if ($cmp38) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $10 = HEAP8[$add_ptr37] | 0;
    $idxprom42 = $10 & 255;
    $arrayidx44 = $1 + $idxprom42 | 0;
    $11 = HEAP8[$arrayidx44] | 0;
    $conv45 = $11 & 255;
    if (($conv45 | 0) == 27) {
      label = 22;
      break;
    } else if (($conv45 | 0) == 20) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 22:
    $add_ptr47 = $ptr + 2 | 0;
    $call48 = _normal_scanComment($enc, $add_ptr47, $end, $nextTokPtr) | 0;
    $retval_0 = $call48;
    label = 69;
    break;
   case 23:
    $add_ptr50 = $ptr + 2 | 0;
    $call51 = _normal_scanCdataSection($add_ptr50, $end, $nextTokPtr) | 0;
    $retval_0 = $call51;
    label = 69;
    break;
   case 24:
    HEAP32[$nextTokPtr >> 2] = $add_ptr37;
    $retval_0 = 0;
    label = 69;
    break;
   case 25:
    $add_ptr53 = $ptr + 1 | 0;
    $call54 = _normal_scanPi($enc, $add_ptr53, $end, $nextTokPtr) | 0;
    $retval_0 = $call54;
    label = 69;
    break;
   case 26:
    $add_ptr56 = $ptr + 1 | 0;
    $call57 = _normal_scanEndTag($enc, $add_ptr56, $end, $nextTokPtr) | 0;
    $retval_0 = $call57;
    label = 69;
    break;
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 69;
    break;
   case 28:
    $12 = HEAP8[$ptr_addr_0156] | 0;
    $idxprom61 = $12 & 255;
    $arrayidx63 = $1 + $idxprom61 | 0;
    $13 = HEAP8[$arrayidx63] | 0;
    $conv64 = $13 & 255;
    if (($conv64 | 0) == 21 | ($conv64 | 0) == 9 | ($conv64 | 0) == 10) {
      label = 29;
      break;
    } else if (($conv64 | 0) == 29) {
      label = 30;
      break;
    } else if (($conv64 | 0) == 22 | ($conv64 | 0) == 24 | ($conv64 | 0) == 25 | ($conv64 | 0) == 26 | ($conv64 | 0) == 27) {
      label = 31;
      break;
    } else if (($conv64 | 0) == 5) {
      label = 32;
      break;
    } else if (($conv64 | 0) == 6) {
      label = 36;
      break;
    } else if (($conv64 | 0) == 7) {
      label = 40;
      break;
    } else if (($conv64 | 0) == 11) {
      $ptr_addr_3 = $ptr_addr_0156;
      label = 63;
      break;
    } else if (($conv64 | 0) == 17) {
      $ptr_addr_4 = $ptr_addr_0156;
      label = 64;
      break;
    } else {
      label = 68;
      break;
    }
   case 29:
    $ptr_addr_1140 = $ptr_addr_0156 + 1 | 0;
    $cmp110141 = ($ptr_addr_1140 | 0) == ($end | 0);
    if ($cmp110141) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      $ptr_addr_0_pn142 = $ptr_addr_0156;
      $ptr_addr_1143 = $ptr_addr_1140;
      label = 45;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0156;
    $retval_0 = 0;
    label = 69;
    break;
   case 31:
    $add_ptr67 = $ptr_addr_0156 + 1 | 0;
    $ptr_addr_0_be = $add_ptr67;
    label = 44;
    break;
   case 32:
    $sub_ptr_rhs_cast70 = $ptr_addr_0156;
    $sub_ptr_sub71 = $sub_ptr_lhs_cast69 - $sub_ptr_rhs_cast70 | 0;
    $cmp72 = ($sub_ptr_sub71 | 0) < 2;
    if ($cmp72) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $14 = HEAP32[$3 >> 2] | 0;
    $call76 = FUNCTION_TABLE_iii[$14 & 1023]($enc, $ptr_addr_0156) | 0;
    $tobool77 = ($call76 | 0) == 0;
    if ($tobool77) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0156;
    $retval_0 = 0;
    label = 69;
    break;
   case 35:
    $add_ptr80 = $ptr_addr_0156 + 2 | 0;
    $ptr_addr_0_be = $add_ptr80;
    label = 44;
    break;
   case 36:
    $sub_ptr_rhs_cast83 = $ptr_addr_0156;
    $sub_ptr_sub84 = $sub_ptr_lhs_cast82 - $sub_ptr_rhs_cast83 | 0;
    $cmp85 = ($sub_ptr_sub84 | 0) < 3;
    if ($cmp85) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $15 = HEAP32[$isName3 >> 2] | 0;
    $16 = $15;
    $call89 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $ptr_addr_0156) | 0;
    $tobool90 = ($call89 | 0) == 0;
    if ($tobool90) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0156;
    $retval_0 = 0;
    label = 69;
    break;
   case 39:
    $add_ptr93 = $ptr_addr_0156 + 3 | 0;
    $ptr_addr_0_be = $add_ptr93;
    label = 44;
    break;
   case 40:
    $sub_ptr_rhs_cast96 = $ptr_addr_0156;
    $sub_ptr_sub97 = $sub_ptr_lhs_cast95 - $sub_ptr_rhs_cast96 | 0;
    $cmp98 = ($sub_ptr_sub97 | 0) < 4;
    if ($cmp98) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $17 = HEAP32[$isName4 >> 2] | 0;
    $18 = $17;
    $call102 = FUNCTION_TABLE_iii[$18 & 1023]($enc, $ptr_addr_0156) | 0;
    $tobool103 = ($call102 | 0) == 0;
    if ($tobool103) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0156;
    $retval_0 = 0;
    label = 69;
    break;
   case 43:
    $add_ptr106 = $ptr_addr_0156 + 4 | 0;
    $ptr_addr_0_be = $add_ptr106;
    label = 44;
    break;
   case 44:
    $cmp59 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp59) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      $ptr_addr_0156 = $ptr_addr_0_be;
      label = 28;
      break;
    }
   case 45:
    $19 = HEAP8[$ptr_addr_1143] | 0;
    $idxprom113 = $19 & 255;
    $arrayidx115 = $1 + $idxprom113 | 0;
    $20 = HEAP8[$arrayidx115] | 0;
    $conv116 = $20 & 255;
    if (($conv116 | 0) == 21 | ($conv116 | 0) == 9 | ($conv116 | 0) == 10) {
      label = 46;
      break;
    } else if (($conv116 | 0) == 29) {
      label = 47;
      break;
    } else if (($conv116 | 0) == 22 | ($conv116 | 0) == 24) {
      label = 48;
      break;
    } else if (($conv116 | 0) == 5) {
      label = 49;
      break;
    } else if (($conv116 | 0) == 6) {
      label = 53;
      break;
    } else if (($conv116 | 0) == 7) {
      label = 57;
      break;
    } else if (($conv116 | 0) == 11) {
      $ptr_addr_3 = $ptr_addr_1143;
      label = 63;
      break;
    } else if (($conv116 | 0) == 17) {
      $ptr_addr_4 = $ptr_addr_1143;
      label = 64;
      break;
    } else {
      label = 61;
      break;
    }
   case 46:
    $ptr_addr_1 = $ptr_addr_1143 + 1 | 0;
    $cmp110 = ($ptr_addr_1 | 0) == ($end | 0);
    if ($cmp110) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      $ptr_addr_0_pn142 = $ptr_addr_1143;
      $ptr_addr_1143 = $ptr_addr_1;
      label = 45;
      break;
    }
   case 47:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1143;
    $retval_0 = 0;
    label = 69;
    break;
   case 48:
    $add_ptr119 = $ptr_addr_0_pn142 + 2 | 0;
    $ptr_addr_2 = $add_ptr119;
    label = 62;
    break;
   case 49:
    $sub_ptr_lhs_cast121 = $end;
    $sub_ptr_rhs_cast122 = $ptr_addr_1143;
    $sub_ptr_sub123 = $sub_ptr_lhs_cast121 - $sub_ptr_rhs_cast122 | 0;
    $cmp124 = ($sub_ptr_sub123 | 0) < 2;
    if ($cmp124) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $isNmstrt2128 = $enc + 340 | 0;
    $21 = HEAP32[$isNmstrt2128 >> 2] | 0;
    $22 = $21;
    $call129 = FUNCTION_TABLE_iii[$22 & 1023]($enc, $ptr_addr_1143) | 0;
    $tobool130 = ($call129 | 0) == 0;
    if ($tobool130) {
      label = 51;
      break;
    } else {
      label = 52;
      break;
    }
   case 51:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1143;
    $retval_0 = 0;
    label = 69;
    break;
   case 52:
    $add_ptr133 = $ptr_addr_0_pn142 + 3 | 0;
    $ptr_addr_2 = $add_ptr133;
    label = 62;
    break;
   case 53:
    $sub_ptr_lhs_cast135 = $end;
    $sub_ptr_rhs_cast136 = $ptr_addr_1143;
    $sub_ptr_sub137 = $sub_ptr_lhs_cast135 - $sub_ptr_rhs_cast136 | 0;
    $cmp138 = ($sub_ptr_sub137 | 0) < 3;
    if ($cmp138) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    $isNmstrt3142 = $enc + 344 | 0;
    $23 = HEAP32[$isNmstrt3142 >> 2] | 0;
    $24 = $23;
    $call143 = FUNCTION_TABLE_iii[$24 & 1023]($enc, $ptr_addr_1143) | 0;
    $tobool144 = ($call143 | 0) == 0;
    if ($tobool144) {
      label = 55;
      break;
    } else {
      label = 56;
      break;
    }
   case 55:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1143;
    $retval_0 = 0;
    label = 69;
    break;
   case 56:
    $add_ptr147 = $ptr_addr_0_pn142 + 4 | 0;
    $ptr_addr_2 = $add_ptr147;
    label = 62;
    break;
   case 57:
    $sub_ptr_lhs_cast149 = $end;
    $sub_ptr_rhs_cast150 = $ptr_addr_1143;
    $sub_ptr_sub151 = $sub_ptr_lhs_cast149 - $sub_ptr_rhs_cast150 | 0;
    $cmp152 = ($sub_ptr_sub151 | 0) < 4;
    if ($cmp152) {
      $retval_0 = -2;
      label = 69;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $isNmstrt4156 = $enc + 348 | 0;
    $25 = HEAP32[$isNmstrt4156 >> 2] | 0;
    $26 = $25;
    $call157 = FUNCTION_TABLE_iii[$26 & 1023]($enc, $ptr_addr_1143) | 0;
    $tobool158 = ($call157 | 0) == 0;
    if ($tobool158) {
      label = 59;
      break;
    } else {
      label = 60;
      break;
    }
   case 59:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1143;
    $retval_0 = 0;
    label = 69;
    break;
   case 60:
    $add_ptr161 = $ptr_addr_0_pn142 + 5 | 0;
    $ptr_addr_2 = $add_ptr161;
    label = 62;
    break;
   case 61:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1143;
    $retval_0 = 0;
    label = 69;
    break;
   case 62:
    $call168 = _normal_scanAtts($enc, $ptr_addr_2, $end, $nextTokPtr) | 0;
    $retval_0 = $call168;
    label = 69;
    break;
   case 63:
    $add_ptr170 = $ptr_addr_3 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr170;
    $retval_0 = 2;
    label = 69;
    break;
   case 64:
    $add_ptr172 = $ptr_addr_4 + 1 | 0;
    $cmp173 = ($add_ptr172 | 0) == ($end | 0);
    if ($cmp173) {
      $retval_0 = -1;
      label = 69;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $27 = HEAP8[$add_ptr172] | 0;
    $cmp178 = $27 << 24 >> 24 == 62;
    if ($cmp178) {
      label = 67;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    HEAP32[$nextTokPtr >> 2] = $add_ptr172;
    $retval_0 = 0;
    label = 69;
    break;
   case 67:
    $add_ptr182 = $ptr_addr_4 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr182;
    $retval_0 = 4;
    label = 69;
    break;
   case 68:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0156;
    $retval_0 = 0;
    label = 69;
    break;
   case 69:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanComment($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $cmp1 = 0, $add_ptr = 0, $cmp444 = 0, $type = 0, $1 = 0, $sub_ptr_lhs_cast = 0, $isInvalid2 = 0, $2 = 0, $sub_ptr_lhs_cast15 = 0, $isInvalid3 = 0, $3 = 0, $sub_ptr_lhs_cast28 = 0, $isInvalid4 = 0, $4 = 0, $ptr_addr_045 = 0, $5 = 0, $idxprom = 0, $arrayidx = 0, $6 = 0, $conv6 = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp7 = 0, $7 = 0, $call = 0, $tobool = 0, $add_ptr13 = 0, $sub_ptr_rhs_cast16 = 0, $sub_ptr_sub17 = 0, $cmp18 = 0, $8 = 0, $call22 = 0, $tobool23 = 0, $add_ptr26 = 0, $sub_ptr_rhs_cast29 = 0, $sub_ptr_sub30 = 0, $cmp31 = 0, $9 = 0, $call35 = 0, $tobool36 = 0, $add_ptr39 = 0, $add_ptr42 = 0, $cmp43 = 0, $10 = 0, $cmp48 = 0, $ptr_addr_0_be = 0, $cmp4 = 0, $add_ptr51 = 0, $cmp52 = 0, $11 = 0, $cmp57 = 0, $add_ptr61 = 0, $add_ptr63 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $cmp1 = $0 << 24 >> 24 == 45;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 29;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $cmp444 = ($add_ptr | 0) == ($end | 0);
    if ($cmp444) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $type = $enc + 72 | 0;
    $1 = $type;
    $sub_ptr_lhs_cast = $end;
    $isInvalid2 = $enc + 352 | 0;
    $2 = $isInvalid2;
    $sub_ptr_lhs_cast15 = $end;
    $isInvalid3 = $enc + 356 | 0;
    $3 = $isInvalid3;
    $sub_ptr_lhs_cast28 = $end;
    $isInvalid4 = $enc + 360 | 0;
    $4 = $isInvalid4;
    $ptr_addr_045 = $add_ptr;
    label = 7;
    break;
   case 7:
    $5 = HEAP8[$ptr_addr_045] | 0;
    $idxprom = $5 & 255;
    $arrayidx = $1 + $idxprom | 0;
    $6 = HEAP8[$arrayidx] | 0;
    $conv6 = $6 & 255;
    if (($conv6 | 0) == 5) {
      label = 8;
      break;
    } else if (($conv6 | 0) == 6) {
      label = 12;
      break;
    } else if (($conv6 | 0) == 7) {
      label = 16;
      break;
    } else if (($conv6 | 0) == 0 | ($conv6 | 0) == 1 | ($conv6 | 0) == 8) {
      label = 20;
      break;
    } else if (($conv6 | 0) == 27) {
      label = 21;
      break;
    } else {
      label = 28;
      break;
    }
   case 8:
    $sub_ptr_rhs_cast = $ptr_addr_045;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp7 = ($sub_ptr_sub | 0) < 2;
    if ($cmp7) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $7 = HEAP32[$2 >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr_addr_045) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 11;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_045;
    $retval_0 = 0;
    label = 29;
    break;
   case 11:
    $add_ptr13 = $ptr_addr_045 + 2 | 0;
    $ptr_addr_0_be = $add_ptr13;
    label = 23;
    break;
   case 12:
    $sub_ptr_rhs_cast16 = $ptr_addr_045;
    $sub_ptr_sub17 = $sub_ptr_lhs_cast15 - $sub_ptr_rhs_cast16 | 0;
    $cmp18 = ($sub_ptr_sub17 | 0) < 3;
    if ($cmp18) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $8 = HEAP32[$3 >> 2] | 0;
    $call22 = FUNCTION_TABLE_iii[$8 & 1023]($enc, $ptr_addr_045) | 0;
    $tobool23 = ($call22 | 0) == 0;
    if ($tobool23) {
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_045;
    $retval_0 = 0;
    label = 29;
    break;
   case 15:
    $add_ptr26 = $ptr_addr_045 + 3 | 0;
    $ptr_addr_0_be = $add_ptr26;
    label = 23;
    break;
   case 16:
    $sub_ptr_rhs_cast29 = $ptr_addr_045;
    $sub_ptr_sub30 = $sub_ptr_lhs_cast28 - $sub_ptr_rhs_cast29 | 0;
    $cmp31 = ($sub_ptr_sub30 | 0) < 4;
    if ($cmp31) {
      $retval_0 = -2;
      label = 29;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $9 = HEAP32[$4 >> 2] | 0;
    $call35 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr_addr_045) | 0;
    $tobool36 = ($call35 | 0) == 0;
    if ($tobool36) {
      label = 19;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_045;
    $retval_0 = 0;
    label = 29;
    break;
   case 19:
    $add_ptr39 = $ptr_addr_045 + 4 | 0;
    $ptr_addr_0_be = $add_ptr39;
    label = 23;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_045;
    $retval_0 = 0;
    label = 29;
    break;
   case 21:
    $add_ptr42 = $ptr_addr_045 + 1 | 0;
    $cmp43 = ($add_ptr42 | 0) == ($end | 0);
    if ($cmp43) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $10 = HEAP8[$add_ptr42] | 0;
    $cmp48 = $10 << 24 >> 24 == 45;
    if ($cmp48) {
      label = 24;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr42;
      label = 23;
      break;
    }
   case 23:
    $cmp4 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp4) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      $ptr_addr_045 = $ptr_addr_0_be;
      label = 7;
      break;
    }
   case 24:
    $add_ptr51 = $ptr_addr_045 + 2 | 0;
    $cmp52 = ($add_ptr51 | 0) == ($end | 0);
    if ($cmp52) {
      $retval_0 = -1;
      label = 29;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $11 = HEAP8[$add_ptr51] | 0;
    $cmp57 = $11 << 24 >> 24 == 62;
    if ($cmp57) {
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $add_ptr51;
    $retval_0 = 0;
    label = 29;
    break;
   case 27:
    $add_ptr61 = $ptr_addr_045 + 3 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr61;
    $retval_0 = 13;
    label = 29;
    break;
   case 28:
    $add_ptr63 = $ptr_addr_045 + 1 | 0;
    $ptr_addr_0_be = $add_ptr63;
    label = 23;
    break;
   case 29:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanPi($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $tok = 0, $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $ptr_addr_0_ph = 0, $cmp36122 = 0, $sub_ptr_lhs_cast46 = 0, $3 = 0, $sub_ptr_lhs_cast59 = 0, $isName3 = 0, $sub_ptr_lhs_cast72 = 0, $isName4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $isNmstrt2 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $add_ptr9 = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $isNmstrt3 = 0, $6 = 0, $7 = 0, $call18 = 0, $tobool19 = 0, $add_ptr22 = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $isNmstrt4 = 0, $8 = 0, $9 = 0, $call31 = 0, $tobool32 = 0, $add_ptr35 = 0, $ptr_addr_0123 = 0, $10 = 0, $idxprom38 = 0, $arrayidx40 = 0, $11 = 0, $conv41 = 0, $add_ptr44 = 0, $sub_ptr_rhs_cast47 = 0, $sub_ptr_sub48 = 0, $cmp49 = 0, $12 = 0, $call53 = 0, $tobool54 = 0, $add_ptr57 = 0, $sub_ptr_rhs_cast60 = 0, $sub_ptr_sub61 = 0, $cmp62 = 0, $13 = 0, $14 = 0, $call66 = 0, $tobool67 = 0, $add_ptr70 = 0, $sub_ptr_rhs_cast73 = 0, $sub_ptr_sub74 = 0, $cmp75 = 0, $15 = 0, $16 = 0, $call79 = 0, $tobool80 = 0, $add_ptr83 = 0, $ptr_addr_0_be = 0, $cmp36 = 0, $call85 = 0, $tobool86 = 0, $add_ptr89 = 0, $cmp91111 = 0, $sub_ptr_lhs_cast99 = 0, $isInvalid2 = 0, $17 = 0, $sub_ptr_lhs_cast112 = 0, $isInvalid3 = 0, $18 = 0, $sub_ptr_lhs_cast125 = 0, $isInvalid4 = 0, $19 = 0, $ptr_addr_1112 = 0, $20 = 0, $idxprom94 = 0, $arrayidx96 = 0, $21 = 0, $conv97 = 0, $sub_ptr_rhs_cast100 = 0, $sub_ptr_sub101 = 0, $cmp102 = 0, $22 = 0, $call106 = 0, $tobool107 = 0, $add_ptr110 = 0, $sub_ptr_rhs_cast113 = 0, $sub_ptr_sub114 = 0, $cmp115 = 0, $23 = 0, $call119 = 0, $tobool120 = 0, $add_ptr123 = 0, $sub_ptr_rhs_cast126 = 0, $sub_ptr_sub127 = 0, $cmp128 = 0, $24 = 0, $call132 = 0, $tobool133 = 0, $add_ptr136 = 0, $add_ptr139 = 0, $cmp140 = 0, $25 = 0, $cmp145 = 0, $ptr_addr_1_be = 0, $cmp91 = 0, $add_ptr148 = 0, $26 = 0, $add_ptr151 = 0, $call154 = 0, $tobool155 = 0, $add_ptr158 = 0, $cmp159 = 0, $27 = 0, $cmp164 = 0, $add_ptr167 = 0, $28 = 0, $ptr_addr_2 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $tok = __stackBase__ | 0;
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 29) {
      label = 4;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else {
      label = 20;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 66;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $ptr_addr_0_ph = $add_ptr;
    label = 6;
    break;
   case 6:
    $cmp36122 = ($ptr_addr_0_ph | 0) == ($end | 0);
    if ($cmp36122) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast46 = $end;
    $3 = $enc + 328 | 0;
    $sub_ptr_lhs_cast59 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast72 = $end;
    $isName4 = $enc + 336 | 0;
    $ptr_addr_0123 = $ptr_addr_0_ph;
    label = 21;
    break;
   case 8:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $isNmstrt2 = $enc + 340 | 0;
    $4 = HEAP32[$isNmstrt2 >> 2] | 0;
    $5 = $4;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 66;
    break;
   case 11:
    $add_ptr9 = $ptr + 2 | 0;
    $ptr_addr_0_ph = $add_ptr9;
    label = 6;
    break;
   case 12:
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_rhs_cast12 = $ptr;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isNmstrt3 = $enc + 344 | 0;
    $6 = HEAP32[$isNmstrt3 >> 2] | 0;
    $7 = $6;
    $call18 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 66;
    break;
   case 15:
    $add_ptr22 = $ptr + 3 | 0;
    $ptr_addr_0_ph = $add_ptr22;
    label = 6;
    break;
   case 16:
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_rhs_cast25 = $ptr;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 4;
    if ($cmp27) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isNmstrt4 = $enc + 348 | 0;
    $8 = HEAP32[$isNmstrt4 >> 2] | 0;
    $9 = $8;
    $call31 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 66;
    break;
   case 19:
    $add_ptr35 = $ptr + 4 | 0;
    $ptr_addr_0_ph = $add_ptr35;
    label = 6;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 66;
    break;
   case 21:
    $10 = HEAP8[$ptr_addr_0123] | 0;
    $idxprom38 = $10 & 255;
    $arrayidx40 = $1 + $idxprom38 | 0;
    $11 = HEAP8[$arrayidx40] | 0;
    $conv41 = $11 & 255;
    if (($conv41 | 0) == 29) {
      label = 22;
      break;
    } else if (($conv41 | 0) == 22 | ($conv41 | 0) == 24 | ($conv41 | 0) == 25 | ($conv41 | 0) == 26 | ($conv41 | 0) == 27) {
      label = 23;
      break;
    } else if (($conv41 | 0) == 5) {
      label = 24;
      break;
    } else if (($conv41 | 0) == 6) {
      label = 28;
      break;
    } else if (($conv41 | 0) == 7) {
      label = 32;
      break;
    } else if (($conv41 | 0) == 21 | ($conv41 | 0) == 9 | ($conv41 | 0) == 10) {
      label = 37;
      break;
    } else if (($conv41 | 0) == 15) {
      label = 60;
      break;
    } else {
      $ptr_addr_2 = $ptr_addr_0123;
      label = 65;
      break;
    }
   case 22:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0123;
    $retval_0 = 0;
    label = 66;
    break;
   case 23:
    $add_ptr44 = $ptr_addr_0123 + 1 | 0;
    $ptr_addr_0_be = $add_ptr44;
    label = 36;
    break;
   case 24:
    $sub_ptr_rhs_cast47 = $ptr_addr_0123;
    $sub_ptr_sub48 = $sub_ptr_lhs_cast46 - $sub_ptr_rhs_cast47 | 0;
    $cmp49 = ($sub_ptr_sub48 | 0) < 2;
    if ($cmp49) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $12 = HEAP32[$3 >> 2] | 0;
    $call53 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr_addr_0123) | 0;
    $tobool54 = ($call53 | 0) == 0;
    if ($tobool54) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0123;
    $retval_0 = 0;
    label = 66;
    break;
   case 27:
    $add_ptr57 = $ptr_addr_0123 + 2 | 0;
    $ptr_addr_0_be = $add_ptr57;
    label = 36;
    break;
   case 28:
    $sub_ptr_rhs_cast60 = $ptr_addr_0123;
    $sub_ptr_sub61 = $sub_ptr_lhs_cast59 - $sub_ptr_rhs_cast60 | 0;
    $cmp62 = ($sub_ptr_sub61 | 0) < 3;
    if ($cmp62) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $13 = HEAP32[$isName3 >> 2] | 0;
    $14 = $13;
    $call66 = FUNCTION_TABLE_iii[$14 & 1023]($enc, $ptr_addr_0123) | 0;
    $tobool67 = ($call66 | 0) == 0;
    if ($tobool67) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0123;
    $retval_0 = 0;
    label = 66;
    break;
   case 31:
    $add_ptr70 = $ptr_addr_0123 + 3 | 0;
    $ptr_addr_0_be = $add_ptr70;
    label = 36;
    break;
   case 32:
    $sub_ptr_rhs_cast73 = $ptr_addr_0123;
    $sub_ptr_sub74 = $sub_ptr_lhs_cast72 - $sub_ptr_rhs_cast73 | 0;
    $cmp75 = ($sub_ptr_sub74 | 0) < 4;
    if ($cmp75) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $15 = HEAP32[$isName4 >> 2] | 0;
    $16 = $15;
    $call79 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $ptr_addr_0123) | 0;
    $tobool80 = ($call79 | 0) == 0;
    if ($tobool80) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0123;
    $retval_0 = 0;
    label = 66;
    break;
   case 35:
    $add_ptr83 = $ptr_addr_0123 + 4 | 0;
    $ptr_addr_0_be = $add_ptr83;
    label = 36;
    break;
   case 36:
    $cmp36 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp36) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      $ptr_addr_0123 = $ptr_addr_0_be;
      label = 21;
      break;
    }
   case 37:
    $call85 = _normal_checkPiTarget($ptr, $ptr_addr_0123, $tok) | 0;
    $tobool86 = ($call85 | 0) == 0;
    if ($tobool86) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0123;
    $retval_0 = 0;
    label = 66;
    break;
   case 39:
    $add_ptr89 = $ptr_addr_0123 + 1 | 0;
    $cmp91111 = ($add_ptr89 | 0) == ($end | 0);
    if ($cmp91111) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $sub_ptr_lhs_cast99 = $end;
    $isInvalid2 = $enc + 352 | 0;
    $17 = $isInvalid2;
    $sub_ptr_lhs_cast112 = $end;
    $isInvalid3 = $enc + 356 | 0;
    $18 = $isInvalid3;
    $sub_ptr_lhs_cast125 = $end;
    $isInvalid4 = $enc + 360 | 0;
    $19 = $isInvalid4;
    $ptr_addr_1112 = $add_ptr89;
    label = 41;
    break;
   case 41:
    $20 = HEAP8[$ptr_addr_1112] | 0;
    $idxprom94 = $20 & 255;
    $arrayidx96 = $1 + $idxprom94 | 0;
    $21 = HEAP8[$arrayidx96] | 0;
    $conv97 = $21 & 255;
    if (($conv97 | 0) == 5) {
      label = 42;
      break;
    } else if (($conv97 | 0) == 6) {
      label = 46;
      break;
    } else if (($conv97 | 0) == 7) {
      label = 50;
      break;
    } else if (($conv97 | 0) == 0 | ($conv97 | 0) == 1 | ($conv97 | 0) == 8) {
      label = 54;
      break;
    } else if (($conv97 | 0) == 15) {
      label = 55;
      break;
    } else {
      label = 59;
      break;
    }
   case 42:
    $sub_ptr_rhs_cast100 = $ptr_addr_1112;
    $sub_ptr_sub101 = $sub_ptr_lhs_cast99 - $sub_ptr_rhs_cast100 | 0;
    $cmp102 = ($sub_ptr_sub101 | 0) < 2;
    if ($cmp102) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $22 = HEAP32[$17 >> 2] | 0;
    $call106 = FUNCTION_TABLE_iii[$22 & 1023]($enc, $ptr_addr_1112) | 0;
    $tobool107 = ($call106 | 0) == 0;
    if ($tobool107) {
      label = 45;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1112;
    $retval_0 = 0;
    label = 66;
    break;
   case 45:
    $add_ptr110 = $ptr_addr_1112 + 2 | 0;
    $ptr_addr_1_be = $add_ptr110;
    label = 57;
    break;
   case 46:
    $sub_ptr_rhs_cast113 = $ptr_addr_1112;
    $sub_ptr_sub114 = $sub_ptr_lhs_cast112 - $sub_ptr_rhs_cast113 | 0;
    $cmp115 = ($sub_ptr_sub114 | 0) < 3;
    if ($cmp115) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $23 = HEAP32[$18 >> 2] | 0;
    $call119 = FUNCTION_TABLE_iii[$23 & 1023]($enc, $ptr_addr_1112) | 0;
    $tobool120 = ($call119 | 0) == 0;
    if ($tobool120) {
      label = 49;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1112;
    $retval_0 = 0;
    label = 66;
    break;
   case 49:
    $add_ptr123 = $ptr_addr_1112 + 3 | 0;
    $ptr_addr_1_be = $add_ptr123;
    label = 57;
    break;
   case 50:
    $sub_ptr_rhs_cast126 = $ptr_addr_1112;
    $sub_ptr_sub127 = $sub_ptr_lhs_cast125 - $sub_ptr_rhs_cast126 | 0;
    $cmp128 = ($sub_ptr_sub127 | 0) < 4;
    if ($cmp128) {
      $retval_0 = -2;
      label = 66;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $24 = HEAP32[$19 >> 2] | 0;
    $call132 = FUNCTION_TABLE_iii[$24 & 1023]($enc, $ptr_addr_1112) | 0;
    $tobool133 = ($call132 | 0) == 0;
    if ($tobool133) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1112;
    $retval_0 = 0;
    label = 66;
    break;
   case 53:
    $add_ptr136 = $ptr_addr_1112 + 4 | 0;
    $ptr_addr_1_be = $add_ptr136;
    label = 57;
    break;
   case 54:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1112;
    $retval_0 = 0;
    label = 66;
    break;
   case 55:
    $add_ptr139 = $ptr_addr_1112 + 1 | 0;
    $cmp140 = ($add_ptr139 | 0) == ($end | 0);
    if ($cmp140) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $25 = HEAP8[$add_ptr139] | 0;
    $cmp145 = $25 << 24 >> 24 == 62;
    if ($cmp145) {
      label = 58;
      break;
    } else {
      $ptr_addr_1_be = $add_ptr139;
      label = 57;
      break;
    }
   case 57:
    $cmp91 = ($ptr_addr_1_be | 0) == ($end | 0);
    if ($cmp91) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      $ptr_addr_1112 = $ptr_addr_1_be;
      label = 41;
      break;
    }
   case 58:
    $add_ptr148 = $ptr_addr_1112 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr148;
    $26 = HEAP32[$tok >> 2] | 0;
    $retval_0 = $26;
    label = 66;
    break;
   case 59:
    $add_ptr151 = $ptr_addr_1112 + 1 | 0;
    $ptr_addr_1_be = $add_ptr151;
    label = 57;
    break;
   case 60:
    $call154 = _normal_checkPiTarget($ptr, $ptr_addr_0123, $tok) | 0;
    $tobool155 = ($call154 | 0) == 0;
    if ($tobool155) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 61:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_0123;
    $retval_0 = 0;
    label = 66;
    break;
   case 62:
    $add_ptr158 = $ptr_addr_0123 + 1 | 0;
    $cmp159 = ($add_ptr158 | 0) == ($end | 0);
    if ($cmp159) {
      $retval_0 = -1;
      label = 66;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $27 = HEAP8[$add_ptr158] | 0;
    $cmp164 = $27 << 24 >> 24 == 62;
    if ($cmp164) {
      label = 64;
      break;
    } else {
      $ptr_addr_2 = $add_ptr158;
      label = 65;
      break;
    }
   case 64:
    $add_ptr167 = $ptr_addr_0123 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr167;
    $28 = HEAP32[$tok >> 2] | 0;
    $retval_0 = $28;
    label = 66;
    break;
   case 65:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_2;
    $retval_0 = 0;
    label = 66;
    break;
   case 66:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanEndTag($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $ptr_addr_0_ph = 0, $cmp3685 = 0, $sub_ptr_lhs_cast46 = 0, $3 = 0, $sub_ptr_lhs_cast59 = 0, $isName3 = 0, $sub_ptr_lhs_cast72 = 0, $isName4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $isNmstrt2 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $add_ptr9 = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $isNmstrt3 = 0, $6 = 0, $7 = 0, $call18 = 0, $tobool19 = 0, $add_ptr22 = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $isNmstrt4 = 0, $8 = 0, $9 = 0, $call31 = 0, $tobool32 = 0, $add_ptr35 = 0, $ptr_addr_086 = 0, $10 = 0, $idxprom38 = 0, $arrayidx40 = 0, $11 = 0, $conv41 = 0, $ptr_addr_173 = 0, $cmp8674 = 0, $add_ptr44 = 0, $sub_ptr_rhs_cast47 = 0, $sub_ptr_sub48 = 0, $cmp49 = 0, $12 = 0, $call53 = 0, $tobool54 = 0, $add_ptr57 = 0, $sub_ptr_rhs_cast60 = 0, $sub_ptr_sub61 = 0, $cmp62 = 0, $13 = 0, $14 = 0, $call66 = 0, $tobool67 = 0, $add_ptr70 = 0, $sub_ptr_rhs_cast73 = 0, $sub_ptr_sub74 = 0, $cmp75 = 0, $15 = 0, $16 = 0, $call79 = 0, $tobool80 = 0, $add_ptr83 = 0, $ptr_addr_0_be = 0, $cmp36 = 0, $ptr_addr_176 = 0, $ptr_addr_0_pn75 = 0, $17 = 0, $idxprom88 = 0, $arrayidx90 = 0, $18 = 0, $conv91 = 0, $ptr_addr_1 = 0, $cmp86 = 0, $add_ptr94 = 0, $add_ptr99 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 44;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 29) {
      label = 4;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else {
      label = 20;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 44;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $ptr_addr_0_ph = $add_ptr;
    label = 6;
    break;
   case 6:
    $cmp3685 = ($ptr_addr_0_ph | 0) == ($end | 0);
    if ($cmp3685) {
      $retval_0 = -1;
      label = 44;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast46 = $end;
    $3 = $enc + 328 | 0;
    $sub_ptr_lhs_cast59 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast72 = $end;
    $isName4 = $enc + 336 | 0;
    $ptr_addr_086 = $ptr_addr_0_ph;
    label = 21;
    break;
   case 8:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 44;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $isNmstrt2 = $enc + 340 | 0;
    $4 = HEAP32[$isNmstrt2 >> 2] | 0;
    $5 = $4;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 44;
    break;
   case 11:
    $add_ptr9 = $ptr + 2 | 0;
    $ptr_addr_0_ph = $add_ptr9;
    label = 6;
    break;
   case 12:
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_rhs_cast12 = $ptr;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 44;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isNmstrt3 = $enc + 344 | 0;
    $6 = HEAP32[$isNmstrt3 >> 2] | 0;
    $7 = $6;
    $call18 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 44;
    break;
   case 15:
    $add_ptr22 = $ptr + 3 | 0;
    $ptr_addr_0_ph = $add_ptr22;
    label = 6;
    break;
   case 16:
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_rhs_cast25 = $ptr;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 4;
    if ($cmp27) {
      $retval_0 = -2;
      label = 44;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isNmstrt4 = $enc + 348 | 0;
    $8 = HEAP32[$isNmstrt4 >> 2] | 0;
    $9 = $8;
    $call31 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 44;
    break;
   case 19:
    $add_ptr35 = $ptr + 4 | 0;
    $ptr_addr_0_ph = $add_ptr35;
    label = 6;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 44;
    break;
   case 21:
    $10 = HEAP8[$ptr_addr_086] | 0;
    $idxprom38 = $10 & 255;
    $arrayidx40 = $1 + $idxprom38 | 0;
    $11 = HEAP8[$arrayidx40] | 0;
    $conv41 = $11 & 255;
    if (($conv41 | 0) == 21 | ($conv41 | 0) == 9 | ($conv41 | 0) == 10) {
      label = 22;
      break;
    } else if (($conv41 | 0) == 29) {
      label = 23;
      break;
    } else if (($conv41 | 0) == 22 | ($conv41 | 0) == 24 | ($conv41 | 0) == 25 | ($conv41 | 0) == 26 | ($conv41 | 0) == 27) {
      label = 24;
      break;
    } else if (($conv41 | 0) == 5) {
      label = 25;
      break;
    } else if (($conv41 | 0) == 6) {
      label = 29;
      break;
    } else if (($conv41 | 0) == 7) {
      label = 33;
      break;
    } else if (($conv41 | 0) == 11) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 22:
    $ptr_addr_173 = $ptr_addr_086 + 1 | 0;
    $cmp8674 = ($ptr_addr_173 | 0) == ($end | 0);
    if ($cmp8674) {
      $retval_0 = -1;
      label = 44;
      break;
    } else {
      $ptr_addr_0_pn75 = $ptr_addr_086;
      $ptr_addr_176 = $ptr_addr_173;
      label = 38;
      break;
    }
   case 23:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_086;
    $retval_0 = 0;
    label = 44;
    break;
   case 24:
    $add_ptr44 = $ptr_addr_086 + 1 | 0;
    $ptr_addr_0_be = $add_ptr44;
    label = 37;
    break;
   case 25:
    $sub_ptr_rhs_cast47 = $ptr_addr_086;
    $sub_ptr_sub48 = $sub_ptr_lhs_cast46 - $sub_ptr_rhs_cast47 | 0;
    $cmp49 = ($sub_ptr_sub48 | 0) < 2;
    if ($cmp49) {
      $retval_0 = -2;
      label = 44;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $12 = HEAP32[$3 >> 2] | 0;
    $call53 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr_addr_086) | 0;
    $tobool54 = ($call53 | 0) == 0;
    if ($tobool54) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_086;
    $retval_0 = 0;
    label = 44;
    break;
   case 28:
    $add_ptr57 = $ptr_addr_086 + 2 | 0;
    $ptr_addr_0_be = $add_ptr57;
    label = 37;
    break;
   case 29:
    $sub_ptr_rhs_cast60 = $ptr_addr_086;
    $sub_ptr_sub61 = $sub_ptr_lhs_cast59 - $sub_ptr_rhs_cast60 | 0;
    $cmp62 = ($sub_ptr_sub61 | 0) < 3;
    if ($cmp62) {
      $retval_0 = -2;
      label = 44;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    $13 = HEAP32[$isName3 >> 2] | 0;
    $14 = $13;
    $call66 = FUNCTION_TABLE_iii[$14 & 1023]($enc, $ptr_addr_086) | 0;
    $tobool67 = ($call66 | 0) == 0;
    if ($tobool67) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_086;
    $retval_0 = 0;
    label = 44;
    break;
   case 32:
    $add_ptr70 = $ptr_addr_086 + 3 | 0;
    $ptr_addr_0_be = $add_ptr70;
    label = 37;
    break;
   case 33:
    $sub_ptr_rhs_cast73 = $ptr_addr_086;
    $sub_ptr_sub74 = $sub_ptr_lhs_cast72 - $sub_ptr_rhs_cast73 | 0;
    $cmp75 = ($sub_ptr_sub74 | 0) < 4;
    if ($cmp75) {
      $retval_0 = -2;
      label = 44;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $15 = HEAP32[$isName4 >> 2] | 0;
    $16 = $15;
    $call79 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $ptr_addr_086) | 0;
    $tobool80 = ($call79 | 0) == 0;
    if ($tobool80) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_086;
    $retval_0 = 0;
    label = 44;
    break;
   case 36:
    $add_ptr83 = $ptr_addr_086 + 4 | 0;
    $ptr_addr_0_be = $add_ptr83;
    label = 37;
    break;
   case 37:
    $cmp36 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp36) {
      $retval_0 = -1;
      label = 44;
      break;
    } else {
      $ptr_addr_086 = $ptr_addr_0_be;
      label = 21;
      break;
    }
   case 38:
    $17 = HEAP8[$ptr_addr_176] | 0;
    $idxprom88 = $17 & 255;
    $arrayidx90 = $1 + $idxprom88 | 0;
    $18 = HEAP8[$arrayidx90] | 0;
    $conv91 = $18 & 255;
    if (($conv91 | 0) == 21 | ($conv91 | 0) == 9 | ($conv91 | 0) == 10) {
      label = 39;
      break;
    } else if (($conv91 | 0) == 11) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 39:
    $ptr_addr_1 = $ptr_addr_176 + 1 | 0;
    $cmp86 = ($ptr_addr_1 | 0) == ($end | 0);
    if ($cmp86) {
      $retval_0 = -1;
      label = 44;
      break;
    } else {
      $ptr_addr_0_pn75 = $ptr_addr_176;
      $ptr_addr_176 = $ptr_addr_1;
      label = 38;
      break;
    }
   case 40:
    $add_ptr94 = $ptr_addr_0_pn75 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr94;
    $retval_0 = 5;
    label = 44;
    break;
   case 41:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_176;
    $retval_0 = 0;
    label = 44;
    break;
   case 42:
    $add_ptr99 = $ptr_addr_086 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr99;
    $retval_0 = 5;
    label = 44;
    break;
   case 43:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_086;
    $retval_0 = 0;
    label = 44;
    break;
   case 44:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_checkPiTarget($ptr, $end, $tokPtr) {
  $ptr = $ptr | 0;
  $end = $end | 0;
  $tokPtr = $tokPtr | 0;
  var $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp = 0, $0 = 0, $conv = 0, $upper_0 = 0, $add_ptr = 0, $1 = 0, $conv2 = 0, $upper_1 = 0, $add_ptr7 = 0, $2 = 0, $conv8 = 0, $tobool = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    HEAP32[$tokPtr >> 2] = 11;
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp = ($sub_ptr_sub | 0) == 3;
    if ($cmp) {
      label = 3;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $conv = $0 << 24 >> 24;
    if (($conv | 0) == 88) {
      label = 4;
      break;
    } else if (($conv | 0) == 120) {
      $upper_0 = 0;
      label = 5;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 4:
    $upper_0 = 1;
    label = 5;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $1 = HEAP8[$add_ptr] | 0;
    $conv2 = $1 << 24 >> 24;
    if (($conv2 | 0) == 77) {
      label = 6;
      break;
    } else if (($conv2 | 0) == 109) {
      $upper_1 = $upper_0;
      label = 7;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 6:
    $upper_1 = 1;
    label = 7;
    break;
   case 7:
    $add_ptr7 = $ptr + 2 | 0;
    $2 = HEAP8[$add_ptr7] | 0;
    $conv8 = $2 << 24 >> 24;
    if (($conv8 | 0) == 76) {
      label = 8;
      break;
    } else if (($conv8 | 0) == 108) {
      label = 9;
      break;
    } else {
      $retval_0 = 1;
      label = 11;
      break;
    }
   case 8:
    $retval_0 = 0;
    label = 11;
    break;
   case 9:
    $tobool = ($upper_1 | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      $retval_0 = 0;
      label = 11;
      break;
    }
   case 10:
    HEAP32[$tokPtr >> 2] = 12;
    $retval_0 = 1;
    label = 11;
    break;
   case 11:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanAtts($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $ptr_addr = 0, $cmp162 = 0, $type = 0, $0 = 0, $sub_ptr_lhs_cast = 0, $1 = 0, $sub_ptr_lhs_cast9 = 0, $isName3 = 0, $sub_ptr_lhs_cast22 = 0, $isName4 = 0, $sub_ptr_lhs_cast86 = 0, $isInvalid2 = 0, $2 = 0, $sub_ptr_lhs_cast99 = 0, $isInvalid3 = 0, $3 = 0, $sub_ptr_lhs_cast112 = 0, $isInvalid4 = 0, $4 = 0, $sub_ptr_lhs_cast169 = 0, $isNmstrt2 = 0, $sub_ptr_lhs_cast182 = 0, $isNmstrt3 = 0, $sub_ptr_lhs_cast195 = 0, $isNmstrt4 = 0, $5 = 0, $6 = 0, $idxprom = 0, $arrayidx = 0, $7 = 0, $conv = 0, $8 = 0, $add_ptr3571 = 0, $cmp3672 = 0, $9 = 0, $add_ptr = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $10 = 0, $call = 0, $tobool = 0, $11 = 0, $add_ptr7 = 0, $sub_ptr_rhs_cast10 = 0, $sub_ptr_sub11 = 0, $cmp12 = 0, $12 = 0, $13 = 0, $call16 = 0, $tobool17 = 0, $14 = 0, $add_ptr20 = 0, $sub_ptr_rhs_cast23 = 0, $sub_ptr_sub24 = 0, $cmp25 = 0, $15 = 0, $16 = 0, $call29 = 0, $tobool30 = 0, $17 = 0, $add_ptr33 = 0, $add_ptr3573 = 0, $18 = 0, $idxprom40 = 0, $arrayidx42 = 0, $19 = 0, $cmp44 = 0, $conv43 = 0, $20 = 0, $add_ptr35 = 0, $cmp36 = 0, $21 = 0, $add_ptr5180 = 0, $cmp5281 = 0, $add_ptr5182 = 0, $22 = 0, $23 = 0, $idxprom56 = 0, $arrayidx58 = 0, $24 = 0, $_off = 0, $25 = 0, $conv59 = 0, $26 = 0, $add_ptr51 = 0, $cmp52 = 0, $add_ptr70 = 0, $cmp7395 = 0, $27 = 0, $28 = 0, $idxprom77 = 0, $arrayidx79 = 0, $29 = 0, $cmp81 = 0, $conv80 = 0, $sub_ptr_rhs_cast87 = 0, $sub_ptr_sub88 = 0, $cmp89 = 0, $30 = 0, $call93 = 0, $tobool94 = 0, $31 = 0, $add_ptr97 = 0, $sub_ptr_rhs_cast100 = 0, $sub_ptr_sub101 = 0, $cmp102 = 0, $32 = 0, $call106 = 0, $tobool107 = 0, $33 = 0, $add_ptr110 = 0, $sub_ptr_rhs_cast113 = 0, $sub_ptr_sub114 = 0, $cmp115 = 0, $34 = 0, $call119 = 0, $tobool120 = 0, $35 = 0, $add_ptr123 = 0, $36 = 0, $add_ptr126 = 0, $call127 = 0, $cmp128 = 0, $37 = 0, $cmp73 = 0, $cmp131 = 0, $38 = 0, $add_ptr138 = 0, $add_ptr141 = 0, $cmp142 = 0, $39 = 0, $idxprom146 = 0, $arrayidx148 = 0, $40 = 0, $conv149 = 0, $41 = 0, $add_ptr156105 = 0, $cmp157106 = 0, $add_ptr156107 = 0, $42 = 0, $idxprom161 = 0, $arrayidx163 = 0, $43 = 0, $conv164 = 0, $44 = 0, $add_ptr156 = 0, $cmp157 = 0, $45 = 0, $add_ptr167 = 0, $sub_ptr_rhs_cast170 = 0, $sub_ptr_sub171 = 0, $cmp172 = 0, $46 = 0, $47 = 0, $call176 = 0, $tobool177 = 0, $48 = 0, $add_ptr180 = 0, $sub_ptr_rhs_cast183 = 0, $sub_ptr_sub184 = 0, $cmp185 = 0, $49 = 0, $50 = 0, $call189 = 0, $tobool190 = 0, $51 = 0, $add_ptr193 = 0, $sub_ptr_rhs_cast196 = 0, $sub_ptr_sub197 = 0, $cmp198 = 0, $52 = 0, $53 = 0, $call202 = 0, $tobool203 = 0, $54 = 0, $add_ptr206 = 0, $55 = 0, $cmp = 0, $56 = 0, $add_ptr209 = 0, $57 = 0, $add_ptr211 = 0, $cmp212 = 0, $58 = 0, $cmp217 = 0, $add_ptr221 = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 8 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    $cmp162 = ($ptr | 0) == ($end | 0);
    if ($cmp162) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $sub_ptr_lhs_cast = $end;
    $1 = $enc + 328 | 0;
    $sub_ptr_lhs_cast9 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast22 = $end;
    $isName4 = $enc + 336 | 0;
    $sub_ptr_lhs_cast86 = $end;
    $isInvalid2 = $enc + 352 | 0;
    $2 = $isInvalid2;
    $sub_ptr_lhs_cast99 = $end;
    $isInvalid3 = $enc + 356 | 0;
    $3 = $isInvalid3;
    $sub_ptr_lhs_cast112 = $end;
    $isInvalid4 = $enc + 360 | 0;
    $4 = $isInvalid4;
    $sub_ptr_lhs_cast169 = $end;
    $isNmstrt2 = $enc + 340 | 0;
    $sub_ptr_lhs_cast182 = $end;
    $isNmstrt3 = $enc + 344 | 0;
    $sub_ptr_lhs_cast195 = $end;
    $isNmstrt4 = $enc + 348 | 0;
    $5 = $ptr;
    label = 4;
    break;
   case 4:
    $6 = HEAP8[$5] | 0;
    $idxprom = $6 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $7 = HEAP8[$arrayidx] | 0;
    $conv = $7 & 255;
    if (($conv | 0) == 21 | ($conv | 0) == 9 | ($conv | 0) == 10) {
      label = 5;
      break;
    } else if (($conv | 0) == 29) {
      label = 6;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24 | ($conv | 0) == 25 | ($conv | 0) == 26 | ($conv | 0) == 27) {
      label = 7;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else if (($conv | 0) == 14) {
      label = 24;
      break;
    } else {
      label = 78;
      break;
    }
   case 5:
    $8 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr3571 = $8 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr3571;
    $cmp3672 = ($add_ptr3571 | 0) == ($end | 0);
    if ($cmp3672) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $add_ptr3573 = $add_ptr3571;
      label = 20;
      break;
    }
   case 6:
    HEAP32[$nextTokPtr >> 2] = $5;
    $retval_0 = 0;
    label = 79;
    break;
   case 7:
    $9 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr = $9 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr;
    label = 71;
    break;
   case 8:
    $sub_ptr_rhs_cast = $5;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $10 = HEAP32[$1 >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$10 & 1023]($enc, $5) | 0;
    $tobool = ($call | 0) == 0;
    $11 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $11;
    $retval_0 = 0;
    label = 79;
    break;
   case 11:
    $add_ptr7 = $11 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr7;
    label = 71;
    break;
   case 12:
    $sub_ptr_rhs_cast10 = $5;
    $sub_ptr_sub11 = $sub_ptr_lhs_cast9 - $sub_ptr_rhs_cast10 | 0;
    $cmp12 = ($sub_ptr_sub11 | 0) < 3;
    if ($cmp12) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $12 = HEAP32[$isName3 >> 2] | 0;
    $13 = $12;
    $call16 = FUNCTION_TABLE_iii[$13 & 1023]($enc, $5) | 0;
    $tobool17 = ($call16 | 0) == 0;
    $14 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool17) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $14;
    $retval_0 = 0;
    label = 79;
    break;
   case 15:
    $add_ptr20 = $14 + 3 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr20;
    label = 71;
    break;
   case 16:
    $sub_ptr_rhs_cast23 = $5;
    $sub_ptr_sub24 = $sub_ptr_lhs_cast22 - $sub_ptr_rhs_cast23 | 0;
    $cmp25 = ($sub_ptr_sub24 | 0) < 4;
    if ($cmp25) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $15 = HEAP32[$isName4 >> 2] | 0;
    $16 = $15;
    $call29 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $5) | 0;
    $tobool30 = ($call29 | 0) == 0;
    $17 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool30) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $17;
    $retval_0 = 0;
    label = 79;
    break;
   case 19:
    $add_ptr33 = $17 + 4 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr33;
    label = 71;
    break;
   case 20:
    $18 = HEAP8[$add_ptr3573] | 0;
    $idxprom40 = $18 & 255;
    $arrayidx42 = $0 + $idxprom40 | 0;
    $19 = HEAP8[$arrayidx42] | 0;
    $cmp44 = $19 << 24 >> 24 == 14;
    if ($cmp44) {
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $conv43 = $19 & 255;
    if (($conv43 | 0) == 21 | ($conv43 | 0) == 10 | ($conv43 | 0) == 9) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $20 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr35 = $20 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr35;
    $cmp36 = ($add_ptr35 | 0) == ($end | 0);
    if ($cmp36) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $add_ptr3573 = $add_ptr35;
      label = 20;
      break;
    }
   case 23:
    HEAP32[$nextTokPtr >> 2] = $add_ptr3573;
    $retval_0 = 0;
    label = 79;
    break;
   case 24:
    $21 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr5180 = $21 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr5180;
    $cmp5281 = ($add_ptr5180 | 0) == ($end | 0);
    if ($cmp5281) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $22 = $21;
      $add_ptr5182 = $add_ptr5180;
      label = 25;
      break;
    }
   case 25:
    $23 = HEAP8[$add_ptr5182] | 0;
    $idxprom56 = $23 & 255;
    $arrayidx58 = $0 + $idxprom56 | 0;
    $24 = HEAP8[$arrayidx58] | 0;
    $_off = $24 - 12 & 255;
    $25 = ($_off & 255) < 2;
    if ($25) {
      label = 29;
      break;
    } else {
      label = 26;
      break;
    }
   case 26:
    $conv59 = $24 & 255;
    if (($conv59 | 0) == 21 | ($conv59 | 0) == 10 | ($conv59 | 0) == 9) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    $26 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr51 = $26 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr51;
    $cmp52 = ($add_ptr51 | 0) == ($end | 0);
    if ($cmp52) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $22 = $26;
      $add_ptr5182 = $add_ptr51;
      label = 25;
      break;
    }
   case 28:
    HEAP32[$nextTokPtr >> 2] = $add_ptr5182;
    $retval_0 = 0;
    label = 79;
    break;
   case 29:
    $add_ptr70 = $22 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr70;
    $cmp7395 = ($add_ptr70 | 0) == ($end | 0);
    if ($cmp7395) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $27 = $add_ptr70;
      label = 30;
      break;
    }
   case 30:
    $28 = HEAP8[$27] | 0;
    $idxprom77 = $28 & 255;
    $arrayidx79 = $0 + $idxprom77 | 0;
    $29 = HEAP8[$arrayidx79] | 0;
    $cmp81 = $29 << 24 >> 24 == $24 << 24 >> 24;
    if ($cmp81) {
      label = 51;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $conv80 = $29 & 255;
    if (($conv80 | 0) == 5) {
      label = 32;
      break;
    } else if (($conv80 | 0) == 6) {
      label = 36;
      break;
    } else if (($conv80 | 0) == 7) {
      label = 40;
      break;
    } else if (($conv80 | 0) == 0 | ($conv80 | 0) == 1 | ($conv80 | 0) == 8) {
      label = 44;
      break;
    } else if (($conv80 | 0) == 3) {
      label = 45;
      break;
    } else if (($conv80 | 0) == 2) {
      label = 49;
      break;
    } else {
      label = 50;
      break;
    }
   case 32:
    $sub_ptr_rhs_cast87 = $27;
    $sub_ptr_sub88 = $sub_ptr_lhs_cast86 - $sub_ptr_rhs_cast87 | 0;
    $cmp89 = ($sub_ptr_sub88 | 0) < 2;
    if ($cmp89) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $30 = HEAP32[$2 >> 2] | 0;
    $call93 = FUNCTION_TABLE_iii[$30 & 1023]($enc, $27) | 0;
    $tobool94 = ($call93 | 0) == 0;
    $31 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool94) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    HEAP32[$nextTokPtr >> 2] = $31;
    $retval_0 = 0;
    label = 79;
    break;
   case 35:
    $add_ptr97 = $31 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr97;
    label = 46;
    break;
   case 36:
    $sub_ptr_rhs_cast100 = $27;
    $sub_ptr_sub101 = $sub_ptr_lhs_cast99 - $sub_ptr_rhs_cast100 | 0;
    $cmp102 = ($sub_ptr_sub101 | 0) < 3;
    if ($cmp102) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $32 = HEAP32[$3 >> 2] | 0;
    $call106 = FUNCTION_TABLE_iii[$32 & 1023]($enc, $27) | 0;
    $tobool107 = ($call106 | 0) == 0;
    $33 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool107) {
      label = 39;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    HEAP32[$nextTokPtr >> 2] = $33;
    $retval_0 = 0;
    label = 79;
    break;
   case 39:
    $add_ptr110 = $33 + 3 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr110;
    label = 46;
    break;
   case 40:
    $sub_ptr_rhs_cast113 = $27;
    $sub_ptr_sub114 = $sub_ptr_lhs_cast112 - $sub_ptr_rhs_cast113 | 0;
    $cmp115 = ($sub_ptr_sub114 | 0) < 4;
    if ($cmp115) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $34 = HEAP32[$4 >> 2] | 0;
    $call119 = FUNCTION_TABLE_iii[$34 & 1023]($enc, $27) | 0;
    $tobool120 = ($call119 | 0) == 0;
    $35 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool120) {
      label = 43;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    HEAP32[$nextTokPtr >> 2] = $35;
    $retval_0 = 0;
    label = 79;
    break;
   case 43:
    $add_ptr123 = $35 + 4 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr123;
    label = 46;
    break;
   case 44:
    $36 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $36;
    $retval_0 = 0;
    label = 79;
    break;
   case 45:
    $add_ptr126 = $27 + 1 | 0;
    $call127 = _normal_scanRef($enc, $add_ptr126, $end, $ptr_addr) | 0;
    $cmp128 = ($call127 | 0) < 1;
    if ($cmp128) {
      label = 47;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $37 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp73 = ($37 | 0) == ($end | 0);
    if ($cmp73) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $27 = $37;
      label = 30;
      break;
    }
   case 47:
    $cmp131 = ($call127 | 0) == 0;
    if ($cmp131) {
      label = 48;
      break;
    } else {
      $retval_0 = $call127;
      label = 79;
      break;
    }
   case 48:
    $38 = HEAP32[$ptr_addr >> 2] | 0;
    HEAP32[$nextTokPtr >> 2] = $38;
    $retval_0 = 0;
    label = 79;
    break;
   case 49:
    HEAP32[$nextTokPtr >> 2] = $27;
    $retval_0 = 0;
    label = 79;
    break;
   case 50:
    $add_ptr138 = $27 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr138;
    label = 46;
    break;
   case 51:
    $add_ptr141 = $27 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr141;
    $cmp142 = ($add_ptr141 | 0) == ($end | 0);
    if ($cmp142) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $39 = HEAP8[$add_ptr141] | 0;
    $idxprom146 = $39 & 255;
    $arrayidx148 = $0 + $idxprom146 | 0;
    $40 = HEAP8[$arrayidx148] | 0;
    $conv149 = $40 & 255;
    if (($conv149 | 0) == 21 | ($conv149 | 0) == 9 | ($conv149 | 0) == 10) {
      label = 53;
      break;
    } else if (($conv149 | 0) == 11) {
      label = 72;
      break;
    } else if (($conv149 | 0) == 17) {
      label = 73;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    $41 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr156105 = $41 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr156105;
    $cmp157106 = ($add_ptr156105 | 0) == ($end | 0);
    if ($cmp157106) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $add_ptr156107 = $add_ptr156105;
      label = 55;
      break;
    }
   case 54:
    HEAP32[$nextTokPtr >> 2] = $add_ptr141;
    $retval_0 = 0;
    label = 79;
    break;
   case 55:
    $42 = HEAP8[$add_ptr156107] | 0;
    $idxprom161 = $42 & 255;
    $arrayidx163 = $0 + $idxprom161 | 0;
    $43 = HEAP8[$arrayidx163] | 0;
    $conv164 = $43 & 255;
    if (($conv164 | 0) == 21 | ($conv164 | 0) == 9 | ($conv164 | 0) == 10) {
      label = 56;
      break;
    } else if (($conv164 | 0) == 29) {
      label = 57;
      break;
    } else if (($conv164 | 0) == 22 | ($conv164 | 0) == 24) {
      label = 58;
      break;
    } else if (($conv164 | 0) == 5) {
      label = 59;
      break;
    } else if (($conv164 | 0) == 6) {
      label = 63;
      break;
    } else if (($conv164 | 0) == 7) {
      label = 67;
      break;
    } else if (($conv164 | 0) == 11) {
      label = 72;
      break;
    } else if (($conv164 | 0) == 17) {
      label = 73;
      break;
    } else {
      label = 77;
      break;
    }
   case 56:
    $44 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr156 = $44 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr156;
    $cmp157 = ($add_ptr156 | 0) == ($end | 0);
    if ($cmp157) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $add_ptr156107 = $add_ptr156;
      label = 55;
      break;
    }
   case 57:
    HEAP32[$nextTokPtr >> 2] = $add_ptr156107;
    $retval_0 = 0;
    label = 79;
    break;
   case 58:
    $45 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr167 = $45 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr167;
    label = 71;
    break;
   case 59:
    $sub_ptr_rhs_cast170 = $add_ptr156107;
    $sub_ptr_sub171 = $sub_ptr_lhs_cast169 - $sub_ptr_rhs_cast170 | 0;
    $cmp172 = ($sub_ptr_sub171 | 0) < 2;
    if ($cmp172) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $46 = HEAP32[$isNmstrt2 >> 2] | 0;
    $47 = $46;
    $call176 = FUNCTION_TABLE_iii[$47 & 1023]($enc, $add_ptr156107) | 0;
    $tobool177 = ($call176 | 0) == 0;
    $48 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool177) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 61:
    HEAP32[$nextTokPtr >> 2] = $48;
    $retval_0 = 0;
    label = 79;
    break;
   case 62:
    $add_ptr180 = $48 + 2 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr180;
    label = 71;
    break;
   case 63:
    $sub_ptr_rhs_cast183 = $add_ptr156107;
    $sub_ptr_sub184 = $sub_ptr_lhs_cast182 - $sub_ptr_rhs_cast183 | 0;
    $cmp185 = ($sub_ptr_sub184 | 0) < 3;
    if ($cmp185) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 64;
      break;
    }
   case 64:
    $49 = HEAP32[$isNmstrt3 >> 2] | 0;
    $50 = $49;
    $call189 = FUNCTION_TABLE_iii[$50 & 1023]($enc, $add_ptr156107) | 0;
    $tobool190 = ($call189 | 0) == 0;
    $51 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool190) {
      label = 65;
      break;
    } else {
      label = 66;
      break;
    }
   case 65:
    HEAP32[$nextTokPtr >> 2] = $51;
    $retval_0 = 0;
    label = 79;
    break;
   case 66:
    $add_ptr193 = $51 + 3 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr193;
    label = 71;
    break;
   case 67:
    $sub_ptr_rhs_cast196 = $add_ptr156107;
    $sub_ptr_sub197 = $sub_ptr_lhs_cast195 - $sub_ptr_rhs_cast196 | 0;
    $cmp198 = ($sub_ptr_sub197 | 0) < 4;
    if ($cmp198) {
      $retval_0 = -2;
      label = 79;
      break;
    } else {
      label = 68;
      break;
    }
   case 68:
    $52 = HEAP32[$isNmstrt4 >> 2] | 0;
    $53 = $52;
    $call202 = FUNCTION_TABLE_iii[$53 & 1023]($enc, $add_ptr156107) | 0;
    $tobool203 = ($call202 | 0) == 0;
    $54 = HEAP32[$ptr_addr >> 2] | 0;
    if ($tobool203) {
      label = 69;
      break;
    } else {
      label = 70;
      break;
    }
   case 69:
    HEAP32[$nextTokPtr >> 2] = $54;
    $retval_0 = 0;
    label = 79;
    break;
   case 70:
    $add_ptr206 = $54 + 4 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr206;
    label = 71;
    break;
   case 71:
    $55 = HEAP32[$ptr_addr >> 2] | 0;
    $cmp = ($55 | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      $5 = $55;
      label = 4;
      break;
    }
   case 72:
    $56 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr209 = $56 + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr209;
    $retval_0 = 1;
    label = 79;
    break;
   case 73:
    $57 = HEAP32[$ptr_addr >> 2] | 0;
    $add_ptr211 = $57 + 1 | 0;
    HEAP32[$ptr_addr >> 2] = $add_ptr211;
    $cmp212 = ($add_ptr211 | 0) == ($end | 0);
    if ($cmp212) {
      $retval_0 = -1;
      label = 79;
      break;
    } else {
      label = 74;
      break;
    }
   case 74:
    $58 = HEAP8[$add_ptr211] | 0;
    $cmp217 = $58 << 24 >> 24 == 62;
    if ($cmp217) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    HEAP32[$nextTokPtr >> 2] = $add_ptr211;
    $retval_0 = 0;
    label = 79;
    break;
   case 76:
    $add_ptr221 = $57 + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr221;
    $retval_0 = 3;
    label = 79;
    break;
   case 77:
    HEAP32[$nextTokPtr >> 2] = $add_ptr156107;
    $retval_0 = 0;
    label = 79;
    break;
   case 78:
    HEAP32[$nextTokPtr >> 2] = $5;
    $retval_0 = 0;
    label = 79;
    break;
   case 79:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanLit($open, $enc, $ptr, $end, $nextTokPtr) {
  $open = $open | 0;
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp42 = 0, $type = 0, $0 = 0, $sub_ptr_lhs_cast = 0, $isInvalid2 = 0, $1 = 0, $sub_ptr_lhs_cast6 = 0, $isInvalid3 = 0, $2 = 0, $sub_ptr_lhs_cast19 = 0, $isInvalid4 = 0, $3 = 0, $ptr_addr_043 = 0, $4 = 0, $idxprom = 0, $arrayidx = 0, $5 = 0, $conv = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp1 = 0, $6 = 0, $call = 0, $tobool = 0, $add_ptr = 0, $sub_ptr_rhs_cast7 = 0, $sub_ptr_sub8 = 0, $cmp9 = 0, $7 = 0, $call13 = 0, $tobool14 = 0, $add_ptr17 = 0, $sub_ptr_rhs_cast20 = 0, $sub_ptr_sub21 = 0, $cmp22 = 0, $8 = 0, $call26 = 0, $tobool27 = 0, $add_ptr30 = 0, $add_ptr33 = 0, $cmp34 = 0, $cmp38 = 0, $9 = 0, $idxprom42 = 0, $arrayidx44 = 0, $10 = 0, $conv45 = 0, $add_ptr48 = 0, $ptr_addr_0_be = 0, $cmp = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp42 = ($ptr | 0) == ($end | 0);
    if ($cmp42) {
      $retval_0 = -1;
      label = 24;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $type = $enc + 72 | 0;
    $0 = $type;
    $sub_ptr_lhs_cast = $end;
    $isInvalid2 = $enc + 352 | 0;
    $1 = $isInvalid2;
    $sub_ptr_lhs_cast6 = $end;
    $isInvalid3 = $enc + 356 | 0;
    $2 = $isInvalid3;
    $sub_ptr_lhs_cast19 = $end;
    $isInvalid4 = $enc + 360 | 0;
    $3 = $isInvalid4;
    $ptr_addr_043 = $ptr;
    label = 4;
    break;
   case 4:
    $4 = HEAP8[$ptr_addr_043] | 0;
    $idxprom = $4 & 255;
    $arrayidx = $0 + $idxprom | 0;
    $5 = HEAP8[$arrayidx] | 0;
    $conv = $5 & 255;
    if (($conv | 0) == 5) {
      label = 5;
      break;
    } else if (($conv | 0) == 6) {
      label = 9;
      break;
    } else if (($conv | 0) == 7) {
      label = 13;
      break;
    } else if (($conv | 0) == 0 | ($conv | 0) == 1 | ($conv | 0) == 8) {
      label = 17;
      break;
    } else if (($conv | 0) == 12 | ($conv | 0) == 13) {
      label = 18;
      break;
    } else {
      label = 22;
      break;
    }
   case 5:
    $sub_ptr_rhs_cast = $ptr_addr_043;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp1 = ($sub_ptr_sub | 0) < 2;
    if ($cmp1) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $6 = HEAP32[$1 >> 2] | 0;
    $call = FUNCTION_TABLE_iii[$6 & 1023]($enc, $ptr_addr_043) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_043;
    $retval_0 = 0;
    label = 24;
    break;
   case 8:
    $add_ptr = $ptr_addr_043 + 2 | 0;
    $ptr_addr_0_be = $add_ptr;
    label = 23;
    break;
   case 9:
    $sub_ptr_rhs_cast7 = $ptr_addr_043;
    $sub_ptr_sub8 = $sub_ptr_lhs_cast6 - $sub_ptr_rhs_cast7 | 0;
    $cmp9 = ($sub_ptr_sub8 | 0) < 3;
    if ($cmp9) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $7 = HEAP32[$2 >> 2] | 0;
    $call13 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr_addr_043) | 0;
    $tobool14 = ($call13 | 0) == 0;
    if ($tobool14) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_043;
    $retval_0 = 0;
    label = 24;
    break;
   case 12:
    $add_ptr17 = $ptr_addr_043 + 3 | 0;
    $ptr_addr_0_be = $add_ptr17;
    label = 23;
    break;
   case 13:
    $sub_ptr_rhs_cast20 = $ptr_addr_043;
    $sub_ptr_sub21 = $sub_ptr_lhs_cast19 - $sub_ptr_rhs_cast20 | 0;
    $cmp22 = ($sub_ptr_sub21 | 0) < 4;
    if ($cmp22) {
      $retval_0 = -2;
      label = 24;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $8 = HEAP32[$3 >> 2] | 0;
    $call26 = FUNCTION_TABLE_iii[$8 & 1023]($enc, $ptr_addr_043) | 0;
    $tobool27 = ($call26 | 0) == 0;
    if ($tobool27) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_043;
    $retval_0 = 0;
    label = 24;
    break;
   case 16:
    $add_ptr30 = $ptr_addr_043 + 4 | 0;
    $ptr_addr_0_be = $add_ptr30;
    label = 23;
    break;
   case 17:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_043;
    $retval_0 = 0;
    label = 24;
    break;
   case 18:
    $add_ptr33 = $ptr_addr_043 + 1 | 0;
    $cmp34 = ($conv | 0) == ($open | 0);
    if ($cmp34) {
      label = 19;
      break;
    } else {
      $ptr_addr_0_be = $add_ptr33;
      label = 23;
      break;
    }
   case 19:
    $cmp38 = ($add_ptr33 | 0) == ($end | 0);
    if ($cmp38) {
      $retval_0 = -27;
      label = 24;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    HEAP32[$nextTokPtr >> 2] = $add_ptr33;
    $9 = HEAP8[$add_ptr33] | 0;
    $idxprom42 = $9 & 255;
    $arrayidx44 = $0 + $idxprom42 | 0;
    $10 = HEAP8[$arrayidx44] | 0;
    $conv45 = $10 & 255;
    if (($conv45 | 0) == 21 | ($conv45 | 0) == 9 | ($conv45 | 0) == 10 | ($conv45 | 0) == 11 | ($conv45 | 0) == 30 | ($conv45 | 0) == 20) {
      $retval_0 = 27;
      label = 24;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $retval_0 = 0;
    label = 24;
    break;
   case 22:
    $add_ptr48 = $ptr_addr_043 + 1 | 0;
    $ptr_addr_0_be = $add_ptr48;
    label = 23;
    break;
   case 23:
    $cmp = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 24;
      break;
    } else {
      $ptr_addr_043 = $ptr_addr_0_be;
      label = 4;
      break;
    }
   case 24:
    return $retval_0 | 0;
  }
  return 0;
}
function _normal_scanDecl($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $ptr_addr_032 = 0, $cmp533 = 0, $add_ptr = 0, $call = 0, $add_ptr2 = 0, $ptr_addr_035 = 0, $ptr_pn34 = 0, $3 = 0, $idxprom7 = 0, $arrayidx9 = 0, $4 = 0, $conv10 = 0, $ptr_addr_0 = 0, $cmp5 = 0, $add_ptr12 = 0, $cmp13 = 0, $5 = 0, $idxprom18 = 0, $arrayidx20 = 0, $6 = 0, $conv21 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 15;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 4;
      break;
    } else if (($conv | 0) == 27) {
      label = 5;
      break;
    } else if (($conv | 0) == 20) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 4:
    $ptr_addr_032 = $ptr + 1 | 0;
    $cmp533 = ($ptr_addr_032 | 0) == ($end | 0);
    if ($cmp533) {
      $retval_0 = -1;
      label = 15;
      break;
    } else {
      $ptr_pn34 = $ptr;
      $ptr_addr_035 = $ptr_addr_032;
      label = 8;
      break;
    }
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $call = _normal_scanComment($enc, $add_ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 15;
    break;
   case 6:
    $add_ptr2 = $ptr + 1 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr2;
    $retval_0 = 33;
    label = 15;
    break;
   case 7:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 15;
    break;
   case 8:
    $3 = HEAP8[$ptr_addr_035] | 0;
    $idxprom7 = $3 & 255;
    $arrayidx9 = $1 + $idxprom7 | 0;
    $4 = HEAP8[$arrayidx9] | 0;
    $conv10 = $4 & 255;
    if (($conv10 | 0) == 22 | ($conv10 | 0) == 24) {
      label = 9;
      break;
    } else if (($conv10 | 0) == 30) {
      label = 10;
      break;
    } else if (($conv10 | 0) == 21 | ($conv10 | 0) == 9 | ($conv10 | 0) == 10) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 9:
    $ptr_addr_0 = $ptr_addr_035 + 1 | 0;
    $cmp5 = ($ptr_addr_0 | 0) == ($end | 0);
    if ($cmp5) {
      $retval_0 = -1;
      label = 15;
      break;
    } else {
      $ptr_pn34 = $ptr_addr_035;
      $ptr_addr_035 = $ptr_addr_0;
      label = 8;
      break;
    }
   case 10:
    $add_ptr12 = $ptr_pn34 + 2 | 0;
    $cmp13 = ($add_ptr12 | 0) == ($end | 0);
    if ($cmp13) {
      $retval_0 = -1;
      label = 15;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $5 = HEAP8[$add_ptr12] | 0;
    $idxprom18 = $5 & 255;
    $arrayidx20 = $1 + $idxprom18 | 0;
    $6 = HEAP8[$arrayidx20] | 0;
    $conv21 = $6 & 255;
    if (($conv21 | 0) == 21 | ($conv21 | 0) == 9 | ($conv21 | 0) == 10 | ($conv21 | 0) == 30) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_035;
    $retval_0 = 0;
    label = 15;
    break;
   case 13:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_035;
    $retval_0 = 16;
    label = 15;
    break;
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_035;
    $retval_0 = 0;
    label = 15;
    break;
   case 15:
    return $retval_0 | 0;
  }
  return 0;
}
function _isSpace($c) {
  $c = $c | 0;
  var $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    if (($c | 0) == 32 | ($c | 0) == 13 | ($c | 0) == 10 | ($c | 0) == 9) {
      $retval_0 = 1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $retval_0 = 0;
    label = 4;
    break;
   case 4:
    return $retval_0 | 0;
  }
  return 0;
}
function _ascii_toUtf8($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $cmp3 = 0, $1 = 0, $2 = 0, $cmp1 = 0, $incdec_ptr = 0, $3 = 0, $4 = 0, $incdec_ptr2 = 0, $5 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp3 = ($0 | 0) == ($fromLim | 0);
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $1 = $0;
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$toP >> 2] | 0;
    $cmp1 = ($2 | 0) == ($toLim | 0);
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $1 + 1 | 0;
    HEAP32[$fromP >> 2] = $incdec_ptr;
    $3 = HEAP8[$1] | 0;
    $4 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr2 = $4 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr2;
    HEAP8[$4] = $3;
    $5 = HEAP32[$fromP >> 2] | 0;
    $cmp = ($5 | 0) == ($fromLim | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $1 = $5;
      label = 3;
      break;
    }
   case 5:
    return;
  }
}
function _latin1_toUtf16($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $0 = 0, $cmp3 = 0, $1 = 0, $2 = 0, $cmp1 = 0, $incdec_ptr = 0, $3 = 0, $conv = 0, $4 = 0, $incdec_ptr2 = 0, $5 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp3 = ($0 | 0) == ($fromLim | 0);
    if ($cmp3) {
      label = 5;
      break;
    } else {
      $1 = $0;
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP32[$toP >> 2] | 0;
    $cmp1 = ($2 | 0) == ($toLim | 0);
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $incdec_ptr = $1 + 1 | 0;
    HEAP32[$fromP >> 2] = $incdec_ptr;
    $3 = HEAP8[$1] | 0;
    $conv = $3 & 255;
    $4 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr2 = $4 + 2 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr2;
    HEAP16[$4 >> 1] = $conv;
    $5 = HEAP32[$fromP >> 2] | 0;
    $cmp = ($5 | 0) == ($fromLim | 0);
    if ($cmp) {
      label = 5;
      break;
    } else {
      $1 = $5;
      label = 3;
      break;
    }
   case 5:
    return;
  }
}
function _latin1_toUtf8($enc, $fromP, $fromLim, $toP, $toLim) {
  $enc = $enc | 0;
  $fromP = $fromP | 0;
  $fromLim = $fromLim | 0;
  $toP = $toP | 0;
  $toLim = $toLim | 0;
  var $sub_ptr_lhs_cast = 0, $0 = 0, $cmp12 = 0, $1 = 0, $2 = 0, $tobool = 0, $3 = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp2 = 0, $shr11 = 0, $or = 0, $incdec_ptr = 0, $and9 = 0, $or10 = 0, $4 = 0, $incdec_ptr12 = 0, $5 = 0, $incdec_ptr13 = 0, $cmp14 = 0, $incdec_ptr18 = 0, $6 = 0, $7 = 0, $incdec_ptr19 = 0, $8 = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub_ptr_lhs_cast = $toLim;
    $0 = HEAP32[$fromP >> 2] | 0;
    $cmp12 = ($0 | 0) == ($fromLim | 0);
    if ($cmp12) {
      label = 9;
      break;
    } else {
      $1 = $0;
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP8[$1] | 0;
    $tobool = $2 << 24 >> 24 > -1;
    $3 = HEAP32[$toP >> 2] | 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $sub_ptr_rhs_cast = $3;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp2 = ($sub_ptr_sub | 0) < 2;
    if ($cmp2) {
      label = 9;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $shr11 = ($2 & 255) >>> 6;
    $or = $shr11 | -64;
    $incdec_ptr = $3 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr;
    HEAP8[$3] = $or;
    $and9 = $2 & 63;
    $or10 = $and9 | -128;
    $4 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr12 = $4 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr12;
    HEAP8[$4] = $or10;
    $5 = HEAP32[$fromP >> 2] | 0;
    $incdec_ptr13 = $5 + 1 | 0;
    HEAP32[$fromP >> 2] = $incdec_ptr13;
    label = 8;
    break;
   case 6:
    $cmp14 = ($3 | 0) == ($toLim | 0);
    if ($cmp14) {
      label = 9;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $incdec_ptr18 = $1 + 1 | 0;
    HEAP32[$fromP >> 2] = $incdec_ptr18;
    $6 = HEAP8[$1] | 0;
    $7 = HEAP32[$toP >> 2] | 0;
    $incdec_ptr19 = $7 + 1 | 0;
    HEAP32[$toP >> 2] = $incdec_ptr19;
    HEAP8[$7] = $6;
    label = 8;
    break;
   case 8:
    $8 = HEAP32[$fromP >> 2] | 0;
    $cmp = ($8 | 0) == ($fromLim | 0);
    if ($cmp) {
      label = 9;
      break;
    } else {
      $1 = $8;
      label = 3;
      break;
    }
   case 9:
    return;
  }
}
function _normal_scanPoundName($enc, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $0 = 0, $idxprom = 0, $type = 0, $1 = 0, $arrayidx = 0, $2 = 0, $conv = 0, $add_ptr = 0, $ptr_addr_0_ph = 0, $cmp3665 = 0, $sub_ptr_lhs_cast46 = 0, $3 = 0, $sub_ptr_lhs_cast59 = 0, $isName3 = 0, $sub_ptr_lhs_cast72 = 0, $isName4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp3 = 0, $isNmstrt2 = 0, $4 = 0, $5 = 0, $call = 0, $tobool = 0, $add_ptr9 = 0, $sub_ptr_lhs_cast11 = 0, $sub_ptr_rhs_cast12 = 0, $sub_ptr_sub13 = 0, $cmp14 = 0, $isNmstrt3 = 0, $6 = 0, $7 = 0, $call18 = 0, $tobool19 = 0, $add_ptr22 = 0, $sub_ptr_lhs_cast24 = 0, $sub_ptr_rhs_cast25 = 0, $sub_ptr_sub26 = 0, $cmp27 = 0, $isNmstrt4 = 0, $8 = 0, $9 = 0, $call31 = 0, $tobool32 = 0, $add_ptr35 = 0, $ptr_addr_066 = 0, $10 = 0, $idxprom38 = 0, $arrayidx40 = 0, $11 = 0, $conv41 = 0, $add_ptr44 = 0, $sub_ptr_rhs_cast47 = 0, $sub_ptr_sub48 = 0, $cmp49 = 0, $12 = 0, $call53 = 0, $tobool54 = 0, $add_ptr57 = 0, $sub_ptr_rhs_cast60 = 0, $sub_ptr_sub61 = 0, $cmp62 = 0, $13 = 0, $14 = 0, $call66 = 0, $tobool67 = 0, $add_ptr70 = 0, $sub_ptr_rhs_cast73 = 0, $sub_ptr_sub74 = 0, $cmp75 = 0, $15 = 0, $16 = 0, $call79 = 0, $tobool80 = 0, $add_ptr83 = 0, $ptr_addr_0_be = 0, $cmp36 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 39;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $0 = HEAP8[$ptr] | 0;
    $idxprom = $0 & 255;
    $type = $enc + 72 | 0;
    $1 = $type;
    $arrayidx = $1 + $idxprom | 0;
    $2 = HEAP8[$arrayidx] | 0;
    $conv = $2 & 255;
    if (($conv | 0) == 29) {
      label = 4;
      break;
    } else if (($conv | 0) == 22 | ($conv | 0) == 24) {
      label = 5;
      break;
    } else if (($conv | 0) == 5) {
      label = 8;
      break;
    } else if (($conv | 0) == 6) {
      label = 12;
      break;
    } else if (($conv | 0) == 7) {
      label = 16;
      break;
    } else {
      label = 20;
      break;
    }
   case 4:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 39;
    break;
   case 5:
    $add_ptr = $ptr + 1 | 0;
    $ptr_addr_0_ph = $add_ptr;
    label = 6;
    break;
   case 6:
    $cmp3665 = ($ptr_addr_0_ph | 0) == ($end | 0);
    if ($cmp3665) {
      $retval_0 = -20;
      label = 39;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast46 = $end;
    $3 = $enc + 328 | 0;
    $sub_ptr_lhs_cast59 = $end;
    $isName3 = $enc + 332 | 0;
    $sub_ptr_lhs_cast72 = $end;
    $isName4 = $enc + 336 | 0;
    $ptr_addr_066 = $ptr_addr_0_ph;
    label = 21;
    break;
   case 8:
    $sub_ptr_lhs_cast = $end;
    $sub_ptr_rhs_cast = $ptr;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp3 = ($sub_ptr_sub | 0) < 2;
    if ($cmp3) {
      $retval_0 = -2;
      label = 39;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $isNmstrt2 = $enc + 340 | 0;
    $4 = HEAP32[$isNmstrt2 >> 2] | 0;
    $5 = $4;
    $call = FUNCTION_TABLE_iii[$5 & 1023]($enc, $ptr) | 0;
    $tobool = ($call | 0) == 0;
    if ($tobool) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 39;
    break;
   case 11:
    $add_ptr9 = $ptr + 2 | 0;
    $ptr_addr_0_ph = $add_ptr9;
    label = 6;
    break;
   case 12:
    $sub_ptr_lhs_cast11 = $end;
    $sub_ptr_rhs_cast12 = $ptr;
    $sub_ptr_sub13 = $sub_ptr_lhs_cast11 - $sub_ptr_rhs_cast12 | 0;
    $cmp14 = ($sub_ptr_sub13 | 0) < 3;
    if ($cmp14) {
      $retval_0 = -2;
      label = 39;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $isNmstrt3 = $enc + 344 | 0;
    $6 = HEAP32[$isNmstrt3 >> 2] | 0;
    $7 = $6;
    $call18 = FUNCTION_TABLE_iii[$7 & 1023]($enc, $ptr) | 0;
    $tobool19 = ($call18 | 0) == 0;
    if ($tobool19) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 39;
    break;
   case 15:
    $add_ptr22 = $ptr + 3 | 0;
    $ptr_addr_0_ph = $add_ptr22;
    label = 6;
    break;
   case 16:
    $sub_ptr_lhs_cast24 = $end;
    $sub_ptr_rhs_cast25 = $ptr;
    $sub_ptr_sub26 = $sub_ptr_lhs_cast24 - $sub_ptr_rhs_cast25 | 0;
    $cmp27 = ($sub_ptr_sub26 | 0) < 4;
    if ($cmp27) {
      $retval_0 = -2;
      label = 39;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $isNmstrt4 = $enc + 348 | 0;
    $8 = HEAP32[$isNmstrt4 >> 2] | 0;
    $9 = $8;
    $call31 = FUNCTION_TABLE_iii[$9 & 1023]($enc, $ptr) | 0;
    $tobool32 = ($call31 | 0) == 0;
    if ($tobool32) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 39;
    break;
   case 19:
    $add_ptr35 = $ptr + 4 | 0;
    $ptr_addr_0_ph = $add_ptr35;
    label = 6;
    break;
   case 20:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 39;
    break;
   case 21:
    $10 = HEAP8[$ptr_addr_066] | 0;
    $idxprom38 = $10 & 255;
    $arrayidx40 = $1 + $idxprom38 | 0;
    $11 = HEAP8[$arrayidx40] | 0;
    $conv41 = $11 & 255;
    if (($conv41 | 0) == 29) {
      label = 22;
      break;
    } else if (($conv41 | 0) == 22 | ($conv41 | 0) == 24 | ($conv41 | 0) == 25 | ($conv41 | 0) == 26 | ($conv41 | 0) == 27) {
      label = 23;
      break;
    } else if (($conv41 | 0) == 5) {
      label = 24;
      break;
    } else if (($conv41 | 0) == 6) {
      label = 28;
      break;
    } else if (($conv41 | 0) == 7) {
      label = 32;
      break;
    } else if (($conv41 | 0) == 9 | ($conv41 | 0) == 10 | ($conv41 | 0) == 21 | ($conv41 | 0) == 32 | ($conv41 | 0) == 11 | ($conv41 | 0) == 30 | ($conv41 | 0) == 36) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 22:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_066;
    $retval_0 = 0;
    label = 39;
    break;
   case 23:
    $add_ptr44 = $ptr_addr_066 + 1 | 0;
    $ptr_addr_0_be = $add_ptr44;
    label = 36;
    break;
   case 24:
    $sub_ptr_rhs_cast47 = $ptr_addr_066;
    $sub_ptr_sub48 = $sub_ptr_lhs_cast46 - $sub_ptr_rhs_cast47 | 0;
    $cmp49 = ($sub_ptr_sub48 | 0) < 2;
    if ($cmp49) {
      $retval_0 = -2;
      label = 39;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $12 = HEAP32[$3 >> 2] | 0;
    $call53 = FUNCTION_TABLE_iii[$12 & 1023]($enc, $ptr_addr_066) | 0;
    $tobool54 = ($call53 | 0) == 0;
    if ($tobool54) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_066;
    $retval_0 = 0;
    label = 39;
    break;
   case 27:
    $add_ptr57 = $ptr_addr_066 + 2 | 0;
    $ptr_addr_0_be = $add_ptr57;
    label = 36;
    break;
   case 28:
    $sub_ptr_rhs_cast60 = $ptr_addr_066;
    $sub_ptr_sub61 = $sub_ptr_lhs_cast59 - $sub_ptr_rhs_cast60 | 0;
    $cmp62 = ($sub_ptr_sub61 | 0) < 3;
    if ($cmp62) {
      $retval_0 = -2;
      label = 39;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $13 = HEAP32[$isName3 >> 2] | 0;
    $14 = $13;
    $call66 = FUNCTION_TABLE_iii[$14 & 1023]($enc, $ptr_addr_066) | 0;
    $tobool67 = ($call66 | 0) == 0;
    if ($tobool67) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_066;
    $retval_0 = 0;
    label = 39;
    break;
   case 31:
    $add_ptr70 = $ptr_addr_066 + 3 | 0;
    $ptr_addr_0_be = $add_ptr70;
    label = 36;
    break;
   case 32:
    $sub_ptr_rhs_cast73 = $ptr_addr_066;
    $sub_ptr_sub74 = $sub_ptr_lhs_cast72 - $sub_ptr_rhs_cast73 | 0;
    $cmp75 = ($sub_ptr_sub74 | 0) < 4;
    if ($cmp75) {
      $retval_0 = -2;
      label = 39;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $15 = HEAP32[$isName4 >> 2] | 0;
    $16 = $15;
    $call79 = FUNCTION_TABLE_iii[$16 & 1023]($enc, $ptr_addr_066) | 0;
    $tobool80 = ($call79 | 0) == 0;
    if ($tobool80) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_066;
    $retval_0 = 0;
    label = 39;
    break;
   case 35:
    $add_ptr83 = $ptr_addr_066 + 4 | 0;
    $ptr_addr_0_be = $add_ptr83;
    label = 36;
    break;
   case 36:
    $cmp36 = ($ptr_addr_0_be | 0) == ($end | 0);
    if ($cmp36) {
      $retval_0 = -20;
      label = 39;
      break;
    } else {
      $ptr_addr_066 = $ptr_addr_0_be;
      label = 21;
      break;
    }
   case 37:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_066;
    $retval_0 = 20;
    label = 39;
    break;
   case 38:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_066;
    $retval_0 = 0;
    label = 39;
    break;
   case 39:
    return $retval_0 | 0;
  }
  return 0;
}
function _parsePseudoAttribute($enc, $ptr, $end, $namePtr, $nameEndPtr, $valPtr, $nextTokPtr) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $namePtr = $namePtr | 0;
  $nameEndPtr = $nameEndPtr | 0;
  $valPtr = $valPtr | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $call = 0, $call1 = 0, $tobool = 0, $minBytesPerChar = 0, $ptr_addr_0 = 0, $0 = 0, $add_ptr = 0, $call4 = 0, $call5 = 0, $tobool6 = 0, $cmp7 = 0, $ptr_addr_1 = 0, $call10 = 0, $call17 = 0, $tobool18 = 0, $ptr_addr_2 = 0, $1 = 0, $add_ptr22 = 0, $call24 = 0, $call25 = 0, $tobool26 = 0, $cmp28 = 0, $2 = 0, $add_ptr33 = 0, $ptr_addr_3 = 0, $3 = 0, $cmp34 = 0, $4 = 0, $add_ptr38 = 0, $call39 = 0, $call4092 = 0, $tobool4193 = 0, $ptr_addr_494 = 0, $5 = 0, $add_ptr43 = 0, $call44 = 0, $call40 = 0, $tobool41 = 0, $c_0_lcssa = 0, $ptr_addr_4_lcssa = 0, $6 = 0, $add_ptr50 = 0, $call5288 = 0, $sext = 0, $conv53 = 0, $cmp5489 = 0, $call5291 = 0, $ptr_addr_590 = 0, $call52_off = 0, $call52_off83 = 0, $notlhs = 0, $notrhs = 0, $or_cond_not = 0, $call52_off84 = 0, $or_cond3_not = 0, $or_cond86 = 0, $7 = 0, $add_ptr87 = 0, $call52 = 0, $cmp54 = 0, $ptr_addr_5_lcssa = 0, $8 = 0, $add_ptr90 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    HEAP32[$namePtr >> 2] = 0;
    $retval_0 = 1;
    label = 32;
    break;
   case 4:
    $call = _toAscii($enc, $ptr, $end) | 0;
    $call1 = _isSpace($call) | 0;
    $tobool = ($call1 | 0) == 0;
    if ($tobool) {
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $minBytesPerChar = $enc + 64 | 0;
    $ptr_addr_0 = $ptr;
    label = 7;
    break;
   case 6:
    HEAP32[$nextTokPtr >> 2] = $ptr;
    $retval_0 = 0;
    label = 32;
    break;
   case 7:
    $0 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr = $ptr_addr_0 + $0 | 0;
    $call4 = _toAscii($enc, $add_ptr, $end) | 0;
    $call5 = _isSpace($call4) | 0;
    $tobool6 = ($call5 | 0) == 0;
    if ($tobool6) {
      label = 8;
      break;
    } else {
      $ptr_addr_0 = $add_ptr;
      label = 7;
      break;
    }
   case 8:
    $cmp7 = ($add_ptr | 0) == ($end | 0);
    if ($cmp7) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    HEAP32[$namePtr >> 2] = 0;
    $retval_0 = 1;
    label = 32;
    break;
   case 10:
    HEAP32[$namePtr >> 2] = $add_ptr;
    $ptr_addr_1 = $add_ptr;
    label = 11;
    break;
   case 11:
    $call10 = _toAscii($enc, $ptr_addr_1, $end) | 0;
    if (($call10 | 0) == (-1 | 0)) {
      label = 12;
      break;
    } else if (($call10 | 0) == 61) {
      label = 13;
      break;
    } else {
      label = 14;
      break;
    }
   case 12:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_1;
    $retval_0 = 0;
    label = 32;
    break;
   case 13:
    HEAP32[$nameEndPtr >> 2] = $ptr_addr_1;
    $ptr_addr_3 = $ptr_addr_1;
    label = 20;
    break;
   case 14:
    $call17 = _isSpace($call10) | 0;
    $tobool18 = ($call17 | 0) == 0;
    if ($tobool18) {
      label = 19;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    HEAP32[$nameEndPtr >> 2] = $ptr_addr_1;
    $ptr_addr_2 = $ptr_addr_1;
    label = 16;
    break;
   case 16:
    $1 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr22 = $ptr_addr_2 + $1 | 0;
    $call24 = _toAscii($enc, $add_ptr22, $end) | 0;
    $call25 = _isSpace($call24) | 0;
    $tobool26 = ($call25 | 0) == 0;
    if ($tobool26) {
      label = 17;
      break;
    } else {
      $ptr_addr_2 = $add_ptr22;
      label = 16;
      break;
    }
   case 17:
    $cmp28 = ($call24 | 0) == 61;
    if ($cmp28) {
      $ptr_addr_3 = $add_ptr22;
      label = 20;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    HEAP32[$nextTokPtr >> 2] = $add_ptr22;
    $retval_0 = 0;
    label = 32;
    break;
   case 19:
    $2 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr33 = $ptr_addr_1 + $2 | 0;
    $ptr_addr_1 = $add_ptr33;
    label = 11;
    break;
   case 20:
    $3 = HEAP32[$namePtr >> 2] | 0;
    $cmp34 = ($ptr_addr_3 | 0) == ($3 | 0);
    if ($cmp34) {
      label = 21;
      break;
    } else {
      label = 22;
      break;
    }
   case 21:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_3;
    $retval_0 = 0;
    label = 32;
    break;
   case 22:
    $4 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr38 = $ptr_addr_3 + $4 | 0;
    $call39 = _toAscii($enc, $add_ptr38, $end) | 0;
    $call4092 = _isSpace($call39) | 0;
    $tobool4193 = ($call4092 | 0) == 0;
    if ($tobool4193) {
      $ptr_addr_4_lcssa = $add_ptr38;
      $c_0_lcssa = $call39;
      label = 24;
      break;
    } else {
      $ptr_addr_494 = $add_ptr38;
      label = 23;
      break;
    }
   case 23:
    $5 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr43 = $ptr_addr_494 + $5 | 0;
    $call44 = _toAscii($enc, $add_ptr43, $end) | 0;
    $call40 = _isSpace($call44) | 0;
    $tobool41 = ($call40 | 0) == 0;
    if ($tobool41) {
      $ptr_addr_4_lcssa = $add_ptr43;
      $c_0_lcssa = $call44;
      label = 24;
      break;
    } else {
      $ptr_addr_494 = $add_ptr43;
      label = 23;
      break;
    }
   case 24:
    if (($c_0_lcssa | 0) == 39 | ($c_0_lcssa | 0) == 34) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_4_lcssa;
    $retval_0 = 0;
    label = 32;
    break;
   case 26:
    $6 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr50 = $ptr_addr_4_lcssa + $6 | 0;
    HEAP32[$valPtr >> 2] = $add_ptr50;
    $call5288 = _toAscii($enc, $add_ptr50, $end) | 0;
    $sext = $c_0_lcssa << 24;
    $conv53 = $sext >> 24;
    $cmp5489 = ($call5288 | 0) == ($conv53 | 0);
    if ($cmp5489) {
      $ptr_addr_5_lcssa = $add_ptr50;
      label = 31;
      break;
    } else {
      $ptr_addr_590 = $add_ptr50;
      $call5291 = $call5288;
      label = 27;
      break;
    }
   case 27:
    $call52_off = $call5291 - 97 | 0;
    $call52_off83 = $call5291 - 65 | 0;
    $notlhs = $call52_off >>> 0 > 25;
    $notrhs = $call52_off83 >>> 0 > 25;
    $or_cond_not = $notrhs & $notlhs;
    $call52_off84 = $call5291 - 48 | 0;
    $or_cond3_not = $call52_off84 >>> 0 > 9;
    $or_cond86 = $or_cond_not & $or_cond3_not;
    if ($or_cond86) {
      label = 28;
      break;
    } else {
      label = 30;
      break;
    }
   case 28:
    if (($call5291 | 0) == 95 | ($call5291 | 0) == 46 | ($call5291 | 0) == 45) {
      label = 30;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    HEAP32[$nextTokPtr >> 2] = $ptr_addr_590;
    $retval_0 = 0;
    label = 32;
    break;
   case 30:
    $7 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr87 = $ptr_addr_590 + $7 | 0;
    $call52 = _toAscii($enc, $add_ptr87, $end) | 0;
    $cmp54 = ($call52 | 0) == ($conv53 | 0);
    if ($cmp54) {
      $ptr_addr_5_lcssa = $add_ptr87;
      label = 31;
      break;
    } else {
      $ptr_addr_590 = $add_ptr87;
      $call5291 = $call52;
      label = 27;
      break;
    }
   case 31:
    $8 = HEAP32[$minBytesPerChar >> 2] | 0;
    $add_ptr90 = $ptr_addr_5_lcssa + $8 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr90;
    $retval_0 = 1;
    label = 32;
    break;
   case 32:
    return $retval_0 | 0;
  }
  return 0;
}
function _toAscii($enc, $ptr, $end) {
  $enc = $enc | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  var $ptr_addr = 0, $buf = 0, $p = 0, $arraydecay = 0, $utf8Convert = 0, $0 = 0, $add_ptr = 0, $1 = 0, $cmp = 0, $2 = 0, $conv = 0, $retval_0 = 0, label = 0, __stackBase__ = 0;
  __stackBase__ = STACKTOP;
  STACKTOP = STACKTOP + 24 | 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $ptr_addr = __stackBase__ | 0;
    $buf = __stackBase__ + 8 | 0;
    $p = __stackBase__ + 16 | 0;
    HEAP32[$ptr_addr >> 2] = $ptr;
    $arraydecay = $buf | 0;
    HEAP32[$p >> 2] = $arraydecay;
    $utf8Convert = $enc + 56 | 0;
    $0 = HEAP32[$utf8Convert >> 2] | 0;
    $add_ptr = $buf + 1 | 0;
    FUNCTION_TABLE_viiiii[$0 & 1023]($enc, $ptr_addr, $end, $p, $add_ptr);
    $1 = HEAP32[$p >> 2] | 0;
    $cmp = ($1 | 0) == ($arraydecay | 0);
    if ($cmp) {
      $retval_0 = -1;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = HEAP8[$arraydecay] | 0;
    $conv = $2 << 24 >> 24;
    $retval_0 = $conv;
    label = 4;
    break;
   case 4:
    STACKTOP = __stackBase__;
    return $retval_0 | 0;
  }
  return 0;
}
function _initScan($enc, $state, $ptr, $end, $nextTokPtr) {
  $enc = $enc | 0;
  $state = $state | 0;
  $ptr = $ptr | 0;
  $end = $end | 0;
  $nextTokPtr = $nextTokPtr | 0;
  var $cmp = 0, $encPtr1 = 0, $0 = 0, $add_ptr = 0, $cmp2 = 0, $cmp4 = 0, $isUtf16 = 0, $1 = 0, $conv = 0, $conv_off = 0, $switch = 0, $2 = 0, $conv7 = 0, $3 = 0, $cmp12 = 0, $or_cond3 = 0, $4 = 0, $conv20 = 0, $shl = 0, $5 = 0, $conv22 = 0, $or = 0, $isUtf1625 = 0, $6 = 0, $cmp27 = 0, $cmp30 = 0, $or_cond4 = 0, $add_ptr34 = 0, $isUtf1638 = 0, $7 = 0, $_off = 0, $switch6 = 0, $cmp48 = 0, $or_cond7 = 0, $arrayidx53 = 0, $8 = 0, $call = 0, $isUtf1656 = 0, $9 = 0, $cmp58 = 0, $cmp61 = 0, $or_cond5 = 0, $add_ptr65 = 0, $cmp68 = 0, $isUtf1672 = 0, $10 = 0, $add_ptr88 = 0, $cmp89 = 0, $11 = 0, $cmp95 = 0, $add_ptr98 = 0, $cmp103 = 0, $cmp106 = 0, $isUtf16110 = 0, $12 = 0, $cmp112 = 0, $arrayidx118 = 0, $13 = 0, $call119 = 0, $cmp123 = 0, $cmp126 = 0, $or_cond = 0, $arrayidx132 = 0, $14 = 0, $call133 = 0, $isUtf16139 = 0, $15 = 0, $conv140 = 0, $arrayidx141 = 0, $16 = 0, $arrayidx143 = 0, $17 = 0, $call144 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($ptr | 0) == ($end | 0);
    if ($cmp) {
      $retval_0 = -4;
      label = 27;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $encPtr1 = $enc + 72 | 0;
    $0 = HEAP32[$encPtr1 >> 2] | 0;
    $add_ptr = $ptr + 1 | 0;
    $cmp2 = ($add_ptr | 0) == ($end | 0);
    if ($cmp2) {
      label = 4;
      break;
    } else {
      label = 8;
      break;
    }
   case 4:
    $cmp4 = ($state | 0) == 1;
    if ($cmp4) {
      label = 5;
      break;
    } else {
      $retval_0 = -1;
      label = 27;
      break;
    }
   case 5:
    $isUtf16 = $enc + 69 | 0;
    $1 = HEAP8[$isUtf16] | 0;
    $conv = $1 << 24 >> 24;
    $conv_off = $conv - 3 | 0;
    $switch = $conv_off >>> 0 < 3;
    if ($switch) {
      $retval_0 = -1;
      label = 27;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $2 = HEAP8[$ptr] | 0;
    $conv7 = $2 & 255;
    if (($conv7 | 0) == 254 | ($conv7 | 0) == 255 | ($conv7 | 0) == 239) {
      label = 7;
      break;
    } else if (($conv7 | 0) == 0 | ($conv7 | 0) == 60) {
      $retval_0 = -1;
      label = 27;
      break;
    } else {
      label = 26;
      break;
    }
   case 7:
    $3 = HEAP8[$isUtf16] | 0;
    $cmp12 = $3 << 24 >> 24 == 0;
    $or_cond3 = $cmp12 & $cmp4;
    if ($or_cond3) {
      label = 26;
      break;
    } else {
      $retval_0 = -1;
      label = 27;
      break;
    }
   case 8:
    $4 = HEAP8[$ptr] | 0;
    $conv20 = $4 & 255;
    $shl = $conv20 << 8;
    $5 = HEAP8[$add_ptr] | 0;
    $conv22 = $5 & 255;
    $or = $shl | $conv22;
    if (($or | 0) == 65279) {
      label = 9;
      break;
    } else if (($or | 0) == 15360) {
      label = 11;
      break;
    } else if (($or | 0) == 65534) {
      label = 13;
      break;
    } else if (($or | 0) == 61371) {
      label = 15;
      break;
    } else {
      label = 20;
      break;
    }
   case 9:
    $isUtf1625 = $enc + 69 | 0;
    $6 = HEAP8[$isUtf1625] | 0;
    $cmp27 = $6 << 24 >> 24 == 0;
    $cmp30 = ($state | 0) == 1;
    $or_cond4 = $cmp27 & $cmp30;
    if ($or_cond4) {
      label = 26;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $add_ptr34 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr34;
    HEAP32[$0 >> 2] = 85424;
    $retval_0 = 14;
    label = 27;
    break;
   case 11:
    $isUtf1638 = $enc + 69 | 0;
    $7 = HEAP8[$isUtf1638] | 0;
    $_off = $7 - 3 & 255;
    $switch6 = ($_off & 255) < 2;
    $cmp48 = ($state | 0) == 1;
    $or_cond7 = $switch6 & $cmp48;
    if ($or_cond7) {
      label = 26;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    HEAP32[$0 >> 2] = 11464;
    $arrayidx53 = 11464 + ($state << 2) | 0;
    $8 = HEAP32[$arrayidx53 >> 2] | 0;
    $call = FUNCTION_TABLE_iiiii[$8 & 1023](11464, $ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call;
    label = 27;
    break;
   case 13:
    $isUtf1656 = $enc + 69 | 0;
    $9 = HEAP8[$isUtf1656] | 0;
    $cmp58 = $9 << 24 >> 24 == 0;
    $cmp61 = ($state | 0) == 1;
    $or_cond5 = $cmp58 & $cmp61;
    if ($or_cond5) {
      label = 26;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $add_ptr65 = $ptr + 2 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr65;
    HEAP32[$0 >> 2] = 11464;
    $retval_0 = 14;
    label = 27;
    break;
   case 15:
    $cmp68 = ($state | 0) == 1;
    if ($cmp68) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $isUtf1672 = $enc + 69 | 0;
    $10 = HEAP8[$isUtf1672] | 0;
    if (($10 << 24 >> 24 | 0) == 5 | ($10 << 24 >> 24 | 0) == 4 | ($10 << 24 >> 24 | 0) == 3 | ($10 << 24 >> 24 | 0) == 0) {
      label = 26;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $add_ptr88 = $ptr + 2 | 0;
    $cmp89 = ($add_ptr88 | 0) == ($end | 0);
    if ($cmp89) {
      $retval_0 = -1;
      label = 27;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $11 = HEAP8[$add_ptr88] | 0;
    $cmp95 = $11 << 24 >> 24 == -65;
    if ($cmp95) {
      label = 19;
      break;
    } else {
      label = 26;
      break;
    }
   case 19:
    $add_ptr98 = $ptr + 3 | 0;
    HEAP32[$nextTokPtr >> 2] = $add_ptr98;
    HEAP32[$0 >> 2] = 528;
    $retval_0 = 14;
    label = 27;
    break;
   case 20:
    $cmp103 = $4 << 24 >> 24 == 0;
    if ($cmp103) {
      label = 21;
      break;
    } else {
      label = 24;
      break;
    }
   case 21:
    $cmp106 = ($state | 0) == 1;
    if ($cmp106) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    $isUtf16110 = $enc + 69 | 0;
    $12 = HEAP8[$isUtf16110] | 0;
    $cmp112 = $12 << 24 >> 24 == 5;
    if ($cmp112) {
      label = 26;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    HEAP32[$0 >> 2] = 85424;
    $arrayidx118 = 85424 + ($state << 2) | 0;
    $13 = HEAP32[$arrayidx118 >> 2] | 0;
    $call119 = FUNCTION_TABLE_iiiii[$13 & 1023](85424, $ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call119;
    label = 27;
    break;
   case 24:
    $cmp123 = $5 << 24 >> 24 != 0;
    $cmp126 = ($state | 0) == 1;
    $or_cond = $cmp123 | $cmp126;
    if ($or_cond) {
      label = 26;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    HEAP32[$0 >> 2] = 11464;
    $arrayidx132 = 11464 + ($state << 2) | 0;
    $14 = HEAP32[$arrayidx132 >> 2] | 0;
    $call133 = FUNCTION_TABLE_iiiii[$14 & 1023](11464, $ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call133;
    label = 27;
    break;
   case 26:
    $isUtf16139 = $enc + 69 | 0;
    $15 = HEAP8[$isUtf16139] | 0;
    $conv140 = $15 << 24 >> 24;
    $arrayidx141 = 20264 + ($conv140 << 2) | 0;
    $16 = HEAP32[$arrayidx141 >> 2] | 0;
    HEAP32[$0 >> 2] = $16;
    $arrayidx143 = $16 + ($state << 2) | 0;
    $17 = HEAP32[$arrayidx143 >> 2] | 0;
    $call144 = FUNCTION_TABLE_iiiii[$17 & 1023]($16, $ptr, $end, $nextTokPtr) | 0;
    $retval_0 = $call144;
    label = 27;
    break;
   case 27:
    return $retval_0 | 0;
  }
  return 0;
}
function _malloc($bytes) {
  $bytes = $bytes | 0;
  var $cmp = 0, $cmp1 = 0, $add2 = 0, $and = 0, $cond = 0, $shr = 0, $0 = 0, $shr3 = 0, $and4 = 0, $cmp5 = 0, $neg = 0, $and7 = 0, $add8 = 0, $shl = 0, $arrayidx = 0, $1 = 0, $arrayidx_sum = 0, $2 = 0, $3 = 0, $fd9 = 0, $4 = 0, $cmp10 = 0, $shl12 = 0, $neg13 = 0, $and14 = 0, $5 = 0, $6 = 0, $cmp15 = 0, $bk = 0, $7 = 0, $cmp16 = 0, $shl22 = 0, $or23 = 0, $head = 0, $8 = 0, $add_ptr_sum106 = 0, $head25 = 0, $9 = 0, $10 = 0, $or26 = 0, $11 = 0, $12 = 0, $cmp29 = 0, $cmp31 = 0, $shl35 = 0, $shl37 = 0, $sub = 0, $or40 = 0, $and41 = 0, $sub42 = 0, $and43 = 0, $sub44 = 0, $shr45 = 0, $and46 = 0, $shr47 = 0, $shr48 = 0, $and49 = 0, $add50 = 0, $shr51 = 0, $shr52 = 0, $and53 = 0, $add54 = 0, $shr55 = 0, $shr56 = 0, $and57 = 0, $add58 = 0, $shr59 = 0, $shr60 = 0, $and61 = 0, $add62 = 0, $shr63 = 0, $add64 = 0, $shl65 = 0, $arrayidx66 = 0, $13 = 0, $arrayidx66_sum = 0, $14 = 0, $15 = 0, $fd69 = 0, $16 = 0, $cmp70 = 0, $shl72 = 0, $neg73 = 0, $and74 = 0, $17 = 0, $18 = 0, $cmp76 = 0, $bk78 = 0, $19 = 0, $cmp79 = 0, $shl90 = 0, $sub91 = 0, $or93 = 0, $head94 = 0, $20 = 0, $add_ptr95 = 0, $21 = 0, $or96 = 0, $add_ptr95_sum103 = 0, $head97 = 0, $22 = 0, $add_ptr98 = 0, $prev_foot = 0, $23 = 0, $cmp99 = 0, $24 = 0, $shr101 = 0, $shl102 = 0, $arrayidx103 = 0, $25 = 0, $26 = 0, $shl105 = 0, $and106 = 0, $tobool107 = 0, $or110 = 0, $arrayidx103_sum104 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $cmp113 = 0, $F104_0 = 0, $arrayidx103_sum = 0, $31 = 0, $bk122 = 0, $fd123 = 0, $bk124 = 0, $32 = 0, $33 = 0, $cmp128 = 0, $call = 0, $cmp130 = 0, $cmp138 = 0, $add143 = 0, $and144 = 0, $34 = 0, $cmp145 = 0, $call148 = 0, $cmp149 = 0, $nb_0 = 0, $35 = 0, $cmp155 = 0, $sub159 = 0, $36 = 0, $cmp161 = 0, $37 = 0, $add_ptr165 = 0, $38 = 0, $or166 = 0, $add_ptr165_sum = 0, $head167 = 0, $39 = 0, $add_ptr168 = 0, $prev_foot169 = 0, $or171 = 0, $head172 = 0, $or175 = 0, $head176 = 0, $40 = 0, $add_ptr177_sum = 0, $head178 = 0, $41 = 0, $42 = 0, $or179 = 0, $add_ptr181 = 0, $43 = 0, $44 = 0, $cmp183 = 0, $sub187 = 0, $45 = 0, $46 = 0, $add_ptr190 = 0, $47 = 0, $or191 = 0, $add_ptr190_sum = 0, $head192 = 0, $48 = 0, $or194 = 0, $head195 = 0, $add_ptr196 = 0, $49 = 0, $call199 = 0, $mem_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = $bytes >>> 0 < 245;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 30;
      break;
    }
   case 3:
    $cmp1 = $bytes >>> 0 < 11;
    if ($cmp1) {
      $cond = 16;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $add2 = $bytes + 11 | 0;
    $and = $add2 & -8;
    $cond = $and;
    label = 5;
    break;
   case 5:
    $shr = $cond >>> 3;
    $0 = HEAP32[40816] | 0;
    $shr3 = $0 >>> ($shr >>> 0);
    $and4 = $shr3 & 3;
    $cmp5 = ($and4 | 0) == 0;
    if ($cmp5) {
      label = 13;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $neg = $shr3 & 1;
    $and7 = $neg ^ 1;
    $add8 = $and7 + $shr | 0;
    $shl = $add8 << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $1 = $arrayidx;
    $arrayidx_sum = $shl + 2 | 0;
    $2 = 163304 + ($arrayidx_sum << 2) | 0;
    $3 = HEAP32[$2 >> 2] | 0;
    $fd9 = $3 + 8 | 0;
    $4 = HEAP32[$fd9 >> 2] | 0;
    $cmp10 = ($1 | 0) == ($4 | 0);
    if ($cmp10) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $shl12 = 1 << $add8;
    $neg13 = $shl12 ^ -1;
    $and14 = $0 & $neg13;
    HEAP32[40816] = $and14;
    label = 12;
    break;
   case 8:
    $5 = $4;
    $6 = HEAP32[40820] | 0;
    $cmp15 = $5 >>> 0 < $6 >>> 0;
    if ($cmp15) {
      label = 11;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $bk = $4 + 12 | 0;
    $7 = HEAP32[$bk >> 2] | 0;
    $cmp16 = ($7 | 0) == ($3 | 0);
    if ($cmp16) {
      label = 10;
      break;
    } else {
      label = 11;
      break;
    }
   case 10:
    HEAP32[$bk >> 2] = $1;
    HEAP32[$2 >> 2] = $4;
    label = 12;
    break;
   case 11:
    _abort();
    return 0;
    return 0;
   case 12:
    $shl22 = $add8 << 3;
    $or23 = $shl22 | 3;
    $head = $3 + 4 | 0;
    HEAP32[$head >> 2] = $or23;
    $8 = $3;
    $add_ptr_sum106 = $shl22 | 4;
    $head25 = $8 + $add_ptr_sum106 | 0;
    $9 = $head25;
    $10 = HEAP32[$9 >> 2] | 0;
    $or26 = $10 | 1;
    HEAP32[$9 >> 2] = $or26;
    $11 = $fd9;
    $mem_0 = $11;
    label = 41;
    break;
   case 13:
    $12 = HEAP32[40818] | 0;
    $cmp29 = $cond >>> 0 > $12 >>> 0;
    if ($cmp29) {
      label = 14;
      break;
    } else {
      $nb_0 = $cond;
      label = 33;
      break;
    }
   case 14:
    $cmp31 = ($shr3 | 0) == 0;
    if ($cmp31) {
      label = 28;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $shl35 = $shr3 << $shr;
    $shl37 = 2 << $shr;
    $sub = -$shl37 | 0;
    $or40 = $shl37 | $sub;
    $and41 = $shl35 & $or40;
    $sub42 = -$and41 | 0;
    $and43 = $and41 & $sub42;
    $sub44 = $and43 - 1 | 0;
    $shr45 = $sub44 >>> 12;
    $and46 = $shr45 & 16;
    $shr47 = $sub44 >>> ($and46 >>> 0);
    $shr48 = $shr47 >>> 5;
    $and49 = $shr48 & 8;
    $add50 = $and49 | $and46;
    $shr51 = $shr47 >>> ($and49 >>> 0);
    $shr52 = $shr51 >>> 2;
    $and53 = $shr52 & 4;
    $add54 = $add50 | $and53;
    $shr55 = $shr51 >>> ($and53 >>> 0);
    $shr56 = $shr55 >>> 1;
    $and57 = $shr56 & 2;
    $add58 = $add54 | $and57;
    $shr59 = $shr55 >>> ($and57 >>> 0);
    $shr60 = $shr59 >>> 1;
    $and61 = $shr60 & 1;
    $add62 = $add58 | $and61;
    $shr63 = $shr59 >>> ($and61 >>> 0);
    $add64 = $add62 + $shr63 | 0;
    $shl65 = $add64 << 1;
    $arrayidx66 = 163304 + ($shl65 << 2) | 0;
    $13 = $arrayidx66;
    $arrayidx66_sum = $shl65 + 2 | 0;
    $14 = 163304 + ($arrayidx66_sum << 2) | 0;
    $15 = HEAP32[$14 >> 2] | 0;
    $fd69 = $15 + 8 | 0;
    $16 = HEAP32[$fd69 >> 2] | 0;
    $cmp70 = ($13 | 0) == ($16 | 0);
    if ($cmp70) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $shl72 = 1 << $add64;
    $neg73 = $shl72 ^ -1;
    $and74 = $0 & $neg73;
    HEAP32[40816] = $and74;
    label = 21;
    break;
   case 17:
    $17 = $16;
    $18 = HEAP32[40820] | 0;
    $cmp76 = $17 >>> 0 < $18 >>> 0;
    if ($cmp76) {
      label = 20;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $bk78 = $16 + 12 | 0;
    $19 = HEAP32[$bk78 >> 2] | 0;
    $cmp79 = ($19 | 0) == ($15 | 0);
    if ($cmp79) {
      label = 19;
      break;
    } else {
      label = 20;
      break;
    }
   case 19:
    HEAP32[$bk78 >> 2] = $13;
    HEAP32[$14 >> 2] = $16;
    label = 21;
    break;
   case 20:
    _abort();
    return 0;
    return 0;
   case 21:
    $shl90 = $add64 << 3;
    $sub91 = $shl90 - $cond | 0;
    $or93 = $cond | 3;
    $head94 = $15 + 4 | 0;
    HEAP32[$head94 >> 2] = $or93;
    $20 = $15;
    $add_ptr95 = $20 + $cond | 0;
    $21 = $add_ptr95;
    $or96 = $sub91 | 1;
    $add_ptr95_sum103 = $cond | 4;
    $head97 = $20 + $add_ptr95_sum103 | 0;
    $22 = $head97;
    HEAP32[$22 >> 2] = $or96;
    $add_ptr98 = $20 + $shl90 | 0;
    $prev_foot = $add_ptr98;
    HEAP32[$prev_foot >> 2] = $sub91;
    $23 = HEAP32[40818] | 0;
    $cmp99 = ($23 | 0) == 0;
    if ($cmp99) {
      label = 27;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $24 = HEAP32[40821] | 0;
    $shr101 = $23 >>> 3;
    $shl102 = $shr101 << 1;
    $arrayidx103 = 163304 + ($shl102 << 2) | 0;
    $25 = $arrayidx103;
    $26 = HEAP32[40816] | 0;
    $shl105 = 1 << $shr101;
    $and106 = $26 & $shl105;
    $tobool107 = ($and106 | 0) == 0;
    if ($tobool107) {
      label = 23;
      break;
    } else {
      label = 24;
      break;
    }
   case 23:
    $or110 = $26 | $shl105;
    HEAP32[40816] = $or110;
    $F104_0 = $25;
    label = 26;
    break;
   case 24:
    $arrayidx103_sum104 = $shl102 + 2 | 0;
    $27 = 163304 + ($arrayidx103_sum104 << 2) | 0;
    $28 = HEAP32[$27 >> 2] | 0;
    $29 = $28;
    $30 = HEAP32[40820] | 0;
    $cmp113 = $29 >>> 0 < $30 >>> 0;
    if ($cmp113) {
      label = 25;
      break;
    } else {
      $F104_0 = $28;
      label = 26;
      break;
    }
   case 25:
    _abort();
    return 0;
    return 0;
   case 26:
    $arrayidx103_sum = $shl102 + 2 | 0;
    $31 = 163304 + ($arrayidx103_sum << 2) | 0;
    HEAP32[$31 >> 2] = $24;
    $bk122 = $F104_0 + 12 | 0;
    HEAP32[$bk122 >> 2] = $24;
    $fd123 = $24 + 8 | 0;
    HEAP32[$fd123 >> 2] = $F104_0;
    $bk124 = $24 + 12 | 0;
    HEAP32[$bk124 >> 2] = $25;
    label = 27;
    break;
   case 27:
    HEAP32[40818] = $sub91;
    HEAP32[40821] = $21;
    $32 = $fd69;
    $mem_0 = $32;
    label = 41;
    break;
   case 28:
    $33 = HEAP32[40817] | 0;
    $cmp128 = ($33 | 0) == 0;
    if ($cmp128) {
      $nb_0 = $cond;
      label = 33;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $call = _tmalloc_small($cond) | 0;
    $cmp130 = ($call | 0) == 0;
    if ($cmp130) {
      $nb_0 = $cond;
      label = 33;
      break;
    } else {
      $mem_0 = $call;
      label = 41;
      break;
    }
   case 30:
    $cmp138 = $bytes >>> 0 > 4294967231;
    if ($cmp138) {
      $nb_0 = -1;
      label = 33;
      break;
    } else {
      label = 31;
      break;
    }
   case 31:
    $add143 = $bytes + 11 | 0;
    $and144 = $add143 & -8;
    $34 = HEAP32[40817] | 0;
    $cmp145 = ($34 | 0) == 0;
    if ($cmp145) {
      $nb_0 = $and144;
      label = 33;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $call148 = _tmalloc_large($and144) | 0;
    $cmp149 = ($call148 | 0) == 0;
    if ($cmp149) {
      $nb_0 = $and144;
      label = 33;
      break;
    } else {
      $mem_0 = $call148;
      label = 41;
      break;
    }
   case 33:
    $35 = HEAP32[40818] | 0;
    $cmp155 = $nb_0 >>> 0 > $35 >>> 0;
    if ($cmp155) {
      label = 38;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $sub159 = $35 - $nb_0 | 0;
    $36 = HEAP32[40821] | 0;
    $cmp161 = $sub159 >>> 0 > 15;
    if ($cmp161) {
      label = 35;
      break;
    } else {
      label = 36;
      break;
    }
   case 35:
    $37 = $36;
    $add_ptr165 = $37 + $nb_0 | 0;
    $38 = $add_ptr165;
    HEAP32[40821] = $38;
    HEAP32[40818] = $sub159;
    $or166 = $sub159 | 1;
    $add_ptr165_sum = $nb_0 + 4 | 0;
    $head167 = $37 + $add_ptr165_sum | 0;
    $39 = $head167;
    HEAP32[$39 >> 2] = $or166;
    $add_ptr168 = $37 + $35 | 0;
    $prev_foot169 = $add_ptr168;
    HEAP32[$prev_foot169 >> 2] = $sub159;
    $or171 = $nb_0 | 3;
    $head172 = $36 + 4 | 0;
    HEAP32[$head172 >> 2] = $or171;
    label = 37;
    break;
   case 36:
    HEAP32[40818] = 0;
    HEAP32[40821] = 0;
    $or175 = $35 | 3;
    $head176 = $36 + 4 | 0;
    HEAP32[$head176 >> 2] = $or175;
    $40 = $36;
    $add_ptr177_sum = $35 + 4 | 0;
    $head178 = $40 + $add_ptr177_sum | 0;
    $41 = $head178;
    $42 = HEAP32[$41 >> 2] | 0;
    $or179 = $42 | 1;
    HEAP32[$41 >> 2] = $or179;
    label = 37;
    break;
   case 37:
    $add_ptr181 = $36 + 8 | 0;
    $43 = $add_ptr181;
    $mem_0 = $43;
    label = 41;
    break;
   case 38:
    $44 = HEAP32[40819] | 0;
    $cmp183 = $nb_0 >>> 0 < $44 >>> 0;
    if ($cmp183) {
      label = 39;
      break;
    } else {
      label = 40;
      break;
    }
   case 39:
    $sub187 = $44 - $nb_0 | 0;
    HEAP32[40819] = $sub187;
    $45 = HEAP32[40822] | 0;
    $46 = $45;
    $add_ptr190 = $46 + $nb_0 | 0;
    $47 = $add_ptr190;
    HEAP32[40822] = $47;
    $or191 = $sub187 | 1;
    $add_ptr190_sum = $nb_0 + 4 | 0;
    $head192 = $46 + $add_ptr190_sum | 0;
    $48 = $head192;
    HEAP32[$48 >> 2] = $or191;
    $or194 = $nb_0 | 3;
    $head195 = $45 + 4 | 0;
    HEAP32[$head195 >> 2] = $or194;
    $add_ptr196 = $45 + 8 | 0;
    $49 = $add_ptr196;
    $mem_0 = $49;
    label = 41;
    break;
   case 40:
    $call199 = _sys_alloc($nb_0) | 0;
    $mem_0 = $call199;
    label = 41;
    break;
   case 41:
    return $mem_0 | 0;
  }
  return 0;
}
function _tmalloc_small($nb) {
  $nb = $nb | 0;
  var $0 = 0, $sub = 0, $and = 0, $sub2 = 0, $shr = 0, $and3 = 0, $shr4 = 0, $shr5 = 0, $and6 = 0, $add = 0, $shr7 = 0, $shr8 = 0, $and9 = 0, $add10 = 0, $shr11 = 0, $shr12 = 0, $and13 = 0, $add14 = 0, $shr15 = 0, $shr16 = 0, $and17 = 0, $add18 = 0, $shr19 = 0, $add20 = 0, $arrayidx = 0, $1 = 0, $head = 0, $2 = 0, $and21 = 0, $sub22 = 0, $rsize_0 = 0, $v_0 = 0, $t_0 = 0, $arrayidx23 = 0, $3 = 0, $cmp = 0, $arrayidx27 = 0, $4 = 0, $cmp28 = 0, $cond7 = 0, $head29 = 0, $5 = 0, $and30 = 0, $sub31 = 0, $cmp32 = 0, $sub31_rsize_0 = 0, $cond_v_0 = 0, $6 = 0, $7 = 0, $cmp33 = 0, $add_ptr = 0, $8 = 0, $cmp35 = 0, $parent = 0, $9 = 0, $bk = 0, $10 = 0, $cmp40 = 0, $fd = 0, $11 = 0, $12 = 0, $cmp45 = 0, $bk47 = 0, $13 = 0, $cmp48 = 0, $fd50 = 0, $14 = 0, $cmp51 = 0, $arrayidx61 = 0, $15 = 0, $cmp62 = 0, $arrayidx65 = 0, $16 = 0, $cmp66 = 0, $RP_0 = 0, $R_0 = 0, $arrayidx71 = 0, $17 = 0, $cmp72 = 0, $arrayidx75 = 0, $18 = 0, $cmp76 = 0, $CP_0 = 0, $19 = 0, $20 = 0, $21 = 0, $cmp81 = 0, $R_1 = 0, $cmp90 = 0, $index = 0, $22 = 0, $arrayidx94 = 0, $23 = 0, $cmp95 = 0, $cond5 = 0, $24 = 0, $shl = 0, $neg = 0, $25 = 0, $and103 = 0, $26 = 0, $27 = 0, $cmp107 = 0, $arrayidx113 = 0, $28 = 0, $cmp114 = 0, $arrayidx121 = 0, $cmp126 = 0, $29 = 0, $30 = 0, $cmp130 = 0, $parent135 = 0, $arrayidx137 = 0, $31 = 0, $cmp138 = 0, $32 = 0, $33 = 0, $cmp142 = 0, $arrayidx148 = 0, $parent149 = 0, $arrayidx154 = 0, $34 = 0, $cmp155 = 0, $35 = 0, $36 = 0, $cmp159 = 0, $arrayidx165 = 0, $parent166 = 0, $cmp174 = 0, $add177 = 0, $or178 = 0, $head179 = 0, $add_ptr181_sum = 0, $head182 = 0, $37 = 0, $38 = 0, $or183 = 0, $or186 = 0, $head187 = 0, $or188 = 0, $add_ptr_sum = 0, $head189 = 0, $39 = 0, $add_ptr_sum1 = 0, $add_ptr190 = 0, $prev_foot = 0, $40 = 0, $cmp191 = 0, $41 = 0, $shr194 = 0, $shl195 = 0, $arrayidx196 = 0, $42 = 0, $43 = 0, $shl198 = 0, $and199 = 0, $tobool200 = 0, $or204 = 0, $arrayidx196_sum2 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $cmp208 = 0, $F197_0 = 0, $arrayidx196_sum = 0, $48 = 0, $bk218 = 0, $fd219 = 0, $bk220 = 0, $add_ptr225 = 0, $49 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[40817] | 0;
    $sub = -$0 | 0;
    $and = $0 & $sub;
    $sub2 = $and - 1 | 0;
    $shr = $sub2 >>> 12;
    $and3 = $shr & 16;
    $shr4 = $sub2 >>> ($and3 >>> 0);
    $shr5 = $shr4 >>> 5;
    $and6 = $shr5 & 8;
    $add = $and6 | $and3;
    $shr7 = $shr4 >>> ($and6 >>> 0);
    $shr8 = $shr7 >>> 2;
    $and9 = $shr8 & 4;
    $add10 = $add | $and9;
    $shr11 = $shr7 >>> ($and9 >>> 0);
    $shr12 = $shr11 >>> 1;
    $and13 = $shr12 & 2;
    $add14 = $add10 | $and13;
    $shr15 = $shr11 >>> ($and13 >>> 0);
    $shr16 = $shr15 >>> 1;
    $and17 = $shr16 & 1;
    $add18 = $add14 | $and17;
    $shr19 = $shr15 >>> ($and17 >>> 0);
    $add20 = $add18 + $shr19 | 0;
    $arrayidx = 163568 + ($add20 << 2) | 0;
    $1 = HEAP32[$arrayidx >> 2] | 0;
    $head = $1 + 4 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $and21 = $2 & -8;
    $sub22 = $and21 - $nb | 0;
    $t_0 = $1;
    $v_0 = $1;
    $rsize_0 = $sub22;
    label = 3;
    break;
   case 3:
    $arrayidx23 = $t_0 + 16 | 0;
    $3 = HEAP32[$arrayidx23 >> 2] | 0;
    $cmp = ($3 | 0) == 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $cond7 = $3;
      label = 5;
      break;
    }
   case 4:
    $arrayidx27 = $t_0 + 20 | 0;
    $4 = HEAP32[$arrayidx27 >> 2] | 0;
    $cmp28 = ($4 | 0) == 0;
    if ($cmp28) {
      label = 6;
      break;
    } else {
      $cond7 = $4;
      label = 5;
      break;
    }
   case 5:
    $head29 = $cond7 + 4 | 0;
    $5 = HEAP32[$head29 >> 2] | 0;
    $and30 = $5 & -8;
    $sub31 = $and30 - $nb | 0;
    $cmp32 = $sub31 >>> 0 < $rsize_0 >>> 0;
    $sub31_rsize_0 = $cmp32 ? $sub31 : $rsize_0;
    $cond_v_0 = $cmp32 ? $cond7 : $v_0;
    $t_0 = $cond7;
    $v_0 = $cond_v_0;
    $rsize_0 = $sub31_rsize_0;
    label = 3;
    break;
   case 6:
    $6 = $v_0;
    $7 = HEAP32[40820] | 0;
    $cmp33 = $6 >>> 0 < $7 >>> 0;
    if ($cmp33) {
      label = 52;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add_ptr = $6 + $nb | 0;
    $8 = $add_ptr;
    $cmp35 = $6 >>> 0 < $add_ptr >>> 0;
    if ($cmp35) {
      label = 8;
      break;
    } else {
      label = 52;
      break;
    }
   case 8:
    $parent = $v_0 + 24 | 0;
    $9 = HEAP32[$parent >> 2] | 0;
    $bk = $v_0 + 12 | 0;
    $10 = HEAP32[$bk >> 2] | 0;
    $cmp40 = ($10 | 0) == ($v_0 | 0);
    if ($cmp40) {
      label = 14;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $fd = $v_0 + 8 | 0;
    $11 = HEAP32[$fd >> 2] | 0;
    $12 = $11;
    $cmp45 = $12 >>> 0 < $7 >>> 0;
    if ($cmp45) {
      label = 13;
      break;
    } else {
      label = 10;
      break;
    }
   case 10:
    $bk47 = $11 + 12 | 0;
    $13 = HEAP32[$bk47 >> 2] | 0;
    $cmp48 = ($13 | 0) == ($v_0 | 0);
    if ($cmp48) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $fd50 = $10 + 8 | 0;
    $14 = HEAP32[$fd50 >> 2] | 0;
    $cmp51 = ($14 | 0) == ($v_0 | 0);
    if ($cmp51) {
      label = 12;
      break;
    } else {
      label = 13;
      break;
    }
   case 12:
    HEAP32[$bk47 >> 2] = $10;
    HEAP32[$fd50 >> 2] = $11;
    $R_1 = $10;
    label = 22;
    break;
   case 13:
    _abort();
    return 0;
    return 0;
   case 14:
    $arrayidx61 = $v_0 + 20 | 0;
    $15 = HEAP32[$arrayidx61 >> 2] | 0;
    $cmp62 = ($15 | 0) == 0;
    if ($cmp62) {
      label = 15;
      break;
    } else {
      $R_0 = $15;
      $RP_0 = $arrayidx61;
      label = 16;
      break;
    }
   case 15:
    $arrayidx65 = $v_0 + 16 | 0;
    $16 = HEAP32[$arrayidx65 >> 2] | 0;
    $cmp66 = ($16 | 0) == 0;
    if ($cmp66) {
      $R_1 = 0;
      label = 22;
      break;
    } else {
      $R_0 = $16;
      $RP_0 = $arrayidx65;
      label = 16;
      break;
    }
   case 16:
    $arrayidx71 = $R_0 + 20 | 0;
    $17 = HEAP32[$arrayidx71 >> 2] | 0;
    $cmp72 = ($17 | 0) == 0;
    if ($cmp72) {
      label = 17;
      break;
    } else {
      $CP_0 = $arrayidx71;
      label = 18;
      break;
    }
   case 17:
    $arrayidx75 = $R_0 + 16 | 0;
    $18 = HEAP32[$arrayidx75 >> 2] | 0;
    $cmp76 = ($18 | 0) == 0;
    if ($cmp76) {
      label = 19;
      break;
    } else {
      $CP_0 = $arrayidx75;
      label = 18;
      break;
    }
   case 18:
    $19 = HEAP32[$CP_0 >> 2] | 0;
    $R_0 = $19;
    $RP_0 = $CP_0;
    label = 16;
    break;
   case 19:
    $20 = $RP_0;
    $21 = HEAP32[40820] | 0;
    $cmp81 = $20 >>> 0 < $21 >>> 0;
    if ($cmp81) {
      label = 21;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    HEAP32[$RP_0 >> 2] = 0;
    $R_1 = $R_0;
    label = 22;
    break;
   case 21:
    _abort();
    return 0;
    return 0;
   case 22:
    $cmp90 = ($9 | 0) == 0;
    if ($cmp90) {
      label = 42;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $index = $v_0 + 28 | 0;
    $22 = HEAP32[$index >> 2] | 0;
    $arrayidx94 = 163568 + ($22 << 2) | 0;
    $23 = HEAP32[$arrayidx94 >> 2] | 0;
    $cmp95 = ($v_0 | 0) == ($23 | 0);
    if ($cmp95) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    HEAP32[$arrayidx94 >> 2] = $R_1;
    $cond5 = ($R_1 | 0) == 0;
    if ($cond5) {
      label = 25;
      break;
    } else {
      label = 32;
      break;
    }
   case 25:
    $24 = HEAP32[$index >> 2] | 0;
    $shl = 1 << $24;
    $neg = $shl ^ -1;
    $25 = HEAP32[40817] | 0;
    $and103 = $25 & $neg;
    HEAP32[40817] = $and103;
    label = 42;
    break;
   case 26:
    $26 = $9;
    $27 = HEAP32[40820] | 0;
    $cmp107 = $26 >>> 0 < $27 >>> 0;
    if ($cmp107) {
      label = 30;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $arrayidx113 = $9 + 16 | 0;
    $28 = HEAP32[$arrayidx113 >> 2] | 0;
    $cmp114 = ($28 | 0) == ($v_0 | 0);
    if ($cmp114) {
      label = 28;
      break;
    } else {
      label = 29;
      break;
    }
   case 28:
    HEAP32[$arrayidx113 >> 2] = $R_1;
    label = 31;
    break;
   case 29:
    $arrayidx121 = $9 + 20 | 0;
    HEAP32[$arrayidx121 >> 2] = $R_1;
    label = 31;
    break;
   case 30:
    _abort();
    return 0;
    return 0;
   case 31:
    $cmp126 = ($R_1 | 0) == 0;
    if ($cmp126) {
      label = 42;
      break;
    } else {
      label = 32;
      break;
    }
   case 32:
    $29 = $R_1;
    $30 = HEAP32[40820] | 0;
    $cmp130 = $29 >>> 0 < $30 >>> 0;
    if ($cmp130) {
      label = 41;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $parent135 = $R_1 + 24 | 0;
    HEAP32[$parent135 >> 2] = $9;
    $arrayidx137 = $v_0 + 16 | 0;
    $31 = HEAP32[$arrayidx137 >> 2] | 0;
    $cmp138 = ($31 | 0) == 0;
    if ($cmp138) {
      label = 37;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $32 = $31;
    $33 = HEAP32[40820] | 0;
    $cmp142 = $32 >>> 0 < $33 >>> 0;
    if ($cmp142) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $arrayidx148 = $R_1 + 16 | 0;
    HEAP32[$arrayidx148 >> 2] = $31;
    $parent149 = $31 + 24 | 0;
    HEAP32[$parent149 >> 2] = $R_1;
    label = 37;
    break;
   case 36:
    _abort();
    return 0;
    return 0;
   case 37:
    $arrayidx154 = $v_0 + 20 | 0;
    $34 = HEAP32[$arrayidx154 >> 2] | 0;
    $cmp155 = ($34 | 0) == 0;
    if ($cmp155) {
      label = 42;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $35 = $34;
    $36 = HEAP32[40820] | 0;
    $cmp159 = $35 >>> 0 < $36 >>> 0;
    if ($cmp159) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    $arrayidx165 = $R_1 + 20 | 0;
    HEAP32[$arrayidx165 >> 2] = $34;
    $parent166 = $34 + 24 | 0;
    HEAP32[$parent166 >> 2] = $R_1;
    label = 42;
    break;
   case 40:
    _abort();
    return 0;
    return 0;
   case 41:
    _abort();
    return 0;
    return 0;
   case 42:
    $cmp174 = $rsize_0 >>> 0 < 16;
    if ($cmp174) {
      label = 43;
      break;
    } else {
      label = 44;
      break;
    }
   case 43:
    $add177 = $rsize_0 + $nb | 0;
    $or178 = $add177 | 3;
    $head179 = $v_0 + 4 | 0;
    HEAP32[$head179 >> 2] = $or178;
    $add_ptr181_sum = $add177 + 4 | 0;
    $head182 = $6 + $add_ptr181_sum | 0;
    $37 = $head182;
    $38 = HEAP32[$37 >> 2] | 0;
    $or183 = $38 | 1;
    HEAP32[$37 >> 2] = $or183;
    label = 51;
    break;
   case 44:
    $or186 = $nb | 3;
    $head187 = $v_0 + 4 | 0;
    HEAP32[$head187 >> 2] = $or186;
    $or188 = $rsize_0 | 1;
    $add_ptr_sum = $nb + 4 | 0;
    $head189 = $6 + $add_ptr_sum | 0;
    $39 = $head189;
    HEAP32[$39 >> 2] = $or188;
    $add_ptr_sum1 = $rsize_0 + $nb | 0;
    $add_ptr190 = $6 + $add_ptr_sum1 | 0;
    $prev_foot = $add_ptr190;
    HEAP32[$prev_foot >> 2] = $rsize_0;
    $40 = HEAP32[40818] | 0;
    $cmp191 = ($40 | 0) == 0;
    if ($cmp191) {
      label = 50;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $41 = HEAP32[40821] | 0;
    $shr194 = $40 >>> 3;
    $shl195 = $shr194 << 1;
    $arrayidx196 = 163304 + ($shl195 << 2) | 0;
    $42 = $arrayidx196;
    $43 = HEAP32[40816] | 0;
    $shl198 = 1 << $shr194;
    $and199 = $43 & $shl198;
    $tobool200 = ($and199 | 0) == 0;
    if ($tobool200) {
      label = 46;
      break;
    } else {
      label = 47;
      break;
    }
   case 46:
    $or204 = $43 | $shl198;
    HEAP32[40816] = $or204;
    $F197_0 = $42;
    label = 49;
    break;
   case 47:
    $arrayidx196_sum2 = $shl195 + 2 | 0;
    $44 = 163304 + ($arrayidx196_sum2 << 2) | 0;
    $45 = HEAP32[$44 >> 2] | 0;
    $46 = $45;
    $47 = HEAP32[40820] | 0;
    $cmp208 = $46 >>> 0 < $47 >>> 0;
    if ($cmp208) {
      label = 48;
      break;
    } else {
      $F197_0 = $45;
      label = 49;
      break;
    }
   case 48:
    _abort();
    return 0;
    return 0;
   case 49:
    $arrayidx196_sum = $shl195 + 2 | 0;
    $48 = 163304 + ($arrayidx196_sum << 2) | 0;
    HEAP32[$48 >> 2] = $41;
    $bk218 = $F197_0 + 12 | 0;
    HEAP32[$bk218 >> 2] = $41;
    $fd219 = $41 + 8 | 0;
    HEAP32[$fd219 >> 2] = $F197_0;
    $bk220 = $41 + 12 | 0;
    HEAP32[$bk220 >> 2] = $42;
    label = 50;
    break;
   case 50:
    HEAP32[40818] = $rsize_0;
    HEAP32[40821] = $8;
    label = 51;
    break;
   case 51:
    $add_ptr225 = $v_0 + 8 | 0;
    $49 = $add_ptr225;
    return $49 | 0;
   case 52:
    _abort();
    return 0;
    return 0;
  }
  return 0;
}
function _tmalloc_large($nb) {
  $nb = $nb | 0;
  var $sub = 0, $shr = 0, $cmp = 0, $cmp1 = 0, $sub4 = 0, $shr5 = 0, $and = 0, $shl = 0, $sub6 = 0, $shr7 = 0, $and8 = 0, $add = 0, $shl9 = 0, $sub10 = 0, $shr11 = 0, $and12 = 0, $add13 = 0, $sub14 = 0, $shl15 = 0, $shr16 = 0, $add17 = 0, $shl18 = 0, $add19 = 0, $shr20 = 0, $and21 = 0, $add22 = 0, $idx_0 = 0, $arrayidx = 0, $0 = 0, $cmp24 = 0, $cmp26 = 0, $shr27 = 0, $sub30 = 0, $cond = 0, $shl31 = 0, $rst_0 = 0, $sizebits_0 = 0, $t_0 = 0, $rsize_0 = 0, $v_0 = 0, $head = 0, $1 = 0, $and32 = 0, $sub33 = 0, $cmp34 = 0, $cmp36 = 0, $rsize_1 = 0, $v_1 = 0, $arrayidx40 = 0, $2 = 0, $shr41 = 0, $arrayidx44 = 0, $3 = 0, $cmp45 = 0, $cmp46 = 0, $or_cond = 0, $rst_1 = 0, $cmp49 = 0, $shl52 = 0, $t_1 = 0, $rsize_2 = 0, $v_2 = 0, $cmp54 = 0, $cmp56 = 0, $or_cond18 = 0, $shl59 = 0, $sub62 = 0, $or = 0, $4 = 0, $and63 = 0, $cmp64 = 0, $sub66 = 0, $and67 = 0, $sub69 = 0, $shr71 = 0, $and72 = 0, $shr74 = 0, $shr75 = 0, $and76 = 0, $add77 = 0, $shr78 = 0, $shr79 = 0, $and80 = 0, $add81 = 0, $shr82 = 0, $shr83 = 0, $and84 = 0, $add85 = 0, $shr86 = 0, $shr87 = 0, $and88 = 0, $add89 = 0, $shr90 = 0, $add91 = 0, $arrayidx93 = 0, $5 = 0, $t_2_ph = 0, $cmp9623 = 0, $v_326 = 0, $rsize_325 = 0, $t_224 = 0, $head98 = 0, $6 = 0, $and99 = 0, $sub100 = 0, $cmp101 = 0, $sub100_rsize_3 = 0, $t_2_v_3 = 0, $arrayidx105 = 0, $7 = 0, $cmp106 = 0, $arrayidx112 = 0, $8 = 0, $cmp96 = 0, $v_3_lcssa = 0, $rsize_3_lcssa = 0, $cmp115 = 0, $9 = 0, $sub117 = 0, $cmp118 = 0, $10 = 0, $11 = 0, $cmp120 = 0, $add_ptr = 0, $12 = 0, $cmp122 = 0, $parent = 0, $13 = 0, $bk = 0, $14 = 0, $cmp127 = 0, $fd = 0, $15 = 0, $16 = 0, $cmp132 = 0, $bk135 = 0, $17 = 0, $cmp136 = 0, $fd138 = 0, $18 = 0, $cmp139 = 0, $arrayidx150 = 0, $19 = 0, $cmp151 = 0, $arrayidx154 = 0, $20 = 0, $cmp155 = 0, $RP_0 = 0, $R_0 = 0, $arrayidx160 = 0, $21 = 0, $cmp161 = 0, $arrayidx164 = 0, $22 = 0, $cmp165 = 0, $CP_0 = 0, $23 = 0, $24 = 0, $25 = 0, $cmp170 = 0, $R_1 = 0, $cmp179 = 0, $index = 0, $26 = 0, $arrayidx183 = 0, $27 = 0, $cmp184 = 0, $cond20 = 0, $28 = 0, $shl191 = 0, $neg = 0, $29 = 0, $and193 = 0, $30 = 0, $31 = 0, $cmp197 = 0, $arrayidx203 = 0, $32 = 0, $cmp204 = 0, $arrayidx211 = 0, $cmp216 = 0, $33 = 0, $34 = 0, $cmp220 = 0, $parent225 = 0, $arrayidx227 = 0, $35 = 0, $cmp228 = 0, $36 = 0, $37 = 0, $cmp232 = 0, $arrayidx238 = 0, $parent239 = 0, $arrayidx244 = 0, $38 = 0, $cmp245 = 0, $39 = 0, $40 = 0, $cmp249 = 0, $arrayidx255 = 0, $parent256 = 0, $cmp264 = 0, $add267 = 0, $or269 = 0, $head270 = 0, $add_ptr272_sum = 0, $head273 = 0, $41 = 0, $42 = 0, $or274 = 0, $or277 = 0, $head278 = 0, $or279 = 0, $add_ptr_sum = 0, $head280 = 0, $43 = 0, $add_ptr_sum1 = 0, $add_ptr281 = 0, $prev_foot = 0, $shr282 = 0, $cmp283 = 0, $shl287 = 0, $arrayidx288 = 0, $44 = 0, $45 = 0, $shl290 = 0, $and291 = 0, $tobool292 = 0, $or296 = 0, $arrayidx288_sum16 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $cmp300 = 0, $F289_0 = 0, $arrayidx288_sum = 0, $50 = 0, $bk310 = 0, $add_ptr_sum14 = 0, $fd311 = 0, $51 = 0, $add_ptr_sum15 = 0, $bk312 = 0, $52 = 0, $53 = 0, $shr317 = 0, $cmp318 = 0, $cmp322 = 0, $sub328 = 0, $shr329 = 0, $and330 = 0, $shl332 = 0, $sub333 = 0, $shr334 = 0, $and335 = 0, $add336 = 0, $shl337 = 0, $sub338 = 0, $shr339 = 0, $and340 = 0, $add341 = 0, $sub342 = 0, $shl343 = 0, $shr344 = 0, $add345 = 0, $shl346 = 0, $add347 = 0, $shr348 = 0, $and349 = 0, $add350 = 0, $I315_0 = 0, $arrayidx354 = 0, $add_ptr_sum2 = 0, $index355 = 0, $54 = 0, $add_ptr_sum3 = 0, $child356 = 0, $child356_sum = 0, $arrayidx357 = 0, $55 = 0, $arrayidx359 = 0, $56 = 0, $shl361 = 0, $and362 = 0, $tobool363 = 0, $or367 = 0, $57 = 0, $add_ptr_sum4 = 0, $parent368 = 0, $58 = 0, $add_ptr_sum5 = 0, $bk369 = 0, $59 = 0, $add_ptr_sum6 = 0, $fd370 = 0, $60 = 0, $61 = 0, $cmp373 = 0, $shr377 = 0, $sub380 = 0, $cond382 = 0, $shl383 = 0, $T_0 = 0, $K372_0 = 0, $head385 = 0, $62 = 0, $and386 = 0, $cmp387 = 0, $shr390 = 0, $arrayidx393 = 0, $63 = 0, $cmp395 = 0, $shl394 = 0, $64 = 0, $65 = 0, $cmp400 = 0, $add_ptr_sum11 = 0, $parent405 = 0, $66 = 0, $add_ptr_sum12 = 0, $bk406 = 0, $67 = 0, $add_ptr_sum13 = 0, $fd407 = 0, $68 = 0, $fd412 = 0, $69 = 0, $70 = 0, $71 = 0, $cmp414 = 0, $72 = 0, $cmp418 = 0, $bk425 = 0, $add_ptr_sum8 = 0, $fd427 = 0, $73 = 0, $add_ptr_sum9 = 0, $bk428 = 0, $74 = 0, $add_ptr_sum10 = 0, $parent429 = 0, $75 = 0, $add_ptr436 = 0, $76 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sub = -$nb | 0;
    $shr = $nb >>> 8;
    $cmp = ($shr | 0) == 0;
    if ($cmp) {
      $idx_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $cmp1 = $nb >>> 0 > 16777215;
    if ($cmp1) {
      $idx_0 = 31;
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $sub4 = $shr + 1048320 | 0;
    $shr5 = $sub4 >>> 16;
    $and = $shr5 & 8;
    $shl = $shr << $and;
    $sub6 = $shl + 520192 | 0;
    $shr7 = $sub6 >>> 16;
    $and8 = $shr7 & 4;
    $add = $and8 | $and;
    $shl9 = $shl << $and8;
    $sub10 = $shl9 + 245760 | 0;
    $shr11 = $sub10 >>> 16;
    $and12 = $shr11 & 2;
    $add13 = $add | $and12;
    $sub14 = 14 - $add13 | 0;
    $shl15 = $shl9 << $and12;
    $shr16 = $shl15 >>> 15;
    $add17 = $sub14 + $shr16 | 0;
    $shl18 = $add17 << 1;
    $add19 = $add17 + 7 | 0;
    $shr20 = $nb >>> ($add19 >>> 0);
    $and21 = $shr20 & 1;
    $add22 = $and21 | $shl18;
    $idx_0 = $add22;
    label = 5;
    break;
   case 5:
    $arrayidx = 163568 + ($idx_0 << 2) | 0;
    $0 = HEAP32[$arrayidx >> 2] | 0;
    $cmp24 = ($0 | 0) == 0;
    if ($cmp24) {
      $v_2 = 0;
      $rsize_2 = $sub;
      $t_1 = 0;
      label = 12;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp26 = ($idx_0 | 0) == 31;
    if ($cmp26) {
      $cond = 0;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $shr27 = $idx_0 >>> 1;
    $sub30 = 25 - $shr27 | 0;
    $cond = $sub30;
    label = 8;
    break;
   case 8:
    $shl31 = $nb << $cond;
    $v_0 = 0;
    $rsize_0 = $sub;
    $t_0 = $0;
    $sizebits_0 = $shl31;
    $rst_0 = 0;
    label = 9;
    break;
   case 9:
    $head = $t_0 + 4 | 0;
    $1 = HEAP32[$head >> 2] | 0;
    $and32 = $1 & -8;
    $sub33 = $and32 - $nb | 0;
    $cmp34 = $sub33 >>> 0 < $rsize_0 >>> 0;
    if ($cmp34) {
      label = 10;
      break;
    } else {
      $v_1 = $v_0;
      $rsize_1 = $rsize_0;
      label = 11;
      break;
    }
   case 10:
    $cmp36 = ($and32 | 0) == ($nb | 0);
    if ($cmp36) {
      $v_2 = $t_0;
      $rsize_2 = $sub33;
      $t_1 = $t_0;
      label = 12;
      break;
    } else {
      $v_1 = $t_0;
      $rsize_1 = $sub33;
      label = 11;
      break;
    }
   case 11:
    $arrayidx40 = $t_0 + 20 | 0;
    $2 = HEAP32[$arrayidx40 >> 2] | 0;
    $shr41 = $sizebits_0 >>> 31;
    $arrayidx44 = $t_0 + 16 + ($shr41 << 2) | 0;
    $3 = HEAP32[$arrayidx44 >> 2] | 0;
    $cmp45 = ($2 | 0) == 0;
    $cmp46 = ($2 | 0) == ($3 | 0);
    $or_cond = $cmp45 | $cmp46;
    $rst_1 = $or_cond ? $rst_0 : $2;
    $cmp49 = ($3 | 0) == 0;
    $shl52 = $sizebits_0 << 1;
    if ($cmp49) {
      $v_2 = $v_1;
      $rsize_2 = $rsize_1;
      $t_1 = $rst_1;
      label = 12;
      break;
    } else {
      $v_0 = $v_1;
      $rsize_0 = $rsize_1;
      $t_0 = $3;
      $sizebits_0 = $shl52;
      $rst_0 = $rst_1;
      label = 9;
      break;
    }
   case 12:
    $cmp54 = ($t_1 | 0) == 0;
    $cmp56 = ($v_2 | 0) == 0;
    $or_cond18 = $cmp54 & $cmp56;
    if ($or_cond18) {
      label = 13;
      break;
    } else {
      $t_2_ph = $t_1;
      label = 15;
      break;
    }
   case 13:
    $shl59 = 2 << $idx_0;
    $sub62 = -$shl59 | 0;
    $or = $shl59 | $sub62;
    $4 = HEAP32[40817] | 0;
    $and63 = $4 & $or;
    $cmp64 = ($and63 | 0) == 0;
    if ($cmp64) {
      $t_2_ph = $t_1;
      label = 15;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $sub66 = -$and63 | 0;
    $and67 = $and63 & $sub66;
    $sub69 = $and67 - 1 | 0;
    $shr71 = $sub69 >>> 12;
    $and72 = $shr71 & 16;
    $shr74 = $sub69 >>> ($and72 >>> 0);
    $shr75 = $shr74 >>> 5;
    $and76 = $shr75 & 8;
    $add77 = $and76 | $and72;
    $shr78 = $shr74 >>> ($and76 >>> 0);
    $shr79 = $shr78 >>> 2;
    $and80 = $shr79 & 4;
    $add81 = $add77 | $and80;
    $shr82 = $shr78 >>> ($and80 >>> 0);
    $shr83 = $shr82 >>> 1;
    $and84 = $shr83 & 2;
    $add85 = $add81 | $and84;
    $shr86 = $shr82 >>> ($and84 >>> 0);
    $shr87 = $shr86 >>> 1;
    $and88 = $shr87 & 1;
    $add89 = $add85 | $and88;
    $shr90 = $shr86 >>> ($and88 >>> 0);
    $add91 = $add89 + $shr90 | 0;
    $arrayidx93 = 163568 + ($add91 << 2) | 0;
    $5 = HEAP32[$arrayidx93 >> 2] | 0;
    $t_2_ph = $5;
    label = 15;
    break;
   case 15:
    $cmp9623 = ($t_2_ph | 0) == 0;
    if ($cmp9623) {
      $rsize_3_lcssa = $rsize_2;
      $v_3_lcssa = $v_2;
      label = 18;
      break;
    } else {
      $t_224 = $t_2_ph;
      $rsize_325 = $rsize_2;
      $v_326 = $v_2;
      label = 16;
      break;
    }
   case 16:
    $head98 = $t_224 + 4 | 0;
    $6 = HEAP32[$head98 >> 2] | 0;
    $and99 = $6 & -8;
    $sub100 = $and99 - $nb | 0;
    $cmp101 = $sub100 >>> 0 < $rsize_325 >>> 0;
    $sub100_rsize_3 = $cmp101 ? $sub100 : $rsize_325;
    $t_2_v_3 = $cmp101 ? $t_224 : $v_326;
    $arrayidx105 = $t_224 + 16 | 0;
    $7 = HEAP32[$arrayidx105 >> 2] | 0;
    $cmp106 = ($7 | 0) == 0;
    if ($cmp106) {
      label = 17;
      break;
    } else {
      $t_224 = $7;
      $rsize_325 = $sub100_rsize_3;
      $v_326 = $t_2_v_3;
      label = 16;
      break;
    }
   case 17:
    $arrayidx112 = $t_224 + 20 | 0;
    $8 = HEAP32[$arrayidx112 >> 2] | 0;
    $cmp96 = ($8 | 0) == 0;
    if ($cmp96) {
      $rsize_3_lcssa = $sub100_rsize_3;
      $v_3_lcssa = $t_2_v_3;
      label = 18;
      break;
    } else {
      $t_224 = $8;
      $rsize_325 = $sub100_rsize_3;
      $v_326 = $t_2_v_3;
      label = 16;
      break;
    }
   case 18:
    $cmp115 = ($v_3_lcssa | 0) == 0;
    if ($cmp115) {
      $retval_0 = 0;
      label = 83;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $9 = HEAP32[40818] | 0;
    $sub117 = $9 - $nb | 0;
    $cmp118 = $rsize_3_lcssa >>> 0 < $sub117 >>> 0;
    if ($cmp118) {
      label = 20;
      break;
    } else {
      $retval_0 = 0;
      label = 83;
      break;
    }
   case 20:
    $10 = $v_3_lcssa;
    $11 = HEAP32[40820] | 0;
    $cmp120 = $10 >>> 0 < $11 >>> 0;
    if ($cmp120) {
      label = 82;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $add_ptr = $10 + $nb | 0;
    $12 = $add_ptr;
    $cmp122 = $10 >>> 0 < $add_ptr >>> 0;
    if ($cmp122) {
      label = 22;
      break;
    } else {
      label = 82;
      break;
    }
   case 22:
    $parent = $v_3_lcssa + 24 | 0;
    $13 = HEAP32[$parent >> 2] | 0;
    $bk = $v_3_lcssa + 12 | 0;
    $14 = HEAP32[$bk >> 2] | 0;
    $cmp127 = ($14 | 0) == ($v_3_lcssa | 0);
    if ($cmp127) {
      label = 28;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $fd = $v_3_lcssa + 8 | 0;
    $15 = HEAP32[$fd >> 2] | 0;
    $16 = $15;
    $cmp132 = $16 >>> 0 < $11 >>> 0;
    if ($cmp132) {
      label = 27;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $bk135 = $15 + 12 | 0;
    $17 = HEAP32[$bk135 >> 2] | 0;
    $cmp136 = ($17 | 0) == ($v_3_lcssa | 0);
    if ($cmp136) {
      label = 25;
      break;
    } else {
      label = 27;
      break;
    }
   case 25:
    $fd138 = $14 + 8 | 0;
    $18 = HEAP32[$fd138 >> 2] | 0;
    $cmp139 = ($18 | 0) == ($v_3_lcssa | 0);
    if ($cmp139) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    HEAP32[$bk135 >> 2] = $14;
    HEAP32[$fd138 >> 2] = $15;
    $R_1 = $14;
    label = 36;
    break;
   case 27:
    _abort();
    return 0;
    return 0;
   case 28:
    $arrayidx150 = $v_3_lcssa + 20 | 0;
    $19 = HEAP32[$arrayidx150 >> 2] | 0;
    $cmp151 = ($19 | 0) == 0;
    if ($cmp151) {
      label = 29;
      break;
    } else {
      $R_0 = $19;
      $RP_0 = $arrayidx150;
      label = 30;
      break;
    }
   case 29:
    $arrayidx154 = $v_3_lcssa + 16 | 0;
    $20 = HEAP32[$arrayidx154 >> 2] | 0;
    $cmp155 = ($20 | 0) == 0;
    if ($cmp155) {
      $R_1 = 0;
      label = 36;
      break;
    } else {
      $R_0 = $20;
      $RP_0 = $arrayidx154;
      label = 30;
      break;
    }
   case 30:
    $arrayidx160 = $R_0 + 20 | 0;
    $21 = HEAP32[$arrayidx160 >> 2] | 0;
    $cmp161 = ($21 | 0) == 0;
    if ($cmp161) {
      label = 31;
      break;
    } else {
      $CP_0 = $arrayidx160;
      label = 32;
      break;
    }
   case 31:
    $arrayidx164 = $R_0 + 16 | 0;
    $22 = HEAP32[$arrayidx164 >> 2] | 0;
    $cmp165 = ($22 | 0) == 0;
    if ($cmp165) {
      label = 33;
      break;
    } else {
      $CP_0 = $arrayidx164;
      label = 32;
      break;
    }
   case 32:
    $23 = HEAP32[$CP_0 >> 2] | 0;
    $R_0 = $23;
    $RP_0 = $CP_0;
    label = 30;
    break;
   case 33:
    $24 = $RP_0;
    $25 = HEAP32[40820] | 0;
    $cmp170 = $24 >>> 0 < $25 >>> 0;
    if ($cmp170) {
      label = 35;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    HEAP32[$RP_0 >> 2] = 0;
    $R_1 = $R_0;
    label = 36;
    break;
   case 35:
    _abort();
    return 0;
    return 0;
   case 36:
    $cmp179 = ($13 | 0) == 0;
    if ($cmp179) {
      label = 56;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $index = $v_3_lcssa + 28 | 0;
    $26 = HEAP32[$index >> 2] | 0;
    $arrayidx183 = 163568 + ($26 << 2) | 0;
    $27 = HEAP32[$arrayidx183 >> 2] | 0;
    $cmp184 = ($v_3_lcssa | 0) == ($27 | 0);
    if ($cmp184) {
      label = 38;
      break;
    } else {
      label = 40;
      break;
    }
   case 38:
    HEAP32[$arrayidx183 >> 2] = $R_1;
    $cond20 = ($R_1 | 0) == 0;
    if ($cond20) {
      label = 39;
      break;
    } else {
      label = 46;
      break;
    }
   case 39:
    $28 = HEAP32[$index >> 2] | 0;
    $shl191 = 1 << $28;
    $neg = $shl191 ^ -1;
    $29 = HEAP32[40817] | 0;
    $and193 = $29 & $neg;
    HEAP32[40817] = $and193;
    label = 56;
    break;
   case 40:
    $30 = $13;
    $31 = HEAP32[40820] | 0;
    $cmp197 = $30 >>> 0 < $31 >>> 0;
    if ($cmp197) {
      label = 44;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $arrayidx203 = $13 + 16 | 0;
    $32 = HEAP32[$arrayidx203 >> 2] | 0;
    $cmp204 = ($32 | 0) == ($v_3_lcssa | 0);
    if ($cmp204) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    HEAP32[$arrayidx203 >> 2] = $R_1;
    label = 45;
    break;
   case 43:
    $arrayidx211 = $13 + 20 | 0;
    HEAP32[$arrayidx211 >> 2] = $R_1;
    label = 45;
    break;
   case 44:
    _abort();
    return 0;
    return 0;
   case 45:
    $cmp216 = ($R_1 | 0) == 0;
    if ($cmp216) {
      label = 56;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $33 = $R_1;
    $34 = HEAP32[40820] | 0;
    $cmp220 = $33 >>> 0 < $34 >>> 0;
    if ($cmp220) {
      label = 55;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $parent225 = $R_1 + 24 | 0;
    HEAP32[$parent225 >> 2] = $13;
    $arrayidx227 = $v_3_lcssa + 16 | 0;
    $35 = HEAP32[$arrayidx227 >> 2] | 0;
    $cmp228 = ($35 | 0) == 0;
    if ($cmp228) {
      label = 51;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $36 = $35;
    $37 = HEAP32[40820] | 0;
    $cmp232 = $36 >>> 0 < $37 >>> 0;
    if ($cmp232) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $arrayidx238 = $R_1 + 16 | 0;
    HEAP32[$arrayidx238 >> 2] = $35;
    $parent239 = $35 + 24 | 0;
    HEAP32[$parent239 >> 2] = $R_1;
    label = 51;
    break;
   case 50:
    _abort();
    return 0;
    return 0;
   case 51:
    $arrayidx244 = $v_3_lcssa + 20 | 0;
    $38 = HEAP32[$arrayidx244 >> 2] | 0;
    $cmp245 = ($38 | 0) == 0;
    if ($cmp245) {
      label = 56;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $39 = $38;
    $40 = HEAP32[40820] | 0;
    $cmp249 = $39 >>> 0 < $40 >>> 0;
    if ($cmp249) {
      label = 54;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $arrayidx255 = $R_1 + 20 | 0;
    HEAP32[$arrayidx255 >> 2] = $38;
    $parent256 = $38 + 24 | 0;
    HEAP32[$parent256 >> 2] = $R_1;
    label = 56;
    break;
   case 54:
    _abort();
    return 0;
    return 0;
   case 55:
    _abort();
    return 0;
    return 0;
   case 56:
    $cmp264 = $rsize_3_lcssa >>> 0 < 16;
    if ($cmp264) {
      label = 57;
      break;
    } else {
      label = 58;
      break;
    }
   case 57:
    $add267 = $rsize_3_lcssa + $nb | 0;
    $or269 = $add267 | 3;
    $head270 = $v_3_lcssa + 4 | 0;
    HEAP32[$head270 >> 2] = $or269;
    $add_ptr272_sum = $add267 + 4 | 0;
    $head273 = $10 + $add_ptr272_sum | 0;
    $41 = $head273;
    $42 = HEAP32[$41 >> 2] | 0;
    $or274 = $42 | 1;
    HEAP32[$41 >> 2] = $or274;
    label = 81;
    break;
   case 58:
    $or277 = $nb | 3;
    $head278 = $v_3_lcssa + 4 | 0;
    HEAP32[$head278 >> 2] = $or277;
    $or279 = $rsize_3_lcssa | 1;
    $add_ptr_sum = $nb + 4 | 0;
    $head280 = $10 + $add_ptr_sum | 0;
    $43 = $head280;
    HEAP32[$43 >> 2] = $or279;
    $add_ptr_sum1 = $rsize_3_lcssa + $nb | 0;
    $add_ptr281 = $10 + $add_ptr_sum1 | 0;
    $prev_foot = $add_ptr281;
    HEAP32[$prev_foot >> 2] = $rsize_3_lcssa;
    $shr282 = $rsize_3_lcssa >>> 3;
    $cmp283 = $rsize_3_lcssa >>> 0 < 256;
    if ($cmp283) {
      label = 59;
      break;
    } else {
      label = 64;
      break;
    }
   case 59:
    $shl287 = $shr282 << 1;
    $arrayidx288 = 163304 + ($shl287 << 2) | 0;
    $44 = $arrayidx288;
    $45 = HEAP32[40816] | 0;
    $shl290 = 1 << $shr282;
    $and291 = $45 & $shl290;
    $tobool292 = ($and291 | 0) == 0;
    if ($tobool292) {
      label = 60;
      break;
    } else {
      label = 61;
      break;
    }
   case 60:
    $or296 = $45 | $shl290;
    HEAP32[40816] = $or296;
    $F289_0 = $44;
    label = 63;
    break;
   case 61:
    $arrayidx288_sum16 = $shl287 + 2 | 0;
    $46 = 163304 + ($arrayidx288_sum16 << 2) | 0;
    $47 = HEAP32[$46 >> 2] | 0;
    $48 = $47;
    $49 = HEAP32[40820] | 0;
    $cmp300 = $48 >>> 0 < $49 >>> 0;
    if ($cmp300) {
      label = 62;
      break;
    } else {
      $F289_0 = $47;
      label = 63;
      break;
    }
   case 62:
    _abort();
    return 0;
    return 0;
   case 63:
    $arrayidx288_sum = $shl287 + 2 | 0;
    $50 = 163304 + ($arrayidx288_sum << 2) | 0;
    HEAP32[$50 >> 2] = $12;
    $bk310 = $F289_0 + 12 | 0;
    HEAP32[$bk310 >> 2] = $12;
    $add_ptr_sum14 = $nb + 8 | 0;
    $fd311 = $10 + $add_ptr_sum14 | 0;
    $51 = $fd311;
    HEAP32[$51 >> 2] = $F289_0;
    $add_ptr_sum15 = $nb + 12 | 0;
    $bk312 = $10 + $add_ptr_sum15 | 0;
    $52 = $bk312;
    HEAP32[$52 >> 2] = $44;
    label = 81;
    break;
   case 64:
    $53 = $add_ptr;
    $shr317 = $rsize_3_lcssa >>> 8;
    $cmp318 = ($shr317 | 0) == 0;
    if ($cmp318) {
      $I315_0 = 0;
      label = 67;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $cmp322 = $rsize_3_lcssa >>> 0 > 16777215;
    if ($cmp322) {
      $I315_0 = 31;
      label = 67;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    $sub328 = $shr317 + 1048320 | 0;
    $shr329 = $sub328 >>> 16;
    $and330 = $shr329 & 8;
    $shl332 = $shr317 << $and330;
    $sub333 = $shl332 + 520192 | 0;
    $shr334 = $sub333 >>> 16;
    $and335 = $shr334 & 4;
    $add336 = $and335 | $and330;
    $shl337 = $shl332 << $and335;
    $sub338 = $shl337 + 245760 | 0;
    $shr339 = $sub338 >>> 16;
    $and340 = $shr339 & 2;
    $add341 = $add336 | $and340;
    $sub342 = 14 - $add341 | 0;
    $shl343 = $shl337 << $and340;
    $shr344 = $shl343 >>> 15;
    $add345 = $sub342 + $shr344 | 0;
    $shl346 = $add345 << 1;
    $add347 = $add345 + 7 | 0;
    $shr348 = $rsize_3_lcssa >>> ($add347 >>> 0);
    $and349 = $shr348 & 1;
    $add350 = $and349 | $shl346;
    $I315_0 = $add350;
    label = 67;
    break;
   case 67:
    $arrayidx354 = 163568 + ($I315_0 << 2) | 0;
    $add_ptr_sum2 = $nb + 28 | 0;
    $index355 = $10 + $add_ptr_sum2 | 0;
    $54 = $index355;
    HEAP32[$54 >> 2] = $I315_0;
    $add_ptr_sum3 = $nb + 16 | 0;
    $child356 = $10 + $add_ptr_sum3 | 0;
    $child356_sum = $nb + 20 | 0;
    $arrayidx357 = $10 + $child356_sum | 0;
    $55 = $arrayidx357;
    HEAP32[$55 >> 2] = 0;
    $arrayidx359 = $child356;
    HEAP32[$arrayidx359 >> 2] = 0;
    $56 = HEAP32[40817] | 0;
    $shl361 = 1 << $I315_0;
    $and362 = $56 & $shl361;
    $tobool363 = ($and362 | 0) == 0;
    if ($tobool363) {
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 68:
    $or367 = $56 | $shl361;
    HEAP32[40817] = $or367;
    HEAP32[$arrayidx354 >> 2] = $53;
    $57 = $arrayidx354;
    $add_ptr_sum4 = $nb + 24 | 0;
    $parent368 = $10 + $add_ptr_sum4 | 0;
    $58 = $parent368;
    HEAP32[$58 >> 2] = $57;
    $add_ptr_sum5 = $nb + 12 | 0;
    $bk369 = $10 + $add_ptr_sum5 | 0;
    $59 = $bk369;
    HEAP32[$59 >> 2] = $53;
    $add_ptr_sum6 = $nb + 8 | 0;
    $fd370 = $10 + $add_ptr_sum6 | 0;
    $60 = $fd370;
    HEAP32[$60 >> 2] = $53;
    label = 81;
    break;
   case 69:
    $61 = HEAP32[$arrayidx354 >> 2] | 0;
    $cmp373 = ($I315_0 | 0) == 31;
    if ($cmp373) {
      $cond382 = 0;
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $shr377 = $I315_0 >>> 1;
    $sub380 = 25 - $shr377 | 0;
    $cond382 = $sub380;
    label = 71;
    break;
   case 71:
    $shl383 = $rsize_3_lcssa << $cond382;
    $K372_0 = $shl383;
    $T_0 = $61;
    label = 72;
    break;
   case 72:
    $head385 = $T_0 + 4 | 0;
    $62 = HEAP32[$head385 >> 2] | 0;
    $and386 = $62 & -8;
    $cmp387 = ($and386 | 0) == ($rsize_3_lcssa | 0);
    if ($cmp387) {
      label = 77;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $shr390 = $K372_0 >>> 31;
    $arrayidx393 = $T_0 + 16 + ($shr390 << 2) | 0;
    $63 = HEAP32[$arrayidx393 >> 2] | 0;
    $cmp395 = ($63 | 0) == 0;
    $shl394 = $K372_0 << 1;
    if ($cmp395) {
      label = 74;
      break;
    } else {
      $K372_0 = $shl394;
      $T_0 = $63;
      label = 72;
      break;
    }
   case 74:
    $64 = $arrayidx393;
    $65 = HEAP32[40820] | 0;
    $cmp400 = $64 >>> 0 < $65 >>> 0;
    if ($cmp400) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    HEAP32[$arrayidx393 >> 2] = $53;
    $add_ptr_sum11 = $nb + 24 | 0;
    $parent405 = $10 + $add_ptr_sum11 | 0;
    $66 = $parent405;
    HEAP32[$66 >> 2] = $T_0;
    $add_ptr_sum12 = $nb + 12 | 0;
    $bk406 = $10 + $add_ptr_sum12 | 0;
    $67 = $bk406;
    HEAP32[$67 >> 2] = $53;
    $add_ptr_sum13 = $nb + 8 | 0;
    $fd407 = $10 + $add_ptr_sum13 | 0;
    $68 = $fd407;
    HEAP32[$68 >> 2] = $53;
    label = 81;
    break;
   case 76:
    _abort();
    return 0;
    return 0;
   case 77:
    $fd412 = $T_0 + 8 | 0;
    $69 = HEAP32[$fd412 >> 2] | 0;
    $70 = $T_0;
    $71 = HEAP32[40820] | 0;
    $cmp414 = $70 >>> 0 < $71 >>> 0;
    if ($cmp414) {
      label = 80;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $72 = $69;
    $cmp418 = $72 >>> 0 < $71 >>> 0;
    if ($cmp418) {
      label = 80;
      break;
    } else {
      label = 79;
      break;
    }
   case 79:
    $bk425 = $69 + 12 | 0;
    HEAP32[$bk425 >> 2] = $53;
    HEAP32[$fd412 >> 2] = $53;
    $add_ptr_sum8 = $nb + 8 | 0;
    $fd427 = $10 + $add_ptr_sum8 | 0;
    $73 = $fd427;
    HEAP32[$73 >> 2] = $69;
    $add_ptr_sum9 = $nb + 12 | 0;
    $bk428 = $10 + $add_ptr_sum9 | 0;
    $74 = $bk428;
    HEAP32[$74 >> 2] = $T_0;
    $add_ptr_sum10 = $nb + 24 | 0;
    $parent429 = $10 + $add_ptr_sum10 | 0;
    $75 = $parent429;
    HEAP32[$75 >> 2] = 0;
    label = 81;
    break;
   case 80:
    _abort();
    return 0;
    return 0;
   case 81:
    $add_ptr436 = $v_3_lcssa + 8 | 0;
    $76 = $add_ptr436;
    $retval_0 = $76;
    label = 83;
    break;
   case 82:
    _abort();
    return 0;
    return 0;
   case 83:
    return $retval_0 | 0;
  }
  return 0;
}
function _sys_alloc($nb) {
  $nb = $nb | 0;
  var $0 = 0, $cmp = 0, $add = 0, $1 = 0, $sub = 0, $add9 = 0, $neg = 0, $and11 = 0, $cmp12 = 0, $2 = 0, $cmp15 = 0, $3 = 0, $add17 = 0, $cmp19 = 0, $cmp21 = 0, $or_cond1 = 0, $4 = 0, $and26 = 0, $tobool27 = 0, $5 = 0, $cmp29 = 0, $6 = 0, $call31 = 0, $cmp32 = 0, $call34 = 0, $cmp35 = 0, $7 = 0, $8 = 0, $sub38 = 0, $and39 = 0, $cmp40 = 0, $add43 = 0, $neg45 = 0, $and46 = 0, $sub47 = 0, $add48 = 0, $ssize_0 = 0, $9 = 0, $add51 = 0, $cmp52 = 0, $cmp54 = 0, $or_cond = 0, $10 = 0, $cmp57 = 0, $cmp60 = 0, $cmp63 = 0, $or_cond2 = 0, $call65 = 0, $cmp66 = 0, $ssize_0_ = 0, $call34_ = 0, $11 = 0, $12 = 0, $sub71 = 0, $sub73 = 0, $add74 = 0, $neg76 = 0, $and77 = 0, $cmp78 = 0, $call80 = 0, $base81 = 0, $13 = 0, $size = 0, $14 = 0, $add_ptr = 0, $cmp82 = 0, $and77_ = 0, $call80_ = 0, $ssize_1 = 0, $br_0 = 0, $tsize_0 = 0, $tbase_0 = 0, $sub109 = 0, $cmp86 = 0, $cmp88 = 0, $cmp90 = 0, $or_cond3 = 0, $cmp93 = 0, $or_cond4 = 0, $15 = 0, $sub97 = 0, $sub96 = 0, $add98 = 0, $neg100 = 0, $and101 = 0, $cmp102 = 0, $call104 = 0, $cmp105 = 0, $add107 = 0, $call110 = 0, $ssize_2 = 0, $cmp115 = 0, $tsize_0132123 = 0, $16 = 0, $or = 0, $tsize_1 = 0, $cmp124 = 0, $call128 = 0, $call129 = 0, $notlhs = 0, $notrhs = 0, $or_cond6_not = 0, $cmp134 = 0, $or_cond7 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $add137 = 0, $cmp138 = 0, $sub_ptr_sub_tsize_1 = 0, $call128_tbase_1 = 0, $cmp144 = 0, $tbase_230 = 0, $tsize_229 = 0, $17 = 0, $add147 = 0, $18 = 0, $cmp148 = 0, $19 = 0, $cmp154 = 0, $20 = 0, $cmp156 = 0, $cmp159 = 0, $or_cond8 = 0, $21 = 0, $22 = 0, $sub169 = 0, $sp_038 = 0, $base184 = 0, $23 = 0, $size185 = 0, $24 = 0, $add_ptr186 = 0, $cmp187 = 0, $next = 0, $25 = 0, $cmp183 = 0, $sflags190 = 0, $26 = 0, $and191 = 0, $tobool192 = 0, $27 = 0, $28 = 0, $cmp200 = 0, $cmp206 = 0, $or_cond31 = 0, $add209 = 0, $29 = 0, $30 = 0, $add212 = 0, $31 = 0, $cmp215 = 0, $add_ptr224 = 0, $sp_134 = 0, $base223 = 0, $32 = 0, $cmp225 = 0, $next228 = 0, $33 = 0, $cmp221 = 0, $sflags232 = 0, $34 = 0, $and233 = 0, $tobool234 = 0, $size242 = 0, $35 = 0, $add243 = 0, $call244 = 0, $36 = 0, $cmp250 = 0, $sub253 = 0, $37 = 0, $38 = 0, $add_ptr255 = 0, $39 = 0, $or257 = 0, $add_ptr255_sum = 0, $head258 = 0, $40 = 0, $or260 = 0, $head261 = 0, $add_ptr262 = 0, $41 = 0, $call265 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2802] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _init_mparams();
    label = 4;
    break;
   case 4:
    $add = $nb + 48 | 0;
    $1 = HEAP32[2804] | 0;
    $sub = $nb + 47 | 0;
    $add9 = $sub + $1 | 0;
    $neg = -$1 | 0;
    $and11 = $add9 & $neg;
    $cmp12 = $and11 >>> 0 > $nb >>> 0;
    if ($cmp12) {
      label = 5;
      break;
    } else {
      $retval_0 = 0;
      label = 52;
      break;
    }
   case 5:
    $2 = HEAP32[40926] | 0;
    $cmp15 = ($2 | 0) == 0;
    if ($cmp15) {
      label = 7;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $3 = HEAP32[40924] | 0;
    $add17 = $3 + $and11 | 0;
    $cmp19 = $add17 >>> 0 <= $3 >>> 0;
    $cmp21 = $add17 >>> 0 > $2 >>> 0;
    $or_cond1 = $cmp19 | $cmp21;
    if ($or_cond1) {
      $retval_0 = 0;
      label = 52;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $4 = HEAP32[40927] | 0;
    $and26 = $4 & 4;
    $tobool27 = ($and26 | 0) == 0;
    if ($tobool27) {
      label = 8;
      break;
    } else {
      $tsize_1 = 0;
      label = 27;
      break;
    }
   case 8:
    $5 = HEAP32[40822] | 0;
    $cmp29 = ($5 | 0) == 0;
    if ($cmp29) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $6 = $5;
    $call31 = _segment_holding($6) | 0;
    $cmp32 = ($call31 | 0) == 0;
    if ($cmp32) {
      label = 10;
      break;
    } else {
      label = 17;
      break;
    }
   case 10:
    $call34 = _sbrk(0) | 0;
    $cmp35 = ($call34 | 0) == -1;
    if ($cmp35) {
      $tsize_0132123 = 0;
      label = 26;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $7 = $call34;
    $8 = HEAP32[2803] | 0;
    $sub38 = $8 - 1 | 0;
    $and39 = $sub38 & $7;
    $cmp40 = ($and39 | 0) == 0;
    if ($cmp40) {
      $ssize_0 = $and11;
      label = 13;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $add43 = $sub38 + $7 | 0;
    $neg45 = -$8 | 0;
    $and46 = $add43 & $neg45;
    $sub47 = $and11 - $7 | 0;
    $add48 = $sub47 + $and46 | 0;
    $ssize_0 = $add48;
    label = 13;
    break;
   case 13:
    $9 = HEAP32[40924] | 0;
    $add51 = $9 + $ssize_0 | 0;
    $cmp52 = $ssize_0 >>> 0 > $nb >>> 0;
    $cmp54 = $ssize_0 >>> 0 < 2147483647;
    $or_cond = $cmp52 & $cmp54;
    if ($or_cond) {
      label = 14;
      break;
    } else {
      $tsize_0132123 = 0;
      label = 26;
      break;
    }
   case 14:
    $10 = HEAP32[40926] | 0;
    $cmp57 = ($10 | 0) == 0;
    if ($cmp57) {
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $cmp60 = $add51 >>> 0 <= $9 >>> 0;
    $cmp63 = $add51 >>> 0 > $10 >>> 0;
    $or_cond2 = $cmp60 | $cmp63;
    if ($or_cond2) {
      $tsize_0132123 = 0;
      label = 26;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $call65 = _sbrk($ssize_0 | 0) | 0;
    $cmp66 = ($call65 | 0) == ($call34 | 0);
    $ssize_0_ = $cmp66 ? $ssize_0 : 0;
    $call34_ = $cmp66 ? $call34 : -1;
    $tbase_0 = $call34_;
    $tsize_0 = $ssize_0_;
    $br_0 = $call65;
    $ssize_1 = $ssize_0;
    label = 19;
    break;
   case 17:
    $11 = HEAP32[40819] | 0;
    $12 = HEAP32[2804] | 0;
    $sub71 = $nb + 47 | 0;
    $sub73 = $sub71 - $11 | 0;
    $add74 = $sub73 + $12 | 0;
    $neg76 = -$12 | 0;
    $and77 = $add74 & $neg76;
    $cmp78 = $and77 >>> 0 < 2147483647;
    if ($cmp78) {
      label = 18;
      break;
    } else {
      $tsize_0132123 = 0;
      label = 26;
      break;
    }
   case 18:
    $call80 = _sbrk($and77 | 0) | 0;
    $base81 = $call31 | 0;
    $13 = HEAP32[$base81 >> 2] | 0;
    $size = $call31 + 4 | 0;
    $14 = HEAP32[$size >> 2] | 0;
    $add_ptr = $13 + $14 | 0;
    $cmp82 = ($call80 | 0) == ($add_ptr | 0);
    $and77_ = $cmp82 ? $and77 : 0;
    $call80_ = $cmp82 ? $call80 : -1;
    $tbase_0 = $call80_;
    $tsize_0 = $and77_;
    $br_0 = $call80;
    $ssize_1 = $and77;
    label = 19;
    break;
   case 19:
    $sub109 = -$ssize_1 | 0;
    $cmp86 = ($tbase_0 | 0) == -1;
    if ($cmp86) {
      label = 20;
      break;
    } else {
      $tsize_229 = $tsize_0;
      $tbase_230 = $tbase_0;
      label = 30;
      break;
    }
   case 20:
    $cmp88 = ($br_0 | 0) != -1;
    $cmp90 = $ssize_1 >>> 0 < 2147483647;
    $or_cond3 = $cmp88 & $cmp90;
    $cmp93 = $ssize_1 >>> 0 < $add >>> 0;
    $or_cond4 = $or_cond3 & $cmp93;
    if ($or_cond4) {
      label = 21;
      break;
    } else {
      $ssize_2 = $ssize_1;
      label = 25;
      break;
    }
   case 21:
    $15 = HEAP32[2804] | 0;
    $sub97 = $nb + 47 | 0;
    $sub96 = $sub97 - $ssize_1 | 0;
    $add98 = $sub96 + $15 | 0;
    $neg100 = -$15 | 0;
    $and101 = $add98 & $neg100;
    $cmp102 = $and101 >>> 0 < 2147483647;
    if ($cmp102) {
      label = 22;
      break;
    } else {
      $ssize_2 = $ssize_1;
      label = 25;
      break;
    }
   case 22:
    $call104 = _sbrk($and101 | 0) | 0;
    $cmp105 = ($call104 | 0) == -1;
    if ($cmp105) {
      label = 24;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $add107 = $and101 + $ssize_1 | 0;
    $ssize_2 = $add107;
    label = 25;
    break;
   case 24:
    $call110 = _sbrk($sub109 | 0) | 0;
    $tsize_0132123 = $tsize_0;
    label = 26;
    break;
   case 25:
    $cmp115 = ($br_0 | 0) == -1;
    if ($cmp115) {
      $tsize_0132123 = $tsize_0;
      label = 26;
      break;
    } else {
      $tsize_229 = $ssize_2;
      $tbase_230 = $br_0;
      label = 30;
      break;
    }
   case 26:
    $16 = HEAP32[40927] | 0;
    $or = $16 | 4;
    HEAP32[40927] = $or;
    $tsize_1 = $tsize_0132123;
    label = 27;
    break;
   case 27:
    $cmp124 = $and11 >>> 0 < 2147483647;
    if ($cmp124) {
      label = 28;
      break;
    } else {
      label = 51;
      break;
    }
   case 28:
    $call128 = _sbrk($and11 | 0) | 0;
    $call129 = _sbrk(0) | 0;
    $notlhs = ($call128 | 0) != -1;
    $notrhs = ($call129 | 0) != -1;
    $or_cond6_not = $notrhs & $notlhs;
    $cmp134 = $call128 >>> 0 < $call129 >>> 0;
    $or_cond7 = $or_cond6_not & $cmp134;
    if ($or_cond7) {
      label = 29;
      break;
    } else {
      label = 51;
      break;
    }
   case 29:
    $sub_ptr_lhs_cast = $call129;
    $sub_ptr_rhs_cast = $call128;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $add137 = $nb + 40 | 0;
    $cmp138 = $sub_ptr_sub >>> 0 > $add137 >>> 0;
    $sub_ptr_sub_tsize_1 = $cmp138 ? $sub_ptr_sub : $tsize_1;
    $call128_tbase_1 = $cmp138 ? $call128 : -1;
    $cmp144 = ($call128_tbase_1 | 0) == -1;
    if ($cmp144) {
      label = 51;
      break;
    } else {
      $tsize_229 = $sub_ptr_sub_tsize_1;
      $tbase_230 = $call128_tbase_1;
      label = 30;
      break;
    }
   case 30:
    $17 = HEAP32[40924] | 0;
    $add147 = $17 + $tsize_229 | 0;
    HEAP32[40924] = $add147;
    $18 = HEAP32[40925] | 0;
    $cmp148 = $add147 >>> 0 > $18 >>> 0;
    if ($cmp148) {
      label = 31;
      break;
    } else {
      label = 32;
      break;
    }
   case 31:
    HEAP32[40925] = $add147;
    label = 32;
    break;
   case 32:
    $19 = HEAP32[40822] | 0;
    $cmp154 = ($19 | 0) == 0;
    if ($cmp154) {
      label = 33;
      break;
    } else {
      $sp_038 = 163712;
      label = 36;
      break;
    }
   case 33:
    $20 = HEAP32[40820] | 0;
    $cmp156 = ($20 | 0) == 0;
    $cmp159 = $tbase_230 >>> 0 < $20 >>> 0;
    $or_cond8 = $cmp156 | $cmp159;
    if ($or_cond8) {
      label = 34;
      break;
    } else {
      label = 35;
      break;
    }
   case 34:
    HEAP32[40820] = $tbase_230;
    label = 35;
    break;
   case 35:
    HEAP32[40928] = $tbase_230;
    HEAP32[40929] = $tsize_229;
    HEAP32[40931] = 0;
    $21 = HEAP32[2802] | 0;
    HEAP32[40825] = $21;
    HEAP32[40824] = -1;
    _init_bins();
    $22 = $tbase_230;
    $sub169 = $tsize_229 - 40 | 0;
    _init_top($22, $sub169);
    label = 49;
    break;
   case 36:
    $base184 = $sp_038 | 0;
    $23 = HEAP32[$base184 >> 2] | 0;
    $size185 = $sp_038 + 4 | 0;
    $24 = HEAP32[$size185 >> 2] | 0;
    $add_ptr186 = $23 + $24 | 0;
    $cmp187 = ($tbase_230 | 0) == ($add_ptr186 | 0);
    if ($cmp187) {
      label = 38;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $next = $sp_038 + 8 | 0;
    $25 = HEAP32[$next >> 2] | 0;
    $cmp183 = ($25 | 0) == 0;
    if ($cmp183) {
      label = 41;
      break;
    } else {
      $sp_038 = $25;
      label = 36;
      break;
    }
   case 38:
    $sflags190 = $sp_038 + 12 | 0;
    $26 = HEAP32[$sflags190 >> 2] | 0;
    $and191 = $26 & 8;
    $tobool192 = ($and191 | 0) == 0;
    if ($tobool192) {
      label = 39;
      break;
    } else {
      label = 41;
      break;
    }
   case 39:
    $27 = HEAP32[40822] | 0;
    $28 = $27;
    $cmp200 = $28 >>> 0 >= $23 >>> 0;
    $cmp206 = $28 >>> 0 < $add_ptr186 >>> 0;
    $or_cond31 = $cmp200 & $cmp206;
    if ($or_cond31) {
      label = 40;
      break;
    } else {
      label = 41;
      break;
    }
   case 40:
    $add209 = $24 + $tsize_229 | 0;
    HEAP32[$size185 >> 2] = $add209;
    $29 = HEAP32[40822] | 0;
    $30 = HEAP32[40819] | 0;
    $add212 = $30 + $tsize_229 | 0;
    _init_top($29, $add212);
    label = 49;
    break;
   case 41:
    $31 = HEAP32[40820] | 0;
    $cmp215 = $tbase_230 >>> 0 < $31 >>> 0;
    if ($cmp215) {
      label = 42;
      break;
    } else {
      label = 43;
      break;
    }
   case 42:
    HEAP32[40820] = $tbase_230;
    label = 43;
    break;
   case 43:
    $add_ptr224 = $tbase_230 + $tsize_229 | 0;
    $sp_134 = 163712;
    label = 44;
    break;
   case 44:
    $base223 = $sp_134 | 0;
    $32 = HEAP32[$base223 >> 2] | 0;
    $cmp225 = ($32 | 0) == ($add_ptr224 | 0);
    if ($cmp225) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $next228 = $sp_134 + 8 | 0;
    $33 = HEAP32[$next228 >> 2] | 0;
    $cmp221 = ($33 | 0) == 0;
    if ($cmp221) {
      label = 48;
      break;
    } else {
      $sp_134 = $33;
      label = 44;
      break;
    }
   case 46:
    $sflags232 = $sp_134 + 12 | 0;
    $34 = HEAP32[$sflags232 >> 2] | 0;
    $and233 = $34 & 8;
    $tobool234 = ($and233 | 0) == 0;
    if ($tobool234) {
      label = 47;
      break;
    } else {
      label = 48;
      break;
    }
   case 47:
    HEAP32[$base223 >> 2] = $tbase_230;
    $size242 = $sp_134 + 4 | 0;
    $35 = HEAP32[$size242 >> 2] | 0;
    $add243 = $35 + $tsize_229 | 0;
    HEAP32[$size242 >> 2] = $add243;
    $call244 = _prepend_alloc($tbase_230, $32, $nb) | 0;
    $retval_0 = $call244;
    label = 52;
    break;
   case 48:
    _add_segment($tbase_230, $tsize_229);
    label = 49;
    break;
   case 49:
    $36 = HEAP32[40819] | 0;
    $cmp250 = $36 >>> 0 > $nb >>> 0;
    if ($cmp250) {
      label = 50;
      break;
    } else {
      label = 51;
      break;
    }
   case 50:
    $sub253 = $36 - $nb | 0;
    HEAP32[40819] = $sub253;
    $37 = HEAP32[40822] | 0;
    $38 = $37;
    $add_ptr255 = $38 + $nb | 0;
    $39 = $add_ptr255;
    HEAP32[40822] = $39;
    $or257 = $sub253 | 1;
    $add_ptr255_sum = $nb + 4 | 0;
    $head258 = $38 + $add_ptr255_sum | 0;
    $40 = $head258;
    HEAP32[$40 >> 2] = $or257;
    $or260 = $nb | 3;
    $head261 = $37 + 4 | 0;
    HEAP32[$head261 >> 2] = $or260;
    $add_ptr262 = $37 + 8 | 0;
    $41 = $add_ptr262;
    $retval_0 = $41;
    label = 52;
    break;
   case 51:
    $call265 = ___errno_location() | 0;
    HEAP32[$call265 >> 2] = 12;
    $retval_0 = 0;
    label = 52;
    break;
   case 52:
    return $retval_0 | 0;
  }
  return 0;
}
function _free($mem) {
  $mem = $mem | 0;
  var $cmp = 0, $add_ptr = 0, $0 = 0, $1 = 0, $cmp1 = 0, $head = 0, $2 = 0, $3 = 0, $and = 0, $cmp2 = 0, $and5 = 0, $add_ptr_sum = 0, $add_ptr6 = 0, $4 = 0, $and8 = 0, $tobool9 = 0, $prev_foot = 0, $5 = 0, $cmp13 = 0, $add_ptr_sum232 = 0, $add_ptr16 = 0, $6 = 0, $add17 = 0, $cmp18 = 0, $7 = 0, $cmp22 = 0, $shr = 0, $cmp25 = 0, $add_ptr16_sum269 = 0, $fd = 0, $8 = 0, $9 = 0, $add_ptr16_sum270 = 0, $bk = 0, $10 = 0, $11 = 0, $shl = 0, $arrayidx = 0, $12 = 0, $cmp29 = 0, $13 = 0, $cmp31 = 0, $bk34 = 0, $14 = 0, $cmp35 = 0, $cmp42 = 0, $shl45 = 0, $neg = 0, $15 = 0, $and46 = 0, $cmp50 = 0, $16 = 0, $17 = 0, $cmp53 = 0, $fd56 = 0, $18 = 0, $cmp57 = 0, $bk66 = 0, $fd67 = 0, $19 = 0, $add_ptr16_sum261 = 0, $parent = 0, $20 = 0, $21 = 0, $add_ptr16_sum262 = 0, $bk73 = 0, $22 = 0, $23 = 0, $cmp74 = 0, $add_ptr16_sum266 = 0, $fd78 = 0, $24 = 0, $25 = 0, $26 = 0, $cmp80 = 0, $bk82 = 0, $27 = 0, $cmp83 = 0, $fd86 = 0, $28 = 0, $cmp87 = 0, $child_sum = 0, $arrayidx99 = 0, $29 = 0, $30 = 0, $cmp100 = 0, $add_ptr16_sum263 = 0, $child = 0, $arrayidx103 = 0, $31 = 0, $cmp104 = 0, $RP_0 = 0, $R_0 = 0, $arrayidx108 = 0, $32 = 0, $cmp109 = 0, $arrayidx113 = 0, $33 = 0, $cmp114 = 0, $CP_0 = 0, $34 = 0, $35 = 0, $36 = 0, $cmp118 = 0, $R_1 = 0, $cmp127 = 0, $add_ptr16_sum264 = 0, $index = 0, $37 = 0, $38 = 0, $arrayidx130 = 0, $39 = 0, $cmp131 = 0, $cond279 = 0, $40 = 0, $shl138 = 0, $neg139 = 0, $41 = 0, $and140 = 0, $42 = 0, $43 = 0, $cmp143 = 0, $arrayidx149 = 0, $44 = 0, $cmp150 = 0, $arrayidx157 = 0, $cmp162 = 0, $45 = 0, $46 = 0, $cmp165 = 0, $parent170 = 0, $add_ptr16_sum265 = 0, $child171 = 0, $arrayidx172 = 0, $47 = 0, $cmp173 = 0, $48 = 0, $49 = 0, $cmp176 = 0, $arrayidx182 = 0, $parent183 = 0, $child171_sum = 0, $arrayidx188 = 0, $50 = 0, $51 = 0, $cmp189 = 0, $52 = 0, $53 = 0, $cmp192 = 0, $arrayidx198 = 0, $parent199 = 0, $add_ptr6_sum = 0, $head209 = 0, $54 = 0, $55 = 0, $and210 = 0, $cmp211 = 0, $56 = 0, $and215 = 0, $or = 0, $add_ptr16_sum = 0, $head216 = 0, $57 = 0, $prev_foot218 = 0, $psize_0 = 0, $p_0 = 0, $58 = 0, $cmp225 = 0, $add_ptr6_sum259 = 0, $head228 = 0, $59 = 0, $60 = 0, $and229 = 0, $phitmp = 0, $and237 = 0, $tobool238 = 0, $61 = 0, $cmp240 = 0, $62 = 0, $add243 = 0, $or244 = 0, $head245 = 0, $63 = 0, $cmp246 = 0, $64 = 0, $cmp250 = 0, $65 = 0, $66 = 0, $cmp255 = 0, $67 = 0, $add258 = 0, $or259 = 0, $head260 = 0, $add_ptr261 = 0, $prev_foot262 = 0, $and265 = 0, $add266 = 0, $shr267 = 0, $cmp268 = 0, $fd272 = 0, $68 = 0, $69 = 0, $add_ptr6_sum253254 = 0, $bk274 = 0, $70 = 0, $71 = 0, $shl277 = 0, $arrayidx278 = 0, $72 = 0, $cmp279 = 0, $73 = 0, $74 = 0, $cmp282 = 0, $bk285 = 0, $75 = 0, $cmp286 = 0, $cmp295 = 0, $shl298 = 0, $neg299 = 0, $76 = 0, $and300 = 0, $cmp304 = 0, $77 = 0, $78 = 0, $cmp307 = 0, $fd310 = 0, $79 = 0, $cmp311 = 0, $bk320 = 0, $fd321 = 0, $80 = 0, $add_ptr6_sum234 = 0, $parent330 = 0, $81 = 0, $82 = 0, $add_ptr6_sum235236 = 0, $bk332 = 0, $83 = 0, $84 = 0, $cmp333 = 0, $fd337 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $cmp339 = 0, $bk342 = 0, $89 = 0, $cmp343 = 0, $fd346 = 0, $90 = 0, $cmp347 = 0, $child360_sum = 0, $arrayidx361 = 0, $91 = 0, $92 = 0, $cmp362 = 0, $add_ptr6_sum237 = 0, $child360 = 0, $arrayidx366 = 0, $93 = 0, $cmp367 = 0, $RP359_0 = 0, $R331_0 = 0, $arrayidx373 = 0, $94 = 0, $cmp374 = 0, $arrayidx378 = 0, $95 = 0, $cmp379 = 0, $CP370_0 = 0, $96 = 0, $97 = 0, $98 = 0, $cmp385 = 0, $R331_1 = 0, $cmp394 = 0, $add_ptr6_sum247 = 0, $index398 = 0, $99 = 0, $100 = 0, $arrayidx399 = 0, $101 = 0, $cmp400 = 0, $cond280 = 0, $102 = 0, $shl407 = 0, $neg408 = 0, $103 = 0, $and409 = 0, $104 = 0, $105 = 0, $cmp412 = 0, $arrayidx418 = 0, $106 = 0, $cmp419 = 0, $arrayidx426 = 0, $cmp431 = 0, $107 = 0, $108 = 0, $cmp434 = 0, $parent441 = 0, $add_ptr6_sum248 = 0, $child442 = 0, $arrayidx443 = 0, $109 = 0, $cmp444 = 0, $110 = 0, $111 = 0, $cmp447 = 0, $arrayidx453 = 0, $parent454 = 0, $child442_sum = 0, $arrayidx459 = 0, $112 = 0, $113 = 0, $cmp460 = 0, $114 = 0, $115 = 0, $cmp463 = 0, $arrayidx469 = 0, $parent470 = 0, $or479 = 0, $head480 = 0, $add_ptr481 = 0, $prev_foot482 = 0, $116 = 0, $cmp483 = 0, $and491 = 0, $or492 = 0, $head493 = 0, $add_ptr494 = 0, $prev_foot495 = 0, $psize_1 = 0, $shr497 = 0, $cmp498 = 0, $shl504 = 0, $arrayidx505 = 0, $117 = 0, $118 = 0, $shl507 = 0, $and508 = 0, $tobool509 = 0, $or512 = 0, $arrayidx505_sum246 = 0, $119 = 0, $120 = 0, $121 = 0, $122 = 0, $cmp515 = 0, $F506_0 = 0, $arrayidx505_sum = 0, $123 = 0, $bk525 = 0, $fd526 = 0, $bk527 = 0, $124 = 0, $shr531 = 0, $cmp532 = 0, $cmp536 = 0, $sub = 0, $shr540 = 0, $and541 = 0, $shl542 = 0, $sub543 = 0, $shr544 = 0, $and545 = 0, $add546 = 0, $shl547 = 0, $sub548 = 0, $shr549 = 0, $and550 = 0, $add551 = 0, $sub552 = 0, $shl553 = 0, $shr554 = 0, $add555 = 0, $shl556 = 0, $add557 = 0, $shr558 = 0, $and559 = 0, $add560 = 0, $I530_0 = 0, $arrayidx563 = 0, $index564 = 0, $I530_0_c = 0, $arrayidx566 = 0, $125 = 0, $126 = 0, $shl569 = 0, $and570 = 0, $tobool571 = 0, $or574 = 0, $parent575 = 0, $_c = 0, $bk576 = 0, $fd577 = 0, $127 = 0, $cmp580 = 0, $shr582 = 0, $sub585 = 0, $cond = 0, $shl586 = 0, $T_0 = 0, $K579_0 = 0, $head587 = 0, $128 = 0, $and588 = 0, $cmp589 = 0, $shr592 = 0, $arrayidx595 = 0, $129 = 0, $cmp597 = 0, $shl596 = 0, $130 = 0, $131 = 0, $cmp601 = 0, $parent606 = 0, $T_0_c243 = 0, $bk607 = 0, $fd608 = 0, $fd613 = 0, $132 = 0, $133 = 0, $134 = 0, $cmp614 = 0, $135 = 0, $cmp617 = 0, $bk624 = 0, $fd626 = 0, $_c242 = 0, $bk627 = 0, $T_0_c = 0, $parent628 = 0, $136 = 0, $dec = 0, $cmp632 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($mem | 0) == 0;
    if ($cmp) {
      label = 142;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add_ptr = $mem - 8 | 0;
    $0 = $add_ptr;
    $1 = HEAP32[40820] | 0;
    $cmp1 = $add_ptr >>> 0 < $1 >>> 0;
    if ($cmp1) {
      label = 141;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $head = $mem - 4 | 0;
    $2 = $head;
    $3 = HEAP32[$2 >> 2] | 0;
    $and = $3 & 3;
    $cmp2 = ($and | 0) == 1;
    if ($cmp2) {
      label = 141;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $and5 = $3 & -8;
    $add_ptr_sum = $and5 - 8 | 0;
    $add_ptr6 = $mem + $add_ptr_sum | 0;
    $4 = $add_ptr6;
    $and8 = $3 & 1;
    $tobool9 = ($and8 | 0) == 0;
    if ($tobool9) {
      label = 6;
      break;
    } else {
      $p_0 = $0;
      $psize_0 = $and5;
      label = 57;
      break;
    }
   case 6:
    $prev_foot = $add_ptr;
    $5 = HEAP32[$prev_foot >> 2] | 0;
    $cmp13 = ($and | 0) == 0;
    if ($cmp13) {
      label = 142;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add_ptr_sum232 = -8 - $5 | 0;
    $add_ptr16 = $mem + $add_ptr_sum232 | 0;
    $6 = $add_ptr16;
    $add17 = $5 + $and5 | 0;
    $cmp18 = $add_ptr16 >>> 0 < $1 >>> 0;
    if ($cmp18) {
      label = 141;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $7 = HEAP32[40821] | 0;
    $cmp22 = ($6 | 0) == ($7 | 0);
    if ($cmp22) {
      label = 55;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $shr = $5 >>> 3;
    $cmp25 = $5 >>> 0 < 256;
    if ($cmp25) {
      label = 10;
      break;
    } else {
      label = 21;
      break;
    }
   case 10:
    $add_ptr16_sum269 = $add_ptr_sum232 + 8 | 0;
    $fd = $mem + $add_ptr16_sum269 | 0;
    $8 = $fd;
    $9 = HEAP32[$8 >> 2] | 0;
    $add_ptr16_sum270 = $add_ptr_sum232 + 12 | 0;
    $bk = $mem + $add_ptr16_sum270 | 0;
    $10 = $bk;
    $11 = HEAP32[$10 >> 2] | 0;
    $shl = $shr << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $12 = $arrayidx;
    $cmp29 = ($9 | 0) == ($12 | 0);
    if ($cmp29) {
      label = 13;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $13 = $9;
    $cmp31 = $13 >>> 0 < $1 >>> 0;
    if ($cmp31) {
      label = 20;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $bk34 = $9 + 12 | 0;
    $14 = HEAP32[$bk34 >> 2] | 0;
    $cmp35 = ($14 | 0) == ($6 | 0);
    if ($cmp35) {
      label = 13;
      break;
    } else {
      label = 20;
      break;
    }
   case 13:
    $cmp42 = ($11 | 0) == ($9 | 0);
    if ($cmp42) {
      label = 14;
      break;
    } else {
      label = 15;
      break;
    }
   case 14:
    $shl45 = 1 << $shr;
    $neg = $shl45 ^ -1;
    $15 = HEAP32[40816] | 0;
    $and46 = $15 & $neg;
    HEAP32[40816] = $and46;
    $p_0 = $6;
    $psize_0 = $add17;
    label = 57;
    break;
   case 15:
    $cmp50 = ($11 | 0) == ($12 | 0);
    if ($cmp50) {
      label = 18;
      break;
    } else {
      label = 16;
      break;
    }
   case 16:
    $16 = $11;
    $17 = HEAP32[40820] | 0;
    $cmp53 = $16 >>> 0 < $17 >>> 0;
    if ($cmp53) {
      label = 19;
      break;
    } else {
      label = 17;
      break;
    }
   case 17:
    $fd56 = $11 + 8 | 0;
    $18 = HEAP32[$fd56 >> 2] | 0;
    $cmp57 = ($18 | 0) == ($6 | 0);
    if ($cmp57) {
      label = 18;
      break;
    } else {
      label = 19;
      break;
    }
   case 18:
    $bk66 = $9 + 12 | 0;
    HEAP32[$bk66 >> 2] = $11;
    $fd67 = $11 + 8 | 0;
    HEAP32[$fd67 >> 2] = $9;
    $p_0 = $6;
    $psize_0 = $add17;
    label = 57;
    break;
   case 19:
    _abort();
   case 20:
    _abort();
   case 21:
    $19 = $add_ptr16;
    $add_ptr16_sum261 = $add_ptr_sum232 + 24 | 0;
    $parent = $mem + $add_ptr16_sum261 | 0;
    $20 = $parent;
    $21 = HEAP32[$20 >> 2] | 0;
    $add_ptr16_sum262 = $add_ptr_sum232 + 12 | 0;
    $bk73 = $mem + $add_ptr16_sum262 | 0;
    $22 = $bk73;
    $23 = HEAP32[$22 >> 2] | 0;
    $cmp74 = ($23 | 0) == ($19 | 0);
    if ($cmp74) {
      label = 27;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $add_ptr16_sum266 = $add_ptr_sum232 + 8 | 0;
    $fd78 = $mem + $add_ptr16_sum266 | 0;
    $24 = $fd78;
    $25 = HEAP32[$24 >> 2] | 0;
    $26 = $25;
    $cmp80 = $26 >>> 0 < $1 >>> 0;
    if ($cmp80) {
      label = 26;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $bk82 = $25 + 12 | 0;
    $27 = HEAP32[$bk82 >> 2] | 0;
    $cmp83 = ($27 | 0) == ($19 | 0);
    if ($cmp83) {
      label = 24;
      break;
    } else {
      label = 26;
      break;
    }
   case 24:
    $fd86 = $23 + 8 | 0;
    $28 = HEAP32[$fd86 >> 2] | 0;
    $cmp87 = ($28 | 0) == ($19 | 0);
    if ($cmp87) {
      label = 25;
      break;
    } else {
      label = 26;
      break;
    }
   case 25:
    HEAP32[$bk82 >> 2] = $23;
    HEAP32[$fd86 >> 2] = $25;
    $R_1 = $23;
    label = 35;
    break;
   case 26:
    _abort();
   case 27:
    $child_sum = $add_ptr_sum232 + 20 | 0;
    $arrayidx99 = $mem + $child_sum | 0;
    $29 = $arrayidx99;
    $30 = HEAP32[$29 >> 2] | 0;
    $cmp100 = ($30 | 0) == 0;
    if ($cmp100) {
      label = 28;
      break;
    } else {
      $R_0 = $30;
      $RP_0 = $29;
      label = 29;
      break;
    }
   case 28:
    $add_ptr16_sum263 = $add_ptr_sum232 + 16 | 0;
    $child = $mem + $add_ptr16_sum263 | 0;
    $arrayidx103 = $child;
    $31 = HEAP32[$arrayidx103 >> 2] | 0;
    $cmp104 = ($31 | 0) == 0;
    if ($cmp104) {
      $R_1 = 0;
      label = 35;
      break;
    } else {
      $R_0 = $31;
      $RP_0 = $arrayidx103;
      label = 29;
      break;
    }
   case 29:
    $arrayidx108 = $R_0 + 20 | 0;
    $32 = HEAP32[$arrayidx108 >> 2] | 0;
    $cmp109 = ($32 | 0) == 0;
    if ($cmp109) {
      label = 30;
      break;
    } else {
      $CP_0 = $arrayidx108;
      label = 31;
      break;
    }
   case 30:
    $arrayidx113 = $R_0 + 16 | 0;
    $33 = HEAP32[$arrayidx113 >> 2] | 0;
    $cmp114 = ($33 | 0) == 0;
    if ($cmp114) {
      label = 32;
      break;
    } else {
      $CP_0 = $arrayidx113;
      label = 31;
      break;
    }
   case 31:
    $34 = HEAP32[$CP_0 >> 2] | 0;
    $R_0 = $34;
    $RP_0 = $CP_0;
    label = 29;
    break;
   case 32:
    $35 = $RP_0;
    $36 = HEAP32[40820] | 0;
    $cmp118 = $35 >>> 0 < $36 >>> 0;
    if ($cmp118) {
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    HEAP32[$RP_0 >> 2] = 0;
    $R_1 = $R_0;
    label = 35;
    break;
   case 34:
    _abort();
   case 35:
    $cmp127 = ($21 | 0) == 0;
    if ($cmp127) {
      $p_0 = $6;
      $psize_0 = $add17;
      label = 57;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $add_ptr16_sum264 = $add_ptr_sum232 + 28 | 0;
    $index = $mem + $add_ptr16_sum264 | 0;
    $37 = $index;
    $38 = HEAP32[$37 >> 2] | 0;
    $arrayidx130 = 163568 + ($38 << 2) | 0;
    $39 = HEAP32[$arrayidx130 >> 2] | 0;
    $cmp131 = ($19 | 0) == ($39 | 0);
    if ($cmp131) {
      label = 37;
      break;
    } else {
      label = 39;
      break;
    }
   case 37:
    HEAP32[$arrayidx130 >> 2] = $R_1;
    $cond279 = ($R_1 | 0) == 0;
    if ($cond279) {
      label = 38;
      break;
    } else {
      label = 45;
      break;
    }
   case 38:
    $40 = HEAP32[$37 >> 2] | 0;
    $shl138 = 1 << $40;
    $neg139 = $shl138 ^ -1;
    $41 = HEAP32[40817] | 0;
    $and140 = $41 & $neg139;
    HEAP32[40817] = $and140;
    $p_0 = $6;
    $psize_0 = $add17;
    label = 57;
    break;
   case 39:
    $42 = $21;
    $43 = HEAP32[40820] | 0;
    $cmp143 = $42 >>> 0 < $43 >>> 0;
    if ($cmp143) {
      label = 43;
      break;
    } else {
      label = 40;
      break;
    }
   case 40:
    $arrayidx149 = $21 + 16 | 0;
    $44 = HEAP32[$arrayidx149 >> 2] | 0;
    $cmp150 = ($44 | 0) == ($19 | 0);
    if ($cmp150) {
      label = 41;
      break;
    } else {
      label = 42;
      break;
    }
   case 41:
    HEAP32[$arrayidx149 >> 2] = $R_1;
    label = 44;
    break;
   case 42:
    $arrayidx157 = $21 + 20 | 0;
    HEAP32[$arrayidx157 >> 2] = $R_1;
    label = 44;
    break;
   case 43:
    _abort();
   case 44:
    $cmp162 = ($R_1 | 0) == 0;
    if ($cmp162) {
      $p_0 = $6;
      $psize_0 = $add17;
      label = 57;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $45 = $R_1;
    $46 = HEAP32[40820] | 0;
    $cmp165 = $45 >>> 0 < $46 >>> 0;
    if ($cmp165) {
      label = 54;
      break;
    } else {
      label = 46;
      break;
    }
   case 46:
    $parent170 = $R_1 + 24 | 0;
    HEAP32[$parent170 >> 2] = $21;
    $add_ptr16_sum265 = $add_ptr_sum232 + 16 | 0;
    $child171 = $mem + $add_ptr16_sum265 | 0;
    $arrayidx172 = $child171;
    $47 = HEAP32[$arrayidx172 >> 2] | 0;
    $cmp173 = ($47 | 0) == 0;
    if ($cmp173) {
      label = 50;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $48 = $47;
    $49 = HEAP32[40820] | 0;
    $cmp176 = $48 >>> 0 < $49 >>> 0;
    if ($cmp176) {
      label = 49;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $arrayidx182 = $R_1 + 16 | 0;
    HEAP32[$arrayidx182 >> 2] = $47;
    $parent183 = $47 + 24 | 0;
    HEAP32[$parent183 >> 2] = $R_1;
    label = 50;
    break;
   case 49:
    _abort();
   case 50:
    $child171_sum = $add_ptr_sum232 + 20 | 0;
    $arrayidx188 = $mem + $child171_sum | 0;
    $50 = $arrayidx188;
    $51 = HEAP32[$50 >> 2] | 0;
    $cmp189 = ($51 | 0) == 0;
    if ($cmp189) {
      $p_0 = $6;
      $psize_0 = $add17;
      label = 57;
      break;
    } else {
      label = 51;
      break;
    }
   case 51:
    $52 = $51;
    $53 = HEAP32[40820] | 0;
    $cmp192 = $52 >>> 0 < $53 >>> 0;
    if ($cmp192) {
      label = 53;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $arrayidx198 = $R_1 + 20 | 0;
    HEAP32[$arrayidx198 >> 2] = $51;
    $parent199 = $51 + 24 | 0;
    HEAP32[$parent199 >> 2] = $R_1;
    $p_0 = $6;
    $psize_0 = $add17;
    label = 57;
    break;
   case 53:
    _abort();
   case 54:
    _abort();
   case 55:
    $add_ptr6_sum = $and5 - 4 | 0;
    $head209 = $mem + $add_ptr6_sum | 0;
    $54 = $head209;
    $55 = HEAP32[$54 >> 2] | 0;
    $and210 = $55 & 3;
    $cmp211 = ($and210 | 0) == 3;
    if ($cmp211) {
      label = 56;
      break;
    } else {
      $p_0 = $6;
      $psize_0 = $add17;
      label = 57;
      break;
    }
   case 56:
    HEAP32[40818] = $add17;
    $56 = HEAP32[$54 >> 2] | 0;
    $and215 = $56 & -2;
    HEAP32[$54 >> 2] = $and215;
    $or = $add17 | 1;
    $add_ptr16_sum = $add_ptr_sum232 + 4 | 0;
    $head216 = $mem + $add_ptr16_sum | 0;
    $57 = $head216;
    HEAP32[$57 >> 2] = $or;
    $prev_foot218 = $add_ptr6;
    HEAP32[$prev_foot218 >> 2] = $add17;
    label = 142;
    break;
   case 57:
    $58 = $p_0;
    $cmp225 = $58 >>> 0 < $add_ptr6 >>> 0;
    if ($cmp225) {
      label = 58;
      break;
    } else {
      label = 141;
      break;
    }
   case 58:
    $add_ptr6_sum259 = $and5 - 4 | 0;
    $head228 = $mem + $add_ptr6_sum259 | 0;
    $59 = $head228;
    $60 = HEAP32[$59 >> 2] | 0;
    $and229 = $60 & 1;
    $phitmp = ($and229 | 0) == 0;
    if ($phitmp) {
      label = 141;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $and237 = $60 & 2;
    $tobool238 = ($and237 | 0) == 0;
    if ($tobool238) {
      label = 60;
      break;
    } else {
      label = 115;
      break;
    }
   case 60:
    $61 = HEAP32[40822] | 0;
    $cmp240 = ($4 | 0) == ($61 | 0);
    if ($cmp240) {
      label = 61;
      break;
    } else {
      label = 65;
      break;
    }
   case 61:
    $62 = HEAP32[40819] | 0;
    $add243 = $62 + $psize_0 | 0;
    HEAP32[40819] = $add243;
    HEAP32[40822] = $p_0;
    $or244 = $add243 | 1;
    $head245 = $p_0 + 4 | 0;
    HEAP32[$head245 >> 2] = $or244;
    $63 = HEAP32[40821] | 0;
    $cmp246 = ($p_0 | 0) == ($63 | 0);
    if ($cmp246) {
      label = 62;
      break;
    } else {
      label = 63;
      break;
    }
   case 62:
    HEAP32[40821] = 0;
    HEAP32[40818] = 0;
    label = 63;
    break;
   case 63:
    $64 = HEAP32[40823] | 0;
    $cmp250 = $add243 >>> 0 > $64 >>> 0;
    if ($cmp250) {
      label = 64;
      break;
    } else {
      label = 142;
      break;
    }
   case 64:
    $65 = _sys_trim(0) | 0;
    label = 142;
    break;
   case 65:
    $66 = HEAP32[40821] | 0;
    $cmp255 = ($4 | 0) == ($66 | 0);
    if ($cmp255) {
      label = 66;
      break;
    } else {
      label = 67;
      break;
    }
   case 66:
    $67 = HEAP32[40818] | 0;
    $add258 = $67 + $psize_0 | 0;
    HEAP32[40818] = $add258;
    HEAP32[40821] = $p_0;
    $or259 = $add258 | 1;
    $head260 = $p_0 + 4 | 0;
    HEAP32[$head260 >> 2] = $or259;
    $add_ptr261 = $58 + $add258 | 0;
    $prev_foot262 = $add_ptr261;
    HEAP32[$prev_foot262 >> 2] = $add258;
    label = 142;
    break;
   case 67:
    $and265 = $60 & -8;
    $add266 = $and265 + $psize_0 | 0;
    $shr267 = $60 >>> 3;
    $cmp268 = $60 >>> 0 < 256;
    if ($cmp268) {
      label = 68;
      break;
    } else {
      label = 79;
      break;
    }
   case 68:
    $fd272 = $mem + $and5 | 0;
    $68 = $fd272;
    $69 = HEAP32[$68 >> 2] | 0;
    $add_ptr6_sum253254 = $and5 | 4;
    $bk274 = $mem + $add_ptr6_sum253254 | 0;
    $70 = $bk274;
    $71 = HEAP32[$70 >> 2] | 0;
    $shl277 = $shr267 << 1;
    $arrayidx278 = 163304 + ($shl277 << 2) | 0;
    $72 = $arrayidx278;
    $cmp279 = ($69 | 0) == ($72 | 0);
    if ($cmp279) {
      label = 71;
      break;
    } else {
      label = 69;
      break;
    }
   case 69:
    $73 = $69;
    $74 = HEAP32[40820] | 0;
    $cmp282 = $73 >>> 0 < $74 >>> 0;
    if ($cmp282) {
      label = 78;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $bk285 = $69 + 12 | 0;
    $75 = HEAP32[$bk285 >> 2] | 0;
    $cmp286 = ($75 | 0) == ($4 | 0);
    if ($cmp286) {
      label = 71;
      break;
    } else {
      label = 78;
      break;
    }
   case 71:
    $cmp295 = ($71 | 0) == ($69 | 0);
    if ($cmp295) {
      label = 72;
      break;
    } else {
      label = 73;
      break;
    }
   case 72:
    $shl298 = 1 << $shr267;
    $neg299 = $shl298 ^ -1;
    $76 = HEAP32[40816] | 0;
    $and300 = $76 & $neg299;
    HEAP32[40816] = $and300;
    label = 113;
    break;
   case 73:
    $cmp304 = ($71 | 0) == ($72 | 0);
    if ($cmp304) {
      label = 76;
      break;
    } else {
      label = 74;
      break;
    }
   case 74:
    $77 = $71;
    $78 = HEAP32[40820] | 0;
    $cmp307 = $77 >>> 0 < $78 >>> 0;
    if ($cmp307) {
      label = 77;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $fd310 = $71 + 8 | 0;
    $79 = HEAP32[$fd310 >> 2] | 0;
    $cmp311 = ($79 | 0) == ($4 | 0);
    if ($cmp311) {
      label = 76;
      break;
    } else {
      label = 77;
      break;
    }
   case 76:
    $bk320 = $69 + 12 | 0;
    HEAP32[$bk320 >> 2] = $71;
    $fd321 = $71 + 8 | 0;
    HEAP32[$fd321 >> 2] = $69;
    label = 113;
    break;
   case 77:
    _abort();
   case 78:
    _abort();
   case 79:
    $80 = $add_ptr6;
    $add_ptr6_sum234 = $and5 + 16 | 0;
    $parent330 = $mem + $add_ptr6_sum234 | 0;
    $81 = $parent330;
    $82 = HEAP32[$81 >> 2] | 0;
    $add_ptr6_sum235236 = $and5 | 4;
    $bk332 = $mem + $add_ptr6_sum235236 | 0;
    $83 = $bk332;
    $84 = HEAP32[$83 >> 2] | 0;
    $cmp333 = ($84 | 0) == ($80 | 0);
    if ($cmp333) {
      label = 85;
      break;
    } else {
      label = 80;
      break;
    }
   case 80:
    $fd337 = $mem + $and5 | 0;
    $85 = $fd337;
    $86 = HEAP32[$85 >> 2] | 0;
    $87 = $86;
    $88 = HEAP32[40820] | 0;
    $cmp339 = $87 >>> 0 < $88 >>> 0;
    if ($cmp339) {
      label = 84;
      break;
    } else {
      label = 81;
      break;
    }
   case 81:
    $bk342 = $86 + 12 | 0;
    $89 = HEAP32[$bk342 >> 2] | 0;
    $cmp343 = ($89 | 0) == ($80 | 0);
    if ($cmp343) {
      label = 82;
      break;
    } else {
      label = 84;
      break;
    }
   case 82:
    $fd346 = $84 + 8 | 0;
    $90 = HEAP32[$fd346 >> 2] | 0;
    $cmp347 = ($90 | 0) == ($80 | 0);
    if ($cmp347) {
      label = 83;
      break;
    } else {
      label = 84;
      break;
    }
   case 83:
    HEAP32[$bk342 >> 2] = $84;
    HEAP32[$fd346 >> 2] = $86;
    $R331_1 = $84;
    label = 93;
    break;
   case 84:
    _abort();
   case 85:
    $child360_sum = $and5 + 12 | 0;
    $arrayidx361 = $mem + $child360_sum | 0;
    $91 = $arrayidx361;
    $92 = HEAP32[$91 >> 2] | 0;
    $cmp362 = ($92 | 0) == 0;
    if ($cmp362) {
      label = 86;
      break;
    } else {
      $R331_0 = $92;
      $RP359_0 = $91;
      label = 87;
      break;
    }
   case 86:
    $add_ptr6_sum237 = $and5 + 8 | 0;
    $child360 = $mem + $add_ptr6_sum237 | 0;
    $arrayidx366 = $child360;
    $93 = HEAP32[$arrayidx366 >> 2] | 0;
    $cmp367 = ($93 | 0) == 0;
    if ($cmp367) {
      $R331_1 = 0;
      label = 93;
      break;
    } else {
      $R331_0 = $93;
      $RP359_0 = $arrayidx366;
      label = 87;
      break;
    }
   case 87:
    $arrayidx373 = $R331_0 + 20 | 0;
    $94 = HEAP32[$arrayidx373 >> 2] | 0;
    $cmp374 = ($94 | 0) == 0;
    if ($cmp374) {
      label = 88;
      break;
    } else {
      $CP370_0 = $arrayidx373;
      label = 89;
      break;
    }
   case 88:
    $arrayidx378 = $R331_0 + 16 | 0;
    $95 = HEAP32[$arrayidx378 >> 2] | 0;
    $cmp379 = ($95 | 0) == 0;
    if ($cmp379) {
      label = 90;
      break;
    } else {
      $CP370_0 = $arrayidx378;
      label = 89;
      break;
    }
   case 89:
    $96 = HEAP32[$CP370_0 >> 2] | 0;
    $R331_0 = $96;
    $RP359_0 = $CP370_0;
    label = 87;
    break;
   case 90:
    $97 = $RP359_0;
    $98 = HEAP32[40820] | 0;
    $cmp385 = $97 >>> 0 < $98 >>> 0;
    if ($cmp385) {
      label = 92;
      break;
    } else {
      label = 91;
      break;
    }
   case 91:
    HEAP32[$RP359_0 >> 2] = 0;
    $R331_1 = $R331_0;
    label = 93;
    break;
   case 92:
    _abort();
   case 93:
    $cmp394 = ($82 | 0) == 0;
    if ($cmp394) {
      label = 113;
      break;
    } else {
      label = 94;
      break;
    }
   case 94:
    $add_ptr6_sum247 = $and5 + 20 | 0;
    $index398 = $mem + $add_ptr6_sum247 | 0;
    $99 = $index398;
    $100 = HEAP32[$99 >> 2] | 0;
    $arrayidx399 = 163568 + ($100 << 2) | 0;
    $101 = HEAP32[$arrayidx399 >> 2] | 0;
    $cmp400 = ($80 | 0) == ($101 | 0);
    if ($cmp400) {
      label = 95;
      break;
    } else {
      label = 97;
      break;
    }
   case 95:
    HEAP32[$arrayidx399 >> 2] = $R331_1;
    $cond280 = ($R331_1 | 0) == 0;
    if ($cond280) {
      label = 96;
      break;
    } else {
      label = 103;
      break;
    }
   case 96:
    $102 = HEAP32[$99 >> 2] | 0;
    $shl407 = 1 << $102;
    $neg408 = $shl407 ^ -1;
    $103 = HEAP32[40817] | 0;
    $and409 = $103 & $neg408;
    HEAP32[40817] = $and409;
    label = 113;
    break;
   case 97:
    $104 = $82;
    $105 = HEAP32[40820] | 0;
    $cmp412 = $104 >>> 0 < $105 >>> 0;
    if ($cmp412) {
      label = 101;
      break;
    } else {
      label = 98;
      break;
    }
   case 98:
    $arrayidx418 = $82 + 16 | 0;
    $106 = HEAP32[$arrayidx418 >> 2] | 0;
    $cmp419 = ($106 | 0) == ($80 | 0);
    if ($cmp419) {
      label = 99;
      break;
    } else {
      label = 100;
      break;
    }
   case 99:
    HEAP32[$arrayidx418 >> 2] = $R331_1;
    label = 102;
    break;
   case 100:
    $arrayidx426 = $82 + 20 | 0;
    HEAP32[$arrayidx426 >> 2] = $R331_1;
    label = 102;
    break;
   case 101:
    _abort();
   case 102:
    $cmp431 = ($R331_1 | 0) == 0;
    if ($cmp431) {
      label = 113;
      break;
    } else {
      label = 103;
      break;
    }
   case 103:
    $107 = $R331_1;
    $108 = HEAP32[40820] | 0;
    $cmp434 = $107 >>> 0 < $108 >>> 0;
    if ($cmp434) {
      label = 112;
      break;
    } else {
      label = 104;
      break;
    }
   case 104:
    $parent441 = $R331_1 + 24 | 0;
    HEAP32[$parent441 >> 2] = $82;
    $add_ptr6_sum248 = $and5 + 8 | 0;
    $child442 = $mem + $add_ptr6_sum248 | 0;
    $arrayidx443 = $child442;
    $109 = HEAP32[$arrayidx443 >> 2] | 0;
    $cmp444 = ($109 | 0) == 0;
    if ($cmp444) {
      label = 108;
      break;
    } else {
      label = 105;
      break;
    }
   case 105:
    $110 = $109;
    $111 = HEAP32[40820] | 0;
    $cmp447 = $110 >>> 0 < $111 >>> 0;
    if ($cmp447) {
      label = 107;
      break;
    } else {
      label = 106;
      break;
    }
   case 106:
    $arrayidx453 = $R331_1 + 16 | 0;
    HEAP32[$arrayidx453 >> 2] = $109;
    $parent454 = $109 + 24 | 0;
    HEAP32[$parent454 >> 2] = $R331_1;
    label = 108;
    break;
   case 107:
    _abort();
   case 108:
    $child442_sum = $and5 + 12 | 0;
    $arrayidx459 = $mem + $child442_sum | 0;
    $112 = $arrayidx459;
    $113 = HEAP32[$112 >> 2] | 0;
    $cmp460 = ($113 | 0) == 0;
    if ($cmp460) {
      label = 113;
      break;
    } else {
      label = 109;
      break;
    }
   case 109:
    $114 = $113;
    $115 = HEAP32[40820] | 0;
    $cmp463 = $114 >>> 0 < $115 >>> 0;
    if ($cmp463) {
      label = 111;
      break;
    } else {
      label = 110;
      break;
    }
   case 110:
    $arrayidx469 = $R331_1 + 20 | 0;
    HEAP32[$arrayidx469 >> 2] = $113;
    $parent470 = $113 + 24 | 0;
    HEAP32[$parent470 >> 2] = $R331_1;
    label = 113;
    break;
   case 111:
    _abort();
   case 112:
    _abort();
   case 113:
    $or479 = $add266 | 1;
    $head480 = $p_0 + 4 | 0;
    HEAP32[$head480 >> 2] = $or479;
    $add_ptr481 = $58 + $add266 | 0;
    $prev_foot482 = $add_ptr481;
    HEAP32[$prev_foot482 >> 2] = $add266;
    $116 = HEAP32[40821] | 0;
    $cmp483 = ($p_0 | 0) == ($116 | 0);
    if ($cmp483) {
      label = 114;
      break;
    } else {
      $psize_1 = $add266;
      label = 116;
      break;
    }
   case 114:
    HEAP32[40818] = $add266;
    label = 142;
    break;
   case 115:
    $and491 = $60 & -2;
    HEAP32[$59 >> 2] = $and491;
    $or492 = $psize_0 | 1;
    $head493 = $p_0 + 4 | 0;
    HEAP32[$head493 >> 2] = $or492;
    $add_ptr494 = $58 + $psize_0 | 0;
    $prev_foot495 = $add_ptr494;
    HEAP32[$prev_foot495 >> 2] = $psize_0;
    $psize_1 = $psize_0;
    label = 116;
    break;
   case 116:
    $shr497 = $psize_1 >>> 3;
    $cmp498 = $psize_1 >>> 0 < 256;
    if ($cmp498) {
      label = 117;
      break;
    } else {
      label = 122;
      break;
    }
   case 117:
    $shl504 = $shr497 << 1;
    $arrayidx505 = 163304 + ($shl504 << 2) | 0;
    $117 = $arrayidx505;
    $118 = HEAP32[40816] | 0;
    $shl507 = 1 << $shr497;
    $and508 = $118 & $shl507;
    $tobool509 = ($and508 | 0) == 0;
    if ($tobool509) {
      label = 118;
      break;
    } else {
      label = 119;
      break;
    }
   case 118:
    $or512 = $118 | $shl507;
    HEAP32[40816] = $or512;
    $F506_0 = $117;
    label = 121;
    break;
   case 119:
    $arrayidx505_sum246 = $shl504 + 2 | 0;
    $119 = 163304 + ($arrayidx505_sum246 << 2) | 0;
    $120 = HEAP32[$119 >> 2] | 0;
    $121 = $120;
    $122 = HEAP32[40820] | 0;
    $cmp515 = $121 >>> 0 < $122 >>> 0;
    if ($cmp515) {
      label = 120;
      break;
    } else {
      $F506_0 = $120;
      label = 121;
      break;
    }
   case 120:
    _abort();
   case 121:
    $arrayidx505_sum = $shl504 + 2 | 0;
    $123 = 163304 + ($arrayidx505_sum << 2) | 0;
    HEAP32[$123 >> 2] = $p_0;
    $bk525 = $F506_0 + 12 | 0;
    HEAP32[$bk525 >> 2] = $p_0;
    $fd526 = $p_0 + 8 | 0;
    HEAP32[$fd526 >> 2] = $F506_0;
    $bk527 = $p_0 + 12 | 0;
    HEAP32[$bk527 >> 2] = $117;
    label = 142;
    break;
   case 122:
    $124 = $p_0;
    $shr531 = $psize_1 >>> 8;
    $cmp532 = ($shr531 | 0) == 0;
    if ($cmp532) {
      $I530_0 = 0;
      label = 125;
      break;
    } else {
      label = 123;
      break;
    }
   case 123:
    $cmp536 = $psize_1 >>> 0 > 16777215;
    if ($cmp536) {
      $I530_0 = 31;
      label = 125;
      break;
    } else {
      label = 124;
      break;
    }
   case 124:
    $sub = $shr531 + 1048320 | 0;
    $shr540 = $sub >>> 16;
    $and541 = $shr540 & 8;
    $shl542 = $shr531 << $and541;
    $sub543 = $shl542 + 520192 | 0;
    $shr544 = $sub543 >>> 16;
    $and545 = $shr544 & 4;
    $add546 = $and545 | $and541;
    $shl547 = $shl542 << $and545;
    $sub548 = $shl547 + 245760 | 0;
    $shr549 = $sub548 >>> 16;
    $and550 = $shr549 & 2;
    $add551 = $add546 | $and550;
    $sub552 = 14 - $add551 | 0;
    $shl553 = $shl547 << $and550;
    $shr554 = $shl553 >>> 15;
    $add555 = $sub552 + $shr554 | 0;
    $shl556 = $add555 << 1;
    $add557 = $add555 + 7 | 0;
    $shr558 = $psize_1 >>> ($add557 >>> 0);
    $and559 = $shr558 & 1;
    $add560 = $and559 | $shl556;
    $I530_0 = $add560;
    label = 125;
    break;
   case 125:
    $arrayidx563 = 163568 + ($I530_0 << 2) | 0;
    $index564 = $p_0 + 28 | 0;
    $I530_0_c = $I530_0;
    HEAP32[$index564 >> 2] = $I530_0_c;
    $arrayidx566 = $p_0 + 20 | 0;
    HEAP32[$arrayidx566 >> 2] = 0;
    $125 = $p_0 + 16 | 0;
    HEAP32[$125 >> 2] = 0;
    $126 = HEAP32[40817] | 0;
    $shl569 = 1 << $I530_0;
    $and570 = $126 & $shl569;
    $tobool571 = ($and570 | 0) == 0;
    if ($tobool571) {
      label = 126;
      break;
    } else {
      label = 127;
      break;
    }
   case 126:
    $or574 = $126 | $shl569;
    HEAP32[40817] = $or574;
    HEAP32[$arrayidx563 >> 2] = $124;
    $parent575 = $p_0 + 24 | 0;
    $_c = $arrayidx563;
    HEAP32[$parent575 >> 2] = $_c;
    $bk576 = $p_0 + 12 | 0;
    HEAP32[$bk576 >> 2] = $p_0;
    $fd577 = $p_0 + 8 | 0;
    HEAP32[$fd577 >> 2] = $p_0;
    label = 139;
    break;
   case 127:
    $127 = HEAP32[$arrayidx563 >> 2] | 0;
    $cmp580 = ($I530_0 | 0) == 31;
    if ($cmp580) {
      $cond = 0;
      label = 129;
      break;
    } else {
      label = 128;
      break;
    }
   case 128:
    $shr582 = $I530_0 >>> 1;
    $sub585 = 25 - $shr582 | 0;
    $cond = $sub585;
    label = 129;
    break;
   case 129:
    $shl586 = $psize_1 << $cond;
    $K579_0 = $shl586;
    $T_0 = $127;
    label = 130;
    break;
   case 130:
    $head587 = $T_0 + 4 | 0;
    $128 = HEAP32[$head587 >> 2] | 0;
    $and588 = $128 & -8;
    $cmp589 = ($and588 | 0) == ($psize_1 | 0);
    if ($cmp589) {
      label = 135;
      break;
    } else {
      label = 131;
      break;
    }
   case 131:
    $shr592 = $K579_0 >>> 31;
    $arrayidx595 = $T_0 + 16 + ($shr592 << 2) | 0;
    $129 = HEAP32[$arrayidx595 >> 2] | 0;
    $cmp597 = ($129 | 0) == 0;
    $shl596 = $K579_0 << 1;
    if ($cmp597) {
      label = 132;
      break;
    } else {
      $K579_0 = $shl596;
      $T_0 = $129;
      label = 130;
      break;
    }
   case 132:
    $130 = $arrayidx595;
    $131 = HEAP32[40820] | 0;
    $cmp601 = $130 >>> 0 < $131 >>> 0;
    if ($cmp601) {
      label = 134;
      break;
    } else {
      label = 133;
      break;
    }
   case 133:
    HEAP32[$arrayidx595 >> 2] = $124;
    $parent606 = $p_0 + 24 | 0;
    $T_0_c243 = $T_0;
    HEAP32[$parent606 >> 2] = $T_0_c243;
    $bk607 = $p_0 + 12 | 0;
    HEAP32[$bk607 >> 2] = $p_0;
    $fd608 = $p_0 + 8 | 0;
    HEAP32[$fd608 >> 2] = $p_0;
    label = 139;
    break;
   case 134:
    _abort();
   case 135:
    $fd613 = $T_0 + 8 | 0;
    $132 = HEAP32[$fd613 >> 2] | 0;
    $133 = $T_0;
    $134 = HEAP32[40820] | 0;
    $cmp614 = $133 >>> 0 < $134 >>> 0;
    if ($cmp614) {
      label = 138;
      break;
    } else {
      label = 136;
      break;
    }
   case 136:
    $135 = $132;
    $cmp617 = $135 >>> 0 < $134 >>> 0;
    if ($cmp617) {
      label = 138;
      break;
    } else {
      label = 137;
      break;
    }
   case 137:
    $bk624 = $132 + 12 | 0;
    HEAP32[$bk624 >> 2] = $124;
    HEAP32[$fd613 >> 2] = $124;
    $fd626 = $p_0 + 8 | 0;
    $_c242 = $132;
    HEAP32[$fd626 >> 2] = $_c242;
    $bk627 = $p_0 + 12 | 0;
    $T_0_c = $T_0;
    HEAP32[$bk627 >> 2] = $T_0_c;
    $parent628 = $p_0 + 24 | 0;
    HEAP32[$parent628 >> 2] = 0;
    label = 139;
    break;
   case 138:
    _abort();
   case 139:
    $136 = HEAP32[40824] | 0;
    $dec = $136 - 1 | 0;
    HEAP32[40824] = $dec;
    $cmp632 = ($dec | 0) == 0;
    if ($cmp632) {
      label = 140;
      break;
    } else {
      label = 142;
      break;
    }
   case 140:
    _release_unused_segments();
    label = 142;
    break;
   case 141:
    _abort();
   case 142:
    return;
  }
}
function _release_unused_segments() {
  var $sp_0_in = 0, $sp_0 = 0, $cmp = 0, $next4 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sp_0_in = 163720;
    label = 3;
    break;
   case 3:
    $sp_0 = HEAP32[$sp_0_in >> 2] | 0;
    $cmp = ($sp_0 | 0) == 0;
    $next4 = $sp_0 + 8 | 0;
    if ($cmp) {
      label = 4;
      break;
    } else {
      $sp_0_in = $next4;
      label = 3;
      break;
    }
   case 4:
    HEAP32[40824] = -1;
    return;
  }
}
function _sys_trim($pad) {
  $pad = $pad | 0;
  var $0 = 0, $cmp = 0, $cmp1 = 0, $1 = 0, $cmp2 = 0, $add = 0, $2 = 0, $cmp3 = 0, $3 = 0, $add_neg = 0, $sub6 = 0, $sub = 0, $add7 = 0, $div = 0, $sub8 = 0, $mul = 0, $4 = 0, $call10 = 0, $sflags = 0, $5 = 0, $and = 0, $tobool11 = 0, $call20 = 0, $base = 0, $6 = 0, $size = 0, $7 = 0, $add_ptr = 0, $cmp21 = 0, $sub19 = 0, $cmp17 = 0, $sub19_mul = 0, $sub23 = 0, $call24 = 0, $call25 = 0, $cmp26 = 0, $cmp28 = 0, $or_cond = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $cmp34 = 0, $size36 = 0, $8 = 0, $sub37 = 0, $9 = 0, $sub38 = 0, $10 = 0, $11 = 0, $sub41 = 0, $phitmp = 0, $phitmp4 = 0, $12 = 0, $13 = 0, $cmp47 = 0, $released_2 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2802] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    _init_mparams();
    label = 4;
    break;
   case 4:
    $cmp1 = $pad >>> 0 < 4294967232;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      $released_2 = 0;
      label = 14;
      break;
    }
   case 5:
    $1 = HEAP32[40822] | 0;
    $cmp2 = ($1 | 0) == 0;
    if ($cmp2) {
      $released_2 = 0;
      label = 14;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $add = $pad + 40 | 0;
    $2 = HEAP32[40819] | 0;
    $cmp3 = $2 >>> 0 > $add >>> 0;
    if ($cmp3) {
      label = 7;
      break;
    } else {
      label = 12;
      break;
    }
   case 7:
    $3 = HEAP32[2804] | 0;
    $add_neg = -40 - $pad | 0;
    $sub6 = $add_neg - 1 | 0;
    $sub = $sub6 + $2 | 0;
    $add7 = $sub + $3 | 0;
    $div = ($add7 >>> 0) / ($3 >>> 0) >>> 0;
    $sub8 = $div - 1 | 0;
    $mul = Math_imul($sub8, $3);
    $4 = $1;
    $call10 = _segment_holding($4) | 0;
    $sflags = $call10 + 12 | 0;
    $5 = HEAP32[$sflags >> 2] | 0;
    $and = $5 & 8;
    $tobool11 = ($and | 0) == 0;
    if ($tobool11) {
      label = 8;
      break;
    } else {
      label = 12;
      break;
    }
   case 8:
    $call20 = _sbrk(0) | 0;
    $base = $call10 | 0;
    $6 = HEAP32[$base >> 2] | 0;
    $size = $call10 + 4 | 0;
    $7 = HEAP32[$size >> 2] | 0;
    $add_ptr = $6 + $7 | 0;
    $cmp21 = ($call20 | 0) == ($add_ptr | 0);
    if ($cmp21) {
      label = 9;
      break;
    } else {
      label = 12;
      break;
    }
   case 9:
    $sub19 = -2147483648 - $3 | 0;
    $cmp17 = $mul >>> 0 > 2147483646;
    $sub19_mul = $cmp17 ? $sub19 : $mul;
    $sub23 = -$sub19_mul | 0;
    $call24 = _sbrk($sub23 | 0) | 0;
    $call25 = _sbrk(0) | 0;
    $cmp26 = ($call24 | 0) != -1;
    $cmp28 = $call25 >>> 0 < $call20 >>> 0;
    $or_cond = $cmp26 & $cmp28;
    if ($or_cond) {
      label = 10;
      break;
    } else {
      label = 12;
      break;
    }
   case 10:
    $sub_ptr_lhs_cast = $call20;
    $sub_ptr_rhs_cast = $call25;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $cmp34 = ($call20 | 0) == ($call25 | 0);
    if ($cmp34) {
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $size36 = $call10 + 4 | 0;
    $8 = HEAP32[$size36 >> 2] | 0;
    $sub37 = $8 - $sub_ptr_sub | 0;
    HEAP32[$size36 >> 2] = $sub37;
    $9 = HEAP32[40924] | 0;
    $sub38 = $9 - $sub_ptr_sub | 0;
    HEAP32[40924] = $sub38;
    $10 = HEAP32[40822] | 0;
    $11 = HEAP32[40819] | 0;
    $sub41 = $11 - $sub_ptr_sub | 0;
    _init_top($10, $sub41);
    $phitmp = ($call20 | 0) != ($call25 | 0);
    $phitmp4 = $phitmp & 1;
    $released_2 = $phitmp4;
    label = 14;
    break;
   case 12:
    $12 = HEAP32[40819] | 0;
    $13 = HEAP32[40823] | 0;
    $cmp47 = $12 >>> 0 > $13 >>> 0;
    if ($cmp47) {
      label = 13;
      break;
    } else {
      $released_2 = 0;
      label = 14;
      break;
    }
   case 13:
    HEAP32[40823] = -1;
    $released_2 = 0;
    label = 14;
    break;
   case 14:
    return $released_2 | 0;
  }
  return 0;
}
function _calloc($n_elements, $elem_size) {
  $n_elements = $n_elements | 0;
  $elem_size = $elem_size | 0;
  var $cmp = 0, $mul = 0, $or = 0, $tobool = 0, $div = 0, $cmp1 = 0, $mul_ = 0, $req_0 = 0, $call = 0, $cmp4 = 0, $head = 0, $0 = 0, $1 = 0, $and6 = 0, $cmp7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($n_elements | 0) == 0;
    if ($cmp) {
      $req_0 = 0;
      label = 5;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $mul = Math_imul($elem_size, $n_elements);
    $or = $elem_size | $n_elements;
    $tobool = $or >>> 0 > 65535;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $req_0 = $mul;
      label = 5;
      break;
    }
   case 4:
    $div = ($mul >>> 0) / ($n_elements >>> 0) >>> 0;
    $cmp1 = ($div | 0) == ($elem_size | 0);
    $mul_ = $cmp1 ? $mul : -1;
    $req_0 = $mul_;
    label = 5;
    break;
   case 5:
    $call = _malloc($req_0) | 0;
    $cmp4 = ($call | 0) == 0;
    if ($cmp4) {
      label = 8;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $head = $call - 4 | 0;
    $0 = $head;
    $1 = HEAP32[$0 >> 2] | 0;
    $and6 = $1 & 3;
    $cmp7 = ($and6 | 0) == 0;
    if ($cmp7) {
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    _memset($call | 0, 0, $req_0 | 0);
    label = 8;
    break;
   case 8:
    return $call | 0;
  }
  return 0;
}
function _realloc($oldmem, $bytes) {
  $oldmem = $oldmem | 0;
  $bytes = $bytes | 0;
  var $cmp = 0, $call = 0, $cmp1 = 0, $call3 = 0, $cmp5 = 0, $add6 = 0, $and = 0, $cond = 0, $add_ptr = 0, $0 = 0, $call7 = 0, $cmp8 = 0, $add_ptr10 = 0, $1 = 0, $call12 = 0, $cmp13 = 0, $head = 0, $2 = 0, $3 = 0, $and15 = 0, $and17 = 0, $cmp18 = 0, $cond19 = 0, $sub = 0, $cmp20 = 0, $cond24 = 0, $mem_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $cmp = ($oldmem | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 3:
    $call = _malloc($bytes) | 0;
    $mem_0 = $call;
    label = 12;
    break;
   case 4:
    $cmp1 = $bytes >>> 0 > 4294967231;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $call3 = ___errno_location() | 0;
    HEAP32[$call3 >> 2] = 12;
    $mem_0 = 0;
    label = 12;
    break;
   case 6:
    $cmp5 = $bytes >>> 0 < 11;
    if ($cmp5) {
      $cond = 16;
      label = 8;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $add6 = $bytes + 11 | 0;
    $and = $add6 & -8;
    $cond = $and;
    label = 8;
    break;
   case 8:
    $add_ptr = $oldmem - 8 | 0;
    $0 = $add_ptr;
    $call7 = _try_realloc_chunk($0, $cond) | 0;
    $cmp8 = ($call7 | 0) == 0;
    if ($cmp8) {
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $add_ptr10 = $call7 + 8 | 0;
    $1 = $add_ptr10;
    $mem_0 = $1;
    label = 12;
    break;
   case 10:
    $call12 = _malloc($bytes) | 0;
    $cmp13 = ($call12 | 0) == 0;
    if ($cmp13) {
      $mem_0 = 0;
      label = 12;
      break;
    } else {
      label = 11;
      break;
    }
   case 11:
    $head = $oldmem - 4 | 0;
    $2 = $head;
    $3 = HEAP32[$2 >> 2] | 0;
    $and15 = $3 & -8;
    $and17 = $3 & 3;
    $cmp18 = ($and17 | 0) == 0;
    $cond19 = $cmp18 ? 8 : 4;
    $sub = $and15 - $cond19 | 0;
    $cmp20 = $sub >>> 0 < $bytes >>> 0;
    $cond24 = $cmp20 ? $sub : $bytes;
    _memcpy($call12 | 0, $oldmem | 0, $cond24);
    _free($oldmem);
    $mem_0 = $call12;
    label = 12;
    break;
   case 12:
    return $mem_0 | 0;
  }
  return 0;
}
function _try_realloc_chunk($p, $nb) {
  $p = $p | 0;
  $nb = $nb | 0;
  var $head = 0, $0 = 0, $and = 0, $1 = 0, $add_ptr = 0, $2 = 0, $3 = 0, $cmp = 0, $and2 = 0, $cmp3 = 0, $cmp5 = 0, $or_cond = 0, $add_ptr_sum2122 = 0, $head6 = 0, $4 = 0, $5 = 0, $and7 = 0, $phitmp = 0, $cmp11 = 0, $call = 0, $cmp13 = 0, $sub = 0, $cmp15 = 0, $add_ptr17 = 0, $6 = 0, $and19 = 0, $or = 0, $or20 = 0, $add_ptr17_sum = 0, $head23 = 0, $7 = 0, $or28 = 0, $8 = 0, $or32 = 0, $9 = 0, $cmp34 = 0, $10 = 0, $add = 0, $cmp36 = 0, $sub40 = 0, $add_ptr41 = 0, $11 = 0, $and43 = 0, $or44 = 0, $or45 = 0, $add_ptr41_sum = 0, $head48 = 0, $12 = 0, $or50 = 0, $13 = 0, $cmp56 = 0, $14 = 0, $add58 = 0, $cmp59 = 0, $sub62 = 0, $cmp63 = 0, $add_ptr66 = 0, $15 = 0, $add_ptr67 = 0, $and69 = 0, $or70 = 0, $or71 = 0, $add_ptr66_sum = 0, $head74 = 0, $16 = 0, $or76 = 0, $prev_foot = 0, $add_ptr67_sum = 0, $head79 = 0, $17 = 0, $18 = 0, $and80 = 0, $and87 = 0, $or88 = 0, $or89 = 0, $add_ptr91_sum = 0, $head92 = 0, $19 = 0, $20 = 0, $or93 = 0, $storemerge18 = 0, $storemerge = 0, $and100 = 0, $tobool101 = 0, $and104 = 0, $add105 = 0, $cmp106 = 0, $sub110 = 0, $shr = 0, $cmp111 = 0, $add_ptr_sum12 = 0, $fd = 0, $21 = 0, $22 = 0, $add_ptr_sum13 = 0, $bk = 0, $23 = 0, $24 = 0, $shl = 0, $arrayidx = 0, $25 = 0, $cmp114 = 0, $26 = 0, $cmp116 = 0, $bk118 = 0, $27 = 0, $cmp119 = 0, $cmp125 = 0, $shl127 = 0, $neg = 0, $28 = 0, $and128 = 0, $cmp133 = 0, $29 = 0, $30 = 0, $cmp136 = 0, $fd138 = 0, $31 = 0, $cmp139 = 0, $bk147 = 0, $fd148 = 0, $32 = 0, $add_ptr_sum = 0, $parent = 0, $33 = 0, $34 = 0, $add_ptr_sum2 = 0, $bk155 = 0, $35 = 0, $36 = 0, $cmp156 = 0, $add_ptr_sum9 = 0, $fd159 = 0, $37 = 0, $38 = 0, $39 = 0, $cmp162 = 0, $bk164 = 0, $40 = 0, $cmp165 = 0, $fd167 = 0, $41 = 0, $cmp168 = 0, $child_sum = 0, $arrayidx179 = 0, $42 = 0, $43 = 0, $cmp180 = 0, $add_ptr_sum3 = 0, $child = 0, $arrayidx182 = 0, $44 = 0, $cmp183 = 0, $RP_0 = 0, $R_0 = 0, $arrayidx186 = 0, $45 = 0, $cmp187 = 0, $arrayidx190 = 0, $46 = 0, $cmp191 = 0, $CP_0 = 0, $47 = 0, $48 = 0, $49 = 0, $cmp195 = 0, $R_1 = 0, $cmp203 = 0, $add_ptr_sum7 = 0, $index = 0, $50 = 0, $51 = 0, $arrayidx206 = 0, $52 = 0, $cmp207 = 0, $cond = 0, $53 = 0, $shl214 = 0, $neg215 = 0, $54 = 0, $and216 = 0, $55 = 0, $56 = 0, $cmp220 = 0, $arrayidx226 = 0, $57 = 0, $cmp227 = 0, $arrayidx234 = 0, $cmp239 = 0, $58 = 0, $59 = 0, $cmp243 = 0, $parent248 = 0, $add_ptr_sum8 = 0, $child249 = 0, $arrayidx250 = 0, $60 = 0, $cmp251 = 0, $61 = 0, $62 = 0, $cmp255 = 0, $arrayidx261 = 0, $parent262 = 0, $child249_sum = 0, $arrayidx267 = 0, $63 = 0, $64 = 0, $cmp268 = 0, $65 = 0, $66 = 0, $cmp272 = 0, $arrayidx278 = 0, $parent279 = 0, $cmp288 = 0, $67 = 0, $and294 = 0, $or295 = 0, $or296 = 0, $add_ptr298_sum6 = 0, $head299 = 0, $68 = 0, $69 = 0, $or300 = 0, $add_ptr303 = 0, $70 = 0, $71 = 0, $and305 = 0, $or306 = 0, $or307 = 0, $add_ptr303_sum = 0, $head310 = 0, $72 = 0, $or315 = 0, $add_ptr317_sum5 = 0, $head318 = 0, $73 = 0, $74 = 0, $or319 = 0, $newp_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $head = $p + 4 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $and = $0 & -8;
    $1 = $p;
    $add_ptr = $1 + $and | 0;
    $2 = $add_ptr;
    $3 = HEAP32[40820] | 0;
    $cmp = $1 >>> 0 < $3 >>> 0;
    if ($cmp) {
      label = 70;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $and2 = $0 & 3;
    $cmp3 = ($and2 | 0) != 1;
    $cmp5 = $1 >>> 0 < $add_ptr >>> 0;
    $or_cond = $cmp3 & $cmp5;
    if ($or_cond) {
      label = 4;
      break;
    } else {
      label = 70;
      break;
    }
   case 4:
    $add_ptr_sum2122 = $and | 4;
    $head6 = $1 + $add_ptr_sum2122 | 0;
    $4 = $head6;
    $5 = HEAP32[$4 >> 2] | 0;
    $and7 = $5 & 1;
    $phitmp = ($and7 | 0) == 0;
    if ($phitmp) {
      label = 70;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $cmp11 = ($and2 | 0) == 0;
    if ($cmp11) {
      label = 6;
      break;
    } else {
      label = 7;
      break;
    }
   case 6:
    $call = _mmap_resize($p, $nb) | 0;
    $newp_0 = $call;
    label = 71;
    break;
   case 7:
    $cmp13 = $and >>> 0 < $nb >>> 0;
    if ($cmp13) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $sub = $and - $nb | 0;
    $cmp15 = $sub >>> 0 > 15;
    if ($cmp15) {
      label = 9;
      break;
    } else {
      $newp_0 = $p;
      label = 71;
      break;
    }
   case 9:
    $add_ptr17 = $1 + $nb | 0;
    $6 = $add_ptr17;
    $and19 = $0 & 1;
    $or = $and19 | $nb;
    $or20 = $or | 2;
    HEAP32[$head >> 2] = $or20;
    $add_ptr17_sum = $nb + 4 | 0;
    $head23 = $1 + $add_ptr17_sum | 0;
    $7 = $head23;
    $or28 = $sub | 3;
    HEAP32[$7 >> 2] = $or28;
    $8 = HEAP32[$4 >> 2] | 0;
    $or32 = $8 | 1;
    HEAP32[$4 >> 2] = $or32;
    _dispose_chunk($6, $sub);
    $newp_0 = $p;
    label = 71;
    break;
   case 10:
    $9 = HEAP32[40822] | 0;
    $cmp34 = ($2 | 0) == ($9 | 0);
    if ($cmp34) {
      label = 11;
      break;
    } else {
      label = 13;
      break;
    }
   case 11:
    $10 = HEAP32[40819] | 0;
    $add = $10 + $and | 0;
    $cmp36 = $add >>> 0 > $nb >>> 0;
    if ($cmp36) {
      label = 12;
      break;
    } else {
      $newp_0 = 0;
      label = 71;
      break;
    }
   case 12:
    $sub40 = $add - $nb | 0;
    $add_ptr41 = $1 + $nb | 0;
    $11 = $add_ptr41;
    $and43 = $0 & 1;
    $or44 = $and43 | $nb;
    $or45 = $or44 | 2;
    HEAP32[$head >> 2] = $or45;
    $add_ptr41_sum = $nb + 4 | 0;
    $head48 = $1 + $add_ptr41_sum | 0;
    $12 = $head48;
    $or50 = $sub40 | 1;
    HEAP32[$12 >> 2] = $or50;
    HEAP32[40822] = $11;
    HEAP32[40819] = $sub40;
    $newp_0 = $p;
    label = 71;
    break;
   case 13:
    $13 = HEAP32[40821] | 0;
    $cmp56 = ($2 | 0) == ($13 | 0);
    if ($cmp56) {
      label = 14;
      break;
    } else {
      label = 19;
      break;
    }
   case 14:
    $14 = HEAP32[40818] | 0;
    $add58 = $14 + $and | 0;
    $cmp59 = $add58 >>> 0 < $nb >>> 0;
    if ($cmp59) {
      $newp_0 = 0;
      label = 71;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $sub62 = $add58 - $nb | 0;
    $cmp63 = $sub62 >>> 0 > 15;
    if ($cmp63) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $add_ptr66 = $1 + $nb | 0;
    $15 = $add_ptr66;
    $add_ptr67 = $1 + $add58 | 0;
    $and69 = $0 & 1;
    $or70 = $and69 | $nb;
    $or71 = $or70 | 2;
    HEAP32[$head >> 2] = $or71;
    $add_ptr66_sum = $nb + 4 | 0;
    $head74 = $1 + $add_ptr66_sum | 0;
    $16 = $head74;
    $or76 = $sub62 | 1;
    HEAP32[$16 >> 2] = $or76;
    $prev_foot = $add_ptr67;
    HEAP32[$prev_foot >> 2] = $sub62;
    $add_ptr67_sum = $add58 + 4 | 0;
    $head79 = $1 + $add_ptr67_sum | 0;
    $17 = $head79;
    $18 = HEAP32[$17 >> 2] | 0;
    $and80 = $18 & -2;
    HEAP32[$17 >> 2] = $and80;
    $storemerge = $15;
    $storemerge18 = $sub62;
    label = 18;
    break;
   case 17:
    $and87 = $0 & 1;
    $or88 = $and87 | $add58;
    $or89 = $or88 | 2;
    HEAP32[$head >> 2] = $or89;
    $add_ptr91_sum = $add58 + 4 | 0;
    $head92 = $1 + $add_ptr91_sum | 0;
    $19 = $head92;
    $20 = HEAP32[$19 >> 2] | 0;
    $or93 = $20 | 1;
    HEAP32[$19 >> 2] = $or93;
    $storemerge = 0;
    $storemerge18 = 0;
    label = 18;
    break;
   case 18:
    HEAP32[40818] = $storemerge18;
    HEAP32[40821] = $storemerge;
    $newp_0 = $p;
    label = 71;
    break;
   case 19:
    $and100 = $5 & 2;
    $tobool101 = ($and100 | 0) == 0;
    if ($tobool101) {
      label = 20;
      break;
    } else {
      $newp_0 = 0;
      label = 71;
      break;
    }
   case 20:
    $and104 = $5 & -8;
    $add105 = $and104 + $and | 0;
    $cmp106 = $add105 >>> 0 < $nb >>> 0;
    if ($cmp106) {
      $newp_0 = 0;
      label = 71;
      break;
    } else {
      label = 21;
      break;
    }
   case 21:
    $sub110 = $add105 - $nb | 0;
    $shr = $5 >>> 3;
    $cmp111 = $5 >>> 0 < 256;
    if ($cmp111) {
      label = 22;
      break;
    } else {
      label = 33;
      break;
    }
   case 22:
    $add_ptr_sum12 = $and + 8 | 0;
    $fd = $1 + $add_ptr_sum12 | 0;
    $21 = $fd;
    $22 = HEAP32[$21 >> 2] | 0;
    $add_ptr_sum13 = $and + 12 | 0;
    $bk = $1 + $add_ptr_sum13 | 0;
    $23 = $bk;
    $24 = HEAP32[$23 >> 2] | 0;
    $shl = $shr << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $25 = $arrayidx;
    $cmp114 = ($22 | 0) == ($25 | 0);
    if ($cmp114) {
      label = 25;
      break;
    } else {
      label = 23;
      break;
    }
   case 23:
    $26 = $22;
    $cmp116 = $26 >>> 0 < $3 >>> 0;
    if ($cmp116) {
      label = 32;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $bk118 = $22 + 12 | 0;
    $27 = HEAP32[$bk118 >> 2] | 0;
    $cmp119 = ($27 | 0) == ($2 | 0);
    if ($cmp119) {
      label = 25;
      break;
    } else {
      label = 32;
      break;
    }
   case 25:
    $cmp125 = ($24 | 0) == ($22 | 0);
    if ($cmp125) {
      label = 26;
      break;
    } else {
      label = 27;
      break;
    }
   case 26:
    $shl127 = 1 << $shr;
    $neg = $shl127 ^ -1;
    $28 = HEAP32[40816] | 0;
    $and128 = $28 & $neg;
    HEAP32[40816] = $and128;
    label = 67;
    break;
   case 27:
    $cmp133 = ($24 | 0) == ($25 | 0);
    if ($cmp133) {
      label = 30;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $29 = $24;
    $30 = HEAP32[40820] | 0;
    $cmp136 = $29 >>> 0 < $30 >>> 0;
    if ($cmp136) {
      label = 31;
      break;
    } else {
      label = 29;
      break;
    }
   case 29:
    $fd138 = $24 + 8 | 0;
    $31 = HEAP32[$fd138 >> 2] | 0;
    $cmp139 = ($31 | 0) == ($2 | 0);
    if ($cmp139) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $bk147 = $22 + 12 | 0;
    HEAP32[$bk147 >> 2] = $24;
    $fd148 = $24 + 8 | 0;
    HEAP32[$fd148 >> 2] = $22;
    label = 67;
    break;
   case 31:
    _abort();
    return 0;
    return 0;
   case 32:
    _abort();
    return 0;
    return 0;
   case 33:
    $32 = $add_ptr;
    $add_ptr_sum = $and + 24 | 0;
    $parent = $1 + $add_ptr_sum | 0;
    $33 = $parent;
    $34 = HEAP32[$33 >> 2] | 0;
    $add_ptr_sum2 = $and + 12 | 0;
    $bk155 = $1 + $add_ptr_sum2 | 0;
    $35 = $bk155;
    $36 = HEAP32[$35 >> 2] | 0;
    $cmp156 = ($36 | 0) == ($32 | 0);
    if ($cmp156) {
      label = 39;
      break;
    } else {
      label = 34;
      break;
    }
   case 34:
    $add_ptr_sum9 = $and + 8 | 0;
    $fd159 = $1 + $add_ptr_sum9 | 0;
    $37 = $fd159;
    $38 = HEAP32[$37 >> 2] | 0;
    $39 = $38;
    $cmp162 = $39 >>> 0 < $3 >>> 0;
    if ($cmp162) {
      label = 38;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    $bk164 = $38 + 12 | 0;
    $40 = HEAP32[$bk164 >> 2] | 0;
    $cmp165 = ($40 | 0) == ($32 | 0);
    if ($cmp165) {
      label = 36;
      break;
    } else {
      label = 38;
      break;
    }
   case 36:
    $fd167 = $36 + 8 | 0;
    $41 = HEAP32[$fd167 >> 2] | 0;
    $cmp168 = ($41 | 0) == ($32 | 0);
    if ($cmp168) {
      label = 37;
      break;
    } else {
      label = 38;
      break;
    }
   case 37:
    HEAP32[$bk164 >> 2] = $36;
    HEAP32[$fd167 >> 2] = $38;
    $R_1 = $36;
    label = 47;
    break;
   case 38:
    _abort();
    return 0;
    return 0;
   case 39:
    $child_sum = $and + 20 | 0;
    $arrayidx179 = $1 + $child_sum | 0;
    $42 = $arrayidx179;
    $43 = HEAP32[$42 >> 2] | 0;
    $cmp180 = ($43 | 0) == 0;
    if ($cmp180) {
      label = 40;
      break;
    } else {
      $R_0 = $43;
      $RP_0 = $42;
      label = 41;
      break;
    }
   case 40:
    $add_ptr_sum3 = $and + 16 | 0;
    $child = $1 + $add_ptr_sum3 | 0;
    $arrayidx182 = $child;
    $44 = HEAP32[$arrayidx182 >> 2] | 0;
    $cmp183 = ($44 | 0) == 0;
    if ($cmp183) {
      $R_1 = 0;
      label = 47;
      break;
    } else {
      $R_0 = $44;
      $RP_0 = $arrayidx182;
      label = 41;
      break;
    }
   case 41:
    $arrayidx186 = $R_0 + 20 | 0;
    $45 = HEAP32[$arrayidx186 >> 2] | 0;
    $cmp187 = ($45 | 0) == 0;
    if ($cmp187) {
      label = 42;
      break;
    } else {
      $CP_0 = $arrayidx186;
      label = 43;
      break;
    }
   case 42:
    $arrayidx190 = $R_0 + 16 | 0;
    $46 = HEAP32[$arrayidx190 >> 2] | 0;
    $cmp191 = ($46 | 0) == 0;
    if ($cmp191) {
      label = 44;
      break;
    } else {
      $CP_0 = $arrayidx190;
      label = 43;
      break;
    }
   case 43:
    $47 = HEAP32[$CP_0 >> 2] | 0;
    $R_0 = $47;
    $RP_0 = $CP_0;
    label = 41;
    break;
   case 44:
    $48 = $RP_0;
    $49 = HEAP32[40820] | 0;
    $cmp195 = $48 >>> 0 < $49 >>> 0;
    if ($cmp195) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    HEAP32[$RP_0 >> 2] = 0;
    $R_1 = $R_0;
    label = 47;
    break;
   case 46:
    _abort();
    return 0;
    return 0;
   case 47:
    $cmp203 = ($34 | 0) == 0;
    if ($cmp203) {
      label = 67;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $add_ptr_sum7 = $and + 28 | 0;
    $index = $1 + $add_ptr_sum7 | 0;
    $50 = $index;
    $51 = HEAP32[$50 >> 2] | 0;
    $arrayidx206 = 163568 + ($51 << 2) | 0;
    $52 = HEAP32[$arrayidx206 >> 2] | 0;
    $cmp207 = ($32 | 0) == ($52 | 0);
    if ($cmp207) {
      label = 49;
      break;
    } else {
      label = 51;
      break;
    }
   case 49:
    HEAP32[$arrayidx206 >> 2] = $R_1;
    $cond = ($R_1 | 0) == 0;
    if ($cond) {
      label = 50;
      break;
    } else {
      label = 57;
      break;
    }
   case 50:
    $53 = HEAP32[$50 >> 2] | 0;
    $shl214 = 1 << $53;
    $neg215 = $shl214 ^ -1;
    $54 = HEAP32[40817] | 0;
    $and216 = $54 & $neg215;
    HEAP32[40817] = $and216;
    label = 67;
    break;
   case 51:
    $55 = $34;
    $56 = HEAP32[40820] | 0;
    $cmp220 = $55 >>> 0 < $56 >>> 0;
    if ($cmp220) {
      label = 55;
      break;
    } else {
      label = 52;
      break;
    }
   case 52:
    $arrayidx226 = $34 + 16 | 0;
    $57 = HEAP32[$arrayidx226 >> 2] | 0;
    $cmp227 = ($57 | 0) == ($32 | 0);
    if ($cmp227) {
      label = 53;
      break;
    } else {
      label = 54;
      break;
    }
   case 53:
    HEAP32[$arrayidx226 >> 2] = $R_1;
    label = 56;
    break;
   case 54:
    $arrayidx234 = $34 + 20 | 0;
    HEAP32[$arrayidx234 >> 2] = $R_1;
    label = 56;
    break;
   case 55:
    _abort();
    return 0;
    return 0;
   case 56:
    $cmp239 = ($R_1 | 0) == 0;
    if ($cmp239) {
      label = 67;
      break;
    } else {
      label = 57;
      break;
    }
   case 57:
    $58 = $R_1;
    $59 = HEAP32[40820] | 0;
    $cmp243 = $58 >>> 0 < $59 >>> 0;
    if ($cmp243) {
      label = 66;
      break;
    } else {
      label = 58;
      break;
    }
   case 58:
    $parent248 = $R_1 + 24 | 0;
    HEAP32[$parent248 >> 2] = $34;
    $add_ptr_sum8 = $and + 16 | 0;
    $child249 = $1 + $add_ptr_sum8 | 0;
    $arrayidx250 = $child249;
    $60 = HEAP32[$arrayidx250 >> 2] | 0;
    $cmp251 = ($60 | 0) == 0;
    if ($cmp251) {
      label = 62;
      break;
    } else {
      label = 59;
      break;
    }
   case 59:
    $61 = $60;
    $62 = HEAP32[40820] | 0;
    $cmp255 = $61 >>> 0 < $62 >>> 0;
    if ($cmp255) {
      label = 61;
      break;
    } else {
      label = 60;
      break;
    }
   case 60:
    $arrayidx261 = $R_1 + 16 | 0;
    HEAP32[$arrayidx261 >> 2] = $60;
    $parent262 = $60 + 24 | 0;
    HEAP32[$parent262 >> 2] = $R_1;
    label = 62;
    break;
   case 61:
    _abort();
    return 0;
    return 0;
   case 62:
    $child249_sum = $and + 20 | 0;
    $arrayidx267 = $1 + $child249_sum | 0;
    $63 = $arrayidx267;
    $64 = HEAP32[$63 >> 2] | 0;
    $cmp268 = ($64 | 0) == 0;
    if ($cmp268) {
      label = 67;
      break;
    } else {
      label = 63;
      break;
    }
   case 63:
    $65 = $64;
    $66 = HEAP32[40820] | 0;
    $cmp272 = $65 >>> 0 < $66 >>> 0;
    if ($cmp272) {
      label = 65;
      break;
    } else {
      label = 64;
      break;
    }
   case 64:
    $arrayidx278 = $R_1 + 20 | 0;
    HEAP32[$arrayidx278 >> 2] = $64;
    $parent279 = $64 + 24 | 0;
    HEAP32[$parent279 >> 2] = $R_1;
    label = 67;
    break;
   case 65:
    _abort();
    return 0;
    return 0;
   case 66:
    _abort();
    return 0;
    return 0;
   case 67:
    $cmp288 = $sub110 >>> 0 < 16;
    if ($cmp288) {
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 68:
    $67 = HEAP32[$head >> 2] | 0;
    $and294 = $67 & 1;
    $or295 = $add105 | $and294;
    $or296 = $or295 | 2;
    HEAP32[$head >> 2] = $or296;
    $add_ptr298_sum6 = $add105 | 4;
    $head299 = $1 + $add_ptr298_sum6 | 0;
    $68 = $head299;
    $69 = HEAP32[$68 >> 2] | 0;
    $or300 = $69 | 1;
    HEAP32[$68 >> 2] = $or300;
    $newp_0 = $p;
    label = 71;
    break;
   case 69:
    $add_ptr303 = $1 + $nb | 0;
    $70 = $add_ptr303;
    $71 = HEAP32[$head >> 2] | 0;
    $and305 = $71 & 1;
    $or306 = $and305 | $nb;
    $or307 = $or306 | 2;
    HEAP32[$head >> 2] = $or307;
    $add_ptr303_sum = $nb + 4 | 0;
    $head310 = $1 + $add_ptr303_sum | 0;
    $72 = $head310;
    $or315 = $sub110 | 3;
    HEAP32[$72 >> 2] = $or315;
    $add_ptr317_sum5 = $add105 | 4;
    $head318 = $1 + $add_ptr317_sum5 | 0;
    $73 = $head318;
    $74 = HEAP32[$73 >> 2] | 0;
    $or319 = $74 | 1;
    HEAP32[$73 >> 2] = $or319;
    _dispose_chunk($70, $sub110);
    $newp_0 = $p;
    label = 71;
    break;
   case 70:
    _abort();
    return 0;
    return 0;
   case 71:
    return $newp_0 | 0;
  }
  return 0;
}
function _init_mparams() {
  var $0 = 0, $cmp = 0, $call = 0, $sub = 0, $and = 0, $cmp1 = 0, $call6 = 0, $xor = 0, $and7 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[2802] | 0;
    $cmp = ($0 | 0) == 0;
    if ($cmp) {
      label = 3;
      break;
    } else {
      label = 6;
      break;
    }
   case 3:
    $call = _sysconf(8) | 0;
    $sub = $call - 1 | 0;
    $and = $sub & $call;
    $cmp1 = ($and | 0) == 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    _abort();
   case 5:
    HEAP32[2804] = $call;
    HEAP32[2803] = $call;
    HEAP32[2805] = -1;
    HEAP32[2806] = 2097152;
    HEAP32[2807] = 0;
    HEAP32[40927] = 0;
    $call6 = _time(0) | 0;
    $xor = $call6 & -16;
    $and7 = $xor ^ 1431655768;
    HEAP32[2802] = $and7;
    label = 6;
    break;
   case 6:
    return;
  }
}
function _mmap_resize($oldp, $nb) {
  $oldp = $oldp | 0;
  $nb = $nb | 0;
  var $head = 0, $0 = 0, $and = 0, $cmp = 0, $add = 0, $cmp1 = 0, $sub = 0, $1 = 0, $shl = 0, $cmp2 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $head = $oldp + 4 | 0;
    $0 = HEAP32[$head >> 2] | 0;
    $and = $0 & -8;
    $cmp = $nb >>> 0 < 256;
    if ($cmp) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $add = $nb + 4 | 0;
    $cmp1 = $and >>> 0 < $add >>> 0;
    if ($cmp1) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $sub = $and - $nb | 0;
    $1 = HEAP32[2804] | 0;
    $shl = $1 << 1;
    $cmp2 = $sub >>> 0 > $shl >>> 0;
    if ($cmp2) {
      label = 5;
      break;
    } else {
      $retval_0 = $oldp;
      label = 6;
      break;
    }
   case 5:
    $retval_0 = 0;
    label = 6;
    break;
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _segment_holding($addr) {
  $addr = $addr | 0;
  var $sp_0 = 0, $base = 0, $0 = 0, $cmp = 0, $size = 0, $1 = 0, $add_ptr = 0, $cmp2 = 0, $next = 0, $2 = 0, $cmp3 = 0, $retval_0 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $sp_0 = 163712;
    label = 3;
    break;
   case 3:
    $base = $sp_0 | 0;
    $0 = HEAP32[$base >> 2] | 0;
    $cmp = $0 >>> 0 > $addr >>> 0;
    if ($cmp) {
      label = 5;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $size = $sp_0 + 4 | 0;
    $1 = HEAP32[$size >> 2] | 0;
    $add_ptr = $0 + $1 | 0;
    $cmp2 = $add_ptr >>> 0 > $addr >>> 0;
    if ($cmp2) {
      $retval_0 = $sp_0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $next = $sp_0 + 8 | 0;
    $2 = HEAP32[$next >> 2] | 0;
    $cmp3 = ($2 | 0) == 0;
    if ($cmp3) {
      $retval_0 = 0;
      label = 6;
      break;
    } else {
      $sp_0 = $2;
      label = 3;
      break;
    }
   case 6:
    return $retval_0 | 0;
  }
  return 0;
}
function _dispose_chunk($p, $psize) {
  $p = $p | 0;
  $psize = $psize | 0;
  var $0 = 0, $add_ptr = 0, $1 = 0, $head = 0, $2 = 0, $and = 0, $tobool = 0, $prev_foot = 0, $3 = 0, $and2 = 0, $cmp = 0, $idx_neg = 0, $add_ptr5 = 0, $4 = 0, $add6 = 0, $5 = 0, $cmp7 = 0, $6 = 0, $cmp10 = 0, $shr = 0, $cmp13 = 0, $add_ptr5_sum29 = 0, $fd = 0, $7 = 0, $8 = 0, $add_ptr5_sum30 = 0, $bk = 0, $9 = 0, $10 = 0, $shl = 0, $arrayidx = 0, $11 = 0, $cmp17 = 0, $12 = 0, $cmp20 = 0, $bk22 = 0, $13 = 0, $cmp23 = 0, $cmp28 = 0, $shl31 = 0, $neg = 0, $14 = 0, $and32 = 0, $cmp36 = 0, $15 = 0, $16 = 0, $cmp40 = 0, $fd43 = 0, $17 = 0, $cmp44 = 0, $bk52 = 0, $fd53 = 0, $18 = 0, $add_ptr5_sum22 = 0, $parent = 0, $19 = 0, $20 = 0, $add_ptr5_sum23 = 0, $bk60 = 0, $21 = 0, $22 = 0, $cmp61 = 0, $add_ptr5_sum27 = 0, $fd65 = 0, $23 = 0, $24 = 0, $25 = 0, $cmp68 = 0, $bk70 = 0, $26 = 0, $cmp71 = 0, $fd74 = 0, $27 = 0, $cmp75 = 0, $add_ptr5_sum24 = 0, $child_sum = 0, $arrayidx86 = 0, $28 = 0, $29 = 0, $cmp87 = 0, $child = 0, $arrayidx90 = 0, $30 = 0, $cmp91 = 0, $RP_0 = 0, $R_0 = 0, $arrayidx95 = 0, $31 = 0, $cmp96 = 0, $arrayidx100 = 0, $32 = 0, $cmp101 = 0, $CP_0 = 0, $33 = 0, $34 = 0, $35 = 0, $cmp106 = 0, $R_1 = 0, $cmp115 = 0, $add_ptr5_sum25 = 0, $index = 0, $36 = 0, $37 = 0, $arrayidx118 = 0, $38 = 0, $cmp119 = 0, $cond36 = 0, $39 = 0, $shl126 = 0, $neg127 = 0, $40 = 0, $and128 = 0, $41 = 0, $42 = 0, $cmp132 = 0, $arrayidx138 = 0, $43 = 0, $cmp139 = 0, $arrayidx146 = 0, $cmp151 = 0, $44 = 0, $45 = 0, $cmp155 = 0, $parent160 = 0, $add_ptr5_sum26 = 0, $child161 = 0, $arrayidx162 = 0, $46 = 0, $cmp163 = 0, $47 = 0, $48 = 0, $cmp167 = 0, $arrayidx173 = 0, $parent174 = 0, $child161_sum = 0, $arrayidx179 = 0, $49 = 0, $50 = 0, $cmp180 = 0, $51 = 0, $52 = 0, $cmp184 = 0, $arrayidx190 = 0, $parent191 = 0, $add_ptr_sum = 0, $head201 = 0, $53 = 0, $54 = 0, $and202 = 0, $cmp203 = 0, $55 = 0, $and207 = 0, $or = 0, $add_ptr5_sum = 0, $head208 = 0, $56 = 0, $prev_foot210 = 0, $psize_addr_0 = 0, $p_addr_0 = 0, $57 = 0, $cmp217 = 0, $add_ptr_sum1 = 0, $head222 = 0, $58 = 0, $59 = 0, $and223 = 0, $tobool224 = 0, $60 = 0, $cmp226 = 0, $61 = 0, $add229 = 0, $or231 = 0, $head232 = 0, $62 = 0, $cmp234 = 0, $63 = 0, $cmp242 = 0, $64 = 0, $add246 = 0, $or248 = 0, $head249 = 0, $65 = 0, $add_ptr250 = 0, $prev_foot251 = 0, $and254 = 0, $add255 = 0, $shr256 = 0, $cmp257 = 0, $add_ptr_sum17 = 0, $fd261 = 0, $66 = 0, $67 = 0, $add_ptr_sum18 = 0, $bk263 = 0, $68 = 0, $69 = 0, $shl266 = 0, $arrayidx268 = 0, $70 = 0, $cmp269 = 0, $71 = 0, $cmp273 = 0, $bk276 = 0, $72 = 0, $cmp277 = 0, $cmp286 = 0, $shl289 = 0, $neg290 = 0, $73 = 0, $and292 = 0, $cmp297 = 0, $74 = 0, $75 = 0, $cmp301 = 0, $fd304 = 0, $76 = 0, $cmp305 = 0, $bk314 = 0, $fd315 = 0, $77 = 0, $add_ptr_sum2 = 0, $parent324 = 0, $78 = 0, $79 = 0, $add_ptr_sum3 = 0, $bk326 = 0, $80 = 0, $81 = 0, $cmp327 = 0, $add_ptr_sum15 = 0, $fd331 = 0, $82 = 0, $83 = 0, $84 = 0, $cmp334 = 0, $bk337 = 0, $85 = 0, $cmp338 = 0, $fd341 = 0, $86 = 0, $cmp342 = 0, $child355_sum = 0, $arrayidx356 = 0, $87 = 0, $88 = 0, $cmp357 = 0, $add_ptr_sum4 = 0, $child355 = 0, $arrayidx361 = 0, $89 = 0, $cmp362 = 0, $RP354_0 = 0, $R325_0 = 0, $arrayidx368 = 0, $90 = 0, $cmp369 = 0, $arrayidx373 = 0, $91 = 0, $cmp374 = 0, $CP365_0 = 0, $92 = 0, $93 = 0, $94 = 0, $cmp381 = 0, $R325_1 = 0, $cmp390 = 0, $add_ptr_sum13 = 0, $index394 = 0, $95 = 0, $96 = 0, $arrayidx396 = 0, $97 = 0, $cmp397 = 0, $cond37 = 0, $98 = 0, $shl404 = 0, $neg405 = 0, $99 = 0, $and407 = 0, $100 = 0, $101 = 0, $cmp411 = 0, $arrayidx417 = 0, $102 = 0, $cmp418 = 0, $arrayidx425 = 0, $cmp430 = 0, $103 = 0, $104 = 0, $cmp434 = 0, $parent441 = 0, $add_ptr_sum14 = 0, $child442 = 0, $arrayidx443 = 0, $105 = 0, $cmp444 = 0, $106 = 0, $107 = 0, $cmp448 = 0, $arrayidx454 = 0, $parent455 = 0, $child442_sum = 0, $arrayidx460 = 0, $108 = 0, $109 = 0, $cmp461 = 0, $110 = 0, $111 = 0, $cmp465 = 0, $arrayidx471 = 0, $parent472 = 0, $or481 = 0, $head482 = 0, $112 = 0, $add_ptr483 = 0, $prev_foot484 = 0, $113 = 0, $cmp486 = 0, $and495 = 0, $or496 = 0, $head497 = 0, $114 = 0, $add_ptr498 = 0, $prev_foot499 = 0, $psize_addr_1 = 0, $shr501 = 0, $cmp502 = 0, $shl508 = 0, $arrayidx510 = 0, $115 = 0, $116 = 0, $shl513 = 0, $and514 = 0, $tobool515 = 0, $or519 = 0, $arrayidx510_sum12 = 0, $117 = 0, $118 = 0, $119 = 0, $120 = 0, $cmp523 = 0, $F511_0 = 0, $arrayidx510_sum = 0, $121 = 0, $bk533 = 0, $fd534 = 0, $bk535 = 0, $122 = 0, $shr540 = 0, $cmp541 = 0, $cmp545 = 0, $sub = 0, $shr549 = 0, $and550 = 0, $shl551 = 0, $sub552 = 0, $shr553 = 0, $and554 = 0, $add555 = 0, $shl556 = 0, $sub557 = 0, $shr558 = 0, $and559 = 0, $add560 = 0, $sub561 = 0, $shl562 = 0, $shr563 = 0, $add564 = 0, $shl565 = 0, $add566 = 0, $shr567 = 0, $and568 = 0, $add569 = 0, $I539_0 = 0, $arrayidx573 = 0, $index574 = 0, $I539_0_c = 0, $arrayidx576 = 0, $123 = 0, $124 = 0, $shl580 = 0, $and581 = 0, $tobool582 = 0, $or586 = 0, $parent587 = 0, $_c = 0, $bk588 = 0, $fd589 = 0, $125 = 0, $cmp592 = 0, $shr594 = 0, $sub597 = 0, $cond = 0, $shl598 = 0, $T_0 = 0, $K591_0 = 0, $head599 = 0, $126 = 0, $and600 = 0, $cmp601 = 0, $shr604 = 0, $arrayidx607 = 0, $127 = 0, $cmp609 = 0, $shl608 = 0, $128 = 0, $129 = 0, $cmp614 = 0, $parent619 = 0, $T_0_c9 = 0, $bk620 = 0, $fd621 = 0, $fd626 = 0, $130 = 0, $131 = 0, $132 = 0, $cmp628 = 0, $133 = 0, $cmp632 = 0, $bk639 = 0, $fd641 = 0, $_c8 = 0, $bk642 = 0, $T_0_c = 0, $parent643 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $p;
    $add_ptr = $0 + $psize | 0;
    $1 = $add_ptr;
    $head = $p + 4 | 0;
    $2 = HEAP32[$head >> 2] | 0;
    $and = $2 & 1;
    $tobool = ($and | 0) == 0;
    if ($tobool) {
      label = 3;
      break;
    } else {
      $p_addr_0 = $p;
      $psize_addr_0 = $psize;
      label = 55;
      break;
    }
   case 3:
    $prev_foot = $p | 0;
    $3 = HEAP32[$prev_foot >> 2] | 0;
    $and2 = $2 & 3;
    $cmp = ($and2 | 0) == 0;
    if ($cmp) {
      label = 135;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    $idx_neg = -$3 | 0;
    $add_ptr5 = $0 + $idx_neg | 0;
    $4 = $add_ptr5;
    $add6 = $3 + $psize | 0;
    $5 = HEAP32[40820] | 0;
    $cmp7 = $add_ptr5 >>> 0 < $5 >>> 0;
    if ($cmp7) {
      label = 54;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $6 = HEAP32[40821] | 0;
    $cmp10 = ($4 | 0) == ($6 | 0);
    if ($cmp10) {
      label = 52;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $shr = $3 >>> 3;
    $cmp13 = $3 >>> 0 < 256;
    if ($cmp13) {
      label = 7;
      break;
    } else {
      label = 18;
      break;
    }
   case 7:
    $add_ptr5_sum29 = 8 - $3 | 0;
    $fd = $0 + $add_ptr5_sum29 | 0;
    $7 = $fd;
    $8 = HEAP32[$7 >> 2] | 0;
    $add_ptr5_sum30 = 12 - $3 | 0;
    $bk = $0 + $add_ptr5_sum30 | 0;
    $9 = $bk;
    $10 = HEAP32[$9 >> 2] | 0;
    $shl = $shr << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $11 = $arrayidx;
    $cmp17 = ($8 | 0) == ($11 | 0);
    if ($cmp17) {
      label = 10;
      break;
    } else {
      label = 8;
      break;
    }
   case 8:
    $12 = $8;
    $cmp20 = $12 >>> 0 < $5 >>> 0;
    if ($cmp20) {
      label = 17;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $bk22 = $8 + 12 | 0;
    $13 = HEAP32[$bk22 >> 2] | 0;
    $cmp23 = ($13 | 0) == ($4 | 0);
    if ($cmp23) {
      label = 10;
      break;
    } else {
      label = 17;
      break;
    }
   case 10:
    $cmp28 = ($10 | 0) == ($8 | 0);
    if ($cmp28) {
      label = 11;
      break;
    } else {
      label = 12;
      break;
    }
   case 11:
    $shl31 = 1 << $shr;
    $neg = $shl31 ^ -1;
    $14 = HEAP32[40816] | 0;
    $and32 = $14 & $neg;
    HEAP32[40816] = $and32;
    $p_addr_0 = $4;
    $psize_addr_0 = $add6;
    label = 55;
    break;
   case 12:
    $cmp36 = ($10 | 0) == ($11 | 0);
    if ($cmp36) {
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $15 = $10;
    $16 = HEAP32[40820] | 0;
    $cmp40 = $15 >>> 0 < $16 >>> 0;
    if ($cmp40) {
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $fd43 = $10 + 8 | 0;
    $17 = HEAP32[$fd43 >> 2] | 0;
    $cmp44 = ($17 | 0) == ($4 | 0);
    if ($cmp44) {
      label = 15;
      break;
    } else {
      label = 16;
      break;
    }
   case 15:
    $bk52 = $8 + 12 | 0;
    HEAP32[$bk52 >> 2] = $10;
    $fd53 = $10 + 8 | 0;
    HEAP32[$fd53 >> 2] = $8;
    $p_addr_0 = $4;
    $psize_addr_0 = $add6;
    label = 55;
    break;
   case 16:
    _abort();
   case 17:
    _abort();
   case 18:
    $18 = $add_ptr5;
    $add_ptr5_sum22 = 24 - $3 | 0;
    $parent = $0 + $add_ptr5_sum22 | 0;
    $19 = $parent;
    $20 = HEAP32[$19 >> 2] | 0;
    $add_ptr5_sum23 = 12 - $3 | 0;
    $bk60 = $0 + $add_ptr5_sum23 | 0;
    $21 = $bk60;
    $22 = HEAP32[$21 >> 2] | 0;
    $cmp61 = ($22 | 0) == ($18 | 0);
    if ($cmp61) {
      label = 24;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $add_ptr5_sum27 = 8 - $3 | 0;
    $fd65 = $0 + $add_ptr5_sum27 | 0;
    $23 = $fd65;
    $24 = HEAP32[$23 >> 2] | 0;
    $25 = $24;
    $cmp68 = $25 >>> 0 < $5 >>> 0;
    if ($cmp68) {
      label = 23;
      break;
    } else {
      label = 20;
      break;
    }
   case 20:
    $bk70 = $24 + 12 | 0;
    $26 = HEAP32[$bk70 >> 2] | 0;
    $cmp71 = ($26 | 0) == ($18 | 0);
    if ($cmp71) {
      label = 21;
      break;
    } else {
      label = 23;
      break;
    }
   case 21:
    $fd74 = $22 + 8 | 0;
    $27 = HEAP32[$fd74 >> 2] | 0;
    $cmp75 = ($27 | 0) == ($18 | 0);
    if ($cmp75) {
      label = 22;
      break;
    } else {
      label = 23;
      break;
    }
   case 22:
    HEAP32[$bk70 >> 2] = $22;
    HEAP32[$fd74 >> 2] = $24;
    $R_1 = $22;
    label = 32;
    break;
   case 23:
    _abort();
   case 24:
    $add_ptr5_sum24 = 16 - $3 | 0;
    $child_sum = $add_ptr5_sum24 + 4 | 0;
    $arrayidx86 = $0 + $child_sum | 0;
    $28 = $arrayidx86;
    $29 = HEAP32[$28 >> 2] | 0;
    $cmp87 = ($29 | 0) == 0;
    if ($cmp87) {
      label = 25;
      break;
    } else {
      $R_0 = $29;
      $RP_0 = $28;
      label = 26;
      break;
    }
   case 25:
    $child = $0 + $add_ptr5_sum24 | 0;
    $arrayidx90 = $child;
    $30 = HEAP32[$arrayidx90 >> 2] | 0;
    $cmp91 = ($30 | 0) == 0;
    if ($cmp91) {
      $R_1 = 0;
      label = 32;
      break;
    } else {
      $R_0 = $30;
      $RP_0 = $arrayidx90;
      label = 26;
      break;
    }
   case 26:
    $arrayidx95 = $R_0 + 20 | 0;
    $31 = HEAP32[$arrayidx95 >> 2] | 0;
    $cmp96 = ($31 | 0) == 0;
    if ($cmp96) {
      label = 27;
      break;
    } else {
      $CP_0 = $arrayidx95;
      label = 28;
      break;
    }
   case 27:
    $arrayidx100 = $R_0 + 16 | 0;
    $32 = HEAP32[$arrayidx100 >> 2] | 0;
    $cmp101 = ($32 | 0) == 0;
    if ($cmp101) {
      label = 29;
      break;
    } else {
      $CP_0 = $arrayidx100;
      label = 28;
      break;
    }
   case 28:
    $33 = HEAP32[$CP_0 >> 2] | 0;
    $R_0 = $33;
    $RP_0 = $CP_0;
    label = 26;
    break;
   case 29:
    $34 = $RP_0;
    $35 = HEAP32[40820] | 0;
    $cmp106 = $34 >>> 0 < $35 >>> 0;
    if ($cmp106) {
      label = 31;
      break;
    } else {
      label = 30;
      break;
    }
   case 30:
    HEAP32[$RP_0 >> 2] = 0;
    $R_1 = $R_0;
    label = 32;
    break;
   case 31:
    _abort();
   case 32:
    $cmp115 = ($20 | 0) == 0;
    if ($cmp115) {
      $p_addr_0 = $4;
      $psize_addr_0 = $add6;
      label = 55;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $add_ptr5_sum25 = 28 - $3 | 0;
    $index = $0 + $add_ptr5_sum25 | 0;
    $36 = $index;
    $37 = HEAP32[$36 >> 2] | 0;
    $arrayidx118 = 163568 + ($37 << 2) | 0;
    $38 = HEAP32[$arrayidx118 >> 2] | 0;
    $cmp119 = ($18 | 0) == ($38 | 0);
    if ($cmp119) {
      label = 34;
      break;
    } else {
      label = 36;
      break;
    }
   case 34:
    HEAP32[$arrayidx118 >> 2] = $R_1;
    $cond36 = ($R_1 | 0) == 0;
    if ($cond36) {
      label = 35;
      break;
    } else {
      label = 42;
      break;
    }
   case 35:
    $39 = HEAP32[$36 >> 2] | 0;
    $shl126 = 1 << $39;
    $neg127 = $shl126 ^ -1;
    $40 = HEAP32[40817] | 0;
    $and128 = $40 & $neg127;
    HEAP32[40817] = $and128;
    $p_addr_0 = $4;
    $psize_addr_0 = $add6;
    label = 55;
    break;
   case 36:
    $41 = $20;
    $42 = HEAP32[40820] | 0;
    $cmp132 = $41 >>> 0 < $42 >>> 0;
    if ($cmp132) {
      label = 40;
      break;
    } else {
      label = 37;
      break;
    }
   case 37:
    $arrayidx138 = $20 + 16 | 0;
    $43 = HEAP32[$arrayidx138 >> 2] | 0;
    $cmp139 = ($43 | 0) == ($18 | 0);
    if ($cmp139) {
      label = 38;
      break;
    } else {
      label = 39;
      break;
    }
   case 38:
    HEAP32[$arrayidx138 >> 2] = $R_1;
    label = 41;
    break;
   case 39:
    $arrayidx146 = $20 + 20 | 0;
    HEAP32[$arrayidx146 >> 2] = $R_1;
    label = 41;
    break;
   case 40:
    _abort();
   case 41:
    $cmp151 = ($R_1 | 0) == 0;
    if ($cmp151) {
      $p_addr_0 = $4;
      $psize_addr_0 = $add6;
      label = 55;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $44 = $R_1;
    $45 = HEAP32[40820] | 0;
    $cmp155 = $44 >>> 0 < $45 >>> 0;
    if ($cmp155) {
      label = 51;
      break;
    } else {
      label = 43;
      break;
    }
   case 43:
    $parent160 = $R_1 + 24 | 0;
    HEAP32[$parent160 >> 2] = $20;
    $add_ptr5_sum26 = 16 - $3 | 0;
    $child161 = $0 + $add_ptr5_sum26 | 0;
    $arrayidx162 = $child161;
    $46 = HEAP32[$arrayidx162 >> 2] | 0;
    $cmp163 = ($46 | 0) == 0;
    if ($cmp163) {
      label = 47;
      break;
    } else {
      label = 44;
      break;
    }
   case 44:
    $47 = $46;
    $48 = HEAP32[40820] | 0;
    $cmp167 = $47 >>> 0 < $48 >>> 0;
    if ($cmp167) {
      label = 46;
      break;
    } else {
      label = 45;
      break;
    }
   case 45:
    $arrayidx173 = $R_1 + 16 | 0;
    HEAP32[$arrayidx173 >> 2] = $46;
    $parent174 = $46 + 24 | 0;
    HEAP32[$parent174 >> 2] = $R_1;
    label = 47;
    break;
   case 46:
    _abort();
   case 47:
    $child161_sum = $add_ptr5_sum26 + 4 | 0;
    $arrayidx179 = $0 + $child161_sum | 0;
    $49 = $arrayidx179;
    $50 = HEAP32[$49 >> 2] | 0;
    $cmp180 = ($50 | 0) == 0;
    if ($cmp180) {
      $p_addr_0 = $4;
      $psize_addr_0 = $add6;
      label = 55;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $51 = $50;
    $52 = HEAP32[40820] | 0;
    $cmp184 = $51 >>> 0 < $52 >>> 0;
    if ($cmp184) {
      label = 50;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $arrayidx190 = $R_1 + 20 | 0;
    HEAP32[$arrayidx190 >> 2] = $50;
    $parent191 = $50 + 24 | 0;
    HEAP32[$parent191 >> 2] = $R_1;
    $p_addr_0 = $4;
    $psize_addr_0 = $add6;
    label = 55;
    break;
   case 50:
    _abort();
   case 51:
    _abort();
   case 52:
    $add_ptr_sum = $psize + 4 | 0;
    $head201 = $0 + $add_ptr_sum | 0;
    $53 = $head201;
    $54 = HEAP32[$53 >> 2] | 0;
    $and202 = $54 & 3;
    $cmp203 = ($and202 | 0) == 3;
    if ($cmp203) {
      label = 53;
      break;
    } else {
      $p_addr_0 = $4;
      $psize_addr_0 = $add6;
      label = 55;
      break;
    }
   case 53:
    HEAP32[40818] = $add6;
    $55 = HEAP32[$53 >> 2] | 0;
    $and207 = $55 & -2;
    HEAP32[$53 >> 2] = $and207;
    $or = $add6 | 1;
    $add_ptr5_sum = 4 - $3 | 0;
    $head208 = $0 + $add_ptr5_sum | 0;
    $56 = $head208;
    HEAP32[$56 >> 2] = $or;
    $prev_foot210 = $add_ptr;
    HEAP32[$prev_foot210 >> 2] = $add6;
    label = 135;
    break;
   case 54:
    _abort();
   case 55:
    $57 = HEAP32[40820] | 0;
    $cmp217 = $add_ptr >>> 0 < $57 >>> 0;
    if ($cmp217) {
      label = 134;
      break;
    } else {
      label = 56;
      break;
    }
   case 56:
    $add_ptr_sum1 = $psize + 4 | 0;
    $head222 = $0 + $add_ptr_sum1 | 0;
    $58 = $head222;
    $59 = HEAP32[$58 >> 2] | 0;
    $and223 = $59 & 2;
    $tobool224 = ($and223 | 0) == 0;
    if ($tobool224) {
      label = 57;
      break;
    } else {
      label = 110;
      break;
    }
   case 57:
    $60 = HEAP32[40822] | 0;
    $cmp226 = ($1 | 0) == ($60 | 0);
    if ($cmp226) {
      label = 58;
      break;
    } else {
      label = 60;
      break;
    }
   case 58:
    $61 = HEAP32[40819] | 0;
    $add229 = $61 + $psize_addr_0 | 0;
    HEAP32[40819] = $add229;
    HEAP32[40822] = $p_addr_0;
    $or231 = $add229 | 1;
    $head232 = $p_addr_0 + 4 | 0;
    HEAP32[$head232 >> 2] = $or231;
    $62 = HEAP32[40821] | 0;
    $cmp234 = ($p_addr_0 | 0) == ($62 | 0);
    if ($cmp234) {
      label = 59;
      break;
    } else {
      label = 135;
      break;
    }
   case 59:
    HEAP32[40821] = 0;
    HEAP32[40818] = 0;
    label = 135;
    break;
   case 60:
    $63 = HEAP32[40821] | 0;
    $cmp242 = ($1 | 0) == ($63 | 0);
    if ($cmp242) {
      label = 61;
      break;
    } else {
      label = 62;
      break;
    }
   case 61:
    $64 = HEAP32[40818] | 0;
    $add246 = $64 + $psize_addr_0 | 0;
    HEAP32[40818] = $add246;
    HEAP32[40821] = $p_addr_0;
    $or248 = $add246 | 1;
    $head249 = $p_addr_0 + 4 | 0;
    HEAP32[$head249 >> 2] = $or248;
    $65 = $p_addr_0;
    $add_ptr250 = $65 + $add246 | 0;
    $prev_foot251 = $add_ptr250;
    HEAP32[$prev_foot251 >> 2] = $add246;
    label = 135;
    break;
   case 62:
    $and254 = $59 & -8;
    $add255 = $and254 + $psize_addr_0 | 0;
    $shr256 = $59 >>> 3;
    $cmp257 = $59 >>> 0 < 256;
    if ($cmp257) {
      label = 63;
      break;
    } else {
      label = 74;
      break;
    }
   case 63:
    $add_ptr_sum17 = $psize + 8 | 0;
    $fd261 = $0 + $add_ptr_sum17 | 0;
    $66 = $fd261;
    $67 = HEAP32[$66 >> 2] | 0;
    $add_ptr_sum18 = $psize + 12 | 0;
    $bk263 = $0 + $add_ptr_sum18 | 0;
    $68 = $bk263;
    $69 = HEAP32[$68 >> 2] | 0;
    $shl266 = $shr256 << 1;
    $arrayidx268 = 163304 + ($shl266 << 2) | 0;
    $70 = $arrayidx268;
    $cmp269 = ($67 | 0) == ($70 | 0);
    if ($cmp269) {
      label = 66;
      break;
    } else {
      label = 64;
      break;
    }
   case 64:
    $71 = $67;
    $cmp273 = $71 >>> 0 < $57 >>> 0;
    if ($cmp273) {
      label = 73;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $bk276 = $67 + 12 | 0;
    $72 = HEAP32[$bk276 >> 2] | 0;
    $cmp277 = ($72 | 0) == ($1 | 0);
    if ($cmp277) {
      label = 66;
      break;
    } else {
      label = 73;
      break;
    }
   case 66:
    $cmp286 = ($69 | 0) == ($67 | 0);
    if ($cmp286) {
      label = 67;
      break;
    } else {
      label = 68;
      break;
    }
   case 67:
    $shl289 = 1 << $shr256;
    $neg290 = $shl289 ^ -1;
    $73 = HEAP32[40816] | 0;
    $and292 = $73 & $neg290;
    HEAP32[40816] = $and292;
    label = 108;
    break;
   case 68:
    $cmp297 = ($69 | 0) == ($70 | 0);
    if ($cmp297) {
      label = 71;
      break;
    } else {
      label = 69;
      break;
    }
   case 69:
    $74 = $69;
    $75 = HEAP32[40820] | 0;
    $cmp301 = $74 >>> 0 < $75 >>> 0;
    if ($cmp301) {
      label = 72;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $fd304 = $69 + 8 | 0;
    $76 = HEAP32[$fd304 >> 2] | 0;
    $cmp305 = ($76 | 0) == ($1 | 0);
    if ($cmp305) {
      label = 71;
      break;
    } else {
      label = 72;
      break;
    }
   case 71:
    $bk314 = $67 + 12 | 0;
    HEAP32[$bk314 >> 2] = $69;
    $fd315 = $69 + 8 | 0;
    HEAP32[$fd315 >> 2] = $67;
    label = 108;
    break;
   case 72:
    _abort();
   case 73:
    _abort();
   case 74:
    $77 = $add_ptr;
    $add_ptr_sum2 = $psize + 24 | 0;
    $parent324 = $0 + $add_ptr_sum2 | 0;
    $78 = $parent324;
    $79 = HEAP32[$78 >> 2] | 0;
    $add_ptr_sum3 = $psize + 12 | 0;
    $bk326 = $0 + $add_ptr_sum3 | 0;
    $80 = $bk326;
    $81 = HEAP32[$80 >> 2] | 0;
    $cmp327 = ($81 | 0) == ($77 | 0);
    if ($cmp327) {
      label = 80;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    $add_ptr_sum15 = $psize + 8 | 0;
    $fd331 = $0 + $add_ptr_sum15 | 0;
    $82 = $fd331;
    $83 = HEAP32[$82 >> 2] | 0;
    $84 = $83;
    $cmp334 = $84 >>> 0 < $57 >>> 0;
    if ($cmp334) {
      label = 79;
      break;
    } else {
      label = 76;
      break;
    }
   case 76:
    $bk337 = $83 + 12 | 0;
    $85 = HEAP32[$bk337 >> 2] | 0;
    $cmp338 = ($85 | 0) == ($77 | 0);
    if ($cmp338) {
      label = 77;
      break;
    } else {
      label = 79;
      break;
    }
   case 77:
    $fd341 = $81 + 8 | 0;
    $86 = HEAP32[$fd341 >> 2] | 0;
    $cmp342 = ($86 | 0) == ($77 | 0);
    if ($cmp342) {
      label = 78;
      break;
    } else {
      label = 79;
      break;
    }
   case 78:
    HEAP32[$bk337 >> 2] = $81;
    HEAP32[$fd341 >> 2] = $83;
    $R325_1 = $81;
    label = 88;
    break;
   case 79:
    _abort();
   case 80:
    $child355_sum = $psize + 20 | 0;
    $arrayidx356 = $0 + $child355_sum | 0;
    $87 = $arrayidx356;
    $88 = HEAP32[$87 >> 2] | 0;
    $cmp357 = ($88 | 0) == 0;
    if ($cmp357) {
      label = 81;
      break;
    } else {
      $R325_0 = $88;
      $RP354_0 = $87;
      label = 82;
      break;
    }
   case 81:
    $add_ptr_sum4 = $psize + 16 | 0;
    $child355 = $0 + $add_ptr_sum4 | 0;
    $arrayidx361 = $child355;
    $89 = HEAP32[$arrayidx361 >> 2] | 0;
    $cmp362 = ($89 | 0) == 0;
    if ($cmp362) {
      $R325_1 = 0;
      label = 88;
      break;
    } else {
      $R325_0 = $89;
      $RP354_0 = $arrayidx361;
      label = 82;
      break;
    }
   case 82:
    $arrayidx368 = $R325_0 + 20 | 0;
    $90 = HEAP32[$arrayidx368 >> 2] | 0;
    $cmp369 = ($90 | 0) == 0;
    if ($cmp369) {
      label = 83;
      break;
    } else {
      $CP365_0 = $arrayidx368;
      label = 84;
      break;
    }
   case 83:
    $arrayidx373 = $R325_0 + 16 | 0;
    $91 = HEAP32[$arrayidx373 >> 2] | 0;
    $cmp374 = ($91 | 0) == 0;
    if ($cmp374) {
      label = 85;
      break;
    } else {
      $CP365_0 = $arrayidx373;
      label = 84;
      break;
    }
   case 84:
    $92 = HEAP32[$CP365_0 >> 2] | 0;
    $R325_0 = $92;
    $RP354_0 = $CP365_0;
    label = 82;
    break;
   case 85:
    $93 = $RP354_0;
    $94 = HEAP32[40820] | 0;
    $cmp381 = $93 >>> 0 < $94 >>> 0;
    if ($cmp381) {
      label = 87;
      break;
    } else {
      label = 86;
      break;
    }
   case 86:
    HEAP32[$RP354_0 >> 2] = 0;
    $R325_1 = $R325_0;
    label = 88;
    break;
   case 87:
    _abort();
   case 88:
    $cmp390 = ($79 | 0) == 0;
    if ($cmp390) {
      label = 108;
      break;
    } else {
      label = 89;
      break;
    }
   case 89:
    $add_ptr_sum13 = $psize + 28 | 0;
    $index394 = $0 + $add_ptr_sum13 | 0;
    $95 = $index394;
    $96 = HEAP32[$95 >> 2] | 0;
    $arrayidx396 = 163568 + ($96 << 2) | 0;
    $97 = HEAP32[$arrayidx396 >> 2] | 0;
    $cmp397 = ($77 | 0) == ($97 | 0);
    if ($cmp397) {
      label = 90;
      break;
    } else {
      label = 92;
      break;
    }
   case 90:
    HEAP32[$arrayidx396 >> 2] = $R325_1;
    $cond37 = ($R325_1 | 0) == 0;
    if ($cond37) {
      label = 91;
      break;
    } else {
      label = 98;
      break;
    }
   case 91:
    $98 = HEAP32[$95 >> 2] | 0;
    $shl404 = 1 << $98;
    $neg405 = $shl404 ^ -1;
    $99 = HEAP32[40817] | 0;
    $and407 = $99 & $neg405;
    HEAP32[40817] = $and407;
    label = 108;
    break;
   case 92:
    $100 = $79;
    $101 = HEAP32[40820] | 0;
    $cmp411 = $100 >>> 0 < $101 >>> 0;
    if ($cmp411) {
      label = 96;
      break;
    } else {
      label = 93;
      break;
    }
   case 93:
    $arrayidx417 = $79 + 16 | 0;
    $102 = HEAP32[$arrayidx417 >> 2] | 0;
    $cmp418 = ($102 | 0) == ($77 | 0);
    if ($cmp418) {
      label = 94;
      break;
    } else {
      label = 95;
      break;
    }
   case 94:
    HEAP32[$arrayidx417 >> 2] = $R325_1;
    label = 97;
    break;
   case 95:
    $arrayidx425 = $79 + 20 | 0;
    HEAP32[$arrayidx425 >> 2] = $R325_1;
    label = 97;
    break;
   case 96:
    _abort();
   case 97:
    $cmp430 = ($R325_1 | 0) == 0;
    if ($cmp430) {
      label = 108;
      break;
    } else {
      label = 98;
      break;
    }
   case 98:
    $103 = $R325_1;
    $104 = HEAP32[40820] | 0;
    $cmp434 = $103 >>> 0 < $104 >>> 0;
    if ($cmp434) {
      label = 107;
      break;
    } else {
      label = 99;
      break;
    }
   case 99:
    $parent441 = $R325_1 + 24 | 0;
    HEAP32[$parent441 >> 2] = $79;
    $add_ptr_sum14 = $psize + 16 | 0;
    $child442 = $0 + $add_ptr_sum14 | 0;
    $arrayidx443 = $child442;
    $105 = HEAP32[$arrayidx443 >> 2] | 0;
    $cmp444 = ($105 | 0) == 0;
    if ($cmp444) {
      label = 103;
      break;
    } else {
      label = 100;
      break;
    }
   case 100:
    $106 = $105;
    $107 = HEAP32[40820] | 0;
    $cmp448 = $106 >>> 0 < $107 >>> 0;
    if ($cmp448) {
      label = 102;
      break;
    } else {
      label = 101;
      break;
    }
   case 101:
    $arrayidx454 = $R325_1 + 16 | 0;
    HEAP32[$arrayidx454 >> 2] = $105;
    $parent455 = $105 + 24 | 0;
    HEAP32[$parent455 >> 2] = $R325_1;
    label = 103;
    break;
   case 102:
    _abort();
   case 103:
    $child442_sum = $psize + 20 | 0;
    $arrayidx460 = $0 + $child442_sum | 0;
    $108 = $arrayidx460;
    $109 = HEAP32[$108 >> 2] | 0;
    $cmp461 = ($109 | 0) == 0;
    if ($cmp461) {
      label = 108;
      break;
    } else {
      label = 104;
      break;
    }
   case 104:
    $110 = $109;
    $111 = HEAP32[40820] | 0;
    $cmp465 = $110 >>> 0 < $111 >>> 0;
    if ($cmp465) {
      label = 106;
      break;
    } else {
      label = 105;
      break;
    }
   case 105:
    $arrayidx471 = $R325_1 + 20 | 0;
    HEAP32[$arrayidx471 >> 2] = $109;
    $parent472 = $109 + 24 | 0;
    HEAP32[$parent472 >> 2] = $R325_1;
    label = 108;
    break;
   case 106:
    _abort();
   case 107:
    _abort();
   case 108:
    $or481 = $add255 | 1;
    $head482 = $p_addr_0 + 4 | 0;
    HEAP32[$head482 >> 2] = $or481;
    $112 = $p_addr_0;
    $add_ptr483 = $112 + $add255 | 0;
    $prev_foot484 = $add_ptr483;
    HEAP32[$prev_foot484 >> 2] = $add255;
    $113 = HEAP32[40821] | 0;
    $cmp486 = ($p_addr_0 | 0) == ($113 | 0);
    if ($cmp486) {
      label = 109;
      break;
    } else {
      $psize_addr_1 = $add255;
      label = 111;
      break;
    }
   case 109:
    HEAP32[40818] = $add255;
    label = 135;
    break;
   case 110:
    $and495 = $59 & -2;
    HEAP32[$58 >> 2] = $and495;
    $or496 = $psize_addr_0 | 1;
    $head497 = $p_addr_0 + 4 | 0;
    HEAP32[$head497 >> 2] = $or496;
    $114 = $p_addr_0;
    $add_ptr498 = $114 + $psize_addr_0 | 0;
    $prev_foot499 = $add_ptr498;
    HEAP32[$prev_foot499 >> 2] = $psize_addr_0;
    $psize_addr_1 = $psize_addr_0;
    label = 111;
    break;
   case 111:
    $shr501 = $psize_addr_1 >>> 3;
    $cmp502 = $psize_addr_1 >>> 0 < 256;
    if ($cmp502) {
      label = 112;
      break;
    } else {
      label = 117;
      break;
    }
   case 112:
    $shl508 = $shr501 << 1;
    $arrayidx510 = 163304 + ($shl508 << 2) | 0;
    $115 = $arrayidx510;
    $116 = HEAP32[40816] | 0;
    $shl513 = 1 << $shr501;
    $and514 = $116 & $shl513;
    $tobool515 = ($and514 | 0) == 0;
    if ($tobool515) {
      label = 113;
      break;
    } else {
      label = 114;
      break;
    }
   case 113:
    $or519 = $116 | $shl513;
    HEAP32[40816] = $or519;
    $F511_0 = $115;
    label = 116;
    break;
   case 114:
    $arrayidx510_sum12 = $shl508 + 2 | 0;
    $117 = 163304 + ($arrayidx510_sum12 << 2) | 0;
    $118 = HEAP32[$117 >> 2] | 0;
    $119 = $118;
    $120 = HEAP32[40820] | 0;
    $cmp523 = $119 >>> 0 < $120 >>> 0;
    if ($cmp523) {
      label = 115;
      break;
    } else {
      $F511_0 = $118;
      label = 116;
      break;
    }
   case 115:
    _abort();
   case 116:
    $arrayidx510_sum = $shl508 + 2 | 0;
    $121 = 163304 + ($arrayidx510_sum << 2) | 0;
    HEAP32[$121 >> 2] = $p_addr_0;
    $bk533 = $F511_0 + 12 | 0;
    HEAP32[$bk533 >> 2] = $p_addr_0;
    $fd534 = $p_addr_0 + 8 | 0;
    HEAP32[$fd534 >> 2] = $F511_0;
    $bk535 = $p_addr_0 + 12 | 0;
    HEAP32[$bk535 >> 2] = $115;
    label = 135;
    break;
   case 117:
    $122 = $p_addr_0;
    $shr540 = $psize_addr_1 >>> 8;
    $cmp541 = ($shr540 | 0) == 0;
    if ($cmp541) {
      $I539_0 = 0;
      label = 120;
      break;
    } else {
      label = 118;
      break;
    }
   case 118:
    $cmp545 = $psize_addr_1 >>> 0 > 16777215;
    if ($cmp545) {
      $I539_0 = 31;
      label = 120;
      break;
    } else {
      label = 119;
      break;
    }
   case 119:
    $sub = $shr540 + 1048320 | 0;
    $shr549 = $sub >>> 16;
    $and550 = $shr549 & 8;
    $shl551 = $shr540 << $and550;
    $sub552 = $shl551 + 520192 | 0;
    $shr553 = $sub552 >>> 16;
    $and554 = $shr553 & 4;
    $add555 = $and554 | $and550;
    $shl556 = $shl551 << $and554;
    $sub557 = $shl556 + 245760 | 0;
    $shr558 = $sub557 >>> 16;
    $and559 = $shr558 & 2;
    $add560 = $add555 | $and559;
    $sub561 = 14 - $add560 | 0;
    $shl562 = $shl556 << $and559;
    $shr563 = $shl562 >>> 15;
    $add564 = $sub561 + $shr563 | 0;
    $shl565 = $add564 << 1;
    $add566 = $add564 + 7 | 0;
    $shr567 = $psize_addr_1 >>> ($add566 >>> 0);
    $and568 = $shr567 & 1;
    $add569 = $and568 | $shl565;
    $I539_0 = $add569;
    label = 120;
    break;
   case 120:
    $arrayidx573 = 163568 + ($I539_0 << 2) | 0;
    $index574 = $p_addr_0 + 28 | 0;
    $I539_0_c = $I539_0;
    HEAP32[$index574 >> 2] = $I539_0_c;
    $arrayidx576 = $p_addr_0 + 20 | 0;
    HEAP32[$arrayidx576 >> 2] = 0;
    $123 = $p_addr_0 + 16 | 0;
    HEAP32[$123 >> 2] = 0;
    $124 = HEAP32[40817] | 0;
    $shl580 = 1 << $I539_0;
    $and581 = $124 & $shl580;
    $tobool582 = ($and581 | 0) == 0;
    if ($tobool582) {
      label = 121;
      break;
    } else {
      label = 122;
      break;
    }
   case 121:
    $or586 = $124 | $shl580;
    HEAP32[40817] = $or586;
    HEAP32[$arrayidx573 >> 2] = $122;
    $parent587 = $p_addr_0 + 24 | 0;
    $_c = $arrayidx573;
    HEAP32[$parent587 >> 2] = $_c;
    $bk588 = $p_addr_0 + 12 | 0;
    HEAP32[$bk588 >> 2] = $p_addr_0;
    $fd589 = $p_addr_0 + 8 | 0;
    HEAP32[$fd589 >> 2] = $p_addr_0;
    label = 135;
    break;
   case 122:
    $125 = HEAP32[$arrayidx573 >> 2] | 0;
    $cmp592 = ($I539_0 | 0) == 31;
    if ($cmp592) {
      $cond = 0;
      label = 124;
      break;
    } else {
      label = 123;
      break;
    }
   case 123:
    $shr594 = $I539_0 >>> 1;
    $sub597 = 25 - $shr594 | 0;
    $cond = $sub597;
    label = 124;
    break;
   case 124:
    $shl598 = $psize_addr_1 << $cond;
    $K591_0 = $shl598;
    $T_0 = $125;
    label = 125;
    break;
   case 125:
    $head599 = $T_0 + 4 | 0;
    $126 = HEAP32[$head599 >> 2] | 0;
    $and600 = $126 & -8;
    $cmp601 = ($and600 | 0) == ($psize_addr_1 | 0);
    if ($cmp601) {
      label = 130;
      break;
    } else {
      label = 126;
      break;
    }
   case 126:
    $shr604 = $K591_0 >>> 31;
    $arrayidx607 = $T_0 + 16 + ($shr604 << 2) | 0;
    $127 = HEAP32[$arrayidx607 >> 2] | 0;
    $cmp609 = ($127 | 0) == 0;
    $shl608 = $K591_0 << 1;
    if ($cmp609) {
      label = 127;
      break;
    } else {
      $K591_0 = $shl608;
      $T_0 = $127;
      label = 125;
      break;
    }
   case 127:
    $128 = $arrayidx607;
    $129 = HEAP32[40820] | 0;
    $cmp614 = $128 >>> 0 < $129 >>> 0;
    if ($cmp614) {
      label = 129;
      break;
    } else {
      label = 128;
      break;
    }
   case 128:
    HEAP32[$arrayidx607 >> 2] = $122;
    $parent619 = $p_addr_0 + 24 | 0;
    $T_0_c9 = $T_0;
    HEAP32[$parent619 >> 2] = $T_0_c9;
    $bk620 = $p_addr_0 + 12 | 0;
    HEAP32[$bk620 >> 2] = $p_addr_0;
    $fd621 = $p_addr_0 + 8 | 0;
    HEAP32[$fd621 >> 2] = $p_addr_0;
    label = 135;
    break;
   case 129:
    _abort();
   case 130:
    $fd626 = $T_0 + 8 | 0;
    $130 = HEAP32[$fd626 >> 2] | 0;
    $131 = $T_0;
    $132 = HEAP32[40820] | 0;
    $cmp628 = $131 >>> 0 < $132 >>> 0;
    if ($cmp628) {
      label = 133;
      break;
    } else {
      label = 131;
      break;
    }
   case 131:
    $133 = $130;
    $cmp632 = $133 >>> 0 < $132 >>> 0;
    if ($cmp632) {
      label = 133;
      break;
    } else {
      label = 132;
      break;
    }
   case 132:
    $bk639 = $130 + 12 | 0;
    HEAP32[$bk639 >> 2] = $122;
    HEAP32[$fd626 >> 2] = $122;
    $fd641 = $p_addr_0 + 8 | 0;
    $_c8 = $130;
    HEAP32[$fd641 >> 2] = $_c8;
    $bk642 = $p_addr_0 + 12 | 0;
    $T_0_c = $T_0;
    HEAP32[$bk642 >> 2] = $T_0_c;
    $parent643 = $p_addr_0 + 24 | 0;
    HEAP32[$parent643 >> 2] = 0;
    label = 135;
    break;
   case 133:
    _abort();
   case 134:
    _abort();
   case 135:
    return;
  }
}
function _init_top($p, $psize) {
  $p = $p | 0;
  $psize = $psize | 0;
  var $0 = 0, $add_ptr = 0, $1 = 0, $and = 0, $cmp = 0, $2 = 0, $and3 = 0, $cond = 0, $add_ptr4 = 0, $3 = 0, $sub5 = 0, $or = 0, $add_ptr4_sum = 0, $head = 0, $4 = 0, $add_ptr6_sum = 0, $head7 = 0, $5 = 0, $6 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = $p;
    $add_ptr = $p + 8 | 0;
    $1 = $add_ptr;
    $and = $1 & 7;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      $cond = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $2 = -$1 | 0;
    $and3 = $2 & 7;
    $cond = $and3;
    label = 4;
    break;
   case 4:
    $add_ptr4 = $0 + $cond | 0;
    $3 = $add_ptr4;
    $sub5 = $psize - $cond | 0;
    HEAP32[40822] = $3;
    HEAP32[40819] = $sub5;
    $or = $sub5 | 1;
    $add_ptr4_sum = $cond + 4 | 0;
    $head = $0 + $add_ptr4_sum | 0;
    $4 = $head;
    HEAP32[$4 >> 2] = $or;
    $add_ptr6_sum = $psize + 4 | 0;
    $head7 = $0 + $add_ptr6_sum | 0;
    $5 = $head7;
    HEAP32[$5 >> 2] = 40;
    $6 = HEAP32[2806] | 0;
    HEAP32[40823] = $6;
    return;
  }
}
function _init_bins() {
  var $i_02 = 0, $shl = 0, $arrayidx = 0, $0 = 0, $arrayidx_sum = 0, $1 = 0, $arrayidx_sum1 = 0, $2 = 0, $inc = 0, $cmp = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $i_02 = 0;
    label = 3;
    break;
   case 3:
    $shl = $i_02 << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $0 = $arrayidx;
    $arrayidx_sum = $shl + 3 | 0;
    $1 = 163304 + ($arrayidx_sum << 2) | 0;
    HEAP32[$1 >> 2] = $0;
    $arrayidx_sum1 = $shl + 2 | 0;
    $2 = 163304 + ($arrayidx_sum1 << 2) | 0;
    HEAP32[$2 >> 2] = $0;
    $inc = $i_02 + 1 | 0;
    $cmp = $inc >>> 0 < 32;
    if ($cmp) {
      $i_02 = $inc;
      label = 3;
      break;
    } else {
      label = 4;
      break;
    }
   case 4:
    return;
  }
}
function _prepend_alloc($newbase, $oldbase, $nb) {
  $newbase = $newbase | 0;
  $oldbase = $oldbase | 0;
  $nb = $nb | 0;
  var $add_ptr = 0, $0 = 0, $and = 0, $cmp = 0, $1 = 0, $and3 = 0, $cond = 0, $add_ptr4 = 0, $add_ptr5 = 0, $2 = 0, $and6 = 0, $cmp7 = 0, $3 = 0, $and13 = 0, $cond15 = 0, $add_ptr16 = 0, $4 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $add_ptr4_sum = 0, $add_ptr17 = 0, $5 = 0, $sub18 = 0, $or19 = 0, $add_ptr4_sum1 = 0, $head = 0, $6 = 0, $7 = 0, $cmp20 = 0, $8 = 0, $add = 0, $or22 = 0, $add_ptr17_sum39 = 0, $head23 = 0, $9 = 0, $10 = 0, $cmp24 = 0, $11 = 0, $add26 = 0, $or28 = 0, $add_ptr17_sum37 = 0, $head29 = 0, $12 = 0, $add_ptr17_sum38 = 0, $add_ptr30 = 0, $prev_foot = 0, $add_ptr16_sum = 0, $head32 = 0, $13 = 0, $14 = 0, $and33 = 0, $cmp34 = 0, $and37 = 0, $shr = 0, $cmp38 = 0, $add_ptr16_sum3233 = 0, $fd = 0, $15 = 0, $16 = 0, $add_ptr16_sum34 = 0, $bk = 0, $17 = 0, $18 = 0, $shl = 0, $arrayidx = 0, $19 = 0, $cmp41 = 0, $20 = 0, $21 = 0, $cmp42 = 0, $bk43 = 0, $22 = 0, $cmp44 = 0, $cmp46 = 0, $shl48 = 0, $neg = 0, $23 = 0, $and49 = 0, $cmp54 = 0, $24 = 0, $25 = 0, $cmp57 = 0, $fd59 = 0, $26 = 0, $cmp60 = 0, $bk67 = 0, $fd68 = 0, $27 = 0, $add_ptr16_sum23 = 0, $parent = 0, $28 = 0, $29 = 0, $add_ptr16_sum4 = 0, $bk74 = 0, $30 = 0, $31 = 0, $cmp75 = 0, $add_ptr16_sum2930 = 0, $fd78 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $cmp81 = 0, $bk82 = 0, $36 = 0, $cmp83 = 0, $fd85 = 0, $37 = 0, $cmp86 = 0, $add_ptr16_sum56 = 0, $child_sum = 0, $arrayidx96 = 0, $38 = 0, $39 = 0, $cmp97 = 0, $child = 0, $arrayidx99 = 0, $40 = 0, $cmp100 = 0, $RP_0 = 0, $R_0 = 0, $arrayidx103 = 0, $41 = 0, $cmp104 = 0, $arrayidx107 = 0, $42 = 0, $cmp108 = 0, $CP_0 = 0, $43 = 0, $44 = 0, $45 = 0, $cmp112 = 0, $R_1 = 0, $cmp120 = 0, $add_ptr16_sum26 = 0, $index = 0, $46 = 0, $47 = 0, $arrayidx123 = 0, $48 = 0, $cmp124 = 0, $cond41 = 0, $49 = 0, $shl131 = 0, $neg132 = 0, $50 = 0, $and133 = 0, $51 = 0, $52 = 0, $cmp137 = 0, $arrayidx143 = 0, $53 = 0, $cmp144 = 0, $arrayidx151 = 0, $cmp156 = 0, $54 = 0, $55 = 0, $cmp160 = 0, $parent165 = 0, $add_ptr16_sum2728 = 0, $child166 = 0, $arrayidx167 = 0, $56 = 0, $cmp168 = 0, $57 = 0, $58 = 0, $cmp172 = 0, $arrayidx178 = 0, $parent179 = 0, $child166_sum = 0, $arrayidx184 = 0, $59 = 0, $60 = 0, $cmp185 = 0, $61 = 0, $62 = 0, $cmp189 = 0, $arrayidx195 = 0, $parent196 = 0, $add_ptr16_sum7 = 0, $add_ptr205 = 0, $63 = 0, $add206 = 0, $qsize_0 = 0, $oldfirst_0 = 0, $head208 = 0, $64 = 0, $and209 = 0, $or210 = 0, $add_ptr17_sum = 0, $head211 = 0, $65 = 0, $add_ptr17_sum8 = 0, $add_ptr212 = 0, $prev_foot213 = 0, $shr214 = 0, $cmp215 = 0, $shl221 = 0, $arrayidx223 = 0, $66 = 0, $67 = 0, $shl226 = 0, $and227 = 0, $tobool228 = 0, $or232 = 0, $arrayidx223_sum25 = 0, $68 = 0, $69 = 0, $70 = 0, $71 = 0, $cmp236 = 0, $F224_0 = 0, $arrayidx223_sum = 0, $72 = 0, $bk246 = 0, $add_ptr17_sum23 = 0, $fd247 = 0, $73 = 0, $add_ptr17_sum24 = 0, $bk248 = 0, $74 = 0, $75 = 0, $shr253 = 0, $cmp254 = 0, $cmp258 = 0, $sub262 = 0, $shr263 = 0, $and264 = 0, $shl265 = 0, $sub266 = 0, $shr267 = 0, $and268 = 0, $add269 = 0, $shl270 = 0, $sub271 = 0, $shr272 = 0, $and273 = 0, $add274 = 0, $sub275 = 0, $shl276 = 0, $shr277 = 0, $add278 = 0, $shl279 = 0, $add280 = 0, $shr281 = 0, $and282 = 0, $add283 = 0, $I252_0 = 0, $arrayidx287 = 0, $add_ptr17_sum9 = 0, $index288 = 0, $76 = 0, $add_ptr17_sum10 = 0, $child289 = 0, $child289_sum = 0, $arrayidx290 = 0, $77 = 0, $arrayidx292 = 0, $78 = 0, $shl294 = 0, $and295 = 0, $tobool296 = 0, $or300 = 0, $79 = 0, $add_ptr17_sum11 = 0, $parent301 = 0, $80 = 0, $add_ptr17_sum12 = 0, $bk302 = 0, $81 = 0, $add_ptr17_sum13 = 0, $fd303 = 0, $82 = 0, $83 = 0, $cmp306 = 0, $shr310 = 0, $sub313 = 0, $cond315 = 0, $shl316 = 0, $T_0 = 0, $K305_0 = 0, $head317 = 0, $84 = 0, $and318 = 0, $cmp319 = 0, $shr322 = 0, $arrayidx325 = 0, $85 = 0, $cmp327 = 0, $shl326 = 0, $86 = 0, $87 = 0, $cmp332 = 0, $add_ptr17_sum20 = 0, $parent337 = 0, $88 = 0, $add_ptr17_sum21 = 0, $bk338 = 0, $89 = 0, $add_ptr17_sum22 = 0, $fd339 = 0, $90 = 0, $fd344 = 0, $91 = 0, $92 = 0, $93 = 0, $cmp346 = 0, $94 = 0, $cmp350 = 0, $bk357 = 0, $add_ptr17_sum17 = 0, $fd359 = 0, $95 = 0, $add_ptr17_sum18 = 0, $bk360 = 0, $96 = 0, $add_ptr17_sum19 = 0, $parent361 = 0, $97 = 0, $add_ptr4_sum1415 = 0, $add_ptr368 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $add_ptr = $newbase + 8 | 0;
    $0 = $add_ptr;
    $and = $0 & 7;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      $cond = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $1 = -$0 | 0;
    $and3 = $1 & 7;
    $cond = $and3;
    label = 4;
    break;
   case 4:
    $add_ptr4 = $newbase + $cond | 0;
    $add_ptr5 = $oldbase + 8 | 0;
    $2 = $add_ptr5;
    $and6 = $2 & 7;
    $cmp7 = ($and6 | 0) == 0;
    if ($cmp7) {
      $cond15 = 0;
      label = 6;
      break;
    } else {
      label = 5;
      break;
    }
   case 5:
    $3 = -$2 | 0;
    $and13 = $3 & 7;
    $cond15 = $and13;
    label = 6;
    break;
   case 6:
    $add_ptr16 = $oldbase + $cond15 | 0;
    $4 = $add_ptr16;
    $sub_ptr_lhs_cast = $add_ptr16;
    $sub_ptr_rhs_cast = $add_ptr4;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $add_ptr4_sum = $cond + $nb | 0;
    $add_ptr17 = $newbase + $add_ptr4_sum | 0;
    $5 = $add_ptr17;
    $sub18 = $sub_ptr_sub - $nb | 0;
    $or19 = $nb | 3;
    $add_ptr4_sum1 = $cond + 4 | 0;
    $head = $newbase + $add_ptr4_sum1 | 0;
    $6 = $head;
    HEAP32[$6 >> 2] = $or19;
    $7 = HEAP32[40822] | 0;
    $cmp20 = ($4 | 0) == ($7 | 0);
    if ($cmp20) {
      label = 7;
      break;
    } else {
      label = 8;
      break;
    }
   case 7:
    $8 = HEAP32[40819] | 0;
    $add = $8 + $sub18 | 0;
    HEAP32[40819] = $add;
    HEAP32[40822] = $5;
    $or22 = $add | 1;
    $add_ptr17_sum39 = $add_ptr4_sum + 4 | 0;
    $head23 = $newbase + $add_ptr17_sum39 | 0;
    $9 = $head23;
    HEAP32[$9 >> 2] = $or22;
    label = 81;
    break;
   case 8:
    $10 = HEAP32[40821] | 0;
    $cmp24 = ($4 | 0) == ($10 | 0);
    if ($cmp24) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $11 = HEAP32[40818] | 0;
    $add26 = $11 + $sub18 | 0;
    HEAP32[40818] = $add26;
    HEAP32[40821] = $5;
    $or28 = $add26 | 1;
    $add_ptr17_sum37 = $add_ptr4_sum + 4 | 0;
    $head29 = $newbase + $add_ptr17_sum37 | 0;
    $12 = $head29;
    HEAP32[$12 >> 2] = $or28;
    $add_ptr17_sum38 = $add26 + $add_ptr4_sum | 0;
    $add_ptr30 = $newbase + $add_ptr17_sum38 | 0;
    $prev_foot = $add_ptr30;
    HEAP32[$prev_foot >> 2] = $add26;
    label = 81;
    break;
   case 10:
    $add_ptr16_sum = $cond15 + 4 | 0;
    $head32 = $oldbase + $add_ptr16_sum | 0;
    $13 = $head32;
    $14 = HEAP32[$13 >> 2] | 0;
    $and33 = $14 & 3;
    $cmp34 = ($and33 | 0) == 1;
    if ($cmp34) {
      label = 11;
      break;
    } else {
      $oldfirst_0 = $4;
      $qsize_0 = $sub18;
      label = 58;
      break;
    }
   case 11:
    $and37 = $14 & -8;
    $shr = $14 >>> 3;
    $cmp38 = $14 >>> 0 < 256;
    if ($cmp38) {
      label = 12;
      break;
    } else {
      label = 23;
      break;
    }
   case 12:
    $add_ptr16_sum3233 = $cond15 | 8;
    $fd = $oldbase + $add_ptr16_sum3233 | 0;
    $15 = $fd;
    $16 = HEAP32[$15 >> 2] | 0;
    $add_ptr16_sum34 = $cond15 + 12 | 0;
    $bk = $oldbase + $add_ptr16_sum34 | 0;
    $17 = $bk;
    $18 = HEAP32[$17 >> 2] | 0;
    $shl = $shr << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $19 = $arrayidx;
    $cmp41 = ($16 | 0) == ($19 | 0);
    if ($cmp41) {
      label = 15;
      break;
    } else {
      label = 13;
      break;
    }
   case 13:
    $20 = $16;
    $21 = HEAP32[40820] | 0;
    $cmp42 = $20 >>> 0 < $21 >>> 0;
    if ($cmp42) {
      label = 22;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $bk43 = $16 + 12 | 0;
    $22 = HEAP32[$bk43 >> 2] | 0;
    $cmp44 = ($22 | 0) == ($4 | 0);
    if ($cmp44) {
      label = 15;
      break;
    } else {
      label = 22;
      break;
    }
   case 15:
    $cmp46 = ($18 | 0) == ($16 | 0);
    if ($cmp46) {
      label = 16;
      break;
    } else {
      label = 17;
      break;
    }
   case 16:
    $shl48 = 1 << $shr;
    $neg = $shl48 ^ -1;
    $23 = HEAP32[40816] | 0;
    $and49 = $23 & $neg;
    HEAP32[40816] = $and49;
    label = 57;
    break;
   case 17:
    $cmp54 = ($18 | 0) == ($19 | 0);
    if ($cmp54) {
      label = 20;
      break;
    } else {
      label = 18;
      break;
    }
   case 18:
    $24 = $18;
    $25 = HEAP32[40820] | 0;
    $cmp57 = $24 >>> 0 < $25 >>> 0;
    if ($cmp57) {
      label = 21;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $fd59 = $18 + 8 | 0;
    $26 = HEAP32[$fd59 >> 2] | 0;
    $cmp60 = ($26 | 0) == ($4 | 0);
    if ($cmp60) {
      label = 20;
      break;
    } else {
      label = 21;
      break;
    }
   case 20:
    $bk67 = $16 + 12 | 0;
    HEAP32[$bk67 >> 2] = $18;
    $fd68 = $18 + 8 | 0;
    HEAP32[$fd68 >> 2] = $16;
    label = 57;
    break;
   case 21:
    _abort();
    return 0;
    return 0;
   case 22:
    _abort();
    return 0;
    return 0;
   case 23:
    $27 = $add_ptr16;
    $add_ptr16_sum23 = $cond15 | 24;
    $parent = $oldbase + $add_ptr16_sum23 | 0;
    $28 = $parent;
    $29 = HEAP32[$28 >> 2] | 0;
    $add_ptr16_sum4 = $cond15 + 12 | 0;
    $bk74 = $oldbase + $add_ptr16_sum4 | 0;
    $30 = $bk74;
    $31 = HEAP32[$30 >> 2] | 0;
    $cmp75 = ($31 | 0) == ($27 | 0);
    if ($cmp75) {
      label = 29;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    $add_ptr16_sum2930 = $cond15 | 8;
    $fd78 = $oldbase + $add_ptr16_sum2930 | 0;
    $32 = $fd78;
    $33 = HEAP32[$32 >> 2] | 0;
    $34 = $33;
    $35 = HEAP32[40820] | 0;
    $cmp81 = $34 >>> 0 < $35 >>> 0;
    if ($cmp81) {
      label = 28;
      break;
    } else {
      label = 25;
      break;
    }
   case 25:
    $bk82 = $33 + 12 | 0;
    $36 = HEAP32[$bk82 >> 2] | 0;
    $cmp83 = ($36 | 0) == ($27 | 0);
    if ($cmp83) {
      label = 26;
      break;
    } else {
      label = 28;
      break;
    }
   case 26:
    $fd85 = $31 + 8 | 0;
    $37 = HEAP32[$fd85 >> 2] | 0;
    $cmp86 = ($37 | 0) == ($27 | 0);
    if ($cmp86) {
      label = 27;
      break;
    } else {
      label = 28;
      break;
    }
   case 27:
    HEAP32[$bk82 >> 2] = $31;
    HEAP32[$fd85 >> 2] = $33;
    $R_1 = $31;
    label = 37;
    break;
   case 28:
    _abort();
    return 0;
    return 0;
   case 29:
    $add_ptr16_sum56 = $cond15 | 16;
    $child_sum = $add_ptr16_sum56 + 4 | 0;
    $arrayidx96 = $oldbase + $child_sum | 0;
    $38 = $arrayidx96;
    $39 = HEAP32[$38 >> 2] | 0;
    $cmp97 = ($39 | 0) == 0;
    if ($cmp97) {
      label = 30;
      break;
    } else {
      $R_0 = $39;
      $RP_0 = $38;
      label = 31;
      break;
    }
   case 30:
    $child = $oldbase + $add_ptr16_sum56 | 0;
    $arrayidx99 = $child;
    $40 = HEAP32[$arrayidx99 >> 2] | 0;
    $cmp100 = ($40 | 0) == 0;
    if ($cmp100) {
      $R_1 = 0;
      label = 37;
      break;
    } else {
      $R_0 = $40;
      $RP_0 = $arrayidx99;
      label = 31;
      break;
    }
   case 31:
    $arrayidx103 = $R_0 + 20 | 0;
    $41 = HEAP32[$arrayidx103 >> 2] | 0;
    $cmp104 = ($41 | 0) == 0;
    if ($cmp104) {
      label = 32;
      break;
    } else {
      $CP_0 = $arrayidx103;
      label = 33;
      break;
    }
   case 32:
    $arrayidx107 = $R_0 + 16 | 0;
    $42 = HEAP32[$arrayidx107 >> 2] | 0;
    $cmp108 = ($42 | 0) == 0;
    if ($cmp108) {
      label = 34;
      break;
    } else {
      $CP_0 = $arrayidx107;
      label = 33;
      break;
    }
   case 33:
    $43 = HEAP32[$CP_0 >> 2] | 0;
    $R_0 = $43;
    $RP_0 = $CP_0;
    label = 31;
    break;
   case 34:
    $44 = $RP_0;
    $45 = HEAP32[40820] | 0;
    $cmp112 = $44 >>> 0 < $45 >>> 0;
    if ($cmp112) {
      label = 36;
      break;
    } else {
      label = 35;
      break;
    }
   case 35:
    HEAP32[$RP_0 >> 2] = 0;
    $R_1 = $R_0;
    label = 37;
    break;
   case 36:
    _abort();
    return 0;
    return 0;
   case 37:
    $cmp120 = ($29 | 0) == 0;
    if ($cmp120) {
      label = 57;
      break;
    } else {
      label = 38;
      break;
    }
   case 38:
    $add_ptr16_sum26 = $cond15 + 28 | 0;
    $index = $oldbase + $add_ptr16_sum26 | 0;
    $46 = $index;
    $47 = HEAP32[$46 >> 2] | 0;
    $arrayidx123 = 163568 + ($47 << 2) | 0;
    $48 = HEAP32[$arrayidx123 >> 2] | 0;
    $cmp124 = ($27 | 0) == ($48 | 0);
    if ($cmp124) {
      label = 39;
      break;
    } else {
      label = 41;
      break;
    }
   case 39:
    HEAP32[$arrayidx123 >> 2] = $R_1;
    $cond41 = ($R_1 | 0) == 0;
    if ($cond41) {
      label = 40;
      break;
    } else {
      label = 47;
      break;
    }
   case 40:
    $49 = HEAP32[$46 >> 2] | 0;
    $shl131 = 1 << $49;
    $neg132 = $shl131 ^ -1;
    $50 = HEAP32[40817] | 0;
    $and133 = $50 & $neg132;
    HEAP32[40817] = $and133;
    label = 57;
    break;
   case 41:
    $51 = $29;
    $52 = HEAP32[40820] | 0;
    $cmp137 = $51 >>> 0 < $52 >>> 0;
    if ($cmp137) {
      label = 45;
      break;
    } else {
      label = 42;
      break;
    }
   case 42:
    $arrayidx143 = $29 + 16 | 0;
    $53 = HEAP32[$arrayidx143 >> 2] | 0;
    $cmp144 = ($53 | 0) == ($27 | 0);
    if ($cmp144) {
      label = 43;
      break;
    } else {
      label = 44;
      break;
    }
   case 43:
    HEAP32[$arrayidx143 >> 2] = $R_1;
    label = 46;
    break;
   case 44:
    $arrayidx151 = $29 + 20 | 0;
    HEAP32[$arrayidx151 >> 2] = $R_1;
    label = 46;
    break;
   case 45:
    _abort();
    return 0;
    return 0;
   case 46:
    $cmp156 = ($R_1 | 0) == 0;
    if ($cmp156) {
      label = 57;
      break;
    } else {
      label = 47;
      break;
    }
   case 47:
    $54 = $R_1;
    $55 = HEAP32[40820] | 0;
    $cmp160 = $54 >>> 0 < $55 >>> 0;
    if ($cmp160) {
      label = 56;
      break;
    } else {
      label = 48;
      break;
    }
   case 48:
    $parent165 = $R_1 + 24 | 0;
    HEAP32[$parent165 >> 2] = $29;
    $add_ptr16_sum2728 = $cond15 | 16;
    $child166 = $oldbase + $add_ptr16_sum2728 | 0;
    $arrayidx167 = $child166;
    $56 = HEAP32[$arrayidx167 >> 2] | 0;
    $cmp168 = ($56 | 0) == 0;
    if ($cmp168) {
      label = 52;
      break;
    } else {
      label = 49;
      break;
    }
   case 49:
    $57 = $56;
    $58 = HEAP32[40820] | 0;
    $cmp172 = $57 >>> 0 < $58 >>> 0;
    if ($cmp172) {
      label = 51;
      break;
    } else {
      label = 50;
      break;
    }
   case 50:
    $arrayidx178 = $R_1 + 16 | 0;
    HEAP32[$arrayidx178 >> 2] = $56;
    $parent179 = $56 + 24 | 0;
    HEAP32[$parent179 >> 2] = $R_1;
    label = 52;
    break;
   case 51:
    _abort();
    return 0;
    return 0;
   case 52:
    $child166_sum = $add_ptr16_sum2728 + 4 | 0;
    $arrayidx184 = $oldbase + $child166_sum | 0;
    $59 = $arrayidx184;
    $60 = HEAP32[$59 >> 2] | 0;
    $cmp185 = ($60 | 0) == 0;
    if ($cmp185) {
      label = 57;
      break;
    } else {
      label = 53;
      break;
    }
   case 53:
    $61 = $60;
    $62 = HEAP32[40820] | 0;
    $cmp189 = $61 >>> 0 < $62 >>> 0;
    if ($cmp189) {
      label = 55;
      break;
    } else {
      label = 54;
      break;
    }
   case 54:
    $arrayidx195 = $R_1 + 20 | 0;
    HEAP32[$arrayidx195 >> 2] = $60;
    $parent196 = $60 + 24 | 0;
    HEAP32[$parent196 >> 2] = $R_1;
    label = 57;
    break;
   case 55:
    _abort();
    return 0;
    return 0;
   case 56:
    _abort();
    return 0;
    return 0;
   case 57:
    $add_ptr16_sum7 = $and37 | $cond15;
    $add_ptr205 = $oldbase + $add_ptr16_sum7 | 0;
    $63 = $add_ptr205;
    $add206 = $and37 + $sub18 | 0;
    $oldfirst_0 = $63;
    $qsize_0 = $add206;
    label = 58;
    break;
   case 58:
    $head208 = $oldfirst_0 + 4 | 0;
    $64 = HEAP32[$head208 >> 2] | 0;
    $and209 = $64 & -2;
    HEAP32[$head208 >> 2] = $and209;
    $or210 = $qsize_0 | 1;
    $add_ptr17_sum = $add_ptr4_sum + 4 | 0;
    $head211 = $newbase + $add_ptr17_sum | 0;
    $65 = $head211;
    HEAP32[$65 >> 2] = $or210;
    $add_ptr17_sum8 = $qsize_0 + $add_ptr4_sum | 0;
    $add_ptr212 = $newbase + $add_ptr17_sum8 | 0;
    $prev_foot213 = $add_ptr212;
    HEAP32[$prev_foot213 >> 2] = $qsize_0;
    $shr214 = $qsize_0 >>> 3;
    $cmp215 = $qsize_0 >>> 0 < 256;
    if ($cmp215) {
      label = 59;
      break;
    } else {
      label = 64;
      break;
    }
   case 59:
    $shl221 = $shr214 << 1;
    $arrayidx223 = 163304 + ($shl221 << 2) | 0;
    $66 = $arrayidx223;
    $67 = HEAP32[40816] | 0;
    $shl226 = 1 << $shr214;
    $and227 = $67 & $shl226;
    $tobool228 = ($and227 | 0) == 0;
    if ($tobool228) {
      label = 60;
      break;
    } else {
      label = 61;
      break;
    }
   case 60:
    $or232 = $67 | $shl226;
    HEAP32[40816] = $or232;
    $F224_0 = $66;
    label = 63;
    break;
   case 61:
    $arrayidx223_sum25 = $shl221 + 2 | 0;
    $68 = 163304 + ($arrayidx223_sum25 << 2) | 0;
    $69 = HEAP32[$68 >> 2] | 0;
    $70 = $69;
    $71 = HEAP32[40820] | 0;
    $cmp236 = $70 >>> 0 < $71 >>> 0;
    if ($cmp236) {
      label = 62;
      break;
    } else {
      $F224_0 = $69;
      label = 63;
      break;
    }
   case 62:
    _abort();
    return 0;
    return 0;
   case 63:
    $arrayidx223_sum = $shl221 + 2 | 0;
    $72 = 163304 + ($arrayidx223_sum << 2) | 0;
    HEAP32[$72 >> 2] = $5;
    $bk246 = $F224_0 + 12 | 0;
    HEAP32[$bk246 >> 2] = $5;
    $add_ptr17_sum23 = $add_ptr4_sum + 8 | 0;
    $fd247 = $newbase + $add_ptr17_sum23 | 0;
    $73 = $fd247;
    HEAP32[$73 >> 2] = $F224_0;
    $add_ptr17_sum24 = $add_ptr4_sum + 12 | 0;
    $bk248 = $newbase + $add_ptr17_sum24 | 0;
    $74 = $bk248;
    HEAP32[$74 >> 2] = $66;
    label = 81;
    break;
   case 64:
    $75 = $add_ptr17;
    $shr253 = $qsize_0 >>> 8;
    $cmp254 = ($shr253 | 0) == 0;
    if ($cmp254) {
      $I252_0 = 0;
      label = 67;
      break;
    } else {
      label = 65;
      break;
    }
   case 65:
    $cmp258 = $qsize_0 >>> 0 > 16777215;
    if ($cmp258) {
      $I252_0 = 31;
      label = 67;
      break;
    } else {
      label = 66;
      break;
    }
   case 66:
    $sub262 = $shr253 + 1048320 | 0;
    $shr263 = $sub262 >>> 16;
    $and264 = $shr263 & 8;
    $shl265 = $shr253 << $and264;
    $sub266 = $shl265 + 520192 | 0;
    $shr267 = $sub266 >>> 16;
    $and268 = $shr267 & 4;
    $add269 = $and268 | $and264;
    $shl270 = $shl265 << $and268;
    $sub271 = $shl270 + 245760 | 0;
    $shr272 = $sub271 >>> 16;
    $and273 = $shr272 & 2;
    $add274 = $add269 | $and273;
    $sub275 = 14 - $add274 | 0;
    $shl276 = $shl270 << $and273;
    $shr277 = $shl276 >>> 15;
    $add278 = $sub275 + $shr277 | 0;
    $shl279 = $add278 << 1;
    $add280 = $add278 + 7 | 0;
    $shr281 = $qsize_0 >>> ($add280 >>> 0);
    $and282 = $shr281 & 1;
    $add283 = $and282 | $shl279;
    $I252_0 = $add283;
    label = 67;
    break;
   case 67:
    $arrayidx287 = 163568 + ($I252_0 << 2) | 0;
    $add_ptr17_sum9 = $add_ptr4_sum + 28 | 0;
    $index288 = $newbase + $add_ptr17_sum9 | 0;
    $76 = $index288;
    HEAP32[$76 >> 2] = $I252_0;
    $add_ptr17_sum10 = $add_ptr4_sum + 16 | 0;
    $child289 = $newbase + $add_ptr17_sum10 | 0;
    $child289_sum = $add_ptr4_sum + 20 | 0;
    $arrayidx290 = $newbase + $child289_sum | 0;
    $77 = $arrayidx290;
    HEAP32[$77 >> 2] = 0;
    $arrayidx292 = $child289;
    HEAP32[$arrayidx292 >> 2] = 0;
    $78 = HEAP32[40817] | 0;
    $shl294 = 1 << $I252_0;
    $and295 = $78 & $shl294;
    $tobool296 = ($and295 | 0) == 0;
    if ($tobool296) {
      label = 68;
      break;
    } else {
      label = 69;
      break;
    }
   case 68:
    $or300 = $78 | $shl294;
    HEAP32[40817] = $or300;
    HEAP32[$arrayidx287 >> 2] = $75;
    $79 = $arrayidx287;
    $add_ptr17_sum11 = $add_ptr4_sum + 24 | 0;
    $parent301 = $newbase + $add_ptr17_sum11 | 0;
    $80 = $parent301;
    HEAP32[$80 >> 2] = $79;
    $add_ptr17_sum12 = $add_ptr4_sum + 12 | 0;
    $bk302 = $newbase + $add_ptr17_sum12 | 0;
    $81 = $bk302;
    HEAP32[$81 >> 2] = $75;
    $add_ptr17_sum13 = $add_ptr4_sum + 8 | 0;
    $fd303 = $newbase + $add_ptr17_sum13 | 0;
    $82 = $fd303;
    HEAP32[$82 >> 2] = $75;
    label = 81;
    break;
   case 69:
    $83 = HEAP32[$arrayidx287 >> 2] | 0;
    $cmp306 = ($I252_0 | 0) == 31;
    if ($cmp306) {
      $cond315 = 0;
      label = 71;
      break;
    } else {
      label = 70;
      break;
    }
   case 70:
    $shr310 = $I252_0 >>> 1;
    $sub313 = 25 - $shr310 | 0;
    $cond315 = $sub313;
    label = 71;
    break;
   case 71:
    $shl316 = $qsize_0 << $cond315;
    $K305_0 = $shl316;
    $T_0 = $83;
    label = 72;
    break;
   case 72:
    $head317 = $T_0 + 4 | 0;
    $84 = HEAP32[$head317 >> 2] | 0;
    $and318 = $84 & -8;
    $cmp319 = ($and318 | 0) == ($qsize_0 | 0);
    if ($cmp319) {
      label = 77;
      break;
    } else {
      label = 73;
      break;
    }
   case 73:
    $shr322 = $K305_0 >>> 31;
    $arrayidx325 = $T_0 + 16 + ($shr322 << 2) | 0;
    $85 = HEAP32[$arrayidx325 >> 2] | 0;
    $cmp327 = ($85 | 0) == 0;
    $shl326 = $K305_0 << 1;
    if ($cmp327) {
      label = 74;
      break;
    } else {
      $K305_0 = $shl326;
      $T_0 = $85;
      label = 72;
      break;
    }
   case 74:
    $86 = $arrayidx325;
    $87 = HEAP32[40820] | 0;
    $cmp332 = $86 >>> 0 < $87 >>> 0;
    if ($cmp332) {
      label = 76;
      break;
    } else {
      label = 75;
      break;
    }
   case 75:
    HEAP32[$arrayidx325 >> 2] = $75;
    $add_ptr17_sum20 = $add_ptr4_sum + 24 | 0;
    $parent337 = $newbase + $add_ptr17_sum20 | 0;
    $88 = $parent337;
    HEAP32[$88 >> 2] = $T_0;
    $add_ptr17_sum21 = $add_ptr4_sum + 12 | 0;
    $bk338 = $newbase + $add_ptr17_sum21 | 0;
    $89 = $bk338;
    HEAP32[$89 >> 2] = $75;
    $add_ptr17_sum22 = $add_ptr4_sum + 8 | 0;
    $fd339 = $newbase + $add_ptr17_sum22 | 0;
    $90 = $fd339;
    HEAP32[$90 >> 2] = $75;
    label = 81;
    break;
   case 76:
    _abort();
    return 0;
    return 0;
   case 77:
    $fd344 = $T_0 + 8 | 0;
    $91 = HEAP32[$fd344 >> 2] | 0;
    $92 = $T_0;
    $93 = HEAP32[40820] | 0;
    $cmp346 = $92 >>> 0 < $93 >>> 0;
    if ($cmp346) {
      label = 80;
      break;
    } else {
      label = 78;
      break;
    }
   case 78:
    $94 = $91;
    $cmp350 = $94 >>> 0 < $93 >>> 0;
    if ($cmp350) {
      label = 80;
      break;
    } else {
      label = 79;
      break;
    }
   case 79:
    $bk357 = $91 + 12 | 0;
    HEAP32[$bk357 >> 2] = $75;
    HEAP32[$fd344 >> 2] = $75;
    $add_ptr17_sum17 = $add_ptr4_sum + 8 | 0;
    $fd359 = $newbase + $add_ptr17_sum17 | 0;
    $95 = $fd359;
    HEAP32[$95 >> 2] = $91;
    $add_ptr17_sum18 = $add_ptr4_sum + 12 | 0;
    $bk360 = $newbase + $add_ptr17_sum18 | 0;
    $96 = $bk360;
    HEAP32[$96 >> 2] = $T_0;
    $add_ptr17_sum19 = $add_ptr4_sum + 24 | 0;
    $parent361 = $newbase + $add_ptr17_sum19 | 0;
    $97 = $parent361;
    HEAP32[$97 >> 2] = 0;
    label = 81;
    break;
   case 80:
    _abort();
    return 0;
    return 0;
   case 81:
    $add_ptr4_sum1415 = $cond | 8;
    $add_ptr368 = $newbase + $add_ptr4_sum1415 | 0;
    return $add_ptr368 | 0;
  }
  return 0;
}
function _add_segment($tbase, $tsize) {
  $tbase = $tbase | 0;
  $tsize = $tsize | 0;
  var $0 = 0, $1 = 0, $call = 0, $base = 0, $2 = 0, $size = 0, $3 = 0, $add_ptr = 0, $add_ptr_sum = 0, $add_ptr2_sum = 0, $add_ptr3 = 0, $4 = 0, $and = 0, $cmp = 0, $5 = 0, $and6 = 0, $cond = 0, $add_ptr2_sum1 = 0, $add_ptr7 = 0, $add_ptr82 = 0, $add_ptr8 = 0, $cmp9 = 0, $cond13 = 0, $add_ptr14 = 0, $6 = 0, $7 = 0, $sub16 = 0, $head = 0, $8 = 0, $add_ptr2412 = 0, $9 = 0, $10 = 0, $cmp2713 = 0, $add_ptr2414 = 0, $11 = 0, $12 = 0, $13 = 0, $cmp27 = 0, $cmp28 = 0, $sub_ptr_lhs_cast = 0, $sub_ptr_rhs_cast = 0, $sub_ptr_sub = 0, $add_ptr30 = 0, $add_ptr30_sum = 0, $head31 = 0, $14 = 0, $15 = 0, $and32 = 0, $or33 = 0, $head34 = 0, $prev_foot = 0, $shr = 0, $cmp36 = 0, $shl = 0, $arrayidx = 0, $16 = 0, $17 = 0, $shl39 = 0, $and40 = 0, $tobool = 0, $or44 = 0, $arrayidx_sum10 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $cmp46 = 0, $F_0 = 0, $arrayidx_sum = 0, $22 = 0, $bk = 0, $fd54 = 0, $bk55 = 0, $23 = 0, $shr58 = 0, $cmp59 = 0, $cmp63 = 0, $sub67 = 0, $shr68 = 0, $and69 = 0, $shl70 = 0, $sub71 = 0, $shr72 = 0, $and73 = 0, $add74 = 0, $shl75 = 0, $sub76 = 0, $shr77 = 0, $and78 = 0, $add79 = 0, $sub80 = 0, $shl81 = 0, $shr82 = 0, $add83 = 0, $shl84 = 0, $add85 = 0, $shr86 = 0, $and87 = 0, $add88 = 0, $I57_0 = 0, $arrayidx91 = 0, $index = 0, $I57_0_c = 0, $arrayidx92 = 0, $24 = 0, $25 = 0, $shl95 = 0, $and96 = 0, $tobool97 = 0, $or101 = 0, $parent = 0, $_c = 0, $bk102 = 0, $fd103 = 0, $26 = 0, $cmp106 = 0, $shr110 = 0, $sub113 = 0, $cond115 = 0, $shl116 = 0, $T_0 = 0, $K105_0 = 0, $head118 = 0, $27 = 0, $and119 = 0, $cmp120 = 0, $shr123 = 0, $arrayidx126 = 0, $28 = 0, $cmp128 = 0, $shl127 = 0, $29 = 0, $30 = 0, $cmp133 = 0, $parent138 = 0, $T_0_c7 = 0, $bk139 = 0, $fd140 = 0, $fd145 = 0, $31 = 0, $32 = 0, $33 = 0, $cmp147 = 0, $34 = 0, $cmp150 = 0, $bk155 = 0, $fd157 = 0, $_c6 = 0, $bk158 = 0, $T_0_c = 0, $parent159 = 0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $0 = HEAP32[40822] | 0;
    $1 = $0;
    $call = _segment_holding($1) | 0;
    $base = $call | 0;
    $2 = HEAP32[$base >> 2] | 0;
    $size = $call + 4 | 0;
    $3 = HEAP32[$size >> 2] | 0;
    $add_ptr = $2 + $3 | 0;
    $add_ptr_sum = $3 - 47 | 0;
    $add_ptr2_sum = $3 - 39 | 0;
    $add_ptr3 = $2 + $add_ptr2_sum | 0;
    $4 = $add_ptr3;
    $and = $4 & 7;
    $cmp = ($and | 0) == 0;
    if ($cmp) {
      $cond = 0;
      label = 4;
      break;
    } else {
      label = 3;
      break;
    }
   case 3:
    $5 = -$4 | 0;
    $and6 = $5 & 7;
    $cond = $and6;
    label = 4;
    break;
   case 4:
    $add_ptr2_sum1 = $add_ptr_sum + $cond | 0;
    $add_ptr7 = $2 + $add_ptr2_sum1 | 0;
    $add_ptr82 = $0 + 16 | 0;
    $add_ptr8 = $add_ptr82;
    $cmp9 = $add_ptr7 >>> 0 < $add_ptr8 >>> 0;
    $cond13 = $cmp9 ? $1 : $add_ptr7;
    $add_ptr14 = $cond13 + 8 | 0;
    $6 = $add_ptr14;
    $7 = $tbase;
    $sub16 = $tsize - 40 | 0;
    _init_top($7, $sub16);
    $head = $cond13 + 4 | 0;
    $8 = $head;
    HEAP32[$8 >> 2] = 27;
    HEAP32[$add_ptr14 >> 2] = HEAP32[40928] | 0;
    HEAP32[$add_ptr14 + 4 >> 2] = HEAP32[163716 >> 2] | 0;
    HEAP32[$add_ptr14 + 8 >> 2] = HEAP32[163720 >> 2] | 0;
    HEAP32[$add_ptr14 + 12 >> 2] = HEAP32[163724 >> 2] | 0;
    HEAP32[40928] = $tbase;
    HEAP32[40929] = $tsize;
    HEAP32[40931] = 0;
    HEAP32[40930] = $6;
    $add_ptr2412 = $cond13 + 28 | 0;
    $9 = $add_ptr2412;
    HEAP32[$9 >> 2] = 7;
    $10 = $cond13 + 32 | 0;
    $cmp2713 = $10 >>> 0 < $add_ptr >>> 0;
    if ($cmp2713) {
      $add_ptr2414 = $9;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 5:
    $11 = $add_ptr2414 + 4 | 0;
    HEAP32[$11 >> 2] = 7;
    $12 = $add_ptr2414 + 8 | 0;
    $13 = $12;
    $cmp27 = $13 >>> 0 < $add_ptr >>> 0;
    if ($cmp27) {
      $add_ptr2414 = $11;
      label = 5;
      break;
    } else {
      label = 6;
      break;
    }
   case 6:
    $cmp28 = ($cond13 | 0) == ($1 | 0);
    if ($cmp28) {
      label = 30;
      break;
    } else {
      label = 7;
      break;
    }
   case 7:
    $sub_ptr_lhs_cast = $cond13;
    $sub_ptr_rhs_cast = $0;
    $sub_ptr_sub = $sub_ptr_lhs_cast - $sub_ptr_rhs_cast | 0;
    $add_ptr30 = $1 + $sub_ptr_sub | 0;
    $add_ptr30_sum = $sub_ptr_sub + 4 | 0;
    $head31 = $1 + $add_ptr30_sum | 0;
    $14 = $head31;
    $15 = HEAP32[$14 >> 2] | 0;
    $and32 = $15 & -2;
    HEAP32[$14 >> 2] = $and32;
    $or33 = $sub_ptr_sub | 1;
    $head34 = $0 + 4 | 0;
    HEAP32[$head34 >> 2] = $or33;
    $prev_foot = $add_ptr30;
    HEAP32[$prev_foot >> 2] = $sub_ptr_sub;
    $shr = $sub_ptr_sub >>> 3;
    $cmp36 = $sub_ptr_sub >>> 0 < 256;
    if ($cmp36) {
      label = 8;
      break;
    } else {
      label = 13;
      break;
    }
   case 8:
    $shl = $shr << 1;
    $arrayidx = 163304 + ($shl << 2) | 0;
    $16 = $arrayidx;
    $17 = HEAP32[40816] | 0;
    $shl39 = 1 << $shr;
    $and40 = $17 & $shl39;
    $tobool = ($and40 | 0) == 0;
    if ($tobool) {
      label = 9;
      break;
    } else {
      label = 10;
      break;
    }
   case 9:
    $or44 = $17 | $shl39;
    HEAP32[40816] = $or44;
    $F_0 = $16;
    label = 12;
    break;
   case 10:
    $arrayidx_sum10 = $shl + 2 | 0;
    $18 = 163304 + ($arrayidx_sum10 << 2) | 0;
    $19 = HEAP32[$18 >> 2] | 0;
    $20 = $19;
    $21 = HEAP32[40820] | 0;
    $cmp46 = $20 >>> 0 < $21 >>> 0;
    if ($cmp46) {
      label = 11;
      break;
    } else {
      $F_0 = $19;
      label = 12;
      break;
    }
   case 11:
    _abort();
   case 12:
    $arrayidx_sum = $shl + 2 | 0;
    $22 = 163304 + ($arrayidx_sum << 2) | 0;
    HEAP32[$22 >> 2] = $0;
    $bk = $F_0 + 12 | 0;
    HEAP32[$bk >> 2] = $0;
    $fd54 = $0 + 8 | 0;
    HEAP32[$fd54 >> 2] = $F_0;
    $bk55 = $0 + 12 | 0;
    HEAP32[$bk55 >> 2] = $16;
    label = 30;
    break;
   case 13:
    $23 = $0;
    $shr58 = $sub_ptr_sub >>> 8;
    $cmp59 = ($shr58 | 0) == 0;
    if ($cmp59) {
      $I57_0 = 0;
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 14:
    $cmp63 = $sub_ptr_sub >>> 0 > 16777215;
    if ($cmp63) {
      $I57_0 = 31;
      label = 16;
      break;
    } else {
      label = 15;
      break;
    }
   case 15:
    $sub67 = $shr58 + 1048320 | 0;
    $shr68 = $sub67 >>> 16;
    $and69 = $shr68 & 8;
    $shl70 = $shr58 << $and69;
    $sub71 = $shl70 + 520192 | 0;
    $shr72 = $sub71 >>> 16;
    $and73 = $shr72 & 4;
    $add74 = $and73 | $and69;
    $shl75 = $shl70 << $and73;
    $sub76 = $shl75 + 245760 | 0;
    $shr77 = $sub76 >>> 16;
    $and78 = $shr77 & 2;
    $add79 = $add74 | $and78;
    $sub80 = 14 - $add79 | 0;
    $shl81 = $shl75 << $and78;
    $shr82 = $shl81 >>> 15;
    $add83 = $sub80 + $shr82 | 0;
    $shl84 = $add83 << 1;
    $add85 = $add83 + 7 | 0;
    $shr86 = $sub_ptr_sub >>> ($add85 >>> 0);
    $and87 = $shr86 & 1;
    $add88 = $and87 | $shl84;
    $I57_0 = $add88;
    label = 16;
    break;
   case 16:
    $arrayidx91 = 163568 + ($I57_0 << 2) | 0;
    $index = $0 + 28 | 0;
    $I57_0_c = $I57_0;
    HEAP32[$index >> 2] = $I57_0_c;
    $arrayidx92 = $0 + 20 | 0;
    HEAP32[$arrayidx92 >> 2] = 0;
    $24 = $0 + 16 | 0;
    HEAP32[$24 >> 2] = 0;
    $25 = HEAP32[40817] | 0;
    $shl95 = 1 << $I57_0;
    $and96 = $25 & $shl95;
    $tobool97 = ($and96 | 0) == 0;
    if ($tobool97) {
      label = 17;
      break;
    } else {
      label = 18;
      break;
    }
   case 17:
    $or101 = $25 | $shl95;
    HEAP32[40817] = $or101;
    HEAP32[$arrayidx91 >> 2] = $23;
    $parent = $0 + 24 | 0;
    $_c = $arrayidx91;
    HEAP32[$parent >> 2] = $_c;
    $bk102 = $0 + 12 | 0;
    HEAP32[$bk102 >> 2] = $0;
    $fd103 = $0 + 8 | 0;
    HEAP32[$fd103 >> 2] = $0;
    label = 30;
    break;
   case 18:
    $26 = HEAP32[$arrayidx91 >> 2] | 0;
    $cmp106 = ($I57_0 | 0) == 31;
    if ($cmp106) {
      $cond115 = 0;
      label = 20;
      break;
    } else {
      label = 19;
      break;
    }
   case 19:
    $shr110 = $I57_0 >>> 1;
    $sub113 = 25 - $shr110 | 0;
    $cond115 = $sub113;
    label = 20;
    break;
   case 20:
    $shl116 = $sub_ptr_sub << $cond115;
    $K105_0 = $shl116;
    $T_0 = $26;
    label = 21;
    break;
   case 21:
    $head118 = $T_0 + 4 | 0;
    $27 = HEAP32[$head118 >> 2] | 0;
    $and119 = $27 & -8;
    $cmp120 = ($and119 | 0) == ($sub_ptr_sub | 0);
    if ($cmp120) {
      label = 26;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $shr123 = $K105_0 >>> 31;
    $arrayidx126 = $T_0 + 16 + ($shr123 << 2) | 0;
    $28 = HEAP32[$arrayidx126 >> 2] | 0;
    $cmp128 = ($28 | 0) == 0;
    $shl127 = $K105_0 << 1;
    if ($cmp128) {
      label = 23;
      break;
    } else {
      $K105_0 = $shl127;
      $T_0 = $28;
      label = 21;
      break;
    }
   case 23:
    $29 = $arrayidx126;
    $30 = HEAP32[40820] | 0;
    $cmp133 = $29 >>> 0 < $30 >>> 0;
    if ($cmp133) {
      label = 25;
      break;
    } else {
      label = 24;
      break;
    }
   case 24:
    HEAP32[$arrayidx126 >> 2] = $23;
    $parent138 = $0 + 24 | 0;
    $T_0_c7 = $T_0;
    HEAP32[$parent138 >> 2] = $T_0_c7;
    $bk139 = $0 + 12 | 0;
    HEAP32[$bk139 >> 2] = $0;
    $fd140 = $0 + 8 | 0;
    HEAP32[$fd140 >> 2] = $0;
    label = 30;
    break;
   case 25:
    _abort();
   case 26:
    $fd145 = $T_0 + 8 | 0;
    $31 = HEAP32[$fd145 >> 2] | 0;
    $32 = $T_0;
    $33 = HEAP32[40820] | 0;
    $cmp147 = $32 >>> 0 < $33 >>> 0;
    if ($cmp147) {
      label = 29;
      break;
    } else {
      label = 27;
      break;
    }
   case 27:
    $34 = $31;
    $cmp150 = $34 >>> 0 < $33 >>> 0;
    if ($cmp150) {
      label = 29;
      break;
    } else {
      label = 28;
      break;
    }
   case 28:
    $bk155 = $31 + 12 | 0;
    HEAP32[$bk155 >> 2] = $23;
    HEAP32[$fd145 >> 2] = $23;
    $fd157 = $0 + 8 | 0;
    $_c6 = $31;
    HEAP32[$fd157 >> 2] = $_c6;
    $bk158 = $0 + 12 | 0;
    $T_0_c = $T_0;
    HEAP32[$bk158 >> 2] = $T_0_c;
    $parent159 = $0 + 24 | 0;
    HEAP32[$parent159 >> 2] = 0;
    label = 30;
    break;
   case 29:
    _abort();
   case 30:
    return;
  }
}
function _strtod($string, $endPtr) {
  $string = $string | 0;
  $endPtr = $endPtr | 0;
  var $p_0 = 0, $0 = 0, $conv = 0, $call = 0, $tobool = 0, $add_ptr = 0, $1 = 0, $add_ptr3 = 0, $add_ptr8 = 0, $sign_0 = 0, $p_2 = 0, $p_3 = 0, $mantSize_0 = 0, $decPt_0 = 0, $2 = 0, $conv10 = 0, $isdigittmp = 0, $isdigit = 0, $cmp14 = 0, $cmp16 = 0, $or_cond = 0, $decPt_1 = 0, $add_ptr21 = 0, $add = 0, $idx_neg = 0, $add_ptr22 = 0, $cmp23 = 0, $not_cmp23 = 0, $sub = 0, $mantSize_1 = 0, $decPt_2 = 0, $cmp28 = 0, $3 = 0, $fracExp_0_p = 0, $fracExp_0 = 0, $mantSize_2 = 0, $cmp35 = 0, $cmp4078 = 0, $phitmp = 0.0, $phitmp85 = 0.0, $cmp5673 = 0, $p_4_lcssa91 = 0, $mantSize_3_lcssa90 = 0, $frac1_0_lcssa89 = 0.0, $frac1_081 = 0, $mantSize_380 = 0, $p_479 = 0, $4 = 0, $add_ptr43 = 0, $cmp44 = 0, $5 = 0, $add_ptr48 = 0, $p_5 = 0, $c_0_in = 0, $c_0 = 0, $mul = 0, $sub50 = 0, $add51 = 0, $sub53 = 0, $cmp40 = 0, $frac2_076 = 0, $mantSize_475 = 0, $p_674 = 0, $6 = 0, $add_ptr60 = 0, $cmp61 = 0, $7 = 0, $add_ptr65 = 0, $p_7 = 0, $c_1_in = 0, $c_1 = 0, $mul67 = 0, $sub68 = 0, $add69 = 0, $sub71 = 0, $cmp56 = 0, $phitmp86 = 0.0, $frac1_0_lcssa88 = 0.0, $frac2_0_lcssa = 0.0, $add76 = 0.0, $8 = 0, $add_ptr86 = 0, $9 = 0, $add_ptr91 = 0, $add_ptr97 = 0, $expSign_0_ph = 0, $p_9_ph = 0, $10 = 0, $conv10166 = 0, $isdigittmp6067 = 0, $isdigit6168 = 0, $exp_070 = 0, $p_969 = 0, $mul105 = 0, $11 = 0, $conv106 = 0, $sub107 = 0, $add108 = 0, $add_ptr109 = 0, $12 = 0, $conv101 = 0, $isdigittmp60 = 0, $isdigit61 = 0, $expSign_1 = 0, $p_10 = 0, $exp_1 = 0, $tobool112 = 0, $13 = 0, $exp_2_p = 0, $exp_2 = 0, $cmp118 = 0, $sub121 = 0, $exp_3 = 0, $cmp124 = 0, $call127 = 0, $cmp13062 = 0, $exp_565 = 0, $d_064 = 0, $dblExp_063 = 0.0, $and = 0, $tobool133 = 0, $14 = 0.0, $mul135 = 0.0, $dblExp_1 = 0.0, $shr = 0, $add_ptr138 = 0, $cmp130 = 0, $dblExp_0_lcssa = 0.0, $tobool140 = 0, $div = 0.0, $mul143 = 0.0, $fraction_0 = 0.0, $p_11 = 0, $cmp145 = 0, $tobool149 = 0, $sub151 = 0.0, $retval_0 = 0.0, label = 0;
  label = 2;
  while (1) switch (label | 0) {
   case 2:
    $p_0 = $string;
    label = 3;
    break;
   case 3:
    $0 = HEAP8[$p_0] | 0;
    $conv = $0 << 24 >> 24;
    $call = _isspace($conv | 0) | 0;
    $tobool = ($call | 0) == 0;
    $add_ptr = $p_0 + 1 | 0;
    if ($tobool) {
      label = 4;
      break;
    } else {
      $p_0 = $add_ptr;
      label = 3;
      break;
    }
   case 4:
    $1 = HEAP8[$p_0] | 0;
    if (($1 << 24 >> 24 | 0) == 45) {
      label = 5;
      break;
    } else if (($1 << 24 >> 24 | 0) == 43) {
      label = 6;
      break;
    } else {
      $p_2 = $p_0;
      $sign_0 = 0;
      label = 7;
      break;
    }
   case 5:
    $add_ptr3 = $p_0 + 1 | 0;
    $p_2 = $add_ptr3;
    $sign_0 = 1;
    label = 7;
    break;
   case 6:
    $add_ptr8 = $p_0 + 1 | 0;
    $p_2 = $add_ptr8;
    $sign_0 = 0;
    label = 7;
    break;
   case 7:
    $decPt_0 = -1;
    $mantSize_0 = 0;
    $p_3 = $p_2;
    label = 8;
    break;
   case 8:
    $2 = HEAP8[$p_3] | 0;
    $conv10 = $2 << 24 >> 24;
    $isdigittmp = $conv10 - 48 | 0;
    $isdigit = $isdigittmp >>> 0 < 10;
    if ($isdigit) {
      $decPt_1 = $decPt_0;
      label = 10;
      break;
    } else {
      label = 9;
      break;
    }
   case 9:
    $cmp14 = $2 << 24 >> 24 != 46;
    $cmp16 = ($decPt_0 | 0) > -1;
    $or_cond = $cmp14 | $cmp16;
    if ($or_cond) {
      label = 11;
      break;
    } else {
      $decPt_1 = $mantSize_0;
      label = 10;
      break;
    }
   case 10:
    $add_ptr21 = $p_3 + 1 | 0;
    $add = $mantSize_0 + 1 | 0;
    $decPt_0 = $decPt_1;
    $mantSize_0 = $add;
    $p_3 = $add_ptr21;
    label = 8;
    break;
   case 11:
    $idx_neg = -$mantSize_0 | 0;
    $add_ptr22 = $p_3 + $idx_neg | 0;
    $cmp23 = ($decPt_0 | 0) < 0;
    $not_cmp23 = $cmp23 ^ 1;
    $sub = $not_cmp23 << 31 >> 31;
    $mantSize_1 = $sub + $mantSize_0 | 0;
    $decPt_2 = $cmp23 ? $mantSize_0 : $decPt_0;
    $cmp28 = ($mantSize_1 | 0) > 18;
    $3 = -$mantSize_1 | 0;
    $fracExp_0_p = $cmp28 ? -18 : $3;
    $fracExp_0 = $fracExp_0_p + $decPt_2 | 0;
    $mantSize_2 = $cmp28 ? 18 : $mantSize_1;
    $cmp35 = ($mantSize_2 | 0) == 0;
    if ($cmp35) {
      $p_11 = $string;
      $fraction_0 = 0.0;
      label = 38;
      break;
    } else {
      label = 12;
      break;
    }
   case 12:
    $cmp4078 = ($mantSize_2 | 0) > 9;
    if ($cmp4078) {
      $p_479 = $add_ptr22;
      $mantSize_380 = $mantSize_2;
      $frac1_081 = 0;
      label = 16;
      break;
    } else {
      label = 14;
      break;
    }
   case 13:
    $phitmp = +($add51 | 0);
    $phitmp85 = $phitmp * 1.0e9;
    $frac1_0_lcssa89 = $phitmp85;
    $mantSize_3_lcssa90 = 9;
    $p_4_lcssa91 = $p_5;
    label = 15;
    break;
   case 14:
    $cmp5673 = ($mantSize_2 | 0) > 0;
    if ($cmp5673) {
      $frac1_0_lcssa89 = 0.0;
      $mantSize_3_lcssa90 = $mantSize_2;
      $p_4_lcssa91 = $add_ptr22;
      label = 15;
      break;
    } else {
      $frac2_0_lcssa = 0.0;
      $frac1_0_lcssa88 = 0.0;
      label = 23;
      break;
    }
   case 15:
    $p_674 = $p_4_lcssa91;
    $mantSize_475 = $mantSize_3_lcssa90;
    $frac2_076 = 0;
    label = 19;
    break;
   case 16:
    $4 = HEAP8[$p_479] | 0;
    $add_ptr43 = $p_479 + 1 | 0;
    $cmp44 = $4 << 24 >> 24 == 46;
    if ($cmp44) {
      label = 17;
      break;
    } else {
      $c_0_in = $4;
      $p_5 = $add_ptr43;
      label = 18;
      break;
    }
   case 17:
    $5 = HEAP8[$add_ptr43] | 0;
    $add_ptr48 = $p_479 + 2 | 0;
    $c_0_in = $5;
    $p_5 = $add_ptr48;
    label = 18;
    break;
   case 18:
    $c_0 = $c_0_in << 24 >> 24;
    $mul = $frac1_081 * 10 & -1;
    $sub50 = $mul - 48 | 0;
    $add51 = $sub50 + $c_0 | 0;
    $sub53 = $mantSize_380 - 1 | 0;
    $cmp40 = ($sub53 | 0) > 9;
    if ($cmp40) {
      $p_479 = $p_5;
      $mantSize_380 = $sub53;
      $frac1_081 = $add51;
      label = 16;
      break;
    } else {
      label = 13;
      break;
    }
   case 19:
    $6 = HEAP8[$p_674] | 0;
    $add_ptr60 = $p_674 + 1 | 0;
    $cmp61 = $6 << 24 >> 24 == 46;
    if ($cmp61) {
      label = 20;
      break;
    } else {
      $c_1_in = $6;
      $p_7 = $add_ptr60;
      label = 21;
      break;
    }
   case 20:
    $7 = HEAP8[$add_ptr60] | 0;
    $add_ptr65 = $p_674 + 2 | 0;
    $c_1_in = $7;
    $p_7 = $add_ptr65;
    label = 21;
    break;
   case 21:
    $c_1 = $c_1_in << 24 >> 24;
    $mul67 = $frac2_076 * 10 & -1;
    $sub68 = $mul67 - 48 | 0;
    $add69 = $sub68 + $c_1 | 0;
    $sub71 = $mantSize_475 - 1 | 0;
    $cmp56 = ($sub71 | 0) > 0;
    if ($cmp56) {
      $p_674 = $p_7;
      $mantSize_475 = $sub71;
      $frac2_076 = $add69;
      label = 19;
      break;
    } else {
      label = 22;
      break;
    }
   case 22:
    $phitmp86 = +($add69 | 0);
    $frac2_0_lcssa = $phitmp86;
    $frac1_0_lcssa88 = $frac1_0_lcssa89;
    label = 23;
    break;
   case 23:
    $add76 = $frac1_0_lcssa88 + $frac2_0_lcssa;
    $8 = HEAP8[$p_3] | 0;
    if (($8 << 24 >> 24 | 0) == 69 | ($8 << 24 >> 24 | 0) == 101) {
      label = 24;
      break;
    } else {
      $exp_1 = 0;
      $p_10 = $p_3;
      $expSign_1 = 0;
      label = 29;
      break;
    }
   case 24:
    $add_ptr86 = $p_3 + 1 | 0;
    $9 = HEAP8[$add_ptr86] | 0;
    if (($9 << 24 >> 24 | 0) == 45) {
      label = 25;
      break;
    } else if (($9 << 24 >> 24 | 0) == 43) {
      label = 26;
      break;
    } else {
      $p_9_ph = $add_ptr86;
      $expSign_0_ph = 0;
      label = 27;
      break;
    }
   case 25:
    $add_ptr91 = $p_3 + 2 | 0;
    $p_9_ph = $add_ptr91;
    $expSign_0_ph = 1;
    label = 27;
    break;
   case 26:
    $add_ptr97 = $p_3 + 2 | 0;
    $p_9_ph = $add_ptr97;
    $expSign_0_ph = 0;
    label = 27;
    break;
   case 27:
    $10 = HEAP8[$p_9_ph] | 0;
    $conv10166 = $10 << 24 >> 24;
    $isdigittmp6067 = $conv10166 - 48 | 0;
    $isdigit6168 = $isdigittmp6067 >>> 0 < 10;
    if ($isdigit6168) {
      $p_969 = $p_9_ph;
      $exp_070 = 0;
      label = 28;
      break;
    } else {
      $exp_1 = 0;
      $p_10 = $p_9_ph;
      $expSign_1 = $expSign_0_ph;
      label = 29;
      break;
    }
   case 28:
    $mul105 = $exp_070 * 10 & -1;
    $11 = HEAP8[$p_969] | 0;
    $conv106 = $11 << 24 >> 24;
    $sub107 = $mul105 - 48 | 0;
    $add108 = $sub107 + $conv106 | 0;
    $add_ptr109 = $p_969 + 1 | 0;
    $12 = HEAP8[$add_ptr109] | 0;
    $conv101 = $12 << 24 >> 24;
    $isdigittmp60 = $conv101 - 48 | 0;
    $isdigit61 = $isdigittmp60 >>> 0 < 10;
    if ($isdigit61) {
      $p_969 = $add_ptr109;
      $exp_070 = $add108;
      label = 28;
      break;
    } else {
      $exp_1 = $add108;
      $p_10 = $add_ptr109;
      $expSign_1 = $expSign_0_ph;
      label = 29;
      break;
    }
   case 29:
    $tobool112 = ($expSign_1 | 0) == 0;
    $13 = -$exp_1 | 0;
    $exp_2_p = $tobool112 ? $exp_1 : $13;
    $exp_2 = $fracExp_0 + $exp_2_p | 0;
    $cmp118 = ($exp_2 | 0) < 0;
    $sub121 = -$exp_2 | 0;
    $exp_3 = $cmp118 ? $sub121 : $exp_2;
    $cmp124 = ($exp_3 | 0) > 511;
    if ($cmp124) {
      label = 30;
      break;
    } else {
      label = 31;
      break;
    }
   case 30:
    $call127 = ___errno_location() | 0;
    HEAP32[$call127 >> 2] = 34;
    $dblExp_063 = 1.0;
    $d_064 = 5576;
    $exp_565 = 511;
    label = 32;
    break;
   case 31:
    $cmp13062 = ($exp_3 | 0) == 0;
    if ($cmp13062) {
      $dblExp_0_lcssa = 1.0;
      label = 35;
      break;
    } else {
      $dblExp_063 = 1.0;
      $d_064 = 5576;
      $exp_565 = $exp_3;
      label = 32;
      break;
    }
   case 32:
    $and = $exp_565 & 1;
    $tobool133 = ($and | 0) == 0;
    if ($tobool133) {
      $dblExp_1 = $dblExp_063;
      label = 34;
      break;
    } else {
      label = 33;
      break;
    }
   case 33:
    $14 = +HEAPF64[$d_064 >> 3];
    $mul135 = $dblExp_063 * $14;
    $dblExp_1 = $mul135;
    label = 34;
    break;
   case 34:
    $shr = $exp_565 >> 1;
    $add_ptr138 = $d_064 + 8 | 0;
    $cmp130 = ($shr | 0) == 0;
    if ($cmp130) {
      $dblExp_0_lcssa = $dblExp_1;
      label = 35;
      break;
    } else {
      $dblExp_063 = $dblExp_1;
      $d_064 = $add_ptr138;
      $exp_565 = $shr;
      label = 32;
      break;
    }
   case 35:
    $tobool140 = ($exp_2 | 0) > -1;
    if ($tobool140) {
      label = 37;
      break;
    } else {
      label = 36;
      break;
    }
   case 36:
    $div = $add76 / $dblExp_0_lcssa;
    $p_11 = $p_10;
    $fraction_0 = $div;
    label = 38;
    break;
   case 37:
    $mul143 = $add76 * $dblExp_0_lcssa;
    $p_11 = $p_10;
    $fraction_0 = $mul143;
    label = 38;
    break;
   case 38:
    $cmp145 = ($endPtr | 0) == 0;
    if ($cmp145) {
      label = 40;
      break;
    } else {
      label = 39;
      break;
    }
   case 39:
    HEAP32[$endPtr >> 2] = $p_11;
    label = 40;
    break;
   case 40:
    $tobool149 = ($sign_0 | 0) == 0;
    if ($tobool149) {
      $retval_0 = $fraction_0;
      label = 42;
      break;
    } else {
      label = 41;
      break;
    }
   case 41:
    $sub151 = -0.0 - $fraction_0;
    $retval_0 = $sub151;
    label = 42;
    break;
   case 42:
    return +$retval_0;
  }
  return 0.0;
}
function _atof($str) {
  $str = $str | 0;
  return +(+_strtod($str, 0));
}
function _memcmp(p1, p2, num) {
  p1 = p1 | 0;
  p2 = p2 | 0;
  num = num | 0;
  var i = 0, v1 = 0, v2 = 0;
  while ((i | 0) < (num | 0)) {
    v1 = HEAPU8[p1 + i | 0] | 0;
    v2 = HEAPU8[p2 + i | 0] | 0;
    if ((v1 | 0) != (v2 | 0)) return ((v1 | 0) > (v2 | 0) ? 1 : -1) | 0;
    i = i + 1 | 0;
  }
  return 0;
}
function _memcpy(dest, src, num) {
  dest = dest | 0;
  src = src | 0;
  num = num | 0;
  var ret = 0;
  ret = dest | 0;
  if ((dest & 3) == (src & 3)) {
    while (dest & 3) {
      if ((num | 0) == 0) return ret | 0;
      HEAP8[dest] = HEAP8[src] | 0;
      dest = dest + 1 | 0;
      src = src + 1 | 0;
      num = num - 1 | 0;
    }
    while ((num | 0) >= 4) {
      HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
      dest = dest + 4 | 0;
      src = src + 4 | 0;
      num = num - 4 | 0;
    }
  }
  while ((num | 0) > 0) {
    HEAP8[dest] = HEAP8[src] | 0;
    dest = dest + 1 | 0;
    src = src + 1 | 0;
    num = num - 1 | 0;
  }
  return ret | 0;
}
function _strlen(ptr) {
  ptr = ptr | 0;
  var curr = 0;
  curr = ptr;
  while (HEAP8[curr] | 0) {
    curr = curr + 1 | 0;
  }
  return curr - ptr | 0;
}
function _memset(ptr, value, num) {
  ptr = ptr | 0;
  value = value | 0;
  num = num | 0;
  var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
  stop = ptr + num | 0;
  if ((num | 0) >= 20) {
    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] = 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] = value;
    ptr = ptr + 1 | 0;
  }
}
function _strcpy(pdest, psrc) {
  pdest = pdest | 0;
  psrc = psrc | 0;
  var i = 0;
  do {
    HEAP8[pdest + i | 0] = HEAP8[psrc + i | 0];
    i = i + 1 | 0;
  } while (HEAP8[psrc + (i - 1) | 0] | 0);
  return pdest | 0;
}
function _strcat(pdest, psrc) {
  pdest = pdest | 0;
  psrc = psrc | 0;
  var i = 0, pdestEnd = 0;
  pdestEnd = pdest + (_strlen(pdest) | 0) | 0;
  do {
    HEAP8[pdestEnd + i | 0] = HEAP8[psrc + i | 0];
    i = i + 1 | 0;
  } while (HEAP8[psrc + (i - 1) | 0] | 0);
  return pdest | 0;
}
function _strncpy(pdest, psrc, num) {
  pdest = pdest | 0;
  psrc = psrc | 0;
  num = num | 0;
  var padding = 0, i = 0;
  while ((i | 0) < (num | 0)) {
    HEAP8[pdest + i | 0] = padding ? 0 : HEAP8[psrc + i | 0] | 0;
    padding = padding ? 1 : (HEAP8[psrc + i | 0] | 0) == 0;
    i = i + 1 | 0;
  }
  return pdest | 0;
}
function _tolower(chr) {
  chr = chr | 0;
  if ((chr | 0) < 65) return chr | 0;
  if ((chr | 0) > 90) return chr | 0;
  return chr - 65 + 97 | 0;
}
function _memmove(dest, src, num) {
  dest = dest | 0;
  src = src | 0;
  num = num | 0;
  if ((src | 0) < (dest | 0) & (dest | 0) < (src + num | 0)) {
    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] = HEAP8[src] | 0;
    }
  } else {
    _memcpy(dest, src, num);
  }
}
function _ferror__wrapper(a1) {
  a1 = a1 | 0;
  return _ferror(a1 | 0) | 0;
}
function _fwrite__wrapper(a1, a2, a3, a4) {
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  a4 = a4 | 0;
  return _fwrite(a1 | 0, a2 | 0, a3 | 0, a4 | 0) | 0;
}
function _fgets__wrapper(a1, a2, a3) {
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  return _fgets(a1 | 0, a2 | 0, a3 | 0) | 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 & 1023](a1 | 0, a2 | 0, a3 | 0, a4 | 0) | 0;
}
function dynCall_viiiffi(index, a1, a2, a3, a4, a5, a6) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  a4 = +a4;
  a5 = +a5;
  a6 = a6 | 0;
  FUNCTION_TABLE_viiiffi[index & 1023](a1 | 0, a2 | 0, a3 | 0, +a4, +a5, a6 | 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 & 1023](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0);
}
function dynCall_vi(index, a1) {
  index = index | 0;
  a1 = a1 | 0;
  FUNCTION_TABLE_vi[index & 1023](a1 | 0);
}
function dynCall_vii(index, a1, a2) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  FUNCTION_TABLE_vii[index & 1023](a1 | 0, a2 | 0);
}
function dynCall_ii(index, a1) {
  index = index | 0;
  a1 = a1 | 0;
  return FUNCTION_TABLE_ii[index & 1023](a1 | 0) | 0;
}
function dynCall_iiii(index, a1, a2, a3) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  return FUNCTION_TABLE_iiii[index & 1023](a1 | 0, a2 | 0, a3 | 0) | 0;
}
function dynCall_viii(index, a1, a2, a3) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  FUNCTION_TABLE_viii[index & 1023](a1 | 0, a2 | 0, a3 | 0);
}
function dynCall_v(index) {
  index = index | 0;
  FUNCTION_TABLE_v[index & 1023]();
}
function dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  a4 = a4 | 0;
  a5 = a5 | 0;
  a6 = a6 | 0;
  a7 = a7 | 0;
  a8 = a8 | 0;
  a9 = a9 | 0;
  FUNCTION_TABLE_viiiiiiiii[index & 1023](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0, a6 | 0, a7 | 0, a8 | 0, a9 | 0);
}
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 & 1023](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0, a6 | 0);
}
function dynCall_iii(index, a1, a2) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  return FUNCTION_TABLE_iii[index & 1023](a1 | 0, a2 | 0) | 0;
}
function dynCall_iiiiii(index, a1, a2, a3, a4, a5) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  a4 = a4 | 0;
  a5 = a5 | 0;
  return FUNCTION_TABLE_iiiiii[index & 1023](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0) | 0;
}
function dynCall_viiii(index, a1, a2, a3, a4) {
  index = index | 0;
  a1 = a1 | 0;
  a2 = a2 | 0;
  a3 = a3 | 0;
  a4 = a4 | 0;
  FUNCTION_TABLE_viiii[index & 1023](a1 | 0, a2 | 0, a3 | 0, a4 | 0);
}
function b0(p0, p1, p2, p3) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = p3 | 0;
  abort(0);
  return 0;
}
function b1(p0, p1, p2, p3, p4, p5) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = +p3;
  p4 = +p4;
  p5 = p5 | 0;
  abort(1);
}
function b2(p0, p1, p2, p3, p4) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = p3 | 0;
  p4 = p4 | 0;
  abort(2);
}
function b3(p0) {
  p0 = p0 | 0;
  abort(3);
}
function b4(p0, p1) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  abort(4);
}
function b5(p0) {
  p0 = p0 | 0;
  abort(5);
  return 0;
}
function b6(p0, p1, p2) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  abort(6);
  return 0;
}
function b7(p0, p1, p2) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  abort(7);
}
function b8() {
  abort(8);
}
function b9(p0, p1, p2, p3, p4, p5, p6, p7, p8) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = p3 | 0;
  p4 = p4 | 0;
  p5 = p5 | 0;
  p6 = p6 | 0;
  p7 = p7 | 0;
  p8 = p8 | 0;
  abort(9);
}
function b10(p0, p1, p2, p3, p4, p5) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = p3 | 0;
  p4 = p4 | 0;
  p5 = p5 | 0;
  abort(10);
}
function b11(p0, p1) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  abort(11);
  return 0;
}
function b12(p0, p1, p2, p3, p4) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = p3 | 0;
  p4 = p4 | 0;
  abort(12);
  return 0;
}
function b13(p0, p1, p2, p3) {
  p0 = p0 | 0;
  p1 = p1 | 0;
  p2 = p2 | 0;
  p3 = p3 | 0;
  abort(13);
}
// EMSCRIPTEN_END_FUNCS
  var FUNCTION_TABLE_iiiii = [b0,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_big2_cdataSectionTok
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,_externalEntityContentProcessor,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_cdataSectionProcessor
  ,b0,b0,b0,_initScanProlog,b0,b0,b0,b0,b0,b0
  ,b0,_normal_cdataSectionTok,b0,b0,b0,b0,b0,b0,b0,_normal_prologTok
  ,b0,b0,b0,b0,b0,_prologProcessor,b0,_normal_isPublicId,b0,_big2_nameMatchesAscii
  ,b0,b0,b0,b0,b0,_normal_contentTok,b0,b0,b0,b0
  ,b0,_contentProcessor,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,_normal_attributeValueTok,b0,b0,b0,b0
  ,b0,_little2_attributeValueTok,b0,_prologInitProcessor,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,_cmppair,b0,_gvfwrite
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,_initScanContent,b0,_little2_cdataSectionTok,b0,b0,b0,b0,b0,b0
  ,b0,_epilogProcessor,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,_little2_isPublicId,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,_dtmemory,b0,_big2_entityValueTok
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,_normal_getAtts,b0,_big2_contentTok,b0,b0,b0,b0
  ,b0,_big2_getAtts,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,_little2_getAtts,b0,b0,b0,_fwrite__wrapper,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_big2_isPublicId
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,_little2_entityValueTok,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,_little2_nameMatchesAscii,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,_agcmpid,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,_errorProcessor,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_normal_nameMatchesAscii
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_agcmpin
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_little2_contentTok
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,_little2_prologTok,b0,b0,b0,_big2_attributeValueTok,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,_agcmpout,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,_big2_prologTok,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_normal_entityValueTok
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,_internalEntityProcessor
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0
  ,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0,b0];
  var FUNCTION_TABLE_viiiffi = [b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,_arrow_type_box,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,_arrow_type_crow,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,_arrow_type_dot,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,_arrow_type_diamond
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,_arrow_type_tee,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,_arrow_type_normal,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1
  ,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1];
  var FUNCTION_TABLE_viiiii = [b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,_svg_begin_anchor,b2,_utf8_toUtf8,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,_latin1_toUtf8,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,_ascii_toUtf8,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,_little2_toUtf16
  ,b2,b2,b2,b2,b2,b2,b2,_big2_toUtf8,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,_unknown_toUtf8,b2,_utf8_toUtf16
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,_vml_begin_anchor,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,_latin1_toUtf16
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,_psgen_begin_anchor
  ,b2,b2,b2,b2,b2,_little2_toUtf8,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,_unknown_toUtf16,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,_psgen_library_shape,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,_big2_toUtf16,b2,b2,b2,b2,b2,_map_begin_anchor
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2
  ,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2,b2];
  var FUNCTION_TABLE_vi = [b3,b3,_psgen_end_node,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,_tkgen_begin_job,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,_dot_cleanup,b3,b3
  ,b3,b3,b3,b3,b3,_psgen_end_page,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,_svg_begin_cluster
  ,b3,_psgen_begin_graph,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_point_init,b3,b3,b3,_record_init,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_gvevent_refresh,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,_svg_begin_job,b3,b3,b3,_svg_end_layer,b3,b3
  ,b3,b3,b3,_tkgen_begin_edge,b3,_epsf_free,b3,_vml_end_graph,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_psgen_end_job,b3,_poly_free,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,_ps_freeimage
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,_vml_begin_job,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,_vml_begin_graph,b3,b3
  ,b3,b3,b3,b3,b3,_svg_begin_node,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_svg_begin_edge,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_svg_begin_graph,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,_svg_begin_page,b3,b3,b3,b3,b3,b3
  ,b3,_svg_end_page,b3,b3,b3,b3,b3,_gvevent_delete,b3,_psgen_end_edge
  ,b3,_psgen_begin_page,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,_fig_end_edge,b3,b3,b3,b3,b3,b3
  ,b3,_psgen_begin_node,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,_dot_begin_graph,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_vml_end_anchor,b3,b3,b3,b3,b3,_fig_begin_edge,b3,_fig_begin_page
  ,b3,b3,b3,_xdot_end_cluster,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,_map_begin_page,b3,_psgen_begin_job,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,_tkgen_begin_graph,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,_psgen_begin_edge,b3,b3,b3,b3
  ,b3,_psgen_begin_cluster,b3,b3,b3,_svg_end_graph,b3,b3,b3,_fig_end_graph
  ,b3,b3,b3,_record_free,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,_svg_end_cluster,b3,b3
  ,b3,_tkgen_begin_node,b3,b3,b3,_poly_init,b3,_psgen_end_cluster,b3,b3
  ,b3,b3,b3,_xdot_end_node,b3,b3,b3,_svg_end_node,b3,b3
  ,b3,b3,b3,_svg_end_edge,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,_fig_begin_graph,b3,_free,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,_xdot_end_edge,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,_dot_end_graph,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,_fig_begin_node,b3,b3,b3,_dot_layout
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,_svg_end_anchor,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,_map_end_page
  ,b3,_epsf_init,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,_fig_end_node
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
  ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3];
  var FUNCTION_TABLE_vii = [b4,b4,b4,b4,b4,b4,b4,b4,_vml_comment,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,_point_gencode,b4,b4,b4,_epsf_gencode,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,_tkgen_comment,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,_fig_comment,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,_endElement,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,_poly_gencode,b4,b4
  ,b4,_agerrorf,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,_fig_resolve_color,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,_record_gencode,b4,b4,b4,_svg_comment,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,_vizRenderFromString,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,_gvevent_layout,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,_gvevent_motion,b4,b4
  ,b4,_psgen_comment,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  ,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4];
  var FUNCTION_TABLE_ii = [b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,_up_cb
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,_zoom_in_cb
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,_ferror__wrapper,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,_zoom_out_cb,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,_down_cb
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,_gvferror,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,_malloc,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,_toggle_fit_cb,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,_quit_cb,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,_spline_merge,b5,b5,b5,_swap_ends_p,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,_left_cb,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,_right_cb,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
  ,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5];
  var FUNCTION_TABLE_iiii = [b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,_printedge,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,_dtlist,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,_big2_predefinedEntityName,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,_agraphattr
  ,b6,_little2_sameName,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,_copydictf,b6,b6,b6,b6,b6,b6,b6,_agnodeattr
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,_normal_predefinedEntityName,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,_big2_sameName,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,_little2_predefinedEntityName,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,_fgets__wrapper,b6,_normal_sameName
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,_dttree,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,_dtvsearch
  ,b6,b6,b6,_agedgeattr,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,_memgets,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
  ,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6];
  var FUNCTION_TABLE_viii = [b7,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,_free_fitem,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,_svg_textpara,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,_free_item,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,_vml_ellipse,b7,_vml_polyline,b7,b7,b7,_gvevent_button_press,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,_psgen_polyline,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_tkgen_polyline
  ,b7,b7,b7,_characterData,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_xdot_polyline
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_psgen_textpara
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,_fig_textpara,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_free_string_entry
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,_freePair,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_free_ritem
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_xdot_ellipse
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,_tkgen_textpara,b7,b7,b7,b7,b7,_gvevent_render
  ,b7,b7,b7,b7,b7,_ps_image_free,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,_usershape_close,b7,b7,b7,_free_citem
  ,b7,b7,b7,_svg_ellipse,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,_free_fpara,b7,b7,b7,b7,b7,_fig_ellipse
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_vml_textpara
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,_gvevent_button_release,b7,b7,b7,b7,b7,b7
  ,b7,_fig_polyline,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_gvevent_modify
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,_tkgen_ellipse,b7,b7,b7,b7,b7,_xdot_textpara
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,_startElement,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,_gvevent_read,b7,_psgen_ellipse,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,_svg_polyline
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7
  ,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7,b7];
  var FUNCTION_TABLE_v = [b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
  ,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8];
  var FUNCTION_TABLE_viiiiiiiii = [b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9,b9];
  var FUNCTION_TABLE_viiiiii = [b10,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,_fig_bezier,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,_vml_bezier
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,_psgen_bezier,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,_svg_bezier
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,_xdot_bezier,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,_tkgen_bezier,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10
  ,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10,b10];
  var FUNCTION_TABLE_iii = [b11,b11,b11,b11,_icmp,b11,_titlefn,b11,b11,b11,b11
  ,b11,b11,b11,_compFunction2,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,_cell_halignfn
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_normal_charRefNumber,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_edgelblcmpfn,b11,_halignfn,b11,_epsf_inside
  ,b11,b11,b11,_utf8_isName2,b11,b11,b11,b11,b11,_srcfn
  ,b11,b11,b11,b11,b11,_idfn,b11,_normal_nameLength,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,_cellpaddingfn,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_ordercmpf,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,_cellspacingfn
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,_unknown_isNmstrt,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_comp_entities,b11,_utf8_isNmstrt3,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,_cellborderfn,b11,b11,b11,b11,b11,_edgeidcmpf
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,_little2_nameLength,b11,_valignfn,b11,b11,b11,_alignfn
  ,b11,_scalefn,b11,b11,b11,_utf8_isInvalid2,b11,_utf8_isInvalid3,b11,b11
  ,b11,b11,b11,b11,b11,_utf8_isInvalid4,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_targetfn,b11,_unknown_isName,b11,b11
  ,b11,b11,b11,_gvrender_comparestr,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,_fixedsizefn,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,_bgcolorfn,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_widthfn,b11,b11,b11,b11
  ,b11,b11,b11,_utf8_isNmstrt2,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_unknown_isInvalid,b11,b11,b11,b11
  ,b11,_borderfn,b11,b11,b11,b11,b11,_little2_charRefNumber,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_nodeposcmpf,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,_stylefn,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,_hreffn,b11,b11
  ,b11,_colspanfn,b11,_poly_inside,b11,_isNever,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,_realloc,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,_utf8_isName3,b11,_balignfn,b11,b11
  ,b11,b11,b11,_normal_skipS,b11,_rowspanfn,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,_little2_skipS,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,_fontcmpf,b11,b11
  ,b11,b11,b11,_colorcmpf,b11,b11,b11,b11,b11,b11
  ,b11,_ptsizefn,b11,b11,b11,_edgecmp,b11,b11,b11,b11
  ,b11,_record_inside,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,_compFunction,b11,b11,b11,b11,b11,b11,b11,_inside
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,_big2_skipS,b11,b11,b11,_fontcolorfn,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,_point_inside,b11,b11,b11,_big2_nameLength,b11,b11,b11,b11
  ,b11,_facefn,b11,b11,b11,b11,b11,_pencolorfn,b11,b11
  ,b11,_portfn,b11,_big2_charRefNumber,b11,b11,b11,b11,b11,b11
  ,b11,_heightfn,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11
  ,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11,b11];
  var FUNCTION_TABLE_iiiiii = [b12,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,_prolog2,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_prolog1,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,_element0,b12,b12,b12,b12
  ,b12,b12,b12,_notation2,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,_doctype0
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_error,b12,b12,b12,_poly_path,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,_internalSubset,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,_attlist6,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,_declClose,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,_doctype2,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,_element4,b12,_element5
  ,b12,_element2,b12,b12,b12,b12,b12,_element1,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_element6,b12,b12,b12,b12,b12,b12
  ,b12,_element7,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_entity8,b12,_entity9,b12,_attlist2,b12,b12
  ,b12,b12,b12,_entity3,b12,_entity0,b12,_entity1,b12,_entity6
  ,b12,b12,b12,_entity4,b12,_element3,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,_notation0,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,_attlist8,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_attlist5,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,_attlist7,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_prolog0,b12,b12,b12,b12,b12,_attlist0
  ,b12,_entity2,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,_attlist9,b12,b12,b12,b12,b12,b12
  ,b12,_attlist4,b12,b12,b12,b12,b12,_attlist1,b12,b12
  ,b12,_attlist3,b12,b12,b12,b12,b12,b12,b12,_entity5
  ,b12,b12,b12,b12,b12,b12,b12,_doctype4,b12,_doctype5
  ,b12,b12,b12,b12,b12,_doctype1,b12,b12,b12,_doctype3
  ,b12,_entity10,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,_notation1,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,_notation3,b12,b12,b12,b12
  ,b12,b12,b12,_record_path,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,_notation4,b12,_entity7,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12
  ,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12,b12];
  var FUNCTION_TABLE_viiii = [b13,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,_little2_updatePosition,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,_core_loadimage_fig
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,_psgen_polygon,b13,b13
  ,b13,b13,b13,_core_loadimage_vml,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,_core_loadimage_xdot,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,_normal_updatePosition
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,_core_loadimage_vrml,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,_vml_polygon
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,_core_loadimage_ps
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,_core_loadimage_pslib,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,_initUpdatePosition,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,_svg_begin_layer,b13,_core_loadimage_null,b13,b13,b13,_poly_port
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,_xdot_polygon,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,_core_loadimage_svg,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,_record_port,b13,_tkgen_polygon
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,_svg_polygon,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,_big2_updatePosition,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,_psgen_begin_layer,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,_fig_polygon,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13
  ,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13,b13];
  return { _memcmp: _memcmp, _strlen: _strlen, _strcat: _strcat, _free: _free, _vizRenderFromString: _vizRenderFromString, _strncpy: _strncpy, _memmove: _memmove, _tolower: _tolower, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _realloc: _realloc, _strcpy: _strcpy, _calloc: _calloc, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9, dynCall_iiiii: dynCall_iiiii, dynCall_viiiffi: dynCall_viiiffi, dynCall_viiiii: dynCall_viiiii, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_iiii: dynCall_iiii, dynCall_viii: dynCall_viii, dynCall_v: dynCall_v, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_iii: dynCall_iii, dynCall_iiiiii: dynCall_iiiiii, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
({ Math: Math, Int8Array: Int8Array, Int16Array: Int16Array, Int32Array: Int32Array, Uint8Array: Uint8Array, Uint16Array: Uint16Array, Uint32Array: Uint32Array, Float32Array: Float32Array, Float64Array: Float64Array }, { abort: abort, assert: assert, asmPrintInt: asmPrintInt, asmPrintFloat: asmPrintFloat, copyTempDouble: copyTempDouble, copyTempFloat: copyTempFloat, min: Math_min, invoke_iiiii: invoke_iiiii, invoke_viiiffi: invoke_viiiffi, invoke_viiiii: invoke_viiiii, invoke_vi: invoke_vi, invoke_vii: invoke_vii, invoke_ii: invoke_ii, invoke_iiii: invoke_iiii, invoke_viii: invoke_viii, invoke_v: invoke_v, invoke_viiiiiiiii: invoke_viiiiiiiii, invoke_viiiiii: invoke_viiiiii, invoke_iii: invoke_iii, invoke_iiiiii: invoke_iiiiii, invoke_viiii: invoke_viiii, _lseek: _lseek, __scanString: __scanString, _fclose: _fclose, __isFloat: __isFloat, _fflush: _fflush, _strtol: _strtol, _fputc: _fputc, _strtok: _strtok, _fwrite: _fwrite, _tmpnam: _tmpnam, _isspace: _isspace, _read: _read, _ceil: _ceil, _fileno: _fileno, _strstr: _strstr, _fsync: _fsync, _strcmp: _strcmp, _strncmp: _strncmp, _tmpfile: _tmpfile, _snprintf: _snprintf, _fgetc: _fgetc, _hypot: _hypot, _fgets: _fgets, _close: _close, _strchr: _strchr, ___setErrNo: ___setErrNo, _access: _access, _ftell: _ftell, _exit: _exit, _sprintf: _sprintf, _strrchr: _strrchr, _ferror: _ferror, _cos: _cos, _putenv: _putenv, _times: _times, _bsearch: _bsearch, _islower: _islower, __exit: __exit, _isupper: _isupper, _rand: _rand, _setlocale: _setlocale, _bcopy: _bcopy, _toupper: _toupper, _pread: _pread, _fopen: _fopen, _open: _open, _isalnum: _isalnum, _qsort: _qsort, _isalpha: _isalpha, _strdup: _strdup, _srand: _srand, __formatString: __formatString, _getenv: _getenv, _atoi: _atoi, _vfprintf: _vfprintf, _llvm_pow_f64: _llvm_pow_f64, _sbrk: _sbrk, ___errno_location: ___errno_location, _strerror: _strerror, _fstat: _fstat, __parseInt: __parseInt, _freeXDot: _freeXDot, _vsprintf: _vsprintf, _vsnprintf: _vsnprintf, _sscanf: _sscanf, _sysconf: _sysconf, _fread: _fread, _strtok_r: _strtok_r, _abort: _abort, _fprintf: _fprintf, ___buildEnvironment: ___buildEnvironment, _feof: _feof, _statXDot: _statXDot, _ispunct: _ispunct, _fabs: _fabs, __reallyNegative: __reallyNegative, _fseek: _fseek, _sqrt: _sqrt, _write: _write, _sin: _sin, _stat: _stat, _parseXDotF: _parseXDotF, _llvm_va_end: _llvm_va_end, ___assert_func: ___assert_func, _pwrite: _pwrite, _strerror_r: _strerror_r, _iscntrl: _iscntrl, _atan2: _atan2, _time: _time, STACKTOP: STACKTOP, STACK_MAX: STACK_MAX, tempDoublePtr: tempDoublePtr, ABORT: ABORT, NaN: NaN, Infinity: Infinity, _stdout: _stdout, _stderr: _stderr }, buffer);
var _memcmp = Module["_memcmp"] = asm._memcmp;
var _strlen = Module["_strlen"] = asm._strlen;
var _strcat = Module["_strcat"] = asm._strcat;
var _free = Module["_free"] = asm._free;
var _vizRenderFromString = Module["_vizRenderFromString"] = asm._vizRenderFromString;
var _strncpy = Module["_strncpy"] = asm._strncpy;
var _memmove = Module["_memmove"] = asm._memmove;
var _tolower = Module["_tolower"] = asm._tolower;
var _memset = Module["_memset"] = asm._memset;
var _malloc = Module["_malloc"] = asm._malloc;
var _memcpy = Module["_memcpy"] = asm._memcpy;
var _realloc = Module["_realloc"] = asm._realloc;
var _strcpy = Module["_strcpy"] = asm._strcpy;
var _calloc = Module["_calloc"] = asm._calloc;
var dynCall_iiiii = Module["dynCall_iiiii"] = asm.dynCall_iiiii;
var dynCall_viiiffi = Module["dynCall_viiiffi"] = asm.dynCall_viiiffi;
var dynCall_viiiii = Module["dynCall_viiiii"] = asm.dynCall_viiiii;
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_iiii = Module["dynCall_iiii"] = asm.dynCall_iiii;
var dynCall_viii = Module["dynCall_viii"] = asm.dynCall_viii;
var dynCall_v = Module["dynCall_v"] = asm.dynCall_v;
var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = asm.dynCall_viiiiiiiii;
var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm.dynCall_viiiiii;
var dynCall_iii = Module["dynCall_iii"] = asm.dynCall_iii;
var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm.dynCall_iiiiii;
var dynCall_viiii = Module["dynCall_viiii"] = asm.dynCall_viiii;
Runtime.stackAlloc = function(size) { return asm.stackAlloc(size) };
Runtime.stackSave = function() { return asm.stackSave() };
Runtime.stackRestore = function(top) { asm.stackRestore(top) };
// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included
var i64Math = null;
// === Auto-generated postamble setup entry stuff ===
Module.callMain = function callMain(args) {
  assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
  assert(!Module['preRun'] || Module['preRun'].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("/bin/this.program"), '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);
  var ret;
  var initialStackTop = STACKTOP;
  try {
    ret = Module['_main'](argc, argv, 0);
  }
  catch(e) {
    if (e.name == 'ExitStatus') {
      return e.status;
    } else if (e == 'SimulateInfiniteLoop') {
      Module['noExitRuntime'] = true;
    } else {
      throw e;
    }
  } finally {
    STACKTOP = initialStackTop;
  }
  return ret;
}
function run(args) {
  args = args || Module['arguments'];
  if (runDependencies > 0) {
    Module.printErr('run() called, but dependencies remain, so not running');
    return 0;
  }
  if (Module['preRun']) {
    if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
    var toRun = Module['preRun'];
    Module['preRun'] = [];
    for (var i = toRun.length-1; i >= 0; i--) {
      toRun[i]();
    }
    if (runDependencies > 0) {
      // a preRun added a dependency, run will be called later
      return 0;
    }
  }
  function doRun() {
    ensureInitRuntime();
    preMain();
    var ret = 0;
    calledRun = true;
    if (Module['_main'] && shouldRunNow) {
      ret = Module.callMain(args);
      if (!Module['noExitRuntime']) {
        exitRuntime();
      }
    }
    if (Module['postRun']) {
      if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
      while (Module['postRun'].length > 0) {
        Module['postRun'].pop()();
      }
    }
    return ret;
  }
  if (Module['setStatus']) {
    Module['setStatus']('Running...');
    setTimeout(function() {
      setTimeout(function() {
        Module['setStatus']('');
      }, 1);
      doRun();
    }, 1);
    return 0;
  } else {
    return doRun();
  }
}
Module['run'] = Module.run = run;
// {{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}}
  Module["ccall"]("vizRenderFromString", "number", ["string", "string"], [src, format]);
  return Module["return"];
}
